MCPcopy
hub / github.com/imbhargav5/rooks / useIsDroppingFiles

Function useIsDroppingFiles

packages/rooks/src/hooks/useIsDroppingFiles.ts:15–100  ·  view source on GitHub ↗
(
  isTargetWindow = false
)

Source from the content-addressed store, hash-verified

13): [CallbackRef<HTMLElement | null>, boolean];
14
15function useIsDroppingFiles(
16 isTargetWindow = false
17): boolean | [CallbackRef<HTMLElement | null>, boolean] {
18 const [targetNode, setTargetNode] = useState<HTMLElementOrNull>(null);
19
20 const ref = useCallback((node: HTMLElement | null) => {
21 setTargetNode(node);
22 }, []);
23 const [isDroppingFiles, setIsDroppingFiles] = useState(false);
24
25 const handleDragEnter = useCallback(
26 (e: DragEvent) => {
27 e.preventDefault();
28 if (e.dataTransfer?.types.includes("Files")) {
29 if (!isDroppingFiles) {
30 setIsDroppingFiles(true);
31 }
32 } else {
33 setIsDroppingFiles(false);
34 }
35 },
36 [isDroppingFiles]
37 );
38
39 const handleDragOver = useCallback(
40 (e: DragEvent) => {
41 e.preventDefault();
42 if (e.dataTransfer?.types.includes("Files")) {
43 if (!isDroppingFiles) {
44 setIsDroppingFiles(true);
45 }
46 } else {
47 setIsDroppingFiles(false);
48 }
49 },
50 [isDroppingFiles]
51 );
52
53 const handleDragLeave = useCallback((e: DragEvent) => {
54 e.preventDefault();
55 setIsDroppingFiles(false);
56 }, []);
57
58 const handleDrop = useCallback((e: DragEvent) => {
59 e.preventDefault();
60 setIsDroppingFiles(false);
61 }, []);
62
63 const freshHandleDragEnter = useFreshCallback(handleDragEnter);
64 const freshHandleDragOver = useFreshCallback(handleDragOver);
65 const freshHandleDragLeave = useFreshCallback(handleDragLeave);
66 const freshHandleDrop = useFreshCallback(handleDrop);
67
68 useEffect(() => {
69 const target = isTargetWindow ? window : targetNode;
70
71 if (target) {
72 target.addEventListener("dragenter", freshHandleDragEnter as EventListener);

Callers 2

TestComponentFunction · 0.90
ssr.spec.tsFile · 0.85

Calls 3

useFreshCallbackFunction · 0.90
addEventListenerMethod · 0.65
removeEventListenerMethod · 0.65

Tested by 1

TestComponentFunction · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…