touchstudy-core 0.1.140 → 0.1.142

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.
Files changed (94) hide show
  1. package/README.md +46 -46
  2. package/dist/StudyTouch_Character_v1_Question~jLFvuYmI.png +0 -0
  3. package/dist/components/Chats/ChatHeader.d.ts +25 -0
  4. package/dist/components/Chats/ChatItem.d.ts +31 -0
  5. package/dist/components/Chats/ChatLeftItem.d.ts +4 -0
  6. package/dist/components/Chats/ChatList.d.ts +14 -0
  7. package/dist/components/Chats/ChatRightItem.d.ts +4 -0
  8. package/dist/components/Chats/InputChat.d.ts +16 -0
  9. package/dist/components/Chats/components/CustomTooltip.d.ts +2 -0
  10. package/dist/components/CkEditor/CkEditor.d.ts +19 -0
  11. package/dist/components/CkEditor/config.d.ts +19 -0
  12. package/dist/components/CkEditor/index.d.ts +2 -0
  13. package/dist/components/ErrorHandler.d.ts +6 -0
  14. package/dist/components/LabelRequired.d.ts +8 -0
  15. package/dist/components/List/configs/interfaces.d.ts +1 -1
  16. package/dist/components/List/partials/VirtualListItem.d.ts +1 -1
  17. package/dist/components/Selectors/InActiveAcademySelector.d.ts +16 -0
  18. package/dist/components/Selects/CustomSelect.d.ts +1 -1
  19. package/dist/components/Tables/VirtualTableRowItem.d.ts +6 -5
  20. package/dist/components/Tables/VirtualTableView.d.ts +1 -1
  21. package/dist/components/Tables/configs/interfaces.d.ts +11 -4
  22. package/dist/components/Tables/hooks/useVirtualTableView.d.ts +7 -0
  23. package/dist/containers/Academies/hooks/usePassCodeDialog.d.ts +10 -0
  24. package/dist/containers/ExamResult/components/MyAnswer/components/CreateNewQuestion.d.ts +15 -0
  25. package/dist/containers/Exams/configs/types.d.ts +22 -0
  26. package/dist/containers/Notes/components/NoteItem.d.ts +1 -0
  27. package/dist/containers/PreparedTextbook/apiClients/academyService.d.ts +1 -0
  28. package/dist/containers/PreparedTextbook/apiClients/textbookService.d.ts +1 -1
  29. package/dist/containers/PreparedTextbook/components/AcademySelector.d.ts +1 -1
  30. package/dist/containers/PreparedTextbook/components/Article.d.ts +2 -3
  31. package/dist/containers/PreparedTextbook/components/ArticleBlock.d.ts +1 -0
  32. package/dist/containers/PreparedTextbook/components/ChapterBlock.d.ts +1 -0
  33. package/dist/containers/PreparedTextbook/components/ChapterBlockBody.d.ts +1 -0
  34. package/dist/containers/PreparedTextbook/components/CourseSelector.d.ts +1 -1
  35. package/dist/containers/PreparedTextbook/components/OwnerSelector.d.ts +3 -2
  36. package/dist/containers/PreparedTextbook/components/PreparedTextbookForm.d.ts +5 -0
  37. package/dist/containers/PreparedTextbook/components/QuestionBlock.d.ts +1 -1
  38. package/dist/containers/PreparedTextbook/components/QuestionGroupBlock.d.ts +1 -1
  39. package/dist/containers/PreparedTextbook/components/QuestionGroupBlockBody.d.ts +1 -0
  40. package/dist/containers/PreparedTextbook/components/TextbookContentsTab.d.ts +1 -0
  41. package/dist/containers/PreparedTextbook/components/TextbookInfoTab.d.ts +3 -1
  42. package/dist/containers/PreparedTextbook/components/TextbookOwners.d.ts +13 -0
  43. package/dist/containers/PreparedTextbook/components/TextbookOwnersTab.d.ts +2 -1
  44. package/dist/containers/PreparedTextbook/configs/constants.d.ts +2 -0
  45. package/dist/containers/PreparedTextbook/configs/enums.d.ts +5 -0
  46. package/dist/containers/PreparedTextbook/configs/functions.d.ts +17 -3
  47. package/dist/containers/PreparedTextbook/configs/interfaces.d.ts +2 -0
  48. package/dist/containers/PreparedTextbook/configs/types.d.ts +5 -3
  49. package/dist/containers/PreparedTextbook/hooks/useSelect.d.ts +8 -10
  50. package/dist/containers/PreparedTextbook/hooks/useTextbookManagement.d.ts +8 -1
  51. package/dist/containers/Textbooks/components/TextbookRow.d.ts +17 -0
  52. package/dist/containers/Textbooks/configs/types.d.ts +2 -0
  53. package/dist/containers/Textbooks/hooks/useTextbookList.d.ts +5 -2
  54. package/dist/containers/Textbooks/hooks/useTextbookShare.d.ts +0 -2
  55. package/dist/containers/Users/components/Dialogs/DeleteUserCsvDialog.d.ts +10 -0
  56. package/dist/containers/Users/components/Dialogs/RecentUserActionDialog.d.ts +9 -0
  57. package/dist/containers/Users/components/Dialogs/UserDialog.d.ts +12 -0
  58. package/dist/index.css +12 -12
  59. package/dist/index.js +1342 -749
  60. package/dist/index.js.map +1 -1
  61. package/dist/index.modern.js +1345 -761
  62. package/dist/index.modern.js.map +1 -1
  63. package/dist/tests/performances/do-exam-session-list-student.d.ts +19 -0
  64. package/dist/tests/performances/do-exam-session-request-answer-one-time.d.ts +19 -0
  65. package/dist/tests/performances/do-exam-session-skip-answer.d.ts +19 -0
  66. package/dist/tests/performances/do-exam-session2.d.ts +19 -0
  67. package/dist/utils/canAccessRoute.d.ts +2 -0
  68. package/dist/utils/constants.d.ts +2 -10
  69. package/dist/utils/diffFromNow.d.ts +3 -0
  70. package/dist/utils/encodeParams.d.ts +2 -0
  71. package/dist/utils/formatTime.d.ts +4 -0
  72. package/dist/utils/getAcademyDomain.d.ts +2 -0
  73. package/dist/utils/getAccessToken.d.ts +2 -0
  74. package/dist/utils/getErrorMessage.d.ts +1 -0
  75. package/dist/utils/getLanguage.d.ts +2 -0
  76. package/dist/utils/getLearningSpace.d.ts +2 -0
  77. package/dist/utils/getRedirectUrl.d.ts +2 -0
  78. package/dist/utils/helpers.d.ts +22 -0
  79. package/dist/utils/index.d.ts +1 -0
  80. package/dist/utils/isLocalHost.d.ts +2 -0
  81. package/dist/utils/minutesToTimeSpan.d.ts +2 -0
  82. package/dist/utils/pusherTo.d.ts +1 -0
  83. package/dist/utils/times.d.ts +6 -0
  84. package/dist/utils/toISOString.d.ts +2 -0
  85. package/dist/utils/toLocalTime.d.ts +1 -0
  86. package/dist/utils/types/checkSuperUrl.d.ts +1 -0
  87. package/dist/utils/types.d.ts +9 -0
  88. package/dist/utils/utcToLocalTime.d.ts +2 -0
  89. package/package.json +102 -102
  90. package/dist/.DS_Store +0 -0
  91. package/dist/components/.DS_Store +0 -0
  92. package/dist/containers/.DS_Store +0 -0
  93. package/dist/redux/.DS_Store +0 -0
  94. package/dist/utils/.DS_Store +0 -0
package/dist/index.js CHANGED
@@ -25,8 +25,9 @@ var _$5 = _interopDefault(require('lodash'));
25
25
  var reactGoogleLogin = require('@leecheuk/react-google-login');
26
26
  require('moment/locale/ko.js');
27
27
  require('moment/locale/en-au.js');
28
- var formik = require('formik');
29
28
  var reactVirtualized = require('react-virtualized');
29
+ var formik = require('formik');
30
+ var styles$c = require('@mui/material/styles');
30
31
  var tinymce = _interopDefault(require('tinymce'));
31
32
  require('@wiris/mathtype-tinymce6');
32
33
  var tinymceReact = require('@tinymce/tinymce-react');
@@ -66,7 +67,6 @@ var reactHookForm = require('react-hook-form');
66
67
  var yup$1 = require('@hookform/resolvers/yup');
67
68
  var pi = require('react-icons/pi');
68
69
  var Container = _interopDefault(require('@mui/material/Container'));
69
- var styles$c = require('@mui/material/styles');
70
70
  var Slider = _interopDefault(require('react-slick'));
71
71
  var gr = require('react-icons/gr');
72
72
  var Popover = _interopDefault(require('@mui/material/Popover'));
@@ -821,7 +821,7 @@ var delete_users_csv = "사용자 CSV 삭제";
821
821
  var are_you_sure_to_delete_users = "사용자를 삭제하시겠습니까?";
822
822
  var enter_phone_number = "전화번호를 입력하세요";
823
823
  var enter_school_name = "학교 이름을 입력하세요";
824
- var enter_grade = "성적 입력 (먼저 학교 이름을 입력하세요)";
824
+ var enter_grade = "성적 입력";
825
825
  var enter_major_name = "부서명을 입력하세요";
826
826
  var enter_parent_name = "부모 이름을 입력하세요";
827
827
  var enter_parent_phone_number = "부모 전화번호를 입력하세요";
@@ -1243,7 +1243,7 @@ var number_of_participants = "참가자 수";
1243
1243
  var chapter = "챕터";
1244
1244
  var published = "Published";
1245
1245
  var privated = "Privated";
1246
- var solution_results = "버튼 텍스트";
1246
+ var solution_results = "풀이 결과";
1247
1247
  var do_you_want_to_reset_your_search_criteria = "검색 조건을 초기화 하시겠습니까?";
1248
1248
  var the_search_keywords_you_enter_will_be_saved = "입력한 검색 키워드는 저장됩니다.";
1249
1249
  var no_search_results = "검색 결과가 없어요.";
@@ -1423,18 +1423,44 @@ var current_correct_answer_entered = "현재 입력한 정답";
1423
1423
  var correct_answer_is_required = "정답은 필수입니다.";
1424
1424
  var cancel_2 = "취소하기";
1425
1425
  var article_required = "기사가 필요합니다";
