From 7219b9ea8c6546cfc3110b67df77f9fbf124176d Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 25 Mar 2024 14:13:21 -0400 Subject: [PATCH] simplify --- .../3-transform/client/visitors/template.js | 57 ++++++------------- .../_expected/client/main.svelte.js | 4 +- 2 files changed, 19 insertions(+), 42 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js index 7fe770d706..a4650d92fe 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js @@ -477,66 +477,43 @@ function serialize_element_attribute_update_assignment(element, node_id, attribu const assign = (grouped, singular) => { if (name === 'class') { if (singular) { - return { - singular: b.stmt( - b.call( - is_svg ? '$.svg_class_name_effect' : '$.class_name_effect', - node_id, - b.thunk(singular) - ) - ), - grouped: b.stmt(b.call(is_svg ? '$.svg_class_name' : '$.class_name', node_id, singular)) - }; + return b.stmt(b.call(is_svg ? '$.svg_class_name' : '$.class_name', node_id, singular)); } - return { - grouped: b.stmt(b.call(is_svg ? '$.svg_class_name' : '$.class_name', node_id, value)) - }; + return b.stmt(b.call(is_svg ? '$.svg_class_name' : '$.class_name', node_id, value)); } else if (!DOMProperties.includes(name)) { if (singular) { - return { - singular: b.stmt( - b.call( - name.startsWith('xlink') ? '$.xlink_attr_effect' : '$.attr_effect', - node_id, - b.literal(name), - b.thunk(singular) - ) - ), - grouped: b.stmt( - b.call( - name.startsWith('xlink') ? '$.xlink_attr' : '$.attr', - node_id, - b.literal(name), - grouped - ) - ) - }; - } - return { - grouped: b.stmt( + return b.stmt( b.call( name.startsWith('xlink') ? '$.xlink_attr' : '$.attr', node_id, b.literal(name), grouped ) + ); + } + return b.stmt( + b.call( + name.startsWith('xlink') ? '$.xlink_attr' : '$.attr', + node_id, + b.literal(name), + grouped ) - }; + ); } else { - return { grouped: b.stmt(b.assignment('=', b.member(node_id, b.id(name)), grouped)) }; + return b.stmt(b.assignment('=', b.member(node_id, b.id(name)), grouped)); } }; if (attribute.metadata.dynamic) { - const { grouped, singular } = assign(grouped_value, value); - if (contains_call_expression && singular) { - state.init.push(singular); + const grouped = assign(grouped_value, value); + if (contains_call_expression) { + state.init.push(serialize_update(grouped)); } else { state.update.push(grouped); } return true; } else { - state.init.push(assign(grouped_value).grouped); + state.init.push(assign(grouped_value)); return false; } } diff --git a/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js b/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js index 762abaceb6..7a97bdb0b1 100644 --- a/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js +++ b/packages/svelte/tests/snapshot/samples/dynamic-attributes-casing/_expected/client/main.svelte.js @@ -18,11 +18,11 @@ export default function Main($$anchor, $$props) { var custom_element_fooBar; var div_1 = $.sibling($.sibling(custom_element, true)); - $.attr_effect(div_1, "foobar", y); + $.render_effect(() => $.attr(div_1, "foobar", y())); var svg_1 = $.sibling($.sibling(div_1, true)); - $.attr_effect(svg_1, "viewBox", y); + $.render_effect(() => $.attr(svg_1, "viewBox", y())); var custom_element_1 = $.sibling($.sibling(svg_1, true));