import { Box, Link, Typography, useMediaQuery, useTheme } from "@mui/material"; import { addQuestionVariant, clearQuestionImages, uploadQuestionImage, } from "@root/questions/actions"; import { useCurrentQuiz } from "@root/quizes/hooks"; import { CropModal, useCropModalState } from "@ui_kit/Modal/CropModal"; import { useEffect, useState } from "react"; import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon"; import type { QuizQuestionVarImg } from "../../../model/questionTypes/varimg"; import { useDisclosure } from "../../../utils/useDisclosure"; import { AnswerDraggableList } from "../AnswerDraggableList"; import ImageEditAnswerItem from "../AnswerDraggableList/ImageEditAnswerItem"; import ButtonsOptionsAndPict from "../ButtonsOptionsAndPict"; import { UploadImageModal } from "../UploadImage/UploadImageModal"; import SwitchOptionsAndPict from "./switchOptionsAndPict"; interface Props { question: QuizQuestionVarImg; openBranchingPage: boolean; setOpenBranchingPage: (a: boolean) => void; } export default function OptionsAndPicture({ question, setOpenBranchingPage, }: Props) { const [switchState, setSwitchState] = useState("setting"); const [pictureUploding, setPictureUploading] = useState(false); const [selectedVariantId, setSelectedVariantId] = useState( null, ); const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down(790)); const quizQid = useCurrentQuiz()?.qid; const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure(); const { isCropModalOpen, openCropModal, closeCropModal, imageBlob, originalImageUrl, setCropModalImageBlob, } = useCropModalState(); const handleImageUpload = async (file: File) => { if (!selectedVariantId) return; setPictureUploading(true); const url = await uploadQuestionImage( question.id, quizQid, file, (question, url) => { if (!("variants" in question.content)) return; const variant = question.content.variants.find( (variant) => variant.id === selectedVariantId, ); if (!variant) return; variant.extendedText = url; variant.originalImageUrl = url; }, ); closeImageUploadModal(); openCropModal(file, url); setPictureUploading(false); }; function handleCropModalSaveClick(imageBlob: Blob) { if (!selectedVariantId) return; uploadQuestionImage(question.id, quizQid, imageBlob, (question, url) => { if (!("variants" in question.content)) return; const variant = question.content.variants.find( (variant) => variant.id === selectedVariantId, ); if (!variant) return; variant.extendedText = url; }); } useEffect(() => { if (question.deleteTimeoutId) { clearTimeout(question.deleteTimeoutId); } }, [question]); return ( <> ( = 100} questionId={question.id} largeCheck={question.content.largeCheck} variant={variant} isMobile={isMobile} openCropModal={openCropModal} openImageUploadModal={openImageUploadModal} pictureUploding={pictureUploding} setSelectedVariantId={setSelectedVariantId} /> ))} /> { if (selectedVariantId) clearQuestionImages(question.id, selectedVariantId); }} cropAspectRatio={{ width: 452, height: 300 }} /> { addQuestionVariant(question.id); }} > Добавьте ответ {isMobile ? null : ( <> или нажмите Enter )} ); }