{"version":3,"file":"useModal2.mjs","sources":["../../../../../../../../packages/components/modal/src/hooks/useModal.ts"],"sourcesContent":["import {\n  computed,\n  getCurrentInstance,\n  nextTick,\n  onUnmounted,\n  reactive,\n  ref,\n  toRaw,\n  unref,\n  watchEffect,\n} from 'vue'\nimport { tryOnUnmounted } from '@vueuse/core'\nimport { isEqual } from 'lodash-es'\nimport { isFunction } from '@tav-ui/utils/is'\nimport { error } from '@tav-ui/utils/log'\nimport type {\n  Fn,\n  ModalMethods,\n  ModalProps,\n  ModalReturnMethods,\n  Nullable,\n  UseModalInnerReturnType,\n  UseModalReturnType,\n} from '../types'\n\nconst dataTransfer = reactive<any>({})\nconst isProdMode = () => true\n\nconst visibleData = reactive<Record<number, boolean>>({})\n\n/**\n * @description: Applicable to independent modal and call outside\n */\nexport function useModal(): UseModalReturnType {\n  const modal = ref<Nullable<ModalMethods>>(null)\n  const loaded = ref<Nullable<boolean>>(false)\n  const uid = ref<string>('')\n\n  function register(modalMethod: ModalMethods, uuid?: string) {\n    if (!getCurrentInstance())\n      throw new Error('useModal() can only be used inside setup() or functional components!')\n\n    uid.value = uuid!\n    isProdMode() &&\n      onUnmounted(() => {\n        modal.value = null\n        loaded.value = false\n        dataTransfer[unref(uid)] = null\n      })\n    if (unref(loaded) && isProdMode() && modalMethod === unref(modal)) return\n\n    modal.value = modalMethod\n    loaded.value = true\n    modalMethod.emitVisible = (visible: boolean, uid: number) => {\n      visibleData[uid] = visible\n    }\n  }\n\n  const getInstance = () => {\n    const instance = unref(modal)\n    if (!instance) error('useModal instance is undefined!')\n\n    return instance\n  }\n\n  const methods: ModalReturnMethods = {\n    setModalProps: (props: Partial<ModalProps>): void => {\n      getInstance()?.setModalProps(props)\n    },\n\n    getVisible: computed((): boolean => {\n      return visibleData[~~unref(uid)]\n    }),\n\n    redoModalHeight: () => {\n      getInstance()?.redoModalHeight?.()\n    },\n\n    redoThumbHeight: () => {\n      getInstance()?.redoThumbHeight?.()\n    },\n\n    openModal: <T = any>(visible = true, data?: T, openOnSet = true): void => {\n      getInstance()?.setModalProps({\n        visible,\n      })\n\n      if (!data) return\n      const id = unref(uid)\n      if (openOnSet) {\n        dataTransfer[id] = null\n        dataTransfer[id] = toRaw(data)\n        return\n      }\n      const equal = isEqual(toRaw(dataTransfer[id]), toRaw(data))\n      if (!equal) dataTransfer[id] = toRaw(data)\n    },\n\n    closeModal: () => {\n      getInstance()?.setModalProps({ visible: false })\n    },\n  }\n  return [register, methods]\n}\n\nexport const useModalInner = (callbackFn?: Fn): UseModalInnerReturnType => {\n  const modalInstanceRef = ref<Nullable<ModalMethods>>(null)\n  const currentInstance = getCurrentInstance()\n  const uidRef = ref<string>('')\n\n  const getInstance = () => {\n    const instance = unref(modalInstanceRef)\n    if (!instance) error('useModalInner instance is undefined!')\n\n    return instance\n  }\n\n  const register = (modalInstance: ModalMethods, uuid?: string) => {\n    isProdMode() &&\n      tryOnUnmounted(() => {\n        modalInstanceRef.value = null\n      })\n    uidRef.value = uuid!\n    modalInstanceRef.value = modalInstance\n    currentInstance?.emit('register', modalInstance, uuid)\n  }\n\n  watchEffect(() => {\n    const data = dataTransfer[unref(uidRef)]\n    if (!data) return\n    if (!callbackFn || !isFunction(callbackFn)) return\n    nextTick(() => {\n      callbackFn(data)\n    })\n  })\n\n  return [\n    register,\n    {\n      changeLoading: (loading = true) => {\n        getInstance()?.setModalProps({ loading })\n      },\n      getVisible: computed((): boolean => {\n        return visibleData[~~unref(uidRef)]\n      }),\n\n      changeOkLoading: (loading = true) => {\n        getInstance()?.setModalProps({ confirmLoading: loading })\n      },\n\n      closeModal: () => {\n        getInstance()?.setModalProps({ visible: false })\n      },\n\n      setModalProps: (props: Partial<ModalProps>) => {\n        getInstance()?.setModalProps(props)\n      },\n\n      redoModalHeight: () => {\n        const callRedo = getInstance()?.redoModalHeight\n        callRedo && callRedo()\n      },\n\n      redoThumbHeight() {\n        getInstance()?.redoThumbHeight?.()\n      },\n    },\n  ]\n}\n"],"names":[],"mappings":"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"}