import { CheckboxIcon } from "@/assets/icons/Checkbox"; import type { QuestionVariant, QuestionVariantWithEditedImages } from "@/model/questionTypes/shared"; import { useQuizSettings } from "@contexts/QuizDataContext"; import { Box, Checkbox, FormControlLabel, Input, Radio, TextareaAutosize, Typography, useTheme } from "@mui/material"; import { useQuizViewStore } from "@stores/quizView"; import RadioCheck from "@ui_kit/RadioCheck"; import RadioIcon from "@ui_kit/RadioIcon"; import { quizThemes } from "@utils/themes/Publication/themePublication"; import { useMemo, type MouseEvent } from "react"; import { useRootContainerSize } from "@contexts/RootContainerWidthContext"; type ImagesProps = { questionId: string; variant: QuestionVariantWithEditedImages; index: number; answer: string | string[] | undefined; isMulti: boolean; own: boolean; questionLargeCheck: boolean; ownPlaceholder: string; }; interface OwnInputProps { questionId: string; variant: QuestionVariant; largeCheck: boolean; ownPlaceholder: string; } const OwnInput = ({ questionId, variant, largeCheck, ownPlaceholder }: OwnInputProps) => { const theme = useTheme(); const ownVariants = useQuizViewStore((state) => state.ownVariants); const { updateOwnVariant } = useQuizViewStore((state) => state); const ownAnswer = ownVariants[ownVariants.findIndex((v) => v.id === variant.id)]?.variant.answer || ""; return largeCheck ? ( ) => e.stopPropagation()} onChange={(e: React.ChangeEvent) => { updateOwnVariant(variant.id, e.target.value); }} /> ) : ( ) => e.stopPropagation()} onChange={(e: React.ChangeEvent) => { updateOwnVariant(variant.id, e.target.value); }} /> ); }; export const ImageVariant = ({ questionId, answer, isMulti, variant, index, own, questionLargeCheck, ownPlaceholder, }: ImagesProps) => { const { settings } = useQuizSettings(); const { deleteAnswer, updateAnswer } = useQuizViewStore((state) => state); const theme = useTheme(); const answers = useQuizViewStore((state) => state.answers); const isMobile = useRootContainerSize() < 450; const isTablet = useRootContainerSize() < 850; const onVariantClick = async (event: MouseEvent) => { event.preventDefault(); const variantId = variant.id; if (isMulti) { const currentAnswer = typeof answer !== "string" ? answer || [] : []; return updateAnswer( questionId, currentAnswer.includes(variantId) ? currentAnswer?.filter((item) => item !== variantId) : [...currentAnswer, variantId], variant.points || 0 ); } updateAnswer(questionId, variantId, variant.points || 0); if (answer === variantId) { deleteAnswer(questionId); } }; const choiceImgUrl = useMemo(() => { if (variant.editedUrlImagesList !== undefined && variant.editedUrlImagesList !== null) { return variant.editedUrlImagesList[isMobile ? "mobile" : isTablet ? "tablet" : "desktop"]; } else { return variant.extendedText; } }, []); return ( {variant.extendedText && ( )} {own && ( Введите свой ответ )} } icon={} sx={{ position: "absolute", top: "-297px", right: 0, }} /> ) : ( } icon={} sx={{ position: "absolute", top: "-297px", right: 0, }} /> ) } label={ own ? ( ) : ( variant.answer ) } /> ); };