routie dev init since i didn't adhere to any proper guidance up until now

This commit is contained in:
2026-04-29 22:27:29 -06:00
commit e1dabb71e2
15301 changed files with 3562618 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
// Types
export function useFileDrop() {
function hasFilesOrFolders(e) {
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
}
async function handleDrop(e) {
const result = [];
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
if (entries.length) {
for (const entry of entries) {
const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
result.push(...files.map(x => x.file));
}
} else {
result.push(...[...(e.dataTransfer?.files ?? [])]);
}
return result;
}
return {
handleDrop,
hasFilesOrFolders
};
}
function traverseFileTree(item, path = '') {
return new Promise((resolve, reject) => {
if (item.isFile) {
const fileEntry = item;
fileEntry.file(file => resolve([{
file,
path
}]), reject);
} else if (item.isDirectory) {
const directoryReader = item.createReader();
directoryReader.readEntries(async entries => {
const files = [];
for (const entry of entries) {
files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
}
resolve(files);
});
}
});
}
function appendIfDirectory(path, item) {
return item.isDirectory ? `${path}/${item.name}` : path;
}
//# sourceMappingURL=fileDrop.js.map