UNPKG

@zhsz/cool-design-crud

Version:

156 lines (155 loc) 3.76 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); require("./test.js"); const core = require("../hooks/core.js"); const index = require("./index.js"); require("@formily/core"); require("lodash-es"); require("../hooks/table.js"); const parse = require("./parse.js"); const temp = require("./temp.js"); const regs = /* @__PURE__ */ new Map(); function parseNode(vnode, options) { var _a; const { scope, prop, slots, children, _data } = options || []; const global = core.useGlobal(); let comp = null; if (vnode.name.includes("slot-")) { const rn = slots[vnode.name]; if (rn) { return rn({ scope, prop, ..._data }); } else { return vue.h("div", {}, `${vnode.name} is not found`); } } if (vnode.vm && !regs.get(vnode.name)) { temp.default.vue.component(vnode.name, { ...vnode.vm }); regs.set(vnode.name, { ...vnode.vm }); } if (index.isFunction(vnode.props)) { vnode.props = vnode.props({ scope, prop, ..._data }); } const props = { ...vnode.props, ..._data, prop, scope }; props.disabled = (_data == null ? void 0 : _data.isDisabled) || props.disabled; if (props && scope) { if (prop) { props.modelValue = scope[prop]; props["onUpdate:modelValue"] = function(val) { scope[prop] = val; }; } } if (vnode.vm) { comp = vue.h(regs.get(vnode.name), props); } else { const isFunctionSlot = !((_a = global.render.functionSlots.exclude) == null ? void 0 : _a.includes(vnode.name)) && (vnode.functionSlot === void 0 ? true : vnode.functionSlot); comp = vue.h(vue.toRaw(vue.resolveComponent(vnode.name)), props, isFunctionSlot ? () => children : children); } if (index.isFunction(vnode.ref)) { setTimeout(() => { var _a2; vnode.ref((_a2 = comp == null ? void 0 : comp.component) == null ? void 0 : _a2.exposed); }, 0); } return comp; } function renderNode(vnode, options) { var _a, _b, _c; const { item, scope, children, _data, render } = options || {}; if (!vnode) { return null; } if (vnode.__v_isVNode) { return vnode; } if (item) { if (item.component) { if (!item.component.props) { item.component.props = {}; } let placeholder = ""; switch ((_a = item.component) == null ? void 0 : _a.name) { case "t-input": placeholder = "请填写"; break; case "t-select": placeholder = "请选择"; break; } if (placeholder) { if (!item.component.props.placeholder) { item.component.props.placeholder = placeholder + item.label; } } } } if (vnode.vm) { if (!vnode.name) { vnode.name = ((_b = vnode.vm) == null ? void 0 : _b.name) || ((_c = vnode.vm) == null ? void 0 : _c.__hmrId); } return parseNode(vnode, options); } if (index.isString(vnode)) { if (render === "slot") { if (!vnode.includes("slot-")) { return vnode; } } return parseNode({ name: vnode }, options); } if (index.isFunction(vnode)) { return vnode({ scope, h: vue.h, ..._data }); } if (index.isObject(vnode)) { if (vnode.name) { return parseNode(vnode, { ...options, children, ...parse.parseExtensionComponent(vnode) }); } else { if (options.custom) { return options.custom(vnode); } return vue.h("div", {}, "组件渲染失败,组件 name 不能为空"); } } } exports.parseNode = parseNode; exports.renderNode = renderNode;