@antdv/pro-utils
Version:
@antdv/pro-utils
153 lines (152 loc) • 5.43 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var stdin_exports = {};
__export(stdin_exports, {
cloneElement: () => cloneElement,
ensureOnlyChild: () => ensureOnlyChild,
filterEmpty: () => filterEmpty,
filterEmptyWithUndefined: () => filterEmptyWithUndefined,
flattenChildren: () => flattenChildren,
getFirstValidNode: () => getFirstValidNode,
getNormalizedProps: () => getNormalizedProps,
getSlot: () => getSlot,
skipFlattenKey: () => skipFlattenKey
});
module.exports = __toCommonJS(stdin_exports);
var import_shared = require("@vue/shared");
var import_vue = require("vue");
var import_is = require("../is");
function filterEmpty(children = []) {
const res = [];
children.forEach((child) => {
if (Array.isArray(child))
res.push(...child);
else if ((child == null ? void 0 : child.type) === import_vue.Fragment)
res.push(...filterEmpty(child.children));
else
res.push(child);
});
return res.filter((c) => !(0, import_is.isEmptyElement)(c));
}
function filterEmptyWithUndefined(children) {
if (children) {
const coms = filterEmpty(children);
return coms.length ? coms : void 0;
} else {
return children;
}
}
const skipFlattenKey = Symbol("skipFlatten");
function flattenChildren(children = [], isFilterEmpty = true) {
const temp = Array.isArray(children) ? children : [children];
const res = [];
temp.forEach((child) => {
if (Array.isArray(child)) {
res.push(...flattenChildren(child, isFilterEmpty));
} else if (child && child.type === import_vue.Fragment) {
if (child.key === skipFlattenKey)
res.push(child);
else
res.push(...flattenChildren(child.children, isFilterEmpty));
} else if (child && (0, import_vue.isVNode)(child)) {
if (isFilterEmpty && !(0, import_is.isEmptyElement)(child))
res.push(child);
else if (!isFilterEmpty)
res.push(child);
} else if ((0, import_is.isValid)(child)) {
res.push(child);
}
});
return res;
}
function getSlot(self, name = "default", options = {}) {
var _a, _b;
if ((0, import_vue.isVNode)(self)) {
if (self.type === import_vue.Fragment)
return name === "default" ? flattenChildren(self.children) : [];
else if (self.children && self.children[name])
return flattenChildren((_b = (_a = self.children)[name]) == null ? void 0 : _b.call(_a, options));
else
return [];
} else {
const res = self.$slots[name] && self.$slots[name](options);
return flattenChildren(res);
}
}
function cloneElement(vnode, nodeProps = {}, override = true, mergeRef = false) {
let ele = vnode;
if (Array.isArray(vnode))
ele = filterEmpty(vnode)[0];
if (!ele)
return null;
const node = (0, import_vue.cloneVNode)(ele, nodeProps, mergeRef);
node.props = override ? __spreadValues(__spreadValues({}, node.props), nodeProps) : node.props;
return node;
}
function ensureOnlyChild(children) {
if (!(0, import_is.isArray)(children) || children.length > 1) {
throw new Error("expect to receive a single Vue element child");
}
return children[0];
}
function getNormalizedProps(node) {
if (!(0, import_vue.isVNode)(node)) {
console.warn("[getNormalizedProps] must be a VNode");
return {};
}
const raw = node.props || {};
const type = ((0, import_vue.isVNode)(node.type) ? node.type.props : void 0) || {};
const props = {};
Object.keys(type).forEach((key) => {
if ((0, import_shared.hasOwn)(type[key], "default")) {
props[key] = type[key].default;
}
});
Object.keys(raw).forEach((key) => {
props[(0, import_shared.camelize)(key)] = raw[key];
});
return props;
}
function getChildren(node, depth) {
if ((0, import_is.isComment)(node)) return;
if ((0, import_is.isFragment)(node) || (0, import_is.isTemplate)(node)) {
return depth > 0 ? getFirstValidNode(node.children, depth - 1) : void 0;
}
return node;
}
function getFirstValidNode(nodes, maxDepth = 3) {
if (Array.isArray(nodes)) {
return getChildren(nodes[0], maxDepth);
} else {
return getChildren(nodes, maxDepth);
}
}