touchstudy-core 0.1.144 → 0.1.146

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.
@@ -23,7 +23,7 @@ import { useSelector, useDispatch } from 'react-redux';
23
23
  import Select, { components } from 'react-select';
24
24
  import CreatableSelect from 'react-select/creatable';
25
25
  import axios from 'axios';
26
- import _$5 from 'lodash';
26
+ import _$6 from 'lodash';
27
27
  import { useGoogleLogout, GoogleLogin } from '@leecheuk/react-google-login';
28
28
  import 'moment/locale/ko.js';
29
29
  import 'moment/locale/en-au.js';
@@ -1465,6 +1465,10 @@ var textbook_owner_email_is_required = "교재 소유자의 이메일은 필수
1465
1465
  var invalid_textbook_owner_email_address = "유효하지 않은 교재 소유자 이메일 주소입니다";
1466
1466
  var textbook_owner_academy_is_required = "교재 소유자의 학원은 필수입니다";
1467
1467
  var textbook_owner_course_is_required = "교재 소유자의 수업은 필수입니다";
1468
+ var start_order = "주문 번호 시작";
1469
+ var student_notice_notes = "학생 공지/노트";
1470
+ var note = "메모";
1471
+ var student_parents = "학생/학부모";
1468
1472
  var lang_ko = {
1469
1473
  problem_solving: problem_solving,
1470
1474
  my_story: my_story,
@@ -2563,7 +2567,11 @@ var lang_ko = {
2563
2567
  textbook_owner_email_is_required: textbook_owner_email_is_required,
2564
2568
  invalid_textbook_owner_email_address: invalid_textbook_owner_email_address,
2565
2569
  textbook_owner_academy_is_required: textbook_owner_academy_is_required,
2566
- textbook_owner_course_is_required: textbook_owner_course_is_required
2570
+ textbook_owner_course_is_required: textbook_owner_course_is_required,
2571
+ start_order: start_order,
2572
+ student_notice_notes: student_notice_notes,
2573
+ note: note,
2574
+ student_parents: student_parents
2567
2575
  };
2568
2576
 
2569
2577
  var problem_solving$1 = "Problem Solving";
@@ -3685,6 +3693,10 @@ var textbook_owner_email_is_required$1 = "Textbook owner email is required";
3685
3693
  var invalid_textbook_owner_email_address$1 = "Invalid textbook owner email address";
3686
3694
  var textbook_owner_academy_is_required$1 = "Textbook owner academy is required";
3687
3695
  var textbook_owner_course_is_required$1 = "Textbook owner class is required";
3696
+ var start_order$1 = "Start order number";
3697
+ var student_notice_notes$1 = "Student notice/notes";
3698
+ var note$1 = "Note";
3699
+ var student_parents$1 = "Student/Parents";
3688
3700
  var lang_en = {
3689
3701
  problem_solving: problem_solving$1,
3690
3702
  my_story: my_story$1,
@@ -4785,7 +4797,11 @@ var lang_en = {
4785
4797
  textbook_owner_email_is_required: textbook_owner_email_is_required$1,
4786
4798
  invalid_textbook_owner_email_address: invalid_textbook_owner_email_address$1,
4787
4799
  textbook_owner_academy_is_required: textbook_owner_academy_is_required$1,
4788
- textbook_owner_course_is_required: textbook_owner_course_is_required$1
4800
+ textbook_owner_course_is_required: textbook_owner_course_is_required$1,
4801
+ start_order: start_order$1,
4802
+ student_notice_notes: student_notice_notes$1,
4803
+ note: note$1,
4804
+ student_parents: student_parents$1
4789
4805
  };
4790
4806
 
4791
4807
  i18n.use(initReactI18next).init({
@@ -6164,6 +6180,18 @@ var UserSortColumn;
6164
6180
  UserSortColumn["Grade"] = "Grade";
6165
6181
  })(UserSortColumn || (UserSortColumn = {}));
6166
6182
 
6183
+ var NoteSortColumn;
6184
+ (function (NoteSortColumn) {
6185
+ NoteSortColumn["Content"] = "Content";
6186
+ NoteSortColumn["CreatedAt"] = "CreatedAt";
6187
+ NoteSortColumn["Question"] = "Question";
6188
+ })(NoteSortColumn || (NoteSortColumn = {}));
6189
+ var NoteType;
6190
+ (function (NoteType) {
6191
+ NoteType[NoteType["Default"] = 0] = "Default";
6192
+ NoteType[NoteType["StudentReadable"] = 1] = "StudentReadable";
6193
+ })(NoteType || (NoteType = {}));
6194
+
6167
6195
  var SchoolType;
6168
6196
  (function (SchoolType) {
6169
6197
  SchoolType[SchoolType["Default"] = 0] = "Default";
@@ -6171,6 +6199,31 @@ var SchoolType;
6171
6199
  SchoolType[SchoolType["Middle"] = 2] = "Middle";
6172
6200
  SchoolType[SchoolType["High"] = 3] = "High";
6173
6201
  })(SchoolType || (SchoolType = {}));
6202
+ var HighSchoolGrade;
6203
+ (function (HighSchoolGrade) {
6204
+ HighSchoolGrade[HighSchoolGrade["Default"] = 0] = "Default";
6205
+ HighSchoolGrade[HighSchoolGrade["AdvancedMathematics1"] = 1] = "AdvancedMathematics1";
6206
+ HighSchoolGrade[HighSchoolGrade["AdvancedMathematics2"] = 2] = "AdvancedMathematics2";
6207
+ HighSchoolGrade[HighSchoolGrade["Algebra"] = 3] = "Algebra";
6208
+ HighSchoolGrade[HighSchoolGrade["Calculus1"] = 4] = "Calculus1";
6209
+ HighSchoolGrade[HighSchoolGrade["Calculus2"] = 5] = "Calculus2";
6210
+ HighSchoolGrade[HighSchoolGrade["ProbabilityAndStatistics"] = 6] = "ProbabilityAndStatistics";
6211
+ HighSchoolGrade[HighSchoolGrade["Geometry"] = 7] = "Geometry";
6212
+ })(HighSchoolGrade || (HighSchoolGrade = {}));
6213
+ var TextbookEditorType;
6214
+ (function (TextbookEditorType) {
6215
+ TextbookEditorType[TextbookEditorType["Default"] = 0] = "Default";
6216
+ TextbookEditorType[TextbookEditorType["Korea"] = 1] = "Korea";
6217
+ TextbookEditorType[TextbookEditorType["Math"] = 2] = "Math";
6218
+ })(TextbookEditorType || (TextbookEditorType = {}));
6219
+
6220
+ var SchoolType$1;
6221
+ (function (SchoolType) {
6222
+ SchoolType[SchoolType["Default"] = 0] = "Default";
6223
+ SchoolType[SchoolType["Elementary"] = 1] = "Elementary";
6224
+ SchoolType[SchoolType["Middle"] = 2] = "Middle";
6225
+ SchoolType[SchoolType["High"] = 3] = "High";
6226
+ })(SchoolType$1 || (SchoolType$1 = {}));
6174
6227
 
6175
6228
  var canAccess = function canAccess(userRoles, componentRoles) {
6176
6229
  if (!Array.isArray(userRoles)) {
@@ -6344,7 +6397,7 @@ var getLocalDayOfWeek = function getLocalDayOfWeek(utcDateTime, dayOfWeek) {
6344
6397
  return moment.utc(utcDateTime).add(diff, "days").local().weekday();
6345
6398
  };
6346
6399
  var getUtcDayOfWeek = function getUtcDayOfWeek(localDateTime, dayOfWeek) {
6347
- var currentDayOfWeek = _$5.cloneDeep(localDateTime).local().weekday();
6400
+ var currentDayOfWeek = _$6.cloneDeep(localDateTime).local().weekday();
6348
6401
  var diff = dayOfWeek - currentDayOfWeek;
6349
6402
  if (diff < 0) diff += 7;
6350
6403
  return localDateTime.add(diff, "days").utc().weekday();
@@ -6841,7 +6894,7 @@ var useList = function useList(fetchData, defaultQuery) {
6841
6894
  var _paging$page, _paging$limit;
6842
6895
  return (((_paging$page = paging.page) != null ? _paging$page : 0) - 1) * ((_paging$limit = paging.limit) != null ? _paging$limit : 0) + index + 1;
6843
6896
  };
6844
- var debounceSearch = _$5.debounce(function () {
6897
+ var debounceSearch = _$6.debounce(function () {
6845
6898
  var _textSearchRef$curren;
6846
6899
  setFilter(_extends({}, filter, {
6847
6900
  currentPage: 1,
@@ -7779,11 +7832,13 @@ var SearchInput = function SearchInput(_ref) {
7779
7832
  placeholder = _ref$placeholder === void 0 ? "Search for..." : _ref$placeholder,
7780
7833
  onChange = _ref.onChange,
7781
7834
  _ref$fit = _ref.fit,
7782
- fit = _ref$fit === void 0 ? true : _ref$fit;
7835
+ fit = _ref$fit === void 0 ? true : _ref$fit,
7836
+ sx = _ref.sx,
7837
+ searchSx = _ref.searchSx;
7783
7838
  return React__default.createElement(Paper, {
7784
7839
  component: "div",
7785
- className: "bg-light w-100 " + (fit && "h-100"),
7786
- sx: {
7840
+ className: (sx ? "" : "bg-light") + " w-100 " + (fit && "h-100"),
7841
+ sx: _extends({
7787
7842
  p: "2px 4px",
7788
7843
  display: "flex",
7789
7844
  alignItems: "center",
@@ -7795,11 +7850,11 @@ var SearchInput = function SearchInput(_ref) {
7795
7850
  return theme.palette.primary.main;
7796
7851
  }
7797
7852
  }
7798
- }
7853
+ }, sx)
7799
7854
  }, React__default.createElement(Box, {
7800
- sx: {
7855
+ sx: _extends({
7801
7856
  p: "10px"
7802
- },
7857
+ }, searchSx),
7803
7858
  "aria-label": "search"
7804
7859
  }, React__default.createElement(IoSearch, {
7805
7860
  size: 24,
@@ -10700,6 +10755,8 @@ var useLoginPhoneNumber = function useLoginPhoneNumber(props) {
10700
10755
  var _useState5 = useState(false),
10701
10756
  refreshReCaptcha = _useState5[0],
10702
10757
  setRefreshReCaptcha = _useState5[1];
10758
+ var passwordRef = useRef(null);
10759
+ var submitBtnRef = useRef(null);
10703
10760
  var dispatch = useDispatch();
10704
10761
  var handleClickShowPassword = function handleClickShowPassword() {
10705
10762
  setShowPassword(!showPassword);
@@ -10757,6 +10814,18 @@ var useLoginPhoneNumber = function useLoginPhoneNumber(props) {
10757
10814
  return Promise.reject(e);
10758
10815
  }
10759
10816
  };
10817
+ var handlePhoneKeyDown = function handlePhoneKeyDown(e) {
10818
+ if (e.key === 'Enter') {
10819
+ e.preventDefault();
10820
+ if (passwordRef.current) passwordRef.current.focus();
10821
+ }
10822
+ };
10823
+ var handlePasswordKeyDown = function handlePasswordKeyDown(e) {
10824
+ if (e.key === 'Enter' && tokenReCaptcha && password.trim() && phoneNumber.trim()) {
10825
+ e.preventDefault();
10826
+ if (submitBtnRef.current) submitBtnRef.current.click();
10827
+ }
10828
+ };
10760
10829
  return {
10761
10830
  t: t,
10762
10831
  showPassword: showPassword,
@@ -10764,6 +10833,10 @@ var useLoginPhoneNumber = function useLoginPhoneNumber(props) {
10764
10833
  tokenReCaptcha: tokenReCaptcha,
10765
10834
  phoneNumber: phoneNumber,
10766
10835
  password: password,
10836
+ passwordRef: passwordRef,
10837
+ submitBtnRef: submitBtnRef,
10838
+ handlePasswordKeyDown: handlePasswordKeyDown,
10839
+ handlePhoneKeyDown: handlePhoneKeyDown,
10767
10840
  handleChangePassword: handleChangePassword,
10768
10841
  handlePhoneNumberChange: handlePhoneNumberChange,
10769
10842
  handleLoginPhoneNumber: handleLoginPhoneNumber,
@@ -10780,6 +10853,10 @@ var LoginPhone = function LoginPhone(props) {
10780
10853
  tokenReCaptcha = _useLoginPhoneNumber.tokenReCaptcha,
10781
10854
  phoneNumber = _useLoginPhoneNumber.phoneNumber,
10782
10855
  password = _useLoginPhoneNumber.password,
10856
+ passwordRef = _useLoginPhoneNumber.passwordRef,
10857
+ submitBtnRef = _useLoginPhoneNumber.submitBtnRef,
10858
+ handlePasswordKeyDown = _useLoginPhoneNumber.handlePasswordKeyDown,
10859
+ handlePhoneKeyDown = _useLoginPhoneNumber.handlePhoneKeyDown,
10783
10860
  handleChangePassword = _useLoginPhoneNumber.handleChangePassword,
10784
10861
  handlePhoneNumberChange = _useLoginPhoneNumber.handlePhoneNumberChange,
10785
10862
  handleLoginPhoneNumber = _useLoginPhoneNumber.handleLoginPhoneNumber,
@@ -10813,8 +10890,10 @@ var LoginPhone = function LoginPhone(props) {
10813
10890
  id: "phone_new_xs",
10814
10891
  name: "phone_new_xs",
10815
10892
  value: phoneNumber,
10816
- onChange: handlePhoneNumberChange
10893
+ onChange: handlePhoneNumberChange,
10894
+ onKeyDown: handlePhoneKeyDown
10817
10895
  }), React__default.createElement(TextField, {
10896
+ inputRef: passwordRef,
10818
10897
  label: t("password"),
10819
10898
  type: showPassword ? "text" : "password",
10820
10899
  fullWidth: true,
@@ -10841,12 +10920,14 @@ var LoginPhone = function LoginPhone(props) {
10841
10920
  size: "small",
10842
10921
  value: password,
10843
10922
  onChange: handleChangePassword,
10923
+ onKeyDown: handlePasswordKeyDown,
10844
10924
  InputLabelProps: {
10845
10925
  style: {
10846
10926
  color: "#349056"
10847
10927
  }
10848
10928
  }
10849
10929
  }), React__default.createElement(Button, {
10930
+ ref: submitBtnRef,
10850
10931
  variant: "outlined",
10851
10932
  sx: {
10852
10933
  color: "#349056"
@@ -11230,13 +11311,6 @@ var useLogin$1 = function useLogin(_ref) {
11230
11311
  var isAcademy = !!(user !== null && user !== void 0 && user.academyDomain) || !!(user !== null && user !== void 0 && user.isLearningSpace);
11231
11312
  var needToRegister = isFirstLogin && isAcademy;
11232
11313
  var redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
11233
- console.log({
11234
- isFirstLogin: isFirstLogin,
11235
- isAcademy: isAcademy,
11236
- token: token,
11237
- user: user,
11238
- redirectUrl: redirectUrl
11239
- });
11240
11314
  handleSwitchOTP(false);
11241
11315
  redirectLoginUser(_extends({}, user, {
11242
11316
  isNotEnoughStatements: isFirstLogin
@@ -12635,7 +12709,7 @@ var ClassForm = function ClassForm(_ref) {
12635
12709
  };
12636
12710
  var handleDeleteWeeklyDays = function handleDeleteWeeklyDays(currentValue) {
12637
12711
  if (formikProp.values.courseWeeklyDays.length <= 1) return;
12638
- var courseWeeklyDays = _$5.cloneDeep(formikProp.values.courseWeeklyDays);
12712
+ var courseWeeklyDays = _$6.cloneDeep(formikProp.values.courseWeeklyDays);
12639
12713
  var newValues = courseWeeklyDays.filter(function (i) {
12640
12714
  var _i$startTime, _currentValue$startTi, _i$endTime, _currentValue$endTime;
12641
12715
  return i.dayOfWeek !== currentValue.dayOfWeek || ((_i$startTime = i.startTime) === null || _i$startTime === void 0 ? void 0 : _i$startTime.format("HH:mm:ss")) !== ((_currentValue$startTi = currentValue.startTime) === null || _currentValue$startTi === void 0 ? void 0 : _currentValue$startTi.format("HH:mm:ss")) || ((_i$endTime = i.endTime) === null || _i$endTime === void 0 ? void 0 : _i$endTime.format("HH:mm:ss")) !== ((_currentValue$endTime = currentValue.endTime) === null || _currentValue$endTime === void 0 ? void 0 : _currentValue$endTime.format("HH:mm:ss"));
@@ -12671,7 +12745,7 @@ var ClassForm = function ClassForm(_ref) {
12671
12745
  var handleChangeWeeklyDayTime = function handleChangeWeeklyDayTime(key, newValue, currentValue) {
12672
12746
  var _extends2;
12673
12747
  var time = newValue === null || newValue === void 0 ? void 0 : newValue.local();
12674
- var courseWeeklyDays = _$5.cloneDeep(formikProp.values.courseWeeklyDays);
12748
+ var courseWeeklyDays = _$6.cloneDeep(formikProp.values.courseWeeklyDays);
12675
12749
  var currentIndex = courseWeeklyDays.findIndex(function (i) {
12676
12750
  var _i$startTime2, _currentValue$startTi2, _i$endTime2, _currentValue$endTime2;
12677
12751
  return i.dayOfWeek === currentValue.dayOfWeek && ((_i$startTime2 = i.startTime) === null || _i$startTime2 === void 0 ? void 0 : _i$startTime2.format("HH:mm:ss")) === ((_currentValue$startTi2 = currentValue.startTime) === null || _currentValue$startTi2 === void 0 ? void 0 : _currentValue$startTi2.format("HH:mm:ss")) && ((_i$endTime2 = i.endTime) === null || _i$endTime2 === void 0 ? void 0 : _i$endTime2.format("HH:mm:ss")) === ((_currentValue$endTime2 = currentValue.endTime) === null || _currentValue$endTime2 === void 0 ? void 0 : _currentValue$endTime2.format("HH:mm:ss"));
@@ -12706,11 +12780,11 @@ var ClassForm = function ClassForm(_ref) {
12706
12780
  }, [JSON.stringify(data)]);
12707
12781
  var minDate = useMemo(function () {
12708
12782
  if (!formikProp.values.startDate) return undefined;
12709
- return _$5.cloneDeep(formikProp.values.startDate).add(1, "days");
12783
+ return _$6.cloneDeep(formikProp.values.startDate).add(1, "days");
12710
12784
  }, [formikProp.values.startDate]);
12711
12785
  var maxDate = useMemo(function () {
12712
12786
  if (!formikProp.values.endDate) return undefined;
12713
- return _$5.cloneDeep(formikProp.values.endDate).add(1, "days");
12787
+ return _$6.cloneDeep(formikProp.values.endDate).add(1, "days");
12714
12788
  }, [formikProp.values.endDate]);
12715
12789
  var WeeklyDayErrors = formikProp.touched.courseWeeklyDays && formikProp.errors.courseWeeklyDays && React__default.createElement("div", {
12716
12790
  className: "mt-1"
@@ -12727,7 +12801,7 @@ var ClassForm = function ClassForm(_ref) {
12727
12801
  });
12728
12802
  }, [JSON.stringify(formikProp.values.courseWeeklyDays)]);
12729
12803
  var courseWeeklyDays = useMemo(function () {
12730
- return _$5.sortBy(formikProp.values.courseWeeklyDays, ["dayOfWeek"]);
12804
+ return _$6.sortBy(formikProp.values.courseWeeklyDays, ["dayOfWeek"]);
12731
12805
  }, [JSON.stringify(formikProp.values.courseWeeklyDays)]);
12732
12806
  return React__default.createElement("div", {
12733
12807
  className: "d-flex flex-column"
@@ -12878,7 +12952,7 @@ var ClassForm = function ClassForm(_ref) {
12878
12952
  value: v.startTime,
12879
12953
  format: "HH:mm",
12880
12954
  open: open === index + "-startTime",
12881
- maxTime: v.endTime ? _$5.cloneDeep(v.endTime).add(-1, "minutes") : undefined,
12955
+ maxTime: v.endTime ? _$6.cloneDeep(v.endTime).add(-1, "minutes") : undefined,
12882
12956
  onAccept: function onAccept(newValue) {
12883
12957
  return handleChangeWeeklyDayTime("startTime", newValue, v);
12884
12958
  },
@@ -12908,7 +12982,7 @@ var ClassForm = function ClassForm(_ref) {
12908
12982
  components: ["TimePicker"]
12909
12983
  }, React__default.createElement(TimePicker, {
12910
12984
  value: v.endTime,
12911
- minTime: v.startTime ? (_$cloneDeep = _$5.cloneDeep(v.startTime)) === null || _$cloneDeep === void 0 ? void 0 : _$cloneDeep.add(1, "minutes") : undefined,
12985
+ minTime: v.startTime ? (_$cloneDeep = _$6.cloneDeep(v.startTime)) === null || _$cloneDeep === void 0 ? void 0 : _$cloneDeep.add(1, "minutes") : undefined,
12912
12986
  format: "HH:mm",
12913
12987
  open: open === index + "-endTime",
12914
12988
  onAccept: function onAccept(newValue) {
@@ -13533,7 +13607,7 @@ var useStudentClassList = function useStudentClassList(courseId) {
13533
13607
  currentPage: 1
13534
13608
  }));
13535
13609
  };
13536
- var debounceSearch = _$5.debounce(function () {
13610
+ var debounceSearch = _$6.debounce(function () {
13537
13611
  setFilter(_extends({}, filter, {
13538
13612
  currentPage: 1
13539
13613
  }));
@@ -13669,7 +13743,7 @@ var useTeacherClassList = function useTeacherClassList(courseId) {
13669
13743
  currentPage: 1
13670
13744
  }));
13671
13745
  };
13672
- var debounceSearch = _$5.debounce(function () {
13746
+ var debounceSearch = _$6.debounce(function () {
13673
13747
  setFilter(_extends({}, filter, {
13674
13748
  currentPage: 1
13675
13749
  }));
@@ -13977,7 +14051,7 @@ var useClassDetail = function useClassDetail(_ref) {
13977
14051
  });
13978
14052
  }, [JSON.stringify(course)]);
13979
14053
  var convertToRequestBody = function convertToRequestBody(request) {
13980
- var localStartDate = _$5.cloneDeep(request.startDate);
14054
+ var localStartDate = _$6.cloneDeep(request.startDate);
13981
14055
  return _extends({}, request, {
13982
14056
  startDate: request.startDate.utc().format(DATE_TIME_FORMAT),
13983
14057
  endDate: request.endDate.utc().format(DATE_TIME_FORMAT),
@@ -14226,13 +14300,13 @@ var useClassDetail = function useClassDetail(_ref) {
14226
14300
  });
14227
14301
  if (event.target.checked) {
14228
14302
  setSelected(function (prev) {
14229
- return _$5.uniq([].concat(prev, newSelected));
14303
+ return _$6.uniq([].concat(prev, newSelected));
14230
14304
  });
14231
14305
  return;
14232
14306
  }
14233
- setSelected(_$5.difference(selected, newSelected));
14307
+ setSelected(_$6.difference(selected, newSelected));
14234
14308
  };
14235
- var debounceSearch = _$5.debounce(function () {
14309
+ var debounceSearch = _$6.debounce(function () {
14236
14310
  setFilter(_extends({}, filter, {
14237
14311
  currentPage: 1
14238
14312
  }));
@@ -14250,7 +14324,7 @@ var useClassDetail = function useClassDetail(_ref) {
14250
14324
  }) : userList.map(function (n) {
14251
14325
  return n.teacherId;
14252
14326
  });
14253
- var checkLength = _$5.intersection(selected, newSelected).length;
14327
+ var checkLength = _$6.intersection(selected, newSelected).length;
14254
14328
  return checkLength === userLength;
14255
14329
  };
14256
14330
  var handleClear = function handleClear() {
@@ -14285,7 +14359,7 @@ var useClassDetail = function useClassDetail(_ref) {
14285
14359
  }));
14286
14360
  setSelected([]);
14287
14361
  };
14288
- var debounceSort = _$5.debounce(handleSort, 300);
14362
+ var debounceSort = _$6.debounce(handleSort, 300);
14289
14363
  var handleChangePage = function handleChangePage(_, page) {
14290
14364
  setFilter(_extends({}, filter, {
14291
14365
  currentPage: page
@@ -14363,8 +14437,8 @@ var LessonFormBody = function LessonFormBody(_ref) {
14363
14437
  useEffect(function () {
14364
14438
  if (open && data) formikProp.setValues(data);else formikProp.setValues(DEFAULT_LESSON_REQUEST);
14365
14439
  }, [open, JSON.stringify(data)]);
14366
- var maxTime = formikProp.values.endTime ? _$5.cloneDeep(formikProp.values.endTime).add(-1, "minutes") : undefined;
14367
- var minTime = formikProp.values.startTime ? _$5.cloneDeep(formikProp.values.startTime).add(1, "minutes") : undefined;
14440
+ var maxTime = formikProp.values.endTime ? _$6.cloneDeep(formikProp.values.endTime).add(-1, "minutes") : undefined;
14441
+ var minTime = formikProp.values.startTime ? _$6.cloneDeep(formikProp.values.startTime).add(1, "minutes") : undefined;
14368
14442
  return React__default.createElement(Fragment$1, null, React__default.createElement(DialogContent, {
14369
14443
  sx: {
14370
14444
  overflowY: "unset"
@@ -14944,7 +15018,7 @@ var useClassList = function useClassList(history, classCreateUrl, classUpdateUrl
14944
15018
  currentPage: 1
14945
15019
  }));
14946
15020
  };
14947
- var debounceSearch = _$5.debounce(function () {
15021
+ var debounceSearch = _$6.debounce(function () {
14948
15022
  setClassFilter(_extends({}, classFilter, {
14949
15023
  currentPage: 1
14950
15024
  }));
@@ -17387,13 +17461,6 @@ var PrintState$1;
17387
17461
  PrintState[PrintState["Printed"] = 3] = "Printed";
17388
17462
  })(PrintState$1 || (PrintState$1 = {}));
17389
17463
 
17390
- var NoteSortColumn;
17391
- (function (NoteSortColumn) {
17392
- NoteSortColumn["Content"] = "Content";
17393
- NoteSortColumn["CreatedAt"] = "CreatedAt";
17394
- NoteSortColumn["Question"] = "Question";
17395
- })(NoteSortColumn || (NoteSortColumn = {}));
17396
-
17397
17464
  var DEFAULT_NOTE_FILTER = {
17398
17465
  sortColumnDirection: OrderType.DESC,
17399
17466
  sortColumnName: NoteSortColumn.CreatedAt,
@@ -19629,6 +19696,7 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
19629
19696
  var open = _ref.open,
19630
19697
  studentName = _ref.studentName,
19631
19698
  selectedNote = _ref.selectedNote,
19699
+ tip = _ref.tip,
19632
19700
  onClose = _ref.onClose,
19633
19701
  onSaveNote = _ref.onSaveNote;
19634
19702
  var _useTranslation = useTranslation(),
@@ -19672,7 +19740,7 @@ var ClassNoteDialog = function ClassNoteDialog(_ref) {
19672
19740
  fontSize: "16px",
19673
19741
  lineHeight: "19.09px",
19674
19742
  color: "#202B37"
19675
- }, t(selectedNote ? "edit_student_note" : "student_note_taking"))), React__default.createElement(IconButton$1, {
19743
+ }, t(selectedNote ? "edit_student_note" : "student_note_taking"), tip)), React__default.createElement(IconButton$1, {
19676
19744
  "aria-label": "close",
19677
19745
  sx: {
19678
19746
  position: "absolute",
@@ -20044,7 +20112,7 @@ var useNotes = function useNotes(setFilter, filter) {
20044
20112
  var items = (data === null || data === void 0 ? void 0 : data.items) || [];
20045
20113
  var newNotes = items;
20046
20114
  if (filter !== null && filter !== void 0 && filter.currentPage && (filter === null || filter === void 0 ? void 0 : filter.currentPage) > 1) {
20047
- newNotes = [].concat(_$5.uniqBy([].concat(notes, items), "id"));
20115
+ newNotes = [].concat(_$6.uniqBy([].concat(notes, items), "id"));
20048
20116
  }
20049
20117
  setNotes(newNotes);
20050
20118
  });
@@ -20067,7 +20135,7 @@ var useNotes = function useNotes(setFilter, filter) {
20067
20135
  });
20068
20136
  }, [filter === null || filter === void 0 ? void 0 : filter.currentPage, totalPages]);
20069
20137
  var handleNoteAdded = function handleNoteAdded(note) {
20070
- var newNotes = [].concat(_$5.uniqBy([note].concat(notes), "id"));
20138
+ var newNotes = [].concat(_$6.uniqBy([note].concat(notes), "id"));
20071
20139
  setNotes(newNotes);
20072
20140
  };
20073
20141
  var handleNoteUpdated = function handleNoteUpdated(note) {
@@ -20098,6 +20166,7 @@ var useNotes = function useNotes(setFilter, filter) {
20098
20166
  };
20099
20167
 
20100
20168
  var NoteItem = function NoteItem(_ref) {
20169
+ var _user$roles;
20101
20170
  var data = _ref.data,
20102
20171
  openTooltip = _ref.openTooltip,
20103
20172
  actions = _ref.actions,
@@ -20108,6 +20177,11 @@ var NoteItem = function NoteItem(_ref) {
20108
20177
  onLoad = _ref.onLoad;
20109
20178
  var _useTranslation = useTranslation(),
20110
20179
  t = _useTranslation.t;
20180
+ var user = useSelector(function (state) {
20181
+ var _state$common;
20182
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
20183
+ });
20184
+ var isAdmin = !!user && (user === null || user === void 0 ? void 0 : (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(Role.Admin));
20111
20185
  var handleMoreClick = function handleMoreClick(e) {
20112
20186
  e.preventDefault();
20113
20187
  e.stopPropagation();
@@ -20130,7 +20204,7 @@ var NoteItem = function NoteItem(_ref) {
20130
20204
  gap: 1
20131
20205
  }, 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", {
20132
20206
  number: (data.questionOrder || 0) + 1
20133
- }) : "" + 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({}, NoteItemStyles.contentText), data.content)), React__default.createElement(Box, null, React__default.createElement(ClickAwayListener, {
20207
+ }) : "" + 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({}, NoteItemStyles.contentText), data.content)), React__default.createElement(Box, null, (isAdmin || data.isOwned) && React__default.createElement(ClickAwayListener, {
20134
20208
  onClickAway: onClose
20135
20209
  }, React__default.createElement(Box, null, React__default.createElement(CustomTooltip, {
20136
20210
  onClose: onClose,
@@ -20528,7 +20602,7 @@ var useExamResultData = function useExamResultData(props) {
20528
20602
  topAnswerOrder: i.topAnswerOrder == null ? 0 : i.topAnswerOrder
20529
20603
  });
20530
20604
  });
20531
- var sortedMySeriesQuestionData = _$5.sortBy(questionsData.filter(function (i) {
20605
+ var sortedMySeriesQuestionData = _$6.sortBy(questionsData.filter(function (i) {
20532
20606
  return i.answerOrder !== 0;
20533
20607
  }), ["answerOrder", "questionOrder"]);
20534
20608
  var mySeriesData = [null].concat(sortedMySeriesQuestionData.map(function (item) {
@@ -20538,7 +20612,7 @@ var useExamResultData = function useExamResultData(props) {
20538
20612
  }).map(function () {
20539
20613
  return null;
20540
20614
  }), [null]);
20541
- var sortedTopSeriesQuestionData = _$5.sortBy(questionsData.filter(function (i) {
20615
+ var sortedTopSeriesQuestionData = _$6.sortBy(questionsData.filter(function (i) {
20542
20616
  return i.topAnswerOrder !== 0;
20543
20617
  }), ["topAnswerOrder", "questionOrder"]);
20544
20618
  var topSeriesData = [null].concat(sortedTopSeriesQuestionData.map(function (item) {
@@ -22794,7 +22868,7 @@ var useUserList = function useUserList(role) {
22794
22868
  currentPage: 1
22795
22869
  }));
22796
22870
  };
22797
- var debounceSort = _$5.debounce(handleSort, 300);
22871
+ var debounceSort = _$6.debounce(handleSort, 300);
22798
22872
  var getUserById = function getUserById(id) {
22799
22873
  try {
22800
22874
  var _temp8 = function _temp8() {
@@ -22952,7 +23026,7 @@ var useUserList = function useUserList(role) {
22952
23026
  return Promise.reject(e);
22953
23027
  }
22954
23028
  };
22955
- var debounceSearch = _$5.debounce(function () {
23029
+ var debounceSearch = _$6.debounce(function () {
22956
23030
  setFilter(_extends({}, filter, {
22957
23031
  currentPage: 1
22958
23032
  }));
@@ -24208,8 +24282,8 @@ var useExamDetailView = function useExamDetailView(props) {
24208
24282
  var handleAddArticle = function handleAddArticle() {
24209
24283
  var _$maxBy, _$maxBy2;
24210
24284
  if (!exam) return;
24211
- var maxArticle = ((_$maxBy = _$5.maxBy(exam.questions, "article")) === null || _$maxBy === void 0 ? void 0 : _$maxBy.article) || 0;
24212
- var maxOrder = ((_$maxBy2 = _$5.maxBy(exam.questions, "questionOrder")) === null || _$maxBy2 === void 0 ? void 0 : _$maxBy2.questionOrder) || 0;
24285
+ var maxArticle = ((_$maxBy = _$6.maxBy(exam.questions, "article")) === null || _$maxBy === void 0 ? void 0 : _$maxBy.article) || 0;
24286
+ var maxOrder = ((_$maxBy2 = _$6.maxBy(exam.questions, "questionOrder")) === null || _$maxBy2 === void 0 ? void 0 : _$maxBy2.questionOrder) || 0;
24213
24287
  onChangeExam(_extends({}, exam, {
24214
24288
  questions: [].concat(exam.questions, [{
24215
24289
  questionAnswerType: QuestionAnswerType.SingleChoice,
@@ -24257,7 +24331,7 @@ var useExamDetailView = function useExamDetailView(props) {
24257
24331
  var examGroupByArticle = useMemo(function () {
24258
24332
  if (!exam) return [];
24259
24333
  var articles = [];
24260
- var groupedArticle = _$5.groupBy(exam.questions, "article");
24334
+ var groupedArticle = _$6.groupBy(exam.questions, "article");
24261
24335
  for (var key in groupedArticle) {
24262
24336
  if (Object.prototype.hasOwnProperty.call(groupedArticle, key)) {
24263
24337
  var _questions$find, _$maxBy3;
@@ -24267,13 +24341,13 @@ var useExamDetailView = function useExamDetailView(props) {
24267
24341
  categoryId: (_questions$find = questions.find(function (i) {
24268
24342
  return !!i.categoryId;
24269
24343
  })) === null || _questions$find === void 0 ? void 0 : _questions$find.categoryId,
24270
- answerCount: ((_$maxBy3 = _$5.maxBy(questions, "numberOfAnswers")) === null || _$maxBy3 === void 0 ? void 0 : _$maxBy3.numberOfAnswers) || DEFAULT_ANSWER_COUNT,
24344
+ answerCount: ((_$maxBy3 = _$6.maxBy(questions, "numberOfAnswers")) === null || _$maxBy3 === void 0 ? void 0 : _$maxBy3.numberOfAnswers) || DEFAULT_ANSWER_COUNT,
24271
24345
  questionCount: questions.length,
24272
24346
  questions: questions
24273
24347
  });
24274
24348
  }
24275
24349
  }
24276
- return _$5.sortBy(articles, "article");
24350
+ return _$6.sortBy(articles, "article");
24277
24351
  }, [JSON.stringify(exam)]);
24278
24352
  var durationOptions = useMemo(function () {
24279
24353
  var options = DURATION_OPTIONS.map(function (i) {
@@ -26694,11 +26768,11 @@ var useTextbookShare = function useTextbookShare(props) {
26694
26768
  });
26695
26769
  if (event.target.checked) {
26696
26770
  setSelectedShare(function (prev) {
26697
- return _$5.uniq([].concat(prev, newSelected));
26771
+ return _$6.uniq([].concat(prev, newSelected));
26698
26772
  });
26699
26773
  return;
26700
26774
  }
26701
- setSelectedShare(_$5.difference(selectedShare, newSelected));
26775
+ setSelectedShare(_$6.difference(selectedShare, newSelected));
26702
26776
  };
26703
26777
  var isCheckAllShare = function isCheckAllShare(userLength) {
26704
26778
  var newSelected = isUpdate ? shared.map(function (n) {
@@ -26706,7 +26780,7 @@ var useTextbookShare = function useTextbookShare(props) {
26706
26780
  }) : notShared.map(function (n) {
26707
26781
  return n.id;
26708
26782
  });
26709
- var checkLength = _$5.intersection(selectedShare, newSelected).length;
26783
+ var checkLength = _$6.intersection(selectedShare, newSelected).length;
26710
26784
  return checkLength === userLength;
26711
26785
  };
26712
26786
  var handleClickCheckboxShare = function handleClickCheckboxShare(id) {
@@ -26965,7 +27039,7 @@ var TextbookList = function TextbookList(props) {
26965
27039
  handleUpdateSharedTextbook = _useTextbookShare.handleUpdateSharedTextbook,
26966
27040
  currentModel = _useTextbookShare.currentModel;
26967
27041
  var textbookHeaders = useMemo(function () {
26968
- var headers = _$5.clone(TEXTBOOK_HEADERS);
27042
+ var headers = _$6.clone(TEXTBOOK_HEADERS);
26969
27043
  if (isTeacher && isTeacherSite) headers.splice(5, 0, {
26970
27044
  title: "teacher_personal_textbook"
26971
27045
  });
@@ -27560,7 +27634,7 @@ var useNotificationList = function useNotificationList(_ref) {
27560
27634
  currentPage: 1
27561
27635
  }));
27562
27636
  };
27563
- var debounceSearch = _$5.debounce(function () {
27637
+ var debounceSearch = _$6.debounce(function () {
27564
27638
  setNotificationFilter(_extends({}, notificationFilter, {
27565
27639
  currentPage: 1
27566
27640
  }));
@@ -27986,31 +28060,6 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
27986
28060
  };
27987
28061
  };
27988
28062
 
27989
- var SchoolType$1;
27990
- (function (SchoolType) {
27991
- SchoolType[SchoolType["Default"] = 0] = "Default";
27992
- SchoolType[SchoolType["Elementary"] = 1] = "Elementary";
27993
- SchoolType[SchoolType["Middle"] = 2] = "Middle";
27994
- SchoolType[SchoolType["High"] = 3] = "High";
27995
- })(SchoolType$1 || (SchoolType$1 = {}));
27996
- var HighSchoolGrade;
27997
- (function (HighSchoolGrade) {
27998
- HighSchoolGrade[HighSchoolGrade["Default"] = 0] = "Default";
27999
- HighSchoolGrade[HighSchoolGrade["AdvancedMathematics1"] = 1] = "AdvancedMathematics1";
28000
- HighSchoolGrade[HighSchoolGrade["AdvancedMathematics2"] = 2] = "AdvancedMathematics2";
28001
- HighSchoolGrade[HighSchoolGrade["Algebra"] = 3] = "Algebra";
28002
- HighSchoolGrade[HighSchoolGrade["Calculus1"] = 4] = "Calculus1";
28003
- HighSchoolGrade[HighSchoolGrade["Calculus2"] = 5] = "Calculus2";
28004
- HighSchoolGrade[HighSchoolGrade["ProbabilityAndStatistics"] = 6] = "ProbabilityAndStatistics";
28005
- HighSchoolGrade[HighSchoolGrade["Geometry"] = 7] = "Geometry";
28006
- })(HighSchoolGrade || (HighSchoolGrade = {}));
28007
- var TextbookEditorType;
28008
- (function (TextbookEditorType) {
28009
- TextbookEditorType[TextbookEditorType["Default"] = 0] = "Default";
28010
- TextbookEditorType[TextbookEditorType["Korea"] = 1] = "Korea";
28011
- TextbookEditorType[TextbookEditorType["Math"] = 2] = "Math";
28012
- })(TextbookEditorType || (TextbookEditorType = {}));
28013
-
28014
28063
  var TextbookSortBy$1;
28015
28064
  (function (TextbookSortBy) {
28016
28065
  TextbookSortBy["Name"] = "Name";
@@ -28041,16 +28090,16 @@ var TextbookState;
28041
28090
 
28042
28091
  var SCHOOL_OPTIONS = [{
28043
28092
  label: "all",
28044
- value: SchoolType$1.Default
28093
+ value: SchoolType.Default
28045
28094
  }, {
28046
28095
  label: "elementary_school",
28047
- value: SchoolType$1.Elementary
28096
+ value: SchoolType.Elementary
28048
28097
  }, {
28049
28098
  label: "middle_school",
28050
- value: SchoolType$1.Middle
28099
+ value: SchoolType.Middle
28051
28100
  }, {
28052
28101
  label: "high_school",
28053
- value: SchoolType$1.High
28102
+ value: SchoolType.High
28054
28103
  }];
28055
28104
  var SEMESTER_OPTIONS = Array.from({
28056
28105
  length: 3
@@ -28163,6 +28212,12 @@ var preparedTextbookSchema = function preparedTextbookSchema(t) {
28163
28212
  }),
28164
28213
  name: string().required(t("name_required")),
28165
28214
  questionGroups: array().of(object().shape({
28215
+ pageFrom: number().notRequired().integer().notRequired().min(1, t("min_is_1")),
28216
+ pageTo: number().notRequired().integer().typeError(t("must_be_number")).test("is-greater", t("page_to_must_be_greater_than_or_equal_to_page_from"), function (value) {
28217
+ var _this$parent2 = this === null || this === void 0 ? void 0 : this.parent,
28218
+ pageFrom = _this$parent2.pageFrom;
28219
+ return !value || !pageFrom || value >= pageFrom;
28220
+ }),
28166
28221
  articles: array().of(object().shape({
28167
28222
  categories: array().of(number()).min(1, t("category_required")),
28168
28223
  title: string().notRequired(),
@@ -28184,12 +28239,18 @@ var preparedTextbookSchema = function preparedTextbookSchema(t) {
28184
28239
  subChapters: array().of(object().shape({
28185
28240
  pageFrom: number().required(t("page_from_required")).integer().typeError(t("must_be_number")).min(1, t("min_is_1")),
28186
28241
  pageTo: number().required(t("page_to_required")).integer().typeError(t("must_be_number")).test("is-greater", t("page_to_must_be_greater_than_or_equal_to_page_from"), function (value) {
28187
- var _this$parent2 = this === null || this === void 0 ? void 0 : this.parent,
28188
- pageFrom = _this$parent2.pageFrom;
28242
+ var _this$parent3 = this === null || this === void 0 ? void 0 : this.parent,
28243
+ pageFrom = _this$parent3.pageFrom;
28189
28244
  return value >= pageFrom;
28190
28245
  }),
28191
28246
  name: string().required(t("name_required")),
28192
28247
  questionGroups: array().of(object().shape({
28248
+ pageFrom: number().notRequired().integer().notRequired().min(1, t("min_is_1")),
28249
+ pageTo: number().notRequired().integer().typeError(t("must_be_number")).test("is-greater", t("page_to_must_be_greater_than_or_equal_to_page_from"), function (value) {
28250
+ var _this$parent4 = this === null || this === void 0 ? void 0 : this.parent,
28251
+ pageFrom = _this$parent4.pageFrom;
28252
+ return !value || !pageFrom || value >= pageFrom;
28253
+ }),
28193
28254
  articles: array().of(object().shape({
28194
28255
  categories: array().of(number()).min(1, t("category_required")),
28195
28256
  title: string().notRequired(),
@@ -28277,7 +28338,7 @@ var CustomTextbookTab = function CustomTextbookTab(props) {
28277
28338
  };
28278
28339
 
28279
28340
  var _reduceToMathArticles = function reduceToMathArticles(textbook, isMath) {
28280
- var values = isMath !== undefined ? _$5.cloneDeep(textbook) : textbook;
28341
+ var values = isMath !== undefined ? _$6.cloneDeep(textbook) : textbook;
28281
28342
  if (isMath !== undefined) values.type = isMath;
28282
28343
  for (var key in values) {
28283
28344
  if (values.hasOwnProperty(key)) {
@@ -28292,7 +28353,7 @@ var _reduceToMathArticles = function reduceToMathArticles(textbook, isMath) {
28292
28353
  return values;
28293
28354
  };
28294
28355
  var _resetAllCategoriesAndQuestionTypesBySubject = function resetAllCategoriesAndQuestionTypesBySubject(textbook, subject) {
28295
- var values = subject ? _$5.cloneDeep(textbook) : textbook;
28356
+ var values = subject ? _$6.cloneDeep(textbook) : textbook;
28296
28357
  if (subject) {
28297
28358
  values.subjectId = subject === null || subject === void 0 ? void 0 : subject.value;
28298
28359
  values.subject = subject;
@@ -28354,6 +28415,8 @@ var convertResponseToRequest = function convertResponseToRequest(selectedTextboo
28354
28415
  return {
28355
28416
  id: g.id,
28356
28417
  chapterId: c.id,
28418
+ pageFrom: g.pageFrom,
28419
+ pageTo: g.pageTo,
28357
28420
  questions: g.questions.map(function (q) {
28358
28421
  var _q$questionType;
28359
28422
  return _extends({}, q, {
@@ -28397,6 +28460,8 @@ var convertResponseToRequest = function convertResponseToRequest(selectedTextboo
28397
28460
  return {
28398
28461
  id: g.id,
28399
28462
  chapterId: c.id,
28463
+ pageFrom: g.pageFrom,
28464
+ pageTo: g.pageTo,
28400
28465
  questions: g.questions.map(function (q) {
28401
28466
  var _q$questionType2;
28402
28467
  return _extends({}, q, {
@@ -28440,9 +28505,21 @@ var handleKeyDown = function handleKeyDown(e) {
28440
28505
  e.preventDefault();
28441
28506
  }
28442
28507
  };
28508
+ var isSequentialQuestionGroups = function isSequentialQuestionGroups(questionGroups) {
28509
+ if (!questionGroups.length) return true;
28510
+ if (questionGroups[0].questions[0].questionOrder !== 0) return false;
28511
+ for (var index = 1; index < questionGroups.length; index++) {
28512
+ var questionGroup = questionGroups[index];
28513
+ var prevQuestionGroup = questionGroups[index - 1];
28514
+ if (prevQuestionGroup.questions[prevQuestionGroup.questions.length - 1].questionOrder !== questionGroup.questions[0].questionOrder - 1) return false;
28515
+ }
28516
+ return true;
28517
+ };
28443
28518
 
28519
+ var _ = _$6;
28444
28520
  var ArticleBlock = function ArticleBlock(_ref) {
28445
- var expandedIndex = _ref.expandedIndex,
28521
+ var errors = _ref.errors,
28522
+ expandedIndex = _ref.expandedIndex,
28446
28523
  data = _ref.data,
28447
28524
  categories = _ref.categories,
28448
28525
  path = _ref.path,
@@ -28476,13 +28553,22 @@ var ArticleBlock = function ArticleBlock(_ref) {
28476
28553
  onOpenCategoryMenu(path + ".categories[0]");
28477
28554
  };
28478
28555
  var handleChangeCategory = function handleChangeCategory(val) {
28479
- setFieldValue(path + ".categoryOptions", [val]);
28480
- setFieldValue(path + ".categories", [val === null || val === void 0 ? void 0 : val.value]);
28556
+ setFieldValue(path + ".categoryOptions", val !== null && val !== void 0 && val.value ? [val] : []);
28557
+ setFieldValue(path + ".categories", val !== null && val !== void 0 && val.value ? [val.value] : []);
28481
28558
  };
28482
28559
  var handleChangeSubCategory = function handleChangeSubCategory(val) {
28483
- setFieldValue(path + ".categoryOptions[1]", val);
28484
- setFieldValue(path + ".categories[1]", val === null || val === void 0 ? void 0 : val.value);
28560
+ if (!(val !== null && val !== void 0 && val.value)) {
28561
+ var _data$categories, _data$categoryOptions;
28562
+ var category = data === null || data === void 0 ? void 0 : (_data$categories = data.categories) === null || _data$categories === void 0 ? void 0 : _data$categories[0];
28563
+ var categoryOption = data === null || data === void 0 ? void 0 : (_data$categoryOptions = data.categoryOptions) === null || _data$categoryOptions === void 0 ? void 0 : _data$categoryOptions[0];
28564
+ setFieldValue(path + ".categories", category ? [category] : []);
28565
+ setFieldValue(path + ".categoryOptions", categoryOption ? [categoryOption] : []);
28566
+ } else {
28567
+ setFieldValue(path + ".categories[1]", val.value);
28568
+ setFieldValue(path + ".categoryOptions[1]", val);
28569
+ }
28485
28570
  };
28571
+ var categoryError = _.get(errors, path + ".categories");
28486
28572
  return React__default.createElement(Stack, {
28487
28573
  direction: "row",
28488
28574
  alignItems: "center",
@@ -28534,7 +28620,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
28534
28620
  }, t("category")), React__default.createElement(Field, {
28535
28621
  name: path + ".categories[0]",
28536
28622
  render: function render() {
28537
- var _data$categoryOptions;
28623
+ var _data$categoryOptions2;
28538
28624
  return React__default.createElement(ArticleCategorySelector, {
28539
28625
  style: {
28540
28626
  "div:has(&)": {
@@ -28542,7 +28628,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
28542
28628
  }
28543
28629
  },
28544
28630
  id: "category",
28545
- optionValue: (_data$categoryOptions = data.categoryOptions) === null || _data$categoryOptions === void 0 ? void 0 : _data$categoryOptions[0],
28631
+ optionValue: (_data$categoryOptions2 = data.categoryOptions) === null || _data$categoryOptions2 === void 0 ? void 0 : _data$categoryOptions2[0],
28546
28632
  options: categories,
28547
28633
  rest: {
28548
28634
  isLoading: optionKey === path + ".categories[0]" ? isLoadingCategories : false,
@@ -28554,7 +28640,13 @@ var ArticleBlock = function ArticleBlock(_ref) {
28554
28640
  placeholder: t("select_category")
28555
28641
  });
28556
28642
  }
28557
- }))), React__default.createElement(Grid, {
28643
+ }), !!categoryError && React__default.createElement(Typography, {
28644
+ fontWeight: 500,
28645
+ fontSize: "10px",
28646
+ lineHeight: "11.93px",
28647
+ mt: 1,
28648
+ color: !categoryError ? "#97A1AF" : "#F34B4B"
28649
+ }, categoryError))), React__default.createElement(Grid, {
28558
28650
  item: true,
28559
28651
  xs: 12 / 5
28560
28652
  }, React__default.createElement(FormGroup, {
@@ -28571,7 +28663,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
28571
28663
  }, t("sub_category")), React__default.createElement(Field, {
28572
28664
  name: path + ".categories[1]",
28573
28665
  render: function render() {
28574
- var _data$categoryOptions2;
28666
+ var _data$categoryOptions3;
28575
28667
  return React__default.createElement(ArticleCategorySelector, {
28576
28668
  style: {
28577
28669
  "div:has(&)": {
@@ -28579,7 +28671,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
28579
28671
  }
28580
28672
  },
28581
28673
  id: "sub_category",
28582
- optionValue: (_data$categoryOptions2 = data.categoryOptions) === null || _data$categoryOptions2 === void 0 ? void 0 : _data$categoryOptions2[1],
28674
+ optionValue: (_data$categoryOptions3 = data.categoryOptions) === null || _data$categoryOptions3 === void 0 ? void 0 : _data$categoryOptions3[1],
28583
28675
  options: categories,
28584
28676
  rest: {
28585
28677
  isClearable: true,
@@ -28684,7 +28776,9 @@ var isEqual = function isEqual(prev, next) {
28684
28776
  var nextIsLoadingCategories = isNextMatched ? next.isLoadingCategories : undefined;
28685
28777
  var prevCategories = isPrevMatched ? prev.categories : undefined;
28686
28778
  var nextCategories = isNextMatched ? next.categories : undefined;
28687
- return prevOptionKey === nextOptionKey && prevIsLoadingCategories === nextIsLoadingCategories && JSON.stringify(prev.data) === JSON.stringify(next.data) && JSON.stringify(prevCategories) === JSON.stringify(nextCategories) && prev.path === next.path && prev.expandedIndex == next.expandedIndex && prev.disabled === next.disabled && prev.onOpenCategoryMenu == next.onOpenCategoryMenu && prev.onOpenSubCategoryMenu == next.onOpenSubCategoryMenu;
28779
+ var prevCategoryError = _.get(prev.errors, prev.path + ".categories");
28780
+ var nextCategoryError = _.get(next.errors, next.path + ".categories");
28781
+ return prevOptionKey === nextOptionKey && prevIsLoadingCategories === nextIsLoadingCategories && JSON.stringify(prev.data) === JSON.stringify(next.data) && JSON.stringify(prevCategories) === JSON.stringify(nextCategories) && prev.path === next.path && prev.expandedIndex == next.expandedIndex && prev.disabled === next.disabled && prev.onOpenCategoryMenu == next.onOpenCategoryMenu && prev.onOpenSubCategoryMenu == next.onOpenSubCategoryMenu && prevCategoryError === nextCategoryError;
28688
28782
  };
28689
28783
  var ArticleBlock$1 = memo(ArticleBlock, isEqual);
28690
28784
 
@@ -28970,10 +29064,10 @@ var isEqual$1 = function isEqual(prev, next) {
28970
29064
  };
28971
29065
  var QuestionBlock$1 = memo(QuestionBlock, isEqual$1);
28972
29066
 
28973
- var _excluded$g = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
28974
- var _ = _$5;
29067
+ var _excluded$g = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onQuestioStartOrderChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
29068
+ var _$1 = _$6;
28975
29069
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28976
- var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate;
29070
+ var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate, _questions$2;
28977
29071
  var data = _ref.data,
28978
29072
  path = _ref.path,
28979
29073
  isMath = _ref.isMath,
@@ -28984,6 +29078,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28984
29078
  categories = _ref.categories,
28985
29079
  questionTypes = _ref.questionTypes,
28986
29080
  disabled = _ref.disabled,
29081
+ onQuestioStartOrderChange = _ref.onQuestioStartOrderChange,
28987
29082
  onDelete = _ref.onDelete,
28988
29083
  onOpenSubCategoryMenu = _ref.onOpenSubCategoryMenu,
28989
29084
  onOpenCategoryMenu = _ref.onOpenCategoryMenu,
@@ -28992,14 +29087,30 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28992
29087
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
28993
29088
  formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$g);
28994
29089
  var errors = formikProps.errors;
28995
- var theme = useTheme();
29090
+ var startOrderRef = useRef(null);
28996
29091
  var articles = data.articles,
28997
29092
  questions = data.questions;
28998
- var blockErrors = _.get(errors, path);
29093
+ var blockErrors = _$1.get(errors, path);
28999
29094
  var handleOpenQuestionTypeMenu = useCallback(function (key) {
29000
29095
  var _data$articles$, _data$articles$$categ, _data$articles$2, _data$articles$2$cate;
29001
29096
  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]);
29002
29097
  }, [(_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]]);
29098
+ var debounceQuestionStartOrderChange = _$1.debounce(onQuestioStartOrderChange, 300);
29099
+ var handleChangeStartQuestionOrder = function handleChangeStartQuestionOrder(e) {
29100
+ var value = e.target.value.replace(/\D/g, '');
29101
+ var order = +value;
29102
+ if (Number.isNaN(order) || order === 0) {
29103
+ order = 1;
29104
+ if (order === 0 && startOrderRef.current) {
29105
+ startOrderRef.current.value = "1";
29106
+ }
29107
+ }
29108
+ debounceQuestionStartOrderChange(order - 1);
29109
+ };
29110
+ useEffect(function () {
29111
+ var _questions$;
29112
+ if (startOrderRef.current) startOrderRef.current.value = "" + ((((_questions$ = questions[0]) === null || _questions$ === void 0 ? void 0 : _questions$.questionOrder) || 0) + 1);
29113
+ }, [(_questions$2 = questions[0]) === null || _questions$2 === void 0 ? void 0 : _questions$2.questionOrder]);
29003
29114
  return React__default.createElement(FieldArray, {
29004
29115
  name: path + ".articles",
29005
29116
  render: function render(arrayHelpers) {
@@ -29013,7 +29124,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
29013
29124
  gap: 2
29014
29125
  }, !isMath && React__default.createElement(Stack, {
29015
29126
  sx: {
29016
- border: "1.5px solid " + (blockErrors ? open ? error.main : error.light : open ? theme.palette.secondary.main : theme.palette.secondary.light),
29127
+ border: (open ? "3px" : "1.5px") + " solid " + (blockErrors ? open ? error.main : error.light : "#a3a3a4"),
29017
29128
  borderRadius: 2
29018
29129
  },
29019
29130
  gap: 1,
@@ -29051,7 +29162,20 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
29051
29162
  }, t$1("article")))), React__default.createElement(Stack, {
29052
29163
  gap: 1,
29053
29164
  direction: "column"
29054
- }, React__default.createElement(ListView, {
29165
+ }, React__default.createElement(Box, null, React__default.createElement(FormControl, {
29166
+ sx: {
29167
+ display: "flex",
29168
+ flexDirection: "row",
29169
+ alignItems: "center",
29170
+ gap: 1
29171
+ }
29172
+ }, React__default.createElement(FormLabel, null, t$1("start_order")), React__default.createElement(TextField, {
29173
+ inputRef: startOrderRef,
29174
+ onChange: handleChangeStartQuestionOrder,
29175
+ type: "number",
29176
+ size: "small",
29177
+ disabled: disabled
29178
+ }))), React__default.createElement(ListView, {
29055
29179
  data: questions,
29056
29180
  render: function render(question, index) {
29057
29181
  return React__default.createElement(QuestionBlock$1, Object.assign({
@@ -29077,8 +29201,8 @@ var isEqual$2 = function isEqual(prev, next) {
29077
29201
  var isNextMatched = next.optionKey.startsWith(next.path);
29078
29202
  var prevOptionKey = isPrevMatched ? prev.optionKey : undefined;
29079
29203
  var nextOptionKey = isNextMatched ? next.optionKey : undefined;
29080
- var prevBlockErrors = _.get(prev.errors, prev.path);
29081
- var nextBlockErrors = _.get(next.errors, next.path);
29204
+ var prevBlockErrors = _$1.get(prev.errors, prev.path);
29205
+ var nextBlockErrors = _$1.get(next.errors, next.path);
29082
29206
  var prevIsLoadingCategories = isPrevMatched ? prev.isLoadingCategories : undefined;
29083
29207
  var nextIsLoadingCategories = isNextMatched ? next.isLoadingCategories : undefined;
29084
29208
  var prevCategories = isPrevMatched ? prev.categories : undefined;
@@ -29098,9 +29222,9 @@ var isEqual$2 = function isEqual(prev, next) {
29098
29222
  var QuestionGroupBlockBody$1 = memo(QuestionGroupBlockBody, isEqual$2);
29099
29223
 
29100
29224
  var _excluded$h = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
29101
- var _$1 = _$5;
29225
+ var _$2 = _$6;
29102
29226
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29103
- var _data$articles$2, _data$articles$2$cate, _data$articles$2$cate2, _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2;
29227
+ var _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2, _data$articles$4, _data$articles$4$cate, _data$articles$4$cate2;
29104
29228
  var expandedIndex = _ref.expandedIndex,
29105
29229
  open = _ref.open,
29106
29230
  paths = _ref.paths,
@@ -29145,6 +29269,16 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29145
29269
  setFieldValue(path + ".questionCount", questionCount);
29146
29270
  onQuestionCountChange(questionCount, expandedIndex);
29147
29271
  };
29272
+ var handleChangeStartQuestionOrder = function handleChangeStartQuestionOrder(order) {
29273
+ var _questions$;
29274
+ var questions = data.questions;
29275
+ if (((_questions$ = questions[0]) === null || _questions$ === void 0 ? void 0 : _questions$.questionOrder) === order) return;
29276
+ setFieldValue(path + ".questions", questions.map(function (q, index) {
29277
+ return _extends({}, q, {
29278
+ questionOrder: order + index
29279
+ });
29280
+ }));
29281
+ };
29148
29282
  var handleChangeAnswerCount = function handleChangeAnswerCount(val) {
29149
29283
  var answerCount = (val === null || val === void 0 ? void 0 : val.value) || 1;
29150
29284
  setFieldValue(path + ".answerCount", answerCount);
@@ -29188,16 +29322,24 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29188
29322
  }
29189
29323
  };
29190
29324
  var handleChangeCategory = function handleChangeCategory(val) {
29191
- setFieldValue(path + ".articles[0].categoryOptions", [val]);
29192
- setFieldValue(path + ".articles[0].categories", [val === null || val === void 0 ? void 0 : val.value]);
29325
+ setFieldValue(path + ".articles[0].categoryOptions", val !== null && val !== void 0 && val.value ? [val] : []);
29326
+ setFieldValue(path + ".articles[0].categories", val !== null && val !== void 0 && val.value ? [val.value] : []);
29193
29327
  };
29194
29328
  var handleChangeSubCategory = function handleChangeSubCategory(val) {
29195
- setFieldValue(path + ".articles[0].categories[1]", val === null || val === void 0 ? void 0 : val.value);
29196
- setFieldValue(path + ".articles[0].categoryOptions[1]", val);
29329
+ if (!(val !== null && val !== void 0 && val.value)) {
29330
+ var _data$articles, _data$articles$2, _data$articles$2$cate, _data$articles2, _data$articles2$, _data$articles2$$cate;
29331
+ var category = data === null || data === void 0 ? void 0 : (_data$articles = data.articles) === null || _data$articles === void 0 ? void 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[0];
29332
+ var categoryOption = data === null || data === void 0 ? void 0 : (_data$articles2 = data.articles) === null || _data$articles2 === void 0 ? void 0 : (_data$articles2$ = _data$articles2[0]) === null || _data$articles2$ === void 0 ? void 0 : (_data$articles2$$cate = _data$articles2$.categoryOptions) === null || _data$articles2$$cate === void 0 ? void 0 : _data$articles2$$cate[0];
29333
+ setFieldValue(path + ".articles[0].categories", category ? [category] : []);
29334
+ setFieldValue(path + ".articles[0].categoryOptions", categoryOption ? [categoryOption] : []);
29335
+ } else {
29336
+ setFieldValue(path + ".articles[0].categories[1]", val.value);
29337
+ setFieldValue(path + ".articles[0].categoryOptions[1]", val);
29338
+ }
29197
29339
  };
29198
29340
  var summary = open ? "" : [t("number_questions", {
29199
29341
  n: data.questionCount
29200
- }), (_data$articles$2 = data.articles[0]) === null || _data$articles$2 === void 0 ? void 0 : (_data$articles$2$cate = _data$articles$2.categoryOptions) === null || _data$articles$2$cate === void 0 ? void 0 : (_data$articles$2$cate2 = _data$articles$2$cate[0]) === null || _data$articles$2$cate2 === void 0 ? void 0 : _data$articles$2$cate2.label, (_data$articles$3 = data.articles[0]) === null || _data$articles$3 === void 0 ? void 0 : (_data$articles$3$cate = _data$articles$3.categoryOptions) === null || _data$articles$3$cate === void 0 ? void 0 : (_data$articles$3$cate2 = _data$articles$3$cate[1]) === null || _data$articles$3$cate2 === void 0 ? void 0 : _data$articles$3$cate2.label, isMath ? data.questions.map(function (i) {
29342
+ }), (_data$articles$3 = data.articles[0]) === null || _data$articles$3 === void 0 ? void 0 : (_data$articles$3$cate = _data$articles$3.categoryOptions) === null || _data$articles$3$cate === void 0 ? void 0 : (_data$articles$3$cate2 = _data$articles$3$cate[0]) === null || _data$articles$3$cate2 === void 0 ? void 0 : _data$articles$3$cate2.label, (_data$articles$4 = data.articles[0]) === null || _data$articles$4 === void 0 ? void 0 : (_data$articles$4$cate = _data$articles$4.categoryOptions) === null || _data$articles$4$cate === void 0 ? void 0 : (_data$articles$4$cate2 = _data$articles$4$cate[1]) === null || _data$articles$4$cate2 === void 0 ? void 0 : _data$articles$4$cate2.label, isMath ? data.questions.map(function (i) {
29201
29343
  var _i$questionType;
29202
29344
  return ((_i$questionType = i.questionType) === null || _i$questionType === void 0 ? void 0 : _i$questionType.label) || i.questionTypeName;
29203
29345
  }).filter(function (i) {
@@ -29205,12 +29347,15 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29205
29347
  }).join(",") : ""].filter(function (i) {
29206
29348
  return !!i;
29207
29349
  }).join(" / ");
29208
- var blockErrors = _$1.get(errors, path);
29350
+ var pageFromError = _$2.get(errors, path + ".pageFrom");
29351
+ var pageToError = _$2.get(errors, path + ".pageTo");
29352
+ var categoryError = _$2.get(errors, path + ".articles[0].categories");
29353
+ var blockErrors = _$2.get(errors, path);
29209
29354
  return React__default.createElement(Accordion, {
29210
29355
  expanded: open,
29211
29356
  onChange: handleToggle,
29212
29357
  sx: {
29213
- border: "1.5px solid " + (blockErrors ? open ? error.main : error.light : open ? yellow$1[900] : yellow$1[500])
29358
+ border: (open ? "5px" : "1.5px") + " solid " + (blockErrors ? open ? error.main : error.light : open ? yellow$1[900] : yellow$1[500])
29214
29359
  }
29215
29360
  }, React__default.createElement(AccordionSummary, {
29216
29361
  expandIcon: React__default.createElement(MdExpandMore, {
@@ -29244,24 +29389,28 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29244
29389
  whiteSpace: "nowrap"
29245
29390
  }, title, !open && ":")), React__default.createElement(Box, {
29246
29391
  sx: {
29247
- flexGrow: 1
29392
+ flexGrow: 1,
29393
+ cursor: "default"
29394
+ },
29395
+ onClick: function onClick(e) {
29396
+ open && e.stopPropagation();
29248
29397
  }
29249
29398
  }, open ? React__default.createElement(Stack, {
29250
- direction: "row",
29251
- flexWrap: "nowrap",
29399
+ direction: "column",
29252
29400
  gap: 2
29401
+ }, React__default.createElement(Stack, {
29402
+ direction: "row",
29403
+ flexWrap: "nowrap"
29253
29404
  }, React__default.createElement(Grid, {
29254
29405
  container: true,
29255
29406
  flexGrow: 1,
29256
- direction: "row",
29257
- flexWrap: "nowrap",
29258
- gap: 2
29407
+ direction: "row"
29259
29408
  }, React__default.createElement(Grid, {
29260
29409
  item: true,
29261
29410
  xs: 3
29262
29411
  }, React__default.createElement(FormGroup, {
29263
- onClick: function onClick(e) {
29264
- open && e.stopPropagation();
29412
+ sx: {
29413
+ marginRight: 2
29265
29414
  }
29266
29415
  }, React__default.createElement(FormLabel, {
29267
29416
  htmlFor: "question_count",
@@ -29283,10 +29432,8 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29283
29432
  maxWidth: "100%",
29284
29433
  "& div": {
29285
29434
  maxWidth: "100%"
29286
- }
29287
- },
29288
- onClick: function onClick(e) {
29289
- open && e.stopPropagation();
29435
+ },
29436
+ marginRight: 2
29290
29437
  }
29291
29438
  }, React__default.createElement(FormLabel, {
29292
29439
  htmlFor: "category",
@@ -29314,7 +29461,13 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29314
29461
  placeholder: t("select_category")
29315
29462
  });
29316
29463
  }
29317
- }))), isMath && React__default.createElement(Grid, {
29464
+ }), !!categoryError && React__default.createElement(Typography, {
29465
+ fontWeight: 500,
29466
+ fontSize: "10px",
29467
+ lineHeight: "11.93px",
29468
+ mt: 1,
29469
+ color: !categoryError ? "#97A1AF" : "#F34B4B"
29470
+ }, categoryError))), isMath && React__default.createElement(Grid, {
29318
29471
  item: true,
29319
29472
  xs: 3
29320
29473
  }, React__default.createElement(FormGroup, {
@@ -29322,10 +29475,8 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29322
29475
  maxWidth: "100%",
29323
29476
  "& div": {
29324
29477
  maxWidth: "100%"
29325
- }
29326
- },
29327
- onClick: function onClick(e) {
29328
- open && e.stopPropagation();
29478
+ },
29479
+ marginRight: 2
29329
29480
  }
29330
29481
  }, React__default.createElement(FormLabel, {
29331
29482
  htmlFor: "category",
@@ -29333,7 +29484,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29333
29484
  }, t("sub_category")), React__default.createElement(Field, {
29334
29485
  name: path + ".articles[0].categoryOptions[1]",
29335
29486
  render: function render(_ref4) {
29336
- var _data$articles$4, _data$articles$4$cate;
29487
+ var _data$articles$5, _data$articles$5$cate;
29337
29488
  var field = _ref4.field;
29338
29489
  return React__default.createElement(ArticleCategorySelector, {
29339
29490
  style: {
@@ -29351,7 +29502,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29351
29502
  onMenuClose: onCloseCategoryMenu
29352
29503
  },
29353
29504
  onChange: handleChangeSubCategory,
29354
- isDisabled: disabled || !((_data$articles$4 = data.articles[0]) !== null && _data$articles$4 !== void 0 && (_data$articles$4$cate = _data$articles$4.categories) !== null && _data$articles$4$cate !== void 0 && _data$articles$4$cate[0]),
29505
+ isDisabled: disabled || !((_data$articles$5 = data.articles[0]) !== null && _data$articles$5 !== void 0 && (_data$articles$5$cate = _data$articles$5.categories) !== null && _data$articles$5$cate !== void 0 && _data$articles$5$cate[0]),
29355
29506
  placeholder: t("select_category")
29356
29507
  });
29357
29508
  }
@@ -29361,6 +29512,9 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29361
29512
  }, React__default.createElement(FormGroup, {
29362
29513
  onClick: function onClick(e) {
29363
29514
  open && e.stopPropagation();
29515
+ },
29516
+ sx: {
29517
+ marginRight: 2
29364
29518
  }
29365
29519
  }, React__default.createElement(FormLabel, {
29366
29520
  htmlFor: "question_count",
@@ -29374,12 +29528,67 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29374
29528
  isDisabled: disabled
29375
29529
  }));
29376
29530
  }
29377
- })))), isMath && React__default.createElement(Box, {
29531
+ }))), !isMath && React__default.createElement(Grid, {
29532
+ item: true,
29533
+ xs: 3
29534
+ }, React__default.createElement(FormGroup, {
29535
+ sx: {
29536
+ marginRight: 2
29537
+ }
29538
+ }, React__default.createElement(FormLabel, {
29539
+ htmlFor: "question_count",
29540
+ className: "form-label"
29541
+ }, t("page_from")), React__default.createElement(Field, {
29542
+ name: path + ".pageFrom",
29543
+ render: function render(_ref6) {
29544
+ var field = _ref6.field;
29545
+ return React__default.createElement(TextField, Object.assign({
29546
+ placeholder: t("page_from"),
29547
+ type: "number"
29548
+ }, field, {
29549
+ size: "small",
29550
+ onKeyDown: handleKeyDown,
29551
+ disabled: disabled
29552
+ }));
29553
+ }
29554
+ }), !!pageFromError && React__default.createElement(Typography, {
29555
+ fontWeight: 500,
29556
+ fontSize: "10px",
29557
+ lineHeight: "11.93px",
29558
+ mt: 1,
29559
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
29560
+ }, pageFromError))), !isMath && React__default.createElement(Grid, {
29561
+ item: true,
29562
+ xs: 3
29563
+ }, React__default.createElement(FormGroup, {
29564
+ sx: {
29565
+ marginRight: 2
29566
+ }
29567
+ }, React__default.createElement(FormLabel, {
29568
+ htmlFor: "question_count",
29569
+ className: "form-label"
29570
+ }, t("page_to")), React__default.createElement(Field, {
29571
+ name: path + ".pageTo",
29572
+ render: function render(_ref7) {
29573
+ var field = _ref7.field;
29574
+ return React__default.createElement(TextField, Object.assign({
29575
+ placeholder: t("page_to"),
29576
+ type: "number"
29577
+ }, field, {
29578
+ size: "small",
29579
+ onKeyDown: handleKeyDown,
29580
+ disabled: disabled
29581
+ }));
29582
+ }
29583
+ }), !!pageToError && React__default.createElement(Typography, {
29584
+ fontWeight: 500,
29585
+ fontSize: "10px",
29586
+ lineHeight: "11.93px",
29587
+ mt: 1,
29588
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
29589
+ }, pageToError)))), isMath && React__default.createElement(Box, {
29378
29590
  sx: {
29379
29591
  display: "flex"
29380
- },
29381
- onClick: function onClick(e) {
29382
- open && e.stopPropagation();
29383
29592
  }
29384
29593
  }, React__default.createElement(Button, {
29385
29594
  variant: "contained",
@@ -29389,7 +29598,84 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29389
29598
  sx: {
29390
29599
  whiteSpace: "nowrap"
29391
29600
  }
29392
- }, t("category_copy")))) : React__default.createElement(Typography, {
29601
+ }, t("category_copy")))), isMath && React__default.createElement(Stack, {
29602
+ direction: "row",
29603
+ flexWrap: "nowrap"
29604
+ }, React__default.createElement(Grid, {
29605
+ container: true,
29606
+ flexGrow: 1,
29607
+ direction: "row"
29608
+ }, React__default.createElement(Grid, {
29609
+ item: true,
29610
+ xs: 3
29611
+ }, React__default.createElement(FormGroup, {
29612
+ sx: {
29613
+ marginRight: 2
29614
+ }
29615
+ }, React__default.createElement(FormLabel, {
29616
+ htmlFor: "question_count",
29617
+ className: "form-label"
29618
+ }, t("page_from")), React__default.createElement(Field, {
29619
+ name: path + ".pageFrom",
29620
+ render: function render(_ref8) {
29621
+ var field = _ref8.field;
29622
+ return React__default.createElement(TextField, Object.assign({
29623
+ placeholder: t("page_from"),
29624
+ type: "number"
29625
+ }, field, {
29626
+ size: "small",
29627
+ onKeyDown: handleKeyDown,
29628
+ disabled: disabled
29629
+ }));
29630
+ }
29631
+ }), !!pageFromError && React__default.createElement(Typography, {
29632
+ fontWeight: 500,
29633
+ fontSize: "10px",
29634
+ lineHeight: "11.93px",
29635
+ mt: 1,
29636
+ color: !pageFromError ? "#97A1AF" : "#F34B4B"
29637
+ }, pageFromError))), React__default.createElement(Grid, {
29638
+ item: true,
29639
+ xs: 3
29640
+ }, React__default.createElement(FormGroup, {
29641
+ sx: {
29642
+ marginRight: 2
29643
+ }
29644
+ }, React__default.createElement(FormLabel, {
29645
+ htmlFor: "question_count",
29646
+ className: "form-label"
29647
+ }, t("page_to")), React__default.createElement(Field, {
29648
+ name: path + ".pageTo",
29649
+ render: function render(_ref9) {
29650
+ var field = _ref9.field;
29651
+ return React__default.createElement(TextField, Object.assign({
29652
+ placeholder: t("page_to"),
29653
+ type: "number"
29654
+ }, field, {
29655
+ size: "small",
29656
+ onKeyDown: handleKeyDown,
29657
+ disabled: disabled
29658
+ }));
29659
+ }
29660
+ }), !!pageToError && React__default.createElement(Typography, {
29661
+ fontWeight: 500,
29662
+ fontSize: "10px",
29663
+ lineHeight: "11.93px",
29664
+ mt: 1,
29665
+ color: !pageToError ? "#97A1AF" : "#F34B4B"
29666
+ }, pageToError)))), React__default.createElement(Box, {
29667
+ sx: {
29668
+ display: "flex",
29669
+ visibility: "hidden"
29670
+ }
29671
+ }, React__default.createElement(Button, {
29672
+ variant: "contained",
29673
+ color: "success",
29674
+ disabled: true,
29675
+ sx: {
29676
+ whiteSpace: "nowrap"
29677
+ }
29678
+ }, t("category_copy"))))) : React__default.createElement(Typography, {
29393
29679
  fontWeight: 600,
29394
29680
  sx: {
29395
29681
  overflow: "hidden",
@@ -29411,6 +29697,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
29411
29697
  isLoadingQuestionTypes: isLoadingQuestionTypes,
29412
29698
  optionKey: optionKey,
29413
29699
  disabled: disabled,
29700
+ onQuestioStartOrderChange: handleChangeStartQuestionOrder,
29414
29701
  onDelete: onDelete,
29415
29702
  onOpenSubCategoryMenu: onOpenSubCategoryMenu,
29416
29703
  onOpenCategoryMenu: onOpenCategoryMenu,
@@ -29477,6 +29764,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
29477
29764
  var questions = currentQuestionGroup.questions;
29478
29765
  var lastOrder = questions[questions.length - 1].questionOrder;
29479
29766
  var newQuestionGroups = questionGroups;
29767
+ var isSequential = isSequentialQuestionGroups(questionGroups);
29480
29768
  if (questions.length < questionCount) {
29481
29769
  var additionalQuestions = Array.from({
29482
29770
  length: questionCount - questions.length
@@ -29489,7 +29777,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
29489
29777
  newQuestionGroups = [].concat(prevQuestionGroups, [_extends({}, currentQuestionGroup, {
29490
29778
  questionCount: questionCount,
29491
29779
  questions: [].concat(currentQuestionGroup.questions, additionalQuestions)
29492
- })], nextQuestionGroups.map(function (i) {
29780
+ })], isSequential ? nextQuestionGroups.map(function (i) {
29493
29781
  return _extends({}, i, {
29494
29782
  questions: i.questions.map(function (q) {
29495
29783
  return _extends({}, q, {
@@ -29497,14 +29785,14 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
29497
29785
  });
29498
29786
  })
29499
29787
  });
29500
- }));
29788
+ }) : nextQuestionGroups);
29501
29789
  setFieldValue(path + ".questionGroups", newQuestionGroups);
29502
29790
  } else {
29503
29791
  var remainQuestions = questions.slice(0, questionCount);
29504
29792
  newQuestionGroups = [].concat(prevQuestionGroups, [_extends({}, currentQuestionGroup, {
29505
29793
  questionCount: questionCount,
29506
29794
  questions: [].concat(remainQuestions)
29507
- })], nextQuestionGroups.map(function (i) {
29795
+ })], isSequential ? nextQuestionGroups.map(function (i) {
29508
29796
  return _extends({}, i, {
29509
29797
  questions: i.questions.map(function (q) {
29510
29798
  return _extends({}, q, {
@@ -29512,7 +29800,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
29512
29800
  });
29513
29801
  })
29514
29802
  });
29515
- }));
29803
+ }) : nextQuestionGroups);
29516
29804
  }
29517
29805
  setFieldValue(path + ".questionGroups", newQuestionGroups);
29518
29806
  };
@@ -29619,7 +29907,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
29619
29907
  };
29620
29908
 
29621
29909
  var _excluded$j = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
29622
- var _$2 = _$5;
29910
+ var _$3 = _$6;
29623
29911
  var ChapterBlock = function ChapterBlock(_ref) {
29624
29912
  var data = _ref.data,
29625
29913
  expandedIndex = _ref.expandedIndex,
@@ -29659,10 +29947,10 @@ var ChapterBlock = function ChapterBlock(_ref) {
29659
29947
  chapter: title
29660
29948
  }), title, path.replace(/\[(\d+)\]$/, ""), expandedIndex);
29661
29949
  };
29662
- var pageNameError = _$2.get(errors, path + ".name");
29663
- var pageFromError = _$2.get(errors, path + ".pageFrom");
29664
- var pageToError = _$2.get(errors, path + ".pageTo");
29665
- var blockErrors = _$2.get(errors, path);
29950
+ var pageNameError = _$3.get(errors, path + ".name");
29951
+ var pageFromError = _$3.get(errors, path + ".pageFrom");
29952
+ var pageToError = _$3.get(errors, path + ".pageTo");
29953
+ var blockErrors = _$3.get(errors, path);
29666
29954
  return React__default.createElement(Accordion, {
29667
29955
  expanded: open,
29668
29956
  onChange: handleToggle,
@@ -29839,13 +30127,13 @@ var QuestionTypeFilter = function QuestionTypeFilter(_ref) {
29839
30127
  });
29840
30128
  var gradeOptions = useMemo(function () {
29841
30129
  switch (filter === null || filter === void 0 ? void 0 : filter.schoolType) {
29842
- case SchoolType$1.Middle:
30130
+ case SchoolType.Middle:
29843
30131
  return MIDDLE_GRADES.map(function (i) {
29844
30132
  return _extends({}, i, {
29845
30133
  label: typeof i.label === "string" ? t(i.label) : i.label
29846
30134
  });
29847
30135
  });
29848
- case SchoolType$1.High:
30136
+ case SchoolType.High:
29849
30137
  return HIGH_GRADES.map(function (i) {
29850
30138
  return _extends({}, i, {
29851
30139
  label: t(i.label)
@@ -29891,7 +30179,7 @@ var QuestionTypeFilter = function QuestionTypeFilter(_ref) {
29891
30179
  options: gradeOptions,
29892
30180
  isClearable: false,
29893
30181
  onChange: handleGradeChange
29894
- })), (!(filter !== null && filter !== void 0 && filter.schoolType) || (filter === null || filter === void 0 ? void 0 : filter.schoolType) === SchoolType$1.Elementary) && React__default.createElement(FormGroup, {
30182
+ })), (!(filter !== null && filter !== void 0 && filter.schoolType) || (filter === null || filter === void 0 ? void 0 : filter.schoolType) === SchoolType.Elementary) && React__default.createElement(FormGroup, {
29895
30183
  sx: {
29896
30184
  flexGrow: 1
29897
30185
  }
@@ -29900,7 +30188,7 @@ var QuestionTypeFilter = function QuestionTypeFilter(_ref) {
29900
30188
  options: semesterOptions,
29901
30189
  isClearable: false,
29902
30190
  onChange: handleSemesterChange
29903
- })), (!(filter !== null && filter !== void 0 && filter.schoolType) || (filter === null || filter === void 0 ? void 0 : filter.schoolType) === SchoolType$1.Elementary) && React__default.createElement(FormGroup, {
30191
+ })), (!(filter !== null && filter !== void 0 && filter.schoolType) || (filter === null || filter === void 0 ? void 0 : filter.schoolType) === SchoolType.Elementary) && React__default.createElement(FormGroup, {
29904
30192
  sx: {
29905
30193
  flexGrow: 1
29906
30194
  }
@@ -29946,7 +30234,9 @@ var CATEGORY_URL$1 = BASE_URL + "/api/examcategory";
29946
30234
  var getCategoryListAdminApi$1 = function getCategoryListAdminApi(data) {
29947
30235
  try {
29948
30236
  return Promise.resolve(api.get("" + ADMIN_CATEGORY_URL$1, {
29949
- params: data
30237
+ params: _extends({}, data, {
30238
+ sortColumnName: "name"
30239
+ })
29950
30240
  }));
29951
30241
  } catch (e) {
29952
30242
  return Promise.reject(e);
@@ -29955,7 +30245,9 @@ var getCategoryListAdminApi$1 = function getCategoryListAdminApi(data) {
29955
30245
  var getCategoryListApi$1 = function getCategoryListApi(data) {
29956
30246
  try {
29957
30247
  return Promise.resolve(api.get("" + CATEGORY_URL$1, {
29958
- params: data
30248
+ params: _extends({}, data, {
30249
+ sortColumnName: "name"
30250
+ })
29959
30251
  }));
29960
30252
  } catch (e) {
29961
30253
  return Promise.reject(e);
@@ -29964,7 +30256,9 @@ var getCategoryListApi$1 = function getCategoryListApi(data) {
29964
30256
  var getCategoryQuestionTypeListApi = function getCategoryQuestionTypeListApi(isSuper, data) {
29965
30257
  try {
29966
30258
  return Promise.resolve(api.get((isSuper ? ADMIN_CATEGORY_URL$1 : CATEGORY_URL$1) + "/question-types", {
29967
- params: data
30259
+ params: _extends({}, data, {
30260
+ sortColumnName: "name"
30261
+ })
29968
30262
  }));
29969
30263
  } catch (e) {
29970
30264
  return Promise.reject(e);
@@ -30004,7 +30298,7 @@ var useTextbookOptions = function useTextbookOptions(subjectId, isMath, filter,
30004
30298
  return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : (_state$common2$user = _state$common2.user) === null || _state$common2$user === void 0 ? void 0 : _state$common2$user.academyDomain;
30005
30299
  });
30006
30300
  var getOptionFilter = function getOptionFilter() {
30007
- var cloneFilter = _$5.clone(filter);
30301
+ var cloneFilter = _$6.clone(filter);
30008
30302
  for (var key in cloneFilter) {
30009
30303
  if (Object.prototype.hasOwnProperty.call(cloneFilter, key)) {
30010
30304
  var element = cloneFilter[key];
@@ -30154,7 +30448,7 @@ var useTextbookOptions = function useTextbookOptions(subjectId, isMath, filter,
30154
30448
  };
30155
30449
  };
30156
30450
 
30157
- var _$3 = _$5;
30451
+ var _$4 = _$6;
30158
30452
  var TextbookContentsTab = function TextbookContentsTab(props) {
30159
30453
  var disabled = props.disabled,
30160
30454
  values = props.values,
@@ -30197,7 +30491,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
30197
30491
  };
30198
30492
  var handleConfirmDeleteBlock = function handleConfirmDeleteBlock() {
30199
30493
  if (!(openConfirmDelete !== null && openConfirmDelete !== void 0 && openConfirmDelete.path)) return;
30200
- var items = _$3.get(values, openConfirmDelete.path, []);
30494
+ var items = _$4.get(values, openConfirmDelete.path, []);
30201
30495
  setFieldValue(openConfirmDelete.path, items.filter(function (_, i) {
30202
30496
  return i !== openConfirmDelete.itemIndex;
30203
30497
  }));
@@ -30237,12 +30531,12 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
30237
30531
  if (!newParts.length) return;
30238
30532
  if (newParts.length < parts.length) {
30239
30533
  var _$get, _$get2, _$get3;
30240
- var subChapters = (_$get = _$3.get(values, newPath + ".subChapters")) != null ? _$get : [];
30534
+ var subChapters = (_$get = _$4.get(values, newPath + ".subChapters")) != null ? _$get : [];
30241
30535
  var questionGroups = [];
30242
- if (!subChapters.length) questionGroups = (_$get2 = _$3.get(values, newPath + ".questionGroups")) != null ? _$get2 : [];else questionGroups = (_$get3 = _$3.get(values, newPath + ".subChapters[" + (subChapters.length - 1) + "].questionGroups")) != null ? _$get3 : [];
30243
- return _$3.last(questionGroups);
30536
+ if (!subChapters.length) questionGroups = (_$get2 = _$4.get(values, newPath + ".questionGroups")) != null ? _$get2 : [];else questionGroups = (_$get3 = _$4.get(values, newPath + ".subChapters[" + (subChapters.length - 1) + "].questionGroups")) != null ? _$get3 : [];
30537
+ return _$4.last(questionGroups);
30244
30538
  }
30245
- return _$3.get(values, newPath);
30539
+ return _$4.get(values, newPath);
30246
30540
  };
30247
30541
  var handleOpenSubCategoryMenu = useCallback(function (key, categoryId) {
30248
30542
  setOptionKey(key);
@@ -30734,7 +31028,7 @@ var useSelect = function useSelect(_ref) {
30734
31028
  setLoading = _useState2[1];
30735
31029
  useEffect(function () {
30736
31030
  if (!email || !academy) return;
30737
- var fetchData = _$5.debounce(function () {
31031
+ var fetchData = _$6.debounce(function () {
30738
31032
  try {
30739
31033
  var _temp2 = function _temp2() {
30740
31034
  setLoading(false);
@@ -30848,7 +31142,7 @@ var OwnerSelector = function OwnerSelector(_ref) {
30848
31142
  }, errors === null || errors === void 0 ? void 0 : errors.textbookOwners[index].courseId)));
30849
31143
  };
30850
31144
 
30851
- var _$4 = _$5;
31145
+ var _$5 = _$6;
30852
31146
  var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30853
31147
  var errors = _ref.errors,
30854
31148
  values = _ref.values,
@@ -30921,12 +31215,12 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30921
31215
  disabled: disabled || !!val.academyId && val.academyId !== (academy === null || academy === void 0 ? void 0 : academy.id)
30922
31216
  }));
30923
31217
  }
30924
- }), _$4.get(errors, "textbookOwners[" + index + "].email") && React__default.createElement(Typography, {
31218
+ }), _$5.get(errors, "textbookOwners[" + index + "].email") && React__default.createElement(Typography, {
30925
31219
  fontWeight: 500,
30926
31220
  fontSize: "10px",
30927
31221
  lineHeight: "11.93px",
30928
31222
  color: "#F34B4B"
30929
- }, _$4.get(errors, "textbookOwners[" + index + "].email"))), !!(values !== null && values !== void 0 && (_values$textbookOwner = values.textbookOwners) !== null && _values$textbookOwner !== void 0 && _values$textbookOwner[index].email) && React__default.createElement(OwnerSelector, {
31223
+ }, _$5.get(errors, "textbookOwners[" + index + "].email"))), !!(values !== null && values !== void 0 && (_values$textbookOwner = values.textbookOwners) !== null && _values$textbookOwner !== void 0 && _values$textbookOwner[index].email) && React__default.createElement(OwnerSelector, {
30930
31224
  values: values,
30931
31225
  errors: errors,
30932
31226
  index: index,
@@ -31068,23 +31362,35 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
31068
31362
  color: !(errors !== null && errors !== void 0 && errors.subjectId) ? "#97A1AF" : "#F34B4B"
31069
31363
  }, errors === null || errors === void 0 ? void 0 : errors.subjectId)), React__default.createElement(Stack, {
31070
31364
  flexDirection: "column",
31071
- justifyContent: "center",
31072
31365
  gap: 1
31073
31366
  }, React__default.createElement("label", {
31367
+ htmlFor: "hidden",
31368
+ style: {
31369
+ visibility: "hidden"
31370
+ }
31371
+ }, "hidden"), React__default.createElement(Stack, {
31372
+ flexDirection: "row",
31373
+ justifyContent: "center",
31374
+ alignItems: "center",
31375
+ gap: 1
31376
+ }, React__default.createElement(FormLabel, {
31074
31377
  htmlFor: "type",
31075
31378
  className: "text-center"
31076
- }, t$1(values.type !== 2 ? "korea" : "math")), React__default.createElement(Field, {
31379
+ }, t$1("korea")), React__default.createElement(Field, {
31077
31380
  name: "type",
31078
31381
  render: function render(_ref4) {
31079
31382
  var field = _ref4.field;
31080
31383
  return React__default.createElement(Switch, Object.assign({}, field, {
31081
31384
  color: "success",
31082
31385
  disabled: !!textbookId || disabled,
31083
- checked: values.type === 2,
31386
+ checked: values.type === TextbookEditorType.Math,
31084
31387
  onChange: handleChangeTextbookType
31085
31388
  }));
31086
31389
  }
31087
- }))), React__default.createElement(Box, null, React__default.createElement(Button, {
31390
+ }), React__default.createElement(FormLabel, {
31391
+ htmlFor: "type",
31392
+ className: "text-center"
31393
+ }, t$1("math"))))), React__default.createElement(Box, null, React__default.createElement(Button, {
31088
31394
  type: "submit",
31089
31395
  sx: {
31090
31396
  width: "fit-content"
@@ -31092,7 +31398,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
31092
31398
  variant: "contained",
31093
31399
  disabled: disabled,
31094
31400
  onClick: function onClick() {
31095
- if (!_$5.isEmpty(errors)) {
31401
+ if (!_$6.isEmpty(errors)) {
31096
31402
  toast.error(t$1("please_fill_in_the_blank_fields"));
31097
31403
  }
31098
31404
  },
@@ -31859,7 +32165,7 @@ var usePreparedExam = function usePreparedExam(_ref) {
31859
32165
  return Promise.reject(e);
31860
32166
  }
31861
32167
  };
31862
- var debounceSearch = _$5.debounce(function () {
32168
+ var debounceSearch = _$6.debounce(function () {
31863
32169
  setTextbookFilter(_extends({}, textbookFilter, {
31864
32170
  currentPage: 1
31865
32171
  }));
@@ -32185,20 +32491,41 @@ var useTextbookDrawer = function useTextbookDrawer(_ref) {
32185
32491
  var arrOptions = [];
32186
32492
  var obj = {};
32187
32493
  textbook === null || textbook === void 0 ? void 0 : textbook.chapters.map(function (chapter) {
32494
+ var _chapter$subChapters, _chapter$questionGrou;
32188
32495
  arrOptions.push({
32189
32496
  label: t("page_number", {
32190
32497
  number: chapter.pageFrom
32191
32498
  }),
32192
32499
  value: chapter.pageFrom
32193
32500
  });
32194
- if (chapter.subChapters) {
32501
+ if ((_chapter$subChapters = chapter.subChapters) !== null && _chapter$subChapters !== void 0 && _chapter$subChapters.length) {
32195
32502
  chapter.subChapters.map(function (subChapter) {
32503
+ var _subChapter$questionG;
32196
32504
  arrOptions.push({
32197
32505
  label: t("page_number", {
32198
32506
  number: subChapter.pageFrom
32199
32507
  }),
32200
32508
  value: subChapter.pageFrom
32201
32509
  });
32510
+ if ((_subChapter$questionG = subChapter.questionGroups) !== null && _subChapter$questionG !== void 0 && _subChapter$questionG.length) {
32511
+ subChapter.questionGroups.map(function (questionGroup) {
32512
+ questionGroup.pageFrom && arrOptions.push({
32513
+ label: t("page_number", {
32514
+ number: questionGroup.pageFrom
32515
+ }),
32516
+ value: questionGroup.pageFrom
32517
+ });
32518
+ });
32519
+ }
32520
+ });
32521
+ } else if ((_chapter$questionGrou = chapter.questionGroups) !== null && _chapter$questionGrou !== void 0 && _chapter$questionGrou.length) {
32522
+ chapter.questionGroups.map(function (questionGroup) {
32523
+ questionGroup.pageFrom && arrOptions.push({
32524
+ label: t("page_number", {
32525
+ number: questionGroup.pageFrom
32526
+ }),
32527
+ value: questionGroup.pageFrom
32528
+ });
32202
32529
  });
32203
32530
  }
32204
32531
  });
@@ -32881,7 +33208,7 @@ var TextbookDrawer = function TextbookDrawer(_ref) {
32881
33208
  }), React__default.createElement(Stack, {
32882
33209
  sx: {
32883
33210
  position: "absolute",
32884
- left: textbook !== null && textbook !== void 0 && textbook.progress && (textbook === null || textbook === void 0 ? void 0 : textbook.progress) > 7 ? (textbook === null || textbook === void 0 ? void 0 : textbook.progress) - 8 + "%" : ((textbook === null || textbook === void 0 ? void 0 : textbook.progress) || 0) + 3 + "%",
33211
+ left: "max(" + (textbook !== null && textbook !== void 0 && textbook.progress && (textbook === null || textbook === void 0 ? void 0 : textbook.progress) > 7 ? (textbook === null || textbook === void 0 ? void 0 : textbook.progress) - 8 + "%" : ((textbook === null || textbook === void 0 ? void 0 : textbook.progress) || 0) + 3 + "%") + ", 16px)",
32885
33212
  height: "100%",
32886
33213
  justifyContent: "center"
32887
33214
  }
@@ -33568,7 +33895,7 @@ var PreparedItem = function PreparedItem(_ref) {
33568
33895
  });
33569
33896
  return React__default.createElement(Form, {
33570
33897
  style: {
33571
- height: !_$5.isEmpty(values) && !textbookList.length ? "100%" : "unset"
33898
+ height: !_$6.isEmpty(values) && !textbookList.length ? "100%" : "unset"
33572
33899
  }
33573
33900
  }, React__default.createElement(Stack, null, React__default.createElement(Accordion, {
33574
33901
  sx: {
@@ -33974,7 +34301,7 @@ var PreparedItem = function PreparedItem(_ref) {
33974
34301
  open: openConfirmDialog,
33975
34302
  onClose: handleCloseConfirmDialog,
33976
34303
  onSubmit: handleResetFilter
33977
- }), !_$5.isEmpty(values) && !textbookList.length && React__default.createElement(Stack, {
34304
+ }), !_$6.isEmpty(values) && !textbookList.length && React__default.createElement(Stack, {
33978
34305
  height: 1,
33979
34306
  justifyContent: "center",
33980
34307
  alignItems: "center"
@@ -35077,5 +35404,5 @@ var LayoutContext = function LayoutContext(_ref) {
35077
35404
  });else return React__default.createElement(Fragment$1, null, children);
35078
35405
  };
35079
35406
 
35080
- export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, checkSuperUrl, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, isLocalHost, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setReadyRegisterPusher, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
35407
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, 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, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, checkSuperUrl, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, isLocalHost, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setReadyRegisterPusher, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
35081
35408
  //# sourceMappingURL=index.modern.js.map