diff --git a/src/compiler/pre-transform/codemods/legacy-story.test.ts b/src/compiler/pre-transform/codemods/legacy-story.test.ts index 07b98c11..4ec8788a 100644 --- a/src/compiler/pre-transform/codemods/legacy-story.test.ts +++ b/src/compiler/pre-transform/codemods/legacy-story.test.ts @@ -280,9 +280,7 @@ describe(transformLegacyStory.name, () => { `); }); - it("leaves existing Story parameters untouched", async ({ - expect, - }) => { + it('leaves existing Story parameters untouched', async ({ expect }) => { const code = ` + + + \`} + > +

{"Test"}

+
+ `; + const component = await parseAndExtractSvelteNode(code, 'Component'); + + expect( + print( + transformLegacyStory({ + component, + state: { componentIdentifierName: {} }, + }) + ) + ).toMatchInlineSnapshot(` + "\\n " } } + }}> +

{"Test"}

+
" + `); + }); }); diff --git a/src/compiler/pre-transform/codemods/legacy-story.ts b/src/compiler/pre-transform/codemods/legacy-story.ts index 72802677..fcf77d62 100644 --- a/src/compiler/pre-transform/codemods/legacy-story.ts +++ b/src/compiler/pre-transform/codemods/legacy-story.ts @@ -222,8 +222,14 @@ function getSourceValue(attribute: SvelteAST.Attribute): string | undefined { return; } - if (!Array.isArray(value) && value.expression.type === 'Literal') { - return value.expression.value as string; + if (!Array.isArray(value)) { + if (value.expression.type === 'Literal' && typeof value.expression.value === 'string') { + return value.expression.value; + } + + if (value.expression.type === 'TemplateLiteral') { + return value.expression.quasis.map((q) => q.value.cooked).join(''); + } } if (value[0].type === 'Text') { diff --git a/tests/stories/LegacyStory.stories.svelte b/tests/stories/LegacyStory.stories.svelte index 866e99e0..4c923f6d 100644 --- a/tests/stories/LegacyStory.stories.svelte +++ b/tests/stories/LegacyStory.stories.svelte @@ -51,3 +51,13 @@ {'Test'} + + + `} + args={{ rounded: false }} +> + {'Test'} +