import { useCallback, useContext, useEffect, useRef, useState } from "react"; import { Canvas } from "../lib/canvas"; import { useAppContext } from "../contexts/AppContext"; import { PanZoomWrapper } from "@sc07-canvas/lib/src/renderer"; import { RendererContext } from "@sc07-canvas/lib/src/renderer/RendererContext"; import { ViewportMoveEvent } from "@sc07-canvas/lib/src/renderer/PanZoom"; import throttle from "lodash.throttle"; import { IPosition } from "@sc07-canvas/lib/src/net"; import { Template } from "./Templating/Template"; import { Template as TemplateCl } from "../lib/template"; import { IRouterData, Router } from "../lib/router"; import { KeybindManager } from "../lib/keybinds"; import { BlankOverlay } from "./Overlay/BlankOverlay"; import { HeatmapOverlay } from "./Overlay/HeatmapOverlay"; import { useTemplateContext } from "../contexts/TemplateContext"; import { PixelPulses } from "./Overlay/PixelPulses"; import { CanvasUtils } from "../lib/canvas.utils"; export const CanvasWrapper = () => { const { config } = useAppContext(); const getInitialPosition = useCallback< (useCssZoom: boolean) => | { x: number; y: number; zoom?: number; } | undefined >( (useCssZoom) => { const router = Router.get().canvas; if (!router) return undefined; if (!config) { console.warn("getInitialPosition called with no config"); return undefined; } const { transformX, transformY } = CanvasUtils.canvasToPanZoomTransform( router.x, router.y, config.canvas.size, useCssZoom ); return { x: transformX, y: transformY, zoom: router.zoom, }; }, [config] ); return (
{config &&