| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | 
							- export const byteKB = 1024;
 
- export const byteMB = 1048576;
 
- export function getFileSize(number: number): string {
 
-     if (number < byteKB) {
 
-         return `${(number / byteKB).toFixed(2) }KB`;
 
-     } else if (number >= byteKB && number < byteMB) {
 
-         return `${(number / byteKB).toFixed(1) }KB`;
 
-     } else if (number >= byteMB) {
 
-         return `${(number / byteMB).toFixed(1) }MB`;
 
-     }
 
-     return undefined;
 
- }
 
- export function endsWith(str: string, suffix: string): boolean {
 
-     return str.indexOf(suffix, str.length - suffix.length) !== -1;
 
- }
 
- export async function loopFiles(item: FileSystemDirectoryEntry): Promise<Array<FileSystemEntry>> {
 
-     return new Promise((res, rej) => {
 
-         const dirReader = item.createReader();
 
-         let fileList: Array<FileSystemEntry> = [];
 
-         function sequence(): void {
 
-             dirReader.readEntries(entries => {
 
-                 const entryList = Array.prototype.slice.apply(entries);
 
-                 fileList = fileList.concat(entryList);
 
-                 // Check if all the file has been viewed
 
-                 const isFinished = !entryList.length;
 
-                 if (isFinished) {
 
-                     res(fileList);
 
-                 } else {
 
-                     sequence();
 
-                 }
 
-             }, rej);
 
-         }
 
-         sequence();
 
-     });
 
- }
 
- export async function mapFileTree(items: Array<DataTransferItem>): Promise<Array<File>> {
 
-     const promises: Array<Promise<File>> = [];
 
-     const _traverseFileTree = async (item: FileSystemEntry, path?: string): Promise<void> => {
 
-         path = path || '';
 
-         //@ts-ignore add path property into item
 
-         item.path = path;
 
-         if (item.isFile) {
 
-             promises.push(new Promise((res, rej) => {
 
-                 (item as FileSystemFileEntry).file(file => {
 
-                     if (item.fullPath && !file.webkitRelativePath) {
 
-                         // This file is provided to the user based on the relative path of the drag and drop folder
 
-                         // If you drag the Upload folder, the path of the internal file may be Upload/File/a.png, etc
 
-                         Object.defineProperties(file, {
 
-                             webkitRelativePath: {
 
-                                 writable: true,
 
-                             },
 
-                         });
 
-                         //@ts-ignore add webkitRelativePath property into file
 
-                         file.webkitRelativePath = item.fullPath.replace(/^\//, '');
 
-                         Object.defineProperties(file, {
 
-                             webkitRelativePath: {
 
-                                 writable: false,
 
-                             },
 
-                         });
 
-                     }
 
-                     res(file);
 
-                 }, rej);
 
-             }));
 
-         } else if (item.isDirectory) {
 
-             const entries = await loopFiles(item as FileSystemDirectoryEntry);
 
-             for (let index = 0; index < entries.length; index++) {
 
-                 const entry = entries[index];
 
-                 await _traverseFileTree(entry, `${path}${item.name}/`);
 
-             }
 
-         }
 
-     };
 
-     try {
 
-         const batches = items.map(i => _traverseFileTree(i.webkitGetAsEntry()));
 
-         // Perform asynchronous operations to add the required promises to the queue
 
-         await Promise.all(batches);
 
-         // Execution queue
 
-         const result = await Promise.all(promises);
 
-         return result;
 
-     } catch (error) {
 
-         console.warn('Captured error while loop directory.');
 
-         console.error(error);
 
-         return [];
 
-     }
 
- }
 
 
  |