import {errorButtonStyle, infoButtonStyle} from "@/constants/buttonStyles"; import {MatchSentencesExercise} from "@/interfaces/exam"; import {mdiArrowLeft, mdiArrowRight} from "@mdi/js"; import Icon from "@mdi/react"; import clsx from "clsx"; import {useState} from "react"; import LineTo from "react-lineto"; import {CommonProps} from "."; const AVAILABLE_COLORS = ["#63526a", "#f7651d", "#278f04", "#ef4487", "#ca68c0", "#f5fe9b", "#b3ab01", "#af963a", "#9a85f1", "#1b1750"]; export default function MatchSentences({allowRepetition, options, prompt, sentences, onNext, onBack}: MatchSentencesExercise & CommonProps) { const [selectedQuestion, setSelectedQuestion] = useState(); const [userSolutions, setUserSolutions] = useState<{question: string; option: string}[]>([]); const selectOption = (option: string) => { if (!selectedQuestion) return; setUserSolutions((prev) => [...prev.filter((x) => x.question !== selectedQuestion), {question: selectedQuestion, option}]); setSelectedQuestion(undefined); }; const getSentenceColor = (id: string) => { return sentences.find((x) => x.id === id)?.color || ""; }; return ( <>
{prompt}
{sentences.map(({sentence, id, color}) => (
setSelectedQuestion((prev) => (prev === id ? undefined : id))}> {id}. {sentence}{" "}
))}
{options.map(({sentence, id}) => (
selectOption(id)}>
x.option === id) ? { border: `2px solid ${getSentenceColor(userSolutions.find((x) => x.option === id)!.question)}`, } : {} } className={clsx("border-2 border-green-500 bg-transparent w-4 h-4 rounded-full", id)} /> {id}. {sentence}{" "}
))}
{userSolutions.map((solution, index) => (
x.id === solution.question)!.color} borderWidth={5} />
))}
); } export function MatchSentencesSolutions({allowRepetition, options, prompt, sentences, userSolutions}: MatchSentencesExercise) { const getSentenceColor = (id: string) => { return sentences.find((x) => x.id === id)?.color || ""; }; return (
{prompt}
{sentences.map(({sentence, id, color}) => (
{id}. {sentence}{" "}
))}
{options.map(({sentence, id}) => (
x.option === id) ? { border: `2px solid ${getSentenceColor(userSolutions.find((x) => x.option === id)!.question)}`, } : {} } className={clsx("border-2 border-green-500 bg-transparent w-4 h-4 rounded-full", id)} /> {id}. {sentence}{" "}
))}
{userSolutions.map((solution, index) => (
x.id === solution.question)!.color} borderWidth={5} />
))}
{sentences.map(({sentence, id, color}) => (
{id}. {sentence}{" "}
))}
{options.map(({sentence, id}) => (
x.option === id) ? { border: `2px solid ${getSentenceColor(userSolutions.find((x) => x.option === id)!.question)}`, } : {} } className={clsx("border-2 border-green-500 bg-transparent w-4 h-4 rounded-full", id)} /> {id}. {sentence}{" "}
))}
{sentences.map(({id, solution}, index) => (
x.id === id)!.color} borderWidth={5} />
))}
); }