import { useEffect, useState } from "react"; import type { DragEvent, ReactNode } from "react"; interface FileDropHandlerProps { children: ReactNode; className: string; onDrop: (event: DragEvent) => void; onDraggingChange: (isDragging: boolean) => void; } export function FileDropHandler(props: FileDropHandlerProps) { const [dragging, setDragging] = useState(false); const handleDragEnter = (event: DragEvent) => { event.preventDefault(); setDragging(true); }; const handleDragLeave = (event: DragEvent) => { if (!event.currentTarget.contains(event.relatedTarget as Node)) { setDragging(false); } }; const handleDragOver = (event: DragEvent) => { event.preventDefault(); }; const handleDrop = (event: DragEvent) => { event.preventDefault(); setDragging(false); props.onDrop(event); }; useEffect(() => { props.onDraggingChange(dragging); }, [dragging, props]); return (
{props.children}
); }