async function readDragEvent()

in frontend/src/js/components/Uploads/FilePicker.tsx [5:32]


async function readDragEvent(e: React.DragEvent): Promise<Map<string, File>> {
    const files = new Map<string, File>();

    for(const item of e.dataTransfer.items) {
        if(item.webkitGetAsEntry()) {
            const entry: FileSystemEntry | null = item.webkitGetAsEntry();

            if(entry && entry.isFile) {
                const file = await readFileEntry(entry as FileSystemFileEntry);
                files.set(file.name, file as File);
            } else if(entry && entry.isDirectory) {
                const directoryFiles = await readDirectoryEntry(entry as FileSystemDirectoryEntry);

                for(const [path, file] of directoryFiles) {
                    files.set(path, file as File);
                }
            }
        } else {
            const file = item.getAsFile();

            if(file) {
                files.set(file.name, file);
            }
        }
    }

    return files;
}