{"version":3,"file":"message.mjs","sources":["../../../../../../components/message/src/message.ts"],"sourcesContent":["import { h, render, shallowReactive } from 'vue'\nimport type { MessageInstance, MessageType } from './types'\nimport Message from './index.vue'\nimport type { LMessageProps } from './props'\n\nconst instances: MessageInstance[] = shallowReactive([])\nlet currId = 1\n\nexport function createMessage(props: LMessageProps) {\n  const el = document.createElement('div')\n  const id = `fn-message-${currId}`\n\n  const vnode = h(\n    Message,\n    {\n      ...props,\n      id,\n      onDestroy: () => {\n        // 移除DOM\n        removeMessageById(id)\n        render(null, el)\n      },\n    },\n    () => props.message,\n  )\n  render(vnode, el)\n  document.body.appendChild(el.firstElementChild!)\n\n  const instance: MessageInstance = {\n    id,\n    vnode,\n    component: vnode.component!,\n    props,\n    close: () => {\n      vnode.component!.exposed!.visible.value = false\n    },\n  }\n  instances.push(instance)\n  currId++\n\n  return instance\n}\n\nexport function removeMessage(instance: MessageInstance) {\n  const index = instances.indexOf(instance)\n  if (index === -1)\n    return\n  instances.splice(index, 1)\n  instance.close()\n}\n\nexport function removeMessageById(id: string) {\n  const index = instances.findIndex(item => item.id === id)\n  if (index === -1)\n    return\n  instances[index].close()\n  instances.splice(index, 1)\n}\n\nexport const getLastOffset = (id: string): number => {\n  const index = instances.findIndex(item => item.id === id)\n  const target = instances[index - 1]\n\n  if (!target)\n    return 0\n  return target.component.exposed!.bottom.value\n}\n\nexport function createSubHandler(type: MessageType) {\n  return function (message: any, options: LMessageProps) {\n    return createMessage({\n      ...options,\n      message,\n    })\n  }\n}\n\nexport function closeAll() {\n  for (const instance of instances) instance.close()\n\n  instances.splice(0, instances.length)\n}\n\nexport const svgIncon = new Map([\n  ['success', `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-check2-circle\" viewBox=\"0 0 16 16\">\n  <path d=\"M2.5 8a5.5 5.5 0 0 1 8.25-4.764.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0 5.5 5.5 0 1 1-11 0z\"/>\n  <path d=\"M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l7-7z\"/>\n</svg>`],\n  ['warning', `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-exclamation-triangle\" viewBox=\"0 0 16 16\">\n  <path d=\"M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.146.146 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.163.163 0 0 1-.054.06.116.116 0 0 1-.066.017H1.146a.115.115 0 0 1-.066-.017.163.163 0 0 1-.054-.06.176.176 0 0 1 .002-.183L7.884 2.073a.147.147 0 0 1 .054-.057zm1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566z\"/>\n  <path d=\"M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995z\"/>\n</svg>`],\n  ['error', `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-x-circle\" viewBox=\"0 0 16 16\">\n  <path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/>\n  <path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\"/>\n</svg>`],\n  ['info', `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-info-circle\" viewBox=\"0 0 16 16\">\n  <path d=\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"/>\n  <path d=\"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z\"/>\n</svg>`],\n])\n\nexport function getSvgIncon(type: MessageType) {\n  return svgIncon.get(type)\n}\n"],"names":[],"mappings":"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"}