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.
@@ -1555,6 +1555,10 @@ var exam_message = {
1555
1555
  subject_required: "시험 과목은 필수입니다."
1556
1556
  };
1557
1557
  var fix_this_information_for_this_exam = "이 시험 정보를 수정하세요";
1558
+ var are_you_sure_you_want_to_merge_these_two_users_into_one = "이 두 사용자를 하나로 병합하시겠습니까?";
1559
+ var merge = "병합";
1560
+ var this_action_cannot_be_undone = "이 작업은 되돌릴 수 없습니다!";
1561
+ var merge_users = "사용자 병합";
1558
1562
  var lang_ko = {
1559
1563
  problem_solving: problem_solving,
1560
1564
  my_story: my_story,
@@ -2737,7 +2741,11 @@ var lang_ko = {
2737
2741
  there_is_no_schedule: there_is_no_schedule,
2738
2742
  new_schedule: new_schedule,
2739
2743
  exam_message: exam_message,
2740
- fix_this_information_for_this_exam: fix_this_information_for_this_exam
2744
+ fix_this_information_for_this_exam: fix_this_information_for_this_exam,
2745
+ are_you_sure_you_want_to_merge_these_two_users_into_one: are_you_sure_you_want_to_merge_these_two_users_into_one,
2746
+ merge: merge,
2747
+ this_action_cannot_be_undone: this_action_cannot_be_undone,
2748
+ merge_users: merge_users
2741
2749
  };
2742
2750
 
2743
2751
  var problem_solving$1 = "Problem Solving";
@@ -3947,6 +3955,10 @@ var exam_message$1 = {
3947
3955
  subject_required: "The exam subject is required."
3948
3956
  };
3949
3957
  var fix_this_information_for_this_exam$1 = "Fix this information for this exam";
3958
+ 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?";
3959
+ var merge$1 = "Merge";
3960
+ var this_action_cannot_be_undone$1 = "This action cannot be undone!";
3961
+ var merge_users$1 = "Merge users";
3950
3962
  var lang_en = {
3951
3963
  problem_solving: problem_solving$1,
3952
3964
  my_story: my_story$1,
@@ -5131,7 +5143,11 @@ var lang_en = {
5131
5143
  there_is_no_schedule: there_is_no_schedule$1,
5132
5144
  new_schedule: new_schedule$1,
5133
5145
  exam_message: exam_message$1,
5134
- fix_this_information_for_this_exam: fix_this_information_for_this_exam$1
5146
+ fix_this_information_for_this_exam: fix_this_information_for_this_exam$1,
5147
+ 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,
5148
+ merge: merge$1,
5149
+ this_action_cannot_be_undone: this_action_cannot_be_undone$1,
5150
+ merge_users: merge_users$1
5135
5151
  };
5136
5152
 
5137
5153
  i18n.use(initReactI18next).init({
@@ -11685,10 +11701,10 @@ var isEqual$2 = function isEqual(prev, next) {
11685
11701
  };
11686
11702
  var QuestionBlock$1 = memo(QuestionBlock, isEqual$2);
11687
11703
 
11688
- var _excluded$7 = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
11704
+ var _excluded$7 = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu", "onQuestioStartOrderChange"];
11689
11705
  var _$3 = _$a;
11690
11706
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11691
- var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate;
11707
+ var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate, _questions$2;
11692
11708
  var data = _ref.data,
11693
11709
  path = _ref.path,
11694
11710
  isMath = _ref.isMath,
@@ -11705,8 +11721,10 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11705
11721
  onCloseCategoryMenu = _ref.onCloseCategoryMenu,
11706
11722
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
11707
11723
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
11724
+ onQuestioStartOrderChange = _ref.onQuestioStartOrderChange,
11708
11725
  formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$7);
11709
11726
  var errors = formikProps.errors;
11727
+ var startOrderRef = useRef(null);
11710
11728
  var articles = data.articles,
11711
11729
  questions = data.questions;
11712
11730
  var blockErrors = _$3.get(errors, path);
@@ -11714,6 +11732,22 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11714
11732
  var _data$articles$, _data$articles$$categ, _data$articles$2, _data$articles$2$cate;
11715
11733
  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]);
11716
11734
  }, [(_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]]);
