import React from "react"; import { FileItem } from '../upload/interface'; import Image from '../image'; import { IconBriefStroked, IconClear } from '@douyinfe/semi-icons'; import { strings, cssClasses } from '@douyinfe/semi-foundation/chat/constants'; import cls from 'classnames'; import { Progress } from "../index"; const { PREFIX_ATTACHMENT, } = cssClasses; const { PIC_SUFFIX_ARRAY, PIC_PREFIX } = strings; interface AttachmentProps { className?: string; attachment?: FileItem[]; onClear?: (item: FileItem) => void; showClear?: boolean } interface FileProps { url?: string; name?: string; size?: string; type?: string; } export const FileAttachment = React.memo((props: FileProps) => { const { url, name, size, type } = props; return
{name} {type} {type ? ' ยท ' : ''}{size}
}) export const ImageAttachment = React.memo((props: {src: string}) => { const { src } = props; return }) const Attachment = React.memo((props: AttachmentProps) => { const { attachment, onClear, showClear = true, className } = props; return (
{ attachment.map(item => { const { percent, status } = item; const suffix = item?.name.split('.').pop(); const isImg = item?.fileInstance?.type?.startsWith(PIC_PREFIX) || PIC_SUFFIX_ARRAY.includes(suffix); const realType = suffix ?? item?.fileInstance?.type?.split('/').pop(); const showProcess = !(percent === 100 || typeof percent === 'undefined') && status === 'uploading'; return
{isImg ? ( ) : ( )} {showClear && { onClear && onClear(item); }} />} {showProcess && }
; }) }
); }); export default Attachment;