From b360782e3b59bb94fb295a94b8914c0dceb3cfc6 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Wed, 26 Jun 2019 22:55:45 -0400 Subject: [PATCH] update slots more conservatively --- src/compiler/compile/render_dom/wrappers/Slot.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/compiler/compile/render_dom/wrappers/Slot.ts b/src/compiler/compile/render_dom/wrappers/Slot.ts index 83d7efa5e9..4dd23277fb 100644 --- a/src/compiler/compile/render_dom/wrappers/Slot.ts +++ b/src/compiler/compile/render_dom/wrappers/Slot.ts @@ -160,8 +160,14 @@ export default class SlotWrapper extends Wrapper { `@transition_out(${slot}, #local);` ); - let update_conditions = [...this.dependencies].map(name => `changed.${name}`).join(' || '); - if (this.dependencies.size > 1) update_conditions = `(${update_conditions})`; + const dynamic_dependencies = Array.from(this.dependencies).filter(name => { + if (name === '$$scope') return true; + const variable = renderer.component.var_lookup.get(name); + return is_dynamic(variable); + }); + + let update_conditions = dynamic_dependencies.map(name => `changed.${name}`).join(' || '); + if (dynamic_dependencies.length > 1) update_conditions = `(${update_conditions})`; block.builders.update.add_block(deindent` if (${slot} && ${slot}.p && ${update_conditions}) {