11735
+ var debounceQuestionStartOrderChange = _$3.debounce(onQuestioStartOrderChange, 300);
11736
+ var handleChangeStartQuestionOrder = function handleChangeStartQuestionOrder(e) {
11737
+ var value = e.target.value.replace(/\D/g, '');
11738
+ var order = +value;
11739
+ if (Number.isNaN(order) || order === 0) {
11740
+ order = 1;
11741
+ if (order === 0 && startOrderRef.current) {
11742
+ startOrderRef.current.value = "1";
11743
+ }
11744
+ }
11745
+ debounceQuestionStartOrderChange(order - 1);
11746
+ };
11747
+ useEffect(function () {
11748
+ var _questions$;
11749
+ if (startOrderRef.current) startOrderRef.current.value = "" + ((((_questions$ = questions[0]) === null || _questions$ === void 0 ? void 0 : _questions$.questionOrder) || 0) + 1);
11750
+ }, [(_questions$2 = questions[0]) === null || _questions$2 === void 0 ? void 0 : _questions$2.questionOrder]);
11717
11751
  return React__default.createElement(FieldArray, {
11718
11752
  name: path + ".articles",
11719
11753
  render: function render(arrayHelpers) {
@@ -11766,7 +11800,26 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11766
11800
  }, t$1(isMath ? "article" : "korean_article")))), React__default.createElement(Stack, {
11767
11801
  gap: 1,
11768
11802
  direction: "column"
11769
- }, React__default.createElement(ListView, {
11803
+ }, React__default.createElement(Box, null, React__default.createElement(FormControl, {
11804
+ sx: {
11805
+ display: "flex",
11806
+ flexDirection: "row",
11807
+ alignItems: "center",
11808
+ gap: 1
11809
+ }
11810
+ }, React__default.createElement(FormLabel, {
11811
+ sx: {
11812
+ fontWeight: 600
11813
+ },
11814
+ htmlFor: "start_order"
11815
+ }, t$1("start_order")), React__default.createElement(TextField, {
11816
+ id: "start_order",
11817
+ inputRef: startOrderRef,
11818
+ onChange: handleChangeStartQuestionOrder,
11819
+ type: "number",
11820
+ size: "small",
11821
+ disabled: disabled
11822
+ }))), React__default.createElement(ListView, {
11770
11823
  data: questions,
11771
11824
  render: function render(question, index) {
11772
11825
  return React__default.createElement(QuestionBlock$1, Object.assign({
@@ -11812,7 +11865,7 @@ var isEqual$3 = function isEqual(prev, next) {
11812
11865
  };
11813
11866
  var QuestionGroupBlockBody$1 = memo(QuestionGroupBlockBody, isEqual$3);
11814
11867
 
11815
- var _excluded$8 = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
11868
+ 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"];
11816
11869
  var _$4 = _$a;
11817
11870
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11818
11871
  var _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2, _data$articles$4, _data$articles$4$cate, _data$articles$4$cate2;
@@ -11828,6 +11881,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11828
11881
  questionTypes = _ref.questionTypes,
11829
11882
  optionKey = _ref.optionKey,
11830
11883
  disabled = _ref.disabled,
11884
+ isTextbook = _ref.isTextbook,
11831
11885
  onToggle = _ref.onToggle,
11832
11886
  onQuestionCountChange = _ref.onQuestionCountChange,
11833
11887
  onDelete = _ref.onDelete,
@@ -11860,6 +11914,16 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11860
11914
  setFieldValue(path + ".questionCount", questionCount);
11861
11915
  onQuestionCountChange(questionCount, expandedIndex);
11862
11916
  };
11917
+ var handleChangeStartQuestionOrder = function handleChangeStartQuestionOrder(order) {
11918
+ var _questions$;
11919
+ var questions = data.questions;
11920
+ if (((_questions$ = questions[0]) === null || _questions$ === void 0 ? void 0 : _questions$.questionOrder) === order) return;
11921
+ setFieldValue(path + ".questions", questions.map(function (q, index) {
11922
+ return _extends({}, q, {
11923
+ questionOrder: order + index
11924
+ });
11925
+ }));
11926
+ };
11863
11927
  var handleChangeAnswerCount = function handleChangeAnswerCount(val) {
11864
11928
  var answerCount = (val === null || val === void 0 ? void 0 : val.value) || 1;
11865
11929
  setFieldValue(path + ".answerCount", answerCount);
@@ -11930,6 +11994,8 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11930
11994
  }).join(",") : ""].filter(function (i) {
11931
11995
  return !!i;
11932
11996
  }).join(" / ");
11997
+ var pageFromError = _$4.get(errors, path + ".pageFrom");
11998
+ var pageToError = _$4.get(errors, path + ".pageTo");
11933
11999
  var categoryError = _$4.get(errors, path + ".articles[0].categories");
11934
12000
  var blockErrors = _$4.get(errors, path);
11935
12001
  return React__default.createElement(Accordion, {
@@ -12109,7 +12175,65 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12109
12175
  isDisabled: disabled
12110
12176
  }));
12111
12177
  }
12112
- })))), isMath && React__default.createElement(Box, {
12178
+ }))), !isMath && isTextbook && React__default.createElement(Grid, {
12179
+ item: true,
12180
+ xs: 3
12181
+ }, React__default.createElement(FormGroup, {
12182
+ sx: {
12183
+ marginRight: 2
12184
+ }
12185
+ }, React__default.createElement(FormLabel, {
12186
+ htmlFor: "question_count",
12187
+ className: "form-label"
12188
+ }, t("page_from")), React__default.createElement(Field, {
12189
+ name: path + ".pageFrom",
12190
+ render: function render(_ref6) {
12191
+ var field = _ref6.field;
12192
+ return React__default.createElement(TextField, Object.assign({
12193
+ placeholder: t("page_from"),
12194
+ type: "number"
12195
+ }, field, {
12196
+ size: "small",
12197
+ onKeyDown: handleKeyDown,
12198
+ disabled: disabled
12199
+ }));
12200
+ }
12201
+ }), !!pageFromError && React__default.createElement(Typography, {
12202
+ fontWeight: 500,
12203
+ fontSize: "10px",
12204
+ lineHeight: "11.93px",
12205
+ mt: 1,
12206
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
12207
+ }, pageFromError))), !isMath && isTextbook && React__default.createElement(Grid, {
12208
+ item: true,
12209
+ xs: 3
12210
+ }, React__default.createElement(FormGroup, {
12211
+ sx: {
12212
+ marginRight: 2
12213
+ }
12214
+ }, React__default.createElement(FormLabel, {
12215
+ htmlFor: "question_count",
12216
+ className: "form-label"
12217
+ }, t("page_to")), React__default.createElement(Field, {
12218
+ name: path + ".pageTo",
12219
+ render: function render(_ref7) {
12220
+ var field = _ref7.field;
12221
+ return React__default.createElement(TextField, Object.assign({
12222
+ placeholder: t("page_to"),
12223
+ type: "number"
12224
+ }, field, {
12225
+ size: "small",
12226
+ onKeyDown: handleKeyDown,
12227
+ disabled: disabled
12228
+ }));
12229
+ }
12230
+ }), !!pageToError && React__default.createElement(Typography, {
12231
+ fontWeight: 500,
12232
+ fontSize: "10px",
12233
+ lineHeight: "11.93px",
12234
+ mt: 1,
12235
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
12236
+ }, pageToError)))), isMath && React__default.createElement(Box, {
12113
12237
  sx: {
12114
12238
  display: "flex"
12115
12239
  }
@@ -12121,6 +12245,83 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12121
12245
  sx: {
12122
12246
  whiteSpace: "nowrap"
12123
12247
  }
12248
+ }, t("category_copy")))), isMath && isTextbook && React__default.createElement(Stack, {
12249
+ direction: "row",
12250
+ flexWrap: "nowrap"
12251
+ }, React__default.createElement(Grid, {
12252
+ container: true,
12253
+ flexGrow: 1,
12254
+ direction: "row"
12255
+ }, React__default.createElement(Grid, {
12256
+ item: true,
12257
+ xs: 3
12258
+ }, React__default.createElement(FormGroup, {
12259
+ sx: {
12260
+ marginRight: 2
12261
+ }
12262
+ }, React__default.createElement(FormLabel, {
12263
+ htmlFor: "question_count",
12264
+ className: "form-label"
12265
+ }, t("page_from")), React__default.createElement(Field, {
12266
+ name: path + ".pageFrom",
12267
+ render: function render(_ref8) {
12268
+ var field = _ref8.field;
12269
+ return React__default.createElement(TextField, Object.assign({
12270
+ placeholder: t("page_from"),
12271
+ type: "number"
12272
+ }, field, {
12273
+ size: "small",
12274
+ onKeyDown: handleKeyDown,
12275
+ disabled: disabled
12276
+ }));
12277
+ }
12278
+ }), !!pageFromError && React__default.createElement(Typography, {
12279
+ fontWeight: 500,
12280
+ fontSize: "10px",
12281
+ lineHeight: "11.93px",
12282
+ mt: 1,
12283
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
12284
+ }, pageFromError))), React__default.createElement(Grid, {
12285
+ item: true,
12286
+ xs: 3
12287
+ }, React__default.createElement(FormGroup, {
12288
+ sx: {
12289
+ marginRight: 2
12290
+ }
12291
+ }, React__default.createElement(FormLabel, {
12292
+ htmlFor: "question_count",
12293
+ className: "form-label"
12294
+ }, t("page_to")), React__default.createElement(Field, {
12295
+ name: path + ".pageTo",
12296
+ render: function render(_ref9) {
12297
+ var field = _ref9.field;
12298
+ return React__default.createElement(TextField, Object.assign({
12299
+ placeholder: t("page_to"),
12300
+ type: "number"
12301
+ }, field, {
12302
+ size: "small",
12303
+ onKeyDown: handleKeyDown,
12304
+ disabled: disabled
12305
+ }));
12306
+ }
12307
+ }), !!pageToError && React__default.createElement(Typography, {
12308
+ fontWeight: 500,
12309
+ fontSize: "10px",
12310
+ lineHeight: "11.93px",
12311
+ mt: 1,
12312
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
12313
+ }, pageToError)))), React__default.createElement(Box, {
12314
+ sx: {
12315
+ display: "flex",
12316
+ visibility: "hidden"
12317
+ }
12318
+ }, React__default.createElement(Button, {
12319
+ variant: "contained",
12320
+ color: "success",
12321
+ disabled: true,
12322
+ sx: {
12323
+ whiteSpace: "nowrap"
12324
+ }
12124
12325
  }, t("category_copy"))))) : React__default.createElement(Typography, {
12125
12326
  fontWeight: 600,
12126
12327
  sx: {
@@ -12143,6 +12344,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12143
12344
  isLoadingQuestionTypes: isLoadingQuestionTypes,
12144
12345
  optionKey: optionKey,
12145
12346
  disabled: disabled,
12347
+ onQuestioStartOrderChange: handleChangeStartQuestionOrder,
12146
12348
  onDelete: onDelete,
12147
12349
  onOpenSubCategoryMenu: onOpenSubCategoryMenu,
12148
12350
  onOpenCategoryMenu: onOpenCategoryMenu,
@@ -16597,7 +16799,7 @@ var ActionsTooltip = function ActionsTooltip(_ref) {
16597
16799
  };
16598
16800
 
16599
16801
  var NoteItem = function NoteItem(_ref) {
16600
- var _user$roles;
16802
+ var _user$roles, _data$questionGroupIn;
16601
16803
  var data = _ref.data,
16602
16804
  openTooltip = _ref.openTooltip,
16603
16805
  actions = _ref.actions,
@@ -16652,7 +16854,7 @@ var NoteItem = function NoteItem(_ref) {
16652
16854
  direction: "row",
16653
16855
  alignItems: "center",
16654
16856
  gap: 1
16655
- }, React__default.createElement(Typography, Object.assign({}, NoteItemStyles.text.left), data.examSessionId ? t("article") + " " + data.articleNumber : "" + data.fullName), React__default.createElement(Typography, Object.assign({}, NoteItemStyles.text.middle), data.examSessionId ? "" + t("number_question", {
16857
+ }, React__default.createElement(Typography, Object.assign({}, NoteItemStyles.text.left), data.examSessionId ? t("article") + " " + (((_data$questionGroupIn = data.questionGroupIndex) != null ? _data$questionGroupIn : 0) + 1) : "" + data.fullName), React__default.createElement(Typography, Object.assign({}, NoteItemStyles.text.middle), data.examSessionId ? "" + t("number_question", {
16656
16858
  number: (data.questionOrder || 0) + 1
16657
16859
  }) : "" + utcToLocalTime(data.createdAt, t("date_format") + " HH:mm")), data.examSessionId && React__default.createElement(Typography, Object.assign({}, NoteItemStyles.text.right), data.categoryName)), React__default.createElement(Typography, Object.assign({
16658
16860
  className: "truncate"
@@ -19968,7 +20170,7 @@ var AnswerItem = function AnswerItem(_ref) {
19968
20170
  return React__default.createElement("div", {
19969
20171
  className: "" + printStyles["avoid-break-inside"],
19970
20172
  style: {
19971
- borderBottom: (data === null || data === void 0 ? void 0 : data.article) !== (nextData === null || nextData === void 0 ? void 0 : nextData.article) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
20173
+ borderBottom: (data === null || data === void 0 ? void 0 : data.questionGroupIndex) !== (nextData === null || nextData === void 0 ? void 0 : nextData.questionGroupIndex) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
19972
20174
  },
19973
20175
  key: data.id
19974
20176
  }, React__default.createElement("div", {
@@ -21157,9 +21359,9 @@ var TimeOrderChart = function TimeOrderChart(_ref) {
21157
21359
  });
21158
21360
  useEffect(function () {
21159
21361
  if (chartRef.current) {
21160
- setIsRendered(timelyOrderQuestion.article);
21362
+ setIsRendered(timelyOrderQuestion.questionGroupIndex);
21161
21363
  }
21162
- }, [timelyOrderQuestion.article]);
21364
+ }, [timelyOrderQuestion.questionGroupIndex]);
21163
21365
  return React__default.createElement("div", {
21164
21366
  className: "" + printStyles["avoid-break-inside"]
21165
21367
  }, React__default.createElement(Typography, {
@@ -21169,7 +21371,7 @@ var TimeOrderChart = function TimeOrderChart(_ref) {
21169
21371
  fontWeight: 700,
21170
21372
  color: "#414E62"
21171
21373
  }
21172
- }, t("article_number"), " ", timelyOrderQuestion.article), React__default.createElement("div", {
21374
+ }, t("article_number"), " ", timelyOrderQuestion.questionGroupIndex + 1), React__default.createElement("div", {
21173
21375
  className: styles$7["compareChart"] + " " + printStyles["avoid-break-inside"]
21174
21376
  }, React__default.createElement("div", {
21175
21377
  className: "" + styles$7["prevChart"]
@@ -21216,7 +21418,7 @@ var TextbookAnswerItem = function TextbookAnswerItem(_ref) {
21216
21418
  return React__default.createElement("div", {
21217
21419
  className: "" + printStyles["avoid-break-inside"],
21218
21420
  style: {
21219
- borderBottom: (data === null || data === void 0 ? void 0 : data.article) !== (nextData === null || nextData === void 0 ? void 0 : nextData.article) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
21421
+ borderBottom: (data === null || data === void 0 ? void 0 : data.questionGroupIndex) !== (nextData === null || nextData === void 0 ? void 0 : nextData.questionGroupIndex) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
21220
21422
  },
21221
21423
  key: data.id
21222
21424
  }, React__default.createElement("div", {
@@ -32380,7 +32582,8 @@ var ExamDetailForm = function ExamDetailForm(_ref) {
32380
32582
  onQuestionCountChange: handleChangeQuestionCount,
32381
32583
  onCopiedPrevQuestionGroup: handleCopiedPrevQuestionGroup,
32382
32584
  onDelete: handleOpenConfirmDelete,
32383
- isMath: isMath
32585
+ isMath: isMath,
32586
+ isTextbook: false
32384
32587
  }, formikProps));
32385
32588
  }
32386
32589
  }))), React__default.createElement(Grid, {
@@ -33492,255 +33695,6 @@ var ArticleDialog = function ArticleDialog(_ref) {
33492
33695
  }, t("add")))));
33493
33696
  };
33494
33697
 
33495
- var _ChapterBox = function ChapterBox(_ref) {
33496
- var parentChapterId = _ref.parentChapterId,
33497
- data = _ref.data,
33498
- subject = _ref.subject,
33499
- categoryOptions = _ref.categoryOptions,
33500
- isReadonly = _ref.isReadonly,
33501
- onClickAddSubchapter = _ref.onClickAddSubchapter,
33502
- onChangeName = _ref.onChangeName,
33503
- onChangePageFrom = _ref.onChangePageFrom,
33504
- onChangePageTo = _ref.onChangePageTo,
33505
- onAddArticle = _ref.onAddArticle,
33506
- onRemoveArticle = _ref.onRemoveArticle,
33507
- handleCheckArticle = _ref.handleCheckArticle,
33508
- onUpdateArticleQuestionCount = _ref.onUpdateArticleQuestionCount,
33509
- onUpdateArticleCategory = _ref.onUpdateArticleCategory,
33510
- onUpdateArticleQuestionAnswerCount = _ref.onUpdateArticleQuestionAnswerCount,
33511
- onUpdateArticleQuestion = _ref.onUpdateArticleQuestion,
33512
- onRemoveChapter = _ref.onRemoveChapter;
33513
- var _useTranslation = useTranslation(),
33514
- t = _useTranslation.t;
33515
- var _useState = useState(false),
33516
- isEditName = _useState[0],
33517
- setEditName = _useState[1];
33518
- var toggleEditName = function toggleEditName() {
33519
- if (isReadonly) {
33520
- setEditName(false);
33521
- return;
33522
- }
33523
- setEditName(!isEditName);
33524
- };
33525
- var handleKeyEnterName = function handleKeyEnterName(e) {
33526
- if (e.key === "Enter") {
33527
- handleSaveChapter(toggleEditName);
33528
- }
33529
- };
33530
- var handleSaveChapter = function handleSaveChapter(callback) {
33531
- callback();
33532
- };
33533
- var handleRemoveChapter = function handleRemoveChapter() {
33534
- onRemoveChapter === null || onRemoveChapter === void 0 ? void 0 : onRemoveChapter(data.name, data.id, parentChapterId);
33535
- };
33536
- var handleClickAddSubchapter = function handleClickAddSubchapter() {
33537
- onClickAddSubchapter === null || onClickAddSubchapter === void 0 ? void 0 : onClickAddSubchapter({
33538
- id: data.id,
33539
- name: data.name
33540
- });
33541
- };
33542
- var handleAddArticle = function handleAddArticle() {
33543
- onAddArticle === null || onAddArticle === void 0 ? void 0 : onAddArticle(data);
33544
- };
33545
- var theme = useTheme();
33546
- var isTabletUp = useMediaQuery(theme.breakpoints.up('lg'));
33547
- var handleChangeName = function handleChangeName(e) {
33548
- var text = e.target.value;
33549
- onChangeName === null || onChangeName === void 0 ? void 0 : onChangeName(text, data.id, parentChapterId);
33550
- };
33551
- var handleChangePageFrom = function handleChangePageFrom(e) {
33552
- var value = +e.target.value.replace(/[^0-9]/g, "");
33553
- e.target.value = value.toString();
33554
- onChangePageFrom === null || onChangePageFrom === void 0 ? void 0 : onChangePageFrom(value, data.id, parentChapterId);
33555
- };
33556
- var handleChangePageTo = function handleChangePageTo(e) {
33557
- var value = +e.target.value.replace(/[^0-9]/g, "");
33558
- e.target.value = value.toString();
33559
- onChangePageTo === null || onChangePageTo === void 0 ? void 0 : onChangePageTo(value, data.id, parentChapterId);
33560
- };
33561
- return React__default.createElement("div", {
33562
- className: "border-1 border-primary rounded-2"
33563
- }, React__default.createElement("div", {
33564
- className: "border-start-0 border-end-0 border-top-0 border-bottom-1 border-primary border p-2 position-relative"
33565
- }, !isEditName ? React__default.createElement("div", {
33566
- className: "text-center w-100 px-5 " + (isReadonly ? "" : "pointer"),
33567
- onClick: toggleEditName
33568
- }, React__default.createElement(Typography, {
33569
- className: "w-100 fs-5 fw-bold"
33570
- }, data.name)) : React__default.createElement(InputText, {
33571
- className: "w-100 px-5",
33572
- value: data.name,
33573
- inputProps: {
33574
- className: "text-center fs-5 fw-bold"
33575
- },
33576
- placeholder: t("chapter_name_placeholder"),
33577
- onBlur: toggleEditName,
33578
- onKeyDown: handleKeyEnterName,
33579
- onChange: handleChangeName
33580
- }), !isReadonly && React__default.createElement(IconButton, {
33581
- className: "position-absolute",
33582
- disabled: isReadonly,
33583
- style: {
33584
- right: 12,
33585
- top: "50%",
33586
- transform: "translateY(-50%)"
33587
- },
33588
- onClick: handleRemoveChapter
33589
- }, React__default.createElement(FaTrash, {
33590
- size: 16,
33591
- className: "text-danger"
33592
- }))), React__default.createElement("div", {
33593
- className: "p-3 d-flex justify-content-between"
33594
- }, React__default.createElement(Grid, {
33595
- container: true
33596
- }, React__default.createElement(Grid, {
33597
- item: true,
33598
- xs: 12
33599
- }, React__default.createElement(Grid, {
33600
- container: true,
33601
- spacing: 2
33602
- }, !isTabletUp && React__default.createElement(Grid, {
33603
- item: true,
33604
- xs: 12
33605
- }, React__default.createElement(Stack, {
33606
- direction: "row",
33607
- justifyContent: "end",
33608
- spacing: 2
33609
- }, !parentChapterId && !data.articles.length && React__default.createElement(Button, {
33610
- className: "mx-1",
33611
- variant: "contained",
33612
- color: "primary",
33613
- disabled: isReadonly,
33614
- startIcon: React__default.createElement(FaPlus, {
33615
- size: 12
33616
- }),
33617
- onClick: handleClickAddSubchapter
33618
- }, t("add_subchapter")), data.subChapters.length === 0 && React__default.createElement(Button, {
33619
- className: "mx-1",
33620
- variant: "contained",
33621
- color: "success",
33622
- disabled: isReadonly,
33623
- startIcon: React__default.createElement(FaPlus, {
33624
- size: 12
33625
- }),
33626
- onClick: handleAddArticle
33627
- }, t("add_article")))), React__default.createElement(Grid, {
33628
- item: true,
33629
- xs: 12,
33630
- lg: 4,
33631
- sx: {
33632
- display: "flex",
33633
- alignItems: "center",
33634
- width: "50%"
33635
- }
33636
- }, React__default.createElement("label", {
33637
- style: {
33638
- minWidth: "90px"
33639
- },
33640
- className: "fw-bold text-nowrap me-2"
33641
- }, t("page.from"), ":"), React__default.createElement(InputText, {
33642
- type: "number",
33643
- className: "w-100",
33644
- disabled: isReadonly,
33645
- value: data.pageFrom,
33646
- onChange: handleChangePageFrom,
33647
- placeholder: t("page.from_placeholder"),
33648
- error: data.pageFrom > data.pageTo || data.pageFrom < 0
33649
- })), React__default.createElement(Grid, {
33650
- item: true,
33651
- xs: 12,
33652
- lg: 4,
33653
- sx: {
33654
- display: "flex",
33655
- alignItems: "center",
33656
- width: "50%"
33657
- }
33658
- }, React__default.createElement("label", {
33659
- style: {
33660
- minWidth: "90px"
33661
- },
33662
- className: "fw-bold text-nowrap me-2"
33663
- }, t("page.to"), ":"), React__default.createElement(InputText, {
33664
- type: "number",
33665
- disabled: isReadonly,
33666
- className: "w-100",
33667
- value: data.pageTo,
33668
- onChange: handleChangePageTo,
33669
- placeholder: t("page.to_placeholder"),
33670
- error: data.pageTo < data.pageFrom
33671
- })), isTabletUp && React__default.createElement(Grid, {
33672
- item: true,
33673
- lg: 4
33674
- }, React__default.createElement(Stack, {
33675
- direction: "row",
33676
- justifyContent: "end",
33677
- spacing: 2
33678
- }, !parentChapterId && !data.articles.length && React__default.createElement(Button, {
33679
- className: "mx-1",
33680
- variant: "contained",
33681
- color: "primary",
33682
- disabled: isReadonly,
33683
- startIcon: React__default.createElement(FaPlus, {
33684
- size: 12
33685
- }),
33686
- onClick: handleClickAddSubchapter
33687
- }, t("add_subchapter")), data.subChapters.length === 0 && React__default.createElement(Button, {
33688
- className: "mx-1",
33689
- variant: "contained",
33690
- color: "success",
33691
- disabled: isReadonly,
33692
- startIcon: React__default.createElement(FaPlus, {
33693
- size: 12
33694
- }),
33695
- onClick: handleAddArticle
33696
- }, t("add_article")))))))), React__default.createElement("div", {
33697
- className: "p-3"
33698
- }, React__default.createElement(Stack, {
33699
- spacing: 2
33700
- }, data.subChapters.map(function (subchapter) {
33701
- return React__default.createElement(_ChapterBox, {
33702
- key: data.id + "-" + subchapter.id,
33703
- categoryOptions: categoryOptions,
33704
- subject: subject,
33705
- parentChapterId: data.id,
33706
- data: subchapter,
33707
- isReadonly: isReadonly,
33708
- onChangeName: onChangeName,
33709
- onChangePageFrom: onChangePageFrom,
33710
- onChangePageTo: onChangePageTo,
33711
- handleCheckArticle: handleCheckArticle,
33712
- onAddArticle: onAddArticle,
33713
- onRemoveArticle: onRemoveArticle,
33714
- onUpdateArticleQuestionCount: onUpdateArticleQuestionCount,
33715
- onUpdateArticleCategory: onUpdateArticleCategory,
33716
- onUpdateArticleQuestionAnswerCount: onUpdateArticleQuestionAnswerCount,
33717
- onUpdateArticleQuestion: onUpdateArticleQuestion,
33718
- onRemoveChapter: onRemoveChapter
33719
- });
33720
- }), data.subChapters.length === 0 && data.articles.map(function (article, index) {
33721
- return React__default.createElement(Stack, {
33722
- key: index
33723
- }, React__default.createElement(Stack, {
33724
- display: "flex",
33725
- flexDirection: "row",
33726
- gap: "8px",
33727
- alignItems: "center"
33728
- }, React__default.createElement(Checkbox, {
33729
- id: "textbook",
33730
- sx: {
33731
- display: "flex",
33732
- justifyContent: "start",
33733
- width: "fit-content"
33734
- },
33735
- onChange: function onChange(e) {
33736
- return handleCheckArticle(e, article);
33737
- }
33738
- }), React__default.createElement("label", {
33739
- htmlFor: "textbook"
33740
- }, t("select_article_create_exam"))));
33741
- }))));
33742
- };
33743
-
33744
33698
  var TextbookActionButtons = function TextbookActionButtons(_ref) {
33745
33699
  var isReadonly = _ref.isReadonly,
33746
33700
  textbook = _ref.textbook,
@@ -35025,7 +34979,8 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
35025
34979
  onQuestionCountChange: handleChangeQuestionCount,
35026
34980
  onCopiedPrevQuestionGroup: onCopiedPrevQuestionGroup,
35027
34981
  onDelete: onDelete,
35028
- isMath: isMath
34982
+ isMath: isMath,
34983
+ isTextbook: true
35029
34984
  }, formikProps));
35030
34985
  }
35031
34986
  })), showAddQuestionGroup && React__default.createElement(Box, null, React__default.createElement(Button, {
@@ -38376,5 +38331,5 @@ var LayoutContext = function LayoutContext(_ref) {
38376
38331
  });else return React__default.createElement(Fragment$1, null, children);
38377
38332
  };
38378
38333
 
38379
- export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleBlock$1 as ArticleBlock, ArticleCategorySelector, ArticleDialog, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, CompareTypeOptions, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_ANSWER_COUNT, DEFAULT_ARTICLE, DEFAULT_MATH_QUESTION_GROUP, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DEFAULT_QUESTION, DEFAULT_QUESTION_GROUP, DEFAULT_SCORE$1 as DEFAULT_SCORE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEditorType, ExamEvent, ExamNoteDialog, ExamResultV2, ExamSessionItem, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, MonthGroupedExamSessionItem, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionBlock$1 as QuestionBlock, QuestionCompareType, QuestionCountSelector, QuestionGroupBlock, QuestionGroupBlockBody$1 as QuestionGroupBlockBody, QuestionOrderName, QuestionShortInput$1 as QuestionShortInput, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, generateNewQuestionGroup, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getPreviousQuestinGroupCategory, getQuestionGroupsAfterQuestionCountChanged, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, groupMonth, handleKeyDown, i18n, includePathname, isLocalHost, isSequentialQuestionGroups, isTextType, labelStyle, minutesToTimeSpan, pushTo, _reduceToMathArticles as reduceToMathArticles, reset, _resetAllCategoriesAndQuestionTypesBySubject as resetAllCategoriesAndQuestionTypesBySubject, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
38334
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleBlock$1 as ArticleBlock, ArticleCategorySelector, ArticleDialog, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, CompareTypeOptions, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_ANSWER_COUNT, DEFAULT_ARTICLE, DEFAULT_MATH_QUESTION_GROUP, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DEFAULT_QUESTION, DEFAULT_QUESTION_GROUP, DEFAULT_SCORE$1 as DEFAULT_SCORE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEditorType, ExamEvent, ExamNoteDialog, ExamResultV2, ExamSessionItem, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, MonthGroupedExamSessionItem, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionBlock$1 as QuestionBlock, QuestionCompareType, QuestionCountSelector, QuestionGroupBlock, QuestionGroupBlockBody$1 as QuestionGroupBlockBody, QuestionOrderName, QuestionShortInput$1 as QuestionShortInput, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, generateNewQuestionGroup, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getPreviousQuestinGroupCategory, getQuestionGroupsAfterQuestionCountChanged, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, groupMonth, handleKeyDown, i18n, includePathname, isLocalHost, isSequentialQuestionGroups, isTextType, labelStyle, minutesToTimeSpan, pushTo, _reduceToMathArticles as reduceToMathArticles, reset, _resetAllCategoriesAndQuestionTypesBySubject as resetAllCategoriesAndQuestionTypesBySubject, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
38380
38335
  //# sourceMappingURL=index.modern.js.map