import { h, render, watch, isVNode } from 'vue'; import { hasOwn, isString } from '@vue/shared'; import { isClient } from '@vueuse/core'; import '../../../utils/util.mjs'; import './index.mjs'; import script from './index.vue_vue_type_script_lang.mjs'; const messageInstance = /* @__PURE__ */ new Map(); const initInstance = (props, container) => { const vnode = h(script, props); render(vnode, container); document.body.appendChild(container.firstElementChild); return vnode.component; }; const genContainer = () => { return document.createElement("div"); }; const showMessage = (options) => { const container = genContainer(); options.onVanish = () => { render(null, container); messageInstance.delete(vm); }; options.onAction = (action) => { const currentMsg = messageInstance.get(vm); let resolve; if (options.showInput) { resolve = { value: vm.inputValue, action }; } else { resolve = action; } if (options.callback) { options.callback(resolve, instance.proxy); } else { if (action === "cancel" || action === "close") { if (options.distinguishCancelAndClose && action !== "cancel") { currentMsg.reject("close"); } else { currentMsg.reject("cancel"); } } else { currentMsg.resolve(resolve); } } }; const instance = initInstance(options, container); const vm = instance.proxy; for (const prop in options) { if (hasOwn(options, prop) && !hasOwn(vm.$props, prop)) { vm[prop] = options[prop]; } } watch(() => vm.message, (newVal, oldVal) => { if (isVNode(newVal)) { instance.slots.default = () => [newVal]; } else if (isVNode(oldVal) && !isVNode(newVal)) { delete instance.slots.default; } }, { immediate: true }); vm.visible = true; return vm; }; function MessageBox(options) { if (!isClient) return; let callback; if (isString(options) || isVNode(options)) { options = { message: options }; } else { callback = options.callback; } return new Promise((resolve, reject) => { const vm = showMessage(options); messageInstance.set(vm, { options, callback, resolve, reject }); }); } MessageBox.alert = (message, title, options) => { if (typeof title === "object") { options = title; title = ""; } else if (title === void 0) { title = ""; } return MessageBox(Object.assign({ title, message, type: "", closeOnPressEscape: false, closeOnClickModal: false }, options, { boxType: "alert" })); }; MessageBox.confirm = (message, title, options) => { if (typeof title === "object") { options = title; title = ""; } else if (title === void 0) { title = ""; } return MessageBox(Object.assign({ title, message, type: "", showCancelButton: true }, options, { boxType: "confirm" })); }; MessageBox.prompt = (message, title, options) => { if (typeof title === "object") { options = title; title = ""; } else if (title === void 0) { title = ""; } return MessageBox(Object.assign({ title, message, showCancelButton: true, showInput: true, type: "" }, options, { boxType: "prompt" })); }; MessageBox.close = () => { messageInstance.forEach((_, vm) => { vm.doClose(); }); messageInstance.clear(); }; export { MessageBox as default }; //# sourceMappingURL=messageBox.mjs.map