Files
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

28 lines
803 B
TypeScript
Executable File

import {InteractableEvent} from '../interactable-event';
import {useEffect, useId, useRef} from 'react';
import {dragMonitors, DragSessionStatus} from './drag-state';
import {ConnectedDraggable} from './use-draggable';
export interface DragMonitor {
type: string;
onDragStart?: (e: InteractableEvent, dragTarget: ConnectedDraggable) => void;
onDragMove?: (e: InteractableEvent, dragTarget: ConnectedDraggable) => void;
onDragEnd?: (
e: InteractableEvent,
dragTarget: ConnectedDraggable,
status: DragSessionStatus
) => void;
}
export function useDragMonitor(monitor: DragMonitor) {
const monitorRef = useRef(monitor);
const id = useId();
useEffect(() => {
dragMonitors.set(id, monitorRef.current);
return () => {
dragMonitors.delete(id);
};
}, [id]);
}