import { Box, Button, LinearProgress, Paper, Typography } from "@mui/material"; import { questionStore } from "@root/questions"; import { decrementCurrentQuestionIndex, incrementCurrentQuestionIndex, useQuizPreviewStore, } from "@root/quizPreview"; import { AnyQuizQuestion } from "model/questionTypes/shared"; import { useEffect } from "react"; import { useParams } from "react-router-dom"; import ArrowLeft from "../../assets/icons/questionsPage/arrowLeft"; import Date from "./QuizPreviewQuestionTypes/Date"; import Emoji from "./QuizPreviewQuestionTypes/Emoji"; import File from "./QuizPreviewQuestionTypes/File"; import Images from "./QuizPreviewQuestionTypes/Images"; import Number from "./QuizPreviewQuestionTypes/Number"; import Page from "./QuizPreviewQuestionTypes/Page"; import Rating from "./QuizPreviewQuestionTypes/Rating"; import Select from "./QuizPreviewQuestionTypes/Select"; import Text from "./QuizPreviewQuestionTypes/Text"; import Variant from "./QuizPreviewQuestionTypes/Variant"; import Varimg from "./QuizPreviewQuestionTypes/Varimg"; export default function QuizPreviewLayout() { const quizId = useParams().quizId ?? 0; const listQuestions = questionStore((state) => state.listQuestions); const currentQuizStep = useQuizPreviewStore( (state) => state.currentQuestionIndex ); const quizQuestions = listQuestions[quizId] ?? []; const nonDeletedQuizQuestions = quizQuestions.filter( (question) => !question.deleted ); const maxCurrentQuizStep = nonDeletedQuizQuestions.length > 0 ? nonDeletedQuizQuestions.length - 1 : 0; const currentProgress = Math.floor( (currentQuizStep / maxCurrentQuizStep) * 100 ); const currentQuestion = nonDeletedQuizQuestions[currentQuizStep]; useEffect( function resetCurrentQuizStep() { if (currentQuizStep > maxCurrentQuizStep) { decrementCurrentQuestionIndex(); } }, [currentQuizStep, maxCurrentQuizStep] ); return ( {nonDeletedQuizQuestions.length > 0 ? `Вопрос ${currentQuizStep + 1} из ${nonDeletedQuizQuestions.length }` : "Нет вопросов"} {nonDeletedQuizQuestions.length > 0 && ( )} ); } function QuestionPreviewComponent({ question }: { question: AnyQuizQuestion; }) { switch (question.type) { case "variant": return ; case "images": return ; case "varimg": return ; case "emoji": return ; case "text": return ; case "select": return