This commit is contained in:
@@ -67,11 +67,15 @@ src/
|
||||
│ ├── assets/ # Favicon and local Nunito fonts
|
||||
│ ├── components/
|
||||
│ │ ├── AttachmentPreview.svelte # Browser-rendered PDF/image thumbnails
|
||||
│ │ ├── BeaArchiveProcessing.svelte
|
||||
│ │ ├── BeaWorkspaceControls.svelte # beA workspace toolbar, settings popover, dialogs
|
||||
│ │ ├── ProcessedZipArchiveEditor.svelte
|
||||
│ │ ├── SubDocumentEditor.svelte
|
||||
│ │ ├── PdfDropzone.svelte # Shared PDF/image/ZIP file picker and drop target
|
||||
│ │ ├── FileDropzone.svelte # Shared PDF/image/ZIP file picker and drop target
|
||||
│ │ ├── ZipFilePicker.svelte # Compact ZIP picker button with hidden resettable input
|
||||
│ │ ├── PdfPageGrid.svelte # Accessible PDF thumbnail selection grid
|
||||
│ │ ├── ZipDropzone.svelte # beA-specific wrapper around PdfDropzone
|
||||
│ │ ├── RasterizationWarning.svelte
|
||||
│ │ ├── ZipDropzone.svelte # beA-specific wrapper around FileDropzone
|
||||
│ │ ├── icons/ # Project-specific SVG components
|
||||
│ │ └── ui/ # Local shadcn-svelte component source
|
||||
│ ├── services/
|
||||
@@ -106,8 +110,26 @@ committed.
|
||||
`/tools/bea`; the file is not uploaded or persisted.
|
||||
- `tools/bea/+page.svelte` owns selected files, processed archives, pending work, and the
|
||||
thumbnail-width preference. Thumbnail width is the only persisted UI setting and uses localStorage.
|
||||
- The loaded workspace renders `BeaWorkspaceControls.svelte`, a top-aligned toolbar with the
|
||||
workspace status and two archive lifecycle actions:
|
||||
- **“Neue ZIP bearbeiten”** (replace) opens a ZIP picker and, after the user confirms the
|
||||
replacement dialog, calls `replaceWithZipFiles(files)` which resets the workspace and enqueues the
|
||||
new files against the incremented generation. Files picked for replacement stay in temporary
|
||||
component state until confirmation; cancelling the picker or the dialog must never mutate the
|
||||
current workspace.
|
||||
- **“Weitere ZIP hinzufügen”** (append) lives in the settings popover, uses the plain append path
|
||||
(`handleFilesSelected`), and never clears current archives. Keep the two labels distinct:
|
||||
replace is “Neue ZIP bearbeiten”, append is “Weitere ZIP hinzufügen”.
|
||||
- `BeaWorkspaceControls.svelte` owns only ephemeral UI state (popover/dialog open state and pending
|
||||
replacement files). The route remains the source of truth for files, jobs, archives, and the
|
||||
persisted thumbnail width.
|
||||
- `resetWorkspace()` is the single teardown helper: it increments `archiveGeneration` and clears
|
||||
selected files, processed archives, and jobs. Never clear those arrays without going through it.
|
||||
- Accepted ZIP types and the file filter for the dropzone and both compact pickers are centralized in
|
||||
`src/lib/zip-selection.ts`; `ZipFilePicker.svelte` resets its input after every selection so the
|
||||
same file can be chosen again.
|
||||
- ZIP files are processed concurrently. `archiveGeneration` prevents results from an old batch from
|
||||
reappearing after the user deletes all archives.
|
||||
reappearing after the user deletes all archives **or** confirms a replacement.
|
||||
- `ProcessedZipArchiveEditor.svelte` edits one archive and emits immutable replacements through
|
||||
`onArchiveChange`; the route-level archive array remains the source of truth.
|
||||
- Attachments may remain loose or belong to exactly one sub-document. Drag-and-drop supports
|
||||
|
||||
Reference in New Issue
Block a user