diff --git a/packages/svelte2tsx/src/utils/htmlxparser.ts b/packages/svelte2tsx/src/utils/htmlxparser.ts index 9fa3db1b4..7c5c35b97 100644 --- a/packages/svelte2tsx/src/utils/htmlxparser.ts +++ b/packages/svelte2tsx/src/utils/htmlxparser.ts @@ -73,7 +73,18 @@ function extractTag(htmlx: string, tag: 'script' | 'style') { } function findVerbatimElements(htmlx: string) { - return [...extractTag(htmlx, 'script'), ...extractTag(htmlx, 'style')]; + const styleTags = extractTag(htmlx, 'style'); + const tags = extractTag(htmlx, 'script'); + for (const styleTag of styleTags) { + // Could happen if someone has a `` string in their script tag + const insideScript = tags.some( + (tag) => tag.start < styleTag.start && tag.end > styleTag.end + ); + if (!insideScript) { + tags.push(styleTag); + } + } + return tags; } function blankVerbatimContent(htmlx: string, verbatimElements: Node[]) { diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/style-in-script/expectedv2.ts b/packages/svelte2tsx/test/svelte2tsx/samples/style-in-script/expectedv2.ts new file mode 100644 index 000000000..e7485e718 --- /dev/null +++ b/packages/svelte2tsx/test/svelte2tsx/samples/style-in-script/expectedv2.ts @@ -0,0 +1,15 @@ +/// +;function render() { + + const config = { branding: { primaryColor: '#012345' } }, + branding = config?.branding; + + const cssString = ``; +; +async () => {}; +return { props: /** @type {Record} */ ({}), slots: {}, events: {} }} + +export default class Input__SvelteComponent_ extends __sveltets_2_createSvelte2TsxComponent(__sveltets_2_partial(__sveltets_2_with_any_event(render()))) { +} \ No newline at end of file diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/style-in-script/input.svelte b/packages/svelte2tsx/test/svelte2tsx/samples/style-in-script/input.svelte new file mode 100644 index 000000000..5283d7a19 --- /dev/null +++ b/packages/svelte2tsx/test/svelte2tsx/samples/style-in-script/input.svelte @@ -0,0 +1,8 @@ +