{"version":3,"file":"method.mjs","sources":["../../../../../packages/components/messageBox/src/method.js"],"sourcesContent":["import { createVNode, render, shallowReactive } from 'vue'\nimport { types } from '@ui-library/utils'\nimport MessageBoxNode from \"./message-box.vue\"\nexport const messageInstances = shallowReactive([])\n// 主题类型\nconst messageTheme = ['info', 'success', 'warning', 'danger']\n/** 默认属性 */\nconst messageDefaults = {\n  type: 'info',\n  onClose: null\n}\n/** id */\nlet onlyId = 0;\n\n/** 初始化配置 */\nconst initOptions = (params) => {\n  // message类型：string，vnode\n  const options = !params || types().isString(params) ? { message: params } : params\n  // 配置\n  const config = {\n    ...messageDefaults,\n    ...options\n  }\n  return config\n}\n\nconst createMessage = (options = {}) => {\n  const container = document.createElement('div');\n  const appendTo = document.body;\n  // id 唯一值\n  const id = `message_${onlyId++}`\n  // 提供自定义关闭动作回调\n  const userOnClose = options.onClose\n  const vnode = createVNode(\n    MessageBoxNode, \n    {\n      ...options,\n      id,\n      onClose(){\n        userOnClose?.()\n        closeMessage(instance)\n      },\n      onUnmount(){\n        render(null, container);\n      }\n    }\n  )\n  // 渲染组件到 container 上\n  render(vnode, container);\n  // 添加 container 到 body\n  appendTo.appendChild(container.firstElementChild);\n  // 获取组件对象\n  const vm = vnode.component\n  const instance = {\n    id,\n    vnode,\n    vm,\n    handler: {\n      close: () => {\n        vm.setupState.visible = false\n      }\n    },\n    props: vm.props,\n  }\n  return instance\n}\n\n\nconst closeMessage = (instance) => {\n  const idx = messageInstances.indexOf(instance)\n  if (idx === -1) return\n  messageInstances.splice(idx, 1)\n  instance?.handler.close()\n}\n\n/** \n * 关闭所有\n */\nexport function closeAll() {\n  for (const instance of messageInstances) {\n    instance.handler.close()\n  }\n}\n\nconst message = (params = {}) => {\n  const normalized = initOptions(params)\n  const message = createMessage(normalized)\n  messageInstances.push(message)\n}\n\nmessageTheme.forEach(theme => {\n  message[theme] = (options = {}) => {\n    const config = initOptions(options)\n    return message({...config, type: theme})\n  }\n})\n\nmessage.closeAll = closeAll\n\nexport default message;"],"names":["message"],"mappings":"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"}