25 lines
744 B
TypeScript
25 lines
744 B
TypeScript
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;
|
|
}
|