{"version":3,"file":"minimize.mjs","sources":["../../../../../../packages/components/modal/src/minimize.ts"],"sourcesContent":["import { createVNode, render as vueRender, nextTick } from 'vue'\r\nimport { isClient } from '@vueuse/core'\r\nimport MinimizeBox from './minimize-box.vue'\r\n\r\nimport type { VNode } from 'vue'\r\n\r\ntype MinimizeQueueItem = {\r\n  props?: any\r\n  onRestore?: () => void\r\n  onClose?: () => void\r\n  onHide?: () => void\r\n}\r\n\r\ntype MinimizeQueue = MinimizeQueueItem[]\r\n\r\nlet instances: MinimizeQueue = []\r\n// let scrollWrap\r\n\r\n// const container = document.createElement('div')\r\nconst className = 'sg-modal-minimize-wrap'\r\n\r\nlet currentConfig = {\r\n  visible: false,\r\n  list: []\r\n}\r\n\r\nlet scrollWrap: VNode|null = null\r\n\r\nconst Wrapper = (props) => {\r\n  return createVNode(\r\n    'div',\r\n    {\r\n      class: [\r\n        className,\r\n      ],\r\n      style: {\r\n        display: props.visible ? null : 'none'\r\n      }\r\n    },\r\n    props.list.map((item) => {\r\n      const { id, title, closable } = item.props\r\n\r\n      return createVNode(\r\n        MinimizeBox,\r\n        {\r\n          title,\r\n          closable,\r\n          onRestore: () => {\r\n            hide(id)\r\n            item.onRestore && item.onRestore()\r\n          },\r\n          onClose: () => {\r\n            hide(id)\r\n            item.onClose && item.onClose()\r\n          }\r\n        }\r\n      )\r\n    })\r\n  )\r\n}\r\n\r\nfunction init() {\r\n  const container = document.createElement('div')\r\n  const appendTo: HTMLElement | null = document.body\r\n\r\n  if (appendTo.getElementsByClassName(className).length) {\r\n    return scrollWrap\r\n  }\r\n\r\n  const vnode = createVNode(Wrapper, { ...currentConfig })\r\n\r\n  vueRender(vnode, container)\r\n\r\n  appendTo.appendChild(container.firstElementChild!)\r\n\r\n  return vnode\r\n}\r\n\r\nfunction update(configUpdate) {\r\n  if (typeof configUpdate === 'function') {\r\n    currentConfig = configUpdate(currentConfig)\r\n  } else {\r\n    currentConfig = {\r\n      ...currentConfig,\r\n      ...configUpdate,\r\n    }\r\n  }\r\n\r\n  if (scrollWrap) {\r\n    nextTick(() => {\r\n      Object.assign(scrollWrap!.component!.props, currentConfig)\r\n      scrollWrap!.component!.update()\r\n    })\r\n  }\r\n}\r\n\r\nfunction hide(id) {\r\n  for (let i = 0; i < instances.length; i++) {\r\n    const item = instances[i]\r\n    if (item.props.id === id) {\r\n      item.onHide && item.onHide()\r\n      instances.splice(i, 1)\r\n      break\r\n    }\r\n  }\r\n\r\n  if (instances.length === 0) {\r\n    update({ list: [], visible: false })\r\n  } else {\r\n    update({ list: instances })\r\n  }\r\n}\r\n\r\n// function destroy() {\r\n//   if (scrollWrap) {\r\n//     vueRender(null, container)\r\n//     scrollWrap.component!.update()\r\n//     scrollWrap = null\r\n//   }\r\n// }\r\n\r\nif (isClient) {\r\n  scrollWrap = init()\r\n}\r\n\r\nexport function createMinimize(options) {\r\n  const { onRestore, onClose, onHide, ...props } = options\r\n\r\n  instances.push({ props, onRestore, onClose, onHide })\r\n\r\n  update({ list: instances, visible: true })\r\n}\r\n\r\nexport const removeMinimize = hide\r\n"],"names":["vueRender"],"mappings":"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"}