yanzhen-design-vue
Version:
44 lines (43 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const lodashEs = require("lodash-es");
const closeComponent = (element) => {
var _a;
if (element) {
vue.render(null, element);
(_a = document.body) == null ? void 0 : _a.removeChild(element);
}
};
const openComponent = async ({
component,
props = {},
element,
appContext
}) => {
var _a, _b;
if (!component) return;
if (!element) {
element = document.createElement("div");
element.className = lodashEs.uniqueId();
}
try {
if (typeof component === "function") {
component = (_a = await component()) == null ? void 0 : _a.default;
}
const vnode = vue.h(component, props);
if (appContext) {
vnode.appContext = appContext;
}
vue.render(vnode, element);
(_b = document.body) == null ? void 0 : _b.appendChild(element);
vnode.close = () => {
closeComponent(element);
};
return vnode;
} catch (error) {
console.error("创建组件失败:", error);
}
};
exports.closeComponent = closeComponent;
exports.openComponent = openComponent;