catchup-library-web 1.21.0 → 1.21.2
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
CHANGED
|
@@ -5080,7 +5080,7 @@ var FillInTheBlanksActivityMaterialContent = ({
|
|
|
5080
5080
|
}
|
|
5081
5081
|
),
|
|
5082
5082
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "w-full flex flex-row flex-wrap gap-x-2 gap-y-2 my-2", children: shuffleOptionList.map(
|
|
5083
|
-
(option, index) => checkAnswerProvided(answerMap, option) ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
5083
|
+
(option, index) => checkAnswerProvided(answerMap, option) ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
5084
5084
|
ShowMaterialMediaByContentType_default,
|
|
5085
5085
|
{
|
|
5086
5086
|
contentType: contentMap.type,
|
|
@@ -5088,7 +5088,7 @@ var FillInTheBlanksActivityMaterialContent = ({
|
|
|
5088
5088
|
canFullScreen: true
|
|
5089
5089
|
},
|
|
5090
5090
|
`${uniqueValue}-${index}`
|
|
5091
|
-
)
|
|
5091
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
5092
5092
|
"div",
|
|
5093
5093
|
{
|
|
5094
5094
|
ref: draggedOption === option ? dragElementRef : null,
|
|
@@ -5762,6 +5762,7 @@ var MatchingActivityMaterialContent = ({
|
|
|
5762
5762
|
y: 0
|
|
5763
5763
|
});
|
|
5764
5764
|
const itemsRef = (0, import_react21.useRef)(null);
|
|
5765
|
+
const dropZoneRefs = (0, import_react21.useRef)({});
|
|
5765
5766
|
(0, import_react21.useEffect)(() => {
|
|
5766
5767
|
const shuffleArray2 = (array) => {
|
|
5767
5768
|
if (!isShuffled) {
|
|
@@ -5787,6 +5788,17 @@ var MatchingActivityMaterialContent = ({
|
|
|
5787
5788
|
(answerData) => answerData.type === "MATCHING"
|
|
5788
5789
|
).answerMap = materialMap;
|
|
5789
5790
|
}, [showCorrectAnswer, answer, materialMap]);
|
|
5791
|
+
(0, import_react21.useEffect)(() => {
|
|
5792
|
+
if (dropTargetKey && dropZoneRefs.current[dropTargetKey]) {
|
|
5793
|
+
const dropZoneElement = dropZoneRefs.current[dropTargetKey];
|
|
5794
|
+
if (dropZoneElement) {
|
|
5795
|
+
dropZoneElement.scrollIntoView({
|
|
5796
|
+
behavior: "smooth",
|
|
5797
|
+
block: "center"
|
|
5798
|
+
});
|
|
5799
|
+
}
|
|
5800
|
+
}
|
|
5801
|
+
}, [dropTargetKey]);
|
|
5790
5802
|
const retrieveAnswerMap = () => {
|
|
5791
5803
|
const foundIndex = answer.data.findIndex(
|
|
5792
5804
|
(answerData) => answerData.type === "MATCHING"
|
|
@@ -5989,7 +6001,7 @@ var MatchingActivityMaterialContent = ({
|
|
|
5989
6001
|
),
|
|
5990
6002
|
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DividerLine_default, {}) })
|
|
5991
6003
|
] }) : null,
|
|
5992
|
-
|
|
6004
|
+
Object.keys(answerMap).map((answerMapKey, index) => {
|
|
5993
6005
|
const learnerAnswerState = checkAnswerState(
|
|
5994
6006
|
materialMap[answerMapKey],
|
|
5995
6007
|
answerMap[answerMapKey]
|
|
@@ -5999,22 +6011,23 @@ var MatchingActivityMaterialContent = ({
|
|
|
5999
6011
|
"div",
|
|
6000
6012
|
{
|
|
6001
6013
|
className: `${contentMap.type === "TEXT" ? "h-catchup-activity-text-box-item" : "h-catchup-activity-media-box-item"} flex flex-col items-center justify-center border-2 rounded-catchup-xlarge transition-all duration-300 my-3 ${learnerAnswerState === "EMPTY" ? "border-catchup-blue" : learnerAnswerState === "CORRECT" ? "border-catchup-green" : learnerAnswerState === "INCORRECT" ? "border-catchup-red" : "border-catchup-blue"}`,
|
|
6002
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex flex-col items-center justify-center transition-all duration-300 px-4 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { className: "text-lg whitespace-pre-wrap", children: constructInputWithSpecialExpressionList(
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6010
|
-
|
|
6011
|
-
)
|
|
6014
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex flex-col items-center justify-center transition-all duration-300 px-4 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { className: "text-lg whitespace-pre-wrap", children: constructInputWithSpecialExpressionList(answerMapKey).map(
|
|
6015
|
+
(inputPart, index2) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
6016
|
+
"span",
|
|
6017
|
+
{
|
|
6018
|
+
className: `${inputPart.isBold ? "font-bold" : ""} ${inputPart.isUnderline ? "underline" : ""}`,
|
|
6019
|
+
children: inputPart.isEquation ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-xl", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react_katex6.InlineMath, { math: inputPart.value }) }) : inputPart.value
|
|
6020
|
+
},
|
|
6021
|
+
index2
|
|
6022
|
+
)
|
|
6023
|
+
) }) })
|
|
6012
6024
|
}
|
|
6013
6025
|
) }),
|
|
6014
6026
|
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "mx-4 w-[2px] bg-catchup-lighter-gray" }),
|
|
6015
6027
|
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
6016
6028
|
"div",
|
|
6017
6029
|
{
|
|
6030
|
+
ref: (el) => dropZoneRefs.current[answerMapKey] = el,
|
|
6018
6031
|
"data-matching-drop-zone": answerMapKey,
|
|
6019
6032
|
onMouseEnter: () => draggedValue && setDropTargetKey(answerMapKey),
|
|
6020
6033
|
onMouseLeave: () => setDropTargetKey(null),
|
|
@@ -6054,7 +6067,7 @@ var MatchingActivityMaterialContent = ({
|
|
|
6054
6067
|
}
|
|
6055
6068
|
) })
|
|
6056
6069
|
] }, index);
|
|
6057
|
-
})
|
|
6070
|
+
})
|
|
6058
6071
|
] });
|
|
6059
6072
|
};
|
|
6060
6073
|
var MatchingActivityMaterialContent_default = MatchingActivityMaterialContent;
|
package/dist/index.mjs
CHANGED
|
@@ -4864,7 +4864,7 @@ var FillInTheBlanksActivityMaterialContent = ({
|
|
|
4864
4864
|
}
|
|
4865
4865
|
),
|
|
4866
4866
|
/* @__PURE__ */ jsx28("div", { className: "w-full flex flex-row flex-wrap gap-x-2 gap-y-2 my-2", children: shuffleOptionList.map(
|
|
4867
|
-
(option, index) => checkAnswerProvided(answerMap, option) ? /* @__PURE__ */ jsx28(
|
|
4867
|
+
(option, index) => checkAnswerProvided(answerMap, option) ? /* @__PURE__ */ jsx28(
|
|
4868
4868
|
ShowMaterialMediaByContentType_default,
|
|
4869
4869
|
{
|
|
4870
4870
|
contentType: contentMap.type,
|
|
@@ -4872,7 +4872,7 @@ var FillInTheBlanksActivityMaterialContent = ({
|
|
|
4872
4872
|
canFullScreen: true
|
|
4873
4873
|
},
|
|
4874
4874
|
`${uniqueValue}-${index}`
|
|
4875
|
-
)
|
|
4875
|
+
) : /* @__PURE__ */ jsx28(
|
|
4876
4876
|
"div",
|
|
4877
4877
|
{
|
|
4878
4878
|
ref: draggedOption === option ? dragElementRef : null,
|
|
@@ -5546,6 +5546,7 @@ var MatchingActivityMaterialContent = ({
|
|
|
5546
5546
|
y: 0
|
|
5547
5547
|
});
|
|
5548
5548
|
const itemsRef = useRef6(null);
|
|
5549
|
+
const dropZoneRefs = useRef6({});
|
|
5549
5550
|
useEffect11(() => {
|
|
5550
5551
|
const shuffleArray2 = (array) => {
|
|
5551
5552
|
if (!isShuffled) {
|
|
@@ -5571,6 +5572,17 @@ var MatchingActivityMaterialContent = ({
|
|
|
5571
5572
|
(answerData) => answerData.type === "MATCHING"
|
|
5572
5573
|
).answerMap = materialMap;
|
|
5573
5574
|
}, [showCorrectAnswer, answer, materialMap]);
|
|
5575
|
+
useEffect11(() => {
|
|
5576
|
+
if (dropTargetKey && dropZoneRefs.current[dropTargetKey]) {
|
|
5577
|
+
const dropZoneElement = dropZoneRefs.current[dropTargetKey];
|
|
5578
|
+
if (dropZoneElement) {
|
|
5579
|
+
dropZoneElement.scrollIntoView({
|
|
5580
|
+
behavior: "smooth",
|
|
5581
|
+
block: "center"
|
|
5582
|
+
});
|
|
5583
|
+
}
|
|
5584
|
+
}
|
|
5585
|
+
}, [dropTargetKey]);
|
|
5574
5586
|
const retrieveAnswerMap = () => {
|
|
5575
5587
|
const foundIndex = answer.data.findIndex(
|
|
5576
5588
|
(answerData) => answerData.type === "MATCHING"
|
|
@@ -5773,7 +5785,7 @@ var MatchingActivityMaterialContent = ({
|
|
|
5773
5785
|
),
|
|
5774
5786
|
/* @__PURE__ */ jsx32("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx32(DividerLine_default, {}) })
|
|
5775
5787
|
] }) : null,
|
|
5776
|
-
|
|
5788
|
+
Object.keys(answerMap).map((answerMapKey, index) => {
|
|
5777
5789
|
const learnerAnswerState = checkAnswerState(
|
|
5778
5790
|
materialMap[answerMapKey],
|
|
5779
5791
|
answerMap[answerMapKey]
|
|
@@ -5783,22 +5795,23 @@ var MatchingActivityMaterialContent = ({
|
|
|
5783
5795
|
"div",
|
|
5784
5796
|
{
|
|
5785
5797
|
className: `${contentMap.type === "TEXT" ? "h-catchup-activity-text-box-item" : "h-catchup-activity-media-box-item"} flex flex-col items-center justify-center border-2 rounded-catchup-xlarge transition-all duration-300 my-3 ${learnerAnswerState === "EMPTY" ? "border-catchup-blue" : learnerAnswerState === "CORRECT" ? "border-catchup-green" : learnerAnswerState === "INCORRECT" ? "border-catchup-red" : "border-catchup-blue"}`,
|
|
5786
|
-
children: /* @__PURE__ */ jsx32("div", { className: "flex flex-col items-center justify-center transition-all duration-300 px-4 text-center", children: /* @__PURE__ */ jsx32("p", { className: "text-lg whitespace-pre-wrap", children: constructInputWithSpecialExpressionList(
|
|
5787
|
-
|
|
5788
|
-
|
|
5789
|
-
|
|
5790
|
-
|
|
5791
|
-
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
)
|
|
5798
|
+
children: /* @__PURE__ */ jsx32("div", { className: "flex flex-col items-center justify-center transition-all duration-300 px-4 text-center", children: /* @__PURE__ */ jsx32("p", { className: "text-lg whitespace-pre-wrap", children: constructInputWithSpecialExpressionList(answerMapKey).map(
|
|
5799
|
+
(inputPart, index2) => /* @__PURE__ */ jsx32(
|
|
5800
|
+
"span",
|
|
5801
|
+
{
|
|
5802
|
+
className: `${inputPart.isBold ? "font-bold" : ""} ${inputPart.isUnderline ? "underline" : ""}`,
|
|
5803
|
+
children: inputPart.isEquation ? /* @__PURE__ */ jsx32("span", { className: "text-xl", children: /* @__PURE__ */ jsx32(InlineMath6, { math: inputPart.value }) }) : inputPart.value
|
|
5804
|
+
},
|
|
5805
|
+
index2
|
|
5806
|
+
)
|
|
5807
|
+
) }) })
|
|
5796
5808
|
}
|
|
5797
5809
|
) }),
|
|
5798
5810
|
/* @__PURE__ */ jsx32("div", { className: "mx-4 w-[2px] bg-catchup-lighter-gray" }),
|
|
5799
5811
|
/* @__PURE__ */ jsx32("div", { className: "flex-1", children: /* @__PURE__ */ jsx32(
|
|
5800
5812
|
"div",
|
|
5801
5813
|
{
|
|
5814
|
+
ref: (el) => dropZoneRefs.current[answerMapKey] = el,
|
|
5802
5815
|
"data-matching-drop-zone": answerMapKey,
|
|
5803
5816
|
onMouseEnter: () => draggedValue && setDropTargetKey(answerMapKey),
|
|
5804
5817
|
onMouseLeave: () => setDropTargetKey(null),
|
|
@@ -5838,7 +5851,7 @@ var MatchingActivityMaterialContent = ({
|
|
|
5838
5851
|
}
|
|
5839
5852
|
) })
|
|
5840
5853
|
] }, index);
|
|
5841
|
-
})
|
|
5854
|
+
})
|
|
5842
5855
|
] });
|
|
5843
5856
|
};
|
|
5844
5857
|
var MatchingActivityMaterialContent_default = MatchingActivityMaterialContent;
|
package/package.json
CHANGED
package/src/components/activities/material-contents/FillInTheBlanksActivityMaterialContent.tsx
CHANGED
|
@@ -261,14 +261,12 @@ const FillInTheBlanksActivityMaterialContent = ({
|
|
|
261
261
|
<div className="w-full flex flex-row flex-wrap gap-x-2 gap-y-2 my-2">
|
|
262
262
|
{shuffleOptionList.map((option, index) =>
|
|
263
263
|
checkAnswerProvided(answerMap, option) ? (
|
|
264
|
-
<
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
/>
|
|
271
|
-
</div>
|
|
264
|
+
<ShowMaterialMediaByContentType
|
|
265
|
+
key={`${uniqueValue}-${index}`}
|
|
266
|
+
contentType={contentMap.type}
|
|
267
|
+
src={option}
|
|
268
|
+
canFullScreen={true}
|
|
269
|
+
/>
|
|
272
270
|
) : (
|
|
273
271
|
<div
|
|
274
272
|
key={index}
|
|
@@ -33,6 +33,7 @@ const MatchingActivityMaterialContent = ({
|
|
|
33
33
|
y: 0,
|
|
34
34
|
});
|
|
35
35
|
const itemsRef = useRef<HTMLDivElement>(null);
|
|
36
|
+
const dropZoneRefs = useRef<{ [key: string]: HTMLDivElement | null }>({});
|
|
36
37
|
|
|
37
38
|
useEffect(() => {
|
|
38
39
|
const shuffleArray = (array: any) => {
|
|
@@ -61,6 +62,19 @@ const MatchingActivityMaterialContent = ({
|
|
|
61
62
|
).answerMap = materialMap;
|
|
62
63
|
}, [showCorrectAnswer, answer, materialMap]);
|
|
63
64
|
|
|
65
|
+
// Auto-scroll to center the drop zone when hovering
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
if (dropTargetKey && dropZoneRefs.current[dropTargetKey]) {
|
|
68
|
+
const dropZoneElement = dropZoneRefs.current[dropTargetKey];
|
|
69
|
+
if (dropZoneElement) {
|
|
70
|
+
dropZoneElement.scrollIntoView({
|
|
71
|
+
behavior: "smooth",
|
|
72
|
+
block: "center",
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, [dropTargetKey]);
|
|
77
|
+
|
|
64
78
|
const retrieveAnswerMap = () => {
|
|
65
79
|
const foundIndex = answer.data.findIndex(
|
|
66
80
|
(answerData: any) => answerData.type === "MATCHING"
|
|
@@ -365,36 +379,34 @@ const MatchingActivityMaterialContent = ({
|
|
|
365
379
|
</>
|
|
366
380
|
) : null}
|
|
367
381
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
);
|
|
382
|
+
{Object.keys(answerMap).map((answerMapKey, index) => {
|
|
383
|
+
const learnerAnswerState = checkAnswerState(
|
|
384
|
+
materialMap[answerMapKey],
|
|
385
|
+
answerMap[answerMapKey]
|
|
386
|
+
);
|
|
374
387
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
).map((inputPart, index) => (
|
|
388
|
+
return (
|
|
389
|
+
<div key={index} className="flex flex-row w-full">
|
|
390
|
+
<div className="w-1/3">
|
|
391
|
+
<div
|
|
392
|
+
className={`${
|
|
393
|
+
contentMap.type === "TEXT"
|
|
394
|
+
? "h-catchup-activity-text-box-item"
|
|
395
|
+
: "h-catchup-activity-media-box-item"
|
|
396
|
+
} flex flex-col items-center justify-center border-2 rounded-catchup-xlarge transition-all duration-300 my-3 ${
|
|
397
|
+
learnerAnswerState === "EMPTY"
|
|
398
|
+
? "border-catchup-blue"
|
|
399
|
+
: learnerAnswerState === "CORRECT"
|
|
400
|
+
? "border-catchup-green"
|
|
401
|
+
: learnerAnswerState === "INCORRECT"
|
|
402
|
+
? "border-catchup-red"
|
|
403
|
+
: "border-catchup-blue"
|
|
404
|
+
}`}
|
|
405
|
+
>
|
|
406
|
+
<div className="flex flex-col items-center justify-center transition-all duration-300 px-4 text-center">
|
|
407
|
+
<p className="text-lg whitespace-pre-wrap">
|
|
408
|
+
{constructInputWithSpecialExpressionList(answerMapKey).map(
|
|
409
|
+
(inputPart, index) => (
|
|
398
410
|
<span
|
|
399
411
|
key={index}
|
|
400
412
|
className={`${inputPart.isBold ? "font-bold" : ""} ${
|
|
@@ -409,86 +421,87 @@ const MatchingActivityMaterialContent = ({
|
|
|
409
421
|
inputPart.value
|
|
410
422
|
)}
|
|
411
423
|
</span>
|
|
412
|
-
)
|
|
413
|
-
|
|
414
|
-
</
|
|
424
|
+
)
|
|
425
|
+
)}
|
|
426
|
+
</p>
|
|
415
427
|
</div>
|
|
416
428
|
</div>
|
|
417
|
-
|
|
418
|
-
|
|
429
|
+
</div>
|
|
430
|
+
<div className="mx-4 w-[2px] bg-catchup-lighter-gray"></div>
|
|
431
|
+
<div className="flex-1">
|
|
432
|
+
<div
|
|
433
|
+
ref={(el) => (dropZoneRefs.current[answerMapKey] = el)}
|
|
434
|
+
data-matching-drop-zone={answerMapKey}
|
|
435
|
+
onMouseEnter={() =>
|
|
436
|
+
draggedValue && setDropTargetKey(answerMapKey)
|
|
437
|
+
}
|
|
438
|
+
onMouseLeave={() => setDropTargetKey(null)}
|
|
439
|
+
onClick={() => handleDropZoneClick(answerMapKey)}
|
|
440
|
+
className={`${
|
|
441
|
+
dropTargetKey === answerMapKey
|
|
442
|
+
? "bg-catchup-light-blue ring-2 ring-blue-400"
|
|
443
|
+
: ""
|
|
444
|
+
} ${
|
|
445
|
+
contentMap.type === "TEXT"
|
|
446
|
+
? "h-catchup-activity-text-box-item"
|
|
447
|
+
: "h-catchup-activity-media-box-item"
|
|
448
|
+
} flex flex-col items-center justify-center border-2 rounded-catchup-xlarge cursor-pointer transition-all duration-300 my-3 ${
|
|
449
|
+
learnerAnswerState === "EMPTY"
|
|
450
|
+
? "border-catchup-blue"
|
|
451
|
+
: learnerAnswerState === "CORRECT"
|
|
452
|
+
? "border-catchup-green"
|
|
453
|
+
: learnerAnswerState === "INCORRECT"
|
|
454
|
+
? "border-catchup-red"
|
|
455
|
+
: "border-catchup-blue"
|
|
456
|
+
}`}
|
|
457
|
+
>
|
|
419
458
|
<div
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
? "bg-catchup-light-blue ring-2 ring-blue-400"
|
|
429
|
-
: ""
|
|
430
|
-
} ${
|
|
431
|
-
contentMap.type === "TEXT"
|
|
432
|
-
? "h-catchup-activity-text-box-item"
|
|
433
|
-
: "h-catchup-activity-media-box-item"
|
|
434
|
-
} flex flex-col items-center justify-center border-2 rounded-catchup-xlarge cursor-pointer transition-all duration-300 my-3 ${
|
|
435
|
-
learnerAnswerState === "EMPTY"
|
|
436
|
-
? "border-catchup-blue"
|
|
437
|
-
: learnerAnswerState === "CORRECT"
|
|
438
|
-
? "border-catchup-green"
|
|
439
|
-
: learnerAnswerState === "INCORRECT"
|
|
440
|
-
? "border-catchup-red"
|
|
441
|
-
: "border-catchup-blue"
|
|
442
|
-
}`}
|
|
459
|
+
className="h-full flex-1 flex flex-row items-center justify-center px-4"
|
|
460
|
+
onClick={(e) => {
|
|
461
|
+
e.stopPropagation();
|
|
462
|
+
if (checkCanAnswerQuestion() && answerMap[answerMapKey]) {
|
|
463
|
+
onChange(answer, answerMapKey, null);
|
|
464
|
+
setSelectedValue(null);
|
|
465
|
+
}
|
|
466
|
+
}}
|
|
443
467
|
>
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
</p>
|
|
476
|
-
) : (
|
|
477
|
-
<ShowMaterialMediaByContentType
|
|
478
|
-
key={`${uniqueValue}-${index}`}
|
|
479
|
-
contentType={contentMap.type}
|
|
480
|
-
src={answerMap[answerMapKey]}
|
|
481
|
-
canFullScreen={false}
|
|
482
|
-
/>
|
|
483
|
-
)
|
|
484
|
-
) : null}
|
|
485
|
-
</div>
|
|
468
|
+
{answerMap[answerMapKey] ? (
|
|
469
|
+
contentMap.type === "TEXT" ? (
|
|
470
|
+
<p className="text-lg whitespace-pre-wrap">
|
|
471
|
+
{constructInputWithSpecialExpressionList(
|
|
472
|
+
answerMap[answerMapKey]
|
|
473
|
+
).map((inputPart, index) => (
|
|
474
|
+
<span
|
|
475
|
+
key={index}
|
|
476
|
+
className={`${
|
|
477
|
+
inputPart.isBold ? "font-bold" : ""
|
|
478
|
+
} ${inputPart.isUnderline ? "underline" : ""}`}
|
|
479
|
+
>
|
|
480
|
+
{inputPart.isEquation ? (
|
|
481
|
+
<span className="text-xl">
|
|
482
|
+
<InlineMath math={inputPart.value} />
|
|
483
|
+
</span>
|
|
484
|
+
) : (
|
|
485
|
+
inputPart.value
|
|
486
|
+
)}
|
|
487
|
+
</span>
|
|
488
|
+
))}
|
|
489
|
+
</p>
|
|
490
|
+
) : (
|
|
491
|
+
<ShowMaterialMediaByContentType
|
|
492
|
+
key={`${uniqueValue}-${index}`}
|
|
493
|
+
contentType={contentMap.type}
|
|
494
|
+
src={answerMap[answerMapKey]}
|
|
495
|
+
canFullScreen={false}
|
|
496
|
+
/>
|
|
497
|
+
)
|
|
498
|
+
) : null}
|
|
486
499
|
</div>
|
|
487
500
|
</div>
|
|
488
501
|
</div>
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
502
|
+
</div>
|
|
503
|
+
);
|
|
504
|
+
})}
|
|
492
505
|
</div>
|
|
493
506
|
);
|
|
494
507
|
};
|