feat: add batch conversion support with multi-file upload and ZIP download

Major improvements:
- Updated FileUpload component to support multiple file selection
  - Added drag-and-drop for multiple files
  - Individual file removal
  - "Add More Files" button when files are selected
- Modified FileConverter to handle batch conversions
  - Sequential conversion of multiple files
  - Progress tracking for each file individually
  - All files share same output format and settings
- Added batch download functionality
  - Single file: direct download
  - Multiple files: ZIP archive download
  - Uses jszip library for ZIP creation
- Enhanced UI/UX
  - Show count of selected files in convert button
  - Display all conversion jobs with individual previews
  - "Download All" button for completed conversions
  - Conversion status messages show success/failure counts

Dependencies added:
- jszip@3.10.1 for ZIP file creation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-17 13:13:52 +01:00
parent a43a336965
commit 67a1c47396
5 changed files with 362 additions and 137 deletions

View File

@@ -93,3 +93,22 @@ export function validateFileType(file: File, allowedTypes: string[]): boolean {
return file.type === type;
});
}
/**
* Download multiple blobs as a ZIP file
*/
export async function downloadBlobsAsZip(files: Array<{ blob: Blob; filename: string }>, zipFilename: string): Promise<void> {
const JSZip = (await import('jszip')).default;
const zip = new JSZip();
// Add all files to ZIP
files.forEach(({ blob, filename }) => {
zip.file(filename, blob);
});
// Generate ZIP blob
const zipBlob = await zip.generateAsync({ type: 'blob' });
// Download ZIP
downloadBlob(zipBlob, zipFilename);
}