webamp/packages/webamp-modern-2/src/dropTarget.ts
2021-07-03 16:15:44 -07:00

36 lines
1 KiB
TypeScript

export function addDropHandler(onDrop: (blob: Blob) => void) {
const dropTarget = document.createElement("div");
dropTarget.style.top = "0px";
dropTarget.style.left = "0px";
dropTarget.style.position = "absolute";
dropTarget.style.bottom = "0";
dropTarget.style.right = "0";
document.body.appendChild(dropTarget);
function dropHandler(ev: DragEvent) {
// Prevent default behavior (Prevent file from being opened)
ev.preventDefault();
const file = ev.dataTransfer.files[0];
if (file == null) {
return;
}
clearDropTargetStyle();
onDrop(file);
}
function clearDropTargetStyle() {
dropTarget.style.border = "none";
}
function dragOverHandler(ev: DragEvent) {
dropTarget.style.border = "4px dotted white";
// Prevent default behavior (Prevent file from being opened)
ev.preventDefault();
}
dropTarget.addEventListener("dragover", dragOverHandler);
dropTarget.addEventListener("dragleave", clearDropTargetStyle);
dropTarget.addEventListener("drop", dropHandler);
}