Skip to content

Commit 93d3381

Browse files
committed
small tweaks
1 parent 2dd2821 commit 93d3381

File tree

3 files changed

+11
-21
lines changed
  • packages/svelte

3 files changed

+11
-21
lines changed

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

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,26 @@ export function build_style_directives(
2525
const state = context.state;
2626

2727
for (const directive of style_directives) {
28+
const { has_state, has_call } = directive.metadata.expression;
29+
2830
let value =
2931
directive.value === true
3032
? build_getter({ name: directive.name, type: 'Identifier' }, context.state)
3133
: build_attribute_value(directive.value, context).value;
32-
const { has_state, has_call } = directive.metadata.expression;
33-
34-
let final_value = value;
3534

3635
if (has_call) {
3736
const id = b.id(state.scope.generate('style_directive'));
3837

3938
state.init.push(b.const(id, create_derived(state, b.thunk(value))));
40-
final_value = b.call('$.get', id);
39+
value = b.call('$.get', id);
4140
}
4241

4342
const update = b.stmt(
4443
b.call(
4544
'$.set_style',
4645
element_id,
4746
b.literal(directive.name),
48-
final_value,
47+
value,
4948
/** @type {Expression} */ (directive.modifiers.includes('important') ? b.true : undefined),
5049
force_check ? b.true : undefined
5150
)
@@ -77,21 +76,17 @@ export function build_class_directives(
7776
) {
7877
const state = context.state;
7978
for (const directive of class_directives) {
80-
const value = /** @type {Expression} */ (context.visit(directive.expression));
8179
const { has_state, has_call } = directive.metadata.expression;
82-
83-
let final_value = value;
80+
let value = /** @type {Expression} */ (context.visit(directive.expression));
8481

8582
if (has_call) {
8683
const id = b.id(state.scope.generate('class_directive'));
8784

8885
state.init.push(b.const(id, create_derived(state, b.thunk(value))));
89-
final_value = b.call('$.get', id);
86+
value = b.call('$.get', id);
9087
}
9188

92-
const update = b.stmt(
93-
b.call('$.toggle_class', element_id, b.literal(directive.name), final_value)
94-
);
89+
const update = b.stmt(b.call('$.toggle_class', element_id, b.literal(directive.name), value));
9590

9691
if (!is_attributes_reactive && has_call) {
9792
state.init.push(build_update(update));
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import { flushSync } from 'svelte';
2-
import { ok, test } from '../../test';
2+
import { test } from '../../test';
33

44
export default test({
55
test({ target, logs, assert }) {
66
const [div, div2] = target.querySelectorAll('div');
7-
87
const button = target.querySelector('button');
9-
ok(button);
108

119
assert.deepEqual(logs, ['called', 'called']);
1210

@@ -15,9 +13,7 @@ export default test({
1513
assert.equal(div.classList.contains('dark'), false);
1614
assert.equal(div2.style.color, 'red');
1715

18-
flushSync(() => {
19-
button.click();
20-
});
16+
flushSync(() => button?.click());
2117
assert.deepEqual(logs, ['called', 'called']);
2218
}
2319
});

packages/svelte/tests/runtime-runes/samples/dynamic-attribute-and-attribute-directive/main.svelte

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<script>
2-
32
let value = $state(0);
4-
3+
54
function dark(){
65
console.log('called')
76
return false;
@@ -23,4 +22,4 @@
2322

2423
<div class:dark={dark()} class={get_class()}></div>
2524
<div style:color={color()} style={get_style()}></div>
26-
<button onclick={()=> value++}>{value}</button>
25+
<button onclick={()=> value++}>{value}</button>

0 commit comments

Comments
 (0)