@wfrog/vc
Version:
vue3 组件库 vc
50 lines (47 loc) • 2.03 kB
JavaScript
import { isVNode, Fragment, Comment } from 'vue';
import { i as isArray } from './E_WRn0OP.mjs';
var PatchFlags = /* @__PURE__ */ ((PatchFlags2) => {
PatchFlags2[PatchFlags2["TEXT"] = 1] = "TEXT";
PatchFlags2[PatchFlags2["CLASS"] = 2] = "CLASS";
PatchFlags2[PatchFlags2["STYLE"] = 4] = "STYLE";
PatchFlags2[PatchFlags2["PROPS"] = 8] = "PROPS";
PatchFlags2[PatchFlags2["FULL_PROPS"] = 16] = "FULL_PROPS";
PatchFlags2[PatchFlags2["HYDRATE_EVENTS"] = 32] = "HYDRATE_EVENTS";
PatchFlags2[PatchFlags2["STABLE_FRAGMENT"] = 64] = "STABLE_FRAGMENT";
PatchFlags2[PatchFlags2["KEYED_FRAGMENT"] = 128] = "KEYED_FRAGMENT";
PatchFlags2[PatchFlags2["UNKEYED_FRAGMENT"] = 256] = "UNKEYED_FRAGMENT";
PatchFlags2[PatchFlags2["NEED_PATCH"] = 512] = "NEED_PATCH";
PatchFlags2[PatchFlags2["DYNAMIC_SLOTS"] = 1024] = "DYNAMIC_SLOTS";
PatchFlags2[PatchFlags2["HOISTED"] = -1] = "HOISTED";
PatchFlags2[PatchFlags2["BAIL"] = -2] = "BAIL";
return PatchFlags2;
})(PatchFlags || {});
function isFragment(node) {
return isVNode(node) && node.type === Fragment;
}
function isComment(node) {
return isVNode(node) && node.type === Comment;
}
function isValidElementNode(node) {
return isVNode(node) && !isFragment(node) && !isComment(node);
}
const flattedChildren = (children) => {
const vNodes = isArray(children) ? children : [children];
const result = [];
vNodes.forEach((child) => {
var _a;
if (isArray(child)) {
result.push(...flattedChildren(child));
} else if (isVNode(child) && ((_a = child.component) == null ? void 0 : _a.subTree)) {
result.push(child, ...flattedChildren(child.component.subTree));
} else if (isVNode(child) && isArray(child.children)) {
result.push(...flattedChildren(child.children));
} else if (isVNode(child) && child.shapeFlag === 2) {
result.push(...flattedChildren(child.type()));
} else {
result.push(child);
}
});
return result;
};
export { PatchFlags as P, isValidElementNode as a, flattedChildren as f, isFragment as i };