{"version":3,"file":"loading.mjs","sources":["../../../../../../packages/components/loading/src/loading.tsx"],"sourcesContent":["import type { StyleValue } from 'vue'\nimport {\n  createApp,\n  defineComponent,\n  Transition,\n  onMounted,\n  nextTick,\n  computed,\n  reactive,\n  onUnmounted,\n  ref\n} from 'vue'\nimport { getComponentNamespace, getNamespace } from '../../../utils/global-config'\nimport { BnIconLoading } from '../../icon'\nimport { getElement } from '../../../utils/dom'\nimport usePopupManager from '../../../hooks/use-popup-manager'\nimport { useOverflow } from '../../../hooks/use-overflow'\nimport type { LoadingOptions } from './type'\n\nconst getResolveOptions = (options: LoadingOptions) => {\n  const _options: LoadingOptions = {\n    background: options.background,\n    text: options.text || '',\n    color: options.color,\n    customClass: options.customClass,\n    renderTo: options.renderTo || document.body,\n    iconSize: options.iconSize || 16,\n    fullScreen: options.fullScreen\n  }\n\n  if (_options.fullScreen) {\n    _options.renderTo = document.body\n  }\n\n  return _options\n}\n\nexport const createLoadingComponent = (options: LoadingOptions) => {\n  const resolveOptions = getResolveOptions(options)\n\n  const mountEle = getElement(resolveOptions.renderTo)\n  const loadingRef = ref<HTMLElement>()\n  if (!mountEle) return\n\n  const data = reactive<Record<string, any>>({\n    ...resolveOptions,\n    visible: false\n  })\n\n  const { setOverflowHidden, resetOverflow } = useOverflow(ref(mountEle), loadingRef)\n\n  const destroy = () => {\n    resetOverflow()\n    vm.$el?.parentNode.removeChild(vm.$el)\n    app.unmount()\n  }\n\n  const LoadingComponent = defineComponent({\n    name: getComponentNamespace('Loading'),\n    setup() {\n      const ns = getNamespace('loading')\n      onMounted(() => {\n        data.visible = true\n      })\n\n      const { zIndex } = usePopupManager('message', { runOnMounted: true })\n\n      onUnmounted(() => {\n        data.visible = false\n      })\n      const cls = computed(() => [`${ns}__mask`, data.customClass && data.customClass])\n\n      const style = computed(() => {\n        const style: StyleValue = {\n          color: data.color ? data.color : `var(--bn-primary)`,\n          background: data.background,\n          zIndex: zIndex.value,\n          position: data.fullScreen ? 'fixed' : 'absolute'\n        }\n        return style\n      })\n\n      return () => (\n        <Transition name=\"bn-fade-in\" onAfterLeave={destroy}>\n          {data.visible && (\n            <div class={cls.value} style={style.value} ref={loadingRef}>\n              <div class={[`${ns}__spinner`]}>\n                <BnIconLoading size={data.iconSize} />\n              </div>\n              {data.text && <div class={[`${ns}__text`]}>{data.text}</div>}\n            </div>\n          )}\n        </Transition>\n      )\n    }\n  })\n\n  const app = createApp(LoadingComponent)\n  const vm = app.mount(document.createElement('div'))\n\n  const cancelLoading = () => {\n    data.visible = false\n  }\n\n  const appendLoading = () => {\n    setOverflowHidden()\n    nextTick(() => {\n      mountEle.appendChild(vm.$el)\n    })\n  }\n\n  const updateText = (text: string) => {\n    data.text = text\n  }\n\n  return {\n    cancelLoading,\n    appendLoading,\n    updateText\n  }\n}\n"],"names":["getResolveOptions","options","_options","background","text","color","customClass","renderTo","document","body","iconSize","fullScreen","createLoadingComponent","resolveOptions","mountEle","getElement","loadingRef","ref","data","reactive","visible","setOverflowHidden","resetOverflow","useOverflow","destroy","vm","$el","parentNode","removeChild","app","unmount","LoadingComponent","name","getComponentNamespace","setup","ns","getNamespace","onMounted","zIndex","usePopupManager","runOnMounted","onUnmounted","cls","computed","style","value","position","_createVNode","Transition","default","BnIconLoading","createApp","mount","createElement","cancelLoading","appendLoading","nextTick","appendChild","updateText"],"mappings":"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"}