import * as React from "react"; import { defineToolcraft } from "../../schema/define-toolcraft"; import { useToolcraft } from "./use-toolcraft"; export function installToolcraftAppTestWindow(): void { Object.defineProperty(window, "matchMedia", { value: (query: string) => ({ addEventListener: () => undefined, addListener: () => undefined, dispatchEvent: () => false, matches: query === "(prefers-reduced-motion: reduce)", media: query, onchange: null, removeEventListener: () => undefined, removeListener: () => undefined, }), writable: true, }); window.requestAnimationFrame ??= ((callback: FrameRequestCallback) => window.setTimeout( () => callback(performance.now()), 16, )) as typeof window.requestAnimationFrame; window.cancelAnimationFrame ??= ((handle: number) => window.clearTimeout(handle)) as typeof window.cancelAnimationFrame; } export function createToolcraftAppTestSchema() { return defineToolcraft({ canvas: { enabled: true, size: { height: 180, unit: "px", width: 320 }, upload: true, }, panels: { controls: { sections: [ { controls: { prompt: { defaultValue: "Initial prompt", label: "Prompt", target: "generation.prompt", type: "text", }, }, title: "Basic", }, ], title: "Controls", }, layers: true, timeline: true, }, }); } export function PanelWorkspaceProbe(): React.JSX.Element { const { state } = useToolcraft(); return ( <> {JSON.stringify(state.panels)} {state.history.undo.length} ); }