import React, {useState, useRef, createContext, ReactNode} from 'react'; import {ModalManager, ModalRef} from '@core0/modal'; import {PopoverManager, PopoverRef} from '@core0/popover'; import {PortalManager} from './portal-manager'; import {SnackbarManager, SnackbarRef, Snackbar} from '@core0/snackbar'; interface PortalProps { children: ReactNode; } export const PortalContext = createContext(null); export const PortalContextProvider = (props: PortalProps) => { const {children} = props; const [modalRefList, setModalRefList] = useState([]); const [popoverRefList, setPopoverRefList] = useState([]); const [snackbarRefList, setSnackbarRefList] = useState([]); const portalManager = useRef({ modalManager: new ModalManager(modalRefList, setModalRefList), popoverManager: new PopoverManager(popoverRefList, setPopoverRefList), snackbarManager: new SnackbarManager(snackbarRefList, setSnackbarRefList) }); return ( {children} {/* Modal */} {modalRefList.map((elm) => ( ))} {/* Popover */} {popoverRefList.map((elm) => ( ))} {/* Snackbar */} ); };