feat: init
This commit is contained in:
53
node_modules/nuxt/dist/app/components/nuxt-teleport-island-slot.js
generated
vendored
Normal file
53
node_modules/nuxt/dist/app/components/nuxt-teleport-island-slot.js
generated
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
import { Teleport, createVNode, defineComponent, h, inject } from "vue";
|
||||
import { useNuxtApp } from "../nuxt.js";
|
||||
import { NuxtTeleportIslandSymbol } from "./nuxt-teleport-island-component.js";
|
||||
export default defineComponent({
|
||||
name: "NuxtTeleportIslandSlot",
|
||||
inheritAttrs: false,
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
/**
|
||||
* must be an array to handle v-for
|
||||
*/
|
||||
props: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
setup(props, { slots }) {
|
||||
const nuxtApp = useNuxtApp();
|
||||
const islandContext = nuxtApp.ssrContext?.islandContext;
|
||||
if (!islandContext) {
|
||||
return () => slots.default?.()[0];
|
||||
}
|
||||
const componentName = inject(NuxtTeleportIslandSymbol, false);
|
||||
islandContext.slots[props.name] = {
|
||||
props: props.props || []
|
||||
};
|
||||
return () => {
|
||||
const vnodes = [];
|
||||
if (nuxtApp.ssrContext?.islandContext && slots.default) {
|
||||
vnodes.push(h("div", {
|
||||
"style": "display: contents;",
|
||||
"data-island-uid": "",
|
||||
"data-island-slot": props.name
|
||||
}, {
|
||||
// Teleport in slot to not be hydrated client-side with the staticVNode
|
||||
default: () => [createVNode(Teleport, { to: `island-slot=${componentName};${props.name}` }, slots.default?.())]
|
||||
}));
|
||||
} else {
|
||||
vnodes.push(h("div", {
|
||||
"style": "display: contents;",
|
||||
"data-island-uid": "",
|
||||
"data-island-slot": props.name
|
||||
}));
|
||||
}
|
||||
if (slots.fallback) {
|
||||
vnodes.push(h(Teleport, { to: `island-fallback=${props.name}` }, slots.fallback()));
|
||||
}
|
||||
return vnodes;
|
||||
};
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user