Files
Graphite/frontend/src/io-managers/drag.ts
Keavon Chambers 904cf09c79 Add drag-and-drop and copy-paste file importing/opening throughout the UI (#2012)
* Add file importing by dragging and dropping throughout the UI

* Disable comment-profiling-changes.yaml

* Fix CI
2024-09-28 00:19:43 -07:00

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;
}