} onClick={() => navigate('/inbox')}>
Zurück
{file.name}
}
onClick={() => { if (canProcess) setWizardOpen(true); }}
buttonsRender={([leftButton, rightButton]) => [
cloneElement(leftButton as ReactElement<{ disabled?: boolean }>, { disabled: !canProcess }),
rightButton,
]}
menu={{
items: [
{ key: 'save', label: 'Speichern', icon: },
{ key: 'email', label: 'Als E-Mail-Anhang versenden', icon: },
{ type: 'divider' },
{ key: 'delete', label: 'Dokument löschen', icon: , danger: true },
] as MenuProps['items'],
onClick: ({ key }) => {
if (key === 'save') setDownloadDialogOpen(true);
if (key === 'email') setEmailDialogOpen(true);
if (key === 'delete') {
Modal.confirm({
title: 'Dokument löschen?',
content: 'Datei und Datenbank-Eintrag werden dauerhaft entfernt.',
okText: 'Löschen',
okButtonProps: { danger: true },
cancelText: 'Abbrechen',
onOk: async () => {
try {
await inboxApi.remove(file.id);
message.success('Dokument gelöscht');
navigate('/inbox');
} catch {
message.error('Löschen fehlgeschlagen');
}
},
});
}
},
}}
>
Weiterverarbeiten
{pendingEdits > 0 && (
{editsLabel}
(wird erst bei der Weiterverarbeitung angewendet)
)}
{documents.length === 0 ? (
Keine Seiten
) : (
documents.map((doc) => {
const active = doc.index === selectedDocIndex;
const cover = doc.pages[0];
const url = thumbUrls.get(cover);
return (
{doc.belegname && (
{doc.belegname}
)}
setSelectedPage(cover)}
style={{
cursor: 'pointer',
padding: 2,
border: active ? '2px solid #1677ff' : '2px solid transparent',
borderRadius: 6,
position: 'relative',
width: 92,
height: 120,
}}
>
{url ? (

) : (
)}
{doc.pages.length}
);
})
)}
{sidebarPages.map((n, idx) => {
const active = n === selectedPage;
const url = thumbUrls.get(n);
const docPage = idx + 1;
return (
setSelectedPage(n)}
style={{
cursor: 'pointer',
marginBottom: 6,
padding: 2,
border: active ? '2px solid #1677ff' : '2px solid transparent',
borderRadius: 6,
background: '#fff',
position: 'relative',
}}
>
{url ? (

) : (
)}
{docPage}
);
})}
}
onClick={handlePrev}
disabled={!canPrev}
style={{ color: '#fff' }}
/>
}
onClick={handleNext}
disabled={!canNext}
style={{ color: '#fff' }}
/>
}
onClick={handleZoomIn}
disabled={zoom >= ZOOM_MAX}
style={{ color: '#fff' }}
/>
}
onClick={handleZoomOut}
disabled={zoom <= ZOOM_MIN}
style={{ color: '#fff' }}
/>
}
onClick={handleRotateLeft}
style={{ color: '#fff' }}
/>
}
onClick={handleRotateRight}
style={{ color: '#fff' }}
/>
{canDelete ? (
}
style={{ color: '#ff7875' }}
/>
) : (
}
disabled
style={{ color: 'rgba(255,255,255,0.3)' }}
/>
)}
{canSplit && (
}
onClick={handleToggleSplit}
style={{ color: isSplitPage ? '#ffd666' : '#fff' }}
/>
)}
: }
onClick={() => { setScanMode((v) => !v); setDragStart(null); setDragEnd(null); }}
disabled={scanning}
style={{ color: scanMode ? '#52c41a' : '#fff' }}
/>
{previewUrl ? (

) : (
)}
{/* Overlay für QR-Bereich-Scan */}
{dragStart && dragEnd && (
)}
setWizardOpen(false)}
onDeleted={() => navigate('/inbox')}
/>
setDownloadDialogOpen(false)}
/>
setEmailDialogOpen(false)}
/>
);
}