import { useState, type PointerEvent as ReactPointerEvent } from "react"; import { motion } from "motion/react"; import { LocalAgentPanel } from "./local-agent-panel"; import { canvasThemes } from "@/lib/canvas-theme"; import { CANVAS_AGENT_PANEL_MOTION_MS, useAgentStore } from "@/stores/use-agent-store"; import { useThemeStore } from "@/stores/use-theme-store"; const PANEL_MOTION_SECONDS = CANVAS_AGENT_PANEL_MOTION_MS / 1000; export function AgentPanel() { const theme = canvasThemes[useThemeStore((state) => state.theme)]; const width = useAgentStore((state) => state.width); const [resizing, setResizing] = useState(false); const panelMounted = useAgentStore((state) => state.panelMounted); const panelOpen = useAgentStore((state) => state.panelOpen); const panelClosing = useAgentStore((state) => state.panelClosing); const setAgentState = useAgentStore((state) => state.setAgentState); const startResize = (event: ReactPointerEvent) => { event.preventDefault(); const startX = event.clientX; const startWidth = width; let nextWidth = startWidth; const onMove = (moveEvent: PointerEvent) => { nextWidth = Math.min(760, Math.max(360, startWidth + startX - moveEvent.clientX)); setAgentState({ width: nextWidth }); }; const onUp = () => { localStorage.setItem("canvas-agent-panel-width", String(nextWidth)); window.removeEventListener("pointermove", onMove); window.removeEventListener("pointerup", onUp); setResizing(false); }; setResizing(true); window.addEventListener("pointermove", onMove); window.addEventListener("pointerup", onUp); }; if (!panelMounted) return null; return (