import { useCallback, useEffect } from "preact/hooks"; import { cn } from "@/lib/utils"; import { dragging } from "@/store"; const { isDragging } = dragging.value; export default function Sidebar() { return ( ); } function Divider() { function onMouseDown() { dragging.value = { ...dragging.value, isDragging: true, }; } function onMouseUp() { dragging.value = { ...dragging.value, isDragging: false, }; } const handler = useCallback( (event: MouseEvent) => { if (dragging.value.isDragging) { const width = Math.min(Math.max(200, event.clientX), 320); dragging.value = { ...dragging.value, width, }; localStorage.setItem("sidebar-width", width.toString()); } }, [dragging.value.isDragging], ); useEffect(() => { window.addEventListener("mousemove", handler); window.addEventListener("mouseup", onMouseUp); return () => { window.removeEventListener("mousemove", handler); window.removeEventListener("mouseup", onMouseUp); }; }, [isDragging]); return (
); }