import React from "react"; import { Flex } from "theme-ui"; import { useMedia } from "react-media"; import RadioIconButton from "../../RadioIconButton"; import EdgeSnappingToggle from "./EdgeSnappingToggle"; import FogPreviewToggle from "./FogPreviewToggle"; import FogCutToggle from "./FogCutToggle"; import FogBrushIcon from "../../../icons/FogBrushIcon"; import FogPolygonIcon from "../../../icons/FogPolygonIcon"; import FogRemoveIcon from "../../../icons/FogRemoveIcon"; import FogToggleIcon from "../../../icons/FogToggleIcon"; import FogRectangleIcon from "../../../icons/FogRectangleIcon"; import UndoButton from "./UndoButton"; import RedoButton from "./RedoButton"; import ToolSection from "./ToolSection"; import Divider from "../../Divider"; import { useKeyboard } from "../../../contexts/KeyboardContext"; function BrushToolSettings({ settings, onSettingChange, onToolAction, disabledActions, }) { // Keyboard shortcuts function handleKeyDown({ key, ctrlKey, metaKey, shiftKey }) { if (key === "Alt") { onSettingChange({ useFogCut: !settings.useFogCut }); } else if (key === "p") { onSettingChange({ type: "polygon" }); } else if (key === "b") { onSettingChange({ type: "brush" }); } else if (key === "t") { onSettingChange({ type: "toggle" }); } else if (key === "e") { onSettingChange({ type: "remove" }); } else if (key === "s") { onSettingChange({ useEdgeSnapping: !settings.useEdgeSnapping }); } else if (key === "f") { onSettingChange({ preview: !settings.preview }); } else if (key === "c") { onSettingChange({ useFogCut: !settings.useFogCut }); } else if (key === "r") { onSettingChange({ type: "rectangle" }); } else if ( (key === "z" || key === "Z") && (ctrlKey || metaKey) && shiftKey && !disabledActions.includes("redo") ) { onToolAction("fogRedo"); } else if ( key === "z" && (ctrlKey || metaKey) && !shiftKey && !disabledActions.includes("undo") ) { onToolAction("fogUndo"); } } function handleKeyUp({ key }) { if (key === "Alt") { onSettingChange({ useFogCut: !settings.useFogCut }); } } useKeyboard(handleKeyDown, handleKeyUp); const isSmallScreen = useMedia({ query: "(max-width: 799px)" }); const drawTools = [ { id: "polygon", title: "Fog Polygon (P)", isSelected: settings.type === "polygon", icon: , disabled: settings.preview, }, { id: "rectangle", title: "Fog Rectangle (R)", isSelected: settings.type === "rectangle", icon: , disabled: settings.preview, }, { id: "brush", title: "Fog Brush (B)", isSelected: settings.type === "brush", icon: , disabled: settings.preview, }, ]; return ( onSettingChange({ type: tool.id })} collapse={isSmallScreen} /> onSettingChange({ type: "toggle" })} isSelected={settings.type === "toggle"} disabled={settings.preview} > onSettingChange({ type: "remove" })} isSelected={settings.type === "remove"} disabled={settings.preview} > onSettingChange({ useFogCut })} disabled={settings.preview} /> onSettingChange({ useEdgeSnapping }) } disabled={settings.preview} /> onSettingChange({ preview })} /> onToolAction("fogUndo")} disabled={disabledActions.includes("undo")} /> onToolAction("fogRedo")} disabled={disabledActions.includes("redo")} /> ); } export default BrushToolSettings;