import { Box, Flex, IconButton } from "@chakra-ui/react"; import { Trans } from "@lingui/macro"; import ColorPicker from "components/common/ColorPicker"; import { useMyTheme } from "lib/useMyTheme"; import { useState } from "react"; import Draggable from "react-draggable"; import { useHotkeys } from "react-hotkeys-hook"; import { AiOutlineLine } from "react-icons/ai"; import { FaFont, FaPencilAlt, FaRedo, FaRegCircle, FaRegObjectGroup, FaRegSquare, FaTrashAlt, FaUndo, } from "react-icons/fa"; import { Tool } from "."; interface DraggableToolsSelectorProps { tool: Tool; setTool: React.Dispatch; redo: () => void; redoIsDisabled: boolean; undo: () => void; undoIsDisabled: boolean; removeSelected: () => void; addText: () => void; color: string; setColor: (newColor: string) => void; } const DraggableToolsSelector: React.FC = ({ tool, setTool, redo, redoIsDisabled, undo, undoIsDisabled, removeSelected, addText, color, setColor, }) => { const { bgColor } = useMyTheme(); const [activeDrags, setActiveDrags] = useState(0); useHotkeys("p", () => setTool("pencil")); useHotkeys("l", () => setTool("line")); useHotkeys("r", () => setTool("rectangle")); useHotkeys("c", () => setTool("circle")); useHotkeys("s", () => setTool("select")); const onStart = () => { setActiveDrags(activeDrags + 1); }; const onStop = () => { setActiveDrags(activeDrags - 1); }; return ( Tools setTool("pencil")} variant="ghost" size="lg" aria-label="Pencil (P)" icon={} border={tool === "pencil" ? "2px solid" : undefined} borderColor={bgColor} title="Pencil (P)" /> setTool("line")} variant="ghost" size="lg" aria-label="Line (L)" icon={} border={tool === "line" ? "2px solid" : undefined} borderColor={bgColor} title="Line (L)" /> setTool("rectangle")} variant="ghost" size="lg" aria-label="Rectangle (R)" icon={} border={tool === "rectangle" ? "2px solid" : undefined} borderColor={bgColor} title="Rectangle (R)" /> setTool("circle")} variant="ghost" size="lg" aria-label="Circle (C)" icon={} border={tool === "circle" ? "2px solid" : undefined} borderColor={bgColor} title="Circle (C)" /> setTool("select")} variant="ghost" size="lg" aria-label="Select (S)" icon={} border={tool === "select" ? "2px solid" : undefined} borderColor={bgColor} title="Select (S)" /> removeSelected()} isDisabled={tool !== "select"} variant="ghost" size="lg" aria-label="Delete selected" icon={} title="Delete selected" /> undo()} isDisabled={undoIsDisabled} variant="ghost" size="lg" aria-label="Undo" icon={} title="Undo" /> redo()} isDisabled={redoIsDisabled} variant="ghost" size="lg" aria-label="Redo" icon={} title="Redo" /> addText()} variant="ghost" size="lg" aria-label="Add text" icon={} title="Add text" /> setColor(color)} /> ); }; export default DraggableToolsSelector;