diff --git a/editor/src/Canvas.tsx b/editor/src/Canvas.tsx index 5fe1a3d..698ac13 100644 --- a/editor/src/Canvas.tsx +++ b/editor/src/Canvas.tsx @@ -27,30 +27,30 @@ function Canvas({ editor, canvasRef, width, height }: Props): ReactElement { tabIndex={0} onMouseDown={(ev) => { const pos = v2(ev.nativeEvent.offsetX, ev.nativeEvent.offsetY); - editor.mouseDown(pos); + editor.events.send({ tag: "MouseDown", pos }); editor.renderIfNeeded(ev.target as HTMLCanvasElement); }} onMouseUp={(ev) => { const pos = v2(ev.nativeEvent.offsetX, ev.nativeEvent.offsetY); - editor.mouseUp(pos); + editor.events.send({ tag: "MouseUp", pos }); editor.renderIfNeeded(ev.target as HTMLCanvasElement); }} onMouseMove={(ev) => { const deltaPos = v2(ev.movementX, ev.movementY); const pos = v2(ev.nativeEvent.offsetX, ev.nativeEvent.offsetY); - editor.mouseMove(deltaPos, pos); + editor.events.send({ tag: "MouseMove", pos, deltaPos }); editor.renderIfNeeded(ev.target as HTMLCanvasElement); }} onMouseLeave={(ev) => { - editor.mouseLeave(); + editor.events.send({ tag: "MouseLeave" }); editor.renderIfNeeded(ev.target as HTMLCanvasElement); }} onKeyDown={(ev) => { - editor.keyDown(ev.key); + editor.events.send({ tag: "KeyDown", key: ev.key }); editor.renderIfNeeded(ev.target as HTMLCanvasElement); }} onKeyUp={(ev) => { - editor.keyUp(ev.key); + editor.events.send({ tag: "KeyUp", key: ev.key }); editor.renderIfNeeded(ev.target as HTMLCanvasElement); }} /> diff --git a/editor/src/Toolbar.tsx b/editor/src/Toolbar.tsx index 3930f9a..02b97c3 100644 --- a/editor/src/Toolbar.tsx +++ b/editor/src/Toolbar.tsx @@ -3,28 +3,24 @@ import type { Editor } from "./editor/Editor"; type Props = { editor: Editor; canvasRef: RefObject }; -function useUpdate(): [number, () => void] { - const [value, setValue] = useState(0); - return [value, () => setValue(value + 1)] as const; -} - function Toolbar({ editor, canvasRef }: Props): ReactElement { - const [uid, update] = useUpdate(); + const [selectedTool, setSelectedTool] = useState("select"); - useEffect(() => { - const handle = editor.addUpdateAction(() => update()); - return () => editor.removeUpdateAction(handle); - }); + useEffect(() => + editor.events.subscribe(["ShowSelectedTool"], (ev) => { + setSelectedTool(ev.tool); + }), + ); return ( <>
{editor.tools().map((tool, key) => (