element-plus
Version:
A Component Library for Vue 3
1 lines • 8.46 kB
Source Map (JSON)
{"version":3,"file":"vnode.mjs","sources":["../../../../../packages/utils/vue/vnode.ts"],"sourcesContent":["import {\n Comment,\n Fragment,\n Text,\n createBlock,\n createCommentVNode,\n isVNode,\n openBlock,\n} from 'vue'\nimport { camelize } from '../strings'\nimport { isArray } from '../types'\nimport { hasOwn } from '../objects'\nimport { debugWarn } from '../error'\n\nimport type { VNode, VNodeChild, VNodeNormalizedChildren } from 'vue'\n\nconst SCOPE = 'utils/vue/vnode'\n\nexport enum PatchFlags {\n TEXT = 1,\n CLASS = 2,\n STYLE = 4,\n PROPS = 8,\n FULL_PROPS = 16,\n HYDRATE_EVENTS = 32,\n STABLE_FRAGMENT = 64,\n KEYED_FRAGMENT = 128,\n UNKEYED_FRAGMENT = 256,\n NEED_PATCH = 512,\n DYNAMIC_SLOTS = 1024,\n HOISTED = -1,\n BAIL = -2,\n}\n\nexport type VNodeChildAtom = Exclude<VNodeChild, Array<any>>\nexport type RawSlots = Exclude<\n VNodeNormalizedChildren,\n Array<any> | null | string\n>\n\nexport function isFragment(node: VNode): boolean\nexport function isFragment(node: unknown): node is VNode\nexport function isFragment(node: unknown): node is VNode {\n return isVNode(node) && node.type === Fragment\n}\n\nexport function isText(node: VNode): boolean\nexport function isText(node: unknown): node is VNode\nexport function isText(node: unknown): node is VNode {\n return isVNode(node) && node.type === Text\n}\n\nexport function isComment(node: VNode): boolean\nexport function isComment(node: unknown): node is VNode\nexport function isComment(node: unknown): node is VNode {\n return isVNode(node) && node.type === Comment\n}\n\nconst TEMPLATE = 'template'\nexport function isTemplate(node: VNode): boolean\nexport function isTemplate(node: unknown): node is VNode\nexport function isTemplate(node: unknown): node is VNode {\n return isVNode(node) && node.type === TEMPLATE\n}\n\n/**\n * determine if the element is a valid element type rather than fragments and comment e.g. <template> v-if\n * @param node {VNode} node to be tested\n */\nexport function isValidElementNode(node: VNode): boolean\nexport function isValidElementNode(node: unknown): node is VNode\nexport function isValidElementNode(node: unknown): node is VNode {\n return isVNode(node) && !isFragment(node) && !isComment(node)\n}\n\n/**\n * get a valid child node (not fragment nor comment)\n * @param node {VNode} node to be searched\n * @param depth {number} depth to be searched\n */\nfunction getChildren(\n node: VNodeNormalizedChildren | VNodeChild,\n depth: number\n): VNodeNormalizedChildren | VNodeChild {\n if (isComment(node)) return\n if (isFragment(node) || isTemplate(node)) {\n return depth > 0 ? getFirstValidNode(node.children, depth - 1) : undefined\n }\n return node\n}\n\nexport const getFirstValidNode = (\n nodes: VNodeNormalizedChildren,\n maxDepth = 3\n) => {\n if (isArray(nodes)) {\n return getChildren(nodes[0], maxDepth)\n } else {\n return getChildren(nodes, maxDepth)\n }\n}\n\nexport function renderIf(\n condition: boolean,\n ...args: Parameters<typeof createBlock>\n) {\n return condition ? renderBlock(...args) : createCommentVNode('v-if', true)\n}\n\nexport function renderBlock(...args: Parameters<typeof createBlock>) {\n return (openBlock(), createBlock(...args))\n}\n\nexport const getNormalizedProps = (node: VNode) => {\n if (!isVNode(node)) {\n debugWarn(SCOPE, '[getNormalizedProps] must be a VNode')\n return {}\n }\n\n const raw = node.props || {}\n const type = (isVNode(node.type) ? node.type.props : undefined) || {}\n const props: Record<string, any> = {}\n\n Object.keys(type).forEach((key) => {\n if (hasOwn(type[key], 'default')) {\n props[key] = type[key].default\n }\n })\n\n Object.keys(raw).forEach((key) => {\n props[camelize(key)] = raw[key]\n })\n\n return props\n}\n\nexport type FlattenVNodes = Array<VNodeChildAtom | RawSlots>\n\nexport const flattedChildren = (\n children: FlattenVNodes | VNode | VNodeNormalizedChildren\n): FlattenVNodes => {\n const vNodes = isArray(children) ? children : [children]\n const result: FlattenVNodes = []\n\n vNodes.forEach((child) => {\n if (isArray(child)) {\n result.push(...flattedChildren(child))\n } else if (isVNode(child) && child.component?.subTree) {\n result.push(child, ...flattedChildren(child.component.subTree))\n } else if (isVNode(child) && isArray(child.children)) {\n result.push(...flattedChildren(child.children))\n } else if (isVNode(child) && child.shapeFlag === 2) {\n // @ts-ignore\n result.push(...flattedChildren(child.type()))\n } else {\n result.push(child)\n }\n })\n return result\n}\n"],"names":["PatchFlags"],"mappings":"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"}