0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2024-12-23 21:53:55 -05:00

Properly support and type optional props in Svelte components (#3993)

* Properly support and type optional props in Svelte components

* Change output to support documentating components

* Add changeset
This commit is contained in:
Erika 2022-07-20 17:32:46 -04:00 committed by GitHub
parent 31142411b0
commit 40a45e3ef6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 6 deletions

View file

@ -0,0 +1,5 @@
---
'@astrojs/svelte': patch
---
Fix optional props not being recognized properly in the editor

View file

@ -7,13 +7,11 @@ export function toTSX(code: string, className: string): string {
`;
try {
let tsx = svelte2tsx(code).code;
tsx = 'let Props = render().props;\n' + tsx;
// Replace Svelte's class export with a function export
let tsx = svelte2tsx(code, { mode: 'ts' }).code;
tsx = '/// <reference types="svelte2tsx/svelte-shims" />\n' + tsx;
result = tsx.replace(
/^export default[\S\s]*/gm,
`export default function ${className}__AstroComponent_(_props: typeof Props): any {}`
'export default class extends __sveltets_1_createSvelte2TsxComponent(',
`export default function ${className}__AstroComponent_(_props: typeof Component.props): any {}\nlet Component = `
);
} catch (e: any) {
return result;