import { useState, useEffect } from "react"; import { Box } from "@mui/material"; import { useQuestionsStore } from "@root/quizData/store" import { getQuestionById } from "@root/quizData/actions"; import { Variant } from "./questions/Variant"; import { Images } from "./questions/Images"; import { Varimg } from "./questions/Varimg"; import { Emoji } from "./questions/Emoji"; import { Text } from "./questions/Text"; import { Select } from "./questions/Select"; import { Date } from "./questions/Date"; import { Number } from "./questions/Number"; import { File } from "./questions/File"; import { Page } from "./questions/Page"; import { Rating } from "./questions/Rating"; import { Footer } from "./Footer"; import { ContactForm } from "./ContactForm"; import { ResultForm } from "./ResultForm"; import type { QuestionType } from "@model/questionTypes/shared"; import type { AnyTypedQuizQuestion } from "../../model/questionTypes/shared"; type QuestionProps = { questions: AnyTypedQuizQuestion[]; }; const QUESTIONS_MAP: any = { variant: Variant, images: Images, varimg: Varimg, emoji: Emoji, text: Text, select: Select, date: Date, number: Number, file: File, page: Page, rating: Rating, }; export const Question = ({ questions }: QuestionProps) => { const { settings, cnt, items } = useQuestionsStore() const [currentQuestion, setCurrentQuestion] = useState(); const [showContactForm, setShowContactForm] = useState(false); const [showResultForm, setShowResultForm] = useState(false); useEffect(() => { if (settings?.cfg.haveRoot) {//ветвимся const nextQuestion = getQuestionById(settings?.cfg.haveRoot || ""); if (nextQuestion?.type) { setCurrentQuestion(nextQuestion); return; } } else {//идём прямо setCurrentQuestion(questions[0]); } }, []); if (!currentQuestion) return <>не смог отобразить вопрос; const QuestionComponent = QUESTIONS_MAP[currentQuestion.type as Exclude]; return ( {!showContactForm && !showResultForm && ( )} {showResultForm && settings?.cfg.resultInfo.when === "before" && ( )} {showContactForm && ( )} {showResultForm && settings?.cfg.resultInfo.when === "after" && ( )} {!showContactForm && !showResultForm && (