{"version":3,"file":"createLoading.mjs","sources":["../../../../../../packages/components/loading/src/createLoading.ts"],"sourcesContent":["import {\r\n  reactive,\r\n  ref,\r\n  toRefs,\r\n  h,\r\n  createVNode,\r\n  render\r\n} from 'vue'\r\nimport { removeClass } from '@sgui-plus/utils/dom'\r\nimport loadingVue from './loading.vue'\r\nimport type { LoadingOptionsResolved, LoadingParentElement } from './types'\r\n\r\nexport function createLoadingComponent(options: LoadingOptionsResolved) {\r\n  let afterLeaveTimer: number\r\n\r\n  const afterLeaveFlag = ref(false)\r\n  const data = reactive({\r\n    ...options,\r\n    originalPosition: '',\r\n    originalOverflow: '',\r\n    onAfterLeave: handleAfterLeave\r\n  })\r\n\r\n  const container = document.createElement('div')\r\n\r\n  function setText(text: string) {\r\n    data.text = text\r\n  }\r\n\r\n  function destroySelf() {\r\n    const target = <LoadingParentElement>data.parentEl\r\n    if (!target.vLoadingAddClassList) {\r\n      let loadingNumber: number | string | null = target.getAttribute('loading-number')\r\n      loadingNumber = Number.parseInt(loadingNumber as any) - 1\r\n      if (!loadingNumber) {\r\n        removeClass(target, 'sg-loading-parent--relative')\r\n        target.removeAttribute('loading-number')\r\n      } else {\r\n        target.setAttribute('loading-number', loadingNumber.toString())\r\n      }\r\n      removeClass(target, 'sg-loading-parent--hidden')\r\n    }\r\n    remvoeElLoadingChild()\r\n    render(null, container)\r\n  }\r\n\r\n  function remvoeElLoadingChild(): void {\r\n    vm.el?.parentNode?.removeChild(vm.el)\r\n  }\r\n\r\n  function close() {\r\n    if (options.beforeClose && !options.beforeClose()) return\r\n\r\n    const target = data.parentEl\r\n    target.vLoadingAddClassList = undefined\r\n    afterLeaveFlag.value = true\r\n    clearTimeout(afterLeaveTimer)\r\n\r\n    afterLeaveTimer = window.setTimeout(() => {\r\n      if (afterLeaveFlag.value) {\r\n        afterLeaveFlag.value = false\r\n        destroySelf()\r\n      }\r\n    }, 400)\r\n    data.visible = false\r\n\r\n    options.closed?.()\r\n  }\r\n\r\n  function hide() {\r\n    close()\r\n  }\r\n\r\n  function handleAfterLeave() {\r\n    if (!afterLeaveFlag.value) return\r\n    afterLeaveFlag.value = false\r\n    destroySelf()\r\n  }\r\n\r\n  const vm = createVNode(loadingVue, { ...data}, data.render ? { default: () => typeof data.render === 'function' ? data.render(h) : '加载中' } : null)\r\n  render(vm, container)\r\n\r\n  return {\r\n    ...toRefs(data),\r\n    setText,\r\n    remvoeElLoadingChild,\r\n    hide,\r\n    close,\r\n    handleAfterLeave,\r\n    vm,\r\n    get $el() {\r\n      return vm.el as HTMLElement\r\n    },\r\n  }\r\n}\r\n\r\nexport type LoadingInstance = ReturnType<typeof createLoadingComponent>\r\n"],"names":["loadingVue"],"mappings":"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"}