11import { useCallback , useEffect } from 'react' ;
2- import { useDialogManager } from '../../../context' ;
2+ import { modalDialogManagerId , useDialogManager } from '../../../context' ;
33import { useStateStore } from '../../../store' ;
44
55import type { DialogManagerState , GetOrCreateDialogParams } from '../DialogManager' ;
66
7- export const useDialog = ( { id } : GetOrCreateDialogParams ) => {
8- const { dialogManager } = useDialogManager ( ) ;
7+ export type UseDialogParams = GetOrCreateDialogParams & {
8+ dialogManagerId ?: string ;
9+ } ;
10+
11+ export const useDialog = ( { dialogManagerId, id } : UseDialogParams ) => {
12+ const { dialogManager } = useDialogManager ( { dialogManagerId } ) ;
913
1014 useEffect (
1115 ( ) => ( ) => {
@@ -21,15 +25,23 @@ export const useDialog = ({ id }: GetOrCreateDialogParams) => {
2125 return dialogManager . getOrCreate ( { id } ) ;
2226} ;
2327
24- export const useDialogIsOpen = ( id : string ) => {
25- const { dialogManager } = useDialogManager ( ) ;
28+ export const modalDialogId = 'modal-dialog' as const ;
29+
30+ export const useModalDialog = ( ) =>
31+ useDialog ( { dialogManagerId : modalDialogManagerId , id : modalDialogId } ) ;
32+
33+ export const useDialogIsOpen = ( id : string , dialogManagerId ?: string ) => {
34+ const { dialogManager } = useDialogManager ( { dialogManagerId } ) ;
2635 const dialogIsOpenSelector = useCallback (
2736 ( { dialogsById } : DialogManagerState ) => ( { isOpen : ! ! dialogsById [ id ] ?. isOpen } ) ,
2837 [ id ] ,
2938 ) ;
3039 return useStateStore ( dialogManager . state , dialogIsOpenSelector ) . isOpen ;
3140} ;
3241
42+ export const useModalDialogIsOpen = ( ) =>
43+ useDialogIsOpen ( modalDialogId , modalDialogManagerId ) ;
44+
3345const openedDialogCountSelector = ( nextValue : DialogManagerState ) => ( {
3446 openedDialogCount : Object . values ( nextValue . dialogsById ) . reduce ( ( count , dialog ) => {
3547 if ( dialog . isOpen ) return count + 1 ;
0 commit comments