Skip to content

Commit 7e0c70d

Browse files
committed
better indentation for named slots
1 parent 487f450 commit 7e0c70d

File tree

5 files changed

+100
-34
lines changed

5 files changed

+100
-34
lines changed

packages/svelte/src/compiler/migrate/index.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,8 +1043,17 @@ function migrate_slot_usage(node, path, state) {
10431043
}
10441044
} else {
10451045
// Named slot or `svelte:fragment`: wrap element itself in a snippet
1046-
state.str.prependRight(node.start, `{#snippet ${snippet_name}(${props})}`);
1047-
state.str.appendLeft(node.end, `{/snippet}`);
1046+
state.str.prependLeft(
1047+
node.start,
1048+
`{#snippet ${snippet_name}(${props})}\n${state.indent.repeat(path.length - 2)}`
1049+
);
1050+
state.str.indent(state.indent, {
1051+
exclude: [
1052+
[0, node.start],
1053+
[node.end, state.str.original.length]
1054+
]
1055+
});
1056+
state.str.appendLeft(node.end, `\n${state.indent.repeat(path.length - 2)}{/snippet}`);
10481057
}
10491058
}
10501059

packages/svelte/tests/migrate/samples/slot-usages/_config.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/svelte/tests/migrate/samples/slot-usages/input.svelte

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@
2222
<div slot="named">x</div>
2323
</Component>
2424

25+
<Component>
26+
<div slot="named">
27+
<p>multi</p>
28+
<p>line</p>
29+
</div>
30+
</Component>
31+
2532
<Component>
2633
<svelte:element this={'div'} slot="named">x</svelte:element>
2734
</Component>

packages/svelte/tests/migrate/samples/slot-usages/output.svelte

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,61 +25,100 @@
2525
</Component>
2626

