pull/4514/head
Conduitry 6 years ago
parent 4782ff9246
commit a699323b20

@ -15,7 +15,7 @@ import create_debugging_comment from './shared/create_debugging_comment';
export default class SlotWrapper extends Wrapper {
node: Slot;
fragment: FragmentWrapper;
fallback: Block | null;
fallback: Block | null = null;
var: Identifier = { type: 'Identifier', name: 'slot' };
dependencies: Set<string> = new Set(['$$scope']);
@ -32,7 +32,6 @@ export default class SlotWrapper extends Wrapper {
this.cannot_use_innerhtml();
this.not_static_content();
this.fallback = null;
if (this.node.children.length) {
this.fallback = block.child({
comment: create_debugging_comment(this.node.children[0], this.renderer.component),
@ -153,19 +152,18 @@ export default class SlotWrapper extends Wrapper {
b`@transition_out(${slot_or_fallback}, #local);`
);
const dynamic_dependencies = Array.from(this.dependencies).filter(name => {
const is_dependency_dynamic = name => {
if (name === '$$scope') return true;
if (this.node.scope.is_let(name)) return true;
const variable = renderer.component.var_lookup.get(name);
return is_dynamic(variable);
});
};
const fallback_dynamic_dependencies = this.fallback ? Array.from(this.fallback.dependencies).filter(name => {
if (name === '$$scope') return true;
if (this.node.scope.is_let(name)) return true;
const variable = renderer.component.var_lookup.get(name);
return is_dynamic(variable);
}) : [];
const dynamic_dependencies = Array.from(this.dependencies).filter(is_dependency_dynamic);
const fallback_dynamic_dependencies = this.fallback
? Array.from(this.fallback.dependencies).filter(is_dependency_dynamic)
: [];
const slot_update = b`
if (${slot}.p && ${renderer.dirty(dynamic_dependencies)}) {

@ -1,6 +1,6 @@
<script>
import {model} from "./store.svelte"
export let value = '';
import { model } from "./store.svelte";
export let value = '';
</script>
<input bind:value={$model} />

@ -1,7 +1,7 @@
<script>
import Inner from "./Inner.svelte"
export let defaultValue = '';
export let slotProps = '';
import Inner from "./Inner.svelte";
export let defaultValue = '';
export let slotProps = '';
</script>
<slot {slotProps}><Inner value={defaultValue} /></slot>

@ -1,16 +1,16 @@
<script context="module">
let value = 'Blub';
let count = 0;
let subscribers = new Set();
const subscribers = new Set();
export const model = {
subscribe(fn) {
subscribers.add(fn);
count ++;
fn(value);
return () => {
count --;
count--;
subscribers.delete(fn);
}
};
},
set(v) {
value = v;
@ -19,5 +19,5 @@
getCount() {
return count;
}
}
};
</script>
Loading…
Cancel
Save