touchstudy-core 0.1.183 → 0.1.185

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.
@@ -11701,10 +11701,10 @@ var isEqual$2 = function isEqual(prev, next) {
11701
11701
  };
11702
11702
  var QuestionBlock$1 = memo(QuestionBlock, isEqual$2);
11703
11703
 
11704
- 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"];
11705
11705
  var _$3 = _$a;
11706
11706
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11707
- 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;
11708
11708
  var data = _ref.data,
11709
11709
  path = _ref.path,
11710
11710
  isMath = _ref.isMath,
@@ -11721,8 +11721,10 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11721
11721
  onCloseCategoryMenu = _ref.onCloseCategoryMenu,
11722
11722
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
11723
11723
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
11724
+ onQuestioStartOrderChange = _ref.onQuestioStartOrderChange,
11724
11725
  formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$7);
11725
11726
  var errors = formikProps.errors;
11727
+ var startOrderRef = useRef(null);
11726
11728
  var articles = data.articles,
11727
11729
  questions = data.questions;
11728
11730
  var blockErrors = _$3.get(errors, path);
@@ -11730,6 +11732,22 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11730
11732
  var _data$articles$, _data$articles$$categ, _data$articles$2, _data$articles$2$cate;
11731
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]);
11732
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]);
11733
11751
  return React__default.createElement(FieldArray, {
11734
11752
  name: path + ".articles",
11735
11753
  render: function render(arrayHelpers) {
@@ -11782,7 +11800,26 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
11782
11800
  }, t$1(isMath ? "article" : "korean_article")))), React__default.createElement(Stack, {
11783
11801
  gap: 1,
11784
11802
  direction: "column"
11785
- }, 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, {
11786
11823
  data: questions,
11787
11824
  render: function render(question, index) {
11788
11825
  return React__default.createElement(QuestionBlock$1, Object.assign({
@@ -11828,7 +11865,7 @@ var isEqual$3 = function isEqual(prev, next) {
11828
11865
  };
11829
11866
  var QuestionGroupBlockBody$1 = memo(QuestionGroupBlockBody, isEqual$3);
11830
11867
 
11831
- 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"];
11832
11869
  var _$4 = _$a;
11833
11870
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11834
11871
  var _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2, _data$articles$4, _data$articles$4$cate, _data$articles$4$cate2;
@@ -11844,6 +11881,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11844
11881
  questionTypes = _ref.questionTypes,
11845
11882
  optionKey = _ref.optionKey,
11846
11883
  disabled = _ref.disabled,
11884
+ isTextbook = _ref.isTextbook,
11847
11885
  onToggle = _ref.onToggle,
11848
11886
  onQuestionCountChange = _ref.onQuestionCountChange,
11849
11887
  onDelete = _ref.onDelete,
@@ -11876,6 +11914,16 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11876
11914
  setFieldValue(path + ".questionCount", questionCount);
11877
11915
  onQuestionCountChange(questionCount, expandedIndex);
11878
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
+ };
11879
11927
  var handleChangeAnswerCount = function handleChangeAnswerCount(val) {
11880
11928
  var answerCount = (val === null || val === void 0 ? void 0 : val.value) || 1;
11881
11929
  setFieldValue(path + ".answerCount", answerCount);
@@ -11923,6 +11971,13 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11923
11971
  var handleChangeCategory = function handleChangeCategory(val) {
11924
11972
  setFieldValue(path + ".articles[0].categoryOptions", val !== null && val !== void 0 && val.value ? [val] : []);
11925
11973
  setFieldValue(path + ".articles[0].categories", val !== null && val !== void 0 && val.value ? [val.value] : []);
11974
+ var questions = data.questions;
11975
+ setFieldValue(path + ".questions", questions.map(function (q) {
11976
+ return _extends({}, q, {
11977
+ questionTypeId: null,
11978
+ questionType: null
11979
+ });
11980
+ }));
11926
11981
  };
11927
11982
  var handleChangeSubCategory = function handleChangeSubCategory(val) {
11928
11983
  if (!(val !== null && val !== void 0 && val.value)) {
@@ -11935,6 +11990,13 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11935
11990
  setFieldValue(path + ".articles[0].categories[1]", val.value);
11936
11991
  setFieldValue(path + ".articles[0].categoryOptions[1]", val);
11937
11992
  }
11993
+ var questions = data.questions;
11994
+ setFieldValue(path + ".questions", questions.map(function (q) {
11995
+ return _extends({}, q, {
11996
+ questionTypeId: null,
11997
+ questionType: null
11998
+ });
11999
+ }));
11938
12000
  };
11939
12001
  var summary = open ? "" : [t("number_questions", {
11940
12002
  n: data.questionCount
@@ -11946,6 +12008,8 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
11946
12008
  }).join(",") : ""].filter(function (i) {
11947
12009
  return !!i;
11948
12010
  }).join(" / ");
12011
+ var pageFromError = _$4.get(errors, path + ".pageFrom");
12012
+ var pageToError = _$4.get(errors, path + ".pageTo");
11949
12013
  var categoryError = _$4.get(errors, path + ".articles[0].categories");
11950
12014
  var blockErrors = _$4.get(errors, path);
11951
12015
  return React__default.createElement(Accordion, {
@@ -12125,7 +12189,65 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12125
12189
  isDisabled: disabled
12126
12190
  }));
12127
12191
  }
12128
- })))), isMath && React__default.createElement(Box, {
12192
+ }))), !isMath && isTextbook && React__default.createElement(Grid, {
12193
+ item: true,
12194
+ xs: 3
12195
+ }, React__default.createElement(FormGroup, {
12196
+ sx: {
12197
+ marginRight: 2
12198
+ }
12199
+ }, React__default.createElement(FormLabel, {
12200
+ htmlFor: "question_count",
12201
+ className: "form-label"
12202
+ }, t("page_from")), React__default.createElement(Field, {
12203
+ name: path + ".pageFrom",
12204
+ render: function render(_ref6) {
12205
+ var field = _ref6.field;
12206
+ return React__default.createElement(TextField, Object.assign({
12207
+ placeholder: t("page_from"),
12208
+ type: "number"
12209
+ }, field, {
12210
+ size: "small",
12211
+ onKeyDown: handleKeyDown,
12212
+ disabled: disabled
12213
+ }));
12214
+ }
12215
+ }), !!pageFromError && React__default.createElement(Typography, {
12216
+ fontWeight: 500,
12217
+ fontSize: "10px",
12218
+ lineHeight: "11.93px",
12219
+ mt: 1,
12220
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
12221
+ }, pageFromError))), !isMath && isTextbook && React__default.createElement(Grid, {
12222
+ item: true,
12223
+ xs: 3
12224
+ }, React__default.createElement(FormGroup, {
12225
+ sx: {
12226
+ marginRight: 2
12227
+ }
12228
+ }, React__default.createElement(FormLabel, {
12229
+ htmlFor: "question_count",
12230
+ className: "form-label"
12231
+ }, t("page_to")), React__default.createElement(Field, {
12232
+ name: path + ".pageTo",
12233
+ render: function render(_ref7) {
12234
+ var field = _ref7.field;
12235
+ return React__default.createElement(TextField, Object.assign({
12236
+ placeholder: t("page_to"),
12237
+ type: "number"
12238
+ }, field, {
12239
+ size: "small",
12240
+ onKeyDown: handleKeyDown,
12241
+ disabled: disabled
12242
+ }));
12243
+ }
12244
+ }), !!pageToError && React__default.createElement(Typography, {
12245
+ fontWeight: 500,
12246
+ fontSize: "10px",
12247
+ lineHeight: "11.93px",
12248
+ mt: 1,
12249
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
12250
+ }, pageToError)))), isMath && React__default.createElement(Box, {
12129
12251
  sx: {
12130
12252
  display: "flex"
12131
12253
  }
@@ -12137,6 +12259,83 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12137
12259
  sx: {
12138
12260
  whiteSpace: "nowrap"
12139
12261
  }
12262
+ }, t("category_copy")))), isMath && isTextbook && React__default.createElement(Stack, {
12263
+ direction: "row",
12264
+ flexWrap: "nowrap"
12265
+ }, React__default.createElement(Grid, {
12266
+ container: true,
12267
+ flexGrow: 1,
12268
+ direction: "row"
12269
+ }, React__default.createElement(Grid, {
12270
+ item: true,
12271
+ xs: 3
12272
+ }, React__default.createElement(FormGroup, {
12273
+ sx: {
12274
+ marginRight: 2
12275
+ }
12276
+ }, React__default.createElement(FormLabel, {
12277
+ htmlFor: "question_count",
12278
+ className: "form-label"
12279
+ }, t("page_from")), React__default.createElement(Field, {
12280
+ name: path + ".pageFrom",
12281
+ render: function render(_ref8) {
12282
+ var field = _ref8.field;
12283
+ return React__default.createElement(TextField, Object.assign({
12284
+ placeholder: t("page_from"),
12285
+ type: "number"
12286
+ }, field, {
12287
+ size: "small",
12288
+ onKeyDown: handleKeyDown,
12289
+ disabled: disabled
12290
+ }));
12291
+ }
12292
+ }), !!pageFromError && React__default.createElement(Typography, {
12293
+ fontWeight: 500,
12294
+ fontSize: "10px",
12295
+ lineHeight: "11.93px",
12296
+ mt: 1,
12297
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
12298
+ }, pageFromError))), React__default.createElement(Grid, {
12299
+ item: true,
12300
+ xs: 3
12301
+ }, React__default.createElement(FormGroup, {
12302
+ sx: {
12303
+ marginRight: 2
12304
+ }
12305
+ }, React__default.createElement(FormLabel, {
12306
+ htmlFor: "question_count",
12307
+ className: "form-label"
12308
+ }, t("page_to")), React__default.createElement(Field, {
12309
+ name: path + ".pageTo",
12310
+ render: function render(_ref9) {
12311
+ var field = _ref9.field;
12312
+ return React__default.createElement(TextField, Object.assign({
12313
+ placeholder: t("page_to"),
12314
+ type: "number"
12315
+ }, field, {
12316
+ size: "small",
12317
+ onKeyDown: handleKeyDown,
12318
+ disabled: disabled
12319
+ }));
12320
+ }
12321
+ }), !!pageToError && React__default.createElement(Typography, {
12322
+ fontWeight: 500,
12323
+ fontSize: "10px",
12324
+ lineHeight: "11.93px",
12325
+ mt: 1,
12326
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
12327
+ }, pageToError)))), React__default.createElement(Box, {
12328
+ sx: {
12329
+ display: "flex",
12330
+ visibility: "hidden"
12331
+ }
12332
+ }, React__default.createElement(Button, {
12333
+ variant: "contained",
12334
+ color: "success",
12335
+ disabled: true,
12336
+ sx: {
12337
+ whiteSpace: "nowrap"
12338
+ }
12140
12339
  }, t("category_copy"))))) : React__default.createElement(Typography, {
12141
12340
  fontWeight: 600,
12142
12341
  sx: {
@@ -12159,6 +12358,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
12159
12358
  isLoadingQuestionTypes: isLoadingQuestionTypes,
12160
12359
  optionKey: optionKey,
12161
12360
  disabled: disabled,
12361
+ onQuestioStartOrderChange: handleChangeStartQuestionOrder,
12162
12362
  onDelete: onDelete,
12163
12363
  onOpenSubCategoryMenu: onOpenSubCategoryMenu,
12164
12364
  onOpenCategoryMenu: onOpenCategoryMenu,
@@ -12278,6 +12478,8 @@ var _reduceToMathArticles = function reduceToMathArticles(data, isMath) {
12278
12478
  if (key === "articles") {
12279
12479
  var _values$key;
12280
12480
  values[key] = (_values$key = values[key]) !== null && _values$key !== void 0 && _values$key.length ? [values[key][0]] : [DEFAULT_ARTICLE];
12481
+ } else if (key === "questionType" || key === "questionTypeId") {
12482
+ values[key] = null;
12281
12483
  } else if (typeof values[key] === "object" && values[key] !== null) {
12282
12484
  _reduceToMathArticles(values[key]);
12283
12485
  }
@@ -16613,7 +16815,7 @@ var ActionsTooltip = function ActionsTooltip(_ref) {
16613
16815
  };
16614
16816
 
16615
16817
  var NoteItem = function NoteItem(_ref) {
16616
- var _user$roles;
16818
+ var _user$roles, _data$questionGroupIn;
16617
16819
  var data = _ref.data,
16618
16820
  openTooltip = _ref.openTooltip,
16619
16821
  actions = _ref.actions,
@@ -16668,7 +16870,7 @@ var NoteItem = function NoteItem(_ref) {
16668
16870
  direction: "row",
16669
16871
  alignItems: "center",
16670
16872
  gap: 1
16671
- }, 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", {
16873
+ }, 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", {
16672
16874
  number: (data.questionOrder || 0) + 1
16673
16875
  }) : "" + 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({
16674
16876
  className: "truncate"
@@ -19984,7 +20186,7 @@ var AnswerItem = function AnswerItem(_ref) {
19984
20186
  return React__default.createElement("div", {
19985
20187
  className: "" + printStyles["avoid-break-inside"],
19986
20188
  style: {
19987
- borderBottom: (data === null || data === void 0 ? void 0 : data.article) !== (nextData === null || nextData === void 0 ? void 0 : nextData.article) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
20189
+ borderBottom: (data === null || data === void 0 ? void 0 : data.questionGroupIndex) !== (nextData === null || nextData === void 0 ? void 0 : nextData.questionGroupIndex) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
19988
20190
  },
19989
20191
  key: data.id
19990
20192
  }, React__default.createElement("div", {
@@ -21173,9 +21375,9 @@ var TimeOrderChart = function TimeOrderChart(_ref) {
21173
21375
  });
21174
21376
  useEffect(function () {
21175
21377
  if (chartRef.current) {
21176
- setIsRendered(timelyOrderQuestion.article);
21378
+ setIsRendered(timelyOrderQuestion.questionGroupIndex);
21177
21379
  }
21178
- }, [timelyOrderQuestion.article]);
21380
+ }, [timelyOrderQuestion.questionGroupIndex]);
21179
21381
  return React__default.createElement("div", {
21180
21382
  className: "" + printStyles["avoid-break-inside"]
21181
21383
  }, React__default.createElement(Typography, {
@@ -21185,7 +21387,7 @@ var TimeOrderChart = function TimeOrderChart(_ref) {
21185
21387
  fontWeight: 700,
21186
21388
  color: "#414E62"
21187
21389
  }
21188
- }, t("article_number"), " ", timelyOrderQuestion.article), React__default.createElement("div", {
21390
+ }, t("article_number"), " ", timelyOrderQuestion.questionGroupIndex + 1), React__default.createElement("div", {
21189
21391
  className: styles$7["compareChart"] + " " + printStyles["avoid-break-inside"]
21190
21392
  }, React__default.createElement("div", {
21191
21393
  className: "" + styles$7["prevChart"]
@@ -21232,7 +21434,7 @@ var TextbookAnswerItem = function TextbookAnswerItem(_ref) {
21232
21434
  return React__default.createElement("div", {
21233
21435
  className: "" + printStyles["avoid-break-inside"],
21234
21436
  style: {
21235
- borderBottom: (data === null || data === void 0 ? void 0 : data.article) !== (nextData === null || nextData === void 0 ? void 0 : nextData.article) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
21437
+ borderBottom: (data === null || data === void 0 ? void 0 : data.questionGroupIndex) !== (nextData === null || nextData === void 0 ? void 0 : nextData.questionGroupIndex) && !isFirst && !isLast ? "1px solid #E4E7EC" : ""
21236
21438
  },
21237
21439
  key: data.id
21238
21440
  }, React__default.createElement("div", {
@@ -32396,7 +32598,8 @@ var ExamDetailForm = function ExamDetailForm(_ref) {
32396
32598
  onQuestionCountChange: handleChangeQuestionCount,
32397
32599
  onCopiedPrevQuestionGroup: handleCopiedPrevQuestionGroup,
32398
32600
  onDelete: handleOpenConfirmDelete,
32399
- isMath: isMath
32601
+ isMath: isMath,
32602
+ isTextbook: false
32400
32603
  }, formikProps));
32401
32604
  }
32402
32605
  }))), React__default.createElement(Grid, {
@@ -33508,255 +33711,6 @@ var ArticleDialog = function ArticleDialog(_ref) {
33508
33711
  }, t("add")))));
33509
33712
  };
33510
33713
 
33511
- var _ChapterBox = function ChapterBox(_ref) {
33512
- var parentChapterId = _ref.parentChapterId,
33513
- data = _ref.data,
33514
- subject = _ref.subject,
33515
- categoryOptions = _ref.categoryOptions,
33516
- isReadonly = _ref.isReadonly,
33517
- onClickAddSubchapter = _ref.onClickAddSubchapter,
33518
- onChangeName = _ref.onChangeName,
33519
- onChangePageFrom = _ref.onChangePageFrom,
33520
- onChangePageTo = _ref.onChangePageTo,
33521
- onAddArticle = _ref.onAddArticle,
33522
- onRemoveArticle = _ref.onRemoveArticle,
33523
- handleCheckArticle = _ref.handleCheckArticle,
33524
- onUpdateArticleQuestionCount = _ref.onUpdateArticleQuestionCount,
33525
- onUpdateArticleCategory = _ref.onUpdateArticleCategory,
33526
- onUpdateArticleQuestionAnswerCount = _ref.onUpdateArticleQuestionAnswerCount,
33527
- onUpdateArticleQuestion = _ref.onUpdateArticleQuestion,
33528
- onRemoveChapter = _ref.onRemoveChapter;
33529
- var _useTranslation = useTranslation(),
33530
- t = _useTranslation.t;
33531
- var _useState = useState(false),
33532
- isEditName = _useState[0],
33533
- setEditName = _useState[1];
33534
- var toggleEditName = function toggleEditName() {
33535
- if (isReadonly) {
33536
- setEditName(false);
33537
- return;
33538
- }
33539
- setEditName(!isEditName);
33540
- };
33541
- var handleKeyEnterName = function handleKeyEnterName(e) {
33542
- if (e.key === "Enter") {
33543
- handleSaveChapter(toggleEditName);
33544
- }
33545
- };
33546
- var handleSaveChapter = function handleSaveChapter(callback) {
33547
- callback();
33548
- };
33549
- var handleRemoveChapter = function handleRemoveChapter() {
33550
- onRemoveChapter === null || onRemoveChapter === void 0 ? void 0 : onRemoveChapter(data.name, data.id, parentChapterId);
33551
- };
33552
- var handleClickAddSubchapter = function handleClickAddSubchapter() {
33553
- onClickAddSubchapter === null || onClickAddSubchapter === void 0 ? void 0 : onClickAddSubchapter({
33554
- id: data.id,
33555
- name: data.name
33556
- });
33557
- };
33558
- var handleAddArticle = function handleAddArticle() {
33559
- onAddArticle === null || onAddArticle === void 0 ? void 0 : onAddArticle(data);
33560
- };
33561
- var theme = useTheme();
33562
- var isTabletUp = useMediaQuery(theme.breakpoints.up('lg'));
33563
- var handleChangeName = function handleChangeName(e) {
33564
- var text = e.target.value;
33565
- onChangeName === null || onChangeName === void 0 ? void 0 : onChangeName(text, data.id, parentChapterId);
33566
- };
33567
- var handleChangePageFrom = function handleChangePageFrom(e) {
33568
- var value = +e.target.value.replace(/[^0-9]/g, "");
33569
- e.target.value = value.toString();
33570
- onChangePageFrom === null || onChangePageFrom === void 0 ? void 0 : onChangePageFrom(value, data.id, parentChapterId);
33571
- };
33572
- var handleChangePageTo = function handleChangePageTo(e) {
33573
- var value = +e.target.value.replace(/[^0-9]/g, "");
33574
- e.target.value = value.toString();
33575
- onChangePageTo === null || onChangePageTo === void 0 ? void 0 : onChangePageTo(value, data.id, parentChapterId);
33576
- };
33577
- return React__default.createElement("div", {
33578
- className: "border-1 border-primary rounded-2"
33579
- }, React__default.createElement("div", {
33580
- className: "border-start-0 border-end-0 border-top-0 border-bottom-1 border-primary border p-2 position-relative"
33581
- }, !isEditName ? React__default.createElement("div", {
33582
- className: "text-center w-100 px-5 " + (isReadonly ? "" : "pointer"),
33583
- onClick: toggleEditName
33584
- }, React__default.createElement(Typography, {
33585
- className: "w-100 fs-5 fw-bold"
33586
- }, data.name)) : React__default.createElement(InputText, {
33587
- className: "w-100 px-5",
33588
- value: data.name,
33589
- inputProps: {
33590
- className: "text-center fs-5 fw-bold"
33591
- },
33592
- placeholder: t("chapter_name_placeholder"),
33593
- onBlur: toggleEditName,
33594
- onKeyDown: handleKeyEnterName,
33595
- onChange: handleChangeName
33596
- }), !isReadonly && React__default.createElement(IconButton, {
33597
- className: "position-absolute",
33598
- disabled: isReadonly,
33599
- style: {
33600
- right: 12,
33601
- top: "50%",
33602
- transform: "translateY(-50%)"
33603
- },
33604
- onClick: handleRemoveChapter
33605
- }, React__default.createElement(FaTrash, {
33606
- size: 16,
33607
- className: "text-danger"
33608
- }))), React__default.createElement("div", {
33609
- className: "p-3 d-flex justify-content-between"
33610
- }, React__default.createElement(Grid, {
33611
- container: true
33612
- }, React__default.createElement(Grid, {
33613
- item: true,
33614
- xs: 12
33615
- }, React__default.createElement(Grid, {
33616
- container: true,
33617
- spacing: 2
33618
- }, !isTabletUp && React__default.createElement(Grid, {
33619
- item: true,
33620
- xs: 12
33621
- }, React__default.createElement(Stack, {
33622
- direction: "row",
33623
- justifyContent: "end",
33624
- spacing: 2
33625
- }, !parentChapterId && !data.articles.length && React__default.createElement(Button, {
33626
- className: "mx-1",
33627
- variant: "contained",
33628
- color: "primary",
33629
- disabled: isReadonly,
33630
- startIcon: React__default.createElement(FaPlus, {
33631
- size: 12
33632
- }),
33633
- onClick: handleClickAddSubchapter
33634
- }, t("add_subchapter")), data.subChapters.length === 0 && React__default.createElement(Button, {
33635
- className: "mx-1",
33636
- variant: "contained",
33637
- color: "success",
33638
- disabled: isReadonly,
33639
- startIcon: React__default.createElement(FaPlus, {
33640
- size: 12
33641
- }),
33642
- onClick: handleAddArticle
33643
- }, t("add_article")))), React__default.createElement(Grid, {
33644
- item: true,
33645
- xs: 12,
33646
- lg: 4,
33647
- sx: {
33648
- display: "flex",
33649
- alignItems: "center",
33650
- width: "50%"
33651
- }
33652
- }, React__default.createElement("label", {
33653
- style: {
33654
- minWidth: "90px"
33655
- },
33656
- className: "fw-bold text-nowrap me-2"
33657
- }, t("page.from"), ":"), React__default.createElement(InputText, {
33658
- type: "number",
33659
- className: "w-100",
33660
- disabled: isReadonly,
33661
- value: data.pageFrom,
33662
- onChange: handleChangePageFrom,
33663
- placeholder: t("page.from_placeholder"),
33664
- error: data.pageFrom > data.pageTo || data.pageFrom < 0
33665
- })), React__default.createElement(Grid, {
33666
- item: true,
33667
- xs: 12,
33668
- lg: 4,
33669
- sx: {
33670
- display: "flex",
33671
- alignItems: "center",
33672
- width: "50%"
33673
- }
33674
- }, React__default.createElement("label", {
33675
- style: {
33676
- minWidth: "90px"
33677
- },
33678
- className: "fw-bold text-nowrap me-2"
33679
- }, t("page.to"), ":"), React__default.createElement(InputText, {
33680
- type: "number",
33681
- disabled: isReadonly,
33682
- className: "w-100",
33683
- value: data.pageTo,
33684
- onChange: handleChangePageTo,
33685
- placeholder: t("page.to_placeholder"),
33686
- error: data.pageTo < data.pageFrom
33687
- })), isTabletUp && React__default.createElement(Grid, {
33688
- item: true,
33689
- lg: 4
33690
- }, React__default.createElement(Stack, {
33691
- direction: "row",
33692
- justifyContent: "end",
33693
- spacing: 2
33694
- }, !parentChapterId && !data.articles.length && React__default.createElement(Button, {
33695
- className: "mx-1",
33696
- variant: "contained",
33697
- color: "primary",
33698
- disabled: isReadonly,
33699
- startIcon: React__default.createElement(FaPlus, {
33700
- size: 12
33701
- }),
33702
- onClick: handleClickAddSubchapter
33703
- }, t("add_subchapter")), data.subChapters.length === 0 && React__default.createElement(Button, {
33704
- className: "mx-1",
33705
- variant: "contained",
33706
- color: "success",
33707
- disabled: isReadonly,
33708
- startIcon: React__default.createElement(FaPlus, {
33709
- size: 12
33710
- }),
33711
- onClick: handleAddArticle
33712
- }, t("add_article")))))))), React__default.createElement("div", {
33713
- className: "p-3"
33714
- }, React__default.createElement(Stack, {
33715
- spacing: 2
33716
- }, data.subChapters.map(function (subchapter) {
33717
- return React__default.createElement(_ChapterBox, {
33718
- key: data.id + "-" + subchapter.id,
33719
- categoryOptions: categoryOptions,
33720
- subject: subject,
33721
- parentChapterId: data.id,
33722
- data: subchapter,
33723
- isReadonly: isReadonly,
33724
- onChangeName: onChangeName,
33725
- onChangePageFrom: onChangePageFrom,
33726
- onChangePageTo: onChangePageTo,
33727
- handleCheckArticle: handleCheckArticle,
33728
- onAddArticle: onAddArticle,
33729
- onRemoveArticle: onRemoveArticle,
33730
- onUpdateArticleQuestionCount: onUpdateArticleQuestionCount,
33731
- onUpdateArticleCategory: onUpdateArticleCategory,
33732
- onUpdateArticleQuestionAnswerCount: onUpdateArticleQuestionAnswerCount,
33733
- onUpdateArticleQuestion: onUpdateArticleQuestion,
33734
- onRemoveChapter: onRemoveChapter
33735
- });
33736
- }), data.subChapters.length === 0 && data.articles.map(function (article, index) {
33737
- return React__default.createElement(Stack, {
33738
- key: index
33739
- }, React__default.createElement(Stack, {
33740
- display: "flex",
33741
- flexDirection: "row",
33742
- gap: "8px",
33743
- alignItems: "center"
33744
- }, React__default.createElement(Checkbox, {
33745
- id: "textbook",
33746
- sx: {
33747
- display: "flex",
33748
- justifyContent: "start",
33749
- width: "fit-content"
33750
- },
33751
- onChange: function onChange(e) {
33752
- return handleCheckArticle(e, article);
33753
- }
33754
- }), React__default.createElement("label", {
33755
- htmlFor: "textbook"
33756
- }, t("select_article_create_exam"))));
33757
- }))));
33758
- };
33759
-
33760
33714
  var TextbookActionButtons = function TextbookActionButtons(_ref) {
33761
33715
  var isReadonly = _ref.isReadonly,
33762
33716
  textbook = _ref.textbook,
@@ -35041,7 +34995,8 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
35041
34995
  onQuestionCountChange: handleChangeQuestionCount,
35042
34996
  onCopiedPrevQuestionGroup: onCopiedPrevQuestionGroup,
35043
34997
  onDelete: onDelete,
35044
- isMath: isMath
34998
+ isMath: isMath,
34999
+ isTextbook: true
35045
35000
  }, formikProps));
35046
35001
  }
35047
35002
  })), showAddQuestionGroup && React__default.createElement(Box, null, React__default.createElement(Button, {
@@ -38392,5 +38347,5 @@ var LayoutContext = function LayoutContext(_ref) {
38392
38347
  });else return React__default.createElement(Fragment$1, null, children);
38393
38348
  };
38394
38349
 
38395
- 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 };
38350
+ 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 };
38396
38351
  //# sourceMappingURL=index.modern.js.map