import { createSignal } from "solid-js" import { getGrowDuration, getCollapsibleDuration, setGrowDuration, setCollapsibleDuration, } from "./motion" export function AnimationDebugPanel() { const [grow, setGrow] = createSignal(getGrowDuration()) const [collapsible, setCollapsible] = createSignal(getCollapsibleDuration()) const [collapsed, setCollapsed] = createSignal(true) const [dragging, setDragging] = createSignal(false) const [pos, setPos] = createSignal({ x: 16, y: 16 }) let dragOffset = { x: 0, y: 0 } const onPointerDown = (e: PointerEvent) => { if ((e.target as HTMLElement).closest("button, input")) return setDragging(true) dragOffset = { x: e.clientX + pos().x, y: e.clientY + pos().y } ;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId) } const onPointerMove = (e: PointerEvent) => { if (!dragging()) return setPos({ x: dragOffset.x - e.clientX, y: dragOffset.y - e.clientY }) } const onPointerUp = () => setDragging(false) return (
springs
{!collapsed() && (
{ setGrow(v) setGrowDuration(v) }} /> { setCollapsible(v) setCollapsibleDuration(v) }} />
)}
) } function SliderRow(props: { label: string; value: number; onChange: (v: number) => void }) { return (
{props.label} props.onChange(parseFloat(e.currentTarget.value))} style={{ width: "100px", cursor: "pointer" }} /> {props.value.toFixed(2)}
) }