import { Box, Link, Typography, useTheme, useMediaQuery, InputAdornment, IconButton, Button, Popover, TextareaAutosize, TextField, } from "@mui/material"; import { useState } from "react"; import { useParams } from "react-router-dom"; import { CropModal } from "@ui_kit/Modal/CropModal"; import { AnswerDraggableList } from "../AnswerDraggableList"; import { UploadImageModal } from "../UploadImage/UploadImageModal"; import { ImageAddIcons } from "@icons/ImageAddIcons"; import { MessageIcon } from "@icons/messagIcon"; import { PointsIcon } from "@icons/questionsPage/PointsIcon"; import { DeleteIcon } from "@icons/questionsPage/deleteIcon"; import { questionStore, setVariantImageUrl, setVariantOriginalImageUrl, updateQuestionsList } from "@root/questions"; import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon"; import ButtonsOptionsAndPict from "../ButtonsOptionsAndPict"; import SwitchOptionsAndPict from "./switchOptionsAndPict"; import { openCropModal } from "@root/cropModal"; import AddOrEditImageButton from "@ui_kit/AddOrEditImageButton"; import type { QuizQuestionVarImg } from "../../../model/questionTypes/varimg"; interface Props { totalIndex: number; } export default function OptionsAndPicture({ totalIndex }: Props) { const [isUploadImageModalOpen, setIsUploadImageModalOpen] = useState(false); const [switchState, setSwitchState] = useState("setting"); const [currentIndex, setCurrentIndex] = useState(0); const quizId = Number(useParams().quizId); const { listQuestions } = questionStore(); const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const isMobile = useMediaQuery(theme.breakpoints.down(790)); const question = listQuestions[quizId][totalIndex] as QuizQuestionVarImg; const SSHC = (data: string) => { setSwitchState(data); }; const handleImageUpload = (files: FileList | null) => { if (!files?.length) return; const [file] = Array.from(files); const url = URL.createObjectURL(file); setVariantImageUrl(quizId, totalIndex, currentIndex, url); setVariantOriginalImageUrl(quizId, totalIndex, currentIndex, url); setIsUploadImageModalOpen(false); openCropModal(url, url); }; function handleCropModalSaveClick(url: string) { setVariantImageUrl(quizId, totalIndex, currentIndex, url); } return ( <> ( <> {!isMobile && ( { if (!("originalImageUrl" in variant)) return; setCurrentIndex(index); if (variant.extendedText) return openCropModal( variant.extendedText, variant.originalImageUrl ); setIsUploadImageModalOpen(true); }} onPlusClick={() => { setCurrentIndex(index); setIsUploadImageModalOpen(true); }} sx={{ mx: "10px" }} /> )} )} additionalMobile={(variant, index) => ( <> {isMobile && ( { if (!("originalImageUrl" in variant)) return; setCurrentIndex(index); if (variant.extendedText) return openCropModal( variant.extendedText, variant.originalImageUrl ); setIsUploadImageModalOpen(true); }} onPlusClick={() => { setCurrentIndex(index); setIsUploadImageModalOpen(true); }} sx={{ m: "8px", width: "auto" }} /> )} )} /> setIsUploadImageModalOpen(false)} imgHC={handleImageUpload} /> {!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 && ( + )} { const clonedContent = { ...question.content }; clonedContent.variants.push({ answer: "", hints: "", extendedText: "", originalImageUrl: "", }); updateQuestionsList(quizId, totalIndex, { content: clonedContent, }); }} > Добавьте ответ {isMobile ? null : ( <> или нажмите Enter )} ); }