{"version":3,"file":"useDrawer2.mjs","sources":["../../../../../../../packages/components/drawer/src/useDrawer.ts"],"sourcesContent":["import {\n  computed,\n  getCurrentInstance,\n  nextTick,\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 { buildUUID } from '@tav-ui/utils/uuid'\nimport type {\n  DrawerInstance,\n  DrawerProps,\n  DrawerReturnMethods,\n  UseDrawerInnerReturnType,\n  UseDrawerReturnType,\n} from './typing'\n\ntype Nullable<T> = T | null\n\nconst isProdMode = () => true\n\nconst dataTransferRef = reactive<any>({})\n\nconst visibleData = reactive<{ [key: number]: boolean }>({})\n\n/**\n * @description: Applicable to separate drawer and call outside\n */\nexport function useDrawer(): UseDrawerReturnType {\n  if (!getCurrentInstance()) {\n    throw new Error('useDrawer() can only be used inside setup() or functional components!')\n  }\n  const drawer = ref<DrawerInstance | null>(null)\n  const loaded = ref<Nullable<boolean>>(false)\n  const uid = ref<string>('')\n\n  function register(drawerInstance: DrawerInstance, uuid?: string) {\n    isProdMode() &&\n      tryOnUnmounted(() => {\n        drawer.value = null\n        loaded.value = null\n        dataTransferRef[unref(uid)] = null\n      })\n\n    if (unref(loaded) && isProdMode() && drawerInstance === unref(drawer)) {\n      return\n    }\n    uid.value = uuid ?? buildUUID()\n    drawer.value = drawerInstance\n    loaded.value = true\n\n    drawerInstance.emitVisible = (visible: boolean, uid: number) => {\n      visibleData[uid] = visible\n    }\n  }\n\n  const getInstance = () => {\n    const instance = unref(drawer)\n    if (!instance) {\n      error('useDrawer instance is undefined!')\n    }\n    return instance\n  }\n\n  const methods: DrawerReturnMethods = {\n    setDrawerProps: (props: Partial<DrawerProps>): void => {\n      getInstance()?.setDrawerProps(props)\n    },\n\n    getVisible: computed((): boolean => {\n      return visibleData[~~unref(uid)]\n    }),\n\n    openDrawer: <T = any>(visible = true, data?: T, openOnSet = true): void => {\n      getInstance()?.setDrawerProps({\n        visible,\n      })\n      if (!data) return\n\n      if (openOnSet) {\n        dataTransferRef[unref(uid)] = null\n        dataTransferRef[unref(uid)] = toRaw(data)\n        return\n      }\n      const equal = isEqual(toRaw(dataTransferRef[unref(uid)]), toRaw(data))\n      if (!equal) {\n        dataTransferRef[unref(uid)] = toRaw(data)\n      }\n    },\n    closeDrawer: () => {\n      getInstance()?.setDrawerProps({ visible: false })\n    },\n  }\n\n  return [register, methods]\n}\n\nexport const useDrawerInner = (callbackFn?: (...arg: any[]) => any): UseDrawerInnerReturnType => {\n  const drawerInstanceRef = ref<Nullable<DrawerInstance>>(null)\n  const currentInstance = getCurrentInstance()\n  const uidRef = ref<string>('')\n\n  if (!getCurrentInstance()) {\n    throw new Error('useDrawerInner() can only be used inside setup() or functional components!')\n  }\n\n  const getInstance = () => {\n    const instance = unref(drawerInstanceRef)\n    if (!instance) {\n      error('useDrawerInner instance is undefined!')\n      return\n    }\n    return instance\n  }\n\n  const register = (modalInstance: DrawerInstance, uuid?: string) => {\n    isProdMode() &&\n      tryOnUnmounted(() => {\n        drawerInstanceRef.value = null\n      })\n\n    uidRef.value = uuid ?? buildUUID()\n    drawerInstanceRef.value = modalInstance\n    currentInstance?.emit('register', modalInstance, uuid)\n  }\n\n  watchEffect(() => {\n    const data = dataTransferRef[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()?.setDrawerProps({ loading })\n      },\n\n      changeOkLoading: (loading = true) => {\n        getInstance()?.setDrawerProps({ confirmLoading: loading })\n      },\n      getVisible: computed((): boolean => {\n        return visibleData[~~unref(uidRef)]\n      }),\n\n      closeDrawer: () => {\n        getInstance()?.setDrawerProps({ visible: false })\n      },\n\n      setDrawerProps: (props: Partial<DrawerProps>) => {\n        getInstance()?.setDrawerProps(props)\n      },\n    },\n  ]\n}\n"],"names":[],"mappings":"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"}