Skip to content

Commit ad34112

Browse files
committed
simplify
1 parent b3e25e4 commit ad34112

File tree

1 file changed

+9
-9
lines changed
  • packages/svelte/src/compiler/phases/3-transform/client/visitors/shared

1 file changed

+9
-9
lines changed

packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export function build_set_attributes(
2727
is_custom_element
2828
) {
2929
let needs_isolation = false;
30-
let is_reactive = false;
30+
let has_state = false;
3131

3232
/** @type {ObjectExpression['properties']} */
3333
const values = [];
@@ -47,30 +47,30 @@ export function build_set_attributes(
4747
} else {
4848
values.push(b.init(attribute.name, value));
4949
}
50+
51+
has_state ||= attribute.metadata.expression.has_state;
5052
} else {
5153
values.push(b.spread(/** @type {Expression} */ (context.visit(attribute))));
52-
}
5354

54-
is_reactive ||=
55-
attribute.metadata.expression.has_state ||
5655
// objects could contain reactive getters -> play it safe and always assume spread attributes are reactive
57-
attribute.type === 'SpreadAttribute';
58-
needs_isolation ||=
59-
attribute.type === 'SpreadAttribute' && attribute.metadata.expression.has_call;
56+
has_state = true;
57+
58+
needs_isolation ||= attribute.metadata.expression.has_call;
59+
}
6060
}
6161

6262
const call = b.call(
6363
'$.set_attributes',
6464
element_id,
65-
is_reactive ? attributes_id : b.literal(null),
65+
has_state ? attributes_id : b.literal(null),
6666
b.object(values),
6767
context.state.analysis.css.hash !== '' && b.literal(context.state.analysis.css.hash),
6868
preserve_attribute_case,
6969
is_custom_element,
7070
is_ignored(element, 'hydration_attribute_changed') && b.true
7171
);
7272

73-
if (is_reactive) {
73+
if (has_state) {
7474
context.state.init.push(b.let(attributes_id));
7575

7676
const update = b.stmt(b.assignment('=', attributes_id, call));

0 commit comments

Comments
 (0)