{"version":3,"file":"notification.mjs","sources":["../../../../../../packages/components/notification/src/notification.ts"],"sourcesContent":["import { createVNode, isVNode, render } from 'vue'\nimport type { VNode } from 'vue'\nimport { getElement } from '../../../utils/dom'\nimport { isFunction } from '../../../utils/is'\nimport type { NotificationOptions } from './types'\nimport _Notification from './notification.vue'\n\nconst domMap = new WeakMap()\n\nconst Notification = (options: NotificationOptions) => {\n  const renderTo = getElement(options.renderTo || 'body') as HTMLElement\n  const container = document.createElement('div')\n\n  if (!domMap.get(renderTo)) {\n    domMap.set(renderTo, {})\n  }\n\n  if (!domMap.get(renderTo)[options.position!]) {\n    domMap.get(renderTo)[options.position!] = []\n  }\n  const instances: VNode[] = domMap.get(renderTo)[options.position!]\n\n  let offset = options.offset || 20\n  instances.forEach((vm: VNode) => {\n    offset += vm.el?.offsetHeight + 20\n  })\n\n  const renderToBody = renderTo.tagName === 'BODY'\n\n  if (!renderToBody) {\n    renderTo.style.position = 'relative'\n    renderTo.style.overflowX = 'hidden'\n  }\n\n  const userClose = options.onClose\n\n  const onClose = () => {\n    const index = instances.findIndex((_vm: VNode) => _vm === vm)\n    if (index < 0) return\n    const closingInstanceOffset = vm.el?.offsetHeight + 20\n    instances.slice(index + 1).forEach((_vm: VNode) => {\n      const top = _vm.component?.props.offset as number\n      _vm.component!.props.offset = top - closingInstanceOffset\n    })\n    instances.splice(index, 1)\n\n    userClose && userClose(vm)\n  }\n\n  const onDestroy = () => {\n    render(null, container)\n  }\n\n  const vm = createVNode(\n    _Notification,\n    {\n      message: options.message,\n      title: options.title,\n      type: options.type,\n      offset,\n      renderToBody,\n      position: options.position,\n      duration: options.duration ?? 3000,\n      showClose: options.showClose ?? true,\n      onClose,\n      onDestroy\n    },\n    isFunction(options.message) || isVNode(options.message)\n      ? {\n          default: isFunction(options.message) ? options.message : () => options.message\n        }\n      : null\n  )\n\n  render(vm, container)\n\n  instances.push(vm)\n\n  renderTo?.appendChild(container.firstChild!)\n}\n\nexport default Notification\n"],"names":["vm","_a"],"mappings":"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"}