UNPKG

@react95/core

Version:
40 lines (39 loc) 1.19 kB
import { useCallback } from "react"; import { modals } from "./modal-controller.mjs"; import { ModalEvents } from "./modal-types.mjs"; const useModal = () => { const add = useCallback((modal) => { modals.emit(ModalEvents.AddModal, modal); }, []); const remove = useCallback((id) => { modals.emit(ModalEvents.RemoveModal, { id }); }, []); const minimize = useCallback((id) => { modals.emit(ModalEvents.MinimizeModal, { id }); }, []); const restore = useCallback((id) => { modals.emit(ModalEvents.RestoreModal, { id }); }, []); const focus = useCallback((id) => { modals.emit(ModalEvents.ModalVisibilityChanged, { id }); }, []); const toggle = useCallback((id, isActive) => { if (isActive) { modals.emit(ModalEvents.MinimizeModal, { id }); } else { modals.emit(ModalEvents.RestoreModal, { id }); modals.emit(ModalEvents.ModalVisibilityChanged, { id }); } }, []); const subscribe = useCallback( (event, callback) => { modals.on(event, callback); return () => modals.off(event, callback); }, [] ); return { add, remove, minimize, restore, focus, toggle, subscribe }; }; export { useModal };