tav-ui
Version:
1 lines • 8.61 kB
Source Map (JSON)
{"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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"}