diff options
author | 2024-11-14 15:31:51 +0000 | |
---|---|---|
committer | 2024-11-14 23:31:51 +0800 | |
commit | 9fc2ab8cc848739a21bfa3f754e9bec4926dc034 (patch) | |
tree | a184ada6711296569a064c01defd2fa6a74f63c5 /packages/integrations/svelte/server-v5.js | |
parent | bdc0890061533466da19660ff83a331a3136f6c4 (diff) | |
download | astro-9fc2ab8cc848739a21bfa3f754e9bec4926dc034.tar.gz astro-9fc2ab8cc848739a21bfa3f754e9bec4926dc034.tar.zst astro-9fc2ab8cc848739a21bfa3f754e9bec4926dc034.zip |
Update to svelte 5 (#12364)
Co-authored-by: bluwy <bjornlu.dev@gmail.com>
Diffstat (limited to 'packages/integrations/svelte/server-v5.js')
-rw-r--r-- | packages/integrations/svelte/server-v5.js | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/packages/integrations/svelte/server-v5.js b/packages/integrations/svelte/server-v5.js deleted file mode 100644 index a38d38260..000000000 --- a/packages/integrations/svelte/server-v5.js +++ /dev/null @@ -1,57 +0,0 @@ -import { createRawSnippet } from 'svelte'; -import { render } from 'svelte/server'; - -function check(Component) { - // Svelte 5 generated components always accept these two props - const str = Component.toString(); - return str.includes('$$payload') && str.includes('$$props'); -} - -function needsHydration(metadata) { - // Adjust how this is hydrated only when the version of Astro supports `astroStaticSlot` - return metadata.astroStaticSlot ? !!metadata.hydrate : true; -} - -async function renderToStaticMarkup(Component, props, slotted, metadata) { - const tagName = needsHydration(metadata) ? 'astro-slot' : 'astro-static-slot'; - - let children = undefined; - let $$slots = undefined; - const renderProps = {}; - - for (const [key, value] of Object.entries(slotted)) { - // Legacy slot support - $$slots ??= {}; - if (key === 'default') { - $$slots.default = true; - children = createRawSnippet(() => ({ - render: () => `<${tagName}>${value}</${tagName}>`, - })); - } else { - $$slots[key] = createRawSnippet(() => ({ - render: () => `<${tagName} name="${key}">${value}</${tagName}>`, - })); - } - // @render support for Svelte ^5.0 - const slotName = key === 'default' ? 'children' : key; - renderProps[slotName] = createRawSnippet(() => ({ - render: () => `<${tagName}${key !== 'default' ? ` name="${key}"` : ''}>${value}</${tagName}>`, - })); - } - - const result = render(Component, { - props: { - ...props, - children, - $$slots, - ...renderProps, - }, - }); - return { html: result.body }; -} - -export default { - check, - renderToStaticMarkup, - supportsAstroStaticSlot: true, -}; |