more consistency

pull/12644/head
Rich Harris 2 years ago
parent 1636d9db03
commit bb3f04f487

@ -1178,20 +1178,19 @@ const common_visitors = {
context.next();
node.metadata.expression.has_state = get_attribute_chunks(node.value).some((chunk) => {
if (chunk.type !== 'ExpressionTag') {
return false;
}
for (const chunk of get_attribute_chunks(node.value)) {
if (chunk.type !== 'ExpressionTag') continue;
if (
chunk.expression.type === 'FunctionExpression' ||
chunk.expression.type === 'ArrowFunctionExpression'
) {
return false;
continue;
}
return chunk.metadata.expression.has_state;
});
node.metadata.expression.has_state ||= chunk.metadata.expression.has_state;
node.metadata.expression.has_call ||= chunk.metadata.expression.has_call;
}
if (is_event_attribute(node)) {
const parent = context.path.at(-1);
@ -1234,9 +1233,13 @@ const common_visitors = {
}
} else {
context.next();
node.metadata.expression.has_state = get_attribute_chunks(node.value).some(
(node) => node.type === 'ExpressionTag' && node.metadata.expression.has_state
);
for (const chunk of get_attribute_chunks(node.value)) {
if (chunk.type !== 'ExpressionTag') continue;
node.metadata.expression.has_state ||= chunk.metadata.expression.has_state;
node.metadata.expression.has_call ||= chunk.metadata.expression.has_call;
}
}
},
ExpressionTag(node, context) {

@ -103,13 +103,11 @@ function serialize_style_directives(style_directives, element_id, context, is_at
)
);
const has_call = get_attribute_chunks(directive.value).some(
(v) => v.type === 'ExpressionTag' && v.metadata.expression.has_call
);
const { has_state, has_call } = directive.metadata.expression;
if (!is_attributes_reactive && has_call) {
state.init.push(serialize_update(update));
} else if (is_attributes_reactive || directive.metadata.expression.has_state || has_call) {
} else if (is_attributes_reactive || has_state || has_call) {
state.update.push(update);
} else {
state.init.push(update);

Loading…
Cancel
Save