analytica-frontend-lib 1.0.96 → 1.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CheckBox/index.d.mts +1 -1
- package/dist/CheckBox/index.d.ts +1 -1
- package/dist/Quiz/index.d.mts +12 -14
- package/dist/Quiz/index.d.ts +12 -14
- package/dist/Quiz/index.js +495 -93
- package/dist/Quiz/index.js.map +1 -1
- package/dist/Quiz/index.mjs +494 -93
- package/dist/Quiz/index.mjs.map +1 -1
- package/dist/Quiz/useQuizStore/index.d.mts +4 -1
- package/dist/Quiz/useQuizStore/index.d.ts +4 -1
- package/dist/Quiz/useQuizStore/index.js +3 -0
- package/dist/Quiz/useQuizStore/index.js.map +1 -1
- package/dist/Quiz/useQuizStore/index.mjs +3 -0
- package/dist/Quiz/useQuizStore/index.mjs.map +1 -1
- package/dist/Radio/index.d.mts +2 -2
- package/dist/Radio/index.d.ts +2 -2
- package/dist/Search/index.d.mts +1 -1
- package/dist/Search/index.d.ts +1 -1
- package/dist/Select/index.js +3 -3
- package/dist/Select/index.js.map +1 -1
- package/dist/Select/index.mjs +3 -3
- package/dist/Select/index.mjs.map +1 -1
- package/dist/index.css +35 -3
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +491 -91
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +492 -92
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +35 -3
- package/dist/styles.css.map +1 -1
- package/package.json +1 -1
package/dist/Quiz/index.js
CHANGED
|
@@ -22,8 +22,10 @@ var Quiz_exports = {};
|
|
|
22
22
|
__export(Quiz_exports, {
|
|
23
23
|
Quiz: () => Quiz,
|
|
24
24
|
QuizAlternative: () => QuizAlternative,
|
|
25
|
+
QuizConnectDots: () => QuizConnectDots,
|
|
25
26
|
QuizContent: () => QuizContent,
|
|
26
27
|
QuizDissertative: () => QuizDissertative,
|
|
28
|
+
QuizFill: () => QuizFill,
|
|
27
29
|
QuizFooter: () => QuizFooter,
|
|
28
30
|
QuizHeader: () => QuizHeader,
|
|
29
31
|
QuizHeaderResult: () => QuizHeaderResult,
|
|
@@ -34,7 +36,9 @@ __export(Quiz_exports, {
|
|
|
34
36
|
QuizResultHeaderTitle: () => QuizResultHeaderTitle,
|
|
35
37
|
QuizResultPerformance: () => QuizResultPerformance,
|
|
36
38
|
QuizResultTitle: () => QuizResultTitle,
|
|
37
|
-
QuizTitle: () => QuizTitle
|
|
39
|
+
QuizTitle: () => QuizTitle,
|
|
40
|
+
QuizTrueOrFalse: () => QuizTrueOrFalse,
|
|
41
|
+
getStatusBadge: () => getStatusBadge
|
|
38
42
|
});
|
|
39
43
|
module.exports = __toCommonJS(Quiz_exports);
|
|
40
44
|
var import_phosphor_react9 = require("phosphor-react");
|
|
@@ -601,7 +605,7 @@ var AlternativesList = ({
|
|
|
601
605
|
const groupName = name || `alternatives-${uniqueId}`;
|
|
602
606
|
const [actualValue, setActualValue] = (0, import_react2.useState)(value);
|
|
603
607
|
const isReadonly = mode === "readonly";
|
|
604
|
-
const
|
|
608
|
+
const getStatusStyles2 = (status, isReadonly2) => {
|
|
605
609
|
const hoverClass = isReadonly2 ? "" : "hover:bg-background-50";
|
|
606
610
|
switch (status) {
|
|
607
611
|
case "correct":
|
|
@@ -612,7 +616,7 @@ var AlternativesList = ({
|
|
|
612
616
|
return `bg-background border-border-100 ${hoverClass}`;
|
|
613
617
|
}
|
|
614
618
|
};
|
|
615
|
-
const
|
|
619
|
+
const getStatusBadge2 = (status) => {
|
|
616
620
|
switch (status) {
|
|
617
621
|
case "correct":
|
|
618
622
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_phosphor_react2.CheckCircle, {}), children: "Resposta correta" });
|
|
@@ -642,8 +646,8 @@ var AlternativesList = ({
|
|
|
642
646
|
} else if (isCorrectAnswer) {
|
|
643
647
|
displayStatus = "correct";
|
|
644
648
|
}
|
|
645
|
-
const statusStyles =
|
|
646
|
-
const statusBadge =
|
|
649
|
+
const statusStyles = getStatusStyles2(displayStatus, true);
|
|
650
|
+
const statusBadge = getStatusBadge2(displayStatus);
|
|
647
651
|
const renderRadio = () => {
|
|
648
652
|
const radioClasses = `w-6 h-6 rounded-full border-2 cursor-default transition-all duration-200 flex items-center justify-center ${isUserSelected ? "border-primary-950 bg-background" : "border-border-400 bg-background"}`;
|
|
649
653
|
const dotClasses = "w-3 h-3 rounded-full bg-primary-950 transition-all duration-200";
|
|
@@ -734,8 +738,8 @@ var AlternativesList = ({
|
|
|
734
738
|
className: cn("flex flex-col", getLayoutClasses(), className),
|
|
735
739
|
children: alternatives.map((alternative, index) => {
|
|
736
740
|
const alternativeId = alternative.value || `alt-${index}`;
|
|
737
|
-
const statusStyles =
|
|
738
|
-
const statusBadge =
|
|
741
|
+
const statusStyles = getStatusStyles2(alternative.status, false);
|
|
742
|
+
const statusBadge = getStatusBadge2(alternative.status);
|
|
739
743
|
if (layout === "detailed") {
|
|
740
744
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
741
745
|
"div",
|
|
@@ -1830,7 +1834,7 @@ var Select = ({
|
|
|
1830
1834
|
}
|
|
1831
1835
|
}, [propValue]);
|
|
1832
1836
|
const sizeClasses = SIZE_CLASSES6[size];
|
|
1833
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: cn("w-
|
|
1837
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: cn("w-fit", className), children: [
|
|
1834
1838
|
label && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1835
1839
|
"label",
|
|
1836
1840
|
{
|
|
@@ -1839,7 +1843,7 @@ var Select = ({
|
|
|
1839
1843
|
children: label
|
|
1840
1844
|
}
|
|
1841
1845
|
),
|
|
1842
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("relative"), ref: selectRef, children: injectStore2(children, store, size, selectId) }),
|
|
1846
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("relative w-fit"), ref: selectRef, children: injectStore2(children, store, size, selectId) }),
|
|
1843
1847
|
(helperText || errorMessage) && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "mt-1.5 gap-1.5", children: [
|
|
1844
1848
|
helperText && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-sm text-text-500", children: helperText }),
|
|
1845
1849
|
errorMessage && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { className: "flex gap-1 items-center text-sm text-indicator-error", children: [
|
|
@@ -1932,7 +1936,7 @@ var SelectContent = (0, import_react6.forwardRef)(
|
|
|
1932
1936
|
role: "menu",
|
|
1933
1937
|
ref,
|
|
1934
1938
|
className: cn(
|
|
1935
|
-
"bg-secondary z-50 min-w-[210px] overflow-hidden rounded-md border p-1 shadow-md border-border-100",
|
|
1939
|
+
"bg-secondary z-50 min-w-[210px] max-h-[300px] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md border-border-100",
|
|
1936
1940
|
getPositionClasses(),
|
|
1937
1941
|
className
|
|
1938
1942
|
),
|
|
@@ -4211,7 +4215,7 @@ var MultipleChoiceList = ({
|
|
|
4211
4215
|
(0, import_react10.useEffect)(() => {
|
|
4212
4216
|
setActualValue(selectedValues);
|
|
4213
4217
|
}, [selectedValues]);
|
|
4214
|
-
const
|
|
4218
|
+
const getStatusBadge2 = (status) => {
|
|
4215
4219
|
switch (status) {
|
|
4216
4220
|
case "correct":
|
|
4217
4221
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_phosphor_react7.CheckCircle, {}), children: "Resposta correta" });
|
|
@@ -4221,7 +4225,7 @@ var MultipleChoiceList = ({
|
|
|
4221
4225
|
return null;
|
|
4222
4226
|
}
|
|
4223
4227
|
};
|
|
4224
|
-
const
|
|
4228
|
+
const getStatusStyles2 = (status) => {
|
|
4225
4229
|
switch (status) {
|
|
4226
4230
|
case "correct":
|
|
4227
4231
|
return "bg-success-background border-success-300";
|
|
@@ -4242,8 +4246,8 @@ var MultipleChoiceList = ({
|
|
|
4242
4246
|
if (mode === "readonly") {
|
|
4243
4247
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn("flex flex-col gap-2", className), children: choices.map((choice, i) => {
|
|
4244
4248
|
const isSelected = actualValue?.includes(choice.value) || false;
|
|
4245
|
-
const statusStyles =
|
|
4246
|
-
const statusBadge =
|
|
4249
|
+
const statusStyles = getStatusStyles2(choice.status);
|
|
4250
|
+
const statusBadge = getStatusBadge2(choice.status);
|
|
4247
4251
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
4248
4252
|
"div",
|
|
4249
4253
|
{
|
|
@@ -4465,6 +4469,24 @@ var TextArea_default = TextArea;
|
|
|
4465
4469
|
|
|
4466
4470
|
// src/components/Quiz/Quiz.tsx
|
|
4467
4471
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
4472
|
+
var getStatusBadge = (status) => {
|
|
4473
|
+
switch (status) {
|
|
4474
|
+
case "correct":
|
|
4475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_phosphor_react9.CheckCircle, {}), children: "Resposta correta" });
|
|
4476
|
+
case "incorrect":
|
|
4477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_phosphor_react9.XCircle, {}), children: "Resposta incorreta" });
|
|
4478
|
+
default:
|
|
4479
|
+
return null;
|
|
4480
|
+
}
|
|
4481
|
+
};
|
|
4482
|
+
var getStatusStyles = (variantCorrect) => {
|
|
4483
|
+
switch (variantCorrect) {
|
|
4484
|
+
case "correct":
|
|
4485
|
+
return "bg-success-background border-success-300";
|
|
4486
|
+
case "incorrect":
|
|
4487
|
+
return "bg-error-background border-error-300";
|
|
4488
|
+
}
|
|
4489
|
+
};
|
|
4468
4490
|
var Quiz = (0, import_react12.forwardRef)(({ children, className, ...props }, ref) => {
|
|
4469
4491
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4470
4492
|
"div",
|
|
@@ -4543,58 +4565,55 @@ var QuizTitle = (0, import_react12.forwardRef)(
|
|
|
4543
4565
|
);
|
|
4544
4566
|
}
|
|
4545
4567
|
);
|
|
4568
|
+
var QuizSubTitle = (0, import_react12.forwardRef)(
|
|
4569
|
+
({ subTitle, ...props }, ref) => {
|
|
4570
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "px-4 pb-2 pt-6", ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "font-bold text-lg text-text-950", children: subTitle }) });
|
|
4571
|
+
}
|
|
4572
|
+
);
|
|
4546
4573
|
var QuizHeader = () => {
|
|
4547
|
-
const { getCurrentQuestion } = useQuizStore();
|
|
4574
|
+
const { getCurrentQuestion, currentQuestionIndex } = useQuizStore();
|
|
4548
4575
|
const currentQuestion = getCurrentQuestion();
|
|
4549
4576
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4550
4577
|
HeaderAlternative,
|
|
4551
4578
|
{
|
|
4552
|
-
title: currentQuestion ? `Quest\xE3o ${
|
|
4579
|
+
title: currentQuestion ? `Quest\xE3o ${currentQuestionIndex + 1}` : "Quest\xE3o",
|
|
4553
4580
|
subTitle: currentQuestion?.knowledgeMatrix?.[0]?.topicId ?? "",
|
|
4554
4581
|
content: currentQuestion?.questionText ?? ""
|
|
4555
4582
|
}
|
|
4556
4583
|
);
|
|
4557
4584
|
};
|
|
4558
|
-
var
|
|
4559
|
-
|
|
4585
|
+
var QuizContainer = (0, import_react12.forwardRef)(({ children, className, ...props }, ref) => {
|
|
4586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4587
|
+
"div",
|
|
4588
|
+
{
|
|
4589
|
+
ref,
|
|
4590
|
+
className: cn(
|
|
4591
|
+
"bg-background rounded-t-xl px-4 pt-4 pb-[80px] h-auto flex flex-col gap-4 mb-auto",
|
|
4592
|
+
className
|
|
4593
|
+
),
|
|
4594
|
+
...props,
|
|
4595
|
+
children
|
|
4596
|
+
}
|
|
4597
|
+
);
|
|
4598
|
+
});
|
|
4599
|
+
var QuizContent = (0, import_react12.forwardRef)(({ variant, paddingBottom }) => {
|
|
4600
|
+
const { getCurrentQuestion } = useQuizStore();
|
|
4560
4601
|
const currentQuestion = getCurrentQuestion();
|
|
4561
|
-
const
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
/*
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
),
|
|
4572
|
-
...props,
|
|
4573
|
-
children: currentQuestion && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4574
|
-
currentQuestion.type === "ALTERNATIVA" /* ALTERNATIVA */ && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizAlternative, { variant }),
|
|
4575
|
-
currentQuestion.type === "MULTIPLA_CHOICE" /* MULTIPLA_CHOICE */ && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizMultipleChoice, { variant }),
|
|
4576
|
-
currentQuestion.type === "DISSERTATIVA" /* DISSERTATIVA */ && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizDissertative, { variant })
|
|
4577
|
-
] })
|
|
4578
|
-
}
|
|
4579
|
-
),
|
|
4580
|
-
currentQuestion?.type === "DISSERTATIVA" /* DISSERTATIVA */ && variant === "result" && currentAnswer?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4581
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "px-4 pb-2 pt-6", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "font-bold text-lg text-text-950", children: "Observa\xE7\xE3o do professor" }) }),
|
|
4582
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4583
|
-
"div",
|
|
4584
|
-
{
|
|
4585
|
-
ref,
|
|
4586
|
-
className: cn(
|
|
4587
|
-
"bg-background rounded-t-xl px-4 pt-4 pb-[80px] h-full flex flex-col gap-4 mb-auto",
|
|
4588
|
-
className
|
|
4589
|
-
),
|
|
4590
|
-
...props,
|
|
4591
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Mauris euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim." })
|
|
4592
|
-
}
|
|
4593
|
-
)
|
|
4594
|
-
] })
|
|
4595
|
-
] });
|
|
4602
|
+
const questionComponents = {
|
|
4603
|
+
["ALTERNATIVA" /* ALTERNATIVA */]: QuizAlternative,
|
|
4604
|
+
["MULTIPLA_CHOICE" /* MULTIPLA_CHOICE */]: QuizMultipleChoice,
|
|
4605
|
+
["DISSERTATIVA" /* DISSERTATIVA */]: QuizDissertative,
|
|
4606
|
+
["VERDADEIRO_FALSO" /* VERDADEIRO_FALSO */]: QuizTrueOrFalse,
|
|
4607
|
+
["LIGAR_PONTOS" /* LIGAR_PONTOS */]: QuizConnectDots,
|
|
4608
|
+
["PREENCHER" /* PREENCHER */]: QuizFill
|
|
4609
|
+
};
|
|
4610
|
+
const QuestionComponent = currentQuestion ? questionComponents[currentQuestion.type] : null;
|
|
4611
|
+
return QuestionComponent ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuestionComponent, { variant, paddingBottom }) : null;
|
|
4596
4612
|
});
|
|
4597
|
-
var QuizAlternative = ({
|
|
4613
|
+
var QuizAlternative = ({
|
|
4614
|
+
variant = "default",
|
|
4615
|
+
paddingBottom
|
|
4616
|
+
}) => {
|
|
4598
4617
|
const { getCurrentQuestion, selectAnswer, getCurrentAnswer } = useQuizStore();
|
|
4599
4618
|
const currentQuestion = getCurrentQuestion();
|
|
4600
4619
|
const currentAnswer = getCurrentAnswer();
|
|
@@ -4618,26 +4637,30 @@ var QuizAlternative = ({ variant = "default" }) => {
|
|
|
4618
4637
|
});
|
|
4619
4638
|
if (!alternatives)
|
|
4620
4639
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { children: "N\xE3o h\xE1 Alternativas" }) });
|
|
4621
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.
|
|
4622
|
-
|
|
4623
|
-
{
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4640
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4641
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
4642
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4643
|
+
AlternativesList,
|
|
4644
|
+
{
|
|
4645
|
+
mode: variant === "default" ? "interactive" : "readonly",
|
|
4646
|
+
name: `question-${currentQuestion?.id || "1"}`,
|
|
4647
|
+
layout: "compact",
|
|
4648
|
+
alternatives,
|
|
4649
|
+
value: currentAnswer?.optionId || "",
|
|
4650
|
+
selectedValue: currentAnswer?.optionId || "",
|
|
4651
|
+
onValueChange: (value) => {
|
|
4652
|
+
if (currentQuestion) {
|
|
4653
|
+
selectAnswer(currentQuestion.id, value);
|
|
4654
|
+
}
|
|
4633
4655
|
}
|
|
4634
|
-
}
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4656
|
+
},
|
|
4657
|
+
`question-${currentQuestion?.id || "1"}`
|
|
4658
|
+
) }) })
|
|
4659
|
+
] });
|
|
4638
4660
|
};
|
|
4639
4661
|
var QuizMultipleChoice = ({
|
|
4640
|
-
variant = "default"
|
|
4662
|
+
variant = "default",
|
|
4663
|
+
paddingBottom
|
|
4641
4664
|
}) => {
|
|
4642
4665
|
const { getCurrentQuestion, selectMultipleAnswer, getAllCurrentAnswer } = useQuizStore();
|
|
4643
4666
|
const currentQuestion = getCurrentQuestion();
|
|
@@ -4695,20 +4718,24 @@ var QuizMultipleChoice = ({
|
|
|
4695
4718
|
});
|
|
4696
4719
|
if (!choices)
|
|
4697
4720
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { children: "N\xE3o h\xE1 Escolhas Multiplas" }) });
|
|
4698
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.
|
|
4699
|
-
|
|
4700
|
-
{
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
|
|
4721
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4722
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
4723
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4724
|
+
MultipleChoiceList,
|
|
4725
|
+
{
|
|
4726
|
+
choices,
|
|
4727
|
+
name: questionKey,
|
|
4728
|
+
selectedValues: stableSelectedValues,
|
|
4729
|
+
onHandleSelectedValues: handleSelectedValues,
|
|
4730
|
+
mode: variant === "default" ? "interactive" : "readonly"
|
|
4731
|
+
},
|
|
4732
|
+
questionKey
|
|
4733
|
+
) }) })
|
|
4734
|
+
] });
|
|
4709
4735
|
};
|
|
4710
4736
|
var QuizDissertative = ({
|
|
4711
|
-
variant = "default"
|
|
4737
|
+
variant = "default",
|
|
4738
|
+
paddingBottom
|
|
4712
4739
|
}) => {
|
|
4713
4740
|
const { getCurrentQuestion, getCurrentAnswer, selectDissertativeAnswer } = useQuizStore();
|
|
4714
4741
|
const currentQuestion = getCurrentQuestion();
|
|
@@ -4735,17 +4762,388 @@ var QuizDissertative = ({
|
|
|
4735
4762
|
if (!currentQuestion) {
|
|
4736
4763
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-600 text-md", children: "Nenhuma quest\xE3o dispon\xEDvel" }) });
|
|
4737
4764
|
}
|
|
4738
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.
|
|
4739
|
-
|
|
4765
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4766
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Resposta" }),
|
|
4767
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: cn(variant != "result" && paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-4 max-h-[600px] overflow-y-auto", children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4768
|
+
TextArea_default,
|
|
4769
|
+
{
|
|
4770
|
+
ref: textareaRef,
|
|
4771
|
+
placeholder: "Escreva sua resposta",
|
|
4772
|
+
value: currentAnswer?.answer || "",
|
|
4773
|
+
onChange: (e) => handleAnswerChange(e.target.value),
|
|
4774
|
+
rows: 4,
|
|
4775
|
+
className: "min-h-[120px] max-h-[400px] resize-none overflow-y-auto"
|
|
4776
|
+
}
|
|
4777
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: currentAnswer?.answer || "Nenhuma resposta fornecida" }) }) }) }),
|
|
4778
|
+
variant === "result" && currentAnswer?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4779
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Observa\xE7\xE3o do professor" }),
|
|
4780
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Mauris euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim." }) })
|
|
4781
|
+
] })
|
|
4782
|
+
] });
|
|
4783
|
+
};
|
|
4784
|
+
var QuizTrueOrFalse = ({
|
|
4785
|
+
variant = "default",
|
|
4786
|
+
paddingBottom
|
|
4787
|
+
}) => {
|
|
4788
|
+
const options = [
|
|
4789
|
+
{
|
|
4790
|
+
label: "25 metros",
|
|
4791
|
+
isCorrect: true
|
|
4792
|
+
},
|
|
4793
|
+
{
|
|
4794
|
+
label: "30 metros",
|
|
4795
|
+
isCorrect: false
|
|
4796
|
+
},
|
|
4797
|
+
{
|
|
4798
|
+
label: "40 metros",
|
|
4799
|
+
isCorrect: false
|
|
4800
|
+
},
|
|
4801
|
+
{
|
|
4802
|
+
label: "50 metros",
|
|
4803
|
+
isCorrect: false
|
|
4804
|
+
}
|
|
4805
|
+
];
|
|
4806
|
+
const getLetterByIndex = (index) => String.fromCharCode(97 + index);
|
|
4807
|
+
const isDefaultVariant = variant == "default";
|
|
4808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4809
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
4810
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
|
|
4811
|
+
const variantCorrect = option.isCorrect ? "correct" : "incorrect";
|
|
4812
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
4813
|
+
"section",
|
|
4814
|
+
{
|
|
4815
|
+
className: "flex flex-col gap-2",
|
|
4816
|
+
children: [
|
|
4817
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
4818
|
+
"div",
|
|
4819
|
+
{
|
|
4820
|
+
className: cn(
|
|
4821
|
+
"flex flex-row justify-between items-center gap-2 p-2 rounded-md",
|
|
4822
|
+
!isDefaultVariant ? getStatusStyles(variantCorrect) : ""
|
|
4823
|
+
),
|
|
4824
|
+
children: [
|
|
4825
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index).concat(") ").concat(option.label) }),
|
|
4826
|
+
isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Select_default, { size: "medium", children: [
|
|
4827
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectValue, { placeholder: "Selecione opc\xE3o" }) }),
|
|
4828
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(SelectContent, { children: [
|
|
4829
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: "V", children: "Verdadeiro" }),
|
|
4830
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: "F", children: "Falso" })
|
|
4831
|
+
] })
|
|
4832
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex-shrink-0", children: getStatusBadge(variantCorrect) })
|
|
4833
|
+
]
|
|
4834
|
+
}
|
|
4835
|
+
),
|
|
4836
|
+
!isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
|
|
4837
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta selecionada: V" }),
|
|
4838
|
+
!option.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta correta: F" })
|
|
4839
|
+
] })
|
|
4840
|
+
]
|
|
4841
|
+
},
|
|
4842
|
+
option.label.concat(`-${index}`)
|
|
4843
|
+
);
|
|
4844
|
+
}) }) })
|
|
4845
|
+
] });
|
|
4846
|
+
};
|
|
4847
|
+
var QuizConnectDots = ({
|
|
4848
|
+
variant = "default",
|
|
4849
|
+
paddingBottom
|
|
4850
|
+
}) => {
|
|
4851
|
+
const dotsOptions = [
|
|
4852
|
+
{ label: "Ra\xE7\xE3o" },
|
|
4853
|
+
{ label: "Rato" },
|
|
4854
|
+
{ label: "Grama" },
|
|
4855
|
+
{ label: "Peixe" }
|
|
4856
|
+
];
|
|
4857
|
+
const options = [
|
|
4858
|
+
{
|
|
4859
|
+
label: "Cachorro",
|
|
4860
|
+
correctOption: "Ra\xE7\xE3o"
|
|
4861
|
+
},
|
|
4862
|
+
{
|
|
4863
|
+
label: "Gato",
|
|
4864
|
+
correctOption: "Rato"
|
|
4865
|
+
},
|
|
4866
|
+
{
|
|
4867
|
+
label: "Cabra",
|
|
4868
|
+
correctOption: "Grama"
|
|
4869
|
+
},
|
|
4870
|
+
{
|
|
4871
|
+
label: "Baleia",
|
|
4872
|
+
correctOption: "Peixe"
|
|
4873
|
+
}
|
|
4874
|
+
];
|
|
4875
|
+
const mockUserAnswers = [
|
|
4876
|
+
{
|
|
4877
|
+
option: "Cachorro",
|
|
4878
|
+
dotOption: "Ra\xE7\xE3o",
|
|
4879
|
+
correctOption: "Ra\xE7\xE3o",
|
|
4880
|
+
isCorrect: true
|
|
4881
|
+
},
|
|
4882
|
+
{
|
|
4883
|
+
option: "Gato",
|
|
4884
|
+
dotOption: "Rato",
|
|
4885
|
+
correctOption: "Rato",
|
|
4886
|
+
isCorrect: true
|
|
4887
|
+
},
|
|
4888
|
+
{
|
|
4889
|
+
option: "Cabra",
|
|
4890
|
+
dotOption: "Peixe",
|
|
4891
|
+
correctOption: "Grama",
|
|
4892
|
+
isCorrect: false
|
|
4893
|
+
},
|
|
4740
4894
|
{
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
|
|
4745
|
-
|
|
4746
|
-
|
|
4895
|
+
option: "Baleia",
|
|
4896
|
+
dotOption: "Grama",
|
|
4897
|
+
correctOption: "Peixe",
|
|
4898
|
+
isCorrect: false
|
|
4899
|
+
}
|
|
4900
|
+
];
|
|
4901
|
+
const [userAnswers, setUserAnswers] = (0, import_react12.useState)(() => {
|
|
4902
|
+
if (variant === "result") {
|
|
4903
|
+
return mockUserAnswers;
|
|
4747
4904
|
}
|
|
4748
|
-
|
|
4905
|
+
return options.map((option) => ({
|
|
4906
|
+
option: option.label,
|
|
4907
|
+
dotOption: null,
|
|
4908
|
+
correctOption: option.correctOption,
|
|
4909
|
+
isCorrect: null
|
|
4910
|
+
}));
|
|
4911
|
+
});
|
|
4912
|
+
const handleSelectDot = (optionIndex, dotValue) => {
|
|
4913
|
+
setUserAnswers((prev) => {
|
|
4914
|
+
const next = [...prev];
|
|
4915
|
+
const { label: optionLabel, correctOption } = options[optionIndex];
|
|
4916
|
+
next[optionIndex] = {
|
|
4917
|
+
option: optionLabel,
|
|
4918
|
+
dotOption: dotValue,
|
|
4919
|
+
correctOption,
|
|
4920
|
+
isCorrect: dotValue ? dotValue === correctOption : null
|
|
4921
|
+
};
|
|
4922
|
+
return next;
|
|
4923
|
+
});
|
|
4924
|
+
};
|
|
4925
|
+
const getLetterByIndex = (index) => String.fromCharCode(97 + index);
|
|
4926
|
+
const isDefaultVariant = variant === "default";
|
|
4927
|
+
const assignedDots = new Set(
|
|
4928
|
+
userAnswers.map((a) => a.dotOption).filter(Boolean)
|
|
4929
|
+
);
|
|
4930
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
4931
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
4932
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
|
|
4933
|
+
const answer = userAnswers[index];
|
|
4934
|
+
const variantCorrect = answer.isCorrect ? "correct" : "incorrect";
|
|
4935
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("section", { className: "flex flex-col gap-2", children: [
|
|
4936
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
4937
|
+
"div",
|
|
4938
|
+
{
|
|
4939
|
+
className: cn(
|
|
4940
|
+
"flex flex-row justify-between items-center gap-2 p-2 rounded-md",
|
|
4941
|
+
!isDefaultVariant ? getStatusStyles(variantCorrect) : ""
|
|
4942
|
+
),
|
|
4943
|
+
children: [
|
|
4944
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index) + ") " + option.label }),
|
|
4945
|
+
isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
4946
|
+
Select_default,
|
|
4947
|
+
{
|
|
4948
|
+
size: "medium",
|
|
4949
|
+
value: answer.dotOption || void 0,
|
|
4950
|
+
onValueChange: (value) => handleSelectDot(index, value),
|
|
4951
|
+
children: [
|
|
4952
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
|
|
4953
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectContent, { children: dotsOptions.filter(
|
|
4954
|
+
(dot) => !assignedDots.has(dot.label) || answer.dotOption === dot.label
|
|
4955
|
+
).map((dot) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: dot.label, children: dot.label }, dot.label)) })
|
|
4956
|
+
]
|
|
4957
|
+
}
|
|
4958
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex-shrink-0", children: answer.isCorrect === null ? null : getStatusBadge(variantCorrect) })
|
|
4959
|
+
]
|
|
4960
|
+
}
|
|
4961
|
+
),
|
|
4962
|
+
!isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
|
|
4963
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { className: "text-text-800 text-2xs", children: [
|
|
4964
|
+
"Resposta selecionada: ",
|
|
4965
|
+
answer.dotOption || "Nenhuma"
|
|
4966
|
+
] }),
|
|
4967
|
+
!answer.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { className: "text-text-800 text-2xs", children: [
|
|
4968
|
+
"Resposta correta: ",
|
|
4969
|
+
answer.correctOption
|
|
4970
|
+
] })
|
|
4971
|
+
] })
|
|
4972
|
+
] }, option.label);
|
|
4973
|
+
}) }) })
|
|
4974
|
+
] });
|
|
4975
|
+
};
|
|
4976
|
+
var QuizFill = ({
|
|
4977
|
+
variant = "default",
|
|
4978
|
+
paddingBottom = "pb-[80px]"
|
|
4979
|
+
}) => {
|
|
4980
|
+
const options = [
|
|
4981
|
+
"ci\xEAncia",
|
|
4982
|
+
"disciplina",
|
|
4983
|
+
"\xE1rea",
|
|
4984
|
+
"especialidade",
|
|
4985
|
+
"varia\xE7\xF5es"
|
|
4986
|
+
];
|
|
4987
|
+
const exampleText = `A meteorologia \xE9 a {{ciencia}} que estuda os fen\xF4menos atmosf\xE9ricos e suas {{varia\xE7\xF5es}}. Esta disciplina cient\xEDfica tem como objetivo principal {{objetivo}} o comportamento da atmosfera terrestre.
|
|
4988
|
+
|
|
4989
|
+
Os meteorologistas utilizam diversos {{instrumentos}} para coletar dados atmosf\xE9ricos, incluindo term\xF4metros, bar\xF4metros e {{equipamentos}} modernos como radares meteorol\xF3gicos.`;
|
|
4990
|
+
const mockUserAnswers = [
|
|
4991
|
+
{
|
|
4992
|
+
selectId: "ciencia",
|
|
4993
|
+
userAnswer: "tecnologia",
|
|
4994
|
+
correctAnswer: "ci\xEAncia",
|
|
4995
|
+
isCorrect: false
|
|
4996
|
+
},
|
|
4997
|
+
{
|
|
4998
|
+
selectId: "varia\xE7\xF5es",
|
|
4999
|
+
userAnswer: "varia\xE7\xF5es",
|
|
5000
|
+
correctAnswer: "varia\xE7\xF5es",
|
|
5001
|
+
isCorrect: true
|
|
5002
|
+
},
|
|
5003
|
+
{
|
|
5004
|
+
selectId: "objetivo",
|
|
5005
|
+
userAnswer: "estudar",
|
|
5006
|
+
correctAnswer: "compreender",
|
|
5007
|
+
isCorrect: false
|
|
5008
|
+
},
|
|
5009
|
+
{
|
|
5010
|
+
selectId: "instrumentos",
|
|
5011
|
+
userAnswer: "ferramentas",
|
|
5012
|
+
correctAnswer: "instrumentos",
|
|
5013
|
+
isCorrect: false
|
|
5014
|
+
},
|
|
5015
|
+
{
|
|
5016
|
+
selectId: "equipamentos",
|
|
5017
|
+
userAnswer: "equipamentos",
|
|
5018
|
+
correctAnswer: "equipamentos",
|
|
5019
|
+
isCorrect: true
|
|
5020
|
+
}
|
|
5021
|
+
];
|
|
5022
|
+
const [answers, setAnswers] = (0, import_react12.useState)({});
|
|
5023
|
+
const baseId = (0, import_react12.useId)();
|
|
5024
|
+
const getAvailableOptionsForSelect = (selectId) => {
|
|
5025
|
+
const usedOptions = Object.entries(answers).filter(([key]) => key !== selectId).map(([, value]) => value);
|
|
5026
|
+
return options.filter((option) => !usedOptions.includes(option));
|
|
5027
|
+
};
|
|
5028
|
+
const handleSelectChange = (selectId, value) => {
|
|
5029
|
+
const newAnswers = { ...answers, [selectId]: value };
|
|
5030
|
+
setAnswers(newAnswers);
|
|
5031
|
+
};
|
|
5032
|
+
const renderResolutionElement = (selectId) => {
|
|
5033
|
+
const mockAnswer = mockUserAnswers.find(
|
|
5034
|
+
(answer) => answer.selectId === selectId
|
|
5035
|
+
);
|
|
5036
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "inline-flex mb-2.5 text-success-600 font-semibold text-md border-b-2 border-success-600", children: mockAnswer?.correctAnswer });
|
|
5037
|
+
};
|
|
5038
|
+
const renderDefaultElement = (selectId, startIndex, selectedValue, availableOptionsForThisSelect) => {
|
|
5039
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
5040
|
+
Select_default,
|
|
5041
|
+
{
|
|
5042
|
+
value: selectedValue,
|
|
5043
|
+
onValueChange: (value) => handleSelectChange(selectId, value),
|
|
5044
|
+
className: "inline-flex mb-2.5",
|
|
5045
|
+
children: [
|
|
5046
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectTrigger, { className: "inline-flex w-auto min-w-[140px] h-8 mx-1 bg-white border-gray-300", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
|
|
5047
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectContent, { children: availableOptionsForThisSelect.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: option, children: option }, `${option}-${index}`)) })
|
|
5048
|
+
]
|
|
5049
|
+
},
|
|
5050
|
+
`${selectId}-${startIndex}`
|
|
5051
|
+
);
|
|
5052
|
+
};
|
|
5053
|
+
const renderResultElement = (selectId) => {
|
|
5054
|
+
const mockAnswer = mockUserAnswers.find(
|
|
5055
|
+
(answer) => answer.selectId === selectId
|
|
5056
|
+
);
|
|
5057
|
+
if (!mockAnswer) return null;
|
|
5058
|
+
const action = mockAnswer.isCorrect ? "success" : "error";
|
|
5059
|
+
const icon = mockAnswer.isCorrect ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_phosphor_react9.CheckCircle, {}) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_phosphor_react9.XCircle, {});
|
|
5060
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
5061
|
+
Badge_default,
|
|
5062
|
+
{
|
|
5063
|
+
variant: "solid",
|
|
5064
|
+
action,
|
|
5065
|
+
iconRight: icon,
|
|
5066
|
+
size: "large",
|
|
5067
|
+
className: "py-3 w-[180px] justify-between mb-2.5",
|
|
5068
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-text-900", children: mockAnswer.userAnswer })
|
|
5069
|
+
},
|
|
5070
|
+
selectId
|
|
5071
|
+
);
|
|
5072
|
+
};
|
|
5073
|
+
const renderTextWithSelects = (text, isResolution) => {
|
|
5074
|
+
const elements = [];
|
|
5075
|
+
let lastIndex = 0;
|
|
5076
|
+
let elementCounter = 0;
|
|
5077
|
+
const regex = /\{\{([\p{L}\p{M}\d_]+)\}\}/gu;
|
|
5078
|
+
let match;
|
|
5079
|
+
while ((match = regex.exec(text)) !== null) {
|
|
5080
|
+
const [fullMatch, selectId] = match;
|
|
5081
|
+
const startIndex = match.index;
|
|
5082
|
+
if (startIndex > lastIndex) {
|
|
5083
|
+
elements.push({
|
|
5084
|
+
element: text.slice(lastIndex, startIndex),
|
|
5085
|
+
id: `${baseId}-text-${++elementCounter}`
|
|
5086
|
+
});
|
|
5087
|
+
}
|
|
5088
|
+
const selectedValue = answers[selectId];
|
|
5089
|
+
const availableOptionsForThisSelect = getAvailableOptionsForSelect(selectId);
|
|
5090
|
+
if (isResolution) {
|
|
5091
|
+
elements.push({
|
|
5092
|
+
element: renderResolutionElement(selectId),
|
|
5093
|
+
id: `${baseId}-resolution-${++elementCounter}`
|
|
5094
|
+
});
|
|
5095
|
+
} else if (variant === "default") {
|
|
5096
|
+
elements.push({
|
|
5097
|
+
element: renderDefaultElement(
|
|
5098
|
+
selectId,
|
|
5099
|
+
startIndex,
|
|
5100
|
+
selectedValue,
|
|
5101
|
+
availableOptionsForThisSelect
|
|
5102
|
+
),
|
|
5103
|
+
id: `${baseId}-select-${++elementCounter}`
|
|
5104
|
+
});
|
|
5105
|
+
} else {
|
|
5106
|
+
const resultElement = renderResultElement(selectId);
|
|
5107
|
+
if (resultElement) {
|
|
5108
|
+
elements.push({
|
|
5109
|
+
element: resultElement,
|
|
5110
|
+
id: `${baseId}-result-${++elementCounter}`
|
|
5111
|
+
});
|
|
5112
|
+
}
|
|
5113
|
+
}
|
|
5114
|
+
lastIndex = match.index + fullMatch.length;
|
|
5115
|
+
}
|
|
5116
|
+
if (lastIndex < text.length) {
|
|
5117
|
+
elements.push({
|
|
5118
|
+
element: text.slice(lastIndex),
|
|
5119
|
+
id: `${baseId}-text-${++elementCounter}`
|
|
5120
|
+
});
|
|
5121
|
+
}
|
|
5122
|
+
return elements;
|
|
5123
|
+
};
|
|
5124
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
5125
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
5126
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-6 px-4 h-auto", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
5127
|
+
"div",
|
|
5128
|
+
{
|
|
5129
|
+
className: cn(
|
|
5130
|
+
"text-lg text-text-900 leading-8 h-auto",
|
|
5131
|
+
variant != "result" && paddingBottom
|
|
5132
|
+
),
|
|
5133
|
+
children: renderTextWithSelects(exampleText).map((element) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: element.element }, element.id))
|
|
5134
|
+
}
|
|
5135
|
+
) }) }),
|
|
5136
|
+
variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
5137
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizSubTitle, { subTitle: "Resultado" }),
|
|
5138
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "space-y-6 px-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
5139
|
+
"div",
|
|
5140
|
+
{
|
|
5141
|
+
className: cn("text-lg text-text-900 leading-8", paddingBottom),
|
|
5142
|
+
children: renderTextWithSelects(exampleText, true).map((element) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: element.element }, element.id))
|
|
5143
|
+
}
|
|
5144
|
+
) }) })
|
|
5145
|
+
] })
|
|
5146
|
+
] });
|
|
4749
5147
|
};
|
|
4750
5148
|
var QuizQuestionList = ({
|
|
4751
5149
|
filterType = "all",
|
|
@@ -5289,8 +5687,10 @@ var QuizListResultByMateria = ({
|
|
|
5289
5687
|
0 && (module.exports = {
|
|
5290
5688
|
Quiz,
|
|
5291
5689
|
QuizAlternative,
|
|
5690
|
+
QuizConnectDots,
|
|
5292
5691
|
QuizContent,
|
|
5293
5692
|
QuizDissertative,
|
|
5693
|
+
QuizFill,
|
|
5294
5694
|
QuizFooter,
|
|
5295
5695
|
QuizHeader,
|
|
5296
5696
|
QuizHeaderResult,
|
|
@@ -5301,6 +5701,8 @@ var QuizListResultByMateria = ({
|
|
|
5301
5701
|
QuizResultHeaderTitle,
|
|
5302
5702
|
QuizResultPerformance,
|
|
5303
5703
|
QuizResultTitle,
|
|
5304
|
-
QuizTitle
|
|
5704
|
+
QuizTitle,
|
|
5705
|
+
QuizTrueOrFalse,
|
|
5706
|
+
getStatusBadge
|
|
5305
5707
|
});
|
|
5306
5708
|
//# sourceMappingURL=index.js.map
|