UNPKG

@antdv/pro-utils

Version:

@antdv/pro-utils

153 lines (152 loc) 5.43 kB
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); } }