touchstudy-core 0.1.182 → 0.1.184

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
@@ -1551,6 +1551,10 @@ var exam_message = {
1551
1551
  subject_required: "시험 과목은 필수입니다."
1552
1552
  };
1553
1553
  var fix_this_information_for_this_exam = "이 시험 정보를 수정하세요";
1554
+ var are_you_sure_you_want_to_merge_these_two_users_into_one = "이 두 사용자를 하나로 병합하시겠습니까?";
1555
+ var merge = "병합";
1556
+ var this_action_cannot_be_undone = "이 작업은 되돌릴 수 없습니다!";
1557
+ var merge_users = "사용자 병합";
1554
1558
  var lang_ko = {
1555
1559
  problem_solving: problem_solving,
1556
1560
  my_story: my_story,
@@ -2733,7 +2737,11 @@ var lang_ko = {
2733
2737
  there_is_no_schedule: there_is_no_schedule,
2734
2738
  new_schedule: new_schedule,
2735
2739
  exam_message: exam_message,
2736
- fix_this_information_for_this_exam: fix_this_information_for_this_exam
2740
+ fix_this_information_for_this_exam: fix_this_information_for_this_exam,
2741
+ are_you_sure_you_want_to_merge_these_two_users_into_one: are_you_sure_you_want_to_merge_these_two_users_into_one,
2742
+ merge: merge,
2743
+ this_action_cannot_be_undone: this_action_cannot_be_undone,
2744
+ merge_users: merge_users
2737
2745
  };
2738
2746
 
2739
2747
  var problem_solving$1 = "Problem Solving";
@@ -3943,6 +3951,10 @@ var exam_message$1 = {
3943
3951
  subject_required: "The exam subject is required."
3944
3952
  };
3945
3953
  var fix_this_information_for_this_exam$1 = "Fix this information for this exam";
3954
+ var are_you_sure_you_want_to_merge_these_two_users_into_one$1 = "Are you sure you want to merge these two users into one?";
3955
+ var merge$1 = "Merge";
3956
+ var this_action_cannot_be_undone$1 = "This action cannot be undone!";
3957
+ var merge_users$1 = "Merge users";
3946
3958
  var lang_en = {
3947
3959
  problem_solving: problem_solving$1,
3948
3960
  my_story: my_story$1,
@@ -5127,7 +5139,11 @@ var lang_en = {
5127
5139
  there_is_no_schedule: there_is_no_schedule$1,
5128
5140
  new_schedule: new_schedule$1,
5129
5141
  exam_message: exam_message$1,
5130
- fix_this_information_for_this_exam: fix_this_information_for_this_exam$1
5142
+ fix_this_information_for_this_exam: fix_this_information_for_this_exam$1,
5143
+ are_you_sure_you_want_to_merge_these_two_users_into_one: are_you_sure_you_want_to_merge_these_two_users_into_one$1,
5144
+ merge: merge$1,
5145
+ this_action_cannot_be_undone: this_action_cannot_be_undone$1,
5146
+ merge_users: merge_users$1
5131
5147
  };
5132
5148
 
5133
5149
  i18n__default.use(reactI18next.initReactI18next).init({
@@ -11666,10 +11682,10 @@ var isEqual$2 = function isEqual(prev, next) {
11666
11682
  };
11667
11683
  var QuestionBlock$1 = React.memo(QuestionBlock, isEqual$2);
11668
11684
 
11669
- var _excluded$7 = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
11685
+ var _excluded$7 = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu", "onQuestioStartOrderChange"];
11670
11686
  var _$3 = _$a;
11671
11687
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11672
- var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate;
11688
+ var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate, _questions$2;
11673
11689
  var data = _ref.data,
11674
11690
  path = _ref.path,
11675
11691
  isMath = _ref.isMath,
@@ -11686,8 +11702,10 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11686
11702
  onCloseCategoryMenu = _ref.onCloseCategoryMenu,
11687
11703
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
11688
11704
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
11705
+ onQuestioStartOrderChange = _ref.onQuestioStartOrderChange,
11689
11706
  formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$7);
11690
11707
  var errors = formikProps.errors;
11708
+ var startOrderRef = React.useRef(null);
11691
11709
  var articles = data.articles,
11692
11710
  questions = data.questions;
11693
11711
  var blockErrors = _$3.get(errors, path);
@@ -11695,6 +11713,22 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11695
11713
  var _data$articles$, _data$articles$$categ, _data$articles$2, _data$articles$2$cate;
11696
11714
  onOpenQuestionTypeMenu(key, (_data$articles$ = data.articles[0]) === null || _data$articles$ === void 0 ? void 0 : (_data$articles$$categ = _data$articles$.categories) === null || _data$articles$$categ === void 0 ? void 0 : _data$articles$$categ[0], (_data$articles$2 = data.articles[0]) === null || _data$articles$2 === void 0 ? void 0 : (_data$articles$2$cate = _data$articles$2.categories) === null || _data$articles$2$cate === void 0 ? void 0 : _data$articles$2$cate[1]);
11697
11715
  }, [(_data$articles$3 = data.articles[0]) === null || _data$articles$3 === void 0 ? void 0 : (_data$articles$3$cate = _data$articles$3.categories) === null || _data$articles$3$cate === void 0 ? void 0 : _data$articles$3$cate[0], (_data$articles$4 = data.articles[0]) === null || _data$articles$4 === void 0 ? void 0 : (_data$articles$4$cate = _data$articles$4.categories) === null || _data$articles$4$cate === void 0 ? void 0 : _data$articles$4$cate[1]]);
11716
+ var debounceQuestionStartOrderChange = _$3.debounce(onQuestioStartOrderChange, 300);
11717
+ var handleChangeStartQuestionOrder = function handleChangeStartQuestionOrder(e) {
11718
+ var value = e.target.value.replace(/\D/g, '');
11719
+ var order = +value;
11720
+ if (Number.isNaN(order) || order === 0) {
11721
+ order = 1;
11722
+ if (order === 0 && startOrderRef.current) {
11723
+ startOrderRef.current.value = "1";
11724
+ }
11725
+ }
11726
+ debounceQuestionStartOrderChange(order - 1);
11727
+ };
11728
+ React.useEffect(function () {
11729
+ var _questions$;
11730
+ if (startOrderRef.current) startOrderRef.current.value = "" + ((((_questions$ = questions[0]) === null || _questions$ === void 0 ? void 0 : _questions$.questionOrder) || 0) + 1);
11731
+ }, [(_questions$2 = questions[0]) === null || _questions$2 === void 0 ? void 0 : _questions$2.questionOrder]);
11698
11732
  return React__default.createElement(formik.FieldArray, {
11699
11733
  name: path + ".articles",
11700
11734
  render: function render(arrayHelpers) {
@@ -11747,7 +11781,26 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11747
11781
  }, i18n.t(isMath ? "article" : "korean_article")))), React__default.createElement(material.Stack, {
11748
11782
  gap: 1,
11749
11783
  direction: "column"
11750
- }, React__default.createElement(ListView, {
11784
+ }, React__default.createElement(material.Box, null, React__default.createElement(material.FormControl, {
11785
+ sx: {
11786
+ display: "flex",
11787
+ flexDirection: "row",
11788
+ alignItems: "center",
11789
+ gap: 1
11790
+ }
11791
+ }, React__default.createElement(material.FormLabel, {
11792
+ sx: {
11793
+ fontWeight: 600
11794
+ },
11795
+ htmlFor: "start_order"
11796
+ }, i18n.t("start_order")), React__default.createElement(material.TextField, {
11797
+ id: "start_order",
11798
+ inputRef: startOrderRef,
11799
+ onChange: handleChangeStartQuestionOrder,
11800
+ type: "number",
11801
+ size: "small",
11802
+ disabled: disabled
11803
+ }))), React__default.createElement(ListView, {
11751
11804
  data: questions,
11752
11805
  render: function render(question, index) {
11753
11806
  return React__default.createElement(QuestionBlock$1, Object.assign({
@@ -11793,7 +11846,7 @@ var isEqual$3 = function isEqual(prev, next) {
11793
11846
  };
11794
11847
  var QuestionGroupBlockBody$1 = React.memo(QuestionGroupBlockBody, isEqual$3);
11795
11848
 
11796
- var _excluded$8 = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
11849
+ var _excluded$8 = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "isTextbook", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
11797
11850
  var _$4 = _$a;
11798
11851
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11799
11852
  var _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2, _data$articles$4, _data$articles$4$cate, _data$articles$4$cate2;
@@ -11809,6 +11862,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11809
11862
  questionTypes = _ref.questionTypes,
11810
11863
  optionKey = _ref.optionKey,
11811
11864
  disabled = _ref.disabled,
11865
+ isTextbook = _ref.isTextbook,
11812
11866
  onToggle = _ref.onToggle,
11813
11867
  onQuestionCountChange = _ref.onQuestionCountChange,
11814
11868
  onDelete = _ref.onDelete,
@@ -11841,6 +11895,16 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11841
11895
  setFieldValue(path + ".questionCount", questionCount);
11842
11896
  onQuestionCountChange(questionCount, expandedIndex);
11843
11897
  };
11898
+ var handleChangeStartQuestionOrder = function handleChangeStartQuestionOrder(order) {
11899
+ var _questions$;
11900
+ var questions = data.questions;
11901
+ if (((_questions$ = questions[0]) === null || _questions$ === void 0 ? void 0 : _questions$.questionOrder) === order) return;
11902
+ setFieldValue(path + ".questions", questions.map(function (q, index) {
11903
+ return _extends({}, q, {
11904
+ questionOrder: order + index
11905
+ });
11906
+ }));
11907
+ };
11844
11908
  var handleChangeAnswerCount = function handleChangeAnswerCount(val) {
11845
11909
  var answerCount = (val === null || val === void 0 ? void 0 : val.value) || 1;
11846
11910
  setFieldValue(path + ".answerCount", answerCount);
@@ -11911,6 +11975,8 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11911
11975
  }).join(",") : ""].filter(function (i) {
11912
11976
  return !!i;
11913
11977
  }).join(" / ");
11978
+ var pageFromError = _$4.get(errors, path + ".pageFrom");
11979
+ var pageToError = _$4.get(errors, path + ".pageTo");
11914
11980
  var categoryError = _$4.get(errors, path + ".articles[0].categories");
11915
11981
  var blockErrors = _$4.get(errors, path);
11916
11982
  return React__default.createElement(material.Accordion, {
@@ -12090,7 +12156,65 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12090
12156
  isDisabled: disabled
12091
12157
  }));
12092
12158
  }
12093
- })))), isMath && React__default.createElement(material.Box, {
12159
+ }))), !isMath && isTextbook && React__default.createElement(material.Grid, {
12160
+ item: true,
12161
+ xs: 3
12162
+ }, React__default.createElement(material.FormGroup, {
12163
+ sx: {
12164
+ marginRight: 2
12165
+ }
12166
+ }, React__default.createElement(material.FormLabel, {
12167
+ htmlFor: "question_count",
12168
+ className: "form-label"
12169
+ }, t("page_from")), React__default.createElement(formik.Field, {
12170
+ name: path + ".pageFrom",
12171
+ render: function render(_ref6) {
12172
+ var field = _ref6.field;
12173
+ return React__default.createElement(material.TextField, Object.assign({
12174
+ placeholder: t("page_from"),
12175
+ type: "number"
12176
+ }, field, {
12177
+ size: "small",
12178
+ onKeyDown: handleKeyDown,
12179
+ disabled: disabled
12180
+ }));
12181
+ }
12182
+ }), !!pageFromError && React__default.createElement(material.Typography, {
12183
+ fontWeight: 500,
12184
+ fontSize: "10px",
12185
+ lineHeight: "11.93px",
12186
+ mt: 1,
12187
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
12188
+ }, pageFromError))), !isMath && isTextbook && React__default.createElement(material.Grid, {
12189
+ item: true,
12190
+ xs: 3
12191
+ }, React__default.createElement(material.FormGroup, {
12192
+ sx: {
12193
+ marginRight: 2
12194
+ }
12195
+ }, React__default.createElement(material.FormLabel, {
12196
+ htmlFor: "question_count",
12197
+ className: "form-label"
12198
+ }, t("page_to")), React__default.createElement(formik.Field, {
12199
+ name: path + ".pageTo",
12200
+ render: function render(_ref7) {
12201
+ var field = _ref7.field;
12202
+ return React__default.createElement(material.TextField, Object.assign({
12203
+ placeholder: t("page_to"),
12204
+ type: "number"
12205
+ }, field, {
12206
+ size: "small",
12207
+ onKeyDown: handleKeyDown,
12208
+ disabled: disabled
12209
+ }));
12210
+ }
12211
+ }), !!pageToError && React__default.createElement(material.Typography, {
12212
+ fontWeight: 500,
12213
+ fontSize: "10px",
12214
+ lineHeight: "11.93px",
12215
+ mt: 1,
12216
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
12217
+ }, pageToError)))), isMath && React__default.createElement(material.Box, {
12094
12218
  sx: {
12095
12219
  display: "flex"
12096
12220
  }
@@ -12102,6 +12226,83 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12102
12226
  sx: {
12103
12227
  whiteSpace: "nowrap"
12104
12228
  }
12229
+ }, t("category_copy")))), isMath && isTextbook && React__default.createElement(material.Stack, {
12230
+ direction: "row",
12231
+ flexWrap: "nowrap"
12232
+ }, React__default.createElement(material.Grid, {
12233
+ container: true,
12234
+ flexGrow: 1,
12235
+ direction: "row"
12236
+ }, React__default.createElement(material.Grid, {
12237
+ item: true,
12238
+ xs: 3
12239
+ }, React__default.createElement(material.FormGroup, {
12240
+ sx: {
12241
+ marginRight: 2
12242
+ }
12243
+ }, React__default.createElement(material.FormLabel, {
12244
+ htmlFor: "question_count",
12245
+ className: "form-label"
12246
+ }, t("page_from")), React__default.createElement(formik.Field, {
12247
+ name: path + ".pageFrom",
12248
+ render: function render(_ref8) {
12249
+ var field = _ref8.field;
12250
+ return React__default.createElement(material.TextField, Object.assign({
12251
+ placeholder: t("page_from"),
12252
+ type: "number"
12253
+ }, field, {
12254
+ size: "small",
12255
+ onKeyDown: handleKeyDown,
12256
+ disabled: disabled
12257
+ }));
12258
+ }
12259
+ }), !!pageFromError && React__default.createElement(material.Typography, {
12260
+ fontWeight: 500,
12261
+ fontSize: "10px",
12262
+ lineHeight: "11.93px",
12263
+ mt: 1,
12264
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
12265
+ }, pageFromError))), React__default.createElement(material.Grid, {
12266
+ item: true,
12267
+ xs: 3
12268
+ }, React__default.createElement(material.FormGroup, {
12269
+ sx: {
12270
+ marginRight: 2
12271
+ }
12272
+ }, React__default.createElement(material.FormLabel, {
12273
+ htmlFor: "question_count",
12274
+ className: "form-label"
12275
+ }, t("page_to")), React__default.createElement(formik.Field, {
12276
+ name: path + ".pageTo",
12277
+ render: function render(_ref9) {
12278
+ var field = _ref9.field;
12279
+ return React__default.createElement(material.TextField, Object.assign({
12280
+ placeholder: t("page_to"),
12281
+ type: "number"
12282
+ }, field, {
12283
+ size: "small",
12284
+ onKeyDown: handleKeyDown,
12285
+ disabled: disabled
12286
+ }));
12287
+ }
12288
+ }), !!pageToError && React__default.createElement(material.Typography, {
12289
+ fontWeight: 500,
12290
+ fontSize: "10px",
12291
+ lineHeight: "11.93px",
12292
+ mt: 1,
12293
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
12294
+ }, pageToError)))), React__default.createElement(material.Box, {
12295
+ sx: {
12296
+ display: "flex",
12297
+ visibility: "hidden"
12298
+ }
12299
+ }, React__default.createElement(material.Button, {
12300
+ variant: "contained",
12301
+ color: "success",
12302
+ disabled: true,
12303
+ sx: {
12304
+ whiteSpace: "nowrap"
12305
+ }
12105
12306
  }, t("category_copy"))))) : React__default.createElement(material.Typography, {
12106
12307
  fontWeight: 600,
12107
12308
  sx: {
@@ -12124,6 +12325,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12124
12325
  isLoadingQuestionTypes: isLoadingQuestionTypes,
12125
12326
  optionKey: optionKey,
12126
12327
  disabled: disabled,
12328
+ onQuestioStartOrderChange: handleChangeStartQuestionOrder,
12127
12329
  onDelete: onDelete,
12128
12330
  onOpenSubCategoryMenu: onOpenSubCategoryMenu,
12129
12331
  onOpenCategoryMenu: onOpenCategoryMenu,
@@ -16578,7 +16780,7 @@ var ActionsTooltip = function ActionsTooltip(_ref) {
16578
16780
  };
16579
16781
 
16580
16782
  var NoteItem = function NoteItem(_ref) {
16581
- var _user$roles;
16783
+ var _user$roles, _data$questionGroupIn;
16582
16784
  var data = _ref.data,
16583
16785
  openTooltip = _ref.openTooltip,
16584
16786
  actions = _ref.actions,
@@ -16633,7 +16835,7 @@ var NoteItem = function NoteItem(_ref) {
16633
16835
  direction: "row",
16634
16836
  alignItems: "center",
16635
16837
  gap: 1
16636
- }, React__default.createElement(material.Typography, Object.assign({}, NoteItemStyles.text.left), data.examSessionId ? t("article") + " " + data.articleNumber : "" + data.fullName), React__default.createElement(material.Typography, Object.assign({}, NoteItemStyles.text.middle), data.examSessionId ? "" + t("number_question", {
16838
+ }, React__default.createElement(material.Typography, Object.assign({}, NoteItemStyles.text.left), data.examSessionId ? t("article") + " " + (((_data$questionGroupIn = data.questionGroupIndex) != null ? _data$questionGroupIn : 0) + 1) : "" + data.fullName), React__default.createElement(material.Typography, Object.assign({}, NoteItemStyles.text.middle), data.examSessionId ? "" + t("number_question", {
16637
16839
  number: (data.questionOrder || 0) + 1
16638
16840
  }) : "" + utcToLocalTime(data.createdAt, t("date_format") + " HH:mm")), data.examSessionId && React__default.createElement(material.Typography, Object.assign({}, NoteItemStyles.text.right), data.categoryName)), React__default.createElement(material.Typography, Object.assign({
16639
16841
  className: "truncate"
@@ -19949,7 +20151,7 @@ var AnswerItem = function AnswerItem(_ref) {
19949
20151
  return React__default.createElement("div", {
19950
20152
  className: "" + printStyles["avoid-break-inside"],
19951
20153
  style: {
19952
- borderBottom: (data === null || data === void 0 ? void 0 : data.article) !== (nextData === null || nextData === void 0 ? void 0 : nextData.article) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
20154
+ borderBottom: (data === null || data === void 0 ? void 0 : data.questionGroupIndex) !== (nextData === null || nextData === void 0 ? void 0 : nextData.questionGroupIndex) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
19953
20155
  },
19954
20156
  key: data.id
19955
20157
  }, React__default.createElement("div", {
@@ -21138,9 +21340,9 @@ var TimeOrderChart = function TimeOrderChart(_ref) {
21138
21340
  });
21139
21341
  React.useEffect(function () {
21140
21342
  if (chartRef.current) {
21141
- setIsRendered(timelyOrderQuestion.article);
21343
+ setIsRendered(timelyOrderQuestion.questionGroupIndex);
21142
21344
  }
21143
- }, [timelyOrderQuestion.article]);
21345
+ }, [timelyOrderQuestion.questionGroupIndex]);
21144
21346
  return React__default.createElement("div", {
21145
21347
  className: "" + printStyles["avoid-break-inside"]
21146
21348
  }, React__default.createElement(material.Typography, {
@@ -21150,7 +21352,7 @@ var TimeOrderChart = function TimeOrderChart(_ref) {
21150
21352
  fontWeight: 700,
21151
21353
  color: "#414E62"
21152
21354
  }
21153
- }, t("article_number"), " ", timelyOrderQuestion.article), React__default.createElement("div", {
21355
+ }, t("article_number"), " ", timelyOrderQuestion.questionGroupIndex + 1), React__default.createElement("div", {
21154
21356
  className: styles$7["compareChart"] + " " + printStyles["avoid-break-inside"]
21155
21357
  }, React__default.createElement("div", {
21156
21358
  className: "" + styles$7["prevChart"]
@@ -21197,7 +21399,7 @@ var TextbookAnswerItem = function TextbookAnswerItem(_ref) {
21197
21399
  return React__default.createElement("div", {
21198
21400
  className: "" + printStyles["avoid-break-inside"],
21199
21401
  style: {
21200
- borderBottom: (data === null || data === void 0 ? void 0 : data.article) !== (nextData === null || nextData === void 0 ? void 0 : nextData.article) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
21402
+ borderBottom: (data === null || data === void 0 ? void 0 : data.questionGroupIndex) !== (nextData === null || nextData === void 0 ? void 0 : nextData.questionGroupIndex) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
21201
21403
  },
21202
21404
  key: data.id
21203
21405
  }, React__default.createElement("div", {
@@ -32361,7 +32563,8 @@ var ExamDetailForm = function ExamDetailForm(_ref) {
32361
32563
  onQuestionCountChange: handleChangeQuestionCount,
32362
32564
  onCopiedPrevQuestionGroup: handleCopiedPrevQuestionGroup,
32363
32565
  onDelete: handleOpenConfirmDelete,
32364
- isMath: isMath
32566
+ isMath: isMath,
32567
+ isTextbook: false
32365
32568
  }, formikProps));
32366
32569
  }
32367
32570
  }))), React__default.createElement(material.Grid, {
@@ -33473,255 +33676,6 @@ var ArticleDialog = function ArticleDialog(_ref) {
33473
33676
  }, t("add")))));
33474
33677
  };
33475
33678
 
33476
- var _ChapterBox = function ChapterBox(_ref) {
33477
- var parentChapterId = _ref.parentChapterId,
33478
- data = _ref.data,
33479
- subject = _ref.subject,
33480
- categoryOptions = _ref.categoryOptions,
33481
- isReadonly = _ref.isReadonly,
33482
- onClickAddSubchapter = _ref.onClickAddSubchapter,
33483
- onChangeName = _ref.onChangeName,
33484
- onChangePageFrom = _ref.onChangePageFrom,
33485
- onChangePageTo = _ref.onChangePageTo,
33486
- onAddArticle = _ref.onAddArticle,
33487
- onRemoveArticle = _ref.onRemoveArticle,
33488
- handleCheckArticle = _ref.handleCheckArticle,
33489
- onUpdateArticleQuestionCount = _ref.onUpdateArticleQuestionCount,
33490
- onUpdateArticleCategory = _ref.onUpdateArticleCategory,
33491
- onUpdateArticleQuestionAnswerCount = _ref.onUpdateArticleQuestionAnswerCount,
33492
- onUpdateArticleQuestion = _ref.onUpdateArticleQuestion,
33493
- onRemoveChapter = _ref.onRemoveChapter;
33494
- var _useTranslation = reactI18next.useTranslation(),
33495
- t = _useTranslation.t;
33496
- var _useState = React.useState(false),
33497
- isEditName = _useState[0],
33498
- setEditName = _useState[1];
33499
- var toggleEditName = function toggleEditName() {
33500
- if (isReadonly) {
33501
- setEditName(false);
33502
- return;
33503
- }
33504
- setEditName(!isEditName);
33505
- };
33506
- var handleKeyEnterName = function handleKeyEnterName(e) {
33507
- if (e.key === "Enter") {
33508
- handleSaveChapter(toggleEditName);
33509
- }
33510
- };
33511
- var handleSaveChapter = function handleSaveChapter(callback) {
33512
- callback();
33513
- };
33514
- var handleRemoveChapter = function handleRemoveChapter() {
33515
- onRemoveChapter === null || onRemoveChapter === void 0 ? void 0 : onRemoveChapter(data.name, data.id, parentChapterId);
33516
- };
33517
- var handleClickAddSubchapter = function handleClickAddSubchapter() {
33518
- onClickAddSubchapter === null || onClickAddSubchapter === void 0 ? void 0 : onClickAddSubchapter({
33519
- id: data.id,
33520
- name: data.name
33521
- });
33522
- };
33523
- var handleAddArticle = function handleAddArticle() {
33524
- onAddArticle === null || onAddArticle === void 0 ? void 0 : onAddArticle(data);
33525
- };
33526
- var theme = material.useTheme();
33527
- var isTabletUp = material.useMediaQuery(theme.breakpoints.up('lg'));
33528
- var handleChangeName = function handleChangeName(e) {
33529
- var text = e.target.value;
33530
- onChangeName === null || onChangeName === void 0 ? void 0 : onChangeName(text, data.id, parentChapterId);
33531
- };
33532
- var handleChangePageFrom = function handleChangePageFrom(e) {
33533
- var value = +e.target.value.replace(/[^0-9]/g, "");
33534
- e.target.value = value.toString();
33535
- onChangePageFrom === null || onChangePageFrom === void 0 ? void 0 : onChangePageFrom(value, data.id, parentChapterId);
33536
- };
33537
- var handleChangePageTo = function handleChangePageTo(e) {
33538
- var value = +e.target.value.replace(/[^0-9]/g, "");
33539
- e.target.value = value.toString();
33540
- onChangePageTo === null || onChangePageTo === void 0 ? void 0 : onChangePageTo(value, data.id, parentChapterId);
33541
- };
33542
- return React__default.createElement("div", {
33543
- className: "border-1 border-primary rounded-2"
33544
- }, React__default.createElement("div", {
33545
- className: "border-start-0 border-end-0 border-top-0 border-bottom-1 border-primary border p-2 position-relative"
33546
- }, !isEditName ? React__default.createElement("div", {
33547
- className: "text-center w-100 px-5 " + (isReadonly ? "" : "pointer"),
33548
- onClick: toggleEditName
33549
- }, React__default.createElement(material.Typography, {
33550
- className: "w-100 fs-5 fw-bold"
33551
- }, data.name)) : React__default.createElement(InputText, {
33552
- className: "w-100 px-5",
33553
- value: data.name,
33554
- inputProps: {
33555
- className: "text-center fs-5 fw-bold"
33556
- },
33557
- placeholder: t("chapter_name_placeholder"),
33558
- onBlur: toggleEditName,
33559
- onKeyDown: handleKeyEnterName,
33560
- onChange: handleChangeName
33561
- }), !isReadonly && React__default.createElement(material.IconButton, {
33562
- className: "position-absolute",
33563
- disabled: isReadonly,
33564
- style: {
33565
- right: 12,
33566
- top: "50%",
33567
- transform: "translateY(-50%)"
33568
- },
33569
- onClick: handleRemoveChapter
33570
- }, React__default.createElement(fa.FaTrash, {
33571
- size: 16,
33572
- className: "text-danger"
33573
- }))), React__default.createElement("div", {
33574
- className: "p-3 d-flex justify-content-between"
33575
- }, React__default.createElement(material.Grid, {
33576
- container: true
33577
- }, React__default.createElement(material.Grid, {
33578
- item: true,
33579
- xs: 12
33580
- }, React__default.createElement(material.Grid, {
33581
- container: true,
33582
- spacing: 2
33583
- }, !isTabletUp && React__default.createElement(material.Grid, {
33584
- item: true,
33585
- xs: 12
33586
- }, React__default.createElement(material.Stack, {
33587
- direction: "row",
33588
- justifyContent: "end",
33589
- spacing: 2
33590
- }, !parentChapterId && !data.articles.length && React__default.createElement(material.Button, {
33591
- className: "mx-1",
33592
- variant: "contained",
33593
- color: "primary",
33594
- disabled: isReadonly,
33595
- startIcon: React__default.createElement(fa.FaPlus, {
33596
- size: 12
33597
- }),
33598
- onClick: handleClickAddSubchapter
33599
- }, t("add_subchapter")), data.subChapters.length === 0 && React__default.createElement(material.Button, {
33600
- className: "mx-1",
33601
- variant: "contained",
33602
- color: "success",
33603
- disabled: isReadonly,
33604
- startIcon: React__default.createElement(fa.FaPlus, {
33605
- size: 12
33606
- }),
33607
- onClick: handleAddArticle
33608
- }, t("add_article")))), React__default.createElement(material.Grid, {
33609
- item: true,
33610
- xs: 12,
33611
- lg: 4,
33612
- sx: {
33613
- display: "flex",
33614
- alignItems: "center",
33615
- width: "50%"
33616
- }
33617
- }, React__default.createElement("label", {
33618
- style: {
33619
- minWidth: "90px"
33620
- },
33621
- className: "fw-bold text-nowrap me-2"
33622
- }, t("page.from"), ":"), React__default.createElement(InputText, {
33623
- type: "number",
33624
- className: "w-100",
33625
- disabled: isReadonly,
33626
- value: data.pageFrom,
33627
- onChange: handleChangePageFrom,
33628
- placeholder: t("page.from_placeholder"),
33629
- error: data.pageFrom > data.pageTo || data.pageFrom < 0
33630
- })), React__default.createElement(material.Grid, {
33631
- item: true,
33632
- xs: 12,
33633
- lg: 4,
33634
- sx: {
33635
- display: "flex",
33636
- alignItems: "center",
33637
- width: "50%"
33638
- }
33639
- }, React__default.createElement("label", {
33640
- style: {
33641
- minWidth: "90px"
33642
- },
33643
- className: "fw-bold text-nowrap me-2"
33644
- }, t("page.to"), ":"), React__default.createElement(InputText, {
33645
- type: "number",
33646
- disabled: isReadonly,
33647
- className: "w-100",
33648
- value: data.pageTo,
33649
- onChange: handleChangePageTo,
33650
- placeholder: t("page.to_placeholder"),
33651
- error: data.pageTo < data.pageFrom
33652
- })), isTabletUp && React__default.createElement(material.Grid, {
33653
- item: true,
33654
- lg: 4
33655
- }, React__default.createElement(material.Stack, {
33656
- direction: "row",
33657
- justifyContent: "end",
33658
- spacing: 2
33659
- }, !parentChapterId && !data.articles.length && React__default.createElement(material.Button, {
33660
- className: "mx-1",
33661
- variant: "contained",
33662
- color: "primary",
33663
- disabled: isReadonly,
33664
- startIcon: React__default.createElement(fa.FaPlus, {
33665
- size: 12
33666
- }),
33667
- onClick: handleClickAddSubchapter
33668
- }, t("add_subchapter")), data.subChapters.length === 0 && React__default.createElement(material.Button, {
33669
- className: "mx-1",
33670
- variant: "contained",
33671
- color: "success",
33672
- disabled: isReadonly,
33673
- startIcon: React__default.createElement(fa.FaPlus, {
33674
- size: 12
33675
- }),
33676
- onClick: handleAddArticle
33677
- }, t("add_article")))))))), React__default.createElement("div", {
33678
- className: "p-3"
33679
- }, React__default.createElement(material.Stack, {
33680
- spacing: 2
33681
- }, data.subChapters.map(function (subchapter) {
33682
- return React__default.createElement(_ChapterBox, {
33683
- key: data.id + "-" + subchapter.id,
33684
- categoryOptions: categoryOptions,
33685
- subject: subject,
33686
- parentChapterId: data.id,
33687
- data: subchapter,
33688
- isReadonly: isReadonly,
33689
- onChangeName: onChangeName,
33690
- onChangePageFrom: onChangePageFrom,
33691
- onChangePageTo: onChangePageTo,
33692
- handleCheckArticle: handleCheckArticle,
33693
- onAddArticle: onAddArticle,
33694
- onRemoveArticle: onRemoveArticle,
33695
- onUpdateArticleQuestionCount: onUpdateArticleQuestionCount,
33696
- onUpdateArticleCategory: onUpdateArticleCategory,
33697
- onUpdateArticleQuestionAnswerCount: onUpdateArticleQuestionAnswerCount,
33698
- onUpdateArticleQuestion: onUpdateArticleQuestion,
33699
- onRemoveChapter: onRemoveChapter
33700
- });
33701
- }), data.subChapters.length === 0 && data.articles.map(function (article, index) {
33702
- return React__default.createElement(material.Stack, {
33703
- key: index
33704
- }, React__default.createElement(material.Stack, {
33705
- display: "flex",
33706
- flexDirection: "row",
33707
- gap: "8px",
33708
- alignItems: "center"
33709
- }, React__default.createElement(material.Checkbox, {
33710
- id: "textbook",
33711
- sx: {
33712
- display: "flex",
33713
- justifyContent: "start",
33714
- width: "fit-content"
33715
- },
33716
- onChange: function onChange(e) {
33717
- return handleCheckArticle(e, article);
33718
- }
33719
- }), React__default.createElement("label", {
33720
- htmlFor: "textbook"
33721
- }, t("select_article_create_exam"))));
33722
- }))));
33723
- };
33724
-
33725
33679
  var TextbookActionButtons = function TextbookActionButtons(_ref) {
33726
33680
  var isReadonly = _ref.isReadonly,
33727
33681
  textbook = _ref.textbook,
@@ -35006,7 +34960,8 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
35006
34960
  onQuestionCountChange: handleChangeQuestionCount,
35007
34961
  onCopiedPrevQuestionGroup: onCopiedPrevQuestionGroup,
35008
34962
  onDelete: onDelete,
35009
- isMath: isMath
34963
+ isMath: isMath,
34964
+ isTextbook: true
35010
34965
  }, formikProps));
35011
34966
  }
35012
34967
  })), showAddQuestionGroup && React__default.createElement(material.Box, null, React__default.createElement(material.Button, {
@@ -38467,7 +38422,6 @@ exports.ArticleDialog = ArticleDialog;
38467
38422
  exports.AttendanceFormDialog = AttendanceFormDialog;
38468
38423
  exports.BASE_URL = BASE_URL;
38469
38424
  exports.BRIEF_GRADE_OPTIONS = BRIEF_GRADE_OPTIONS;
38470
- exports.ChapterBox = _ChapterBox;
38471
38425
  exports.ChatContainer = ChatContainer;
38472
38426
  exports.ChatTypes = types;
38473
38427
  exports.ClassDetail = ClassDetail;