UNPKG

nitropage

Version:

A free and open source, extensible visual page builder based on SolidStart.

28 lines (26 loc) 979 B
import { useContext } from "solid-js"; import { EditorUiState } from "../../../../types"; import { EditorUiContext } from "../../../lib/context/admin"; import { StateContext } from "../../../lib/context/page"; import { makeCancelElementCreation } from "./element/makeCancelElementCreation"; export const makeViewportToolToggle = ({ stateContext = useContext(StateContext), editorUiContext = useContext(EditorUiContext), } = {}) => { const [editorUi, setEditorUi] = editorUiContext!; const cancelElementCreation = makeCancelElementCreation({ stateContext, editorUiContext, }); return (mode: EditorUiState["viewport"]["tool"]) => { if (editorUi.movingElementId) return; cancelElementCreation(); setEditorUi((d) => { const nextMode = d.viewport.tool !== mode ? mode : "idle"; if (!["selecting", "moving", "deleting"].includes(nextMode)) { d.hoveredElementId = undefined; } d.viewport.tool = nextMode; }); }; };