diff options
author | 2022-07-08 17:47:01 -0400 | |
---|---|---|
committer | 2022-07-08 17:47:01 -0400 | |
commit | f9ed77bb0d71d1644d524547a24963210f4ecaff (patch) | |
tree | 5c4c27daf7213d8e483b8a0eaaca547804542ef1 /packages/integrations/svelte/src | |
parent | d2f68345f97eb5b55bc323d633017069398727b2 (diff) | |
download | astro-f9ed77bb0d71d1644d524547a24963210f4ecaff.tar.gz astro-f9ed77bb0d71d1644d524547a24963210f4ecaff.tar.zst astro-f9ed77bb0d71d1644d524547a24963210f4ecaff.zip |
Add editor integrations to language integrations (#3864)
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; +} |