each blocks

pull/12780/head
Rich Harris 2 years ago
parent 7a846acb81
commit c7990ef422

@ -225,12 +225,6 @@ export function build_setter(node, context, fallback, prefix, options) {
const binding = left && state.scope.get(left.name);
if (!binding) return fallback();
if (Object.hasOwn(state.setters, left.name)) {
const setter = state.setters[left.name];
// @ts-expect-error
return setter(node, context);
}
const transformers = Object.hasOwn(context.state.transformers, left.name)
? context.state.transformers[left.name]
: null;
@ -267,6 +261,12 @@ export function build_setter(node, context, fallback, prefix, options) {
return transformers.assign(left, value);
}
if (Object.hasOwn(state.setters, left.name)) {
const setter = state.setters[left.name];
// @ts-expect-error
return setter(node, context);
}
/**
* @param {any} serialized
* @returns

@ -196,9 +196,35 @@ export function EachBlock(node, context) {
/** @type {Statement[]} */
const declarations = [];
const invalidate = b.call(
'$.invalidate_inner_signals',
b.thunk(b.sequence(indirect_dependencies))
);
const invalidate_store = store_to_invalidate
? b.call('$.invalidate_store', b.id('$$stores'), b.literal(store_to_invalidate))
: undefined;
/** @type {Expression[]} */
const sequence = [];
if (!context.state.analysis.runes) sequence.push(invalidate);
if (invalidate_store) sequence.push(invalidate_store);
if (node.context.type === 'Identifier') {
child_state.transformers[item.name] = {
read: getter
read: getter,
assign: (node, value) => {
const left = b.member(
each_node_meta.array_name ? b.call(each_node_meta.array_name) : collection,
index,
true
);
return b.sequence([b.assignment('=', left, value), ...sequence]);
},
assign_property: (node, mutation) => {
return b.sequence([mutation, ...sequence]);
}
};
child_state.setters[node.context.name] = create_mutation(

Loading…
Cancel
Save