UNPKG

tav-ui

Version:
1 lines 8.72 kB
{"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":";;;;;;AAeA,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AAC9B,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1B,SAAS,QAAQ,GAAG;AAC3B,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,SAAS,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC7B,MAAM,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;AAC9F,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,UAAU,EAAE,IAAI,WAAW,CAAC,MAAM;AACtC,MAAM,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACzB,MAAM,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,IAAI,WAAW,KAAK,KAAK,CAAC,KAAK,CAAC;AACrE,MAAM,OAAO;AACb,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC;AAC9B,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,IAAI,WAAW,CAAC,WAAW,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK;AACjD,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AAClC,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,QAAQ;AACjB,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;AAC/C,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG,CAAC;AACJ,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,aAAa,EAAE,CAAC,KAAK,KAAK;AAC9B,MAAM,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,UAAU,EAAE,QAAQ,CAAC,MAAM;AAC/B,MAAM,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC;AACN,IAAI,eAAe,EAAE,MAAM;AAC3B,MAAM,WAAW,EAAE,EAAE,eAAe,IAAI,CAAC;AACzC,KAAK;AACL,IAAI,eAAe,EAAE,MAAM;AAC3B,MAAM,WAAW,EAAE,EAAE,eAAe,IAAI,CAAC;AACzC,KAAK;AACL,IAAI,SAAS,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK;AAC3D,MAAM,WAAW,EAAE,EAAE,aAAa,CAAC;AACnC,QAAQ,OAAO;AACf,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,OAAO;AACf,MAAM,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAChC,QAAQ,YAAY,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,MAAM,IAAI,CAAC,KAAK;AAChB,QAAQ,YAAY,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,UAAU,EAAE,MAAM;AACtB,MAAM,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AACW,MAAC,aAAa,GAAG,CAAC,UAAU,KAAK;AAC7C,EAAE,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;AAC/C,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACzB,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,QAAQ;AACjB,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACpD,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,CAAC,aAAa,EAAE,IAAI,KAAK;AAC5C,IAAI,UAAU,EAAE,IAAI,cAAc,CAAC,MAAM;AACzC,MAAM,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,IAAI,gBAAgB,CAAC,KAAK,GAAG,aAAa,CAAC;AAC3C,IAAI,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AAC3D,GAAG,CAAC;AACJ,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI;AACb,MAAM,OAAO;AACb,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC9C,MAAM,OAAO;AACb,IAAI,QAAQ,CAAC,MAAM;AACnB,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,EAAE,OAAO;AACT,IAAI,QAAQ;AACZ,IAAI;AACJ,MAAM,aAAa,EAAE,CAAC,OAAO,GAAG,IAAI,KAAK;AACzC,QAAQ,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAClD,OAAO;AACP,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM;AACjC,QAAQ,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,OAAO,CAAC;AACR,MAAM,eAAe,EAAE,CAAC,OAAO,GAAG,IAAI,KAAK;AAC3C,QAAQ,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;AAClE,OAAO;AACP,MAAM,UAAU,EAAE,MAAM;AACxB,QAAQ,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,OAAO;AACP,MAAM,aAAa,EAAE,CAAC,KAAK,KAAK;AAChC,QAAQ,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,OAAO;AACP,MAAM,eAAe,EAAE,MAAM;AAC7B,QAAQ,MAAM,QAAQ,GAAG,WAAW,EAAE,EAAE,eAAe,CAAC;AACxD,QAAQ,QAAQ,IAAI,QAAQ,EAAE,CAAC;AAC/B,OAAO;AACP,MAAM,eAAe,GAAG;AACxB,QAAQ,WAAW,EAAE,EAAE,eAAe,IAAI,CAAC;AAC3C,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}