import React, { createRef, useEffect } from "react"; import { TransformComponent, TransformWrapper, useControls, useTransformEffect, } from "react-zoom-pan-pinch"; import { Canvas } from "../lib/canvas"; import { useAppContext } from "../contexts/AppContext"; import throttle from "lodash.throttle"; import { PanZoomWrapper } from "@sc07-canvas/lib/src/renderer"; export const CanvasWrapper = () => { // to prevent safari from blurring things, use the zoom css property return (
); }; const CanvasInner = () => { const canvasRef = createRef(); const { config } = useAppContext(); // const { centerView } = useControls(); // useTransformEffect( // throttle(({ state, instance }) => { // const params = new URLSearchParams(); // params.set("x", state.positionX + ""); // params.set("y", state.positionY + ""); // params.set("zoom", state.scale + ""); // window.location.hash = params.toString(); // }, 1000) // ); useEffect(() => { if (!config.canvas || !canvasRef.current) return; const canvas = canvasRef.current!; const canvasInstance = new Canvas(config, canvas); // centerView(); return () => { canvasInstance.destroy(); }; }, [canvasRef, config]); return ( ); };