summaryrefslogtreecommitdiff
path: root/packages/integrations/svelte/client-v5.js
diff options
context:
space:
mode:
authorGravatar bluwy <bjornlu.dev@gmail.com> 2024-11-15 19:37:28 +0800
committerGravatar bluwy <bjornlu.dev@gmail.com> 2024-11-15 19:37:28 +0800
commit671f50c7d3c02ab9d23d8d38ecb8934d080b6a40 (patch)
tree45af7931d284ee47857c9bc5c172f12eff779b2f /packages/integrations/svelte/client-v5.js
parent4364bff27332e52f92da72392620a36110daee42 (diff)
parent55091174158a80f2e023571f6d10ffdbf17d274b (diff)
downloadastro-671f50c7d3c02ab9d23d8d38ecb8934d080b6a40.tar.gz
astro-671f50c7d3c02ab9d23d8d38ecb8934d080b6a40.tar.zst
astro-671f50c7d3c02ab9d23d8d38ecb8934d080b6a40.zip
Merge branch 'main' into next
Diffstat (limited to 'packages/integrations/svelte/client-v5.js')
-rw-r--r--packages/integrations/svelte/client-v5.js60
1 files changed, 0 insertions, 60 deletions
diff --git a/packages/integrations/svelte/client-v5.js b/packages/integrations/svelte/client-v5.js
deleted file mode 100644
index 123e544f6..000000000
--- a/packages/integrations/svelte/client-v5.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import { createRawSnippet, hydrate, mount, unmount } from 'svelte';
-
-const existingApplications = new WeakMap();
-
-export default (element) => {
- return async (Component, props, slotted, { client }) => {
- if (!element.hasAttribute('ssr')) return;
-
- let children = undefined;
- let $$slots = undefined;
- let renderFns = {};
-
- for (const [key, value] of Object.entries(slotted)) {
- // Legacy slot support
- $$slots ??= {};
- if (key === 'default') {
- $$slots.default = true;
- children = createRawSnippet(() => ({
- render: () => `<astro-slot>${value}</astro-slot>`,
- }));
- } else {
- $$slots[key] = createRawSnippet(() => ({
- render: () => `<astro-slot name="${key}">${value}</astro-slot>`,
- }));
- }
- // @render support for Svelte ^5.0
- if (key === 'default') {
- renderFns.children = createRawSnippet(() => ({
- render: () => `<astro-slot>${value}</astro-slot>`,
- }));
- } else {
- renderFns[key] = createRawSnippet(() => ({
- render: () => `<astro-slot name="${key}">${value}</astro-slot>`,
- }));
- }
- }
-
- const bootstrap = client !== 'only' ? hydrate : mount;
- if (existingApplications.has(element)) {
- existingApplications.get(element).$set({
- ...props,
- children,
- $$slots,
- ...renderFns,
- });
- } else {
- const component = bootstrap(Component, {
- target: element,
- props: {
- ...props,
- children,
- $$slots,
- ...renderFns,
- },
- });
- existingApplications.set(element, component);
- element.addEventListener('astro:unmount', () => unmount(component), { once: true });
- }
- };
-};