'use client' import type { CustomFile as File, FileItem } from '@/models/datasets' import { useTranslation } from 'react-i18next' import { cn } from '@/utils/classnames' import FileListItem from './components/file-list-item' import UploadDropzone from './components/upload-dropzone' import { useFileUpload } from './hooks/use-file-upload' type IFileUploaderProps = { fileList: FileItem[] titleClassName?: string prepareFileList: (files: FileItem[]) => void onFileUpdate: (fileItem: FileItem, progress: number, list: FileItem[]) => void onFileListUpdate?: (files: FileItem[]) => void onPreview: (file: File) => void supportBatchUpload?: boolean } const FileUploader = ({ fileList, titleClassName, prepareFileList, onFileUpdate, onFileListUpdate, onPreview, supportBatchUpload = false, }: IFileUploaderProps) => { const { t } = useTranslation() const { dropRef, dragRef, fileUploaderRef, dragging, fileUploadConfig, acceptTypes, supportTypesShowNames, hideUpload, selectHandle, fileChangeHandle, removeFile, handlePreview, } = useFileUpload({ fileList, prepareFileList, onFileUpdate, onFileListUpdate, onPreview, supportBatchUpload, }) return (
{t('stepOne.uploader.title', { ns: 'datasetCreation' })}
{!hideUpload && ( )} {fileList.length > 0 && (
{fileList.map(fileItem => ( ))}
)}
) } export default FileUploader