2727
<Component>
28-
{#snippet named()}<div >x</div>{/snippet}
28+
{#snippet named()}
29+
<div >x</div>
30+
{/snippet}
2931
</Component>
3032

3133
<Component>
32-
{#snippet named()}<svelte:element this={'div'} >x</svelte:element>{/snippet}
34+
{#snippet named()}
35+
<div >
36+
<p>multi</p>
37+
<p>line</p>
38+
</div>
39+
{/snippet}
3340
</Component>
3441

3542
<Component>
36-
{#snippet foo({ foo })}<div >{foo}</div>{/snippet}
37-
{#snippet bar({ foo: bar })}<div >{bar}</div>{/snippet}
43+
{#snippet named()}
44+
<svelte:element this={'div'} >x</svelte:element>
45+
{/snippet}
46+
</Component>
47+
48+
<Component>
49+
{#snippet foo({ foo })}
50+
<div >{foo}</div>
51+
{/snippet}
52+
{#snippet bar({ foo: bar })}
53+
<div >{bar}</div>
54+
{/snippet}
3855
</Component>
3956

4057
<Component >
4158
{#snippet children({ foo })}
4259
{foo}
4360
{/snippet}
44-
{#snippet named()}<div >x</div>{/snippet}
61+
{#snippet named()}
62+
<div >x</div>
63+
{/snippet}
4564
</Component>
4665

4766
<Component>
48-
{#snippet children({ foo })}{foo}{/snippet}
67+
{#snippet children({ foo })}
68+
{foo}
69+
{/snippet}
4970
</Component>
5071

5172
<Component>
52-
{#snippet named({ foo })}{foo}{/snippet}
73+
{#snippet named({ foo })}
74+
{foo}
75+
{/snippet}
5376
</Component>
5477

5578
<Component>
56-
{#snippet foo()}<div >foo</div>{/snippet}
79+
{#snippet foo()}
80+
<div >foo</div>
81+
{/snippet}
5782
OMG WHY
58-
{#snippet bar()}<div >bar</div>{/snippet}
83+
{#snippet bar()}
84+
<div >bar</div>
85+
{/snippet}
5986
</Component>
6087

6188
<Component>
6289
If you do mix slots like this
63-
{#snippet foo()}<div >foo</div>{/snippet}
90+
{#snippet foo()}
91+
<div >foo</div>
92+
{/snippet}
6493
you're a monster
65-
{#snippet bar()}<div >bar</div>{/snippet}
94+
{#snippet bar()}
95+
<div >bar</div>
96+
{/snippet}
6697
</Component>
6798

6899
<Component >
69-
{#snippet foo()}<div >foo</div>{/snippet}
100+
{#snippet foo()}
101+
<div >foo</div>
102+
{/snippet}
70103
{#snippet children({ omg })}
71104
{omg} WHY
72105
{/snippet}
73-
{#snippet bar()}<div >bar</div>{/snippet}
106+
{#snippet bar()}
107+
<div >bar</div>
108+
{/snippet}
74109
</Component>
75110

76111
<Component >{#snippet children({ monster })}
77112

78113
If you do mix slots like this
79114

80115
you're a {monster}{/snippet}
81-
{#snippet foo()}<div >foo</div>{/snippet}
82-
{#snippet bar()}<div >bar</div>{/snippet}
116+
{#snippet foo()}
117+
<div >foo</div>
118+
{/snippet}
119+
{#snippet bar()}
120+
<div >bar</div>
121+
{/snippet}
83122
</Component>
84123

85124
<c-e>

packages/svelte/tests/migrate/samples/svelte-component/output.svelte

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,30 @@
2828
</Component>
2929

3030
<Component>
31-
{#snippet x({ comp: stuff })}{@const SvelteComponent_2 = stuff}
31+
{#snippet x({ comp: stuff })}
32+
{@const SvelteComponent_2 = stuff}
3233
<div >
33-
<SvelteComponent_2 />
34-
</div>{/snippet}
34+
<SvelteComponent_2 />
35+
</div>
36+
{/snippet}
3537
</Component>
3638

3739
<Component>
38-
{#snippet x({ comp: stuff })}{@const SvelteComponent_3 = stuff}
40+
{#snippet x({ comp: stuff })}
41+
{@const SvelteComponent_3 = stuff}
3942

40-
<SvelteComponent_3 />
43+
<SvelteComponent_3 />
44+
4145
{/snippet}
4246
</Component>
4347

4448
<Component>
45-
{#snippet x({ comp: stuff })}{@const SvelteComponent_4 = stuff}
49+
{#snippet x({ comp: stuff })}
50+
{@const SvelteComponent_4 = stuff}
4651
<svelte:element this={"div"} >
47-
<SvelteComponent_4 />
48-
</svelte:element>{/snippet}
52+
<SvelteComponent_4 />
53+
</svelte:element>
54+
{/snippet}
4955
</Component>
5056

5157
<Component >
@@ -69,24 +75,30 @@
6975
</Component>
7076

7177
<Component>
72-
{#snippet x({ comp: stuff })}{@const SvelteComponent_7 = stuff}
78+
{#snippet x({ comp: stuff })}
79+
{@const SvelteComponent_7 = stuff}
7380
<div >
74-
<SvelteComponent_7 />
75-
</div>{/snippet}
81+
<SvelteComponent_7 />
82+
</div>
83+
{/snippet}
7684
</Component>
7785

7886
<Component>
79-
{#snippet x({ comp: stuff })}{@const SvelteComponent_8 = stuff}
87+
{#snippet x({ comp: stuff })}
88+
{@const SvelteComponent_8 = stuff}
8089

81-
<SvelteComponent_8 />
90+
<SvelteComponent_8 />
91+
8292
{/snippet}
8393
</Component>
8494

8595
<Component>
86-
{#snippet x({ comp: stuff })}{@const SvelteComponent_9 = stuff}
96+
{#snippet x({ comp: stuff })}
97+
{@const SvelteComponent_9 = stuff}
8798
<svelte:element this={"div"} >
88-
<SvelteComponent_9 />
89-
</svelte:element>{/snippet}
99+
<SvelteComponent_9 />
100+
</svelte:element>
101+
{/snippet}
90102
</Component>
91103

92104
<Component />

0 commit comments

Comments
 (0)