@react95/core
Version:
Windows 95 styleguide
40 lines (39 loc) • 1.19 kB
JavaScript
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
};