catchup-library-web 2.0.6 → 2.0.8

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.
Files changed (28) hide show
  1. package/dist/index.d.mts +22 -22
  2. package/dist/index.d.ts +22 -22
  3. package/dist/index.js +286 -472
  4. package/dist/index.mjs +286 -472
  5. package/package.json +1 -1
  6. package/src/components/activities/ActivityPreviewByAnswerData.tsx +118 -121
  7. package/src/components/activities/ActivityPreviewByData.tsx +10 -10
  8. package/src/components/activities/DropdownActivityContent.tsx +9 -35
  9. package/src/components/activities/FillInTheBlanksActivityContent.tsx +9 -34
  10. package/src/components/activities/GroupingActivityContent.tsx +4 -8
  11. package/src/components/activities/MCMAActivityContent.tsx +8 -8
  12. package/src/components/activities/MCSAActivityContent.tsx +8 -8
  13. package/src/components/activities/MatchingActivityContent.tsx +4 -8
  14. package/src/components/activities/OpenEndedActivityContent.tsx +4 -8
  15. package/src/components/activities/OrderingActivityContent.tsx +4 -8
  16. package/src/components/activities/TrueFalseActivityContent.tsx +4 -12
  17. package/src/components/activities/material-contents/DropdownActivityMaterialContent.tsx +9 -19
  18. package/src/components/activities/material-contents/FillInTheBlanksActivityMaterialContent.tsx +9 -24
  19. package/src/components/activities/material-contents/GroupingActivityMaterialContent.tsx +7 -18
  20. package/src/components/activities/material-contents/MCMAActivityMaterialContent.tsx +2 -10
  21. package/src/components/activities/material-contents/MCSAActivityMaterialContent.tsx +2 -10
  22. package/src/components/activities/material-contents/MatchingActivityMaterialContent.tsx +7 -17
  23. package/src/components/activities/material-contents/OpenEndedActivityMaterialContent.tsx +2 -21
  24. package/src/components/activities/material-contents/OrderingActivityMaterialContent.tsx +4 -16
  25. package/src/components/activities/material-contents/TrueFalseActivityMaterialContent.tsx +4 -27
  26. package/src/properties/ActivityProperties.ts +21 -20
  27. package/src/utilization/CatchtivityUtilization.ts +49 -84
  28. package/src/utilization/ManagementUtilization.ts +1 -1
@@ -10,7 +10,7 @@ import DividerLine from "../dividers/DividerLine";
10
10
  import VerticalDividerLine from "../dividers/VerticalDividerLine";
11
11
 
