catchup-library-web 1.1.9 → 1.1.11

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.d.mts CHANGED
@@ -157,6 +157,7 @@ interface IActivityPreviewByDataProps {
157
157
  typeOptionList: any[];
158
158
  showTaxonomy: boolean;
159
159
  showSolution: boolean;
160
+ showEvaluationRubric: boolean;
160
161
  isFullScreen: boolean;
161
162
  }
162
163
 
@@ -180,7 +181,7 @@ declare const TrueFalseActivityContent: ({ answer, data, canAnswerQuestion, chan
180
181
 
181
182
  declare const ActivitySolutionContent: ({ activityTemplateType, data, }: IActivitySolutionProps) => react_jsx_runtime.JSX.Element | undefined;
182
183
 
183
- declare const ActivityPreviewByData: ({ data, showType, showDescription, lockedType, typeOptionList, showSolution, showTaxonomy, isFullScreen, }: IActivityPreviewByDataProps) => react_jsx_runtime.JSX.Element | undefined;
184
+ declare const ActivityPreviewByData: ({ data, showType, showDescription, lockedType, typeOptionList, showSolution, showEvaluationRubric, showTaxonomy, isFullScreen, }: IActivityPreviewByDataProps) => react_jsx_runtime.JSX.Element | undefined;
184
185
 
185
186
  interface IDividerLineProps {
186
187
  opacity: string;
package/dist/index.d.ts CHANGED
@@ -157,6 +157,7 @@ interface IActivityPreviewByDataProps {
157
157
  typeOptionList: any[];
158
158
  showTaxonomy: boolean;
159
159
  showSolution: boolean;
160
+ showEvaluationRubric: boolean;
160
161
  isFullScreen: boolean;
161
162
  }
162
163
 
@@ -180,7 +181,7 @@ declare const TrueFalseActivityContent: ({ answer, data, canAnswerQuestion, chan
180
181
 
181
182
  declare const ActivitySolutionContent: ({ activityTemplateType, data, }: IActivitySolutionProps) => react_jsx_runtime.JSX.Element | undefined;
182
183
 
183
- declare const ActivityPreviewByData: ({ data, showType, showDescription, lockedType, typeOptionList, showSolution, showTaxonomy, isFullScreen, }: IActivityPreviewByDataProps) => react_jsx_runtime.JSX.Element | undefined;
184
+ declare const ActivityPreviewByData: ({ data, showType, showDescription, lockedType, typeOptionList, showSolution, showEvaluationRubric, showTaxonomy, isFullScreen, }: IActivityPreviewByDataProps) => react_jsx_runtime.JSX.Element | undefined;
184
185
 
185
186
  interface IDividerLineProps {
186
187
  opacity: string;
package/dist/index.js CHANGED
@@ -5313,7 +5313,7 @@ var OpenEndedActivityContent = ({
5313
5313
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
5314
5314
  "div",
5315
5315
  {
5316
- className: `${showMaterialContent ? "w-full" : isFullScreen ? "w-full" : "w-full md:w-[40%]"}`,
5316
+ className: `${showMaterialContent ? isFullScreen ? "w-full" : "w-full md:w-[40%]" : "w-full"}`,
5317
5317
  children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
5318
5318
  ActivityBodyContent_default,
5319
5319
  {
@@ -5935,8 +5935,75 @@ var SelectionBox = ({
5935
5935
  };
5936
5936
  var SelectionBox_default = SelectionBox;
5937
5937
 
5938
- // src/components/activities/ActivityPreviewByData.tsx
5938
+ // src/components/activities/evaluation-rubric-content/ActivityEvaluationRubricContent.tsx
5939
+ var import_react_katex11 = require("react-katex");
5939
5940
  var import_jsx_runtime41 = require("react/jsx-runtime");
5941
+ var ActivityEvaluationRubricContent = ({
5942
+ activityTemplateType,
5943
+ data
5944
+ }) => {
5945
+ if (!activityTemplateType) return;
5946
+ let evaluationRubricMapString = "";
5947
+ if (activityTemplateType === "ORDERING") {
5948
+ if (data["orderingEvaluationRubricMap"])
5949
+ evaluationRubricMapString = data["orderingEvaluationRubricMap"];
5950
+ } else if (activityTemplateType === "DROPDOWN") {
5951
+ if (data["dropdownEvaluationRubricMap"])
5952
+ evaluationRubricMapString = data["dropdownEvaluationRubricMap"];
5953
+ } else if (activityTemplateType === "MCSA") {
5954
+ if (data["MCSAEvaluationRubricMap"])
5955
+ evaluationRubricMapString = data["MCSAEvaluationRubricMap"];
5956
+ } else if (activityTemplateType === "MCMA") {
5957
+ if (data["MCMAEvaluationRubricMap"])
5958
+ evaluationRubricMapString = data["MCMAEvaluationRubricMap"];
5959
+ } else if (activityTemplateType === "MATCHING") {
5960
+ if (data["matchingEvaluationRubricMap"])
5961
+ evaluationRubricMapString = data["matchingEvaluationRubricMap"];
5962
+ } else if (activityTemplateType === "GROUPING") {
5963
+ if (data["groupingEvaluationRubricMap"])
5964
+ evaluationRubricMapString = data["groupingEvaluationRubricMap"];
5965
+ } else if (activityTemplateType === "FILL_IN_THE_BLANKS") {
5966
+ if (data["fillInTheBlanksEvaluationRubricMap"])
5967
+ evaluationRubricMapString = data["fillInTheBlanksEvaluationRubricMap"];
5968
+ } else if (activityTemplateType === "OPEN_ENDED") {
5969
+ if (data["openEndedEvaluationRubricMap"])
5970
+ evaluationRubricMapString = data["openEndedEvaluationRubricMap"];
5971
+ } else if (activityTemplateType === "TRUE_FALSE") {
5972
+ if (data["trueFalseEvaluationRubricMap"])
5973
+ evaluationRubricMapString = data["trueFalseEvaluationRubricMap"];
5974
+ }
5975
+ const evaluationRubricMap = JSON.parse(evaluationRubricMapString);
5976
+ if (!evaluationRubricMap) return;
5977
+ if (Object.keys(evaluationRubricMap).length === 0) return;
5978
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "mx-2", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "p-4 border-catchup-blue border-2 rounded-catchup-xlarge", children: [
5979
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "text-xl font-bold text-center mb-3", children: i18n_default.t("evaluation_rubric") }),
5980
+ Object.keys(evaluationRubricMap).map((key, index) => {
5981
+ const currentItem = JSON.parse(evaluationRubricMap[key]);
5982
+ const { value } = currentItem;
5983
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "my-3", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5984
+ "span",
5985
+ {
5986
+ className: "text-xl whitespace-pre-wrap",
5987
+ children: constructInputWithSpecialExpressionList(value).map(
5988
+ (inputPart, index2) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5989
+ "span",
5990
+ {
5991
+ className: `${inputPart.isBold ? "font-bold" : ""} ${inputPart.isUnderline ? "underline" : ""}`,
5992
+ children: inputPart.isEquation ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "text-2xl", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_react_katex11.InlineMath, { math: inputPart.value }) }) : inputPart.value
5993
+ },
5994
+ index2
5995
+ )
5996
+ )
5997
+ },
5998
+ `${key}_${index}`
5999
+ ) });
6000
+ })
6001
+ ] }) });
6002
+ };
6003
+ var ActivityEvaluationRubricContent_default = ActivityEvaluationRubricContent;
6004
+
6005
+ // src/components/activities/ActivityPreviewByData.tsx
6006
+ var import_jsx_runtime42 = require("react/jsx-runtime");
5940
6007
  var ActivityPreviewByData = ({
5941
6008
  data,
5942
6009
  showType,
@@ -5944,6 +6011,7 @@ var ActivityPreviewByData = ({
5944
6011
  lockedType,
5945
6012
  typeOptionList,
5946
6013
  showSolution,
6014
+ showEvaluationRubric,
5947
6015
  showTaxonomy,
5948
6016
  isFullScreen
5949
6017
  }) => {
@@ -6018,10 +6086,10 @@ var ActivityPreviewByData = ({
6018
6086
  }, [data, lockedType, typeOptionList, showTaxonomy]);
6019
6087
  if (!data) return;
6020
6088
  const answer = constructAnswerBasedOnData(data);
6021
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { children: [
6022
- showType ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "mb-4", children: [
6023
- showDescription ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "my-2", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "font-semibold text-lg", children: i18n_default.t("activity_template") }) }) : null,
6024
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6089
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { children: [
6090
+ showType ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "mb-4", children: [
6091
+ showDescription ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "my-2", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", { className: "font-semibold text-lg", children: i18n_default.t("activity_template") }) }) : null,
6092
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6025
6093
  SelectionBox_default,
6026
6094
  {
6027
6095
  optionList,
@@ -6032,7 +6100,7 @@ var ActivityPreviewByData = ({
6032
6100
  }
6033
6101
  )
6034
6102
  ] }) : null,
6035
- selectedType ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "", children: selectedType === "ORDERING" && data["orderingBodyMap"] != null && data["orderingMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6103
+ selectedType ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "", children: selectedType === "ORDERING" && data["orderingBodyMap"] != null && data["orderingMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6036
6104
  OrderingActivityContent_default,
6037
6105
  {
6038
6106
  answer,
@@ -6046,7 +6114,7 @@ var ActivityPreviewByData = ({
6046
6114
  showCorrectAnswer: true,
6047
6115
  isFullScreen
6048
6116
  }
6049
- ) : selectedType === "DROPDOWN" && data["dropdownBodyMap"] != null && data["dropdownMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6117
+ ) : selectedType === "DROPDOWN" && data["dropdownBodyMap"] != null && data["dropdownMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6050
6118
  DropdownActivityContent_default,
6051
6119
  {
6052
6120
  answer,
@@ -6060,7 +6128,7 @@ var ActivityPreviewByData = ({
6060
6128
  showCorrectAnswer: true,
6061
6129
  isFullScreen
6062
6130
  }
6063
- ) : selectedType === "MCSA" && data["MCSABodyMap"] != null && data["MCSAMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6131
+ ) : selectedType === "MCSA" && data["MCSABodyMap"] != null && data["MCSAMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6064
6132
  MCSAActivityContent_default,
6065
6133
  {
6066
6134
  answer,
@@ -6074,7 +6142,7 @@ var ActivityPreviewByData = ({
6074
6142
  showCorrectAnswer: true,
6075
6143
  isFullScreen
6076
6144
  }
6077
- ) : selectedType === "MCMA" && data["MCMABodyMap"] != null && data["MCMAMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6145
+ ) : selectedType === "MCMA" && data["MCMABodyMap"] != null && data["MCMAMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6078
6146
  MCMAActivityContent_default,
6079
6147
  {
6080
6148
  answer,
@@ -6088,7 +6156,7 @@ var ActivityPreviewByData = ({
6088
6156
  showCorrectAnswer: true,
6089
6157
  isFullScreen
6090
6158
  }
6091
- ) : selectedType === "MATCHING" && data["matchingBodyMap"] != null && data["matchingMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6159
+ ) : selectedType === "MATCHING" && data["matchingBodyMap"] != null && data["matchingMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6092
6160
  MatchingActivityContent_default,
6093
6161
  {
6094
6162
  answer,
@@ -6102,7 +6170,7 @@ var ActivityPreviewByData = ({
6102
6170
  showCorrectAnswer: true,
6103
6171
  isFullScreen
6104
6172
  }
6105
- ) : selectedType === "GROUPING" && data["groupingBodyMap"] != null && data["groupingMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6173
+ ) : selectedType === "GROUPING" && data["groupingBodyMap"] != null && data["groupingMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6106
6174
  GroupingActivityContent_default,
6107
6175
  {
6108
6176
  answer,
@@ -6116,7 +6184,7 @@ var ActivityPreviewByData = ({
6116
6184
  showCorrectAnswer: true,
6117
6185
  isFullScreen
6118
6186
  }
6119
- ) : selectedType === "FILL_IN_THE_BLANKS" && data["fillInTheBlanksBodyMap"] != null && data["fillInTheBlanksMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6187
+ ) : selectedType === "FILL_IN_THE_BLANKS" && data["fillInTheBlanksBodyMap"] != null && data["fillInTheBlanksMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6120
6188
  FillInTheBlanksActivityContent_default,
6121
6189
  {
6122
6190
  answer,
@@ -6130,7 +6198,7 @@ var ActivityPreviewByData = ({
6130
6198
  showCorrectAnswer: true,
6131
6199
  isFullScreen
6132
6200
  }
6133
- ) : selectedType === "OPEN_ENDED" && data["openEndedBodyMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6201
+ ) : selectedType === "OPEN_ENDED" && data["openEndedBodyMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6134
6202
  OpenEndedActivityContent_default,
6135
6203
  {
6136
6204
  answer,
@@ -6140,7 +6208,7 @@ var ActivityPreviewByData = ({
6140
6208
  data,
6141
6209
  isFullScreen
6142
6210
  }
6143
- ) : selectedType === "TRUE_FALSE" && data["trueFalseBodyMap"] != null && data["trueFalseMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6211
+ ) : selectedType === "TRUE_FALSE" && data["trueFalseBodyMap"] != null && data["trueFalseMaterialMap"] != null ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6144
6212
  TrueFalseActivityContent_default,
6145
6213
  {
6146
6214
  answer,
@@ -6155,21 +6223,28 @@ var ActivityPreviewByData = ({
6155
6223
  isFullScreen
6156
6224
  }
6157
6225
  ) : null }, selectedType) : null,
6158
- selectedType && showSolution ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "my-4", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
6226
+ selectedType && showSolution ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "my-4", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6159
6227
  ActivitySolutionContent_default,
6160
6228
  {
6161
6229
  activityTemplateType: selectedType,
6162
6230
  data
6163
6231
  }
6232
+ ) }) : null,
6233
+ selectedType && showEvaluationRubric ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6234
+ ActivityEvaluationRubricContent_default,
6235
+ {
6236
+ activityTemplateType: selectedType,
6237
+ data
6238
+ }
6164
6239
  ) }) : null
6165
6240
  ] }, key);
6166
6241
  };
6167
6242
  var ActivityPreviewByData_default = ActivityPreviewByData;
6168
6243
 
6169
6244
  // src/components/dividers/BlueVerticalDividerLine.tsx
6170
- var import_jsx_runtime42 = require("react/jsx-runtime");
6245
+ var import_jsx_runtime43 = require("react/jsx-runtime");
6171
6246
  var BlueVerticalDividerLine = ({ opacity }) => {
6172
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
6247
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
6173
6248
  "div",
6174
6249
  {
6175
6250
  className: `w-[2px] h-[40px] my-4 bg-catchup-blue ${opacity === "medium" ? "opacity-50" : ""}`
@@ -6179,14 +6254,14 @@ var BlueVerticalDividerLine = ({ opacity }) => {
6179
6254
  var BlueVerticalDividerLine_default = BlueVerticalDividerLine;
6180
6255
 
6181
6256
  // src/components/boxes/SelectionCheckbox.tsx
6182
- var import_jsx_runtime43 = require("react/jsx-runtime");
6257
+ var import_jsx_runtime44 = require("react/jsx-runtime");
6183
6258
  var SelectionCheckbox = ({
6184
6259
  optionList,
6185
6260
  selectedIdList,
6186
6261
  handleSelectOnClick,
6187
6262
  handleRemoveOnClick
6188
6263
  }) => {
6189
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap text-center", children: optionList.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
6264
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap text-center", children: optionList.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
6190
6265
  "div",
6191
6266
  {
6192
6267
  className: `${selectedIdList.findIndex(
@@ -6201,14 +6276,14 @@ var SelectionCheckbox = ({
6201
6276
  handleRemoveOnClick(option.id);
6202
6277
  }
6203
6278
  },
6204
- children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
6279
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
6205
6280
  "div",
6206
6281
  {
6207
6282
  className: `flex flex-row items-center gap-x-1 ${selectedIdList.findIndex(
6208
6283
  (selectedId) => selectedId === option.id
6209
6284
  ) > -1 ? "opacity-100" : "opacity-50"}`,
6210
6285
  children: [
6211
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
6286
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
6212
6287
  BaseImage_default,
6213
6288
  {
6214
6289
  src: selectedIdList.findIndex(
@@ -6218,7 +6293,7 @@ var SelectionCheckbox = ({
6218
6293
  size: "small"
6219
6294
  }
6220
6295
  ) }),
6221
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { children: option.text }) })
6296
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: option.text }) })
6222
6297
  ]
6223
6298
  }
6224
6299
  )
@@ -6229,7 +6304,7 @@ var SelectionCheckbox = ({
6229
6304
  var SelectionCheckbox_default = SelectionCheckbox;
6230
6305
 
6231
6306
  // src/components/tabs/SelectionTab.tsx
6232
- var import_jsx_runtime44 = require("react/jsx-runtime");
6307
+ var import_jsx_runtime45 = require("react/jsx-runtime");
6233
6308
  var SelectionTab = ({
6234
6309
  optionList,
6235
6310
  selectedId,
@@ -6239,7 +6314,7 @@ var SelectionTab = ({
6239
6314
  textColor,
6240
6315
  borderColor
6241
6316
  }) => {
6242
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap mb-2 text-center", children: optionList.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
6317
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap mb-2 text-center", children: optionList.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
6243
6318
  "div",
6244
6319
  {
6245
6320
  className: `${selectedId === option.id ? selectedTextColor ? selectedTextColor : "text-catchup-blue-500" : textColor ? textColor : "text-catchup-gray-300"} ${selectedId === option.id ? selectedBorderColor ? selectedBorderColor : "border-catchup-blue-500" : borderColor ? borderColor : "border-catchup-gray-50"} border-b-2 transition-all duration-300 p-3 cursor-pointer`,
@@ -6247,8 +6322,8 @@ var SelectionTab = ({
6247
6322
  handleSelectOnClick(option.id);
6248
6323
  },
6249
6324
  children: [
6250
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-lg", children: option.title }),
6251
- option.subTitle ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-md", children: option.subTitle }) : null
6325
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "text-lg", children: option.title }),
6326
+ option.subTitle ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "text-md", children: option.subTitle }) : null
6252
6327
  ]
6253
6328
  },
6254
6329
  index
@@ -6257,57 +6332,57 @@ var SelectionTab = ({
6257
6332
  var SelectionTab_default = SelectionTab;
6258
6333
 
6259
6334
  // src/components/labels/ActivityTemplateLabel.tsx
6260
- var import_jsx_runtime45 = require("react/jsx-runtime");
6335
+ var import_jsx_runtime46 = require("react/jsx-runtime");
6261
6336
  var ActivityTemplateLabel = ({
6262
6337
  title,
6263
6338
  font
6264
6339
  }) => {
6265
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6266
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(BaseImage_default, { src: "/icons/activity.png", alt: "label", size: "xsmall" }),
6267
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: font ? font : "text-sm", children: title })
6340
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6341
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(BaseImage_default, { src: "/icons/activity.png", alt: "label", size: "xsmall" }),
6342
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { className: font ? font : "text-sm", children: title })
6268
6343
  ] }) });
6269
6344
  };
6270
6345
  var ActivityTemplateLabel_default = ActivityTemplateLabel;
6271
6346
 
6272
6347
  // src/components/labels/BrandLabel.tsx
6273
- var import_jsx_runtime46 = require("react/jsx-runtime");
6348
+ var import_jsx_runtime47 = require("react/jsx-runtime");
6274
6349
  var BrandLabel = ({ title, icon, font }) => {
6275
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6276
- icon ? icon : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(BaseImage_default, { src: "/icons/brand-label.png", alt: "label", size: "xsmall" }),
6277
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { className: font ? font : "text-sm", children: title })
6350
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6351
+ icon ? icon : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(BaseImage_default, { src: "/icons/brand-label.png", alt: "label", size: "xsmall" }),
6352
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: font ? font : "text-sm", children: title })
6278
6353
  ] }) });
6279
6354
  };
6280
6355
  var BrandLabel_default = BrandLabel;
6281
6356
 
6282
6357
  // src/components/labels/CoterieLabel.tsx
6283
- var import_jsx_runtime47 = require("react/jsx-runtime");
6358
+ var import_jsx_runtime48 = require("react/jsx-runtime");
6284
6359
  var CoterieLabel = ({ title, font }) => {
6285
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: font ? font : "text-sm", children: title }) });
6360
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("p", { className: font ? font : "text-sm", children: title }) });
6286
6361
  };
6287
6362
  var CoterieLabel_default = CoterieLabel;
6288
6363
 
6289
6364
  // src/components/labels/GradeLabel.tsx
6290
- var import_jsx_runtime48 = require("react/jsx-runtime");
6365
+ var import_jsx_runtime49 = require("react/jsx-runtime");
6291
6366
  var GradeLabel = ({ title, font }) => {
6292
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("p", { className: font ? font : "text-sm", children: title }) });
6367
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: font ? font : "text-sm", children: title }) });
6293
6368
  };
6294
6369
  var GradeLabel_default = GradeLabel;
6295
6370
 
6296
6371
  // src/components/labels/OutcomeLabel.tsx
6297
- var import_jsx_runtime49 = require("react/jsx-runtime");
6372
+ var import_jsx_runtime50 = require("react/jsx-runtime");
6298
6373
  var OutcomeLabel = ({ title, font }) => {
6299
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6300
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(BaseImage_default, { src: "/icons/category.png", alt: "label", size: "xsmall" }),
6301
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: font ? font : "text-sm", children: title })
6374
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6375
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(BaseImage_default, { src: "/icons/category.png", alt: "label", size: "xsmall" }),
6376
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: font ? font : "text-sm", children: title })
6302
6377
  ] }) });
6303
6378
  };
6304
6379
  var OutcomeLabel_default = OutcomeLabel;
6305
6380
 
6306
6381
  // src/components/labels/PersonalLabel.tsx
6307
- var import_jsx_runtime50 = require("react/jsx-runtime");
6382
+ var import_jsx_runtime51 = require("react/jsx-runtime");
6308
6383
  var PersonalLabel = ({ title, icon, font }) => {
6309
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-personal-label-border bg-personal-label text-personal-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6310
- icon ? icon : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
6384
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-personal-label-border bg-personal-label text-personal-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6385
+ icon ? icon : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
6311
6386
  BaseImage_default,
6312
6387
  {
6313
6388
  src: "/icons/personal-label.png",
@@ -6315,16 +6390,16 @@ var PersonalLabel = ({ title, icon, font }) => {
6315
6390
  size: "xsmall"
6316
6391
  }
6317
6392
  ),
6318
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: font ? font : "text-sm", children: title })
6393
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: font ? font : "text-sm", children: title })
6319
6394
  ] }) });
6320
6395
  };
6321
6396
  var PersonalLabel_default = PersonalLabel;
6322
6397
 
6323
6398
  // src/components/labels/PublishingHouseLabel.tsx
6324
- var import_jsx_runtime51 = require("react/jsx-runtime");
6399
+ var import_jsx_runtime52 = require("react/jsx-runtime");
6325
6400
  var PublishingHouseLabel = ({ title, icon, font }) => {
6326
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-publishing-house-label-border bg-publishing-house-label text-publishing-house-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6327
- icon ? icon : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
6401
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "px-3 py-1 gap-x-3 border border-publishing-house-label-border bg-publishing-house-label text-publishing-house-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex flex-row items-center gap-x-2", children: [
6402
+ icon ? icon : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6328
6403
  BaseImage_default,
6329
6404
  {
6330
6405
  src: "/icons/publishing-house-label.png",
@@ -6332,7 +6407,7 @@ var PublishingHouseLabel = ({ title, icon, font }) => {
6332
6407
  size: "xsmall"
6333
6408
  }
6334
6409
  ),
6335
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: font ? font : "text-sm", children: title })
6410
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: font ? font : "text-sm", children: title })
6336
6411
  ] }) });
6337
6412
  };
6338
6413
  var PublishingHouseLabel_default = PublishingHouseLabel;
package/dist/index.mjs CHANGED
@@ -5139,7 +5139,7 @@ var OpenEndedActivityContent = ({
5139
5139
  /* @__PURE__ */ jsx33(
5140
5140
  "div",
5141
5141
  {
5142
- className: `${showMaterialContent ? "w-full" : isFullScreen ? "w-full" : "w-full md:w-[40%]"}`,
5142
+ className: `${showMaterialContent ? isFullScreen ? "w-full" : "w-full md:w-[40%]" : "w-full"}`,
5143
5143
  children: /* @__PURE__ */ jsx33(
5144
5144
  ActivityBodyContent_default,
5145
5145
  {
@@ -5761,8 +5761,75 @@ var SelectionBox = ({
5761
5761
  };
5762
5762
  var SelectionBox_default = SelectionBox;
5763
5763
 
5764
- // src/components/activities/ActivityPreviewByData.tsx
5764
+ // src/components/activities/evaluation-rubric-content/ActivityEvaluationRubricContent.tsx
5765
+ import { InlineMath as InlineMath11 } from "react-katex";
5765
5766
  import { jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
5767
+ var ActivityEvaluationRubricContent = ({
5768
+ activityTemplateType,
5769
+ data
5770
+ }) => {
5771
+ if (!activityTemplateType) return;
5772
+ let evaluationRubricMapString = "";
5773
+ if (activityTemplateType === "ORDERING") {
5774
+ if (data["orderingEvaluationRubricMap"])
5775
+ evaluationRubricMapString = data["orderingEvaluationRubricMap"];
5776
+ } else if (activityTemplateType === "DROPDOWN") {
5777
+ if (data["dropdownEvaluationRubricMap"])
5778
+ evaluationRubricMapString = data["dropdownEvaluationRubricMap"];
5779
+ } else if (activityTemplateType === "MCSA") {
5780
+ if (data["MCSAEvaluationRubricMap"])
5781
+ evaluationRubricMapString = data["MCSAEvaluationRubricMap"];
5782
+ } else if (activityTemplateType === "MCMA") {
5783
+ if (data["MCMAEvaluationRubricMap"])
5784
+ evaluationRubricMapString = data["MCMAEvaluationRubricMap"];
5785
+ } else if (activityTemplateType === "MATCHING") {
5786
+ if (data["matchingEvaluationRubricMap"])
5787
+ evaluationRubricMapString = data["matchingEvaluationRubricMap"];
5788
+ } else if (activityTemplateType === "GROUPING") {
5789
+ if (data["groupingEvaluationRubricMap"])
5790
+ evaluationRubricMapString = data["groupingEvaluationRubricMap"];
5791
+ } else if (activityTemplateType === "FILL_IN_THE_BLANKS") {
5792
+ if (data["fillInTheBlanksEvaluationRubricMap"])
5793
+ evaluationRubricMapString = data["fillInTheBlanksEvaluationRubricMap"];
5794
+ } else if (activityTemplateType === "OPEN_ENDED") {
5795
+ if (data["openEndedEvaluationRubricMap"])
5796
+ evaluationRubricMapString = data["openEndedEvaluationRubricMap"];
5797
+ } else if (activityTemplateType === "TRUE_FALSE") {
5798
+ if (data["trueFalseEvaluationRubricMap"])
5799
+ evaluationRubricMapString = data["trueFalseEvaluationRubricMap"];
5800
+ }
5801
+ const evaluationRubricMap = JSON.parse(evaluationRubricMapString);
5802
+ if (!evaluationRubricMap) return;
5803
+ if (Object.keys(evaluationRubricMap).length === 0) return;
5804
+ return /* @__PURE__ */ jsx41("div", { className: "mx-2", children: /* @__PURE__ */ jsxs32("div", { className: "p-4 border-catchup-blue border-2 rounded-catchup-xlarge", children: [
5805
+ /* @__PURE__ */ jsx41("p", { className: "text-xl font-bold text-center mb-3", children: i18n_default.t("evaluation_rubric") }),
5806
+ Object.keys(evaluationRubricMap).map((key, index) => {
5807
+ const currentItem = JSON.parse(evaluationRubricMap[key]);
5808
+ const { value } = currentItem;
5809
+ return /* @__PURE__ */ jsx41("p", { className: "my-3", children: /* @__PURE__ */ jsx41(
5810
+ "span",
5811
+ {
5812
+ className: "text-xl whitespace-pre-wrap",
5813
+ children: constructInputWithSpecialExpressionList(value).map(
5814
+ (inputPart, index2) => /* @__PURE__ */ jsx41(
5815
+ "span",
5816
+ {
5817
+ className: `${inputPart.isBold ? "font-bold" : ""} ${inputPart.isUnderline ? "underline" : ""}`,
5818
+ children: inputPart.isEquation ? /* @__PURE__ */ jsx41("span", { className: "text-2xl", children: /* @__PURE__ */ jsx41(InlineMath11, { math: inputPart.value }) }) : inputPart.value
5819
+ },
5820
+ index2
5821
+ )
5822
+ )
5823
+ },
5824
+ `${key}_${index}`
5825
+ ) });
5826
+ })
5827
+ ] }) });
5828
+ };
5829
+ var ActivityEvaluationRubricContent_default = ActivityEvaluationRubricContent;
5830
+
5831
+ // src/components/activities/ActivityPreviewByData.tsx
5832
+ import { jsx as jsx42, jsxs as jsxs33 } from "react/jsx-runtime";
5766
5833
  var ActivityPreviewByData = ({
5767
5834
  data,
5768
5835
  showType,
@@ -5770,6 +5837,7 @@ var ActivityPreviewByData = ({
5770
5837
  lockedType,
5771
5838
  typeOptionList,
5772
5839
  showSolution,
5840
+ showEvaluationRubric,
5773
5841
  showTaxonomy,
5774
5842
  isFullScreen
5775
5843
  }) => {
@@ -5844,10 +5912,10 @@ var ActivityPreviewByData = ({
5844
5912
  }, [data, lockedType, typeOptionList, showTaxonomy]);
5845
5913
  if (!data) return;
5846
5914
  const answer = constructAnswerBasedOnData(data);
5847
- return /* @__PURE__ */ jsxs32("div", { children: [
5848
- showType ? /* @__PURE__ */ jsxs32("div", { className: "mb-4", children: [
5849
- showDescription ? /* @__PURE__ */ jsx41("div", { className: "my-2", children: /* @__PURE__ */ jsx41("p", { className: "font-semibold text-lg", children: i18n_default.t("activity_template") }) }) : null,
5850
- /* @__PURE__ */ jsx41(
5915
+ return /* @__PURE__ */ jsxs33("div", { children: [
5916
+ showType ? /* @__PURE__ */ jsxs33("div", { className: "mb-4", children: [
5917
+ showDescription ? /* @__PURE__ */ jsx42("div", { className: "my-2", children: /* @__PURE__ */ jsx42("p", { className: "font-semibold text-lg", children: i18n_default.t("activity_template") }) }) : null,
5918
+ /* @__PURE__ */ jsx42(
5851
5919
  SelectionBox_default,
5852
5920
  {
5853
5921
  optionList,
@@ -5858,7 +5926,7 @@ var ActivityPreviewByData = ({
5858
5926
  }
5859
5927
  )
5860
5928
  ] }) : null,
5861
- selectedType ? /* @__PURE__ */ jsx41("div", { className: "", children: selectedType === "ORDERING" && data["orderingBodyMap"] != null && data["orderingMaterialMap"] != null ? /* @__PURE__ */ jsx41(
5929
+ selectedType ? /* @__PURE__ */ jsx42("div", { className: "", children: selectedType === "ORDERING" && data["orderingBodyMap"] != null && data["orderingMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5862
5930
  OrderingActivityContent_default,
5863
5931
  {
5864
5932
  answer,
@@ -5872,7 +5940,7 @@ var ActivityPreviewByData = ({
5872
5940
  showCorrectAnswer: true,
5873
5941
  isFullScreen
5874
5942
  }
5875
- ) : selectedType === "DROPDOWN" && data["dropdownBodyMap"] != null && data["dropdownMaterialMap"] != null ? /* @__PURE__ */ jsx41(
5943
+ ) : selectedType === "DROPDOWN" && data["dropdownBodyMap"] != null && data["dropdownMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5876
5944
  DropdownActivityContent_default,
5877
5945
  {
5878
5946
  answer,
@@ -5886,7 +5954,7 @@ var ActivityPreviewByData = ({
5886
5954
  showCorrectAnswer: true,
5887
5955
  isFullScreen
5888
5956
  }
5889
- ) : selectedType === "MCSA" && data["MCSABodyMap"] != null && data["MCSAMaterialMap"] != null ? /* @__PURE__ */ jsx41(
5957
+ ) : selectedType === "MCSA" && data["MCSABodyMap"] != null && data["MCSAMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5890
5958
  MCSAActivityContent_default,
5891
5959
  {
5892
5960
  answer,
@@ -5900,7 +5968,7 @@ var ActivityPreviewByData = ({
5900
5968
  showCorrectAnswer: true,
5901
5969
  isFullScreen
5902
5970
  }
5903
- ) : selectedType === "MCMA" && data["MCMABodyMap"] != null && data["MCMAMaterialMap"] != null ? /* @__PURE__ */ jsx41(
5971
+ ) : selectedType === "MCMA" && data["MCMABodyMap"] != null && data["MCMAMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5904
5972
  MCMAActivityContent_default,
5905
5973
  {
5906
5974
  answer,
@@ -5914,7 +5982,7 @@ var ActivityPreviewByData = ({
5914
5982
  showCorrectAnswer: true,
5915
5983
  isFullScreen
5916
5984
  }
5917
- ) : selectedType === "MATCHING" && data["matchingBodyMap"] != null && data["matchingMaterialMap"] != null ? /* @__PURE__ */ jsx41(
5985
+ ) : selectedType === "MATCHING" && data["matchingBodyMap"] != null && data["matchingMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5918
5986
  MatchingActivityContent_default,
5919
5987
  {
5920
5988
  answer,
@@ -5928,7 +5996,7 @@ var ActivityPreviewByData = ({
5928
5996
  showCorrectAnswer: true,
5929
5997
  isFullScreen
5930
5998
  }
5931
- ) : selectedType === "GROUPING" && data["groupingBodyMap"] != null && data["groupingMaterialMap"] != null ? /* @__PURE__ */ jsx41(
5999
+ ) : selectedType === "GROUPING" && data["groupingBodyMap"] != null && data["groupingMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5932
6000
  GroupingActivityContent_default,
5933
6001
  {
5934
6002
  answer,
@@ -5942,7 +6010,7 @@ var ActivityPreviewByData = ({
5942
6010
  showCorrectAnswer: true,
5943
6011
  isFullScreen
5944
6012
  }
5945
- ) : selectedType === "FILL_IN_THE_BLANKS" && data["fillInTheBlanksBodyMap"] != null && data["fillInTheBlanksMaterialMap"] != null ? /* @__PURE__ */ jsx41(
6013
+ ) : selectedType === "FILL_IN_THE_BLANKS" && data["fillInTheBlanksBodyMap"] != null && data["fillInTheBlanksMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5946
6014
  FillInTheBlanksActivityContent_default,
5947
6015
  {
5948
6016
  answer,
@@ -5956,7 +6024,7 @@ var ActivityPreviewByData = ({
5956
6024
  showCorrectAnswer: true,
5957
6025
  isFullScreen
5958
6026
  }
5959
- ) : selectedType === "OPEN_ENDED" && data["openEndedBodyMap"] != null ? /* @__PURE__ */ jsx41(
6027
+ ) : selectedType === "OPEN_ENDED" && data["openEndedBodyMap"] != null ? /* @__PURE__ */ jsx42(
5960
6028
  OpenEndedActivityContent_default,
5961
6029
  {
5962
6030
  answer,
@@ -5966,7 +6034,7 @@ var ActivityPreviewByData = ({
5966
6034
  data,
5967
6035
  isFullScreen
5968
6036
  }
5969
- ) : selectedType === "TRUE_FALSE" && data["trueFalseBodyMap"] != null && data["trueFalseMaterialMap"] != null ? /* @__PURE__ */ jsx41(
6037
+ ) : selectedType === "TRUE_FALSE" && data["trueFalseBodyMap"] != null && data["trueFalseMaterialMap"] != null ? /* @__PURE__ */ jsx42(
5970
6038
  TrueFalseActivityContent_default,
5971
6039
  {
5972
6040
  answer,
@@ -5981,21 +6049,28 @@ var ActivityPreviewByData = ({
5981
6049
  isFullScreen
5982
6050
  }
5983
6051
  ) : null }, selectedType) : null,
5984
- selectedType && showSolution ? /* @__PURE__ */ jsx41("div", { className: "my-4", children: /* @__PURE__ */ jsx41(
6052
+ selectedType && showSolution ? /* @__PURE__ */ jsx42("div", { className: "my-4", children: /* @__PURE__ */ jsx42(
5985
6053
  ActivitySolutionContent_default,
5986
6054
  {
5987
6055
  activityTemplateType: selectedType,
5988
6056
  data
5989
6057
  }
6058
+ ) }) : null,
6059
+ selectedType && showEvaluationRubric ? /* @__PURE__ */ jsx42("div", { children: /* @__PURE__ */ jsx42(
6060
+ ActivityEvaluationRubricContent_default,
6061
+ {
6062
+ activityTemplateType: selectedType,
6063
+ data
6064
+ }
5990
6065
  ) }) : null
5991
6066
  ] }, key);
5992
6067
  };
5993
6068
  var ActivityPreviewByData_default = ActivityPreviewByData;
5994
6069
 
5995
6070
  // src/components/dividers/BlueVerticalDividerLine.tsx
5996
- import { jsx as jsx42 } from "react/jsx-runtime";
6071
+ import { jsx as jsx43 } from "react/jsx-runtime";
5997
6072
  var BlueVerticalDividerLine = ({ opacity }) => {
5998
- return /* @__PURE__ */ jsx42(
6073
+ return /* @__PURE__ */ jsx43(
5999
6074
  "div",
6000
6075
  {
6001
6076
  className: `w-[2px] h-[40px] my-4 bg-catchup-blue ${opacity === "medium" ? "opacity-50" : ""}`
@@ -6005,14 +6080,14 @@ var BlueVerticalDividerLine = ({ opacity }) => {
6005
6080
  var BlueVerticalDividerLine_default = BlueVerticalDividerLine;
6006
6081
 
6007
6082
  // src/components/boxes/SelectionCheckbox.tsx
6008
- import { jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
6083
+ import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
6009
6084
  var SelectionCheckbox = ({
6010
6085
  optionList,
6011
6086
  selectedIdList,
6012
6087
  handleSelectOnClick,
6013
6088
  handleRemoveOnClick
6014
6089
  }) => {
6015
- return /* @__PURE__ */ jsx43("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap text-center", children: optionList.map((option, index) => /* @__PURE__ */ jsx43(
6090
+ return /* @__PURE__ */ jsx44("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap text-center", children: optionList.map((option, index) => /* @__PURE__ */ jsx44(
6016
6091
  "div",
6017
6092
  {
6018
6093
  className: `${selectedIdList.findIndex(
@@ -6027,14 +6102,14 @@ var SelectionCheckbox = ({
6027
6102
  handleRemoveOnClick(option.id);
6028
6103
  }
6029
6104
  },
6030
- children: /* @__PURE__ */ jsxs33(
6105
+ children: /* @__PURE__ */ jsxs34(
6031
6106
  "div",
6032
6107
  {
6033
6108
  className: `flex flex-row items-center gap-x-1 ${selectedIdList.findIndex(
6034
6109
  (selectedId) => selectedId === option.id
6035
6110
  ) > -1 ? "opacity-100" : "opacity-50"}`,
6036
6111
  children: [
6037
- /* @__PURE__ */ jsx43("div", { children: /* @__PURE__ */ jsx43(
6112
+ /* @__PURE__ */ jsx44("div", { children: /* @__PURE__ */ jsx44(
6038
6113
  BaseImage_default,
6039
6114
  {
6040
6115
  src: selectedIdList.findIndex(
@@ -6044,7 +6119,7 @@ var SelectionCheckbox = ({
6044
6119
  size: "small"
6045
6120
  }
6046
6121
  ) }),
6047
- /* @__PURE__ */ jsx43("div", { className: "flex-1", children: /* @__PURE__ */ jsx43("p", { children: option.text }) })
6122
+ /* @__PURE__ */ jsx44("div", { className: "flex-1", children: /* @__PURE__ */ jsx44("p", { children: option.text }) })
6048
6123
  ]
6049
6124
  }
6050
6125
  )
@@ -6055,7 +6130,7 @@ var SelectionCheckbox = ({
6055
6130
  var SelectionCheckbox_default = SelectionCheckbox;
6056
6131
 
6057
6132
  // src/components/tabs/SelectionTab.tsx
6058
- import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
6133
+ import { jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
6059
6134
  var SelectionTab = ({
6060
6135
  optionList,
6061
6136
  selectedId,
@@ -6065,7 +6140,7 @@ var SelectionTab = ({
6065
6140
  textColor,
6066
6141
  borderColor
6067
6142
  }) => {
6068
- return /* @__PURE__ */ jsx44("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap mb-2 text-center", children: optionList.map((option, index) => /* @__PURE__ */ jsxs34(
6143
+ return /* @__PURE__ */ jsx45("div", { className: "flex flex-row items-center gap-x-4 gap-y-2 flex-wrap mb-2 text-center", children: optionList.map((option, index) => /* @__PURE__ */ jsxs35(
6069
6144
  "div",
6070
6145
  {
6071
6146
  className: `${selectedId === option.id ? selectedTextColor ? selectedTextColor : "text-catchup-blue-500" : textColor ? textColor : "text-catchup-gray-300"} ${selectedId === option.id ? selectedBorderColor ? selectedBorderColor : "border-catchup-blue-500" : borderColor ? borderColor : "border-catchup-gray-50"} border-b-2 transition-all duration-300 p-3 cursor-pointer`,
@@ -6073,8 +6148,8 @@ var SelectionTab = ({
6073
6148
  handleSelectOnClick(option.id);
6074
6149
  },
6075
6150
  children: [
6076
- /* @__PURE__ */ jsx44("p", { className: "text-lg", children: option.title }),
6077
- option.subTitle ? /* @__PURE__ */ jsx44("p", { className: "text-md", children: option.subTitle }) : null
6151
+ /* @__PURE__ */ jsx45("p", { className: "text-lg", children: option.title }),
6152
+ option.subTitle ? /* @__PURE__ */ jsx45("p", { className: "text-md", children: option.subTitle }) : null
6078
6153
  ]
6079
6154
  },
6080
6155
  index
@@ -6083,57 +6158,57 @@ var SelectionTab = ({
6083
6158
  var SelectionTab_default = SelectionTab;
6084
6159
 
6085
6160
  // src/components/labels/ActivityTemplateLabel.tsx
6086
- import { jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
6161
+ import { jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
6087
6162
  var ActivityTemplateLabel = ({
6088
6163
  title,
6089
6164
  font
6090
6165
  }) => {
6091
- return /* @__PURE__ */ jsx45("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs35("div", { className: "flex flex-row items-center gap-x-2", children: [
6092
- /* @__PURE__ */ jsx45(BaseImage_default, { src: "/icons/activity.png", alt: "label", size: "xsmall" }),
6093
- /* @__PURE__ */ jsx45("p", { className: font ? font : "text-sm", children: title })
6166
+ return /* @__PURE__ */ jsx46("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs36("div", { className: "flex flex-row items-center gap-x-2", children: [
6167
+ /* @__PURE__ */ jsx46(BaseImage_default, { src: "/icons/activity.png", alt: "label", size: "xsmall" }),
6168
+ /* @__PURE__ */ jsx46("p", { className: font ? font : "text-sm", children: title })
6094
6169
  ] }) });
6095
6170
  };
6096
6171
  var ActivityTemplateLabel_default = ActivityTemplateLabel;
6097
6172
 
6098
6173
  // src/components/labels/BrandLabel.tsx
6099
- import { jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
6174
+ import { jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
6100
6175
  var BrandLabel = ({ title, icon, font }) => {
6101
- return /* @__PURE__ */ jsx46("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs36("div", { className: "flex flex-row items-center gap-x-2", children: [
6102
- icon ? icon : /* @__PURE__ */ jsx46(BaseImage_default, { src: "/icons/brand-label.png", alt: "label", size: "xsmall" }),
6103
- /* @__PURE__ */ jsx46("p", { className: font ? font : "text-sm", children: title })
6176
+ return /* @__PURE__ */ jsx47("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs37("div", { className: "flex flex-row items-center gap-x-2", children: [
6177
+ icon ? icon : /* @__PURE__ */ jsx47(BaseImage_default, { src: "/icons/brand-label.png", alt: "label", size: "xsmall" }),
6178
+ /* @__PURE__ */ jsx47("p", { className: font ? font : "text-sm", children: title })
6104
6179
  ] }) });
6105
6180
  };
6106
6181
  var BrandLabel_default = BrandLabel;
6107
6182
 
6108
6183
  // src/components/labels/CoterieLabel.tsx
6109
- import { jsx as jsx47 } from "react/jsx-runtime";
6184
+ import { jsx as jsx48 } from "react/jsx-runtime";
6110
6185
  var CoterieLabel = ({ title, font }) => {
6111
- return /* @__PURE__ */ jsx47("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsx47("p", { className: font ? font : "text-sm", children: title }) });
6186
+ return /* @__PURE__ */ jsx48("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsx48("p", { className: font ? font : "text-sm", children: title }) });
6112
6187
  };
6113
6188
  var CoterieLabel_default = CoterieLabel;
6114
6189
 
6115
6190
  // src/components/labels/GradeLabel.tsx
6116
- import { jsx as jsx48 } from "react/jsx-runtime";
6191
+ import { jsx as jsx49 } from "react/jsx-runtime";
6117
6192
  var GradeLabel = ({ title, font }) => {
6118
- return /* @__PURE__ */ jsx48("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsx48("p", { className: font ? font : "text-sm", children: title }) });
6193
+ return /* @__PURE__ */ jsx49("div", { className: "px-3 py-1 gap-x-3 border border-grade-label-border bg-grade-label text-grade-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsx49("p", { className: font ? font : "text-sm", children: title }) });
6119
6194
  };
6120
6195
  var GradeLabel_default = GradeLabel;
6121
6196
 
6122
6197
  // src/components/labels/OutcomeLabel.tsx
6123
- import { jsx as jsx49, jsxs as jsxs37 } from "react/jsx-runtime";
6198
+ import { jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
6124
6199
  var OutcomeLabel = ({ title, font }) => {
6125
- return /* @__PURE__ */ jsx49("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs37("div", { className: "flex flex-row items-center gap-x-2", children: [
6126
- /* @__PURE__ */ jsx49(BaseImage_default, { src: "/icons/category.png", alt: "label", size: "xsmall" }),
6127
- /* @__PURE__ */ jsx49("p", { className: font ? font : "text-sm", children: title })
6200
+ return /* @__PURE__ */ jsx50("div", { className: "px-3 py-1 gap-x-3 border border-brand-label-border bg-brand-label text-brand-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs38("div", { className: "flex flex-row items-center gap-x-2", children: [
6201
+ /* @__PURE__ */ jsx50(BaseImage_default, { src: "/icons/category.png", alt: "label", size: "xsmall" }),
6202
+ /* @__PURE__ */ jsx50("p", { className: font ? font : "text-sm", children: title })
6128
6203
  ] }) });
6129
6204
  };
6130
6205
  var OutcomeLabel_default = OutcomeLabel;
6131
6206
 
6132
6207
  // src/components/labels/PersonalLabel.tsx
6133
- import { jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
6208
+ import { jsx as jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
6134
6209
  var PersonalLabel = ({ title, icon, font }) => {
6135
- return /* @__PURE__ */ jsx50("div", { className: "px-3 py-1 gap-x-3 border border-personal-label-border bg-personal-label text-personal-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs38("div", { className: "flex flex-row items-center gap-x-2", children: [
6136
- icon ? icon : /* @__PURE__ */ jsx50(
6210
+ return /* @__PURE__ */ jsx51("div", { className: "px-3 py-1 gap-x-3 border border-personal-label-border bg-personal-label text-personal-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs39("div", { className: "flex flex-row items-center gap-x-2", children: [
6211
+ icon ? icon : /* @__PURE__ */ jsx51(
6137
6212
  BaseImage_default,
6138
6213
  {
6139
6214
  src: "/icons/personal-label.png",
@@ -6141,16 +6216,16 @@ var PersonalLabel = ({ title, icon, font }) => {
6141
6216
  size: "xsmall"
6142
6217
  }
6143
6218
  ),
6144
- /* @__PURE__ */ jsx50("p", { className: font ? font : "text-sm", children: title })
6219
+ /* @__PURE__ */ jsx51("p", { className: font ? font : "text-sm", children: title })
6145
6220
  ] }) });
6146
6221
  };
6147
6222
  var PersonalLabel_default = PersonalLabel;
6148
6223
 
6149
6224
  // src/components/labels/PublishingHouseLabel.tsx
6150
- import { jsx as jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
6225
+ import { jsx as jsx52, jsxs as jsxs40 } from "react/jsx-runtime";
6151
6226
  var PublishingHouseLabel = ({ title, icon, font }) => {
6152
- return /* @__PURE__ */ jsx51("div", { className: "px-3 py-1 gap-x-3 border border-publishing-house-label-border bg-publishing-house-label text-publishing-house-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs39("div", { className: "flex flex-row items-center gap-x-2", children: [
6153
- icon ? icon : /* @__PURE__ */ jsx51(
6227
+ return /* @__PURE__ */ jsx52("div", { className: "px-3 py-1 gap-x-3 border border-publishing-house-label-border bg-publishing-house-label text-publishing-house-label-text rounded-catchup-3xlarge", children: /* @__PURE__ */ jsxs40("div", { className: "flex flex-row items-center gap-x-2", children: [
6228
+ icon ? icon : /* @__PURE__ */ jsx52(
6154
6229
  BaseImage_default,
6155
6230
  {
6156
6231
  src: "/icons/publishing-house-label.png",
@@ -6158,7 +6233,7 @@ var PublishingHouseLabel = ({ title, icon, font }) => {
6158
6233
  size: "xsmall"
6159
6234
  }
6160
6235
  ),
6161
- /* @__PURE__ */ jsx51("p", { className: font ? font : "text-sm", children: title })
6236
+ /* @__PURE__ */ jsx52("p", { className: font ? font : "text-sm", children: title })
6162
6237
  ] }) });
6163
6238
  };
6164
6239
  var PublishingHouseLabel_default = PublishingHouseLabel;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "catchup-library-web",
3
- "version": "1.1.9",
3
+ "version": "1.1.11",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -13,6 +13,7 @@ import TrueFalseActivityContent from "./TrueFalseActivityContent";
13
13
  import { IActivityPreviewByDataProps } from "../../properties/ActivityProperties";
14
14
  import ActivitySolutionContent from "./solution-content/ActivitySolutionContent";
15
15
  import i18n from "../../language/i18n";
16
+ import ActivityEvaluationRubricContent from "./evaluation-rubric-content/ActivityEvaluationRubricContent";
16
17
 
17
18
  const ActivityPreviewByData = ({
18
19
  data,
@@ -21,6 +22,7 @@ const ActivityPreviewByData = ({
21
22
  lockedType,
22
23
  typeOptionList,
23
24
  showSolution,
25
+ showEvaluationRubric,
24
26
  showTaxonomy,
25
27
  isFullScreen,
26
28
  }: IActivityPreviewByDataProps) => {
@@ -258,6 +260,14 @@ const ActivityPreviewByData = ({
258
260
  />
259
261
  </div>
260
262
  ) : null}
263
+ {selectedType && showEvaluationRubric ? (
264
+ <div>
265
+ <ActivityEvaluationRubricContent
266
+ activityTemplateType={selectedType}
267
+ data={data}
268
+ />
269
+ </div>
270
+ ) : null}
261
271
  </div>
262
272
  );
263
273
  };
@@ -48,10 +48,10 @@ const OpenEndedActivityContent = ({
48
48
  <div
49
49
  className={`${
50
50
  showMaterialContent
51
- ? "w-full"
52
- : isFullScreen
53
- ? "w-full"
54
- : "w-full md:w-[40%]"
51
+ ? isFullScreen
52
+ ? "w-full"
53
+ : "w-full md:w-[40%]"
54
+ : "w-full"
55
55
  }`}
56
56
  >
57
57
  <ActivityBodyContent
@@ -0,0 +1,88 @@
1
+ import { InlineMath } from "react-katex";
2
+ import i18n from "../../../language/i18n";
3
+ import { IActivityEvaluationRubricProps } from "../../../properties/ActivityProperties";
4
+ import { constructInputWithSpecialExpressionList } from "../../../utilization/CatchtivityUtilization";
5
+
6
+ const ActivityEvaluationRubricContent = ({
7
+ activityTemplateType,
8
+ data,
9
+ }: IActivityEvaluationRubricProps) => {
10
+ if (!activityTemplateType) return;
11
+
12
+ let evaluationRubricMapString = "";
13
+ if (activityTemplateType === "ORDERING") {
14
+ if (data["orderingEvaluationRubricMap"])
15
+ evaluationRubricMapString = data["orderingEvaluationRubricMap"];
16
+ } else if (activityTemplateType === "DROPDOWN") {
17
+ if (data["dropdownEvaluationRubricMap"])
18
+ evaluationRubricMapString = data["dropdownEvaluationRubricMap"];
19
+ } else if (activityTemplateType === "MCSA") {
20
+ if (data["MCSAEvaluationRubricMap"])
21
+ evaluationRubricMapString = data["MCSAEvaluationRubricMap"];
22
+ } else if (activityTemplateType === "MCMA") {
23
+ if (data["MCMAEvaluationRubricMap"])
24
+ evaluationRubricMapString = data["MCMAEvaluationRubricMap"];
25
+ } else if (activityTemplateType === "MATCHING") {
26
+ if (data["matchingEvaluationRubricMap"])
27
+ evaluationRubricMapString = data["matchingEvaluationRubricMap"];
28
+ } else if (activityTemplateType === "GROUPING") {
29
+ if (data["groupingEvaluationRubricMap"])
30
+ evaluationRubricMapString = data["groupingEvaluationRubricMap"];
31
+ } else if (activityTemplateType === "FILL_IN_THE_BLANKS") {
32
+ if (data["fillInTheBlanksEvaluationRubricMap"])
33
+ evaluationRubricMapString = data["fillInTheBlanksEvaluationRubricMap"];
34
+ } else if (activityTemplateType === "OPEN_ENDED") {
35
+ if (data["openEndedEvaluationRubricMap"])
36
+ evaluationRubricMapString = data["openEndedEvaluationRubricMap"];
37
+ } else if (activityTemplateType === "TRUE_FALSE") {
38
+ if (data["trueFalseEvaluationRubricMap"])
39
+ evaluationRubricMapString = data["trueFalseEvaluationRubricMap"];
40
+ }
41
+ const evaluationRubricMap = JSON.parse(evaluationRubricMapString);
42
+ if (!evaluationRubricMap) return;
43
+
44
+ if (Object.keys(evaluationRubricMap).length === 0) return;
45
+
46
+ return (
47
+ <div className="mx-2">
48
+ <div className="p-4 border-catchup-blue border-2 rounded-catchup-xlarge">
49
+ <p className="text-xl font-bold text-center mb-3">
50
+ {i18n.t("evaluation_rubric")}
51
+ </p>
52
+ {Object.keys(evaluationRubricMap).map((key, index) => {
53
+ const currentItem = JSON.parse(evaluationRubricMap[key]);
54
+ const { value } = currentItem;
55
+ return (
56
+ <p className="my-3">
57
+ <span
58
+ key={`${key}_${index}`}
59
+ className="text-xl whitespace-pre-wrap"
60
+ >
61
+ {constructInputWithSpecialExpressionList(value).map(
62
+ (inputPart, index) => (
63
+ <span
64
+ key={index}
65
+ className={`${inputPart.isBold ? "font-bold" : ""} ${
66
+ inputPart.isUnderline ? "underline" : ""
67
+ }`}
68
+ >
69
+ {inputPart.isEquation ? (
70
+ <span className="text-2xl">
71
+ <InlineMath math={inputPart.value} />
72
+ </span>
73
+ ) : (
74
+ inputPart.value
75
+ )}
76
+ </span>
77
+ )
78
+ )}
79
+ </span>
80
+ </p>
81
+ );
82
+ })}
83
+ </div>
84
+ </div>
85
+ );
86
+ };
87
+
88
+ export default ActivityEvaluationRubricContent;
@@ -207,6 +207,11 @@ export interface IShowMaterialMediaByContentTypeProps {
207
207
  canFullScreen: boolean;
208
208
  }
209
209
 
210
+ export interface IActivityEvaluationRubricProps {
211
+ activityTemplateType: string;
212
+ data: any;
213
+ }
214
+
210
215
  export interface IActivitySolutionProps {
211
216
  activityTemplateType: string;
212
217
  data: any;
@@ -220,5 +225,6 @@ export interface IActivityPreviewByDataProps {
220
225
  typeOptionList: any[];
221
226
  showTaxonomy: boolean;
222
227
  showSolution: boolean;
228
+ showEvaluationRubric: boolean;
223
229
  isFullScreen: boolean;
224
230
  }