diff options
Diffstat (limited to 'packages/integrations/svelte/src')
-rw-r--r-- | packages/integrations/svelte/src/editor.cts | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/integrations/svelte/src/editor.cts b/packages/integrations/svelte/src/editor.cts new file mode 100644 index 000000000..202609d33 --- /dev/null +++ b/packages/integrations/svelte/src/editor.cts @@ -0,0 +1,23 @@ +import { svelte2tsx } from 'svelte2tsx'; + +export function toTSX(code: string, className: string): string { + let result = ` + let ${className}__AstroComponent_: Error + export default ${className}__AstroComponent_ + `; + + try { + let tsx = svelte2tsx(code).code; + tsx = 'let Props = render().props;\n' + tsx; + + // Replace Svelte's class export with a function export + result = tsx.replace( + /^export default[\S\s]*/gm, + `export default function ${className}__AstroComponent_(_props: typeof Props): any {}` + ); + } catch (e: any) { + return result; + } + + return result; +} |