import { Box, Link, Typography, useMediaQuery, useTheme } from "@mui/material"; import { addQuestionVariant, clearQuestionImages, uploadQuestionImage, } from "@root/questions/actions"; import { useCurrentQuiz } from "@root/quizes/hooks"; import { useEffect, useMemo, useState } from "react"; import { EnterIcon } from "@/assets/icons/questionsPage/enterIcon"; import type { QuizQuestionVarImg } from "@frontend/squzanswerer/dist-package/model/questionTypes/varimg"; import { useDisclosure } from "@/utils/useDisclosure"; import { AnswerDraggableList } from "../../AnswerDraggableList"; import ImageEditAnswerItem from "../../AnswerDraggableList/ImageEditAnswerItem"; import ButtonsOptions from "../ButtonsLayout/ButtonsOptions"; import { UploadImageModal } from "../../UploadImage/UploadImageModal"; import SwitchOptionsAndPict from "./switchOptionsAndPict"; import { CropModalInit } from "@/ui_kit/Modal/CropModal"; import imge from "@/assets/card-1.png" 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 [openCropModal, setOpenCropModal] = useState(false); const [selectedVariantId, setSelectedVariantId] = useState( null, ); const variant = question.content.variants.find( (variant) => variant.id === selectedVariantId, ) const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down(790)); const quizQid = useCurrentQuiz()?.qid; const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure(); const handleImageUpload = async (file: File) => { if (!selectedVariantId) return; setPictureUploading(true); closeImageUploadModal(); 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; }, ); setOpenCropModal(true) 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={() => {setOpenCropModal(true)}} openImageUploadModal={openImageUploadModal} pictureUploding={pictureUploding} setSelectedVariantId={setSelectedVariantId} isOwn={Boolean(variant?.isOwn)} ownPlaceholder={question.content.ownPlaceholder} /> ))} /> setOpenCropModal(false)} setPictureUploading={setPictureUploading} /> { addQuestionVariant(question.id); }} > Добавьте ответ {isMobile ? null : ( <> или нажмите Enter )} ); }