mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 21:46:49 +00:00
e986c9ab27
The file manager (which already attaches files to a place/activity) now accepts video uploads up to the larger video cap — other types stay at the document limit — and the lightbox plays them with the Plyr player over the plain same-origin download URL, so cookie auth and HTTP Range both work. Videos are excluded from the offline blob prefetch so one clip can't evict a trip's documents.
37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import { useFileManager, type FileManagerProps } from './useFileManager'
|
|
import { ImageLightbox } from './FileManagerImageLightbox'
|
|
import { AssignModal } from './FileManagerAssignModal'
|
|
import { PdfPreviewModal } from './FileManagerPdfPreviewModal'
|
|
import { FileManagerToolbar } from './FileManagerToolbar'
|
|
import { TrashView } from './FileManagerTrashView'
|
|
import { FilesView } from './FileManagerFilesView'
|
|
|
|
export default function FileManager(props: FileManagerProps) {
|
|
const S = useFileManager(props)
|
|
const { lightboxIndex, setLightboxIndex, mediaFiles, assignFileId, previewFile, handlePaste, showTrash } = S
|
|
return (
|
|
<div className="flex flex-col h-full" style={{ fontFamily: "var(--font-system)" }} onPaste={handlePaste} tabIndex={-1}>
|
|
{/* Lightbox */}
|
|
{lightboxIndex !== null && <ImageLightbox files={mediaFiles} initialIndex={lightboxIndex} onClose={() => setLightboxIndex(null)} />}
|
|
|
|
{/* Assign modal */}
|
|
{assignFileId && <AssignModal {...S} />}
|
|
|
|
{/* PDF preview modal */}
|
|
{previewFile && <PdfPreviewModal {...S} />}
|
|
|
|
{/* Toolbar */}
|
|
<FileManagerToolbar {...S} />
|
|
|
|
{showTrash ? <TrashView {...S} /> : <FilesView {...S} />}
|
|
|
|
<style>{`
|
|
@media (max-width: 767px) {
|
|
.file-actions button { padding: 8px !important; }
|
|
.file-actions svg { width: 18px !important; height: 18px !important; }
|
|
}
|
|
`}</style>
|
|
</div>
|
|
)
|
|
}
|