{text}
diff --git a/src/hooks/modals/contextMenu.js b/src/hooks/modals/contextMenu.js index 8fba7d8..aa8f11d 100644 --- a/src/hooks/modals/contextMenu.js +++ b/src/hooks/modals/contextMenu.js @@ -1,8 +1,8 @@ import { useCallback } from "react"; import Vector2 from "../../features/math/vector2.js"; import Modal from "../../features/modals/modal.js"; -import ModalsManager from "../../features/modals/modalsManager.js"; import { STYLES } from "../../components/actions/Actions.jsx"; +import { useModalsManager } from "./modalsManagerContext.js"; /** * @callback onContextMenuType @@ -13,14 +13,15 @@ import { STYLES } from "../../components/actions/Actions.jsx"; /** * @param {object} props - * @param {ModalsManager} props.modalsManager * @param {import("../../components/actions/Actions.jsx").actionsType} props.Actions * @returns {{ * onContextMenu: onContextMenuType, * ShortcutsListener: import("../../components/actions/Actions.jsx").actionsType * }} */ -export function useContextMenu({ modalsManager, Actions }) { +export function useContextMenu({ Actions }) { + const modalsManager = useModalsManager(); + // Open a new modal when context menu is triggered const onContextMenu = useCallback((event, params = {}) => { event.preventDefault(); diff --git a/src/hooks/modals/modals.js b/src/hooks/modals/modals.js deleted file mode 100644 index 4633b0e..0000000 --- a/src/hooks/modals/modals.js +++ /dev/null @@ -1,19 +0,0 @@ -import { useCallback, useState } from "react"; -import ModalsManager from "../../features/modals/modalsManager.js"; -import Modal from "../../features/modals/modal.js"; - -/** - * @returns {[ModalsManager, Modal[]]} - */ -export function useModals() { - const modalsManager = new ModalsManager(); - const [modals, setModals] = useState([]); - - const updateModals = useCallback((updatedModals) => { - setModals(Object.values(updatedModals)); - }, []); - - modalsManager.setUpdateModals(updateModals); - - return [modalsManager, modals]; -} \ No newline at end of file diff --git a/src/hooks/modals/modalsContext.js b/src/hooks/modals/modalsContext.js new file mode 100644 index 0000000..9d4d596 --- /dev/null +++ b/src/hooks/modals/modalsContext.js @@ -0,0 +1,33 @@ +import { createContext, useCallback, useContext, useState } from "react"; +import Modal from "../../features/modals/modal.js"; + +const ModalsContext = createContext(); + +/** + * @param props + * @param props.children + * @param props.modalsManager + * @returns {import("react").Provider