1426
- var elementary_school_1st_grade = "초등학교 1학년";
1427
- var elementary_school_2nd_grade = "초등학교 2학년";
1428
- var elementary_school_3rd_grade = "초등학교 3학년";
1429
- var elementary_school_4th_grade = "초등학교 4학년";
1430
- var elementary_school_5th_grade = "초등학교 5학년";
1431
- var elementary_school_6th_grade = "초등학교 6학년";
1432
- var middle_school_1st_grade = "중학교 1학년";
1433
- var middle_school_2nd_grade = "중학교 2학년";
1434
- var middle_school_3rd_grade = "중학교 3학년";
1435
- var high_school_1st_grade = "고등학교 1학년";
1436
- var high_school_2nd_grade = "고등학교 2학년";
1437
- var high_school_3rd_grade = "고등학교 3학년";
1426
+ var elementary_school_1st_grade = "1";
1427
+ var elementary_school_2nd_grade = "2";
1428
+ var elementary_school_3rd_grade = "3";
1429
+ var elementary_school_4th_grade = "4";
1430
+ var elementary_school_5th_grade = "5";
1431
+ var elementary_school_6th_grade = "6";
1432
+ var middle_school_1st_grade = "1";
1433
+ var middle_school_2nd_grade = "2";
1434
+ var middle_school_3rd_grade = "3";
1435
+ var high_school_1st_grade = "1";
1436
+ var high_school_2nd_grade = "2";
1437
+ var high_school_3rd_grade = "3";
1438
+ var n_year_retaker = "N수생";
1439
+ var es_1st = "초1";
1440
+ var es_2nd = "초2";
1441
+ var es_3rd = "초3";
1442
+ var es_4th = "초4";
1443
+ var es_5th = "초5";
1444
+ var es_6th = "초6";
1445
+ var ms_1st = "중1";
1446
+ var ms_2nd = "중2";
1447
+ var ms_3rd = "중3";
1448
+ var hs_1st = "고1";
1449
+ var hs_2nd = "고2";
1450
+ var hs_3rd = "고3";
1451
+ var n_retaker = "N수생";
1452
+ var today_class = "오늘 수업";
1453
+ var unit_number = "대단원 {{number}}";
1454
+ var sub_unit_number = "소단원 {{number}}";
1455
+ var text_group_n = "지문 그룹 {{n}}";
1456
+ var text_detail_n = "지문 상세 {{n}}";
1457
+ var question_group_n = "문제 그룹 {{n}}";
1458
+ var placeholder_teacher_selector = "선생님을 검색하려면 최소 2글자를 입력하세요.";
1459
+ var teacher_personal_textbook = "교사의 개인 교과서";
1460
+ var textbook_owner_email_is_required = "교재 소유자의 이메일은 필수입니다";
1461
+ var invalid_textbook_owner_email_address = "유효하지 않은 교재 소유자 이메일 주소입니다";
1462
+ var textbook_owner_academy_is_required = "교재 소유자의 학원은 필수입니다";
1463
+ var textbook_owner_course_is_required = "교재 소유자의 수업은 필수입니다";
1438
1464
  var lang_ko = {
1439
1465
  problem_solving: problem_solving,
1440
1466
  my_story: my_story,
@@ -2507,7 +2533,33 @@ var lang_ko = {
2507
2533
  middle_school_3rd_grade: middle_school_3rd_grade,
2508
2534
  high_school_1st_grade: high_school_1st_grade,
2509
2535
  high_school_2nd_grade: high_school_2nd_grade,
2510
- high_school_3rd_grade: high_school_3rd_grade
2536
+ high_school_3rd_grade: high_school_3rd_grade,
2537
+ n_year_retaker: n_year_retaker,
2538
+ es_1st: es_1st,
2539
+ es_2nd: es_2nd,
2540
+ es_3rd: es_3rd,
2541
+ es_4th: es_4th,
2542
+ es_5th: es_5th,
2543
+ es_6th: es_6th,
2544
+ ms_1st: ms_1st,
2545
+ ms_2nd: ms_2nd,
2546
+ ms_3rd: ms_3rd,
2547
+ hs_1st: hs_1st,
2548
+ hs_2nd: hs_2nd,
2549
+ hs_3rd: hs_3rd,
2550
+ n_retaker: n_retaker,
2551
+ today_class: today_class,
2552
+ unit_number: unit_number,
2553
+ sub_unit_number: sub_unit_number,
2554
+ text_group_n: text_group_n,
2555
+ text_detail_n: text_detail_n,
2556
+ question_group_n: question_group_n,
2557
+ placeholder_teacher_selector: placeholder_teacher_selector,
2558
+ teacher_personal_textbook: teacher_personal_textbook,
2559
+ textbook_owner_email_is_required: textbook_owner_email_is_required,
2560
+ invalid_textbook_owner_email_address: invalid_textbook_owner_email_address,
2561
+ textbook_owner_academy_is_required: textbook_owner_academy_is_required,
2562
+ textbook_owner_course_is_required: textbook_owner_course_is_required
2511
2563
  };
2512
2564
 
2513
2565
  var problem_solving$1 = "Problem Solving";
@@ -3011,7 +3063,7 @@ var delete_users_csv$1 = "Delete users csv";
3011
3063
  var are_you_sure_to_delete_users$1 = "Are you sure to delete users?";
3012
3064
  var enter_phone_number$1 = "Enter phone number";
3013
3065
  var enter_school_name$1 = "Enter school name";
3014
- var enter_grade$1 = "Enter grade (please enter school name first)";
3066
+ var enter_grade$1 = "Enter grade";
3015
3067
  var enter_major_name$1 = "Enter department name";
3016
3068
  var enter_parent_name$1 = "Enter parent name";
3017
3069
  var enter_parent_phone_number$1 = "Enter parent phone number";
@@ -3603,6 +3655,32 @@ var middle_school_3rd_grade$1 = "Middle school 3rd grade";
3603
3655
  var high_school_1st_grade$1 = "High school 1st grade";
3604
3656
  var high_school_2nd_grade$1 = "High school 2nd grade";
3605
3657
  var high_school_3rd_grade$1 = "High school 3rd grade";
3658
+ var n_year_retaker$1 = "N-year retaker";
3659
+ var es_1st$1 = "1st ES";
3660
+ var es_2nd$1 = "2nd ES";
3661
+ var es_3rd$1 = "3rd ES";
3662
+ var es_4th$1 = "4th ES";
3663
+ var es_5th$1 = "5th ES";
3664
+ var es_6th$1 = "6th ES";
3665
+ var ms_1st$1 = "1st MS";
3666
+ var ms_2nd$1 = "2nd MS";
3667
+ var ms_3rd$1 = "3rd MS";
3668
+ var hs_1st$1 = "1st HS";
3669
+ var hs_2nd$1 = "2nd HS";
3670
+ var hs_3rd$1 = "3rd HS";
3671
+ var n_retaker$1 = "N-retaker";
3672
+ var today_class$1 = "Today's class";
3673
+ var unit_number$1 = "Unit {{number}}";
3674
+ var sub_unit_number$1 = "Sub-unit {{number}}";
3675
+ var text_group_n$1 = "Text group {{n}}";
3676
+ var text_detail_n$1 = "Text details {{n}}";
3677
+ var question_group_n$1 = "Question group {{n}}";
3678
+ var placeholder_teacher_selector$1 = "Type at least 2 characters to search teacher";
3679
+ var teacher_personal_textbook$1 = "Teacher personal textbook";
3680
+ var textbook_owner_email_is_required$1 = "Textbook owner email is required";
3681
+ var invalid_textbook_owner_email_address$1 = "Invalid textbook owner email address";
3682
+ var textbook_owner_academy_is_required$1 = "Textbook owner academy is required";
3683
+ var textbook_owner_course_is_required$1 = "Textbook owner class is required";
3606
3684
  var lang_en = {
3607
3685
  problem_solving: problem_solving$1,
3608
3686
  my_story: my_story$1,
@@ -4677,7 +4755,33 @@ var lang_en = {
4677
4755
  middle_school_3rd_grade: middle_school_3rd_grade$1,
4678
4756
  high_school_1st_grade: high_school_1st_grade$1,
4679
4757
  high_school_2nd_grade: high_school_2nd_grade$1,
4680
- high_school_3rd_grade: high_school_3rd_grade$1
4758
+ high_school_3rd_grade: high_school_3rd_grade$1,
4759
+ n_year_retaker: n_year_retaker$1,
4760
+ es_1st: es_1st$1,
4761
+ es_2nd: es_2nd$1,
4762
+ es_3rd: es_3rd$1,
4763
+ es_4th: es_4th$1,
4764
+ es_5th: es_5th$1,
4765
+ es_6th: es_6th$1,
4766
+ ms_1st: ms_1st$1,
4767
+ ms_2nd: ms_2nd$1,
4768
+ ms_3rd: ms_3rd$1,
4769
+ hs_1st: hs_1st$1,
4770
+ hs_2nd: hs_2nd$1,
4771
+ hs_3rd: hs_3rd$1,
4772
+ n_retaker: n_retaker$1,
4773
+ today_class: today_class$1,
4774
+ unit_number: unit_number$1,
4775
+ sub_unit_number: sub_unit_number$1,
4776
+ text_group_n: text_group_n$1,
4777
+ text_detail_n: text_detail_n$1,
4778
+ question_group_n: question_group_n$1,
4779
+ placeholder_teacher_selector: placeholder_teacher_selector$1,
4780
+ teacher_personal_textbook: teacher_personal_textbook$1,
4781
+ textbook_owner_email_is_required: textbook_owner_email_is_required$1,
4782
+ invalid_textbook_owner_email_address: invalid_textbook_owner_email_address$1,
4783
+ textbook_owner_academy_is_required: textbook_owner_academy_is_required$1,
4784
+ textbook_owner_course_is_required: textbook_owner_course_is_required$1
4681
4785
  };
4682
4786
 
4683
4787
  i18n__default.use(reactI18next.initReactI18next).init({
@@ -4704,63 +4808,6 @@ var PrintState;
4704
4808
  PrintState[PrintState["Paused"] = 3] = "Paused";
4705
4809
  })(PrintState || (PrintState = {}));
4706
4810
 
4707
- (function (PreparedType) {
4708
- PreparedType[PreparedType["csat_past_questions"] = 1] = "csat_past_questions";
4709
- PreparedType[PreparedType["official_mock_exam"] = 2] = "official_mock_exam";
4710
- PreparedType[PreparedType["private_mock_exam"] = 3] = "private_mock_exam";
4711
- })(exports.PreparedType || (exports.PreparedType = {}));
4712
-
4713
- (function (ExamEvent) {
4714
- ExamEvent["StartExam"] = "start-exam";
4715
- ExamEvent["TerminateExam"] = "terminate-exam";
4716
- ExamEvent["AddExtraDuration"] = "add-extra-duration-exam";
4717
- ExamEvent["TeacherKickOutStudent"] = "teacher-kick-out-student";
4718
- })(exports.ExamEvent || (exports.ExamEvent = {}));
4719
-
4720
- (function (ExamStatus) {
4721
- ExamStatus[ExamStatus["Default"] = 0] = "Default";
4722
- ExamStatus[ExamStatus["Pending"] = 1] = "Pending";
4723
- ExamStatus[ExamStatus["InProgress"] = 2] = "InProgress";
4724
- ExamStatus[ExamStatus["Completed"] = 3] = "Completed";
4725
- })(exports.ExamStatus || (exports.ExamStatus = {}));
4726
- (function (QuestionAnswerType) {
4727
- QuestionAnswerType[QuestionAnswerType["SingleChoice"] = 0] = "SingleChoice";
4728
- QuestionAnswerType[QuestionAnswerType["MultipleChoice"] = 1] = "MultipleChoice";
4729
- QuestionAnswerType[QuestionAnswerType["ShortAnswer"] = 2] = "ShortAnswer";
4730
- })(exports.QuestionAnswerType || (exports.QuestionAnswerType = {}));
4731
-
4732
- (function (OrderType) {
4733
- OrderType["ASC"] = "ASC";
4734
- OrderType["DESC"] = "DESC";
4735
- })(exports.OrderType || (exports.OrderType = {}));
4736
-
4737
- (function (RecentUserAction) {
4738
- RecentUserAction["ViewedUser"] = "ViewedUser";
4739
- RecentUserAction["ViewedQNA"] = "ViewedQNA";
4740
- RecentUserAction["ViewedExamResult"] = "ViewedExamResult";
4741
- RecentUserAction["PrintedExamResult"] = "PrintedExamResult";
4742
- RecentUserAction["ViewedAttendance"] = "ViewedAttendance";
4743
- })(exports.RecentUserAction || (exports.RecentUserAction = {}));
4744
-
4745
- (function (UserSortColumn) {
4746
- UserSortColumn["CreatedAt"] = "CreatedAt";
4747
- UserSortColumn["FullName"] = "FullName";
4748
- UserSortColumn["PhoneNumber"] = "PhoneNumber";
4749
- UserSortColumn["Email"] = "Email";
4750
- UserSortColumn["SchoolName"] = "SchoolName";
4751
- UserSortColumn["Major"] = "Major";
4752
- UserSortColumn["ParentName"] = "ParentName";
4753
- UserSortColumn["ParentPhoneNumber"] = "ParentPhoneNumber";
4754
- UserSortColumn["Grade"] = "Grade";
4755
- })(exports.UserSortColumn || (exports.UserSortColumn = {}));
4756
-
4757
- (function (SchoolType) {
4758
- SchoolType[SchoolType["Default"] = 0] = "Default";
4759
- SchoolType[SchoolType["Elementary"] = 1] = "Elementary";
4760
- SchoolType[SchoolType["Middle"] = 2] = "Middle";
4761
- SchoolType[SchoolType["High"] = 3] = "High";
4762
- })(exports.SchoolType || (exports.SchoolType = {}));
4763
-
4764
4811
  var GOOGLE_RECAPTCHA_KEY = process.env.REACT_APP_GOOGLE_RECAPTCHA_KEY || "";
4765
4812
  var GOOGLE_CLIENT_ID = process.env.REACT_APP_GOOGLE_CLIENT_ID || "";
4766
4813
  var GOOGLE_RECAPTCHA_ID = process.env.REACT_APP_GOOGLE_RECAPTCHA_ID || "";
@@ -4829,17 +4876,7 @@ var DEFAULT_PAGING_RESPONSE = {
4829
4876
  totalItems: 0,
4830
4877
  totalPages: 0
4831
4878
  };
4832
- var SCHOOL_OPTIONS = [{
4833
- label: "elementary_school",
4834
- value: exports.SchoolType.Elementary
4835
- }, {
4836
- label: "middle_school",
4837
- value: exports.SchoolType.Middle
4838
- }, {
4839
- label: "high_school",
4840
- value: exports.SchoolType.High
4841
- }];
4842
- var ELEMENTARY_GRADES = [{
4879
+ var GRADE_OPTIONS = [{
4843
4880
  label: "elementary_school_1st_grade",
4844
4881
  value: 1
4845
4882
  }, {
@@ -4857,26 +4894,67 @@ var ELEMENTARY_GRADES = [{
4857
4894
  }, {
4858
4895
  label: "elementary_school_6th_grade",
4859
4896
  value: 6
4860
- }];
4861
- var MIDDLE_GRADES = [{
4897
+ }, {
4862
4898
  label: "middle_school_1st_grade",
4863
- value: 1
4899
+ value: 7
4864
4900
  }, {
4865
4901
  label: "middle_school_2nd_grade",
4866
- value: 2
4902
+ value: 8
4867
4903
  }, {
4868
4904
  label: "middle_school_3rd_grade",
4869
- value: 3
4870
- }];
4871
- var HIGH_GRADES = [{
4905
+ value: 9
4906
+ }, {
4872
4907
  label: "high_school_1st_grade",
4873
- value: 1
4908
+ value: 10
4874
4909
  }, {
4875
4910
  label: "high_school_2nd_grade",
4876
- value: 2
4911
+ value: 11
4877
4912
  }, {
4878
4913
  label: "high_school_3rd_grade",
4914
+ value: 12
4915
+ }, {
4916
+ label: "n_year_retaker",
4917
+ value: 13
4918
+ }];
4919
+ var BRIEF_GRADE_OPTIONS = [{
4920
+ label: "es_1st",
4921
+ value: 1
4922
+ }, {
4923
+ label: "es_2nd",
4924
+ value: 2
4925
+ }, {
4926
+ label: "es_3rd",
4879
4927
  value: 3
4928
+ }, {
4929
+ label: "es_4th",
4930
+ value: 4
4931
+ }, {
4932
+ label: "es_5th",
4933
+ value: 5
4934
+ }, {
4935
+ label: "es_6th",
4936
+ value: 6
4937
+ }, {
4938
+ label: "ms_1st",
4939
+ value: 7
4940
+ }, {
4941
+ label: "ms_2nd",
4942
+ value: 8
4943
+ }, {
4944
+ label: "ms_3rd",
4945
+ value: 9
4946
+ }, {
4947
+ label: "hs_1st",
4948
+ value: 10
4949
+ }, {
4950
+ label: "hs_2nd",
4951
+ value: 11
4952
+ }, {
4953
+ label: "hs_3rd",
4954
+ value: 12
4955
+ }, {
4956
+ label: "n_retaker",
4957
+ value: 13
4880
4958
  }];
4881
4959
 
4882
4960
  var utcToLocalTime = (function (time, FORMAT) {
@@ -5817,7 +5895,7 @@ var CustomCreatable = function CustomCreatable(_ref) {
5817
5895
  }, rest));
5818
5896
  };
5819
5897
 
5820
- var _excluded$2 = ["isDefault", "defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti", "optionValue"];
5898
+ var _excluded$2 = ["isDefault", "defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti", "optionValue", "styles"];
5821
5899
  var CustomSelect = function CustomSelect(_ref) {
5822
5900
  var isDefault = _ref.isDefault,
5823
5901
  options = _ref.options,
@@ -5826,6 +5904,7 @@ var CustomSelect = function CustomSelect(_ref) {
5826
5904
  value = _ref.value,
5827
5905
  isMulti = _ref.isMulti,
5828
5906
  optionValue = _ref.optionValue,
5907
+ styles = _ref.styles,
5829
5908
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
5830
5909
  var _useTranslation = reactI18next.useTranslation(),
5831
5910
  t = _useTranslation.t;
@@ -5850,7 +5929,7 @@ var CustomSelect = function CustomSelect(_ref) {
5850
5929
  DropdownIndicator: DropdownIndicator,
5851
5930
  Option: CustomOption
5852
5931
  },
5853
- styles: customStyles,
5932
+ styles: _extends({}, customStyles, styles),
5854
5933
  placeholder: t("select_placeholder")
5855
5934
  }, rest));
5856
5935
  };
@@ -6022,6 +6101,63 @@ function _finally(body, finalizer) {
6022
6101
  return finalizer();
6023
6102
  }
6024
6103
 
6104
+ (function (PreparedType) {
6105
+ PreparedType[PreparedType["csat_past_questions"] = 1] = "csat_past_questions";
6106
+ PreparedType[PreparedType["official_mock_exam"] = 2] = "official_mock_exam";
6107
+ PreparedType[PreparedType["private_mock_exam"] = 3] = "private_mock_exam";
6108
+ })(exports.PreparedType || (exports.PreparedType = {}));
6109
+
6110
+ (function (ExamEvent) {
6111
+ ExamEvent["StartExam"] = "start-exam";
6112
+ ExamEvent["TerminateExam"] = "terminate-exam";
6113
+ ExamEvent["AddExtraDuration"] = "add-extra-duration-exam";
6114
+ ExamEvent["TeacherKickOutStudent"] = "teacher-kick-out-student";
6115
+ })(exports.ExamEvent || (exports.ExamEvent = {}));
6116
+
6117
+ (function (ExamStatus) {
6118
+ ExamStatus[ExamStatus["Default"] = 0] = "Default";
6119
+ ExamStatus[ExamStatus["Pending"] = 1] = "Pending";
6120
+ ExamStatus[ExamStatus["InProgress"] = 2] = "InProgress";
6121
+ ExamStatus[ExamStatus["Completed"] = 3] = "Completed";
6122
+ })(exports.ExamStatus || (exports.ExamStatus = {}));
6123
+ (function (QuestionAnswerType) {
6124
+ QuestionAnswerType[QuestionAnswerType["SingleChoice"] = 0] = "SingleChoice";
6125
+ QuestionAnswerType[QuestionAnswerType["MultipleChoice"] = 1] = "MultipleChoice";
6126
+ QuestionAnswerType[QuestionAnswerType["ShortAnswer"] = 2] = "ShortAnswer";
6127
+ })(exports.QuestionAnswerType || (exports.QuestionAnswerType = {}));
6128
+
6129
+ (function (OrderType) {
6130
+ OrderType["ASC"] = "ASC";
6131
+ OrderType["DESC"] = "DESC";
6132
+ })(exports.OrderType || (exports.OrderType = {}));
6133
+
6134
+ (function (RecentUserAction) {
6135
+ RecentUserAction["ViewedUser"] = "ViewedUser";
6136
+ RecentUserAction["ViewedQNA"] = "ViewedQNA";
6137
+ RecentUserAction["ViewedExamResult"] = "ViewedExamResult";
6138
+ RecentUserAction["PrintedExamResult"] = "PrintedExamResult";
6139
+ RecentUserAction["ViewedAttendance"] = "ViewedAttendance";
6140
+ })(exports.RecentUserAction || (exports.RecentUserAction = {}));
6141
+
6142
+ (function (UserSortColumn) {
6143
+ UserSortColumn["CreatedAt"] = "CreatedAt";
6144
+ UserSortColumn["FullName"] = "FullName";
6145
+ UserSortColumn["PhoneNumber"] = "PhoneNumber";
6146
+ UserSortColumn["Email"] = "Email";
6147
+ UserSortColumn["SchoolName"] = "SchoolName";
6148
+ UserSortColumn["Major"] = "Major";
6149
+ UserSortColumn["ParentName"] = "ParentName";
6150
+ UserSortColumn["ParentPhoneNumber"] = "ParentPhoneNumber";
6151
+ UserSortColumn["Grade"] = "Grade";
6152
+ })(exports.UserSortColumn || (exports.UserSortColumn = {}));
6153
+
6154
+ (function (SchoolType) {
6155
+ SchoolType[SchoolType["Default"] = 0] = "Default";
6156
+ SchoolType[SchoolType["Elementary"] = 1] = "Elementary";
6157
+ SchoolType[SchoolType["Middle"] = 2] = "Middle";
6158
+ SchoolType[SchoolType["High"] = 3] = "High";
6159
+ })(exports.SchoolType || (exports.SchoolType = {}));
6160
+
6025
6161
  var canAccess = function canAccess(userRoles, componentRoles) {
6026
6162
  if (!Array.isArray(userRoles)) {
6027
6163
  return false;
@@ -9483,7 +9619,198 @@ var ListView = function ListView(_ref) {
9483
9619
  }));
9484
9620
  };
9485
9621
 
9486
- var VirtualTableEmpty = function VirtualTableEmpty(_ref) {
9622
+ var useVirtualListView = function useVirtualListView(props) {
9623
+ var data = props.data,
9624
+ loading = props.loading,
9625
+ onLoadMore = props.onLoadMore;
9626
+ var handleLoadMore = function handleLoadMore() {
9627
+ if (loading) return;
9628
+ onLoadMore === null || onLoadMore === void 0 ? void 0 : onLoadMore();
9629
+ };
9630
+ var onScroll = function onScroll(_ref) {
9631
+ var scrollTop = _ref.scrollTop,
9632
+ clientHeight = _ref.clientHeight,
9633
+ scrollHeight = _ref.scrollHeight;
9634
+ if (scrollTop + clientHeight >= scrollHeight - 100) {
9635
+ handleLoadMore();
9636
+ }
9637
+ };
9638
+ var rowCount = data.length + (loading ? 1 : 0);
9639
+ return {
9640
+ rowCount: rowCount,
9641
+ onScroll: onScroll
9642
+ };
9643
+ };
9644
+
9645
+ var cellMeasurerCache = new reactVirtualized.CellMeasurerCache({
9646
+ fixedWidth: true,
9647
+ defaultHeight: 50
9648
+ });
9649
+
9650
+ var grey = {
9651
+ 0: '#FFFFFF',
9652
+ 50: "#FBFBF9",
9653
+ 100: '#EAEAE5',
9654
+ 200: '#F4F6F8',
9655
+ 300: '#D0D0C8',
9656
+ 400: '#C4CDD5',
9657
+ 500: '#9A9A98',
9658
+ 600: '#637381',
9659
+ 700: '#5D5D5B',
9660
+ 800: '#212B36',
9661
+ 900: '#363634'
9662
+ };
9663
+ var green = {
9664
+ 0: '#FFFFFF',
9665
+ 100: '#F0FFF6',
9666
+ 300: '#89F0B2',
9667
+ 500: '#3DC674',
9668
+ 700: '#349056',
9669
+ 900: '#18442A'
9670
+ };
9671
+ var main_theme = {
9672
+ lighter: green[100],
9673
+ light: green[300],
9674
+ less_dark: green[500],
9675
+ dark: green[700],
9676
+ darker: green[900]
9677
+ };
9678
+ var primary = {
9679
+ lighter: '#D0ECFE',
9680
+ light: '#73BAFB',
9681
+ main: '#1877F2',
9682
+ dark: '#0C44AE',
9683
+ darker: '#042174',
9684
+ contrastText: '#FFFFFF'
9685
+ };
9686
+ var secondary = {
9687
+ lighter: '#EFD6FF',
9688
+ light: '#C684FF',
9689
+ main: '#8E33FF',
9690
+ dark: '#5119B7',
9691
+ darker: '#27097A',
9692
+ contrastText: '#FFFFFF'
9693
+ };
9694
+ var info = {
9695
+ lighter: '#CAFDF5',
9696
+ light: '#61F3F3',
9697
+ main: '#00B8D9',
9698
+ dark: '#006C9C',
9699
+ darker: '#003768',
9700
+ contrastText: '#FFFFFF'
9701
+ };
9702
+ var success = {
9703
+ lighter: '#C8FAD6',
9704
+ light: '#5BE49B',
9705
+ main: '#00A76F',
9706
+ dark: '#007867',
9707
+ darker: '#004B50',
9708
+ contrastText: '#FFFFFF'
9709
+ };
9710
+ var warning$1 = {
9711
+ lighter: '#FFF5CC',
9712
+ light: '#FFD666',
9713
+ main: '#FFAB00',
9714
+ dark: '#B76E00',
9715
+ darker: '#7A4100',
9716
+ contrastText: grey[800]
9717
+ };
9718
+ var error = {
9719
+ lighter: '#FFE9D5',
9720
+ light: '#FFAC82',
9721
+ main: '#FF5630',
9722
+ dark: '#B71D18',
9723
+ darker: '#7A0916',
9724
+ contrastText: '#FFFFFF'
9725
+ };
9726
+ var red = {
9727
+ 100: '#FEF8F8',
9728
+ 300: '#FEF8F8',
9729
+ 500: '#F4CACA',
9730
+ 900: '#DB4D4D'
9731
+ };
9732
+ var yellow = {
9733
+ 900: '#FEAF06'
9734
+ };
9735
+ var green_support = {
9736
+ 100: '#F6FDF7',
9737
+ 500: '#AEEAB3',
9738
+ 900: '#3ACB46'
9739
+ };
9740
+ var purple = {
9741
+ 900: '#C3099A'
9742
+ };
9743
+ var dark_purple = {
9744
+ 900: '#6B0861'
9745
+ };
9746
+ var dark_red = {
9747
+ 900: '#800202'
9748
+ };
9749
+ var common = {
9750
+ black: '#000000',
9751
+ white: '#FFFFFF'
9752
+ };
9753
+ var action$2 = {
9754
+ hover: styles$c.alpha(grey[500], 0.08),
9755
+ selected: styles$c.alpha(grey[500], 0.16),
9756
+ disabled: styles$c.alpha(grey[500], 0.8),
9757
+ disabledBackground: styles$c.alpha(grey[500], 0.24),
9758
+ focus: styles$c.alpha(grey[500], 0.24),
9759
+ hoverOpacity: 0.08,
9760
+ disabledOpacity: 0.48
9761
+ };
9762
+ var base = {
9763
+ primary: primary,
9764
+ secondary: secondary,
9765
+ info: info,
9766
+ main_theme: main_theme,
9767
+ success: success,
9768
+ warning: warning$1,
9769
+ error: error,
9770
+ grey: grey,
9771
+ common: common,
9772
+ red: red,
9773
+ yellow: yellow,
9774
+ green_support: green_support,
9775
+ purple: purple,
9776
+ dark_purple: dark_purple,
9777
+ dark_red: dark_red,
9778
+ divider: styles$c.alpha(grey[500], 0.2),
9779
+ action: action$2
9780
+ };
9781
+
9782
+ var VirtualListItem = function VirtualListItem(_ref) {
9783
+ var isLoading = _ref.isLoading,
9784
+ rowData = _ref.rowData,
9785
+ style = _ref.style,
9786
+ parent = _ref.parent,
9787
+ index = _ref.index,
9788
+ renderItem = _ref.renderItem,
9789
+ loadingElement = _ref.loadingElement;
9790
+ return React__default.createElement(reactVirtualized.CellMeasurer, {
9791
+ cache: cellMeasurerCache,
9792
+ columnIndex: 0,
9793
+ rowIndex: index,
9794
+ key: rowData === null || rowData === void 0 ? void 0 : rowData.id,
9795
+ parent: parent
9796
+ }, function (_ref2) {
9797
+ var measure = _ref2.measure;
9798
+ return React__default.createElement("div", {
9799
+ key: rowData === null || rowData === void 0 ? void 0 : rowData.id,
9800
+ style: style
9801
+ }, isLoading && !!loadingElement && loadingElement, isLoading && !loadingElement && React__default.createElement(material.Box, {
9802
+ p: 1,
9803
+ className: "d-flex justify-content-center align-items-center w-100"
9804
+ }, React__default.createElement(material.CircularProgress, {
9805
+ size: 24,
9806
+ sx: {
9807
+ color: grey[700]
9808
+ }
9809
+ })), !isLoading && renderItem(rowData, index, measure));
9810
+ });
9811
+ };
9812
+
9813
+ var VirtualEmptyItem = function VirtualEmptyItem(_ref) {
9487
9814
  var emptyElement = _ref.emptyElement;
9488
9815
  var _useTranslation = reactI18next.useTranslation(),
9489
9816
  t = _useTranslation.t;
@@ -9496,70 +9823,195 @@ var VirtualTableEmpty = function VirtualTableEmpty(_ref) {
9496
9823
  var VirtualListView = function VirtualListView(props) {
9497
9824
  var data = props.data,
9498
9825
  containerProps = props.containerProps,
9826
+ listHeight = props.listHeight,
9827
+ _props$overscanRowCou = props.overscanRowCount,
9828
+ overscanRowCount = _props$overscanRowCou === void 0 ? 5 : _props$overscanRowCou,
9499
9829
  renderItem = props.renderItem,
9500
9830
  emptyElement = props.emptyElement,
9501
- loading = props.loading,
9502
- loadingElement = props.loadingElement,
9503
- listHeight = props.listHeight;
9831
+ loadingElement = props.loadingElement;
9832
+ var _useVirtualListView = useVirtualListView(props),
9833
+ rowCount = _useVirtualListView.rowCount,
9834
+ onScroll = _useVirtualListView.onScroll;
9835
+ var rowRenderer = function rowRenderer(props) {
9836
+ var index = props.index;
9837
+ var isLoading = index === data.length;
9838
+ var rowData = isLoading ? undefined : data[index];
9839
+ return React__default.createElement(VirtualListItem, Object.assign({}, props, {
9840
+ rowData: rowData,
9841
+ isLoading: isLoading,
9842
+ renderItem: renderItem,
9843
+ loadingElement: loadingElement
9844
+ }));
9845
+ };
9846
+ var noRowsRenderer = function noRowsRenderer() {
9847
+ return React__default.createElement(VirtualEmptyItem, {
9848
+ emptyElement: emptyElement
9849
+ });
9850
+ };
9504
9851
  return React__default.createElement(material.Box, Object.assign({}, containerProps), React__default.createElement(reactVirtualized.AutoSizer, {
9505
9852
  disableHeight: !!listHeight
9506
9853
  }, function (_ref) {
9507
9854
  var width = _ref.width,
9508
9855
  height = _ref.height;
9509
- return React__default.createElement(material.Box, {
9856
+ return React__default.createElement(reactVirtualized.List, {
9510
9857
  width: width,
9511
- height: height,
9512
- overflow: "auto"
9513
- }, loading && React__default.createElement(React.Fragment, null, loadingElement != null ? loadingElement : React__default.createElement(material.Box, {
9858
+ height: listHeight || height,
9859
+ rowCount: rowCount,
9860
+ rowHeight: cellMeasurerCache.rowHeight,
9861
+ rowRenderer: rowRenderer,
9862
+ deferredMeasurementCache: cellMeasurerCache,
9863
+ overscanRowCount: overscanRowCount,
9864
+ noRowsRenderer: noRowsRenderer,
9865
+ onScroll: onScroll
9866
+ });
9867
+ }));
9868
+ };
9869
+
9870
+ var cellMeasurerCache$1 = new reactVirtualized.CellMeasurerCache({
9871
+ defaultWidth: 100,
9872
+ defaultHeight: 50
9873
+ });
9874
+
9875
+ var VirtualTableRowItem = function VirtualTableRowItem(_ref) {
9876
+ var isLoading = _ref.isLoading,
9877
+ style = _ref.style,
9878
+ parent = _ref.parent,
9879
+ rowIndex = _ref.rowIndex,
9880
+ columnIndex = _ref.columnIndex,
9881
+ renderItem = _ref.renderItem,
9882
+ loadingElement = _ref.loadingElement,
9883
+ cellMeasurerCache = _ref.cellMeasurerCache;
9884
+ return React__default.createElement(reactVirtualized.CellMeasurer, {
9885
+ cache: cellMeasurerCache,
9886
+ columnIndex: columnIndex,
9887
+ rowIndex: rowIndex,
9888
+ key: rowIndex + "-" + columnIndex,
9889
+ parent: parent
9890
+ }, function (_ref2) {
9891
+ var measure = _ref2.measure;
9892
+ return React__default.createElement("div", {
9893
+ style: style
9894
+ }, isLoading && !!loadingElement && loadingElement, isLoading && !loadingElement && React__default.createElement(material.Box, {
9514
9895
  p: 1,
9515
9896
  className: "d-flex justify-content-center align-items-center w-100"
9516
9897
  }, React__default.createElement(material.CircularProgress, {
9517
9898
  size: 24,
9518
9899
  sx: {
9519
- color: "#5d5d5b"
9900
+ color: grey[700]
9520
9901
  }
9521
- }))), !loading && !data.length && React__default.createElement(VirtualTableEmpty, {
9522
- emptyElement: emptyElement
9523
- }), !loading && !!data.length && React__default.createElement(ListView, {
9524
- data: data,
9525
- render: renderItem
9526
- }));
9527
- }));
9902
+ })), !isLoading && renderItem(rowIndex, columnIndex, measure));
9903
+ });
9528
9904
  };
9905
+ var VirtualTableRowItem$1 = React.memo(VirtualTableRowItem);
9529
9906
 
9907
+ var VirtualTableEmpty = function VirtualTableEmpty(_ref) {
9908
+ var emptyElement = _ref.emptyElement;
9909
+ var _useTranslation = reactI18next.useTranslation(),
9910
+ t = _useTranslation.t;
9911
+ if (emptyElement) return emptyElement;
9912
+ return React__default.createElement(material.Box, null, React__default.createElement(material.Typography, {
9913
+ className: "text-center text-muted"
9914
+ }, t("no_data")));
9915
+ };
9916
+
9917
+ var useVirtualTableView = function useVirtualTableView(props) {
9918
+ var itemsCount = props.itemsCount,
9919
+ loading = props.loading,
9920
+ hasHeader = props.hasHeader,
9921
+ onLoadMore = props.onLoadMore;
9922
+ var handleLoadMore = function handleLoadMore() {
9923
+ if (loading) return;
9924
+ onLoadMore === null || onLoadMore === void 0 ? void 0 : onLoadMore();
9925
+ };
9926
+ var onScroll = function onScroll(_ref) {
9927
+ var scrollTop = _ref.scrollTop,
9928
+ clientHeight = _ref.clientHeight,
9929
+ scrollHeight = _ref.scrollHeight;
9930
+ if (scrollTop + clientHeight >= scrollHeight - 100) {
9931
+ handleLoadMore();
9932
+ }
9933
+ };
9934
+ var rowCount = React.useMemo(function () {
9935
+ return itemsCount + (loading ? 1 : itemsCount === 1 && hasHeader ? 1 : 0);
9936
+ }, [itemsCount, loading, hasHeader]);
9937
+ return {
9938
+ rowCount: rowCount,
9939
+ onScroll: onScroll
9940
+ };
9941
+ };
9942
+
9943
+ var _excluded$5 = ["containerProps", "listHeight", "overscanRowCount", "overscanColumnCount", "renderItem", "emptyElement", "loadingElement", "fixedColumnCount", "fixedRowCount", "listWidth", "itemsCount", "cellCache", "columnWidth", "containerRef", "multiGridRef"];
9530
9944
  var VirtualTableView = function VirtualTableView(props) {
9531
- var data = props.data,
9532
- containerProps = props.containerProps,
9945
+ var containerProps = props.containerProps,
9946
+ listHeight = props.listHeight,
9947
+ _props$overscanRowCou = props.overscanRowCount,
9948
+ overscanRowCount = _props$overscanRowCou === void 0 ? 5 : _props$overscanRowCou,
9949
+ _props$overscanColumn = props.overscanColumnCount,
9950
+ overscanColumnCount = _props$overscanColumn === void 0 ? 5 : _props$overscanColumn,
9533
9951
  renderItem = props.renderItem,
9534
9952
  emptyElement = props.emptyElement,
9535
- columnCount = props.columnCount,
9536
- loading = props.loading,
9537
- loadingElement = props.loadingElement;
9538
- var containerRef = React.useRef(null);
9539
- var renderTableRow = function renderTableRow(_, index) {
9540
- return React__default.createElement(material.Stack, {
9541
- direction: "row"
9542
- }, Array.from({
9543
- length: columnCount
9544
- }, function (_, colIndex) {
9545
- return renderItem(index, colIndex);
9953
+ loadingElement = props.loadingElement,
9954
+ fixedColumnCount = props.fixedColumnCount,
9955
+ fixedRowCount = props.fixedRowCount,
9956
+ listWidth = props.listWidth,
9957
+ itemsCount = props.itemsCount,
9958
+ cellCache = props.cellCache,
9959
+ columnWidth = props.columnWidth,
9960
+ containerRef = props.containerRef,
9961
+ multiGridRef = props.multiGridRef,
9962
+ rest = _objectWithoutPropertiesLoose(props, _excluded$5);
9963
+ var cache = cellCache != null ? cellCache : cellMeasurerCache$1;
9964
+ var _useVirtualTableView = useVirtualTableView(props),
9965
+ rowCount = _useVirtualTableView.rowCount,
9966
+ onScroll = _useVirtualTableView.onScroll;
9967
+ var cellRenderer = function cellRenderer(props) {
9968
+ var rowIndex = props.rowIndex,
9969
+ columnIndex = props.columnIndex;
9970
+ var isLoading = rowIndex === itemsCount && columnIndex === 0;
9971
+ return React__default.createElement(VirtualTableRowItem$1, Object.assign({}, props, {
9972
+ isLoading: isLoading,
9973
+ renderItem: renderItem,
9974
+ loadingElement: loadingElement,
9975
+ cellMeasurerCache: cache
9546
9976
  }));
9547
9977
  };
9978
+ var noRowsRenderer = function noRowsRenderer() {
9979
+ return React__default.createElement(VirtualTableEmpty, {
9980
+ emptyElement: emptyElement
9981
+ });
9982
+ };
9983
+ var columnWidthRendered = function columnWidthRendered(params) {
9984
+ if (typeof columnWidth === "number") return columnWidth;
9985
+ var cw = cache.columnWidth(params);
9986
+ if (columnWidth === undefined) return cw;
9987
+ return columnWidth(params, cache);
9988
+ };
9548
9989
  return React__default.createElement(material.Box, Object.assign({
9549
9990
  ref: containerRef
9550
- }, containerProps), loading && React__default.createElement(React.Fragment, null, loadingElement != null ? loadingElement : React__default.createElement(material.Box, {
9551
- p: 1,
9552
- className: "d-flex justify-content-center align-items-center w-100"
9553
- }, React__default.createElement(material.CircularProgress, {
9554
- size: 24,
9555
- sx: {
9556
- color: "#5d5d5b"
9557
- }
9558
- }))), !loading && !data.length && React__default.createElement(VirtualTableEmpty, {
9559
- emptyElement: emptyElement
9560
- }), !loading && !!data.length && React__default.createElement(ListView, {
9561
- data: data,
9562
- render: renderTableRow
9991
+ }, containerProps), React__default.createElement(reactVirtualized.AutoSizer, {
9992
+ disableWidth: !!listWidth,
9993
+ disableHeight: !!listHeight
9994
+ }, function (_ref) {
9995
+ var width = _ref.width,
9996
+ height = _ref.height;
9997
+ return React__default.createElement(reactVirtualized.MultiGrid, Object.assign({
9998
+ ref: multiGridRef,
9999
+ fixedRowCount: fixedRowCount,
10000
+ fixedColumnCount: fixedColumnCount,
10001
+ cellRenderer: cellRenderer,
10002
+ enableFixedColumnScroll: !!fixedColumnCount,
10003
+ enableFixedRowScroll: !!fixedRowCount,
10004
+ columnWidth: columnWidthRendered,
10005
+ height: listHeight || height,
10006
+ rowHeight: cache.rowHeight,
10007
+ deferredMeasurementCache: cache,
10008
+ rowCount: rowCount,
10009
+ width: listWidth || width,
10010
+ overscanRowCount: overscanRowCount,
10011
+ overscanColumnCount: overscanColumnCount,
10012
+ noRowsRenderer: noRowsRenderer,
10013
+ onScroll: onScroll
10014
+ }, rest));
9563
10015
  }));
9564
10016
  };
9565
10017
 
@@ -9571,6 +10023,7 @@ var MathTinyEditor = function MathTinyEditor(_ref) {
9571
10023
  onChange = _ref.onChange,
9572
10024
  initValue = _ref.initValue,
9573
10025
  config = _ref.config;
10026
+ var isFirstChange = React.useRef(true);
9574
10027
  React.useEffect(function () {
9575
10028
  if (window.tinymce) {
9576
10029
  window.tinymce = tinymce;
@@ -9580,17 +10033,23 @@ var MathTinyEditor = function MathTinyEditor(_ref) {
9580
10033
  return htmlString.replace(/\s(mathcolor|mathsize|mathvariant|mathvariant|color|fontsize|style)="[^"]*"/g, "");
9581
10034
  };
9582
10035
  var handleChange = function handleChange(value, _) {
10036
+ if (isFirstChange.current) {
10037
+ isFirstChange.current = false;
10038
+ return;
10039
+ }
9583
10040
  var textFilter = removeMathAttributes(value);
9584
10041
  onChange(textFilter);
9585
10042
  };
9586
10043
  var options = {
9587
- height: 130,
10044
+ height: 100,
10045
+ statusbar: false,
9588
10046
  menubar: false,
9589
10047
  external_plugins: {
9590
10048
  tiny_mce_wiris: '/editor/wiris-for-tinymce.js'
9591
10049
  },
9592
10050
  toolbar: "tiny_mce_wiris_formulaEditor tiny_mce_wiris_formulaEditorChemistry",
9593
10051
  branding: false,
10052
+ resize: false,
9594
10053
  extended_valid_elements: '*[.*]'
9595
10054
  };
9596
10055
  return React__default.createElement(tinymceReact.Editor, {
@@ -11114,10 +11573,10 @@ var LoginQRCode = function LoginQRCode(props) {
11114
11573
  }));
11115
11574
  };
11116
11575
 
11117
- var _excluded$5 = ["history"];
11576
+ var _excluded$6 = ["history"];
11118
11577
  var Login = function Login(_ref) {
11119
11578
  var history = _ref.history,
11120
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
11579
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
11121
11580
  var _useLogin = useLogin$1({
11122
11581
  homeAcademyUrl: rest.homeAcademyUrl,
11123
11582
  homeUrl: rest.homeUrl,
@@ -12091,11 +12550,11 @@ var DEFAULT_USER_FILTERS = {
12091
12550
 
12092
12551
  var styles$2 = {"avatar":"_2rJkZ","date-picker":"_1iqE2","time-picker":"_20xtc","teacher-selector-wrapper":"_3L1Oj"};
12093
12552
 
12094
- var _excluded$6 = ["teachers", "value"];
12553
+ var _excluded$7 = ["teachers", "value"];
12095
12554
  var TeacherSelector = function TeacherSelector(_ref) {
12096
12555
  var teachers = _ref.teachers,
12097
12556
  value = _ref.value,
12098
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
12557
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
12099
12558
  var teacherOptions = teachers.map(function (i) {
12100
12559
  return {
12101
12560
  label: i.teacherName + "/" + i.teacherEmail,
@@ -13387,7 +13846,7 @@ var useTeacherList = function useTeacherList() {
13387
13846
  };
13388
13847
  };
13389
13848
 
13390
- var _excluded$7 = ["getStudents"],
13849
+ var _excluded$8 = ["getStudents"],
13391
13850
  _excluded2 = ["getTeachers"],
13392
13851
  _excluded3 = ["getLessons"];
13393
13852
  var PAGE_TITLE$4 = "classes";
@@ -13438,7 +13897,7 @@ var useClassDetail = function useClassDetail(_ref) {
13438
13897
  };
13439
13898
  var _useStudentClassList = useStudentClassList(classId),
13440
13899
  getStudents = _useStudentClassList.getStudents,
13441
- studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$7);
13900
+ studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$8);
13442
13901
  var _useTeacherClassList = useTeacherClassList(classId),
13443
13902
  getTeachers = _useTeacherClassList.getTeachers,
13444
13903
  teacherListProps = _objectWithoutPropertiesLoose(_useTeacherClassList, _excluded2);
@@ -14188,12 +14647,12 @@ var LessonList = function LessonList(_ref) {
14188
14647
  }));
14189
14648
  };
14190
14649
 
14191
- var _excluded$8 = ["children", "value", "index"];
14650
+ var _excluded$9 = ["children", "value", "index"];
14192
14651
  var CustomTabPanel = function CustomTabPanel(props) {
14193
14652
  var children = props.children,
14194
14653
  value = props.value,
14195
14654
  index = props.index,
14196
- other = _objectWithoutPropertiesLoose(props, _excluded$8);
14655
+ other = _objectWithoutPropertiesLoose(props, _excluded$9);
14197
14656
  return React__default.createElement("div", Object.assign({
14198
14657
  role: "tabpanel",
14199
14658
  hidden: value !== index,
@@ -19563,9 +20022,7 @@ var useNotes = function useNotes(setFilter, filter) {
19563
20022
  }
19564
20023
  setLoadingNotes(true);
19565
20024
  var _temp = _catch(function () {
19566
- return Promise.resolve(getNotesApi(_extends({}, filter, {
19567
- currentPage: -1
19568
- }))).then(function (res) {
20025
+ return Promise.resolve(getNotesApi(filter)).then(function (res) {
19569
20026
  var data = res.data;
19570
20027
  setTotalPages((data === null || data === void 0 ? void 0 : data.totalPages) || 0);
19571
20028
  var items = (data === null || data === void 0 ? void 0 : data.items) || [];
@@ -19631,7 +20088,8 @@ var NoteItem = function NoteItem(_ref) {
19631
20088
  _ref$placement = _ref.placement,
19632
20089
  placement = _ref$placement === void 0 ? "bottom-end" : _ref$placement,
19633
20090
  onClose = _ref.onClose,
19634
- onOpen = _ref.onOpen;
20091
+ onOpen = _ref.onOpen,
20092
+ onLoad = _ref.onLoad;
19635
20093
  var _useTranslation = reactI18next.useTranslation(),
19636
20094
  t = _useTranslation.t;
19637
20095
  var handleMoreClick = function handleMoreClick(e) {
@@ -19639,6 +20097,9 @@ var NoteItem = function NoteItem(_ref) {
19639
20097
  e.stopPropagation();
19640
20098
  onOpen(data);
19641
20099
  };
20100
+ React.useEffect(function () {
20101
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad();
20102
+ }, []);
19642
20103
  return React__default.createElement(material.Box, Object.assign({}, NoteItemStyles.root), React__default.createElement(material.Stack, {
19643
20104
  direction: "row",
19644
20105
  gap: 1,
@@ -19686,7 +20147,7 @@ var NotesContainer = function NotesContainer(_ref) {
19686
20147
  itemActions = _ref.itemActions,
19687
20148
  noteIdContextMenu = _ref.noteIdContextMenu,
19688
20149
  containerListProps = _ref.containerListProps;
19689
- var renderItem = function renderItem(item, _) {
20150
+ var renderItem = function renderItem(item, _, measure) {
19690
20151
  var isSelected = noteIdContextMenu === item.id;
19691
20152
  return React__default.createElement(material.Box, {
19692
20153
  key: item.id,
@@ -19697,7 +20158,8 @@ var NotesContainer = function NotesContainer(_ref) {
19697
20158
  openTooltip: isSelected,
19698
20159
  actions: itemActions,
19699
20160
  onOpen: onOpenTooltip,
19700
- onClose: onCloseTooltip
20161
+ onClose: onCloseTooltip,
20162
+ onLoad: measure
19701
20163
  }));
19702
20164
  };
19703
20165
  return React__default.createElement(VirtualListView, {
@@ -21535,14 +21997,14 @@ var CSV_PREFIX = "data:text/csv;charset=utf-8,";
21535
21997
 
21536
21998
  var styles$5 = {"action-btn":"_1jXbz","action-btn--pencil":"_at4xP","icon-rotate-180":"_12gv9","drop-area":"_R4bn5"};
21537
21999
 
21538
- var _excluded$9 = ["text", "isRequired", "className"];
22000
+ var _excluded$a = ["text", "isRequired", "className"];
21539
22001
  var LabelRequired = function LabelRequired(_ref) {
21540
22002
  var text = _ref.text,
21541
22003
  _ref$isRequired = _ref.isRequired,
21542
22004
  isRequired = _ref$isRequired === void 0 ? true : _ref$isRequired,
21543
22005
  _ref$className = _ref.className,
21544
22006
  className = _ref$className === void 0 ? "" : _ref$className,
21545
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
22007
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
21546
22008
  return React__default.createElement(material.FormLabel, Object.assign({
21547
22009
  className: "fw-medium mb-1 " + className
21548
22010
  }, rest), text, isRequired && React__default.createElement("span", {
@@ -21596,7 +22058,7 @@ var deleteUserApi = function deleteUserApi(id) {
21596
22058
  return api["delete"](USER_URL + "/delete/" + id);
21597
22059
  };
21598
22060
 
21599
- var _excluded$a = ["ref"],
22061
+ var _excluded$b = ["ref"],
21600
22062
  _excluded2$1 = ["ref"],
21601
22063
  _excluded3$1 = ["ref"],
21602
22064
  _excluded4 = ["ref"],
@@ -21626,7 +22088,7 @@ var UserDialog = function UserDialog(_ref) {
21626
22088
  t = _useTranslation.t;
21627
22089
  var _register = register("fullName"),
21628
22090
  fullNameRef = _register.ref,
21629
- fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$a);
22091
+ fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$b);
21630
22092
  var _register2 = register("email"),
21631
22093
  emailRef = _register2.ref,
21632
22094
  emailBio = _objectWithoutPropertiesLoose(_register2, _excluded2$1);
@@ -21671,24 +22133,11 @@ var UserDialog = function UserDialog(_ref) {
21671
22133
  setDefaultPassCodeChanged = _useState8[1];
21672
22134
  var theme = material.useTheme();
21673
22135
  var gradeOptions = React.useMemo(function () {
21674
- var _watch;
21675
- var schoolName = (_watch = watch("schoolName")) === null || _watch === void 0 ? void 0 : _watch.trim();
21676
- if (schoolName !== null && schoolName !== void 0 && schoolName.includes(t("middle_school")) || schoolName !== null && schoolName !== void 0 && schoolName.includes("중학교")) return MIDDLE_GRADES.map(function (i) {
21677
- return _extends({}, i, {
21678
- label: typeof i.label === "string" ? t(i.label) : i.label
21679
- });
21680
- });
21681
- if (schoolName !== null && schoolName !== void 0 && schoolName.includes(t("high_school")) || schoolName !== null && schoolName !== void 0 && schoolName.includes("고등학교")) return HIGH_GRADES.map(function (i) {
21682
- return _extends({}, i, {
21683
- label: t(i.label)
21684
- });
21685
- });
21686
- if (schoolName !== null && schoolName !== void 0 && schoolName.includes(t("elementary_school")) || schoolName !== null && schoolName !== void 0 && schoolName.includes("초등학교")) return ELEMENTARY_GRADES.map(function (i) {
22136
+ return [].concat(GRADE_OPTIONS.map(function (i) {
21687
22137
  return _extends({}, i, {
21688
22138
  label: typeof i.label === "string" ? t(i.label) : i.label
21689
22139
  });
21690
- });
21691
- return [];
22140
+ }));
21692
22141
  }, [t, watch("schoolName")]);
21693
22142
  var handleChangeRole = function handleChangeRole(role) {
21694
22143
  setRoles([role]);
@@ -25617,12 +26066,12 @@ var ArticleDialog = function ArticleDialog(_ref) {
25617
26066
 
25618
26067
  var styles$7 = {"drawer":"_11aYm","open":"_3Ydwm","drawer-overlay":"_3SQDf","drawer-header":"_2BwOx","drawer-form":"_2Zo7R","dropdown-content-academy":"_1lzjD","dropdown-change":"_1y7K9","dropdown-academy-item":"_1Y-55","dropdown-content-language":"_1fBXY","dropdown-item-language":"_3Szun","dropdown-item-language-active":"_2HhLb","item-address":"_3WYHC","item-logout":"_2-9ix","title-address":"_1r4pn","image-academy":"_2ZozT"};
25619
26068
 
25620
- var _excluded$b = ["isOpen", "onClose", "handleSaveExam"];
26069
+ var _excluded$c = ["isOpen", "onClose", "handleSaveExam"];
25621
26070
  var CreateExamDrawer = function CreateExamDrawer(props) {
25622
26071
  var isOpen = props.isOpen,
25623
26072
  onClose = props.onClose,
25624
26073
  handleSaveExam = props.handleSaveExam,
25625
- examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$b);
26074
+ examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$c);
25626
26075
  var _useTranslation = reactI18next.useTranslation(),
25627
26076
  t = _useTranslation.t;
25628
26077
  var theme = material.useTheme();
@@ -25870,9 +26319,11 @@ var TextbookViewDetail = function TextbookViewDetail(props) {
25870
26319
 
25871
26320
  var PAGE_TITLE$7 = "textbooks";
25872
26321
  var useTextbookList = function useTextbookList(props) {
26322
+ var _user$roles, _user$roles2;
25873
26323
  var onNavigateCreate = props.onNavigateCreate,
25874
26324
  onNavigateDetail = props.onNavigateDetail,
25875
- isSuperAdmin = props.isSuperAdmin;
26325
+ isSuperAdmin = props.isSuperAdmin,
26326
+ role = props.role;
25876
26327
  var _useList = useList(function (search) {
25877
26328
  return getTextbookListApi(search, isSuperAdmin);
25878
26329
  }, TextbookDefaultQuery),
@@ -25887,14 +26338,21 @@ var useTextbookList = function useTextbookList(props) {
25887
26338
  calcOrderNumber = _useList.calcOrderNumber,
25888
26339
  handleChangeSelectedItem = _useList.handleChangeSelectedItem,
25889
26340
  getData = _useList.getData;
26341
+ var user = reactRedux.useSelector(function (state) {
26342
+ var _state$common;
26343
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
26344
+ });
26345
+ var isTeacherSite = role === exports.Role.Teacher;
26346
+ var isAdmin = !!user && ((_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(exports.Role.Admin));
26347
+ var isTeacher = !!user && ((_user$roles2 = user.roles) === null || _user$roles2 === void 0 ? void 0 : _user$roles2.includes(exports.Role.Teacher)) && !isAdmin;
25890
26348
  var _useTranslation = reactI18next.useTranslation(),
25891
26349
  t = _useTranslation.t;
25892
26350
  var dispatch = reactRedux.useDispatch();
25893
26351
  var handleViewTextbook = function handleViewTextbook(data) {
25894
- onNavigateDetail(data, true, true);
26352
+ onNavigateDetail(data, true, false);
25895
26353
  };
25896
26354
  var handleUpdateTextbook = function handleUpdateTextbook(data) {
25897
- onNavigateDetail(data, false, true);
26355
+ onNavigateDetail(data, false, false);
25898
26356
  };
25899
26357
  var handleCreateTextbook = function handleCreateTextbook() {
25900
26358
  onNavigateCreate === null || onNavigateCreate === void 0 ? void 0 : onNavigateCreate();
@@ -25930,6 +26388,9 @@ var useTextbookList = function useTextbookList(props) {
25930
26388
  document.title = t("study_peak") + " | " + t(PAGE_TITLE$7);
25931
26389
  }, [t]);
25932
26390
  return {
26391
+ user: user,
26392
+ isTeacherSite: isTeacherSite,
26393
+ isTeacher: isTeacher,
25933
26394
  filter: filter,
25934
26395
  textSearchRef: textSearchRef,
25935
26396
  getData: getData,
@@ -26168,8 +26629,6 @@ var useTextbookShare = function useTextbookShare(props) {
26168
26629
  });
26169
26630
  var isAdmin = infoUser && (infoUser === null || infoUser === void 0 ? void 0 : (_infoUser$roles = infoUser.roles) === null || _infoUser$roles === void 0 ? void 0 : _infoUser$roles.includes(exports.Role.Admin));
26170
26631
  var isAdminSite = role === exports.Role.Admin;
26171
- var onAcademy = !!infoUser.academyDomain;
26172
- var isSuperAdminUser = infoUser && infoUser.isSuperAdmin;
26173
26632
  React.useEffect(function () {
26174
26633
  if (!isUpdate) {
26175
26634
  filterTeacherNotShared(currentModel);
@@ -26260,12 +26719,6 @@ var useTextbookShare = function useTextbookShare(props) {
26260
26719
  });
26261
26720
  setShared(existsTeachers);
26262
26721
  };
26263
- var enabledSave = function enabledSave(textbook) {
26264
- return onAcademy && (isAdminSite || isSuperAdmin || isSuperAdminUser || !isAdmin && textbook.isShared && textbook.createdBy.id === infoUser.id);
26265
- };
26266
- var enabledShare = function enabledShare(textbook) {
26267
- return textbook.isShared && onAcademy && (isAdminSite || isSuperAdminUser || !isAdmin && textbook.createdBy.id === infoUser.id);
26268
- };
26269
26722
  var handleShareTextbook = function handleShareTextbook(teacherIds, textbookId) {
26270
26723
  try {
26271
26724
  var _temp2 = function _temp2() {
@@ -26342,19 +26795,117 @@ var useTextbookShare = function useTextbookShare(props) {
26342
26795
  isUpdate: isUpdate,
26343
26796
  handleUpdateSharedTextbook: handleUpdateSharedTextbook,
26344
26797
  currentModel: currentModel,
26345
- enabledSave: enabledSave,
26346
- enabledShare: enabledShare,
26347
26798
  isAdmin: isAdmin,
26348
26799
  isAdminSite: isAdminSite
26349
26800
  };
26350
26801
  };
26351
26802
 
26803
+ var TextbookRow = function TextbookRow(_ref) {
26804
+ var _infoUser$roles, _infoUser$roles2, _data$createdBy, _data$textbookOwners, _data$createdBy2, _data$createdBy3;
26805
+ var index = _ref.index,
26806
+ data = _ref.data,
26807
+ role = _ref.role,
26808
+ isSuperAdmin = _ref.isSuperAdmin,
26809
+ calcOrderNumber = _ref.calcOrderNumber,
26810
+ onUpdateTextbook = _ref.onUpdateTextbook,
26811
+ onDeleteTextbook = _ref.onDeleteTextbook,
26812
+ onViewTextbook = _ref.onViewTextbook,
26813
+ onShareTextbook = _ref.onShareTextbook,
26814
+ onUpdateShareTextbook = _ref.onUpdateShareTextbook;
26815
+ var infoUser = reactRedux.useSelector(function (state) {
26816
+ var _state$common;
26817
+ return (state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user) || {};
26818
+ });
26819
+ var isAdmin = infoUser && (infoUser === null || infoUser === void 0 ? void 0 : (_infoUser$roles = infoUser.roles) === null || _infoUser$roles === void 0 ? void 0 : _infoUser$roles.includes(exports.Role.Admin));
26820
+ var isTeacherSite = role === exports.Role.Teacher;
26821
+ var isTeacher = !!infoUser && ((_infoUser$roles2 = infoUser.roles) === null || _infoUser$roles2 === void 0 ? void 0 : _infoUser$roles2.includes(exports.Role.Teacher)) && !isAdmin;
26822
+ var isAdminSite = role === exports.Role.Admin;
26823
+ var onAcademy = !!infoUser.academyDomain;
26824
+ var isSuperAdminUser = infoUser && infoUser.isSuperAdmin;
26825
+ var academy = reactRedux.useSelector(function (state) {
26826
+ var _state$common2;
26827
+ return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.academy;
26828
+ });
26829
+ var _useTranslation = reactI18next.useTranslation(),
26830
+ t = _useTranslation.t;
26831
+ var isEditable = !onAcademy || isAdminSite || isSuperAdmin || isSuperAdminUser || !isAdmin && data.isShared && (((_data$createdBy = data.createdBy) === null || _data$createdBy === void 0 ? void 0 : _data$createdBy.id) === (infoUser === null || infoUser === void 0 ? void 0 : infoUser.id) || ((_data$textbookOwners = data.textbookOwners) === null || _data$textbookOwners === void 0 ? void 0 : _data$textbookOwners.some(function (i) {
26832
+ var _infoUser$email, _infoUser$email$trim;
26833
+ return (i === null || i === void 0 ? void 0 : i.email.trim().toUpperCase()) === (infoUser === null || infoUser === void 0 ? void 0 : (_infoUser$email = infoUser.email) === null || _infoUser$email === void 0 ? void 0 : (_infoUser$email$trim = _infoUser$email.trim()) === null || _infoUser$email$trim === void 0 ? void 0 : _infoUser$email$trim.toUpperCase()) && (i === null || i === void 0 ? void 0 : i.academyId) === (academy === null || academy === void 0 ? void 0 : academy.id);
26834
+ })));
26835
+ var isDeleteAble = !onAcademy || isAdminSite || isSuperAdmin || isSuperAdminUser || !isAdmin && data.isShared && ((_data$createdBy2 = data.createdBy) === null || _data$createdBy2 === void 0 ? void 0 : _data$createdBy2.id) === (infoUser === null || infoUser === void 0 ? void 0 : infoUser.id);
26836
+ var isSharable = !data.isPublic && data.isShared && onAcademy && (isAdminSite || isSuperAdminUser || !isAdmin && data.createdBy.id === infoUser.id);
26837
+ var handleUpdateTextbook = function handleUpdateTextbook() {
26838
+ onUpdateTextbook(data);
26839
+ };
26840
+ var handleDeleteTextbook = function handleDeleteTextbook() {
26841
+ onDeleteTextbook(data);
26842
+ };
26843
+ var handleViewTextbook = function handleViewTextbook() {
26844
+ onViewTextbook(data);
26845
+ };
26846
+ var handleShareTextbook = function handleShareTextbook() {
26847
+ onShareTextbook(data);
26848
+ };
26849
+ var handleUpdateShareTextbook = function handleUpdateShareTextbook() {
26850
+ onUpdateShareTextbook(data);
26851
+ };
26852
+ return React__default.createElement(material.TableRow, {
26853
+ key: data.id
26854
+ }, React__default.createElement(material.TableCell, null, calcOrderNumber(index)), React__default.createElement(material.TableCell, null, data.name), React__default.createElement(material.TableCell, null, data.subject.name), React__default.createElement(material.TableCell, null, utcToLocalTime(data.createdAt, t("date_format"))), React__default.createElement(material.TableCell, null, data.totalChapters), isTeacher && isTeacherSite && React__default.createElement(material.TableCell, null, (infoUser === null || infoUser === void 0 ? void 0 : infoUser.id) === ((_data$createdBy3 = data.createdBy) === null || _data$createdBy3 === void 0 ? void 0 : _data$createdBy3.id) && data.isShared && React__default.createElement(fa.FaCheckCircle, {
26855
+ color: green[700]
26856
+ })), React__default.createElement(material.TableCell, null, !data.isPublic && data.sharedUsers.map(function (email, index) {
26857
+ return index > 2 ? null : index === 2 ? React__default.createElement("div", null, "(+", data.sharedUsers.length - 2, ")") : React__default.createElement("div", {
26858
+ key: index
26859
+ }, email.toLowerCase());
26860
+ })), React__default.createElement(material.TableCell, null, React__default.createElement(material.Stack, {
26861
+ direction: "row",
26862
+ spacing: 1,
26863
+ alignItems: "center"
26864
+ }, React__default.createElement(material.IconButton, {
26865
+ color: "default",
26866
+ className: (!isEditable ? "bg-secondary" : "bg-warning") + " text-white",
26867
+ onClick: handleUpdateTextbook,
26868
+ disabled: !isEditable
26869
+ }, React__default.createElement(fa6.FaPencil, {
26870
+ size: 12
26871
+ })), React__default.createElement(material.IconButton, {
26872
+ color: "default",
26873
+ className: "bg-primary text-white",
26874
+ onClick: handleViewTextbook
26875
+ }, React__default.createElement(fa.FaEye, {
26876
+ size: 12
26877
+ })), React__default.createElement(material.IconButton, {
26878
+ disabled: !isSharable,
26879
+ className: (!isSharable ? "bg-secondary" : "bg-info") + " text-white me-1",
26880
+ onClick: handleShareTextbook
26881
+ }, React__default.createElement(fa.FaShare, {
26882
+ size: 12
26883
+ })), React__default.createElement(material.IconButton, {
26884
+ disabled: !isSharable,
26885
+ className: (!isSharable ? "bg-secondary" : "bg-success") + " text-white me-1",
26886
+ onClick: handleUpdateShareTextbook
26887
+ }, React__default.createElement(fa.FaExchangeAlt, {
26888
+ size: 12
26889
+ })), React__default.createElement(material.IconButton, {
26890
+ color: "default",
26891
+ className: (!isDeleteAble ? "bg-secondary" : "bg-danger") + " text-white mr-1",
26892
+ onClick: handleDeleteTextbook,
26893
+ disabled: !isDeleteAble
26894
+ }, React__default.createElement(fa.FaTrash, {
26895
+ size: 12
26896
+ })))));
26897
+ };
26898
+
26352
26899
  var TextbookList = function TextbookList(props) {
26353
26900
  var _props$createable = props.createable,
26354
- createable = _props$createable === void 0 ? true : _props$createable;
26901
+ createable = _props$createable === void 0 ? true : _props$createable,
26902
+ isSuperAdmin = props.isSuperAdmin,
26903
+ role = props.role;
26355
26904
  var _useTranslation = reactI18next.useTranslation(),
26356
26905
  t = _useTranslation.t;
26357
26906
  var _useTextbookList = useTextbookList(props),
26907
+ isTeacherSite = _useTextbookList.isTeacherSite,
26908
+ isTeacher = _useTextbookList.isTeacher,
26358
26909
  filter = _useTextbookList.filter,
26359
26910
  textbooks = _useTextbookList.textbooks,
26360
26911
  paging = _useTextbookList.paging,
@@ -26396,9 +26947,14 @@ var TextbookList = function TextbookList(props) {
26396
26947
  handleOpenUpdateShareDialog = _useTextbookShare.handleOpenUpdateShareDialog,
26397
26948
  isUpdate = _useTextbookShare.isUpdate,
26398
26949
  handleUpdateSharedTextbook = _useTextbookShare.handleUpdateSharedTextbook,
26399
- currentModel = _useTextbookShare.currentModel,
26400
- enabledSave = _useTextbookShare.enabledSave,
26401
- enabledShare = _useTextbookShare.enabledShare;
26950
+ currentModel = _useTextbookShare.currentModel;
26951
+ var textbookHeaders = React.useMemo(function () {
26952
+ var headers = _$5.clone(TEXTBOOK_HEADERS);
26953
+ if (isTeacher && isTeacherSite) headers.splice(5, 0, {
26954
+ title: "teacher_personal_textbook"
26955
+ });
26956
+ return headers;
26957
+ }, [isTeacher, isTeacherSite]);
26402
26958
  return React__default.createElement(LayoutList, {
26403
26959
  title: t(TEXTBOOK_PAGE_TITLE)
26404
26960
  }, React__default.createElement(material.Grid, {
@@ -26433,63 +26989,26 @@ var TextbookList = function TextbookList(props) {
26433
26989
  xs: 12,
26434
26990
  className: "mt-3"
26435
26991
  }, React__default.createElement(material.Table, null, React__default.createElement(TableHeader, {
26436
- headerTemplates: TEXTBOOK_HEADERS,
26992
+ headerTemplates: textbookHeaders,
26437
26993
  filter: filter,
26438
26994
  onSort: handleSort
26439
- }), React__default.createElement(material.TableBody, null, textbooks.map(function (i, index) {
26440
- return React__default.createElement(material.TableRow, {
26441
- key: i.id
26442
- }, React__default.createElement(material.TableCell, null, calcOrderNumber(index)), React__default.createElement(material.TableCell, null, i.name), React__default.createElement(material.TableCell, null, i.subject.name), React__default.createElement(material.TableCell, null, utcToLocalTime(i.createdAt, t("date_format"))), React__default.createElement(material.TableCell, null, i.totalChapters), React__default.createElement(material.TableCell, null, i.sharedUsers.map(function (email, index) {
26443
- return index > 2 ? null : index === 2 ? React__default.createElement("div", null, "(+", i.sharedUsers.length - 2, ")") : React__default.createElement("div", {
26444
- key: index
26445
- }, email.toLowerCase());
26446
- })), React__default.createElement(material.TableCell, null, React__default.createElement(material.Stack, {
26447
- direction: "row",
26448
- spacing: 1,
26449
- alignItems: "center"
26450
- }, React__default.createElement(material.IconButton, {
26451
- color: "default",
26452
- className: (!enabledSave(i) ? "bg-secondary" : "bg-warning") + " text-white",
26453
- onClick: function onClick() {
26454
- return handleUpdateTextbook(i);
26455
- },
26456
- disabled: !enabledSave(i)
26457
- }, React__default.createElement(fa6.FaPencil, {
26458
- size: 12
26459
- })), React__default.createElement(material.IconButton, {
26460
- color: "default",
26461
- className: "bg-primary text-white",
26462
- onClick: function onClick() {
26463
- return handleViewTextbook(i);
26464
- }
26465
- }, React__default.createElement(fa.FaEye, {
26466
- size: 12
26467
- })), React__default.createElement(material.IconButton, {
26468
- disabled: !enabledShare(i),
26469
- className: (!enabledShare(i) ? "bg-secondary" : "bg-info") + " text-white me-1",
26470
- onClick: function onClick() {
26471
- return handleOpenShareDialog(i);
26472
- }
26473
- }, React__default.createElement(fa.FaShare, {
26474
- size: 12
26475
- })), React__default.createElement(material.IconButton, {
26476
- disabled: !enabledShare(i),
26477
- className: (!enabledShare(i) ? "bg-secondary" : "bg-success") + " text-white me-1",
26478
- onClick: function onClick() {
26479
- return handleOpenUpdateShareDialog(i);
26480
- }
26481
- }, React__default.createElement(fa.FaExchangeAlt, {
26482
- size: 12
26483
- })), React__default.createElement(material.IconButton, {
26484
- color: "default",
26485
- className: (!enabledSave(i) ? "bg-secondary" : "bg-danger") + " text-white mr-1",
26486
- onClick: function onClick() {
26487
- return handleSelectDeleteTextbook(i);
26488
- },
26489
- disabled: !enabledSave(i)
26490
- }, React__default.createElement(fa.FaTrash, {
26491
- size: 12
26492
- })))));
26995
+ }), React__default.createElement(material.TableBody, null, React__default.createElement(ListView, {
26996
+ data: textbooks,
26997
+ render: function render(data, index) {
26998
+ return React__default.createElement(TextbookRow, {
26999
+ key: index,
27000
+ index: index,
27001
+ data: data,
27002
+ isSuperAdmin: isSuperAdmin,
27003
+ calcOrderNumber: calcOrderNumber,
27004
+ onDeleteTextbook: handleSelectDeleteTextbook,
27005
+ onShareTextbook: handleOpenShareDialog,
27006
+ onUpdateShareTextbook: handleOpenUpdateShareDialog,
27007
+ onUpdateTextbook: handleUpdateTextbook,
27008
+ onViewTextbook: handleViewTextbook,
27009
+ role: role
27010
+ });
27011
+ }
26493
27012
  }), !textbooks.length && React__default.createElement(EmptyRow, null))), React__default.createElement("div", {
26494
27013
  className: "d-flex justify-content-end mt-3"
26495
27014
  }, !!paging.totalPages && React__default.createElement(material.Pagination, {
@@ -26687,12 +27206,12 @@ var useNotificationDetail = function useNotificationDetail(_ref) {
26687
27206
 
26688
27207
  var styles$8 = {"avatar":"_8niRT"};
26689
27208
 
26690
- var _excluded$c = ["value", "disabled", "optionTypeNotification"];
27209
+ var _excluded$d = ["value", "disabled", "optionTypeNotification"];
26691
27210
  var TypeSelector = function TypeSelector(_ref) {
26692
27211
  var value = _ref.value,
26693
27212
  disabled = _ref.disabled,
26694
27213
  optionTypeNotification = _ref.optionTypeNotification,
26695
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$c);
27214
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$d);
26696
27215
  return React__default.createElement(CustomAsyncSelect, Object.assign({
26697
27216
  options: optionTypeNotification,
26698
27217
  value: value
@@ -27084,11 +27603,11 @@ var useNotificationList = function useNotificationList(_ref) {
27084
27603
  };
27085
27604
  };
27086
27605
 
27087
- var _excluded$d = ["value", "optionTypeNotification"];
27606
+ var _excluded$e = ["value", "optionTypeNotification"];
27088
27607
  var SelectFilterType = function SelectFilterType(_ref) {
27089
27608
  var value = _ref.value,
27090
27609
  optionTypeNotification = _ref.optionTypeNotification,
27091
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$d);
27610
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$e);
27092
27611
  return React__default.createElement(CustomAsyncSelect, Object.assign({
27093
27612
  options: optionTypeNotification,
27094
27613
  value: value
@@ -27142,7 +27661,8 @@ var NotificationList = function NotificationList(_ref) {
27142
27661
  startIcon: React__default.createElement(fa.FaPlus, {
27143
27662
  size: 12
27144
27663
  }),
27145
- onClick: handleCreateNotification
27664
+ onClick: handleCreateNotification,
27665
+ disabled: !isAdmin && isTeacherAdmin
27146
27666
  }, t("new_notification"))), React__default.createElement(material.Grid, {
27147
27667
  container: true
27148
27668
  }, React__default.createElement(material.Grid, {
@@ -27247,7 +27767,6 @@ var NotificationList = function NotificationList(_ref) {
27247
27767
  };
27248
27768
 
27249
27769
  var TEXTBOOK_URL$1 = BASE_URL + "/api/textbooks";
27250
- var SUPER_ADMIN_TEXTBOOK_URL = SUPER_ADMIN_BASE_URL + "/api/textbook";
27251
27770
  var PREPARED_TEXTBOOK_URL = BASE_URL + "/api/textbooks/prepared-textbooks";
27252
27771
  var SUPER_ADMIN_PREPARED_TEXTBOOK_URL = SUPER_ADMIN_BASE_URL + "/api/textbook/prepared-textbooks";
27253
27772
  var FILE_URL = BASE_URL + "/api/file/images";
@@ -27269,10 +27788,11 @@ var createTextbookApi$1 = function createTextbookApi(values, isAdmin) {
27269
27788
  var updateTextbookApi$1 = function updateTextbookApi(values, id, isAdmin) {
27270
27789
  return api.put((isAdmin ? SUPER_ADMIN_PREPARED_TEXTBOOK_URL : PREPARED_TEXTBOOK_URL) + "/" + id, values);
27271
27790
  };
27272
- var getAcademyByTeacher = function getAcademyByTeacher(email, isAdmin) {
27273
- return api.get((isAdmin ? SUPER_ADMIN_TEXTBOOK_URL : TEXTBOOK_URL$1) + "/academy-teacher-owner", {
27791
+ var getCourseByTeacherAcademy = function getCourseByTeacherAcademy(email, academyId) {
27792
+ return api.get(TEXTBOOK_URL$1 + "/owner-teacher-course", {
27274
27793
  params: {
27275
- email: email
27794
+ email: email,
27795
+ academyId: academyId
27276
27796
  }
27277
27797
  });
27278
27798
  };
@@ -27281,8 +27801,9 @@ var deleteTextbookApi$1 = function deleteTextbookApi(textbookId, isAdmin) {
27281
27801
  };
27282
27802
 
27283
27803
  var useTextbookManagement = function useTextbookManagement(_ref) {
27284
- var _user$roles;
27804
+ var _user$roles, _user$roles2, _selectedTextbook$cre, _selectedTextbook$cre2;
27285
27805
  var textbookId = _ref.textbookId,
27806
+ role = _ref.role,
27286
27807
  onNavigateList = _ref.onNavigateList;
27287
27808
  var _useTranslation = reactI18next.useTranslation(),
27288
27809
  t = _useTranslation.t;
@@ -27299,13 +27820,28 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
27299
27820
  var _useState4 = React.useState(false),
27300
27821
  selectedChapter = _useState4[0],
27301
27822
  setSelectedChapter = _useState4[1];
27823
+ var searchParams = new URLSearchParams(location.search);
27824
+ var isReadonly = searchParams.get('readonly') === "true";
27302
27825
  var dispatch = reactRedux.useDispatch();
27303
27826
  var user = reactRedux.useSelector(function (state) {
27304
27827
  var _state$common;
27305
27828
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
27306
27829
  });
27307
- var isAdmin = user === null || user === void 0 ? void 0 : (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(exports.Role.Admin);
27830
+ var academy = reactRedux.useSelector(function (state) {
27831
+ var _state$common2;
27832
+ return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.academy;
27833
+ });
27834
+ var isAdmin = user && (user === null || user === void 0 ? void 0 : (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(exports.Role.Admin));
27835
+ var isTeacher = user && (user === null || user === void 0 ? void 0 : (_user$roles2 = user.roles) === null || _user$roles2 === void 0 ? void 0 : _user$roles2.includes(exports.Role.Teacher)) && !isAdmin;
27308
27836
  var isSuperAdmin = !!user && !user.academyDomain;
27837
+ var isAdminSite = role === exports.Role.Admin;
27838
+ var onAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
27839
+ var isSuperAdminUser = !!user && user.isSuperAdmin;
27840
+ var isEditable = !selectedTextbook || !onAcademy || isAdminSite || isSuperAdmin || isSuperAdminUser || !isAdmin && selectedTextbook.isShared && (((_selectedTextbook$cre = selectedTextbook.createdBy) === null || _selectedTextbook$cre === void 0 ? void 0 : _selectedTextbook$cre.id) === (user === null || user === void 0 ? void 0 : user.id) || selectedTextbook.textbookOwners.some(function (i) {
27841
+ var _user$email, _user$email$trim;
27842
+ return i.email.trim().toUpperCase() === (user === null || user === void 0 ? void 0 : (_user$email = user.email) === null || _user$email === void 0 ? void 0 : (_user$email$trim = _user$email.trim()) === null || _user$email$trim === void 0 ? void 0 : _user$email$trim.toUpperCase()) && i.academyId === (academy === null || academy === void 0 ? void 0 : academy.id);
27843
+ }));
27844
+ var disabledTextbookOwners = !selectedTextbook && isAdmin || selectedTextbook && (!isEditable || isTeacher && ((_selectedTextbook$cre2 = selectedTextbook.createdBy) === null || _selectedTextbook$cre2 === void 0 ? void 0 : _selectedTextbook$cre2.id) !== (user === null || user === void 0 ? void 0 : user.id) || isAdmin && !isSuperAdminUser);
27309
27845
  var handleOpenConfirmDeleteChapterDialog = function handleOpenConfirmDeleteChapterDialog(chapter) {
27310
27846
  setSelectedChapter(chapter);
27311
27847
  };
@@ -27360,6 +27896,7 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
27360
27896
  var _temp3 = function _temp3() {
27361
27897
  dispatch(setLoading(false));
27362
27898
  };
27899
+ if (isReadonly || !isEditable) return Promise.resolve();
27363
27900
  if (!coverImage && !(values !== null && values !== void 0 && values.coverImage)) {
27364
27901
  reactToastify.toast.error(t("please_select_image_file"));
27365
27902
  return Promise.resolve();
@@ -27411,11 +27948,16 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
27411
27948
  }, [textbookId]);
27412
27949
  return {
27413
27950
  t: t,
27951
+ isAdminSite: isAdminSite,
27952
+ disabledTextbookOwners: disabledTextbookOwners,
27953
+ isReadonly: isReadonly,
27954
+ isEditable: isEditable,
27414
27955
  isAdmin: isAdmin,
27415
27956
  theme: theme,
27416
27957
  history: history,
27417
27958
  coverImage: coverImage,
27418
27959
  isSuperAdmin: isSuperAdmin,
27960
+ isSuperAdminUser: isSuperAdminUser,
27419
27961
  openDialog: openDialog,
27420
27962
  handleSubmit: handleSubmit,
27421
27963
  selectedTextbook: selectedTextbook,
@@ -27446,6 +27988,12 @@ var HighSchoolGrade;
27446
27988
  HighSchoolGrade[HighSchoolGrade["ProbabilityAndStatistics"] = 6] = "ProbabilityAndStatistics";
27447
27989
  HighSchoolGrade[HighSchoolGrade["Geometry"] = 7] = "Geometry";
27448
27990
  })(HighSchoolGrade || (HighSchoolGrade = {}));
27991
+ var TextbookEditorType;
27992
+ (function (TextbookEditorType) {
27993
+ TextbookEditorType[TextbookEditorType["Default"] = 0] = "Default";
27994
+ TextbookEditorType[TextbookEditorType["Korea"] = 1] = "Korea";
27995
+ TextbookEditorType[TextbookEditorType["Math"] = 2] = "Math";
27996
+ })(TextbookEditorType || (TextbookEditorType = {}));
27449
27997
 
27450
27998
  var TextbookSortBy$1;
27451
27999
  (function (TextbookSortBy) {
@@ -27475,7 +28023,7 @@ var TextbookState;
27475
28023
  TextbookState[TextbookState["Article"] = 3] = "Article";
27476
28024
  })(TextbookState || (TextbookState = {}));
27477
28025
 
27478
- var SCHOOL_OPTIONS$1 = [{
28026
+ var SCHOOL_OPTIONS = [{
27479
28027
  label: "all",
27480
28028
  value: SchoolType.Default
27481
28029
  }, {
@@ -27512,7 +28060,7 @@ var ELEMANTARY_GRADES = Array.from({
27512
28060
  value: index
27513
28061
  };
27514
28062
  });
27515
- var MIDDLE_GRADES$1 = Array.from({
28063
+ var MIDDLE_GRADES = Array.from({
27516
28064
  length: 4
27517
28065
  }, function (_, index) {
27518
28066
  return {
@@ -27520,7 +28068,7 @@ var MIDDLE_GRADES$1 = Array.from({
27520
28068
  value: index
27521
28069
  };
27522
28070
  });
27523
- var HIGH_GRADES$1 = [{
28071
+ var HIGH_GRADES = [{
27524
28072
  label: "all",
27525
28073
  value: HighSchoolGrade.Default
27526
28074
  }, {
@@ -27583,8 +28131,13 @@ var preparedTextbookSchema = function preparedTextbookSchema(t) {
27583
28131
  publicationDate: yup.string().required(t("publication_date_required")),
27584
28132
  publisher: yup.string().required(t("publisher_required")),
27585
28133
  isbn: yup.string().required(t("isbn_required")),
27586
- grade: yup.number().required(t("grade_required")).positive().integer().typeError(t("must_be_number")).min(1, t("min_is_1")).max(12, t("max_is_12")),
28134
+ grade: yup.number().required(t("grade_required")).notOneOf([0], t("subject_required")),
27587
28135
  type: yup.number(),
28136
+ textbookOwners: yup.array().of(yup.object().shape({
28137
+ email: yup.string().trim().email(t("invalid_textbook_owner_email_address")).required(t("textbook_owner_email_is_required")),
28138
+ academyId: yup.number().required(t("textbook_owner_academy_is_required")),
28139
+ courseId: yup.number().required(t("textbook_owner_course_is_required"))
28140
+ })),
27588
28141
  chapters: yup.array().of(yup.object().shape({
27589
28142
  pageFrom: yup.number().required(t("page_from_required")).integer().typeError(t("must_be_number")).min(1, t("min_is_1")),
27590
28143
  pageTo: yup.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) {
@@ -27657,7 +28210,7 @@ var DEFAULT_TEXTBOOK_REQUEST = {
27657
28210
  grade: "",
27658
28211
  textbookOwners: [],
27659
28212
  isPrepared: true,
27660
- type: 0
28213
+ type: TextbookEditorType.Korea
27661
28214
  };
27662
28215
  var DEFAULT_CHAPTER = {
27663
28216
  name: "",
@@ -27707,136 +28260,169 @@ var CustomTextbookTab = function CustomTextbookTab(props) {
27707
28260
  }, children));
27708
28261
  };
27709
28262
 
27710
- var grey = {
27711
- 0: '#FFFFFF',
27712
- 50: "#FBFBF9",
27713
- 100: '#EAEAE5',
27714
- 200: '#F4F6F8',
27715
- 300: '#D0D0C8',
27716
- 400: '#C4CDD5',
27717
- 500: '#9A9A98',
27718
- 600: '#637381',
27719
- 700: '#5D5D5B',
27720
- 800: '#212B36',
27721
- 900: '#363634'
27722
- };
27723
- var green = {
27724
- 0: '#FFFFFF',
27725
- 100: '#F0FFF6',
27726
- 300: '#89F0B2',
27727
- 500: '#3DC674',
27728
- 700: '#349056',
27729
- 900: '#18442A'
27730
- };
27731
- var main_theme = {
27732
- lighter: green[100],
27733
- light: green[300],
27734
- less_dark: green[500],
27735
- dark: green[700],
27736
- darker: green[900]
27737
- };
27738
- var primary = {
27739
- lighter: '#D0ECFE',
27740
- light: '#73BAFB',
27741
- main: '#1877F2',
27742
- dark: '#0C44AE',
27743
- darker: '#042174',
27744
- contrastText: '#FFFFFF'
27745
- };
27746
- var secondary = {
27747
- lighter: '#EFD6FF',
27748
- light: '#C684FF',
27749
- main: '#8E33FF',
27750
- dark: '#5119B7',
27751
- darker: '#27097A',
27752
- contrastText: '#FFFFFF'
27753
- };
27754
- var info = {
27755
- lighter: '#CAFDF5',
27756
- light: '#61F3F3',
27757
- main: '#00B8D9',
27758
- dark: '#006C9C',
27759
- darker: '#003768',
27760
- contrastText: '#FFFFFF'
27761
- };
27762
- var success = {
27763
- lighter: '#C8FAD6',
27764
- light: '#5BE49B',
27765
- main: '#00A76F',
27766
- dark: '#007867',
27767
- darker: '#004B50',
27768
- contrastText: '#FFFFFF'
27769
- };
27770
- var warning$1 = {
27771
- lighter: '#FFF5CC',
27772
- light: '#FFD666',
27773
- main: '#FFAB00',
27774
- dark: '#B76E00',
27775
- darker: '#7A4100',
27776
- contrastText: grey[800]
27777
- };
27778
- var error = {
27779
- lighter: '#FFE9D5',
27780
- light: '#FFAC82',
27781
- main: '#FF5630',
27782
- dark: '#B71D18',
27783
- darker: '#7A0916',
27784
- contrastText: '#FFFFFF'
27785
- };
27786
- var red = {
27787
- 100: '#FEF8F8',
27788
- 300: '#FEF8F8',
27789
- 500: '#F4CACA',
27790
- 900: '#DB4D4D'
27791
- };
27792
- var yellow = {
27793
- 900: '#FEAF06'
27794
- };
27795
- var green_support = {
27796
- 100: '#F6FDF7',
27797
- 500: '#AEEAB3',
27798
- 900: '#3ACB46'
27799
- };
27800
- var purple = {
27801
- 900: '#C3099A'
27802
- };
27803
- var dark_purple = {
27804
- 900: '#6B0861'
27805
- };
27806
- var dark_red = {
27807
- 900: '#800202'
28263
+ var _reduceToMathArticles = function reduceToMathArticles(textbook, isMath) {
28264
+ var values = isMath !== undefined ? _$5.cloneDeep(textbook) : textbook;
28265
+ if (isMath !== undefined) values.type = isMath;
28266
+ for (var key in values) {
28267
+ if (values.hasOwnProperty(key)) {
28268
+ if (key === "articles") {
28269
+ var _values$key;
28270
+ values[key] = (_values$key = values[key]) !== null && _values$key !== void 0 && _values$key.length ? [values[key][0]] : [DEFAULT_ARTICLE];
28271
+ } else if (typeof values[key] === "object" && values[key] !== null) {
28272
+ _reduceToMathArticles(values[key]);
28273
+ }
28274
+ }
28275
+ }
28276
+ return values;
27808
28277
  };
27809
- var common = {
27810
- black: '#000000',
27811
- white: '#FFFFFF'
28278
+ var _resetAllCategoriesAndQuestionTypesBySubject = function resetAllCategoriesAndQuestionTypesBySubject(textbook, subject) {
28279
+ var values = subject ? _$5.cloneDeep(textbook) : textbook;
28280
+ if (subject) {
28281
+ values.subjectId = subject === null || subject === void 0 ? void 0 : subject.value;
28282
+ values.subject = subject;
28283
+ }
28284
+ for (var key in values) {
28285
+ if (values.hasOwnProperty(key)) {
28286
+ if (key === "categories" || key === "categoryOptions") {
28287
+ values[key] = [];
28288
+ } else if (key === "questionType" || key === "questionTypeId") {
28289
+ values[key] = null;
28290
+ } else if (typeof values[key] === "object" && values[key] !== null) {
28291
+ _resetAllCategoriesAndQuestionTypesBySubject(values[key]);
28292
+ }
28293
+ }
28294
+ }
28295
+ return values;
27812
28296
  };
27813
- var action$2 = {
27814
- hover: styles$c.alpha(grey[500], 0.08),
27815
- selected: styles$c.alpha(grey[500], 0.16),
27816
- disabled: styles$c.alpha(grey[500], 0.8),
27817
- disabledBackground: styles$c.alpha(grey[500], 0.24),
27818
- focus: styles$c.alpha(grey[500], 0.24),
27819
- hoverOpacity: 0.08,
27820
- disabledOpacity: 0.48
28297
+ var convertResponseToRequest = function convertResponseToRequest(selectedTextbook) {
28298
+ var _selectedTextbook$sub;
28299
+ if (!selectedTextbook) return DEFAULT_TEXTBOOK_REQUEST;
28300
+ return {
28301
+ name: selectedTextbook.name || "",
28302
+ subjectId: ((_selectedTextbook$sub = selectedTextbook.subject) === null || _selectedTextbook$sub === void 0 ? void 0 : _selectedTextbook$sub.id) || 0,
28303
+ subject: selectedTextbook.subject ? {
28304
+ label: selectedTextbook.subject.name,
28305
+ value: selectedTextbook.subject.id
28306
+ } : null,
28307
+ preparedType: selectedTextbook.preparedType || 0,
28308
+ grade: selectedTextbook.grade || "1",
28309
+ publicationDate: (selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.publicationDate) || "",
28310
+ publisher: selectedTextbook.publisher || "",
28311
+ isbn: selectedTextbook.isbn || "",
28312
+ coverImage: selectedTextbook.coverImage || "",
28313
+ textbookOwners: selectedTextbook.textbookOwners.map(function (to) {
28314
+ return _extends({}, to, {
28315
+ academy: to.academy ? {
28316
+ label: to.academy.name,
28317
+ value: to.academy.id
28318
+ } : null,
28319
+ course: to.course ? {
28320
+ label: to.course.name,
28321
+ value: to.course.id
28322
+ } : null
28323
+ });
28324
+ }),
28325
+ isPublic: selectedTextbook.isPublic || false,
28326
+ isShared: selectedTextbook.isShared || false,
28327
+ isPrepared: true,
28328
+ type: selectedTextbook.type,
28329
+ chapters: selectedTextbook.chapters.map(function (c) {
28330
+ var _c$questionGroups;
28331
+ return {
28332
+ name: c.name,
28333
+ pageFrom: c.pageFrom || 0,
28334
+ pageTo: c.pageTo || 0,
28335
+ id: c.id,
28336
+ questionGroups: ((_c$questionGroups = c.questionGroups) === null || _c$questionGroups === void 0 ? void 0 : _c$questionGroups.map(function (g) {
28337
+ var _g$questions, _g$questions$find;
28338
+ return {
28339
+ id: g.id,
28340
+ chapterId: c.id,
28341
+ questions: g.questions.map(function (q) {
28342
+ var _q$questionType;
28343
+ return _extends({}, q, {
28344
+ questionTypeId: q.questionTypeId || q.questionType.id,
28345
+ questionType: (_q$questionType = q.questionType) !== null && _q$questionType !== void 0 && _q$questionType.id ? {
28346
+ label: q.questionType.name,
28347
+ value: q.questionType.id
28348
+ } : null
28349
+ });
28350
+ }),
28351
+ articles: g.articles.map(function (a) {
28352
+ return _extends({}, a, {
28353
+ categoryOptions: a.categories.map(function (cat) {
28354
+ return {
28355
+ label: cat.name,
28356
+ value: cat.id
28357
+ };
28358
+ }),
28359
+ categories: a.categories.filter(function (cat) {
28360
+ return !!cat.id;
28361
+ }).map(function (cat) {
28362
+ return cat.id;
28363
+ })
28364
+ });
28365
+ }),
28366
+ questionCount: g.questions.length,
28367
+ answerCount: ((_g$questions = g.questions) === null || _g$questions === void 0 ? void 0 : (_g$questions$find = _g$questions.find(function (q) {
28368
+ return q.questionAnswerType !== exports.QuestionAnswerType.ShortAnswer;
28369
+ })) === null || _g$questions$find === void 0 ? void 0 : _g$questions$find.numberOfAnswers) || DEFAULT_ANSWER_COUNT$2
28370
+ };
28371
+ })) || [],
28372
+ subChapters: c.subChapters.map(function (sub) {
28373
+ var _sub$questionGroups;
28374
+ return {
28375
+ name: sub.name,
28376
+ pageFrom: sub.pageFrom || 0,
28377
+ pageTo: sub.pageTo || 0,
28378
+ id: sub.id,
28379
+ questionGroups: ((_sub$questionGroups = sub.questionGroups) === null || _sub$questionGroups === void 0 ? void 0 : _sub$questionGroups.map(function (g) {
28380
+ var _g$questions2, _g$questions2$find;
28381
+ return {
28382
+ id: g.id,
28383
+ chapterId: c.id,
28384
+ questions: g.questions.map(function (q) {
28385
+ var _q$questionType2;
28386
+ return _extends({}, q, {
28387
+ questionTypeId: q.questionTypeId || q.questionType.id,
28388
+ questionType: (_q$questionType2 = q.questionType) !== null && _q$questionType2 !== void 0 && _q$questionType2.id ? {
28389
+ label: q.questionType.name,
28390
+ value: q.questionType.id
28391
+ } : null
28392
+ });
28393
+ }),
28394
+ articles: g.articles.map(function (a) {
28395
+ return _extends({}, a, {
28396
+ categoryOptions: a.categories.map(function (cat) {
28397
+ return {
28398
+ label: cat.name,
28399
+ value: cat.id
28400
+ };
28401
+ }),
28402
+ categories: a.categories.filter(function (cat) {
28403
+ return !!cat.id;
28404
+ }).map(function (cat) {
28405
+ return cat.id;
28406
+ })
28407
+ });
28408
+ }),
28409
+ questionCount: g.questions.length,
28410
+ answerCount: ((_g$questions2 = g.questions) === null || _g$questions2 === void 0 ? void 0 : (_g$questions2$find = _g$questions2.find(function (q) {
28411
+ return q.questionAnswerType !== exports.QuestionAnswerType.ShortAnswer;
28412
+ })) === null || _g$questions2$find === void 0 ? void 0 : _g$questions2$find.numberOfAnswers) || DEFAULT_ANSWER_COUNT$2
28413
+ };
28414
+ })) || [],
28415
+ subChapters: []
28416
+ };
28417
+ })
28418
+ };
28419
+ })
28420
+ };
27821
28421
  };
27822
- var base = {
27823
- primary: primary,
27824
- secondary: secondary,
27825
- info: info,
27826
- main_theme: main_theme,
27827
- success: success,
27828
- warning: warning$1,
27829
- error: error,
27830
- grey: grey,
27831
- common: common,
27832
- red: red,
27833
- yellow: yellow,
27834
- green_support: green_support,
27835
- purple: purple,
27836
- dark_purple: dark_purple,
27837
- dark_red: dark_red,
27838
- divider: styles$c.alpha(grey[500], 0.2),
27839
- action: action$2
28422
+ var handleKeyDown = function handleKeyDown(e) {
28423
+ if (e.key === 'Enter') {
28424
+ e.preventDefault();
28425
+ }
27840
28426
  };
27841
28427
 
27842
28428
  var ArticleBlock = function ArticleBlock(_ref) {
@@ -27846,6 +28432,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
27846
28432
  path = _ref.path,
27847
28433
  isLoadingCategories = _ref.isLoadingCategories,
27848
28434
  optionKey = _ref.optionKey,
28435
+ disabled = _ref.disabled,
27849
28436
  setFieldValue = _ref.setFieldValue,
27850
28437
  onDuplicate = _ref.onDuplicate,
27851
28438
  onDelete = _ref.onDelete,
@@ -27947,6 +28534,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
27947
28534
  onMenuClose: onCloseCategoryMenu
27948
28535
  },
27949
28536
  onChange: handleChangeCategory,
28537
+ isDisabled: disabled,
27950
28538
  placeholder: t("select_category")
27951
28539
  });
27952
28540
  }
@@ -27984,7 +28572,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
27984
28572
  onMenuClose: onCloseCategoryMenu
27985
28573
  },
27986
28574
  onChange: handleChangeSubCategory,
27987
- isDisabled: !data.categories[0],
28575
+ isDisabled: disabled || !data.categories[0],
27988
28576
  placeholder: t("select_category")
27989
28577
  });
27990
28578
  }
@@ -28005,7 +28593,9 @@ var ArticleBlock = function ArticleBlock(_ref) {
28005
28593
  return React__default.createElement(material.TextField, Object.assign({
28006
28594
  placeholder: t("title")
28007
28595
  }, field, {
28008
- size: "small"
28596
+ size: "small",
28597
+ onKeyDown: handleKeyDown,
28598
+ disabled: disabled
28009
28599
  }));
28010
28600
  }
28011
28601
  }))), React__default.createElement(material.Grid, {
@@ -28025,7 +28615,9 @@ var ArticleBlock = function ArticleBlock(_ref) {
28025
28615
  return React__default.createElement(material.TextField, Object.assign({
28026
28616
  placeholder: t("author")
28027
28617
  }, field, {
28028
- size: "small"
28618
+ size: "small",
28619
+ onKeyDown: handleKeyDown,
28620
+ disabled: disabled
28029
28621
  }));
28030
28622
  }
28031
28623
  }))), React__default.createElement(material.Grid, {
@@ -28045,7 +28637,9 @@ var ArticleBlock = function ArticleBlock(_ref) {
28045
28637
  return React__default.createElement(material.TextField, Object.assign({
28046
28638
  placeholder: t("subject")
28047
28639
  }, field, {
28048
- size: "small"
28640
+ size: "small",
28641
+ onKeyDown: handleKeyDown,
28642
+ disabled: disabled
28049
28643
  }));
28050
28644
  }
28051
28645
  })))), React__default.createElement(material.Stack, {
@@ -28058,6 +28652,7 @@ var ArticleBlock = function ArticleBlock(_ref) {
28058
28652
  }, t("copy_items")), React__default.createElement(material.Button, {
28059
28653
  variant: "contained",
28060
28654
  color: "success",
28655
+ disabled: disabled,
28061
28656
  onClick: handleDuplicateArticle,
28062
28657
  sx: {
28063
28658
  whiteSpace: "nowrap"
@@ -28073,7 +28668,7 @@ var isEqual = function isEqual(prev, next) {
28073
28668
  var nextIsLoadingCategories = isNextMatched ? next.isLoadingCategories : undefined;
28074
28669
  var prevCategories = isPrevMatched ? prev.categories : undefined;
28075
28670
  var nextCategories = isNextMatched ? next.categories : undefined;
28076
- 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.onOpenCategoryMenu == next.onOpenCategoryMenu && prev.onOpenSubCategoryMenu == next.onOpenSubCategoryMenu;
28671
+ 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;
28077
28672
  };
28078
28673
  var ArticleBlock$1 = React.memo(ArticleBlock, isEqual);
28079
28674
 
@@ -28086,7 +28681,7 @@ var labelStyle = {
28086
28681
  whiteSpace: "nowrap"
28087
28682
  };
28088
28683
 
28089
- var _excluded$e = ["onChange"];
28684
+ var _excluded$f = ["onChange"];
28090
28685
  var BpIcon$1 = material.styled("span")(function (_ref) {
28091
28686
  var theme = _ref.theme;
28092
28687
  return {
@@ -28119,7 +28714,7 @@ var BpCheckedIcon$1 = material.styled(BpIcon$1)({
28119
28714
  var QuestionBlock = function QuestionBlock(_ref2) {
28120
28715
  var answerCount = _ref2.answerCount,
28121
28716
  isMath = _ref2.isMath,
28122
- isDisabled = _ref2.isDisabled,
28717
+ disabled = _ref2.disabled,
28123
28718
  path = _ref2.path,
28124
28719
  data = _ref2.data,
28125
28720
  questionTitleStyle = _ref2.questionTitleStyle,
@@ -28164,7 +28759,8 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28164
28759
  var field = _ref3.field;
28165
28760
  return React__default.createElement(material.TextField, Object.assign({}, field, {
28166
28761
  size: "small",
28167
- placeholder: t("textual_answer")
28762
+ placeholder: t("textual_answer"),
28763
+ onKeyDown: handleKeyDown
28168
28764
  }));
28169
28765
  }
28170
28766
  }));
@@ -28183,7 +28779,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28183
28779
  className: styles$9["question-label"] + " w-fit",
28184
28780
  labelPlacement: "top",
28185
28781
  value: i,
28186
- disabled: isDisabled,
28782
+ disabled: disabled,
28187
28783
  control: React__default.createElement(material.Checkbox, {
28188
28784
  checked: data.correctAnswers.includes(i),
28189
28785
  onChange: function onChange(e) {
@@ -28219,7 +28815,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28219
28815
  onChange: function onChange(e) {
28220
28816
  return setFieldValue(path + ".correctAnswers", [+e.target.value]);
28221
28817
  },
28222
- disabled: isDisabled,
28818
+ disabled: disabled,
28223
28819
  control: React__default.createElement(material.Radio, {
28224
28820
  size: "small",
28225
28821
  checked: +i === data.correctAnswers[0],
@@ -28255,7 +28851,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28255
28851
  };
28256
28852
  });
28257
28853
  var theme = material.useTheme();
28258
- var isTabletUp = material.useMediaQuery(theme.breakpoints.up('lg'));
28854
+ var isTabletUp = material.useMediaQuery(theme.breakpoints.up("lg"));
28259
28855
  return React__default.createElement(material.Stack, {
28260
28856
  direction: "row",
28261
28857
  alignItems: "center",
@@ -28269,8 +28865,10 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28269
28865
  }, React__default.createElement(material.Box, null, React__default.createElement(material.Box, {
28270
28866
  className: styles$9["question-title"] + " me-2 text-nowrap",
28271
28867
  sx: questionTitleStyle
28272
- }, t("problem_number_question", {
28868
+ }, isMath ? t("problem_number_question", {
28273
28869
  number: data.questionOrder + 1
28870
+ }) : t("text_detail_n", {
28871
+ n: data.questionOrder + 1
28274
28872
  }))), React__default.createElement(material.Box, {
28275
28873
  flexGrow: 1
28276
28874
  }, renderAnswer())), React__default.createElement(material.Stack, {
@@ -28290,7 +28888,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28290
28888
  render: function render(_ref4) {
28291
28889
  var field = _ref4.field;
28292
28890
  return React__default.createElement(ScoreSelector, Object.assign({}, field, {
28293
- isDisabled: isDisabled,
28891
+ isDisabled: disabled,
28294
28892
  onChange: function onChange(value) {
28295
28893
  setFieldValue(path + ".score", (value === null || value === void 0 ? void 0 : value.value) || 0);
28296
28894
  }
@@ -28309,9 +28907,9 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28309
28907
  name: path + ".questionTypeId",
28310
28908
  render: function render(_ref5) {
28311
28909
  var _ref5$field = _ref5.field,
28312
- field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$e);
28910
+ field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$f);
28313
28911
  return React__default.createElement(CustomSelectOption, Object.assign({}, field, {
28314
- isDisabled: isDisabled,
28912
+ isDisabled: disabled,
28315
28913
  value: data.questionType,
28316
28914
  options: questionTypes,
28317
28915
  isLoading: optionKey === path + ".questionTypeId" ? isLoadingQuestionTypes : false,
@@ -28336,7 +28934,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
28336
28934
  var field = _ref6.field;
28337
28935
  return React__default.createElement(CustomSelect, Object.assign({}, field, {
28338
28936
  value: data.questionAnswerType,
28339
- isDisabled: isDisabled,
28937
+ isDisabled: disabled,
28340
28938
  options: answerTypeOptions,
28341
28939
  onChange: handleChangeQuestionAnswerType
28342
28940
  }));
@@ -28352,11 +28950,11 @@ var isEqual$1 = function isEqual(prev, next) {
28352
28950
  var nextIsLoadingQuestionTypes = isNextMatched ? next.isLoadingQuestionTypes : undefined;
28353
28951
  var prevQuestionTypes = isPrevMatched ? prev.questionTypes : undefined;
28354
28952
  var nextQuestionTypes = isNextMatched ? next.questionTypes : undefined;
28355
- return prevOptionKey === nextOptionKey && prevIsLoadingQuestionTypes === nextIsLoadingQuestionTypes && JSON.stringify(prev.data) === JSON.stringify(next.data) && JSON.stringify(prevQuestionTypes) === JSON.stringify(nextQuestionTypes) && prev.path === next.path && prev.isMath == next.isMath && prev.answerCount == next.answerCount && prev.isDisabled == next.isDisabled && JSON.stringify(prev.questionTitleStyle) === JSON.stringify(next.questionTitleStyle) && prev.onOpenQuestionTypeMenu == next.onOpenQuestionTypeMenu;
28953
+ return prevOptionKey === nextOptionKey && prevIsLoadingQuestionTypes === nextIsLoadingQuestionTypes && JSON.stringify(prev.data) === JSON.stringify(next.data) && JSON.stringify(prevQuestionTypes) === JSON.stringify(nextQuestionTypes) && prev.path === next.path && prev.isMath == next.isMath && prev.answerCount == next.answerCount && prev.disabled == next.disabled && JSON.stringify(prev.questionTitleStyle) === JSON.stringify(next.questionTitleStyle) && prev.onOpenQuestionTypeMenu == next.onOpenQuestionTypeMenu;
28356
28954
  };
28357
28955
  var QuestionBlock$1 = React.memo(QuestionBlock, isEqual$1);
28358
28956
 
28359
- var _excluded$f = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
28957
+ var _excluded$g = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
28360
28958
  var _ = _$5;
28361
28959
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28362
28960
  var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate;
@@ -28369,14 +28967,16 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28369
28967
  optionKey = _ref.optionKey,
28370
28968
  categories = _ref.categories,
28371
28969
  questionTypes = _ref.questionTypes,
28970
+ disabled = _ref.disabled,
28372
28971
  onDelete = _ref.onDelete,
28373
28972
  onOpenSubCategoryMenu = _ref.onOpenSubCategoryMenu,
28374
28973
  onOpenCategoryMenu = _ref.onOpenCategoryMenu,
28375
28974
  onCloseCategoryMenu = _ref.onCloseCategoryMenu,
28376
28975
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
28377
28976
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
28378
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$f);
28977
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$g);
28379
28978
  var errors = formikProps.errors;
28979
+ var theme = material.useTheme();
28380
28980
  var articles = data.articles,
28381
28981
  questions = data.questions;
28382
28982
  var blockErrors = _.get(errors, path);
@@ -28397,7 +28997,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28397
28997
  gap: 2
28398
28998
  }, !isMath && React__default.createElement(material.Stack, {
28399
28999
  sx: {
28400
- border: "1px solid " + (blockErrors ? open ? error.main : error.light : open ? main_theme.less_dark : main_theme.light),
29000
+ border: "1px solid " + (blockErrors ? open ? error.main : error.light : open ? theme.palette.secondary.main : theme.palette.secondary.light),
28401
29001
  borderRadius: 2
28402
29002
  },
28403
29003
  gap: 1,
@@ -28411,6 +29011,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28411
29011
  expandedIndex: index,
28412
29012
  data: article,
28413
29013
  path: path + ".articles[" + index + "]",
29014
+ disabled: disabled,
28414
29015
  onDuplicate: handleDuplicateArticle,
28415
29016
  onDelete: onDelete,
28416
29017
  optionKey: optionKey,
@@ -28426,6 +29027,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28426
29027
  width: "fit-content"
28427
29028
  },
28428
29029
  variant: "contained",
29030
+ disabled: disabled,
28429
29031
  startIcon: React__default.createElement(io.IoIosAdd, null),
28430
29032
  onClick: function onClick() {
28431
29033
  arrayHelpers.push(DEFAULT_ARTICLE);
@@ -28445,6 +29047,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
28445
29047
  questionTypes: questionTypes,
28446
29048
  isLoadingQuestionTypes: isLoadingQuestionTypes,
28447
29049
  optionKey: optionKey,
29050
+ disabled: disabled,
28448
29051
  onOpenQuestionTypeMenu: handleOpenQuestionTypeMenu,
28449
29052
  onCloseQuestionTypeMenu: onCloseQuestionTypeMenu
28450
29053
  }, formikProps));
@@ -28474,11 +29077,11 @@ var isEqual$2 = function isEqual(prev, next) {
28474
29077
  var nextOnOpenSubCategoryMenu = next.onOpenSubCategoryMenu;
28475
29078
  var prevOnOpenQuestionTypeMenu = prev.onOpenQuestionTypeMenu;
28476
29079
  var nextOnOpenQuestionTypeMenu = next.onOpenQuestionTypeMenu;
28477
- return prevOptionKey === nextOptionKey && prevIsLoadingCategories === nextIsLoadingCategories && JSON.stringify(prevCategories) === JSON.stringify(nextCategories) && prevIsLoadingQuestionTypes === nextIsLoadingQuestionTypes && JSON.stringify(prevQuestionTypes) === JSON.stringify(nextQuestionTypes) && prev.path === next.path && prev.isMath === next.isMath && prev.open === next.open && JSON.stringify(prev.data) === JSON.stringify(next.data) && JSON.stringify(prevBlockErrors) === JSON.stringify(nextBlockErrors) && prevOnOpenCategoryMenu === nextOnOpenCategoryMenu && prevOnOpenSubCategoryMenu === nextOnOpenSubCategoryMenu && prevOnOpenQuestionTypeMenu === nextOnOpenQuestionTypeMenu;
29080
+ return prevOptionKey === nextOptionKey && prevIsLoadingCategories === nextIsLoadingCategories && JSON.stringify(prevCategories) === JSON.stringify(nextCategories) && prevIsLoadingQuestionTypes === nextIsLoadingQuestionTypes && JSON.stringify(prevQuestionTypes) === JSON.stringify(nextQuestionTypes) && prev.path === next.path && prev.isMath === next.isMath && prev.open === next.open && prev.disabled === next.disabled && JSON.stringify(prev.data) === JSON.stringify(next.data) && JSON.stringify(prevBlockErrors) === JSON.stringify(nextBlockErrors) && prevOnOpenCategoryMenu === nextOnOpenCategoryMenu && prevOnOpenSubCategoryMenu === nextOnOpenSubCategoryMenu && prevOnOpenQuestionTypeMenu === nextOnOpenQuestionTypeMenu;
28478
29081
  };
28479
29082
  var QuestionGroupBlockBody$1 = React.memo(QuestionGroupBlockBody, isEqual$2);
28480
29083
 
28481
- var _excluded$g = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "isDisabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
29084
+ var _excluded$h = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
28482
29085
  var _$1 = _$5;
28483
29086
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28484
29087
  var _data$articles$2, _data$articles$2$cate, _data$articles$2$cate2, _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2;
@@ -28493,7 +29096,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28493
29096
  isLoadingQuestionTypes = _ref.isLoadingQuestionTypes,
28494
29097
  questionTypes = _ref.questionTypes,
28495
29098
  optionKey = _ref.optionKey,
28496
- isDisabled = _ref.isDisabled,
29099
+ disabled = _ref.disabled,
28497
29100
  onToggle = _ref.onToggle,
28498
29101
  onQuestionCountChange = _ref.onQuestionCountChange,
28499
29102
  onDelete = _ref.onDelete,
@@ -28503,13 +29106,13 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28503
29106
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
28504
29107
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
28505
29108
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
28506
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$g);
29109
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$h);
28507
29110
  var errors = formikProps.errors,
28508
29111
  setFieldValue = formikProps.setFieldValue;
28509
29112
  var _useTranslation = reactI18next.useTranslation(),
28510
29113
  t = _useTranslation.t;
28511
29114
  var key = paths.join(".");
28512
- var title = t("group_n", {
29115
+ var title = t(isMath ? "question_group_n" : "text_group_n", {
28513
29116
  n: expandedIndex + 1
28514
29117
  });
28515
29118
  var handleToggle = function handleToggle() {
@@ -28591,7 +29194,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28591
29194
  expanded: open,
28592
29195
  onChange: handleToggle,
28593
29196
  sx: {
28594
- border: "1px solid " + (blockErrors ? open ? error.main : error.light : open ? main_theme.less_dark : main_theme.light)
29197
+ border: "1px solid " + (blockErrors ? open ? error.main : error.light : open ? colors.yellow[500] : colors.yellow[300])
28595
29198
  }
28596
29199
  }, React__default.createElement(material.AccordionSummary, {
28597
29200
  expandIcon: React__default.createElement(md.MdExpandMore, {
@@ -28620,6 +29223,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28620
29223
  }, React__default.createElement(fa6.FaTrashCan, {
28621
29224
  size: 12
28622
29225
  })), React__default.createElement(material.Typography, {
29226
+ fontSize: "18px",
28623
29227
  fontWeight: 700,
28624
29228
  whiteSpace: "nowrap"
28625
29229
  }, title, !open && ":")), React__default.createElement(material.Box, {
@@ -28651,7 +29255,8 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28651
29255
  render: function render(_ref2) {
28652
29256
  var field = _ref2.field;
28653
29257
  return React__default.createElement(QuestionCountSelector, Object.assign({}, field, {
28654
- onChange: handleChangeQuestionCount
29258
+ onChange: handleChangeQuestionCount,
29259
+ isDisabled: disabled
28655
29260
  }));
28656
29261
  }
28657
29262
  }))), isMath && React__default.createElement(material.Grid, {
@@ -28689,6 +29294,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28689
29294
  onMenuClose: onCloseCategoryMenu
28690
29295
  },
28691
29296
  onChange: handleChangeCategory,
29297
+ isDisabled: disabled,
28692
29298
  placeholder: t("select_category")
28693
29299
  });
28694
29300
  }
@@ -28729,7 +29335,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28729
29335
  onMenuClose: onCloseCategoryMenu
28730
29336
  },
28731
29337
  onChange: handleChangeSubCategory,
28732
- isDisabled: isDisabled || !((_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]),
29338
+ 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]),
28733
29339
  placeholder: t("select_category")
28734
29340
  });
28735
29341
  }
@@ -28748,7 +29354,8 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28748
29354
  render: function render(_ref5) {
28749
29355
  var field = _ref5.field;
28750
29356
  return React__default.createElement(AnswerCountSelector, Object.assign({}, field, {
28751
- onChange: handleChangeAnswerCount
29357
+ onChange: handleChangeAnswerCount,
29358
+ isDisabled: disabled
28752
29359
  }));
28753
29360
  }
28754
29361
  })))), isMath && React__default.createElement(material.Box, {
@@ -28761,6 +29368,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28761
29368
  }, React__default.createElement(material.Button, {
28762
29369
  variant: "contained",
28763
29370
  color: "success",
29371
+ disabled: disabled,
28764
29372
  onClick: handleCopyCategories,
28765
29373
  sx: {
28766
29374
  whiteSpace: "nowrap"
@@ -28786,6 +29394,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28786
29394
  isLoadingCategories: isLoadingCategories,
28787
29395
  isLoadingQuestionTypes: isLoadingQuestionTypes,
28788
29396
  optionKey: optionKey,
29397
+ disabled: disabled,
28789
29398
  onDelete: onDelete,
28790
29399
  onOpenSubCategoryMenu: onOpenSubCategoryMenu,
28791
29400
  onOpenCategoryMenu: onOpenCategoryMenu,
@@ -28795,7 +29404,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
28795
29404
  }, formikProps)))));
28796
29405
  };
28797
29406
 
28798
- var _excluded$h = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
29407
+ var _excluded$i = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
28799
29408
  var ChapterBlockBody = function ChapterBlockBody(_ref) {
28800
29409
  var path = _ref.path,
28801
29410
  paths = _ref.paths,
@@ -28807,6 +29416,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
28807
29416
  subChapters = _ref.subChapters,
28808
29417
  categories = _ref.categories,
28809
29418
  questionTypes = _ref.questionTypes,
29419
+ disabled = _ref.disabled,
28810
29420
  onDelete = _ref.onDelete,
28811
29421
  onOpenSubCategoryMenu = _ref.onOpenSubCategoryMenu,
28812
29422
  onOpenCategoryMenu = _ref.onOpenCategoryMenu,
@@ -28814,7 +29424,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
28814
29424
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
28815
29425
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
28816
29426
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
28817
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$h);
29427
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
28818
29428
  var _useTranslation = reactI18next.useTranslation(),
28819
29429
  t = _useTranslation.t;
28820
29430
  var setFieldValue = formikProps.setFieldValue;
@@ -28918,6 +29528,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
28918
29528
  categories: categories,
28919
29529
  isLoadingQuestionTypes: isLoadingQuestionTypes,
28920
29530
  questionTypes: questionTypes,
29531
+ disabled: disabled,
28921
29532
  onToggle: handleToggle,
28922
29533
  onDelete: onDelete,
28923
29534
  onOpenCategoryMenu: onOpenCategoryMenu,
@@ -28932,6 +29543,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
28932
29543
  },
28933
29544
  variant: "contained",
28934
29545
  startIcon: React__default.createElement(io.IoIosAdd, null),
29546
+ disabled: disabled,
28935
29547
  onClick: function onClick() {
28936
29548
  {
28937
29549
  var length = subChapters.length;
@@ -28962,6 +29574,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
28962
29574
  optionKey: optionKey,
28963
29575
  isLoadingCategories: isLoadingCategories,
28964
29576
  categories: categories,
29577
+ disabled: disabled,
28965
29578
  onOpenCategoryMenu: onOpenCategoryMenu,
28966
29579
  onOpenSubCategoryMenu: onOpenSubCategoryMenu,
28967
29580
  onCloseCategoryMenu: onCloseCategoryMenu,
@@ -28977,6 +29590,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
28977
29590
  },
28978
29591
  variant: "contained",
28979
29592
  startIcon: React__default.createElement(io.IoIosAdd, null),
29593
+ disabled: disabled,
28980
29594
  onClick: function onClick() {
28981
29595
  var length = questionGroups.length;
28982
29596
  var addedGroup = handleGetNewQuestionGroup();
@@ -28988,7 +29602,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
28988
29602
  }));
28989
29603
  };
28990
29604
 
28991
- var _excluded$i = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
29605
+ var _excluded$j = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
28992
29606
  var _$2 = _$5;
28993
29607
  var ChapterBlock = function ChapterBlock(_ref) {
28994
29608
  var data = _ref.data,
@@ -29002,6 +29616,7 @@ var ChapterBlock = function ChapterBlock(_ref) {
29002
29616
  categories = _ref.categories,
29003
29617
  questionTypes = _ref.questionTypes,
29004
29618
  optionKey = _ref.optionKey,
29619
+ disabled = _ref.disabled,
29005
29620
  onToggle = _ref.onToggle,
29006
29621
  onDelete = _ref.onDelete,
29007
29622
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
@@ -29010,12 +29625,13 @@ var ChapterBlock = function ChapterBlock(_ref) {
29010
29625
  onOpenSubCategoryMenu = _ref.onOpenSubCategoryMenu,
29011
29626
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
29012
29627
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
29013
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
29628
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$j);
29014
29629
  var errors = formikProps.errors;
29015
29630
  var _useTranslation = reactI18next.useTranslation(),
29016
29631
  t = _useTranslation.t;
29632
+ var theme = material.useTheme();
29017
29633
  var key = paths.join(".");
29018
- var title = t("chapter_number", {
29634
+ var title = t((paths === null || paths === void 0 ? void 0 : paths.length) > 1 ? "sub_unit_number" : "unit_number", {
29019
29635
  number: paths.join(".")
29020
29636
  });
29021
29637
  var handleToggle = function handleToggle() {
@@ -29035,7 +29651,7 @@ var ChapterBlock = function ChapterBlock(_ref) {
29035
29651
  expanded: open,
29036
29652
  onChange: handleToggle,
29037
29653
  sx: {
29038
- border: "1px solid " + (blockErrors ? open ? error.main : error.light : open ? main_theme.less_dark : main_theme.light)
29654
+ border: "1px solid " + (blockErrors ? open ? error.main : error.light : open ? (paths === null || paths === void 0 ? void 0 : paths.length) > 1 ? theme.palette.success.main : theme.palette.info.main : (paths === null || paths === void 0 ? void 0 : paths.length) > 1 ? theme.palette.success.light : theme.palette.info.light)
29039
29655
  }
29040
29656
  }, React__default.createElement(material.AccordionSummary, {
29041
29657
  expandIcon: React__default.createElement(md.MdExpandMore, {
@@ -29058,10 +29674,12 @@ var ChapterBlock = function ChapterBlock(_ref) {
29058
29674
  color: "default",
29059
29675
  size: "small",
29060
29676
  className: "bg-danger text-white",
29677
+ disabled: disabled,
29061
29678
  onClick: handleClickDeleteChapter
29062
29679
  }, React__default.createElement(fa6.FaTrashCan, {
29063
29680
  size: 12
29064
29681
  })), React__default.createElement(material.Typography, {
29682
+ fontSize: (paths === null || paths === void 0 ? void 0 : paths.length) > 1 ? "24px" : "36px",
29065
29683
  fontWeight: 700,
29066
29684
  whiteSpace: "nowrap"
29067
29685
  }, title)), React__default.createElement(material.Box, {
@@ -29083,7 +29701,9 @@ var ChapterBlock = function ChapterBlock(_ref) {
29083
29701
  return React__default.createElement(material.TextField, Object.assign({
29084
29702
  placeholder: t("name")
29085
29703
  }, field, {
29086
- size: "small"
29704
+ size: "small",
29705
+ onKeyDown: handleKeyDown,
29706
+ disabled: disabled
29087
29707
  }));
29088
29708
  }
29089
29709
  }), !!pageNameError && React__default.createElement(material.Typography, {
@@ -29104,7 +29724,9 @@ var ChapterBlock = function ChapterBlock(_ref) {
29104
29724
  placeholder: t("page_from"),
29105
29725
  type: "number"
29106
29726
  }, field, {
29107
- size: "small"
29727
+ size: "small",
29728
+ onKeyDown: handleKeyDown,
29729
+ disabled: disabled
29108
29730
  }));
29109
29731
  }
29110
29732
  }), !!pageFromError && React__default.createElement(material.Typography, {
@@ -29125,7 +29747,9 @@ var ChapterBlock = function ChapterBlock(_ref) {
29125
29747
  placeholder: t("page_to"),
29126
29748
  type: "number"
29127
29749
  }, field, {
29128
- size: "small"
29750
+ size: "small",
29751
+ onKeyDown: handleKeyDown,
29752
+ disabled: disabled
29129
29753
  }));
29130
29754
  }
29131
29755
  }), !!pageToError && React__default.createElement(material.Typography, {
@@ -29144,6 +29768,7 @@ var ChapterBlock = function ChapterBlock(_ref) {
29144
29768
  isLoadingQuestionTypes: isLoadingQuestionTypes,
29145
29769
  isLoadingCategories: isLoadingCategories,
29146
29770
  optionKey: optionKey,
29771
+ disabled: disabled,
29147
29772
  onDelete: onDelete,
29148
29773
  onCopiedPrevQuestionGroup: onCopiedPrevQuestionGroup,
29149
29774
  onOpenSubCategoryMenu: onOpenSubCategoryMenu,
@@ -29191,7 +29816,7 @@ var QuestionTypeFilter = function QuestionTypeFilter(_ref) {
29191
29816
  }));
29192
29817
  if (inputRef.current) inputRef.current.value = "";
29193
29818
  };
29194
- var schoolOptions = SCHOOL_OPTIONS$1.map(function (i) {
29819
+ var schoolOptions = SCHOOL_OPTIONS.map(function (i) {
29195
29820
  return _extends({}, i, {
29196
29821
  label: t(i.label)
29197
29822
  });
@@ -29199,13 +29824,13 @@ var QuestionTypeFilter = function QuestionTypeFilter(_ref) {
29199
29824
  var gradeOptions = React.useMemo(function () {
29200
29825
  switch (filter === null || filter === void 0 ? void 0 : filter.schoolType) {
29201
29826
  case SchoolType.Middle:
29202
- return MIDDLE_GRADES$1.map(function (i) {
29827
+ return MIDDLE_GRADES.map(function (i) {
29203
29828
  return _extends({}, i, {
29204
29829
  label: typeof i.label === "string" ? t(i.label) : i.label
29205
29830
  });
29206
29831
  });
29207
29832
  case SchoolType.High:
29208
- return HIGH_GRADES$1.map(function (i) {
29833
+ return HIGH_GRADES.map(function (i) {
29209
29834
  return _extends({}, i, {
29210
29835
  label: t(i.label)
29211
29836
  });
@@ -29275,7 +29900,8 @@ var QuestionTypeFilter = function QuestionTypeFilter(_ref) {
29275
29900
  }, React__default.createElement(material.FormLabel, null, t("search")), React__default.createElement(material.TextField, {
29276
29901
  placeholder: t("question_type_search_keyword"),
29277
29902
  size: "small",
29278
- inputRef: inputRef
29903
+ inputRef: inputRef,
29904
+ onKeyDown: handleKeyDown
29279
29905
  })), React__default.createElement(material.FormGroup, {
29280
29906
  sx: {
29281
29907
  display: "flex",
@@ -29514,9 +30140,10 @@ var useTextbookOptions = function useTextbookOptions(subjectId, isMath, filter,
29514
30140
 
29515
30141
  var _$3 = _$5;
29516
30142
  var TextbookContentsTab = function TextbookContentsTab(props) {
29517
- var values = props.values,
30143
+ var disabled = props.disabled,
30144
+ values = props.values,
29518
30145
  setFieldValue = props.setFieldValue;
29519
- var isMath = values.type === 2;
30146
+ var isMath = values.type === TextbookEditorType.Math;
29520
30147
  var _useTranslation = reactI18next.useTranslation(),
29521
30148
  t = _useTranslation.t;
29522
30149
  var _useState = React.useState(""),
@@ -29627,7 +30254,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
29627
30254
  return React__default.createElement(material.Stack, {
29628
30255
  direction: "column",
29629
30256
  gap: 3
29630
- }, isMath && React__default.createElement(material.Box, null, React__default.createElement(QuestionTypeFilter, {
30257
+ }, isMath && !disabled && React__default.createElement(material.Box, null, React__default.createElement(QuestionTypeFilter, {
29631
30258
  filter: filter,
29632
30259
  setFilter: setFilter,
29633
30260
  inputRef: inputRef,
@@ -29648,6 +30275,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
29648
30275
  categories: categories,
29649
30276
  isLoadingQuestionTypes: isLoadingQuestionTypes,
29650
30277
  questionTypes: questionTypes,
30278
+ disabled: disabled,
29651
30279
  onToggle: handleToggleBlock,
29652
30280
  onDelete: handleOpenConfirmDelete,
29653
30281
  onCopiedPrevQuestionGroup: handleCopiedPrevQuestionGroup,
@@ -29663,6 +30291,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
29663
30291
  width: "fit-content"
29664
30292
  },
29665
30293
  variant: "contained",
30294
+ disabled: disabled,
29666
30295
  startIcon: React__default.createElement(io.IoIosAdd, null),
29667
30296
  onClick: function onClick() {
29668
30297
  var length = values.chapters.length;
@@ -29681,8 +30310,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
29681
30310
  }));
29682
30311
  };
29683
30312
 
29684
- var _excluded$j = ["value"],
29685
- _excluded2$2 = ["onChange"];
30313
+ var _excluded$k = ["value"];
29686
30314
  var VisuallyHiddenInput = material.styled("input")({
29687
30315
  clip: "rect(0 0 0 0)",
29688
30316
  clipPath: "inset(50%)",
@@ -29693,16 +30321,67 @@ var VisuallyHiddenInput = material.styled("input")({
29693
30321
  whiteSpace: "nowrap",
29694
30322
  width: "100%"
29695
30323
  });
30324
+ var customSelectStyles = {
30325
+ control: function control(baseStyles, state) {
30326
+ return _extends({}, baseStyles, {
30327
+ fontSize: "16px",
30328
+ fontWeight: baseStyles.fontWeight,
30329
+ color: styles.darker,
30330
+ borderColor: state.isFocused ? styles.dark : baseStyles.borderColor,
30331
+ boxShadow: state.isFocused ? "0 0 0 1px " + styles.dark + "4D" : baseStyles.boxShadow,
30332
+ "&:active": {
30333
+ borderColor: state.isFocused ? styles.dark : baseStyles.borderColor
30334
+ },
30335
+ "&:hover": {
30336
+ borderColor: state.isFocused ? styles.dark : baseStyles.borderColor
30337
+ },
30338
+ paddingBlock: '8px'
30339
+ });
30340
+ },
30341
+ singleValue: function singleValue(baseStyles) {
30342
+ return _extends({}, baseStyles, {
30343
+ fontSize: "16px",
30344
+ fontWeight: baseStyles.fontWeight,
30345
+ color: styles.darker
30346
+ });
30347
+ }
30348
+ };
29696
30349
  var TextbookInfoTab = function TextbookInfoTab(_ref) {
29697
- var setFieldValue = _ref.setFieldValue,
30350
+ var _user$roles;
30351
+ var isCreatedByAdmin = _ref.isCreatedByAdmin,
30352
+ setFieldValue = _ref.setFieldValue,
29698
30353
  values = _ref.values,
29699
30354
  errors = _ref.errors,
29700
30355
  coverImage = _ref.coverImage,
29701
- isAdmin = _ref.isAdmin,
30356
+ isSuperAdminUser = _ref.isSuperAdminUser,
29702
30357
  textbookId = _ref.textbookId,
30358
+ disabled = _ref.disabled,
29703
30359
  handleUploadImage = _ref.handleUploadImage;
29704
30360
  var _useTranslation = reactI18next.useTranslation(),
29705
30361
  t = _useTranslation.t;
30362
+ var user = reactRedux.useSelector(function (state) {
30363
+ var _state$common;
30364
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
30365
+ });
30366
+ var isTeacher = user && (user === null || user === void 0 ? void 0 : (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(exports.Role.Teacher));
30367
+ var gradeOptions = GRADE_OPTIONS.map(function (i) {
30368
+ return {
30369
+ label: t(i.label),
30370
+ value: i.value
30371
+ };
30372
+ });
30373
+ var preparedTypeOptions = Object.entries(exports.PreparedType).filter(function (_ref2) {
30374
+ var key = _ref2[0];
30375
+ return isNaN(Number(key));
30376
+ }).map(function (_ref3) {
30377
+ var key = _ref3[0],
30378
+ value = _ref3[1];
30379
+ return {
30380
+ label: t(key),
30381
+ value: value
30382
+ };
30383
+ });
30384
+ var hidePublicField = !textbookId && isSuperAdminUser || textbookId && isCreatedByAdmin;
29706
30385
  return React__default.createElement(material.Grid, {
29707
30386
  padding: 3,
29708
30387
  container: true,
@@ -29732,24 +30411,26 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29732
30411
  style: {
29733
30412
  padding: 4,
29734
30413
  color: "#fff",
29735
- background: styles.less_dark,
30414
+ background: !disabled ? styles.less_dark : styles.light,
29736
30415
  width: "150px",
29737
30416
  borderRadius: "6px",
29738
30417
  alignItems: "center",
29739
30418
  justifyContent: "center",
29740
30419
  position: "relative",
29741
30420
  display: "flex",
29742
- cursor: "pointer"
30421
+ cursor: disabled ? undefined : "pointer"
29743
30422
  }
29744
30423
  }, t("change_file"), React__default.createElement(VisuallyHiddenInput, {
29745
30424
  id: "coverImage",
29746
30425
  type: "file",
29747
30426
  accept: "image/*",
29748
30427
  onChange: function onChange(event) {
29749
- return handleUploadImage(event);
30428
+ return !disabled && handleUploadImage(event);
29750
30429
  },
29751
30430
  onClick: function onClick(e) {
29752
- e.target.value = "";
30431
+ if (!disabled) {
30432
+ e.target.value = "";
30433
+ }
29753
30434
  }
29754
30435
  }))) : React__default.createElement("label", {
29755
30436
  htmlFor: "coverImage",
@@ -29762,17 +30443,19 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29762
30443
  justifyContent: "center",
29763
30444
  position: "relative",
29764
30445
  display: "flex",
29765
- cursor: "pointer"
30446
+ cursor: disabled ? undefined : "pointer"
29766
30447
  }
29767
30448
  }, React__default.createElement(io.IoIosAdd, null), React__default.createElement(VisuallyHiddenInput, {
29768
30449
  id: "coverImage",
29769
30450
  type: "file",
29770
30451
  accept: "image/*",
29771
30452
  onChange: function onChange(event) {
29772
- return handleUploadImage(event);
30453
+ return !disabled && handleUploadImage(event);
29773
30454
  },
29774
30455
  onClick: function onClick(e) {
29775
- e.target.value = "";
30456
+ if (!disabled) {
30457
+ e.target.value = "";
30458
+ }
29776
30459
  }
29777
30460
  })))), React__default.createElement(material.Grid, {
29778
30461
  item: true,
@@ -29791,10 +30474,10 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29791
30474
  htmlFor: "publicationDate"
29792
30475
  }, t("publication_date")), React__default.createElement(formik.Field, {
29793
30476
  name: "publicationDate",
29794
- render: function render(_ref2) {
29795
- var _ref2$field = _ref2.field,
29796
- value = _ref2$field.value,
29797
- action = _objectWithoutPropertiesLoose(_ref2$field, _excluded$j);
30477
+ render: function render(_ref4) {
30478
+ var _ref4$field = _ref4.field,
30479
+ value = _ref4$field.value,
30480
+ action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$k);
29798
30481
  return React__default.createElement(xDatePickers.LocalizationProvider, {
29799
30482
  dateAdapter: AdapterMoment.AdapterMoment
29800
30483
  }, React__default.createElement(xDatePickers.DatePicker, Object.assign({}, action, {
@@ -29806,7 +30489,8 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29806
30489
  value: moment(value),
29807
30490
  onChange: function onChange(value) {
29808
30491
  return setFieldValue("publicationDate", moment(value).format(DATE_FORMAT));
29809
- }
30492
+ },
30493
+ disabled: disabled
29810
30494
  })));
29811
30495
  }
29812
30496
  }), !!(errors !== null && errors !== void 0 && errors.publicationDate) && React__default.createElement(material.Typography, {
@@ -29824,9 +30508,12 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29824
30508
  htmlFor: "publisher"
29825
30509
  }, t("publisher")), React__default.createElement(formik.Field, {
29826
30510
  name: "publisher",
29827
- render: function render(_ref3) {
29828
- var field = _ref3.field;
29829
- return React__default.createElement(material.TextField, Object.assign({}, field));
30511
+ render: function render(_ref5) {
30512
+ var field = _ref5.field;
30513
+ return React__default.createElement(material.TextField, Object.assign({}, field, {
30514
+ onKeyDown: handleKeyDown,
30515
+ disabled: disabled
30516
+ }));
29830
30517
  }
29831
30518
  }), !!(errors !== null && errors !== void 0 && errors.publisher) && React__default.createElement(material.Typography, {
29832
30519
  fontWeight: 500,
@@ -29843,25 +30530,17 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29843
30530
  htmlFor: "preparedType"
29844
30531
  }, t("type")), React__default.createElement(formik.Field, {
29845
30532
  name: "preparedType",
29846
- render: function render(_ref4) {
29847
- var field = _ref4.field;
29848
- return React__default.createElement(material.Select, Object.assign({
29849
- displayEmpty: true
29850
- }, field), Object.entries(_extends({}, exports.PreparedType)).filter(function (_ref5) {
29851
- var label = _ref5[0];
29852
- return !Number(label);
29853
- }).map(function (_ref6, index) {
29854
- var label = _ref6[0],
29855
- value = _ref6[1];
29856
- if (Number(label)) return;
29857
- if (label === "my_created_questions" || label === "academy_questions") return React__default.createElement(material.MenuItem, {
29858
- key: index,
29859
- value: value
29860
- }, t(label));
29861
- return React__default.createElement(material.MenuItem, {
29862
- key: index,
29863
- value: index + 1
29864
- }, t(label));
30533
+ render: function render(_ref6) {
30534
+ var field = _ref6.field;
30535
+ return React__default.createElement(CustomSelect, Object.assign({}, field, {
30536
+ options: preparedTypeOptions,
30537
+ value: values.preparedType,
30538
+ onChange: function onChange(val) {
30539
+ setFieldValue(field.name, !(val !== null && val !== void 0 && val.value) ? 0 : Number(val.value));
30540
+ },
30541
+ styles: customSelectStyles,
30542
+ isDisabled: disabled || isTeacher && !textbookId,
30543
+ isClearable: true
29865
30544
  }));
29866
30545
  }
29867
30546
  }), !!(errors !== null && errors !== void 0 && errors.preparedType) && React__default.createElement(material.Typography, {
@@ -29881,17 +30560,20 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29881
30560
  name: "isbn",
29882
30561
  render: function render(_ref7) {
29883
30562
  var field = _ref7.field;
29884
- return React__default.createElement(material.TextField, Object.assign({}, field));
30563
+ return React__default.createElement(material.TextField, Object.assign({}, field, {
30564
+ onKeyDown: handleKeyDown,
30565
+ disabled: disabled
30566
+ }));
29885
30567
  }
29886
30568
  }), !!(errors !== null && errors !== void 0 && errors.isbn) && React__default.createElement(material.Typography, {
29887
30569
  fontWeight: 500,
29888
30570
  fontSize: "10px",
29889
30571
  lineHeight: "11.93px",
29890
30572
  color: !(errors !== null && errors !== void 0 && errors.isbn) ? "#97A1AF" : "#F34B4B"
29891
- }, errors === null || errors === void 0 ? void 0 : errors.isbn))), !(isAdmin && !textbookId) && React__default.createElement(material.Grid, {
30573
+ }, errors === null || errors === void 0 ? void 0 : errors.isbn))), React__default.createElement(material.Grid, {
29892
30574
  item: true,
29893
30575
  xs: 6
29894
- }, React__default.createElement(material.Stack, {
30576
+ }, !hidePublicField && React__default.createElement(material.Stack, {
29895
30577
  flexDirection: "column",
29896
30578
  gap: 1,
29897
30579
  alignItems: "start"
@@ -29903,7 +30585,13 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29903
30585
  var field = _ref8.field;
29904
30586
  return React__default.createElement(material.Checkbox, Object.assign({
29905
30587
  checked: field === null || field === void 0 ? void 0 : field.value
29906
- }, field));
30588
+ }, field, {
30589
+ onChange: function onChange(e, checked) {
30590
+ field.onChange(e, checked);
30591
+ if (checked) setFieldValue("textbookOwners", []);
30592
+ },
30593
+ disabled: disabled
30594
+ }));
29907
30595
  }
29908
30596
  }), !!(errors !== null && errors !== void 0 && errors.isPublic) && React__default.createElement(material.Typography, {
29909
30597
  fontWeight: 500,
@@ -29921,15 +30609,16 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
29921
30609
  }, t("grade")), React__default.createElement(formik.Field, {
29922
30610
  name: "grade",
29923
30611
  render: function render(_ref9) {
29924
- var _ref9$field = _ref9.field,
29925
- _onChange = _ref9$field.onChange,
29926
- action = _objectWithoutPropertiesLoose(_ref9$field, _excluded2$2);
29927
- return React__default.createElement(material.TextField, Object.assign({
29928
- onChange: function onChange(e) {
29929
- e.target.value = e.target.value.replace(/[^\d]/g, "");
29930
- _onChange(e);
29931
- }
29932
- }, action));
30612
+ var field = _ref9.field;
30613
+ return React__default.createElement(CustomSelect, Object.assign({}, field, {
30614
+ options: gradeOptions,
30615
+ value: values.grade,
30616
+ styles: customSelectStyles,
30617
+ onChange: function onChange(val) {
30618
+ setFieldValue(field.name, String(val.value));
30619
+ },
30620
+ isDisabled: disabled
30621
+ }));
29933
30622
  }
29934
30623
  }), !!(errors !== null && errors !== void 0 && errors.grade) && React__default.createElement(material.Typography, {
29935
30624
  fontWeight: 500,
@@ -29945,19 +30634,16 @@ var AcademySelector = function AcademySelector(_ref) {
29945
30634
  title = _ref.title,
29946
30635
  options = _ref.options,
29947
30636
  isLoading = _ref.isLoading,
29948
- valueById = _ref.valueById,
29949
30637
  isMultiple = _ref.isMultiple,
29950
30638
  _ref$isClearable = _ref.isClearable,
29951
30639
  isClearable = _ref$isClearable === void 0 ? true : _ref$isClearable,
29952
- disabled = _ref.disabled;
30640
+ disabled = _ref.disabled,
30641
+ defaultValue = _ref.defaultValue;
29953
30642
  var _useState = React.useState(""),
29954
30643
  searchString = _useState[0],
29955
30644
  setSearchString = _useState[1];
29956
30645
  var _useTranslation = reactI18next.useTranslation(),
29957
30646
  t = _useTranslation.t;
29958
- var valueOption = valueById !== null && typeof valueById !== "undefined" ? (options === null || options === void 0 ? void 0 : options.find(function (option) {
29959
- return option.value == valueById;
29960
- })) || null : null;
29961
30647
  return React__default.createElement(material.FormGroup, null, !!title && React__default.createElement("label", {
29962
30648
  className: "text-muted"
29963
30649
  }, title), React__default.createElement(CustomSelectOption, {
@@ -29969,10 +30655,11 @@ var AcademySelector = function AcademySelector(_ref) {
29969
30655
  isLoading: isLoading,
29970
30656
  placeholder: t('please_select'),
29971
30657
  isMulti: isMultiple,
29972
- value: valueOption || value,
30658
+ value: value,
29973
30659
  onChange: onChange,
29974
30660
  isDisabled: disabled,
29975
- isClearable: isClearable
30661
+ isClearable: isClearable,
30662
+ defaultValue: defaultValue
29976
30663
  }));
29977
30664
  };
29978
30665
 
@@ -29986,15 +30673,12 @@ var CourseSelector = function CourseSelector(_ref) {
29986
30673
  minimumTextSearchLength = _ref.minimumTextSearchLength,
29987
30674
  placeholder = _ref.placeholder,
29988
30675
  isClearable = _ref.isClearable,
29989
- valueById = _ref.valueById;
30676
+ isDisabled = _ref.isDisabled;
29990
30677
  var _useState = React.useState(""),
29991
30678
  searchString = _useState[0],
29992
30679
  setSearchString = _useState[1];
29993
30680
  var _useTranslation = reactI18next.useTranslation(),
29994
30681
  t = _useTranslation.t;
29995
- var valueOption = valueById !== null && typeof valueById !== "undefined" ? (options === null || options === void 0 ? void 0 : options.find(function (option) {
29996
- return option.value == valueById;
29997
- })) || null : null;
29998
30682
  return React__default.createElement(material.FormGroup, null, !!title && React__default.createElement("label", null, title), React__default.createElement(CustomSelectOption, {
29999
30683
  options: options,
30000
30684
  inputValue: searchString,
@@ -30006,98 +30690,95 @@ var CourseSelector = function CourseSelector(_ref) {
30006
30690
  number: minimumTextSearchLength
30007
30691
  }) : t("select_class_placeholder")),
30008
30692
  isMulti: isMulti,
30009
- value: valueOption || value,
30693
+ value: value,
30010
30694
  onChange: onChange,
30011
- isClearable: isClearable
30695
+ isClearable: isClearable,
30696
+ isDisabled: isDisabled
30012
30697
  }));
30013
30698
  };
30014
30699
 
30015
30700
  var useSelect = function useSelect(_ref) {
30016
- var academyId = _ref.academyId,
30017
- handleChangeEmail = _ref.handleChangeEmail;
30701
+ var email = _ref.email;
30018
30702
  var _useTranslation = reactI18next.useTranslation(),
30019
30703
  t = _useTranslation.t;
30704
+ var academy = reactRedux.useSelector(function (state) {
30705
+ var _state$common;
30706
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.academy;
30707
+ });
30708
+ var formattedAcademy = academy ? {
30709
+ label: academy.name,
30710
+ value: academy.id
30711
+ } : null;
30712
+ var academies = formattedAcademy ? [formattedAcademy] : [];
30020
30713
  var _useState = React.useState([]),
30021
- academies = _useState[0],
30022
- setAcademies = _useState[1];
30714
+ courses = _useState[0],
30715
+ setCourses = _useState[1];
30023
30716
  var _useState2 = React.useState(false),
30024
30717
  isLoading = _useState2[0],
30025
30718
  setLoading = _useState2[1];
30026
- var user = reactRedux.useSelector(function (state) {
30027
- var _state$common;
30028
- return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
30029
- });
30030
- var isSuperAdmin = !!user && !user.academyDomain;
30031
- var loadData = _$5.debounce(function (e) {
30032
- try {
30033
- var _temp2 = function _temp2() {
30034
- setLoading(false);
30035
- };
30036
- var value = e.target.value;
30037
- setLoading(true);
30038
- var _temp = _catch(function () {
30039
- handleChangeEmail(value);
30040
- return Promise.resolve(getAcademyByTeacher(value, isSuperAdmin)).then(function (_ref2) {
30041
- var data = _ref2.data;
30042
- setAcademies(data.data);
30719
+ React.useEffect(function () {
30720
+ if (!email || !academy) return;
30721
+ var fetchData = _$5.debounce(function () {
30722
+ try {
30723
+ var _temp2 = function _temp2() {
30724
+ setLoading(false);
30725
+ };
30726
+ setLoading(true);
30727
+ var _temp = _catch(function () {
30728
+ return Promise.resolve(getCourseByTeacherAcademy(email, academy === null || academy === void 0 ? void 0 : academy.id)).then(function (_ref2) {
30729
+ var data = _ref2.data;
30730
+ var formattedCourses = data.data.map(function (course) {
30731
+ return {
30732
+ label: course.name,
30733
+ value: course.id
30734
+ };
30735
+ });
30736
+ setCourses(formattedCourses);
30737
+ });
30738
+ }, function (err) {
30739
+ reactToastify.toast.error(getErrorMessage(t, err));
30043
30740
  });
30044
- }, function (err) {
30045
- reactToastify.toast.error(getErrorMessage(t, err));
30046
- });
30047
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
30048
- } catch (e) {
30049
- return Promise.reject(e);
30050
- }
30051
- }, 1000);
30052
- var academyOptions = React.useMemo(function () {
30053
- if (!(academies !== null && academies !== void 0 && academies.length)) return [];
30054
- return academies === null || academies === void 0 ? void 0 : academies.map(function (academy) {
30055
- return {
30056
- label: academy.name,
30057
- value: academy.id
30058
- };
30059
- });
30060
- }, [JSON.stringify(academies)]);
30061
- var courseOptions = React.useMemo(function () {
30062
- var _academy$courses;
30063
- if (!academyId) return [];
30064
- var academy = academies === null || academies === void 0 ? void 0 : academies.find(function (academy) {
30065
- return academy.id === academyId;
30066
- });
30067
- return academy === null || academy === void 0 ? void 0 : (_academy$courses = academy.courses) === null || _academy$courses === void 0 ? void 0 : _academy$courses.map(function (course) {
30068
- return {
30069
- label: course.name,
30070
- value: course.id
30071
- };
30072
- });
30073
- }, [JSON.stringify(academies), academyId]);
30741
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
30742
+ } catch (e) {
30743
+ return Promise.reject(e);
30744
+ }
30745
+ }, 1000);
30746
+ fetchData();
30747
+ return function () {
30748
+ return fetchData.cancel();
30749
+ };
30750
+ }, [email]);
30074
30751
  return {
30075
30752
  t: t,
30076
- loadData: loadData,
30077
30753
  isLoading: isLoading,
30078
- academyOptions: academyOptions,
30079
- courseOptions: courseOptions
30754
+ academies: academies,
30755
+ courses: courses
30080
30756
  };
30081
30757
  };
30082
30758
 
30083
30759
  var OwnerSelector = function OwnerSelector(_ref) {
30084
- var _values$textbookOwner, _errors$textbookOwner, _errors$textbookOwner2, _values$textbookOwner2, _errors$textbookOwner3, _errors$textbookOwner4;
30760
+ var _values$textbookOwner, _errors$textbookOwner, _errors$textbookOwner2, _values$textbookOwner3, _errors$textbookOwner3, _errors$textbookOwner4;
30085
30761
  var values = _ref.values,
30086
30762
  errors = _ref.errors,
30087
30763
  index = _ref.index,
30088
- academyId = _ref.academyId,
30089
- onChangeFieldValue = _ref.onChangeFieldValue;
30090
- var handleChangeEmail = function handleChangeEmail(value) {
30091
- onChangeFieldValue("textbookOwners[" + index + "].email", value);
30092
- };
30764
+ email = _ref.email,
30765
+ onChangeFieldValue = _ref.onChangeFieldValue,
30766
+ disabled = _ref.disabled;
30093
30767
  var _useSelect = useSelect({
30094
- academyId: academyId,
30095
- handleChangeEmail: handleChangeEmail
30768
+ email: email
30096
30769
  }),
30097
30770
  t = _useSelect.t,
30098
30771
  isLoading = _useSelect.isLoading,
30099
- academyOptions = _useSelect.academyOptions,
30100
- courseOptions = _useSelect.courseOptions;
30772
+ academies = _useSelect.academies,
30773
+ courses = _useSelect.courses;
30774
+ var handleChangeAcademy = function handleChangeAcademy(val) {
30775
+ onChangeFieldValue("textbookOwners[" + index + "].academyId", val === null || val === void 0 ? void 0 : val.value);
30776
+ onChangeFieldValue("textbookOwners[" + index + "].academy", val);
30777
+ };
30778
+ var handleChangeCourse = function handleChangeCourse(val) {
30779
+ onChangeFieldValue("textbookOwners[" + index + "].courseId", val === null || val === void 0 ? void 0 : val.value);
30780
+ onChangeFieldValue("textbookOwners[" + index + "].course", val);
30781
+ };
30101
30782
  return React__default.createElement(React__default.Fragment, null, (values === null || values === void 0 ? void 0 : (_values$textbookOwner = values.textbookOwners) === null || _values$textbookOwner === void 0 ? void 0 : _values$textbookOwner[index].email) && React__default.createElement(material.Stack, {
30102
30783
  flexDirection: "column",
30103
30784
  gap: 1,
@@ -30107,14 +30788,16 @@ var OwnerSelector = function OwnerSelector(_ref) {
30107
30788
  }, t("academy")), React__default.createElement(formik.Field, {
30108
30789
  name: "textbookOwners[" + index + "].academyId",
30109
30790
  render: function render(_ref2) {
30791
+ var _values$textbookOwner2;
30110
30792
  var field = _ref2.field;
30111
30793
  return React__default.createElement(AcademySelector, Object.assign({}, field, {
30112
- options: academyOptions,
30794
+ options: academies,
30795
+ disabled: true,
30796
+ value: (_values$textbookOwner2 = values.textbookOwners[index]) === null || _values$textbookOwner2 === void 0 ? void 0 : _values$textbookOwner2.academy,
30113
30797
  isLoading: isLoading,
30114
30798
  valueById: field === null || field === void 0 ? void 0 : field.value,
30115
- onChange: function onChange(val) {
30116
- return onChangeFieldValue("textbookOwners[" + index + "].academyId", val === null || val === void 0 ? void 0 : val.value);
30117
- }
30799
+ onChange: handleChangeAcademy,
30800
+ isDisabled: disabled
30118
30801
  }));
30119
30802
  }
30120
30803
  }), !!(errors !== null && errors !== void 0 && (_errors$textbookOwner = errors.textbookOwners) !== null && _errors$textbookOwner !== void 0 && (_errors$textbookOwner2 = _errors$textbookOwner[index]) !== null && _errors$textbookOwner2 !== void 0 && _errors$textbookOwner2.academyId) && React__default.createElement(material.Typography, {
@@ -30122,7 +30805,7 @@ var OwnerSelector = function OwnerSelector(_ref) {
30122
30805
  fontSize: "10px",
30123
30806
  lineHeight: "11.93px",
30124
30807
  color: !(errors !== null && errors !== void 0 && errors.textbookOwners[index].academyId) ? "#97A1AF" : "#F34B4B"
30125
- }, errors === null || errors === void 0 ? void 0 : errors.textbookOwners[index].academyId)), (values === null || values === void 0 ? void 0 : (_values$textbookOwner2 = values.textbookOwners) === null || _values$textbookOwner2 === void 0 ? void 0 : _values$textbookOwner2[index].email) && React__default.createElement(material.Stack, {
30808
+ }, errors === null || errors === void 0 ? void 0 : errors.textbookOwners[index].academyId)), (values === null || values === void 0 ? void 0 : (_values$textbookOwner3 = values.textbookOwners) === null || _values$textbookOwner3 === void 0 ? void 0 : _values$textbookOwner3[index].email) && React__default.createElement(material.Stack, {
30126
30809
  flexDirection: "column",
30127
30810
  gap: 1,
30128
30811
  width: 1
@@ -30131,14 +30814,14 @@ var OwnerSelector = function OwnerSelector(_ref) {
30131
30814
  }, t("class")), React__default.createElement(formik.Field, {
30132
30815
  name: "textbookOwners[" + index + "].courseId",
30133
30816
  render: function render(_ref3) {
30817
+ var _values$textbookOwner4;
30134
30818
  var field = _ref3.field;
30135
30819
  return React__default.createElement(CourseSelector, Object.assign({}, field, {
30136
- options: courseOptions,
30820
+ options: courses,
30137
30821
  isLoading: isLoading,
30138
- valueById: field === null || field === void 0 ? void 0 : field.value,
30139
- onChange: function onChange(val) {
30140
- return onChangeFieldValue("textbookOwners[" + index + "].courseId", val === null || val === void 0 ? void 0 : val.value);
30141
- }
30822
+ value: (_values$textbookOwner4 = values.textbookOwners[index]) === null || _values$textbookOwner4 === void 0 ? void 0 : _values$textbookOwner4.course,
30823
+ onChange: handleChangeCourse,
30824
+ isDisabled: disabled
30142
30825
  }));
30143
30826
  }
30144
30827
  }), !!(errors !== null && errors !== void 0 && (_errors$textbookOwner3 = errors.textbookOwners) !== null && _errors$textbookOwner3 !== void 0 && (_errors$textbookOwner4 = _errors$textbookOwner3[index]) !== null && _errors$textbookOwner4 !== void 0 && _errors$textbookOwner4.courseId) && React__default.createElement(material.Typography, {
@@ -30153,10 +30836,16 @@ var _$4 = _$5;
30153
30836
  var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30154
30837
  var errors = _ref.errors,
30155
30838
  values = _ref.values,
30839
+ disabled = _ref.disabled,
30156
30840
  setFieldValue = _ref.setFieldValue;
30157
30841
  var textbookOwners = values.textbookOwners;
30842
+ var academy = reactRedux.useSelector(function (state) {
30843
+ var _state$common;
30844
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.academy;
30845
+ });
30158
30846
  var _useTranslation = reactI18next.useTranslation(),
30159
30847
  t = _useTranslation.t;
30848
+ var hasErrors = errors.textbookOwners;
30160
30849
  return React__default.createElement(material.Box, {
30161
30850
  className: "bg-white mt-2",
30162
30851
  sx: {
@@ -30169,15 +30858,15 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30169
30858
  return React__default.createElement(material.Grid, {
30170
30859
  container: true,
30171
30860
  spacing: "16px"
30172
- }, textbookOwners === null || textbookOwners === void 0 ? void 0 : textbookOwners.map(function (_val, index) {
30173
- var _values$textbookOwner, _values$textbookOwner2, _values$textbookOwner3;
30861
+ }, textbookOwners === null || textbookOwners === void 0 ? void 0 : textbookOwners.map(function (val, index) {
30862
+ var _errors$textbookOwner, _values$textbookOwner, _values$textbookOwner2;
30174
30863
  return React__default.createElement(material.Grid, {
30175
30864
  item: true,
30176
30865
  xs: 6,
30177
- lg: 2
30866
+ lg: 3
30178
30867
  }, React__default.createElement(material.Stack, {
30179
30868
  sx: {
30180
- border: "1px solid " + styles.gray_300,
30869
+ border: "1px solid " + ((_errors$textbookOwner = errors.textbookOwners) !== null && _errors$textbookOwner !== void 0 && _errors$textbookOwner[index] ? styles.red_900 : styles.gray_300),
30181
30870
  borderRadius: "6px",
30182
30871
  width: "100%",
30183
30872
  height: "350px",
@@ -30195,6 +30884,7 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30195
30884
  top: 8,
30196
30885
  color: styles.gray_500
30197
30886
  },
30887
+ disabled: disabled || !!val.academyId && val.academyId !== (academy === null || academy === void 0 ? void 0 : academy.id),
30198
30888
  onClick: function onClick() {
30199
30889
  arrayHelpers.remove(index);
30200
30890
  }
@@ -30210,24 +30900,28 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30210
30900
  var field = _ref2.field;
30211
30901
  return React__default.createElement(material.TextField, Object.assign({
30212
30902
  fullWidth: true
30213
- }, field));
30903
+ }, field, {
30904
+ onKeyDown: handleKeyDown,
30905
+ disabled: disabled || !!val.academyId && val.academyId !== (academy === null || academy === void 0 ? void 0 : academy.id)
30906
+ }));
30214
30907
  }
30215
30908
  }), _$4.get(errors, "textbookOwners[" + index + "].email") && React__default.createElement(material.Typography, {
30216
30909
  fontWeight: 500,
30217
30910
  fontSize: "10px",
30218
30911
  lineHeight: "11.93px",
30219
- color: _$4.get(errors, "textbookOwners[" + index + "].email") ? "#97A1AF" : "#F34B4B"
30912
+ color: "#F34B4B"
30220
30913
  }, _$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, {
30221
30914
  values: values,
30222
30915
  errors: errors,
30223
30916
  index: index,
30917
+ email: values === null || values === void 0 ? void 0 : (_values$textbookOwner2 = values.textbookOwners) === null || _values$textbookOwner2 === void 0 ? void 0 : _values$textbookOwner2[index].email,
30224
30918
  onChangeFieldValue: setFieldValue,
30225
- academyId: values === null || values === void 0 ? void 0 : (_values$textbookOwner2 = values.textbookOwners) === null || _values$textbookOwner2 === void 0 ? void 0 : (_values$textbookOwner3 = _values$textbookOwner2[index]) === null || _values$textbookOwner3 === void 0 ? void 0 : _values$textbookOwner3.academyId
30919
+ disabled: disabled || !!val.academyId && val.academyId !== (academy === null || academy === void 0 ? void 0 : academy.id)
30226
30920
  })));
30227
- }), React__default.createElement(material.Grid, {
30921
+ }), !hasErrors && !disabled && academy && React__default.createElement(material.Grid, {
30228
30922
  item: true,
30229
30923
  xs: 6,
30230
- lg: 2
30924
+ lg: 3
30231
30925
  }, React__default.createElement("div", {
30232
30926
  style: {
30233
30927
  display: "flex",
@@ -30241,7 +30935,14 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30241
30935
  background: styles.gray_50
30242
30936
  },
30243
30937
  onClick: function onClick() {
30244
- return arrayHelpers.push(DefaultTextbookOwner);
30938
+ var _academy$id;
30939
+ arrayHelpers.push(_extends({}, DefaultTextbookOwner, {
30940
+ academy: academy ? {
30941
+ label: academy.name,
30942
+ value: academy.id
30943
+ } : null,
30944
+ academyId: (_academy$id = academy === null || academy === void 0 ? void 0 : academy.id) != null ? _academy$id : null
30945
+ }));
30245
30946
  }
30246
30947
  }, React__default.createElement(material.Stack, null, React__default.createElement(io.IoMdAdd, {
30247
30948
  size: 24
@@ -30250,160 +30951,20 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
30250
30951
  }));
30251
30952
  };
30252
30953
 
30253
- var _reduceToMathArticles = function reduceToMathArticles(textbook, isMath) {
30254
- var values = isMath !== undefined ? _$5.cloneDeep(textbook) : textbook;
30255
- if (isMath !== undefined) values.type = isMath;
30256
- for (var key in values) {
30257
- if (values.hasOwnProperty(key)) {
30258
- if (key === "articles") {
30259
- var _values$key;
30260
- values[key] = (_values$key = values[key]) !== null && _values$key !== void 0 && _values$key.length ? [values[key][0]] : [DEFAULT_ARTICLE];
30261
- } else if (typeof values[key] === "object" && values[key] !== null) {
30262
- _reduceToMathArticles(values[key]);
30263
- }
30264
- }
30265
- }
30266
- return values;
30267
- };
30268
- var _resetAllCategoriesAndQuestionTypesBySubject = function resetAllCategoriesAndQuestionTypesBySubject(textbook, subject) {
30269
- var values = subject ? _$5.cloneDeep(textbook) : textbook;
30270
- if (subject) {
30271
- values.subjectId = subject === null || subject === void 0 ? void 0 : subject.value;
30272
- values.subject = subject;
30273
- }
30274
- for (var key in values) {
30275
- if (values.hasOwnProperty(key)) {
30276
- if (key === "categories" || key === "categoryOptions") {
30277
- values[key] = [];
30278
- } else if (key === "questionType" || key === "questionTypeId") {
30279
- values[key] = null;
30280
- } else if (typeof values[key] === "object" && values[key] !== null) {
30281
- _resetAllCategoriesAndQuestionTypesBySubject(values[key]);
30282
- }
30283
- }
30284
- }
30285
- return values;
30286
- };
30287
- var convertResponseToRequest = function convertResponseToRequest(selectedTextbook) {
30288
- var _selectedTextbook$sub;
30289
- if (!selectedTextbook) return DEFAULT_TEXTBOOK_REQUEST;
30290
- return {
30291
- name: selectedTextbook.name || "",
30292
- subjectId: ((_selectedTextbook$sub = selectedTextbook.subject) === null || _selectedTextbook$sub === void 0 ? void 0 : _selectedTextbook$sub.id) || 0,
30293
- subject: selectedTextbook.subject ? {
30294
- label: selectedTextbook.subject.name,
30295
- value: selectedTextbook.subject.id
30296
- } : null,
30297
- preparedType: selectedTextbook.preparedType || 0,
30298
- grade: selectedTextbook.grade || "1",
30299
- publicationDate: (selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.publicationDate) || "",
30300
- publisher: selectedTextbook.publisher || "",
30301
- isbn: selectedTextbook.isbn || "",
30302
- coverImage: selectedTextbook.coverImage || "",
30303
- textbookOwners: selectedTextbook.textbookOwners,
30304
- isPublic: selectedTextbook.isPublic || false,
30305
- isShared: selectedTextbook.isShared || false,
30306
- isPrepared: true,
30307
- type: selectedTextbook.type,
30308
- chapters: selectedTextbook.chapters.map(function (c) {
30309
- var _c$questionGroups;
30310
- return {
30311
- name: c.name,
30312
- pageFrom: c.pageFrom || 0,
30313
- pageTo: c.pageTo || 0,
30314
- id: c.id,
30315
- questionGroups: ((_c$questionGroups = c.questionGroups) === null || _c$questionGroups === void 0 ? void 0 : _c$questionGroups.map(function (g) {
30316
- var _g$questions$;
30317
- return {
30318
- id: g.id,
30319
- chapterId: c.id,
30320
- questions: g.questions.map(function (q) {
30321
- var _q$questionType;
30322
- return _extends({}, q, {
30323
- questionTypeId: q.questionTypeId || q.questionType.id,
30324
- questionType: (_q$questionType = q.questionType) !== null && _q$questionType !== void 0 && _q$questionType.id ? {
30325
- label: q.questionType.name,
30326
- value: q.questionType.id
30327
- } : null
30328
- });
30329
- }),
30330
- articles: g.articles.map(function (a) {
30331
- return _extends({}, a, {
30332
- categoryOptions: a.categories.map(function (cat) {
30333
- return {
30334
- label: cat.name,
30335
- value: cat.id
30336
- };
30337
- }),
30338
- categories: a.categories.filter(function (cat) {
30339
- return !!cat.id;
30340
- }).map(function (cat) {
30341
- return cat.id;
30342
- })
30343
- });
30344
- }),
30345
- questionCount: g.questions.length,
30346
- answerCount: ((_g$questions$ = g.questions[0]) === null || _g$questions$ === void 0 ? void 0 : _g$questions$.numberOfAnswers) || 5
30347
- };
30348
- })) || [],
30349
- subChapters: c.subChapters.map(function (sub) {
30350
- var _sub$questionGroups;
30351
- return {
30352
- name: sub.name,
30353
- pageFrom: sub.pageFrom || 0,
30354
- pageTo: sub.pageTo || 0,
30355
- id: sub.id,
30356
- questionGroups: ((_sub$questionGroups = sub.questionGroups) === null || _sub$questionGroups === void 0 ? void 0 : _sub$questionGroups.map(function (g) {
30357
- var _g$questions$2;
30358
- return {
30359
- id: g.id,
30360
- chapterId: c.id,
30361
- questions: g.questions.map(function (q) {
30362
- var _q$questionType2;
30363
- return _extends({}, q, {
30364
- questionTypeId: q.questionTypeId || q.questionType.id,
30365
- questionType: (_q$questionType2 = q.questionType) !== null && _q$questionType2 !== void 0 && _q$questionType2.id ? {
30366
- label: q.questionType.name,
30367
- value: q.questionType.id
30368
- } : null
30369
- });
30370
- }),
30371
- articles: g.articles.map(function (a) {
30372
- return _extends({}, a, {
30373
- categoryOptions: a.categories.map(function (cat) {
30374
- return {
30375
- label: cat.name,
30376
- value: cat.id
30377
- };
30378
- }),
30379
- categories: a.categories.filter(function (cat) {
30380
- return !!cat.id;
30381
- }).map(function (cat) {
30382
- return cat.id;
30383
- })
30384
- });
30385
- }),
30386
- questionCount: g.questions.length,
30387
- answerCount: ((_g$questions$2 = g.questions[0]) === null || _g$questions$2 === void 0 ? void 0 : _g$questions$2.numberOfAnswers) || 5
30388
- };
30389
- })) || [],
30390
- subChapters: []
30391
- };
30392
- })
30393
- };
30394
- })
30395
- };
30396
- };
30397
-
30398
- var _excluded$k = ["isAdmin", "textbookId", "selected", "coverImage", "onChangeTab", "onUploadImage"];
30954
+ var _excluded$l = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "onChangeTab", "onUploadImage"];
30399
30955
  var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30400
- var isAdmin = _ref.isAdmin,
30956
+ var isCreatedByAdmin = _ref.isCreatedByAdmin,
30957
+ isSuperAdminUser = _ref.isSuperAdminUser,
30958
+ isSuperAdmin = _ref.isSuperAdmin,
30959
+ isAdmin = _ref.isAdmin,
30401
30960
  textbookId = _ref.textbookId,
30402
30961
  selected = _ref.selected,
30403
30962
  coverImage = _ref.coverImage,
30963
+ disabled = _ref.disabled,
30964
+ ownersDisabled = _ref.ownersDisabled,
30404
30965
  onChangeTab = _ref.onChangeTab,
30405
30966
  onUploadImage = _ref.onUploadImage,
30406
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
30967
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$l);
30407
30968
  var values = formikProps.values,
30408
30969
  errors = formikProps.errors,
30409
30970
  dirty = formikProps.dirty,
@@ -30421,7 +30982,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30421
30982
  };
30422
30983
  }, [dirty, i18n.t]);
30423
30984
  var handleChangeTextbookType = function handleChangeTextbookType() {
30424
- var isMath = values.type === 2 ? 1 : 2;
30985
+ var isMath = values.type === TextbookEditorType.Math ? TextbookEditorType.Korea : TextbookEditorType.Math;
30425
30986
  var newValues = _reduceToMathArticles(values, isMath);
30426
30987
  setValues(newValues);
30427
30988
  };
@@ -30458,7 +31019,9 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30458
31019
  return React__default.createElement(material.TextField, Object.assign({
30459
31020
  placeholder: i18n.t("title")
30460
31021
  }, field, {
30461
- size: "small"
31022
+ size: "small",
31023
+ disabled: disabled,
31024
+ onKeyDown: handleKeyDown
30462
31025
  }));
30463
31026
  }
30464
31027
  }), !!(errors !== null && errors !== void 0 && errors.name) && React__default.createElement(material.Typography, {
@@ -30478,7 +31041,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30478
31041
  var field = _ref3.field;
30479
31042
  return React__default.createElement(SubjectSelector, Object.assign({}, field, {
30480
31043
  value: values.subject,
30481
- isDisabled: !!textbookId,
31044
+ isDisabled: !!textbookId || disabled,
30482
31045
  onChange: handleChangeSubject
30483
31046
  }));
30484
31047
  }
@@ -30500,7 +31063,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30500
31063
  var field = _ref4.field;
30501
31064
  return React__default.createElement(material.Switch, Object.assign({}, field, {
30502
31065
  color: "success",
30503
- disabled: !!textbookId,
31066
+ disabled: !!textbookId || disabled,
30504
31067
  checked: values.type === 2,
30505
31068
  onChange: handleChangeTextbookType
30506
31069
  }));
@@ -30511,6 +31074,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30511
31074
  width: "fit-content"
30512
31075
  },
30513
31076
  variant: "contained",
31077
+ disabled: disabled,
30514
31078
  onClick: function onClick() {
30515
31079
  if (!_$5.isEmpty(errors)) {
30516
31080
  reactToastify.toast.error(i18n.t("please_fill_in_the_blank_fields"));
@@ -30553,7 +31117,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30553
31117
  sx: {
30554
31118
  color: contentsErrors && submitCount ? error.main + "!important" : "gray"
30555
31119
  }
30556
- }, a11yProps(1))), !(values !== null && values !== void 0 && values.isPublic) && (!isAdmin || textbookId) && (!textbookId || (values === null || values === void 0 ? void 0 : values.isShared)) && React__default.createElement(material.Tab, Object.assign({
31120
+ }, a11yProps(1))), !(values !== null && values !== void 0 && values.isPublic) && (!isSuperAdmin || textbookId) && (!textbookId && !isAdmin || (values === null || values === void 0 ? void 0 : values.isShared)) && React__default.createElement(material.Tab, Object.assign({
30557
31121
  label: i18n.t("textbook.owners"),
30558
31122
  sx: {
30559
31123
  color: textbookOwnersErrors && submitCount ? error.main + "!important" : "gray"
@@ -30565,14 +31129,20 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
30565
31129
  coverImage: coverImage,
30566
31130
  handleUploadImage: onUploadImage,
30567
31131
  textbookId: textbookId,
30568
- isAdmin: isAdmin
31132
+ disabled: disabled,
31133
+ isCreatedByAdmin: isCreatedByAdmin,
31134
+ isSuperAdminUser: isSuperAdminUser
30569
31135
  }))), React__default.createElement(CustomTextbookTab, {
30570
31136
  value: selected,
30571
31137
  index: 1
30572
- }, React__default.createElement(TextbookContentsTab, Object.assign({}, formikProps))), React__default.createElement(CustomTextbookTab, {
31138
+ }, React__default.createElement(TextbookContentsTab, Object.assign({}, formikProps, {
31139
+ disabled: disabled
31140
+ }))), React__default.createElement(CustomTextbookTab, {
30573
31141
  value: selected,
30574
31142
  index: 2
30575
- }, React__default.createElement(TextbookOwnersTab, Object.assign({}, formikProps))))));
31143
+ }, React__default.createElement(TextbookOwnersTab, Object.assign({}, formikProps, {
31144
+ disabled: ownersDisabled
31145
+ }))))));
30576
31146
  };
30577
31147
  var a11yProps = function a11yProps(index) {
30578
31148
  return {
@@ -30582,7 +31152,8 @@ var a11yProps = function a11yProps(index) {
30582
31152
  };
30583
31153
 
30584
31154
  var PreparedTextbookView = function PreparedTextbookView(_ref) {
30585
- var notFoundView = _ref.notFoundView,
31155
+ var role = _ref.role,
31156
+ notFoundView = _ref.notFoundView,
30586
31157
  onBackToList = _ref.onBackToList,
30587
31158
  textbookId = _ref.textbookId;
30588
31159
  var _useState = React.useState(0),
@@ -30593,9 +31164,15 @@ var PreparedTextbookView = function PreparedTextbookView(_ref) {
30593
31164
  };
30594
31165
  var _useTextbookManagemen = useTextbookManagement({
30595
31166
  onNavigateList: onBackToList,
30596
- textbookId: textbookId
31167
+ textbookId: textbookId,
31168
+ role: role
30597
31169
  }),
30598
31170
  t = _useTextbookManagemen.t,
31171
+ disabledTextbookOwners = _useTextbookManagemen.disabledTextbookOwners,
31172
+ isReadonly = _useTextbookManagemen.isReadonly,
31173
+ isEditable = _useTextbookManagemen.isEditable,
31174
+ isSuperAdmin = _useTextbookManagemen.isSuperAdmin,
31175
+ isSuperAdminUser = _useTextbookManagemen.isSuperAdminUser,
30599
31176
  isAdmin = _useTextbookManagemen.isAdmin,
30600
31177
  coverImage = _useTextbookManagemen.coverImage,
30601
31178
  selectedTextbook = _useTextbookManagemen.selectedTextbook,
@@ -30604,6 +31181,7 @@ var PreparedTextbookView = function PreparedTextbookView(_ref) {
30604
31181
  var textbookRequest = React.useMemo(function () {
30605
31182
  return convertResponseToRequest(selectedTextbook);
30606
31183
  }, [JSON.stringify(selectedTextbook)]);
31184
+ var isCreatedByAdmin = selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.isCreatedByAdmin;
30607
31185
  if (textbookId && selectedTextbook && !selectedTextbook.isPrepared) return notFoundView;
30608
31186
  return React__default.createElement(material.Box, null, React__default.createElement(formik.Formik, {
30609
31187
  initialValues: textbookRequest,
@@ -30614,12 +31192,17 @@ var PreparedTextbookView = function PreparedTextbookView(_ref) {
30614
31192
  onSubmit: handleSubmit
30615
31193
  }, function (props) {
30616
31194
  return React__default.createElement(PreparedTextbookForm, Object.assign({
31195
+ isCreatedByAdmin: isCreatedByAdmin,
31196
+ isSuperAdminUser: isSuperAdminUser,
30617
31197
  isAdmin: isAdmin,
31198
+ isSuperAdmin: isSuperAdmin,
30618
31199
  selected: selected,
30619
31200
  textbookId: textbookId,
30620
31201
  onChangeTab: handleChangeTab,
30621
31202
  onUploadImage: handleUploadImage,
30622
- coverImage: coverImage
31203
+ coverImage: coverImage,
31204
+ disabled: isReadonly || !isEditable,
31205
+ ownersDisabled: isReadonly || disabledTextbookOwners
30623
31206
  }, props));
30624
31207
  }));
30625
31208
  };
@@ -31852,7 +32435,7 @@ var ChapterProblemSolvingResultsDialog = function ChapterProblemSolvingResultsDi
31852
32435
  }, t("cancel"))))));
31853
32436
  };
31854
32437
 
31855
- var _excluded$l = ["onChange"];
32438
+ var _excluded$m = ["onChange"];
31856
32439
  var StartPageDialog = function StartPageDialog(_ref) {
31857
32440
  var t = _ref.t,
31858
32441
  onClose = _ref.onClose,
@@ -31913,7 +32496,7 @@ var StartPageDialog = function StartPageDialog(_ref) {
31913
32496
  }, t("page_to_start_with")), React__default.createElement(formik.Field, {
31914
32497
  name: "startPage",
31915
32498
  render: function render(_ref3) {
31916
- var field = _objectWithoutPropertiesLoose(_ref3, _excluded$l);
32499
+ var field = _objectWithoutPropertiesLoose(_ref3, _excluded$m);
31917
32500
  return React__default.createElement(CustomSelectOption, Object.assign({
31918
32501
  menuPosition: "fixed",
31919
32502
  onChange: function onChange(option) {
@@ -34575,6 +35158,18 @@ Object.defineProperty(exports, 'DemoContainer', {
34575
35158
  }
34576
35159
  });
34577
35160
  exports.moment = moment;
35161
+ Object.defineProperty(exports, 'CellMeasurerCache', {
35162
+ enumerable: true,
35163
+ get: function () {
35164
+ return reactVirtualized.CellMeasurerCache;
35165
+ }
35166
+ });
35167
+ Object.defineProperty(exports, 'MultiGrid', {
35168
+ enumerable: true,
35169
+ get: function () {
35170
+ return reactVirtualized.MultiGrid;
35171
+ }
35172
+ });
34578
35173
  exports.ACADEMY_DOMAIN = ACADEMY_DOMAIN;
34579
35174
  exports.ACCESS_TOKEN = ACCESS_TOKEN;
34580
35175
  exports.AcademyHeaders = AcademyHeaders;
@@ -34586,6 +35181,7 @@ exports.ArticleCategorySelector = ArticleCategorySelector;
34586
35181
  exports.ArticleDialog = ArticleDialog;
34587
35182
  exports.ArticleGroupView = ArticleGroupView;
34588
35183
  exports.BASE_URL = BASE_URL;
35184
+ exports.BRIEF_GRADE_OPTIONS = BRIEF_GRADE_OPTIONS;
34589
35185
  exports.ChapterBox = _ChapterBox;
34590
35186
  exports.ChatContainer = ChatContainer;
34591
35187
  exports.ChatTypes = types;
@@ -34606,7 +35202,6 @@ exports.DATE_TIME_MIN_VALUE = DATE_TIME_MIN_VALUE;
34606
35202
  exports.DEFAULT_NOTE_FILTER = DEFAULT_NOTE_FILTER;
34607
35203
  exports.DEFAULT_PAGING_RESPONSE = DEFAULT_PAGING_RESPONSE;
34608
35204
  exports.DefaultErrorMessage = DefaultErrorMessage;
34609
- exports.ELEMENTARY_GRADES = ELEMENTARY_GRADES;
34610
35205
  exports.EXAM_CHANNEL = EXAM_CHANNEL;
34611
35206
  exports.EXAM_STUDENT_CHANNEL = EXAM_STUDENT_CHANNEL;
34612
35207
  exports.ExamDetailView = ExamDetailView;
@@ -34616,7 +35211,7 @@ exports.GOOGLE_CLIENT_ID = GOOGLE_CLIENT_ID;
34616
35211
  exports.GOOGLE_RECAPTCHA_ID = GOOGLE_RECAPTCHA_ID;
34617
35212
  exports.GOOGLE_RECAPTCHA_KEY = GOOGLE_RECAPTCHA_KEY;
34618
35213
  exports.GOOGLE_RECAPTCHA_SECRET = GOOGLE_RECAPTCHA_SECRET;
34619
- exports.HIGH_GRADES = HIGH_GRADES;
35214
+ exports.GRADE_OPTIONS = GRADE_OPTIONS;
34620
35215
  exports.Header = Header;
34621
35216
  exports.InputText = InputText;
34622
35217
  exports.LANGUAGE = LANGUAGE;
@@ -34630,7 +35225,6 @@ exports.Login = Login;
34630
35225
  exports.LoginQRCode = LoginQRCode;
34631
35226
  exports.LoginWithEmail = LoginWithEmail;
34632
35227
  exports.LoginWithPassword = SignIn;
34633
- exports.MIDDLE_GRADES = MIDDLE_GRADES;
34634
35228
  exports.MathJaxContainer = MathJaxContainer;
34635
35229
  exports.MathTinyEditor = MathTinyEditor;
34636
35230
  exports.NewNoteButton = NewNoteButton;
@@ -34658,7 +35252,6 @@ exports.REDIRECT_URL = REDIRECT_URL;
34658
35252
  exports.RELEASE_DATE = RELEASE_DATE;
34659
35253
  exports.RecentUserActionNames = RecentUserActionNames;
34660
35254
  exports.ReleaseAlert = ReleaseAlert;
34661
- exports.SCHOOL_OPTIONS = SCHOOL_OPTIONS;
34662
35255
  exports.SUPER_ADMIN_BASE_URL = SUPER_ADMIN_BASE_URL;
34663
35256
  exports.ScoreSelector = ScoreSelector;
34664
35257
  exports.SearchInput = SearchInput;