UNPKG

vuestic-ui

Version:
45 lines (44 loc) 1.35 kB
import { withCtx, h, Text, isVNode, createBlock } from "vue"; const renderSlotNode = (node, ctx = null) => { return withCtx(() => [node], ctx); }; const makeVNode = (node) => { if (typeof node === "string") { return h(Text, node); } return isVNode(node) ? node : createBlock(node); }; const renderSlots = (slots, ctx = null) => { return Object.keys(slots).reduce((acc, slotName) => { const slot = slots[slotName]; acc[slotName] = typeof slot === "function" ? slot : renderSlotNode(slot, ctx); return acc; }, {}); }; const createRenderFn = (component) => { const originalRenderFn = component.render || component.ssrRender; if (!originalRenderFn) { return void 0; } const compiledRenderedFn = originalRenderFn.name === "_sfc_render" || originalRenderFn.name === "_sfc_ssrRender"; return function(...args) { const ctx = args[0]; const slots = ctx.$.slots; const customCtx = new Proxy(ctx, { get(target, key) { if (key === "$slots") { return renderSlots(slots); } return target[key]; } }); const thisArg = compiledRenderedFn ? void 0 : customCtx; return originalRenderFn.call(thisArg, customCtx, ...args.slice(1)); }; }; export { createRenderFn as c, makeVNode as m, renderSlotNode as r }; //# sourceMappingURL=createRenderFn.mjs.map