123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import { useFile } from '../hooks'
- import { useStore } from '../store'
- import type { FileEntity } from '../types'
- import FileImageItem from './file-image-item'
- import FileItem from './file-item'
- import type { FileUpload } from '@/app/components/base/features/types'
- import { SupportUploadFileTypes } from '@/app/components/workflow/types'
- import cn from '@/utils/classnames'
- type FileListProps = {
- className?: string
- files: FileEntity[]
- onRemove?: (fileId: string) => void
- onReUpload?: (fileId: string) => void
- showDeleteAction?: boolean
- showDownloadAction?: boolean
- canPreview?: boolean
- }
- export const FileList = ({
- className,
- files,
- onReUpload,
- onRemove,
- showDeleteAction = true,
- showDownloadAction = false,
- canPreview,
- }: FileListProps) => {
- return (
- <div className={cn('flex flex-wrap gap-2', className)}>
- {
- files.map((file) => {
- if (file.supportFileType === SupportUploadFileTypes.image) {
- return (
- <FileImageItem
- key={file.id}
- file={file}
- showDeleteAction={showDeleteAction}
- showDownloadAction={showDownloadAction}
- onRemove={onRemove}
- onReUpload={onReUpload}
- canPreview={canPreview}
- />
- )
- }
- return (
- <FileItem
- key={file.id}
- file={file}
- showDeleteAction={showDeleteAction}
- showDownloadAction={showDownloadAction}
- onRemove={onRemove}
- onReUpload={onReUpload}
- />
- )
- })
- }
- </div>
- )
- }
- type FileListInChatInputProps = {
- fileConfig: FileUpload
- }
- export const FileListInChatInput = ({
- fileConfig,
- }: FileListInChatInputProps) => {
- const files = useStore(s => s.files)
- const {
- handleRemoveFile,
- handleReUploadFile,
- } = useFile(fileConfig)
- return (
- <FileList
- files={files}
- onReUpload={handleReUploadFile}
- onRemove={handleRemoveFile}
- />
- )
- }
|