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 @@
+