UNPKG

kui-vue

Version:

A lightweight desktop UI component library suitable for Vue.js 2.

56 lines (46 loc) 1.46 kB
// import { isVNode, Comment, Fragment, Text, cloneVNode } from "vue"; // for v3 // import Vue from "vue"; // const { Comment, Fragment, Text } = Vue; import { isVNode, cloneVNode } from "../utils/vue"; export function cloneNodes(vnode, props, merge = false, child) { return vnode.length == 1 ? cloneVNode(vnode[0], props, merge,) : cloneVNode(<span>{vnode}</span>, props, merge, child); } export function getChildren(VNodes) { const result = []; const loop = (nodes) => { nodes?.forEach((vnode) => { if (!isVNode(vnode)) return; if (vnode.isComment) return; if (!vnode.tag && vnode.text?.toString().trim() === "") return; if (!vnode.tag && Array.isArray(vnode.children)) { loop(vnode.children); return; } result.push(vnode); }); }; loop(VNodes); return result; } // export function getChildrenV3(VNodes) { // const result = []; // const loop = (nodes) => { // nodes?.forEach((vnode) => { // if (!isVNode(vnode)) return; // console.log(vnode.type); // if (vnode.type === Comment) return; // if (vnode.type === Text && vnode.children?.toString().trim() === "") // return; // // 处理 Fragment 节点 // if (vnode.type === Fragment && Array.isArray(vnode.children)) { // loop(vnode.children); // return; // } // result.push(vnode); // }); // }; // loop(VNodes); // return result; // }