12
12
  const MCSAActivityContent = ({
13
- answer,
13
+ answerMap,
14
14
  data,
15
15
  canAnswerQuestion,
16
16
  changeAnswer,
@@ -21,14 +21,14 @@ const MCSAActivityContent = ({
21
21
  const MCSABodyMap = parseBodyMapFromData(data, "MCSA");
22
22
  const MCSAMaterialMap = parseMaterialMapFromData(data, "MCSA");
23
23
 
24
- const handleMCSAAnswerOnChange = (answer: any, key: any, value: string) => {
24
+ const handleMCSAAnswerOnChange = (
25
+ answerMap: any,
26
+ key: any,
27
+ value: string
28
+ ) => {
25
29
  if (isPreview) return;
26
- let foundIndex = answer.data.findIndex(
27
- (answerData: any) => answerData.type === "MCSA"
28
- );
29
- const answerMap = answer.data[foundIndex].answerMap;
30
30
  answerMap[key] = value;
31
- changeAnswer(answer);
31
+ changeAnswer(answerMap);
32
32
  };
33
33
 
34
34
  return (
@@ -45,7 +45,7 @@ const MCSAActivityContent = ({
45
45
  <div className={`${isFullScreen ? "w-full" : "w-full md:flex-1"}`}>
46
46
  <MCSAActivityMaterialContent
47
47
  uniqueValue={JSON.stringify(data.contentMap)}
48
- answer={answer}
48
+ answerMap={answerMap}
49
49
  materialMap={MCSAMaterialMap}
50
50
  contentMap={contentMap}
51
51
  checkCanAnswerQuestion={canAnswerQuestion}
@@ -9,7 +9,7 @@ import ActivityBodyContent from "./body-contents/ActivityBodyContent";
9
9
  import MatchingActivityMaterialContent from "./material-contents/MatchingActivityMaterialContent";
10
10
 
11
11
  const MatchingActivityContent = ({
12
- answer,
12
+ answerMap,
13
13
  data,
14
14
  canAnswerQuestion,
15
15
  changeAnswer,
@@ -21,17 +21,13 @@ const MatchingActivityContent = ({
21
21
  const matchingMaterialMap = parseMaterialMapFromData(data, "MATCHING");
22
22
 
23
23
  const handleMatchingAnswerOnChange = (
24
- answer: any,
24
+ answerMap: any,
25
25
  key: any,
26
26
  value: string | null
27
27
  ) => {
28
28
  if (isPreview) return;
29
- let foundIndex = answer.data.findIndex(
30
- (answerData: any) => answerData.type === "MATCHING"
31
- );
32
- const answerMap = answer.data[foundIndex].answerMap;
33
29
  answerMap[key] = value;
34
- changeAnswer(answer);
30
+ changeAnswer(answerMap);
35
31
  };
36
32
 
37
33
  return (
@@ -43,7 +39,7 @@ const MatchingActivityContent = ({
43
39
  <DividerLine />
44
40
  <MatchingActivityMaterialContent
45
41
  uniqueValue={JSON.stringify(data.contentMap)}
46
- answer={answer}
42
+ answerMap={answerMap}
47
43
  materialMap={matchingMaterialMap}
48
44
  contentMap={contentMap}
49
45
  checkCanAnswerQuestion={canAnswerQuestion}
@@ -9,7 +9,7 @@ import DividerLine from "../dividers/DividerLine";
9
9
  import VerticalDividerLine from "../dividers/VerticalDividerLine";
10
10
 
11
11
  const OpenEndedActivityContent = ({
12
- answer,
12
+ answerMap,
13
13
  data,
14
14
  changeAnswer,
15
15
  canAnswerQuestion,
@@ -20,14 +20,10 @@ const OpenEndedActivityContent = ({
20
20
  const contentMap = parseContentMapFromData(data);
21
21
  const openEndedBodyMap = parseBodyMapFromData(data, "OPEN_ENDED");
22
22
 
23
- const handleOpenEndedAnswerOnChange = (answer: any, value: string) => {
23
+ const handleOpenEndedAnswerOnChange = (answerMap: any, value: string) => {
24
24
  if (isPreview) return;
25
- let foundIndex = answer.data.findIndex(
26
- (answerData: any) => answerData.type === "OPEN_ENDED"
27
- );
28
- const answerMap = answer.data[foundIndex].answerMap;
29
25
  answerMap["ANSWER"] = value;
30
- changeAnswer(answer);
26
+ changeAnswer(answerMap);
31
27
  };
32
28
 
33
29
  return (
@@ -59,7 +55,7 @@ const OpenEndedActivityContent = ({
59
55
  </div>
60
56
  <div className={`${isFullScreen ? "w-full" : "w-full md:flex-1"}`}>
61
57
  <OpenEndedActivityMaterialContent
62
- answer={answer}
58
+ answerMap={answerMap}
63
59
  contentMap={contentMap}
64
60
  checkCanAnswerQuestion={canAnswerQuestion}
65
61
  onChange={handleOpenEndedAnswerOnChange}
@@ -9,7 +9,7 @@ import ActivityBodyContent from "./body-contents/ActivityBodyContent";
9
9
  import OrderingActivityMaterialContent from "./material-contents/OrderingActivityMaterialContent";
10
10
 
11
11
  const OrderingActivityContent = ({
12
- answer,
12
+ answerMap,
13
13
  data,
14
14
  canAnswerQuestion,
15
15
  changeAnswer,
@@ -22,19 +22,15 @@ const OrderingActivityContent = ({
22
22
  const orderingMaterialMap = parseMaterialMapFromData(data, "ORDERING");
23
23
 
24
24
  const handleOrderingAnswerOnChange = (
25
- answer: any,
25
+ answerMap: any,
26
26
  primaryKey: any,
27
27
  secondaryKey: any
28
28
  ) => {
29
29
  if (isPreview) return;
30
- let foundIndex = answer.data.findIndex(
31
- (answerData: any) => answerData.type === "ORDERING"
32
- );
33
- const answerMap = answer.data[foundIndex].answerMap;
34
30
  const prevValue = answerMap[primaryKey];
35
31
  answerMap[primaryKey] = answerMap[secondaryKey];
36
32
  answerMap[secondaryKey] = prevValue;
37
- changeAnswer(answer);
33
+ changeAnswer(answerMap);
38
34
  };
39
35
 
40
36
  return (
@@ -46,7 +42,7 @@ const OrderingActivityContent = ({
46
42
  <DividerLine />
47
43
  <OrderingActivityMaterialContent
48
44
  uniqueValue={JSON.stringify(data.contentMap)}
49
- answer={answer}
45
+ answerMap={answerMap}
50
46
  materialMap={orderingMaterialMap}
51
47
  contentMap={contentMap}
52
48
  checkCanAnswerQuestion={canAnswerQuestion}
@@ -10,7 +10,7 @@ import DividerLine from "../dividers/DividerLine";
10
10
  import VerticalDividerLine from "../dividers/VerticalDividerLine";
11
11
 
12
12
  const TrueFalseActivityContent = ({
13
- answer,
13
+ answerMap,
14
14
  data,
15
15
  canAnswerQuestion,
16
16
  changeAnswer,
@@ -22,20 +22,12 @@ const TrueFalseActivityContent = ({
22
22
  const trueFalseBodyMap = parseBodyMapFromData(data, "TRUE_FALSE");
23
23
  const trueFalseMaterialMap = parseMaterialMapFromData(data, "TRUE_FALSE");
24
24
 
25
- const retrieveCurrentAnswerMap = () => {
26
- let foundIndex = answer.data.findIndex(
27
- (answerData: any) => answerData.type === "TRUE_FALSE"
28
- );
29
- return answer.data[foundIndex].answerMap;
30
- };
31
-
32
25
  const handleTrueFalseAnswerOnChange = (
33
- answer: any,
26
+ answerMap: any,
34
27
  key: any,
35
28
  value: string
36
29
  ) => {
37
30
  if (isPreview) return;
38
- const answerMap = retrieveCurrentAnswerMap();
39
31
  if (key === "TRUE") {
40
32
  const foundFalseIndex = answerMap.falseList.findIndex(
41
33
  (item: string) => item === value
@@ -63,7 +55,7 @@ const TrueFalseActivityContent = ({
63
55
  answerMap.falseList.push(value);
64
56
  }
65
57
  }
66
- changeAnswer(answer);
58
+ changeAnswer(answerMap);
67
59
  };
68
60
 
69
61
  return (
@@ -84,7 +76,7 @@ const TrueFalseActivityContent = ({
84
76
  <div className={`${isFullScreen ? "w-full" : "w-full md:flex-1"}`}>
85
77
  <TrueFalseActivityMaterialContent
86
78
  uniqueValue={JSON.stringify(data.contentMap)}
87
- answer={answer}
79
+ answerMap={answerMap}
88
80
  materialMap={trueFalseMaterialMap}
89
81
  contentMap={contentMap}
90
82
  checkCanAnswerQuestion={canAnswerQuestion}
@@ -13,7 +13,7 @@ import ShowMaterialMediaByContentType from "./ShowMaterialMediaByContentType";
13
13
 
14
14
  const DropdownActivityMaterialContent = ({
15
15
  uniqueValue,
16
- answer,
16
+ answerMap,
17
17
  materialMap,
18
18
  contentMap,
19
19
  checkCanAnswerQuestion,
@@ -25,15 +25,10 @@ const DropdownActivityMaterialContent = ({
25
25
 
26
26
  useEffect(() => {
27
27
  if (!showCorrectAnswer) return;
28
- const foundAnswer = answer.data.find(
29
- (answerData: any) => answerData.type === "DROPDOWN"
30
- );
31
- if (foundAnswer.answerMap.length === 0) return;
32
- if (Object.keys(materialMap).length === 0) return;
33
- foundAnswer.answerMap = Object.keys(materialMap).map(
28
+ answerMap = Object.keys(materialMap).map(
34
29
  (materialMapKey, index) => Object.keys(materialMap[materialMapKey])[0]
35
30
  );
36
- onChange(answer, 0, Object.keys(materialMap[0])[0]);
31
+ onChange(answerMap, 0, Object.keys(materialMap[0])[0]);
37
32
  setUpdated(true);
38
33
  }, [showCorrectAnswer]);
39
34
 
@@ -42,13 +37,6 @@ const DropdownActivityMaterialContent = ({
42
37
  setUpdated(false);
43
38
  }, [updated]);
44
39
 
45
- const retrieveAnswerMap = () => {
46
- const foundIndex = answer.data.findIndex(
47
- (answerData: any) => answerData.type === "DROPDOWN"
48
- );
49
- return answer.data[foundIndex].answerMap;
50
- };
51
-
52
40
  const checkAnswerState = (correctAnswer: string, learnerAnswer: string) => {
53
41
  if (!isPreview) return null;
54
42
  if (correctAnswer === learnerAnswer) {
@@ -57,8 +45,6 @@ const DropdownActivityMaterialContent = ({
57
45
  return "INCORRECT";
58
46
  };
59
47
 
60
- const answerMap = retrieveAnswerMap();
61
-
62
48
  return (
63
49
  <div className="flex flex-row flex-wrap items-center">
64
50
  <div className="hidden md:block">
@@ -125,7 +111,11 @@ const DropdownActivityMaterialContent = ({
125
111
  value: materialOption,
126
112
  }))}
127
113
  onChange={(e) => {
128
- onChange(answer, materialKey, e.target.value);
114
+ onChange(
115
+ answerMap,
116
+ materialKey,
117
+ e.target.value
118
+ );
129
119
  }}
130
120
  />
131
121
  </div>
@@ -165,7 +155,7 @@ const DropdownActivityMaterialContent = ({
165
155
  ),
166
156
  onClick: (e: any) => {
167
157
  onChange(
168
- answer,
158
+ answerMap,
169
159
  materialKey,
170
160
  e.target.currentSrc
171
161
  );
@@ -11,7 +11,7 @@ import { constructInputWithSpecialExpressionList } from "../../../utilization/Ca
11
11
 
12
12
  const FillInTheBlanksActivityMaterialContent = ({
13
13
  uniqueValue,
14
- answer,
14
+ answerMap,
15
15
  optionList,
16
16
  materialMap,
17
17
  contentMap,
@@ -43,24 +43,11 @@ const FillInTheBlanksActivityMaterialContent = ({
43
43
 
44
44
  useEffect(() => {
45
45
  if (!showCorrectAnswer) return;
46
- const foundAnswer = answer.data.find(
47
- (answerData: any) => answerData.type === "FILL_IN_THE_BLANKS"
48
- );
49
- if (!foundAnswer || foundAnswer.answerMap.length === 0) return;
50
- if (Object.keys(materialMap).length === 0) return;
51
- foundAnswer.answerMap = Object.keys(materialMap).map(
46
+ answerMap = Object.keys(materialMap).map(
52
47
  (materialMapKey) => JSON.parse(materialMap[materialMapKey])[0]
53
48
  );
54
-
55
- onChange(answer, 0, JSON.parse(materialMap[0])[0]);
56
- }, [showCorrectAnswer, answer, materialMap, onChange]);
57
-
58
- const retrieveAnswerMap = (): Record<string, any> => {
59
- const foundIndex = answer.data.findIndex(
60
- (answerData: any) => answerData.type === "FILL_IN_THE_BLANKS"
61
- );
62
- return answer.data[foundIndex].answerMap;
63
- };
49
+ onChange(answerMap, 0, JSON.parse(materialMap[0])[0]);
50
+ }, [showCorrectAnswer]);
64
51
 
65
52
  const checkAnswerState = (
66
53
  correctAnswerList: any[],
@@ -113,7 +100,7 @@ const FillInTheBlanksActivityMaterialContent = ({
113
100
 
114
101
  const handleMouseUp = (): void => {
115
102
  if (dropTargetIndex !== null && draggedOption !== null) {
116
- onChange(answer, dropTargetIndex, draggedOption);
103
+ onChange(answerMap, dropTargetIndex, draggedOption);
117
104
  }
118
105
  setDraggedOption(null);
119
106
  setDropTargetIndex(null);
@@ -156,7 +143,7 @@ const FillInTheBlanksActivityMaterialContent = ({
156
143
 
157
144
  const handleTouchEnd = (): void => {
158
145
  if (dropTargetIndex !== null && draggedOption !== null) {
159
- onChange(answer, dropTargetIndex, draggedOption);
146
+ onChange(answerMap, dropTargetIndex, draggedOption);
160
147
  }
161
148
  setDraggedOption(null);
162
149
  setDropTargetIndex(null);
@@ -172,13 +159,11 @@ const FillInTheBlanksActivityMaterialContent = ({
172
159
 
173
160
  const handleDropZoneClick = (index: string): void => {
174
161
  if (selectedOption !== null) {
175
- onChange(answer, index, selectedOption);
162
+ onChange(answerMap, index, selectedOption);
176
163
  setSelectedOption(null);
177
164
  }
178
165
  };
179
166
 
180
- const answerMap = retrieveAnswerMap();
181
-
182
167
  return (
183
168
  <div
184
169
  className="flex flex-row flex-wrap items-center"
@@ -352,7 +337,7 @@ const FillInTheBlanksActivityMaterialContent = ({
352
337
  onClick={(e) => {
353
338
  if (answerMap[materialKey]) {
354
339
  e.stopPropagation();
355
- onChange(answer, materialKey, "");
340
+ onChange(answerMap, materialKey, "");
356
341
  }
357
342
  }}
358
343
  >
@@ -404,7 +389,7 @@ const FillInTheBlanksActivityMaterialContent = ({
404
389
  className="flex-1 cursor-pointer"
405
390
  onClick={(e) => {
406
391
  e.stopPropagation();
407
- onChange(answer, materialKey, "");
392
+ onChange(answerMap, materialKey, "");
408
393
  }}
409
394
  >
410
395
  <ShowMaterialMediaByContentType
@@ -7,7 +7,7 @@ import { IGroupingActivityMaterialProps } from "../../../properties/ActivityProp
7
7
 
8
8
  const GroupingActivityMaterialContent = ({
9
9
  uniqueValue,
10
- answer,
10
+ answerMap,
11
11
  materialMap,
12
12
  contentMap,
13
13
  checkCanAnswerQuestion,
@@ -59,10 +59,8 @@ const GroupingActivityMaterialContent = ({
59
59
 
60
60
  useEffect(() => {
61
61
  if (!showCorrectAnswer) return;
62
- answer.data.find(
63
- (answerData: any) => answerData.type === "GROUPING"
64
- ).answerMap = materialMap;
65
- }, [showCorrectAnswer, answer, materialMap]);
62
+ answerMap = materialMap;
63
+ }, [showCorrectAnswer, answerMap, materialMap]);
66
64
 
67
65
  useEffect(() => {
68
66
  if (!dropTargetKey || !dropZoneRefs.current[dropTargetKey]) return;
@@ -130,14 +128,6 @@ const GroupingActivityMaterialContent = ({
130
128
  requestAnimationFrame(animate);
131
129
  }, [dropTargetKey]);
132
130
 
133
- const retrieveAnswerMap = () => {
134
- const foundIndex = answer.data.findIndex(
135
- (answerData: any) => answerData.type === "GROUPING"
136
- );
137
- const answerMap = answer.data[foundIndex].answerMap;
138
- return answerMap;
139
- };
140
-
141
131
  const retrieveFilteredMaterialList = (answerMap: any) => {
142
132
  const selectedValueList: any = [];
143
133
  Object.keys(answerMap).forEach((key) => {
@@ -196,7 +186,7 @@ const GroupingActivityMaterialContent = ({
196
186
 
197
187
  const handleMouseUp = (): void => {
198
188
  if (dropTargetKey !== null && draggedValue !== null) {
199
- onChange(answer, dropTargetKey, draggedValue, null);
189
+ onChange(answerMap, dropTargetKey, draggedValue, null);
200
190
  }
201
191
  setDraggedValue(null);
202
192
  setDropTargetKey(null);
@@ -240,7 +230,7 @@ const GroupingActivityMaterialContent = ({
240
230
 
241
231
  const handleTouchEnd = (): void => {
242
232
  if (dropTargetKey !== null && draggedValue !== null) {
243
- onChange(answer, dropTargetKey, draggedValue, null);
233
+ onChange(answerMap, dropTargetKey, draggedValue, null);
244
234
  }
245
235
  setDraggedValue(null);
246
236
  setDropTargetKey(null);
@@ -257,12 +247,11 @@ const GroupingActivityMaterialContent = ({
257
247
 
258
248
  const handleDropZoneClick = (answerMapKey: string): void => {
259
249
  if (selectedValue !== null) {
260
- onChange(answer, answerMapKey, selectedValue, null);
250
+ onChange(answerMap, answerMapKey, selectedValue, null);
261
251
  setSelectedValue(null);
262
252
  }
263
253
  };
264
254
 
265
- const answerMap = retrieveAnswerMap();
266
255
  const filteredMaterialList = retrieveFilteredMaterialList(answerMap);
267
256
 
268
257
  return (
@@ -518,7 +507,7 @@ const GroupingActivityMaterialContent = ({
518
507
  e.stopPropagation();
519
508
  if (checkCanAnswerQuestion()) {
520
509
  onChange(
521
- answer,
510
+ answerMap,
522
511
  answerMapKey,
523
512
  null,
524
513
  answerMapIndex
@@ -8,20 +8,13 @@ import DividerLine from "../../dividers/DividerLine";
8
8
 
9
9
  const MCMAActivityMaterialContent = ({
10
10
  uniqueValue,
11
- answer,
11
+ answerMap,
12
12
  materialMap,
13
13
  contentMap,
14
14
  checkCanAnswerQuestion,
15
15
  onChange,
16
16
  isPreview,
17
17
  }: IMCMAActivityMaterialProps) => {
18
- const retrieveAnswerMap = () => {
19
- const foundIndex = answer.data.findIndex(
20
- (answerData: any) => answerData.type === "MCMA"
21
- );
22
- return answer.data[foundIndex].answerMap;
23
- };
24
-
25
18
  const retrieveCorrectAnswerList = () => {
26
19
  return JSON.parse(Object.keys(materialMap)[0]);
27
20
  };
@@ -42,7 +35,6 @@ const MCMAActivityMaterialContent = ({
42
35
  return "INCORRECT";
43
36
  };
44
37
 
45
- const answerMap = retrieveAnswerMap();
46
38
  const correctAnswerList = retrieveCorrectAnswerList();
47
39
 
48
40
  return Object.keys(materialMap).map((materialKey, index) => {
@@ -84,7 +76,7 @@ const MCMAActivityMaterialContent = ({
84
76
  : ""
85
77
  }`}
86
78
  onClick={() => {
87
- onChange(answer, materialKey, materialSubKey);
79
+ onChange(answerMap, materialKey, materialSubKey);
88
80
  }}
89
81
  >
90
82
  <BaseImage
@@ -8,20 +8,13 @@ import DividerLine from "../../dividers/DividerLine";
8
8
 
9
9
  const MCSAActivityMaterialContent = ({
10
10
  uniqueValue,
11
- answer,
11
+ answerMap,
12
12
  materialMap,
13
13
  contentMap,
14
14
  checkCanAnswerQuestion,
15
15
  onChange,
16
16
  isPreview,
17
17
  }: IMCSAActivityMaterialProps) => {
18
- const retrieveAnswerMap = () => {
19
- const foundIndex = answer.data.findIndex(
20
- (answerData: any) => answerData.type === "MCSA"
21
- );
22
- return answer.data[foundIndex].answerMap;
23
- };
24
-
25
18
  const retrieveCorrectAnswer = () => {
26
19
  return Object.keys(materialMap)[0];
27
20
  };
@@ -39,7 +32,6 @@ const MCSAActivityMaterialContent = ({
39
32
  return "INCORRECT";
40
33
  };
41
34
 
42
- const answerMap = retrieveAnswerMap();
43
35
  const correctAnswer = retrieveCorrectAnswer();
44
36
 
45
37
  return Object.keys(materialMap).map((materialKey, index) => {
@@ -83,7 +75,7 @@ const MCSAActivityMaterialContent = ({
83
75
  : ""
84
76
  }`}
85
77
  onClick={() => {
86
- onChange(answer, materialKey, materialSubKey);
78
+ onChange(answerMap, materialKey, materialSubKey);
87
79
  }}
88
80
  >
89
81
  <BaseImage
@@ -7,7 +7,7 @@ import DividerLine from "../../dividers/DividerLine";
7
7
 
8
8
  const MatchingActivityMaterialContent = ({
9
9
  uniqueValue,
10
- answer,
10
+ answerMap,
11
11
  materialMap,
12
12
  contentMap,
13
13
  checkCanAnswerQuestion,
@@ -57,10 +57,8 @@ const MatchingActivityMaterialContent = ({
57
57
 
58
58
  useEffect(() => {
59
59
  if (!showCorrectAnswer) return;
60
- answer.data.find(
61
- (answerData: any) => answerData.type === "MATCHING"
62
- ).answerMap = materialMap;
63
- }, [showCorrectAnswer, answer, materialMap]);
60
+ answerMap = materialMap;
61
+ }, [showCorrectAnswer]);
64
62
 
65
63
  useEffect(() => {
66
64
  if (!dropTargetKey || !dropZoneRefs.current[dropTargetKey]) return;
@@ -128,13 +126,6 @@ const MatchingActivityMaterialContent = ({
128
126
  requestAnimationFrame(animate);
129
127
  }, [dropTargetKey]);
130
128
 
131
- const retrieveAnswerMap = () => {
132
- const foundIndex = answer.data.findIndex(
133
- (answerData: any) => answerData.type === "MATCHING"
134
- );
135
- return answer.data[foundIndex].answerMap;
136
- };
137
-
138
129
  const retrieveFilteredMaterialList = (answerMap: any) => {
139
130
  const selectedValueList: any = [];
140
131
  Object.keys(answerMap).forEach((key) => {
@@ -188,7 +179,7 @@ const MatchingActivityMaterialContent = ({
188
179
 
189
180
  const handleMouseUp = (): void => {
190
181
  if (dropTargetKey !== null && draggedValue !== null) {
191
- onChange(answer, dropTargetKey, draggedValue);
182
+ onChange(answerMap, dropTargetKey, draggedValue);
192
183
  }
193
184
  setDraggedValue(null);
194
185
  setDropTargetKey(null);
@@ -232,7 +223,7 @@ const MatchingActivityMaterialContent = ({
232
223
 
233
224
  const handleTouchEnd = (): void => {
234
225
  if (dropTargetKey !== null && draggedValue !== null) {
235
- onChange(answer, dropTargetKey, draggedValue);
226
+ onChange(answerMap, dropTargetKey, draggedValue);
236
227
  }
237
228
  setDraggedValue(null);
238
229
  setDropTargetKey(null);
@@ -249,12 +240,11 @@ const MatchingActivityMaterialContent = ({
249
240
 
250
241
  const handleDropZoneClick = (answerMapKey: string): void => {
251
242
  if (selectedValue !== null) {
252
- onChange(answer, answerMapKey, selectedValue);
243
+ onChange(answerMap, answerMapKey, selectedValue);
253
244
  setSelectedValue(null);
254
245
  }
255
246
  };
256
247
 
257
- const answerMap = retrieveAnswerMap();
258
248
  const filteredMaterialList = retrieveFilteredMaterialList(answerMap);
259
249
 
260
250
  return (
@@ -513,7 +503,7 @@ const MatchingActivityMaterialContent = ({
513
503
  onClick={(e) => {
514
504
  e.stopPropagation();
515
505
  if (checkCanAnswerQuestion() && answerMap[answerMapKey]) {
516
- onChange(answer, answerMapKey, null);
506
+ onChange(answerMap, answerMapKey, null);
517
507
  setSelectedValue(null);
518
508
  }
519
509
  }}
@@ -7,28 +7,11 @@ import BaseImage from "../../images/BaseImage";
7
7
  import BasePDF from "../../pdfs/BasePDF";
8
8
 
9
9
  const OpenEndedActivityMaterialContent = ({
10
- answer,
10
+ answerMap,
11
11
  contentMap,
12
12
  checkCanAnswerQuestion,
13
13
  onChange,
14
14
  }: IOpenEndedActivityMaterialProps) => {
15
- const retrieveAnswer = () => {
16
- if (!answer)
17
- return {
18
- answerMap: {
19
- ANSWER: "",
20
- },
21
- };
22
- return answer.data.find(
23
- (answerData: any) => answerData.type === "OPEN_ENDED"
24
- );
25
- };
26
-
27
- const retrieveAnswerMap = () => {
28
- const { answerMap } = retrieveAnswer();
29
- return answerMap;
30
- };
31
-
32
15
  const RenderTextContent = (answerMap: any) => {
33
16
  const answerMapAnswer = answerMap["ANSWER"];
34
17
  let documentType: string = "TEXT";
@@ -71,7 +54,7 @@ const OpenEndedActivityMaterialContent = ({
71
54
  useMinHeight={true}
72
55
  onChange={(e) => {
73
56
  if (checkCanAnswerQuestion()) {
74
- onChange(answer, e.target.value);
57
+ onChange(answerMap, e.target.value);
75
58
  }
76
59
  }}
77
60
  />
@@ -117,8 +100,6 @@ const OpenEndedActivityMaterialContent = ({
117
100
  );
118
101
  };
119
102
 
120
- const answerMap = retrieveAnswerMap();
121
-
122
103
  return (
123
104
  <>
124
105
  <div className="">