Files
image-studio/view/canvas/useCanvasRenderer.ts
2026-07-03 10:16:34 +02:00

23 lines
612 B
TypeScript

import { useEffect, type RefObject } from "react";
import type { AppStore } from "@editor/store";
import { createRenderer } from "@renderer/index";
export function useCanvasRenderer(canvasRef: RefObject<HTMLCanvasElement | null>, store: AppStore) {
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();
};
}, [canvasRef, store]);
}