diff --git a/src/compile/render-dom/Renderer.ts b/src/compile/render-dom/Renderer.ts index f899d16fcb..1d766c6345 100644 --- a/src/compile/render-dom/Renderer.ts +++ b/src/compile/render-dom/Renderer.ts @@ -11,7 +11,6 @@ export default class Renderer { blocks: (Block | string)[] = []; readonly: Set = new Set(); - slots: Map = new Map(); meta_bindings: CodeBuilder = new CodeBuilder(); // initial values for e.g. window.innerWidth, if there's a meta tag binding_groups: string[] = []; diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index 8ab5d25668..a6ef0ac69c 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -74,14 +74,14 @@ export default function dom( const props = component.vars.filter(variable => !variable.module && variable.export_name); const writable_props = props.filter(variable => variable.writable); - const set = (uses_props || writable_props.length > 0 || renderer.slots.size > 0) + const set = (uses_props || writable_props.length > 0 || component.slots.size > 0) ? deindent` ${$$props} => { ${uses_props && component.invalidate('$$props', `$$props = @assign(@assign({}, $$props), $$new_props)`)} ${writable_props.map(prop => `if ('${prop.export_name}' in $$props) ${component.invalidate(prop.name, `${prop.name} = $$props.${prop.export_name}`)};` )} - ${renderer.slots.size > 0 && + ${component.slots.size > 0 && `if ('$$scope' in ${$$props}) ${component.invalidate('$$scope', `$$scope = ${$$props}.$$scope`)};`} } ` @@ -285,7 +285,7 @@ export default function dom( } const args = ['$$self']; - if (props.length > 0 || component.has_reactive_assignments || renderer.slots.size > 0) { + if (props.length > 0 || component.has_reactive_assignments || component.slots.size > 0) { args.push('$$props', '$$invalidate'); } @@ -315,7 +315,7 @@ export default function dom( const reactive_stores = component.vars.filter(variable => variable.name[0] === '$' && variable.name[1] !== '$'); - if (renderer.slots.size > 0) { + if (component.slots.size > 0) { filtered_declarations.push('$$slots', '$$scope'); } @@ -415,7 +415,7 @@ export default function dom( ${component.javascript} - ${renderer.slots.size && `let { $$slots = {}, $$scope } = $$props;`} + ${component.slots.size && `let { $$slots = {}, $$scope } = $$props;`} ${renderer.binding_groups.length > 0 && `const $$binding_groups = [${renderer.binding_groups.map(_ => `[]`).join(', ')}];`} diff --git a/src/compile/render-dom/wrappers/Slot.ts b/src/compile/render-dom/wrappers/Slot.ts index e48c74d7f5..ec1b7d4b59 100644 --- a/src/compile/render-dom/wrappers/Slot.ts +++ b/src/compile/render-dom/wrappers/Slot.ts @@ -47,8 +47,6 @@ export default class SlotWrapper extends Wrapper { // we have to do this, just in case block.add_intro(); block.add_outro(); - - renderer.slots.set(this.node.slot_name, { slot: this, block }); } render(