@zhsz/cool-design-crud
Version:
156 lines (155 loc) • 3.76 kB
JavaScript
;
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;