diff --git a/view/CanvasViewport.tsx b/view/CanvasViewport.tsx index 17ad154..23ffe9f 100644 --- a/view/CanvasViewport.tsx +++ b/view/CanvasViewport.tsx @@ -1,5 +1,6 @@ import { useEffect, useRef } from "react"; import type { AppStore } from "@editor/store"; +import { createRenderer } from "@renderer/index"; export type CanvasViewportProps = { store: AppStore; @@ -8,6 +9,23 @@ export type CanvasViewportProps = { export function CanvasViewport({ store }: CanvasViewportProps) { const canvasRef = useRef(null); + useEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + + const renderer = createRenderer(canvas); + renderer.render(store.getState()); + + const unsubscribe = store.subscribe((state) => { + renderer.render(state); + }); + + return () => { + unsubscribe(); + renderer.dispose(); + }; + }, [store]); + useEffect(() => { const canvas = canvasRef.current; if (!canvas) return;