import { memo, useCallback, } from 'react' import { RiCloseLine, } from '@remixicon/react' import FileImageRender from '@/app/components/base/file-uploader/file-image-render' import type { FileEntity } from '../types' import ProgressCircle from '@/app/components/base/progress-bar/progress-circle' import { ReplayLine } from '@/app/components/base/icons/src/vender/other' import { fileIsUploaded } from '../utils' import Button from '@/app/components/base/button' type ImageItemProps = { file: FileEntity showDeleteAction?: boolean onRemove?: (fileId: string) => void onReUpload?: (fileId: string) => void onPreview?: (fileId: string) => void } const ImageItem = ({ file, showDeleteAction, onRemove, onReUpload, onPreview, }: ImageItemProps) => { const { id, progress, base64Url, sourceUrl } = file const handlePreview = useCallback((e: React.MouseEvent) => { e.stopPropagation() e.preventDefault() onPreview?.(id) }, [onPreview, id]) const handleRemove = useCallback((e: React.MouseEvent) => { e.stopPropagation() e.preventDefault() onRemove?.(id) }, [onRemove, id]) const handleReUpload = useCallback((e: React.MouseEvent) => { e.stopPropagation() e.preventDefault() onReUpload?.(id) }, [onReUpload, id]) return (
{ showDeleteAction && ( ) } { progress >= 0 && !fileIsUploaded(file) && (
) } { progress === -1 && (
) }
) } export default memo(ImageItem)