mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-16 00:08:15 +08:00
82 lines
2.0 KiB
TypeScript
82 lines
2.0 KiB
TypeScript
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}
|
|
/>
|
|
)
|
|
}
|