import { useCallback, useState } from "react"; import { type FileWithPath } from "react-dropzone"; import { Icon } from "@iconify/react"; import Dropzone from "../dropzone"; import Camera from "./camera"; import ImageEditorPortrait from "./image-editor"; interface Props { text: string; forceCrop?: boolean; image?: string | undefined; setImage: (value: string | undefined) => void; } export default function SwitchFileUpload({ text, forceCrop, image, setImage }: Props) { const [isCameraOpen, setIsCameraOpen] = useState(false); const [isCropOpen, setIsCropOpen] = useState(false); const handleDrop = useCallback( (acceptedFiles: FileWithPath[]) => { const file = acceptedFiles[0]; // Convert to Data URI const reader = new FileReader(); reader.onload = async (event) => { setImage(event.target!.result as string); if (forceCrop) setIsCropOpen(true); }; reader.readAsDataURL(file); }, [setImage], ); return (
{!image ? (
<>
Drag and drop {text}
or click to open
>
) : (
"Uploaded!"
)}