diff --git a/src/components/Canvas.tsx b/src/components/Canvas.tsx index 7af64c7..dc94459 100644 --- a/src/components/Canvas.tsx +++ b/src/components/Canvas.tsx @@ -9,10 +9,10 @@ import { ToolContext } from "@/context/ToolContext"; import Blocks from "./Blocks"; import Grid from "./Grid"; +import CanvasBorder from "./CanvasBorder"; import Cursor from "./Cursor"; import CursorInformation from "./information/Cursor"; import CanvasInformation from "./information/Canvas"; -import CanvasBorder from "./CanvasBorder"; import welcomeBlocksData from "@/data/welcome.json"; @@ -23,7 +23,7 @@ function Canvas() { const { image, imageDimensions } = useContext(ImageContext); const { settings } = useContext(SettingsContext); const textures = useContext(TexturesContext); - const { tool, selectedBlock } = useContext(ToolContext); + const { tool, selectedBlock, cssCursor, setTool, setCssCursor } = useContext(ToolContext); const stageContainerRef = useRef(null); const [stageSize, setStageSize] = useState({ width: 0, height: 0 }); @@ -114,10 +114,12 @@ function Canvas() { const onMouseDown = useCallback(() => { setDragging(true); onToolUse(); - }, [onToolUse]); + setCssCursor(tool === "hand" ? "grabbing" : ""); + }, [onToolUse, tool, setCssCursor]); const onMouseUp = () => { setDragging(false); + setCssCursor(tool === "hand" ? "grab" : ""); }; const onWheel = useCallback( @@ -154,7 +156,7 @@ function Canvas() { }, []); return ( -
+
{}, setSelectedBlock: (block: string) => {}, + setCssCursor: (cursor: string) => {}, }); export const ToolProvider = ({ children }: Props) => { const [tool, setTool] = useState("hand"); const [selectedBlock, setSelectedBlock] = useState("stone"); + const [cssCursor, setCssCursor] = useState("pointer"); - return {children}; + useEffect(() => { + setCssCursor(tool === "hand" ? "grab" : "pointer"); + }, [tool]); + + return {children}; };