'use client'; import { blobToImage } from '@/utility/blob'; import { useRef, RefObject } from 'react'; import { CopyExif, getOrientation } from '@/utility/exif'; 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, shouldResize, maxSize = MAX_IMAGE_SIZE, quality = 0.8, showButton, disabled: disabledProp, debug, }: { ref?: RefObject id?: string onStart?: () => void onBlobReady?: (args: { blob: Blob, extension?: string, hasMultipleUploads?: boolean, isLastBlob?: boolean, }) => Promise shouldResize?: boolean maxSize?: number quality?: number showButton?: boolean disabled?: boolean debug?: boolean }) { const inputRefInternal = useRef(null); const canvasRef = useRef(null); const inputRef = inputRefExternal ?? inputRefInternal; const { uploadState: { isUploading, image, filesLength, fileUploadIndex, }, setUploadState, resetUploadState, } = useAppState(); const appText = useAppText(); const disabled = disabledProp || isUploading; return (
); }