/** * Gemeinsamer Medienvorschau-Dialog. * * Props: * title – Anzeigename des Mediums (Dateiname o.ä.) * media – Medienobjekt (mime_type, embed_url, asset_legal_hold_active, media_type) * fileUrl – Bereits aufgelöste Datei-URL (null für Embed-only-Medien) * onClose – Pflicht * onReport – optional; wenn gesetzt, erscheint "Melden"-Button * onEdit – optional; wenn gesetzt, erscheint "Bearbeiten"-Button */ import React from 'react' export default function MediaPreviewModal({ title, media, fileUrl, onClose, onReport, onEdit }) { const mlow = (media?.mime_type || '').toLowerCase() const isHeic = mlow.includes('heic') || mlow.includes('heif') const isImage = !isHeic && (media?.mime_type?.startsWith('image/') || media?.media_type === 'image') const isVideo = media?.mime_type?.startsWith('video/') || media?.media_type === 'video' const isPdf = mlow.includes('pdf') const isLegalHold = !!media?.asset_legal_hold_active const canReport = onReport && !isLegalHold function handleBackdrop(e) { if (e.target === e.currentTarget) onClose() } function handleKeyDown(e) { if (e.key === 'Escape') onClose() } return (
e.stopPropagation()} > {/* Header */}

{title || 'Vorschau'}

{canReport && ( )} {onEdit && ( )}
{/* Body */} {isLegalHold ? (

Dieses Medium ist gesperrt und steht nicht zur Verfügung.

) : media?.embed_url ? (

{media.embed_url}

) : isHeic ? (

HEIC/HEIF — in diesem Browser oft keine eingebettete Vorschau. Zum Ansehen herunterladen oder im neuen Tab öffnen.

{fileUrl && ( Datei öffnen )}
) : isImage ? ( ) : isVideo ? ( ) : isPdf ? (

PDF — zur Ansicht im neuen Tab öffnen.

{fileUrl && ( PDF öffnen )}
) : fileUrl ? (

Datei öffnen

) : (

Keine Vorschau verfügbar.

)}
) }