import { ImageAddIcons } from "@icons/ImageAddIcons"; import { MessageIcon } from "@icons/messagIcon"; import { PointsIcon } from "@icons/questionsPage/PointsIcon"; import { DeleteIcon } from "@icons/questionsPage/deleteIcon"; import { Box, IconButton, InputAdornment, Link, Popover, TextField, TextareaAutosize, Typography, useMediaQuery, useTheme } from "@mui/material"; import { addQuestionVariant, uploadQuestionImage } from "@root/questions/actions"; import { useCurrentQuiz } from "@root/quizes/hooks"; import AddOrEditImageButton from "@ui_kit/AddOrEditImageButton"; import { CropModal, useCropModalState } from "@ui_kit/Modal/CropModal"; import { useState } from "react"; import { useDisclosure } from "../../../utils/useDisclosure"; import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon"; import type { QuizQuestionVarImg } from "../../../model/questionTypes/varimg"; import { AnswerDraggableList } from "../AnswerDraggableList"; import ButtonsOptionsAndPict from "../ButtonsOptionsAndPict"; import { UploadImageModal } from "../UploadImage/UploadImageModal"; import SwitchOptionsAndPict from "./switchOptionsAndPict"; interface Props { question: QuizQuestionVarImg; } export default function OptionsAndPicture({ question }: Props) { const [switchState, setSwitchState] = useState("setting"); const [selectedVariantId, setSelectedVariantId] = useState(null); const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); 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 SSHC = (data: string) => { setSwitchState(data); }; const handleImageUpload = async (file: File) => { if (!selectedVariantId) return; 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); }; 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; }); } return ( <> ( <> {!isMobile && ( { setSelectedVariantId(variant.id); if (variant.extendedText) { return openCropModal( variant.extendedText, variant.originalImageUrl ); } openImageUploadModal(); }} onPlusClick={() => { setSelectedVariantId(variant.id); openImageUploadModal(); }} sx={{ mx: "10px" }} /> )} )} additionalMobile={(variant) => ( <> {isMobile && ( { setSelectedVariantId(variant.id); if (variant.extendedText) { return openCropModal( variant.extendedText, variant.originalImageUrl ); } openImageUploadModal(); }} onPlusClick={() => { setSelectedVariantId(variant.id); openImageUploadModal(); }} sx={{ m: "8px", width: "auto" }} /> )} )} /> {!isMobile && ( + )} ), endAdornment: ( ), }} sx={{ "& .MuiInputBase-root": { padding: "13.5px", borderRadius: "10px", background: "#ffffff", height: "48px", }, "& .MuiOutlinedInput-notchedOutline": { border: "none", }, }} inputProps={{ sx: { fontSize: "18px", lineHeight: "21px", py: 0 }, }} /> {isMobile && ( + )} { addQuestionVariant(question.id); }} > Добавьте ответ {isMobile ? null : ( <> или нажмите Enter )} ); }