'use client'; import { useRef, RefObject } from 'react'; import { pngToJpegWithExif, jpgToJpegWithExif } from '@/utility/exif-client'; import { clsx } from 'clsx/lite'; import { ACCEPTED_PHOTO_FILE_TYPES } from '@/photo'; import { FiUploadCloud } from 'react-icons/fi'; import { MAX_IMAGE_SIZE } from '@/platforms/next-image'; import ProgressButton from './primitives/ProgressButton'; import { useAppState } from '@/app/AppState'; import { useAppText } from '@/i18n/state/client'; export default function ImageInput({ ref: inputRefExternal, id = 'file', onStart, onBlobReady, multiple = true, shouldResize, maxSize = MAX_IMAGE_SIZE, quality = 0.9, showButton, disabled: disabledProp, debug: _debug, }: { ref?: RefObject id?: string onStart?: () => void onBlobReady?: (args: { blob: Blob, extension?: string, hasMultipleUploads?: boolean, isLastBlob?: boolean, }) => Promise multiple?: boolean shouldResize?: boolean maxSize?: number quality?: number showButton?: boolean disabled?: boolean debug?: boolean }) { const inputRefInternal = useRef(null); const inputRef = inputRefExternal ?? inputRefInternal; const { uploadState: { isUploading, filesLength, fileUploadIndex, }, setUploadState, resetUploadState, } = useAppState(); const appText = useAppText(); const disabled = disabledProp || isUploading; return (
); }