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 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: currentAnswerMap,
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: currentAnswerMap,
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 (isPreview) {
7235
- setShuffleOptionList(optionList);
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(shuffleArray(optionList));
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: currentAnswerMap,
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: currentAnswerMap,
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 (isPreview) {
6995
- setShuffleOptionList(optionList);
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(shuffleArray(optionList));
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 useRef8, useState as useState26 } from "react";
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 = useRef8("");
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "catchup-library-web",
3
- "version": "2.7.8",
3
+ "version": "2.7.10",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -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={currentAnswerMap} // Use local state instead of function call
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={currentAnswerMap}
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
- : checkAnswerState(answerKey, displayAnswerMap[materialKey]);
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">
@@ -311,10 +311,12 @@ const FillInTheBlanksActivityMaterialContent = ({
311
311
  {Object.keys(displayAnswerMap).map((materialKey, index) => {
312
312
  const learnerAnswerState = !isPreview
313
313
  ? null
314
- : checkAnswerState(
315
- JSON.parse(materialMap[materialKey]),
316
- displayAnswerMap[materialKey],
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
- : checkAnswerState(displayAnswerMap[materialKey] + "", index + "");
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 (isPreview) {
29
- setShuffleOptionList(optionList);
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(shuffleArray(optionList));
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
- : checkAnswerState(correctAnswer, learnerAnswer);
86
+ : !showCorrectAnswer
87
+ ? null
88
+ : checkAnswerState(correctAnswer, learnerAnswer);
81
89
 
82
90
  return (
83
91
  <div