import { useRef } from "react"; import { SIDEBAR_MAX, SIDEBAR_MIN } from "./project-sidebar-chrome"; export function SidebarResizeHandle( { onResize, width }: { onResize: (delta: number) => void; width: number }, ) { let origin = useRef(0); return (
{ let step = event.shiftKey ? 64 : 16; if (event.key === "ArrowRight") onResize(step); else if (event.key === "ArrowLeft") onResize(-step); else if (event.key === "Home") onResize(SIDEBAR_MIN - width); else if (event.key === "End") onResize(SIDEBAR_MAX - width); else return; event.preventDefault(); }} onPointerDown={event => { origin.current = event.clientX; event.currentTarget.setPointerCapture(event.pointerId); }} onPointerMove={event => { if (!event.currentTarget.hasPointerCapture(event.pointerId)) return; let delta = event.clientX - origin.current; origin.current = event.clientX; onResize(delta); }} role="separator" tabIndex={0} /> ); }