catchup-library-web 2.7.8 → 2.7.10
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/index.js +29 -10
- package/dist/index.mjs +32 -13
- package/package.json +1 -1
- package/src/components/activities/DropdownActivityContent.tsx +11 -1
- package/src/components/activities/FillInTheBlanksActivityContent.tsx +12 -1
- package/src/components/activities/material-contents/DropdownActivityMaterialContent.tsx +3 -1
- package/src/components/activities/material-contents/FillInTheBlanksActivityMaterialContent.tsx +6 -4
- package/src/components/activities/material-contents/OrderingActivityMaterialContent.tsx +3 -1
- package/src/components/activities/material-contents/TrueFalseActivityMaterialContent.tsx +15 -7
package/dist/index.js
CHANGED
|
@@ -4891,7 +4891,7 @@ var DropdownActivityMaterialContent = ({
|
|
|
4891
4891
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex-1 min-h-0 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "w-full flex flex-row flex-wrap", children: Object.keys(displayAnswerMap).map(
|
|
4892
4892
|
(materialKey, index) => {
|
|
4893
4893
|
const answerKey = Object.keys(materialMap[materialKey])[0];
|
|
4894
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(answerKey, displayAnswerMap[materialKey]);
|
|
4894
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(answerKey, displayAnswerMap[materialKey]);
|
|
4895
4895
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "w-full md:w-1/2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "mx-2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "w-full flex flex-row my-2 gap-x-2", children: [
|
|
4896
4896
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "my-auto", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("p", { className: "text-xl", children: [
|
|
4897
4897
|
parseFloat(materialKey) + 1,
|
|
@@ -5027,7 +5027,13 @@ var DropdownActivityContent = ({
|
|
|
5027
5027
|
ActivityBodyContent_default,
|
|
5028
5028
|
{
|
|
5029
5029
|
bodyMap: dropdownBodyMap,
|
|
5030
|
-
answerMap:
|
|
5030
|
+
answerMap: showCorrectAnswer ? Object.keys(dropdownMaterialMap).reduce(
|
|
5031
|
+
(acc, key) => {
|
|
5032
|
+
acc[key] = Object.keys(dropdownMaterialMap[key])[0];
|
|
5033
|
+
return acc;
|
|
5034
|
+
},
|
|
5035
|
+
{}
|
|
5036
|
+
) : currentAnswerMap,
|
|
5031
5037
|
contentMap,
|
|
5032
5038
|
templateType: "DROPDOWN"
|
|
5033
5039
|
}
|
|
@@ -5299,7 +5305,7 @@ var FillInTheBlanksActivityMaterialContent = ({
|
|
|
5299
5305
|
)
|
|
5300
5306
|
) }),
|
|
5301
5307
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "w-full flex flex-row flex-wrap", children: Object.keys(displayAnswerMap).map((materialKey, index) => {
|
|
5302
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(
|
|
5308
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(
|
|
5303
5309
|
JSON.parse(materialMap[materialKey]),
|
|
5304
5310
|
displayAnswerMap[materialKey]
|
|
5305
5311
|
);
|
|
@@ -5451,7 +5457,14 @@ var FillInTheBlanksActivityContent = ({
|
|
|
5451
5457
|
ActivityBodyContent_default,
|
|
5452
5458
|
{
|
|
5453
5459
|
bodyMap: fillInTheBlanksBodyMap,
|
|
5454
|
-
answerMap:
|
|
5460
|
+
answerMap: showCorrectAnswer ? Object.keys(fillInTheBlanksMaterialMap).reduce(
|
|
5461
|
+
(acc, key) => {
|
|
5462
|
+
const parsed = JSON.parse(fillInTheBlanksMaterialMap[key]);
|
|
5463
|
+
acc[key] = parsed[0];
|
|
5464
|
+
return acc;
|
|
5465
|
+
},
|
|
5466
|
+
{}
|
|
5467
|
+
) : currentAnswerMap,
|
|
5455
5468
|
contentMap,
|
|
5456
5469
|
templateType: "FILL_IN_THE_BLANKS"
|
|
5457
5470
|
}
|
|
@@ -7088,7 +7101,7 @@ var OrderingActivityMaterialContent = ({
|
|
|
7088
7101
|
}
|
|
7089
7102
|
),
|
|
7090
7103
|
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "flex-1 min-h-0 overflow-y-auto", children: Object.keys(displayAnswerMap).map((materialKey, index) => {
|
|
7091
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(displayAnswerMap[materialKey] + "", index + "");
|
|
7104
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(displayAnswerMap[materialKey] + "", index + "");
|
|
7092
7105
|
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
7093
7106
|
"div",
|
|
7094
7107
|
{
|
|
@@ -7227,16 +7240,22 @@ var TrueFalseActivityMaterialContent = ({
|
|
|
7227
7240
|
}) => {
|
|
7228
7241
|
const [shuffleOptionList, setShuffleOptionList] = (0, import_react26.useState)([]);
|
|
7229
7242
|
const [displayAnswerMap, setDisplayAnswerMap] = (0, import_react26.useState)(answerMap);
|
|
7243
|
+
const hasShuffledRef = (0, import_react26.useRef)(false);
|
|
7230
7244
|
(0, import_react26.useEffect)(() => {
|
|
7231
7245
|
const optionList = [];
|
|
7232
7246
|
optionList.push(...materialMap.trueList);
|
|
7233
7247
|
optionList.push(...materialMap.falseList);
|
|
7234
|
-
if (
|
|
7235
|
-
|
|
7248
|
+
if (!hasShuffledRef.current) {
|
|
7249
|
+
if (isPreview) {
|
|
7250
|
+
setShuffleOptionList(optionList);
|
|
7251
|
+
} else {
|
|
7252
|
+
setShuffleOptionList(shuffleArray(optionList));
|
|
7253
|
+
}
|
|
7254
|
+
hasShuffledRef.current = true;
|
|
7236
7255
|
} else {
|
|
7237
|
-
setShuffleOptionList(
|
|
7256
|
+
setShuffleOptionList(optionList);
|
|
7238
7257
|
}
|
|
7239
|
-
}, []);
|
|
7258
|
+
}, [materialMap]);
|
|
7240
7259
|
(0, import_react26.useEffect)(() => {
|
|
7241
7260
|
if (showCorrectAnswer) {
|
|
7242
7261
|
setDisplayAnswerMap(materialMap);
|
|
@@ -7258,7 +7277,7 @@ var TrueFalseActivityMaterialContent = ({
|
|
|
7258
7277
|
const learnerAnswer = displayAnswerMap.trueList.find(
|
|
7259
7278
|
(trueItem) => trueItem === shuffleOption
|
|
7260
7279
|
) !== void 0 ? "TRUE" : "FALSE";
|
|
7261
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(correctAnswer, learnerAnswer);
|
|
7280
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(correctAnswer, learnerAnswer);
|
|
7262
7281
|
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7263
7282
|
"div",
|
|
7264
7283
|
{
|
package/dist/index.mjs
CHANGED
|
@@ -4651,7 +4651,7 @@ var DropdownActivityMaterialContent = ({
|
|
|
4651
4651
|
/* @__PURE__ */ jsx28("div", { className: "flex-1 min-h-0 overflow-y-auto", children: /* @__PURE__ */ jsx28("div", { className: "w-full flex flex-row flex-wrap", children: Object.keys(displayAnswerMap).map(
|
|
4652
4652
|
(materialKey, index) => {
|
|
4653
4653
|
const answerKey = Object.keys(materialMap[materialKey])[0];
|
|
4654
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(answerKey, displayAnswerMap[materialKey]);
|
|
4654
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(answerKey, displayAnswerMap[materialKey]);
|
|
4655
4655
|
return /* @__PURE__ */ jsx28("div", { className: "w-full md:w-1/2", children: /* @__PURE__ */ jsx28("div", { className: "mx-2", children: /* @__PURE__ */ jsxs18("div", { className: "w-full flex flex-row my-2 gap-x-2", children: [
|
|
4656
4656
|
/* @__PURE__ */ jsx28("div", { className: "my-auto", children: /* @__PURE__ */ jsxs18("p", { className: "text-xl", children: [
|
|
4657
4657
|
parseFloat(materialKey) + 1,
|
|
@@ -4787,7 +4787,13 @@ var DropdownActivityContent = ({
|
|
|
4787
4787
|
ActivityBodyContent_default,
|
|
4788
4788
|
{
|
|
4789
4789
|
bodyMap: dropdownBodyMap,
|
|
4790
|
-
answerMap:
|
|
4790
|
+
answerMap: showCorrectAnswer ? Object.keys(dropdownMaterialMap).reduce(
|
|
4791
|
+
(acc, key) => {
|
|
4792
|
+
acc[key] = Object.keys(dropdownMaterialMap[key])[0];
|
|
4793
|
+
return acc;
|
|
4794
|
+
},
|
|
4795
|
+
{}
|
|
4796
|
+
) : currentAnswerMap,
|
|
4791
4797
|
contentMap,
|
|
4792
4798
|
templateType: "DROPDOWN"
|
|
4793
4799
|
}
|
|
@@ -5059,7 +5065,7 @@ var FillInTheBlanksActivityMaterialContent = ({
|
|
|
5059
5065
|
)
|
|
5060
5066
|
) }),
|
|
5061
5067
|
/* @__PURE__ */ jsx30("div", { className: "w-full flex flex-row flex-wrap", children: Object.keys(displayAnswerMap).map((materialKey, index) => {
|
|
5062
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(
|
|
5068
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(
|
|
5063
5069
|
JSON.parse(materialMap[materialKey]),
|
|
5064
5070
|
displayAnswerMap[materialKey]
|
|
5065
5071
|
);
|
|
@@ -5211,7 +5217,14 @@ var FillInTheBlanksActivityContent = ({
|
|
|
5211
5217
|
ActivityBodyContent_default,
|
|
5212
5218
|
{
|
|
5213
5219
|
bodyMap: fillInTheBlanksBodyMap,
|
|
5214
|
-
answerMap:
|
|
5220
|
+
answerMap: showCorrectAnswer ? Object.keys(fillInTheBlanksMaterialMap).reduce(
|
|
5221
|
+
(acc, key) => {
|
|
5222
|
+
const parsed = JSON.parse(fillInTheBlanksMaterialMap[key]);
|
|
5223
|
+
acc[key] = parsed[0];
|
|
5224
|
+
return acc;
|
|
5225
|
+
},
|
|
5226
|
+
{}
|
|
5227
|
+
) : currentAnswerMap,
|
|
5215
5228
|
contentMap,
|
|
5216
5229
|
templateType: "FILL_IN_THE_BLANKS"
|
|
5217
5230
|
}
|
|
@@ -6848,7 +6861,7 @@ var OrderingActivityMaterialContent = ({
|
|
|
6848
6861
|
}
|
|
6849
6862
|
),
|
|
6850
6863
|
/* @__PURE__ */ jsx42("div", { className: "flex-1 min-h-0 overflow-y-auto", children: Object.keys(displayAnswerMap).map((materialKey, index) => {
|
|
6851
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(displayAnswerMap[materialKey] + "", index + "");
|
|
6864
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(displayAnswerMap[materialKey] + "", index + "");
|
|
6852
6865
|
return /* @__PURE__ */ jsx42("div", { className: "w-full", children: /* @__PURE__ */ jsxs32(
|
|
6853
6866
|
"div",
|
|
6854
6867
|
{
|
|
@@ -6972,7 +6985,7 @@ var OrderingActivityContent = ({
|
|
|
6972
6985
|
var OrderingActivityContent_default = OrderingActivityContent;
|
|
6973
6986
|
|
|
6974
6987
|
// src/components/activities/material-contents/TrueFalseActivityMaterialContent.tsx
|
|
6975
|
-
import { useEffect as useEffect15, useState as useState25 } from "react";
|
|
6988
|
+
import { useEffect as useEffect15, useRef as useRef8, useState as useState25 } from "react";
|
|
6976
6989
|
import { InlineMath as InlineMath10 } from "react-katex";
|
|
6977
6990
|
import { Fragment as Fragment7, jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
6978
6991
|
var TrueFalseActivityMaterialContent = ({
|
|
@@ -6987,16 +7000,22 @@ var TrueFalseActivityMaterialContent = ({
|
|
|
6987
7000
|
}) => {
|
|
6988
7001
|
const [shuffleOptionList, setShuffleOptionList] = useState25([]);
|
|
6989
7002
|
const [displayAnswerMap, setDisplayAnswerMap] = useState25(answerMap);
|
|
7003
|
+
const hasShuffledRef = useRef8(false);
|
|
6990
7004
|
useEffect15(() => {
|
|
6991
7005
|
const optionList = [];
|
|
6992
7006
|
optionList.push(...materialMap.trueList);
|
|
6993
7007
|
optionList.push(...materialMap.falseList);
|
|
6994
|
-
if (
|
|
6995
|
-
|
|
7008
|
+
if (!hasShuffledRef.current) {
|
|
7009
|
+
if (isPreview) {
|
|
7010
|
+
setShuffleOptionList(optionList);
|
|
7011
|
+
} else {
|
|
7012
|
+
setShuffleOptionList(shuffleArray(optionList));
|
|
7013
|
+
}
|
|
7014
|
+
hasShuffledRef.current = true;
|
|
6996
7015
|
} else {
|
|
6997
|
-
setShuffleOptionList(
|
|
7016
|
+
setShuffleOptionList(optionList);
|
|
6998
7017
|
}
|
|
6999
|
-
}, []);
|
|
7018
|
+
}, [materialMap]);
|
|
7000
7019
|
useEffect15(() => {
|
|
7001
7020
|
if (showCorrectAnswer) {
|
|
7002
7021
|
setDisplayAnswerMap(materialMap);
|
|
@@ -7018,7 +7037,7 @@ var TrueFalseActivityMaterialContent = ({
|
|
|
7018
7037
|
const learnerAnswer = displayAnswerMap.trueList.find(
|
|
7019
7038
|
(trueItem) => trueItem === shuffleOption
|
|
7020
7039
|
) !== void 0 ? "TRUE" : "FALSE";
|
|
7021
|
-
const learnerAnswerState = !isPreview ? null : checkAnswerState(correctAnswer, learnerAnswer);
|
|
7040
|
+
const learnerAnswerState = !isPreview ? null : !showCorrectAnswer ? null : checkAnswerState(correctAnswer, learnerAnswer);
|
|
7022
7041
|
return /* @__PURE__ */ jsxs34(
|
|
7023
7042
|
"div",
|
|
7024
7043
|
{
|
|
@@ -7283,7 +7302,7 @@ var ActivityEvaluationRubricContent = ({
|
|
|
7283
7302
|
var ActivityEvaluationRubricContent_default = ActivityEvaluationRubricContent;
|
|
7284
7303
|
|
|
7285
7304
|
// src/components/activities/ActivityPreviewByData.tsx
|
|
7286
|
-
import { useEffect as useEffect16, useRef as
|
|
7305
|
+
import { useEffect as useEffect16, useRef as useRef9, useState as useState26 } from "react";
|
|
7287
7306
|
|
|
7288
7307
|
// src/components/boxes/SelectionBox.tsx
|
|
7289
7308
|
import { jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
@@ -7400,7 +7419,7 @@ var ActivityPreviewByData = ({
|
|
|
7400
7419
|
if (optionList.length === 0) return;
|
|
7401
7420
|
setSelectedType(optionList[0].id);
|
|
7402
7421
|
}, [optionList]);
|
|
7403
|
-
const prevDataStringRef =
|
|
7422
|
+
const prevDataStringRef = useRef9("");
|
|
7404
7423
|
useEffect16(() => {
|
|
7405
7424
|
if (activityTemplateTypeList.length === 0) return;
|
|
7406
7425
|
const dataString = JSON.stringify(data);
|
package/package.json
CHANGED
|
@@ -44,7 +44,17 @@ const DropdownActivityContent = ({
|
|
|
44
44
|
<div className={`${isFullScreen ? "w-full" : "w-full md:w-[60%] md:overflow-y-auto"}`}>
|
|
45
45
|
<ActivityBodyContent
|
|
46
46
|
bodyMap={dropdownBodyMap}
|
|
47
|
-
answerMap={
|
|
47
|
+
answerMap={
|
|
48
|
+
showCorrectAnswer
|
|
49
|
+
? Object.keys(dropdownMaterialMap).reduce(
|
|
50
|
+
(acc: any, key: string) => {
|
|
51
|
+
acc[key] = Object.keys(dropdownMaterialMap[key])[0];
|
|
52
|
+
return acc;
|
|
53
|
+
},
|
|
54
|
+
{},
|
|
55
|
+
)
|
|
56
|
+
: currentAnswerMap
|
|
57
|
+
}
|
|
48
58
|
contentMap={contentMap}
|
|
49
59
|
templateType={"DROPDOWN"}
|
|
50
60
|
/>
|
|
@@ -73,7 +73,18 @@ const FillInTheBlanksActivityContent = ({
|
|
|
73
73
|
<div className={`${isFullScreen ? "w-full" : "w-full md:w-[60%] md:overflow-y-auto"}`}>
|
|
74
74
|
<ActivityBodyContent
|
|
75
75
|
bodyMap={fillInTheBlanksBodyMap}
|
|
76
|
-
answerMap={
|
|
76
|
+
answerMap={
|
|
77
|
+
showCorrectAnswer
|
|
78
|
+
? Object.keys(fillInTheBlanksMaterialMap).reduce(
|
|
79
|
+
(acc: any, key: string) => {
|
|
80
|
+
const parsed = JSON.parse(fillInTheBlanksMaterialMap[key]);
|
|
81
|
+
acc[key] = parsed[0];
|
|
82
|
+
return acc;
|
|
83
|
+
},
|
|
84
|
+
{},
|
|
85
|
+
)
|
|
86
|
+
: currentAnswerMap
|
|
87
|
+
}
|
|
77
88
|
contentMap={contentMap}
|
|
78
89
|
templateType={"FILL_IN_THE_BLANKS"}
|
|
79
90
|
/>
|
|
@@ -55,7 +55,9 @@ const DropdownActivityMaterialContent = ({
|
|
|
55
55
|
const answerKey = Object.keys(materialMap[materialKey])[0];
|
|
56
56
|
const learnerAnswerState = !isPreview
|
|
57
57
|
? null
|
|
58
|
-
:
|
|
58
|
+
: !showCorrectAnswer
|
|
59
|
+
? null
|
|
60
|
+
: checkAnswerState(answerKey, displayAnswerMap[materialKey]);
|
|
59
61
|
return (
|
|
60
62
|
<div key={index} className="w-full md:w-1/2">
|
|
61
63
|
<div className="mx-2">
|
package/src/components/activities/material-contents/FillInTheBlanksActivityMaterialContent.tsx
CHANGED
|
@@ -311,10 +311,12 @@ const FillInTheBlanksActivityMaterialContent = ({
|
|
|
311
311
|
{Object.keys(displayAnswerMap).map((materialKey, index) => {
|
|
312
312
|
const learnerAnswerState = !isPreview
|
|
313
313
|
? null
|
|
314
|
-
:
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
314
|
+
: !showCorrectAnswer
|
|
315
|
+
? null
|
|
316
|
+
: checkAnswerState(
|
|
317
|
+
JSON.parse(materialMap[materialKey]),
|
|
318
|
+
displayAnswerMap[materialKey],
|
|
319
|
+
);
|
|
318
320
|
return (
|
|
319
321
|
<div key={index} className="w-full md:w-1/2">
|
|
320
322
|
<div className="mx-2">
|
|
@@ -256,7 +256,9 @@ const OrderingActivityMaterialContent = ({
|
|
|
256
256
|
{Object.keys(displayAnswerMap).map((materialKey, index) => {
|
|
257
257
|
const learnerAnswerState = !isPreview
|
|
258
258
|
? null
|
|
259
|
-
:
|
|
259
|
+
: !showCorrectAnswer
|
|
260
|
+
? null
|
|
261
|
+
: checkAnswerState(displayAnswerMap[materialKey] + "", index + "");
|
|
260
262
|
return (
|
|
261
263
|
<div className="w-full" key={index}>
|
|
262
264
|
<div
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import i18n from "../../../language/i18n";
|
|
3
3
|
import ShowMaterialMediaByContentType from "./ShowMaterialMediaByContentType";
|
|
4
4
|
import { InlineMath } from "react-katex";
|
|
@@ -21,16 +21,22 @@ const TrueFalseActivityMaterialContent = ({
|
|
|
21
21
|
const [shuffleOptionList, setShuffleOptionList] = useState<any[]>([]);
|
|
22
22
|
const [displayAnswerMap, setDisplayAnswerMap] = useState<any>(answerMap);
|
|
23
23
|
|
|
24
|
+
const hasShuffledRef = useRef<boolean>(false);
|
|
24
25
|
useEffect(() => {
|
|
25
|
-
const optionList = [];
|
|
26
|
+
const optionList: any[] = [];
|
|
26
27
|
optionList.push(...materialMap.trueList);
|
|
27
28
|
optionList.push(...materialMap.falseList);
|
|
28
|
-
if (
|
|
29
|
-
|
|
29
|
+
if (!hasShuffledRef.current) {
|
|
30
|
+
if (isPreview) {
|
|
31
|
+
setShuffleOptionList(optionList);
|
|
32
|
+
} else {
|
|
33
|
+
setShuffleOptionList(shuffleArray(optionList));
|
|
34
|
+
}
|
|
35
|
+
hasShuffledRef.current = true;
|
|
30
36
|
} else {
|
|
31
|
-
setShuffleOptionList(
|
|
37
|
+
setShuffleOptionList(optionList);
|
|
32
38
|
}
|
|
33
|
-
}, []);
|
|
39
|
+
}, [materialMap]);
|
|
34
40
|
|
|
35
41
|
useEffect(() => {
|
|
36
42
|
if (showCorrectAnswer) {
|
|
@@ -77,7 +83,9 @@ const TrueFalseActivityMaterialContent = ({
|
|
|
77
83
|
|
|
78
84
|
const learnerAnswerState = !isPreview
|
|
79
85
|
? null
|
|
80
|
-
:
|
|
86
|
+
: !showCorrectAnswer
|
|
87
|
+
? null
|
|
88
|
+
: checkAnswerState(correctAnswer, learnerAnswer);
|
|
81
89
|
|
|
82
90
|
return (
|
|
83
91
|
<div
|