Files
maher 511fad8199
Build / run (push) Has been cancelled
Initial commit
2026-05-14 13:42:10 +02: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]);
}