'use client'; import { blobToImage } from '@/utility/blob'; import { useRef, useState } from 'react'; import { CopyExif } from '@/lib/CopyExif'; import exifr from 'exifr'; import { clsx } from 'clsx/lite'; import Spinner from './Spinner'; import { ACCEPTED_PHOTO_FILE_TYPES } from '@/photo'; import { FiUploadCloud } from 'react-icons/fi'; import { MAX_IMAGE_SIZE } from '@/services/next-image'; const INPUT_ID = 'file'; export default function ImageInput({ onStart, onBlobReady, shouldResize, maxSize = MAX_IMAGE_SIZE, quality = 0.8, loading, showUploadStatus = true, debug, }: { onStart?: () => void onBlobReady?: (args: { blob: Blob, extension?: string, hasMultipleUploads?: boolean, isLastBlob?: boolean, }) => Promise shouldResize?: boolean maxSize?: number quality?: number loading?: boolean showUploadStatus?: boolean debug?: boolean }) { const ref = useRef(null); const [image, setImage] = useState(); const [filesLength, setFilesLength] = useState(0); const [fileUploadIndex, setFileUploadIndex] = useState(0); const [fileUploadName, setFileUploadName] = useState(''); const uploadStatusText = filesLength > 1 ? `${fileUploadIndex + 1} of ${filesLength}: ${fileUploadName}` : fileUploadName; return (
{showUploadStatus && filesLength > 0 &&
{uploadStatusText}
}
); }