import * as React from "react"; import type { ToolcraftSceneRect } from "@/toolcraft/runtime"; import { composeToolcraftApp } from "@/toolcraft/runtime/react"; import { appRendererPipelineRegistration } from "./app-performance"; import { physicalFeedbackExportRenderer } from "./feedback-export"; import { getPhysicalFeedbackReplaySteps } from "./feedback-values"; import { appSchema } from "./app-schema"; import { usePhysicalFeedbackRenderer } from "./use-physical-feedback-renderer"; export const physicalFeedbackSceneBounds: ToolcraftSceneRect = Object.freeze({ height: 128, width: 192, x: -96, y: -64, }); function ActivePhysicalFeedbackCanvas({ onDispose, }: Readonly<{ onDispose: (presentationCount: number, gpuCount: number) => void; }>): React.JSX.Element { const renderer = usePhysicalFeedbackRenderer(onDispose); return ( ); } function PhysicalFeedbackCanvas(): React.JSX.Element { const [disposals, setDisposals] = React.useState({ gpu: 0, presentation: 0 }); const onDispose = React.useCallback((presentation: number, gpu: number) => { setDisposals((current) => ({ gpu: current.gpu + gpu, presentation: current.presentation + presentation, })); }, []); return (