File size: 744 Bytes
2409829
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
let draggingElement: HTMLElement | undefined;

export function createDragManager(): () => void {
	const clearDraggingElement = () => {
		draggingElement = undefined;
	};

	// Add the event listener
	document.addEventListener("drop", clearDraggingElement);

	// Return the destructor
	return () => {
		// We use setTimeout to sequence this drop after any potential users in the current call stack progression, since this will begin in an entirely new call stack later
		setTimeout(() => document.removeEventListener("drop", clearDraggingElement), 0);
	};
}

export function beginDraggingElement(element: HTMLElement) {
	draggingElement = element;
}

export function currentDraggingElement(): HTMLElement | undefined {
	return draggingElement;
}