import {computed, type ComputedRef} from 'vue'; import {type AdminModalContext} from '../../types'; import {useModalStore} from '../../stores'; import {type AdminModalKey} from '../../data'; type UseModalElementContext = ( modalKey: K | undefined, ) => { context: ComputedRef; isOpen: ComputedRef; close: ReturnType['close']; }; // @ts-expect-error infinitely deep type instantiation export const useModalElementContext: UseModalElementContext = (modalKey) => { const modalStore = useModalStore(); const context = computed(() => (isOpen.value ? modalStore.context : null)); const isOpen = computed(() => modalKey && modalStore.opened === modalKey); return { close: modalStore.close, context, isOpen, }; };