diff options
author | 2024-11-06 23:17:39 +0800 | |
---|---|---|
committer | 2024-11-06 23:17:39 +0800 | |
commit | 7db86cf2b75c547b5947bc1a10f21d2e3e56e9da (patch) | |
tree | 115d93a2565958a069462d4e39446059e6395339 /packages/integrations/svelte/server-v5.js | |
parent | c280655655cc6c22121f32c5f7c76836adf17230 (diff) | |
parent | e10b03e88c22592fbb42d7245b65c4f486ab736d (diff) | |
download | astro-7db86cf2b75c547b5947bc1a10f21d2e3e56e9da.tar.gz astro-7db86cf2b75c547b5947bc1a10f21d2e3e56e9da.tar.zst astro-7db86cf2b75c547b5947bc1a10f21d2e3e56e9da.zip |
Merge branch 'main' into next
Diffstat (limited to 'packages/integrations/svelte/server-v5.js')
-rw-r--r-- | packages/integrations/svelte/server-v5.js | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/packages/integrations/svelte/server-v5.js b/packages/integrations/svelte/server-v5.js index acffd10df..a38d38260 100644 --- a/packages/integrations/svelte/server-v5.js +++ b/packages/integrations/svelte/server-v5.js @@ -17,7 +17,10 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { 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; @@ -29,6 +32,11 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { 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, { @@ -36,6 +44,7 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { ...props, children, $$slots, + ...renderProps, }, }); return { html: result.body }; |