touchstudy-core 0.1.176 → 0.1.177

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.
@@ -18,7 +18,7 @@ import moment from 'moment';
18
18
  export { default as moment } from 'moment';
19
19
  import { FaSave, FaCaretDown, FaTimes, FaTrash, FaSortUp, FaSortDown, FaPlusCircle, FaEye, FaPlus, FaCalendar, FaUser, FaBookOpen, FaUpload, FaPencilAlt, FaCheckCircle, FaShare, FaExchangeAlt, FaBell } from 'react-icons/fa';
20
20
  import { IoMdArrowBack, IoMdSync, IoIosAlert, IoIosArrowDown, IoIosSearch, IoIosArrowUp, IoIosAdd, IoMdAdd } from 'react-icons/io';
21
- import { IoClose, IoSearch, IoCloseOutline, IoTime, IoChevronUp, IoChevronDown, IoChatbubbleEllipsesSharp, IoPrint, IoCheckmarkCircle, IoChevronUpOutline, IoChevronDownOutline, IoReceiptSharp, IoBook, IoWarning, IoCalendarClear, IoPerson, IoInformationCircle, IoTrash, IoAddCircle, IoCheckmark, IoCloseCircle, IoLogOut, IoPlayCircleSharp, IoTimer } from 'react-icons/io5';
21
+ import { IoClose, IoSearch, IoCloseOutline, IoTime, IoChevronUp, IoChevronDown, IoChatbubbleEllipsesSharp, IoPrint, IoCheckmarkCircle, IoChevronUpOutline, IoChevronDownOutline, IoReceiptSharp, IoBook, IoWarning, IoCalendarClear, IoPerson, IoInformationCircle, IoTrash, IoAddCircle, IoCloseCircle, IoLogOut } from 'react-icons/io5';
22
22
  import MButton from '@mui/material/Button';
23
23
  import DialogTitle$1 from '@mui/material/DialogTitle';
24
24
  import DialogContent$1 from '@mui/material/DialogContent';
@@ -48,7 +48,7 @@ import CardMedia from '@mui/material/CardMedia';
48
48
  import { object, string, number, date as date$2, array, mixed } from 'yup';
49
49
  import { blue, grey as grey$1, yellow as yellow$1 } from '@mui/material/colors';
50
50
  import { GoogleReCaptcha, GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';
51
- import { MdVisibilityOff, MdVisibility, MdAutorenew, MdMoreHoriz, MdDownload, MdExpandMore, MdError } from 'react-icons/md';
51
+ import { MdVisibilityOff, MdVisibility, MdAutorenew, MdMoreHoriz, MdDownload, MdExpandMore } from 'react-icons/md';
52
52
  import { gapi } from 'gapi-script';
53
53
  import Pusher from 'pusher-js/with-encryption';
54
54
  import { BiSolidError } from 'react-icons/bi';
@@ -73,7 +73,6 @@ import { useForm } from 'react-hook-form';
73
73
  import { yupResolver } from '@hookform/resolvers/yup';
74
74
  import { PiDotsNineLight } from 'react-icons/pi';
75
75
  import Container$1 from '@mui/material/Container';
76
- import { AiOutlineLoading3Quarters } from 'react-icons/ai';
77
76
  import { BsCheckAll } from 'react-icons/bs';
78
77
  import Popover$1 from '@mui/material/Popover';
79
78
  import MenuItem from '@mui/material/MenuItem';
@@ -541,7 +540,6 @@ var teacher_in_charge = "담당 교사";
541
540
  var counselor = "상담교사";
542
541
  var new_question = "새로운 질문";
543
542
  var hour = "시간";
544
- var hour_h = "시간";
545
543
  var minute = "분";
546
544
  var second = "두번째";
547
545
  var question_order = "{{number}} 번";
@@ -1035,7 +1033,6 @@ var teacher_required = "선생님은 필수입니다";
1035
1033
  var total_users = "총 사용자";
1036
1034
  var added_date = "추가된 날짜";
1037
1035
  var sync_exam_results = "시험 결과 동기화";
1038
- var sync_textbook_results = "교재 결과 동기화";
1039
1036
  var update_data_fail = "데이터 업데이트 실패";
1040
1037
  var add_students_to_class = "수업에 학생 추가";
1041
1038
  var add_teachers_to_class = "수업에 교사 추가";
@@ -1046,13 +1043,9 @@ var question_management = "질문 관리";
1046
1043
  var student_data = "학생 데이터";
1047
1044
  var problem_number_question_chart = "문제 {{number}}번";
1048
1045
  var are_you_sure_to_sync_exam_results_to_academy = "시험 결과를 아카데미 {{ academyName }}에 동기화하시겠습니까(백그라운드에서 실행되며 시간이 다소 소요됨)";
1049
- var are_you_sure_to_sync_textbook_results_to_academy = "교재 학습 결과를 아카데미 {{ academyName }}에 동기화하시겠습니까? (백그라운드에서 실행되며 시간이 다소 소요됨)";
1050
1046
  var messages = {
1051
- exam_sessions_are_being_synchronized: "{{ total }} 개의 시험 세션이 동기화되고 있습니다",
1052
- textbook_sessions_are_being_synchronized: "{{ total }} 개의 교재 학습 세션이 동기화되고 있습니다"
1047
+ exam_sessions_are_being_synchronized: "{{ total }} 개의 시험 세션이 동기화되고 있습니다"
1053
1048
  };
1054
- var sync_exam = "시험 동기화";
1055
- var sync_textbook = "교재 동기화";
1056
1049
  var submit = "제출하다";
1057
1050
  var must_select_a_teacher_first = "먼저 교사를 선택해야 합니다";
1058
1051
  var student_grade_is_invalid = "학생 등급은 1에서 12 사이여야 합니다";
@@ -1116,7 +1109,6 @@ var academy_invite_detail = "아카데미 초대 세부정보";
1116
1109
  var are_you_sure_to_delete_academy_invite = "이 아카데미 초대를 삭제하시겠습니까?";
1117
1110
  var day = "낮";
1118
1111
  var days = "날";
1119
- var month = "월";
1120
1112
  var emails = "이메일";
1121
1113
  var is_accepted = "승인됨";
1122
1114
  var re_send = "다시 보내기";
@@ -1500,8 +1492,6 @@ var order_matters = "순서 상관 있음";
1500
1492
  var order_does_not_matter = "순서 상관 없음";
1501
1493
  var synonym_processing = "답 이음동의어 처리";
1502
1494
  var compare_type = "비교 유형";
1503
- var all_changes_saved = "모든 변경 사항이 저장되었습니다";
1504
- var saving = "절약";
1505
1495
  var textbook_name = "교재 이름";
1506
1496
  var korean_language = "국어";
1507
1497
  var answer_cannot_be_empty = "답변은 비워둘 수 없습니다";
@@ -1548,13 +1538,6 @@ var admin_to_teachers = "관리자에서 교사들에게";
1548
1538
  var teacher_to_teachers = "교사에서 교사들에게";
1549
1539
  var student_required = "학생은 필수입니다";
1550
1540
  var teachers_required = "교사가 필요합니다";
1551
- var all_changes_are_not_saved_yet = "아직 모든 변경 사항이 저장되지 않았습니다";
1552
- var pause = "일시정지";
1553
- var press_to_start = "눌러서 시작하기";
1554
- var study_timer = "순공 타이머";
1555
- var show_timer = "타이머 표시";
1556
- var failed_to_pause_the_subject_name = "과목 '{{name}}'를 일시 중지하는 데 실패했습니다";
1557
- var failed_to_start_the_subject_name = "과목 '{{name}}'를 시작하는 데 실패했습니다";
1558
1541
  var lang_ko = {
1559
1542
  problem_solving: problem_solving,
1560
1543
  my_story: my_story,
@@ -1746,7 +1729,6 @@ var lang_ko = {
1746
1729
  counselor: counselor,
1747
1730
  new_question: new_question,
1748
1731
  hour: hour,
1749
- hour_h: hour_h,
1750
1732
  minute: minute,
1751
1733
  second: second,
1752
1734
  question_order: question_order,
@@ -2235,7 +2217,6 @@ var lang_ko = {
2235
2217
  total_users: total_users,
2236
2218
  added_date: added_date,
2237
2219
  sync_exam_results: sync_exam_results,
2238
- sync_textbook_results: sync_textbook_results,
2239
2220
  update_data_fail: update_data_fail,
2240
2221
  add_students_to_class: add_students_to_class,
2241
2222
  add_teachers_to_class: add_teachers_to_class,
@@ -2246,10 +2227,7 @@ var lang_ko = {
2246
2227
  student_data: student_data,
2247
2228
  problem_number_question_chart: problem_number_question_chart,
2248
2229
  are_you_sure_to_sync_exam_results_to_academy: are_you_sure_to_sync_exam_results_to_academy,
2249
- are_you_sure_to_sync_textbook_results_to_academy: are_you_sure_to_sync_textbook_results_to_academy,
2250
2230
  messages: messages,
2251
- sync_exam: sync_exam,
2252
- sync_textbook: sync_textbook,
2253
2231
  submit: submit,
2254
2232
  must_select_a_teacher_first: must_select_a_teacher_first,
2255
2233
  student_grade_is_invalid: student_grade_is_invalid,
@@ -2313,7 +2291,6 @@ var lang_ko = {
2313
2291
  are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite,
2314
2292
  day: day,
2315
2293
  days: days,
2316
- month: month,
2317
2294
  emails: emails,
2318
2295
  is_accepted: is_accepted,
2319
2296
  re_send: re_send,
@@ -2685,8 +2662,6 @@ var lang_ko = {
2685
2662
  order_does_not_matter: order_does_not_matter,
2686
2663
  synonym_processing: synonym_processing,
2687
2664
  compare_type: compare_type,
2688
- all_changes_saved: all_changes_saved,
2689
- saving: saving,
2690
2665
  textbook_name: textbook_name,
2691
2666
  korean_language: korean_language,
2692
2667
  answer_cannot_be_empty: answer_cannot_be_empty,
@@ -2732,14 +2707,7 @@ var lang_ko = {
2732
2707
  admin_to_teachers: admin_to_teachers,
2733
2708
  teacher_to_teachers: teacher_to_teachers,
2734
2709
  student_required: student_required,
2735
- teachers_required: teachers_required,
2736
- all_changes_are_not_saved_yet: all_changes_are_not_saved_yet,
2737
- pause: pause,
2738
- press_to_start: press_to_start,
2739
- study_timer: study_timer,
2740
- show_timer: show_timer,
2741
- failed_to_pause_the_subject_name: failed_to_pause_the_subject_name,
2742
- failed_to_start_the_subject_name: failed_to_start_the_subject_name
2710
+ teachers_required: teachers_required
2743
2711
  };
2744
2712
 
2745
2713
  var problem_solving$1 = "Problem Solving";
@@ -2958,7 +2926,6 @@ var counselor$1 = "Counselor";
2958
2926
  var new_question$1 = "New Question";
2959
2927
  var hour$1 = "hr";
2960
2928
  var hours = "hrs";
2961
- var hour_h$1 = "h";
2962
2929
  var minute$1 = "min";
2963
2930
  var second$1 = "second";
2964
2931
  var question_order$1 = "Number {{number}}";
@@ -3427,7 +3394,6 @@ var teacher_required$1 = "Teacher is required";
3427
3394
  var total_users$1 = "Total users";
3428
3395
  var added_date$1 = "Added date";
3429
3396
  var sync_exam_results$1 = "Sync exam results";
3430
- var sync_textbook_results$1 = "Sync textbook results";
3431
3397
  var update_data_fail$1 = "Update data fail";
3432
3398
  var add_students_to_class$1 = "Add students to class";
3433
3399
  var add_teachers_to_class$1 = "Add teachers to class";
@@ -3438,13 +3404,9 @@ var question_management$1 = "Question Management";
3438
3404
  var student_data$1 = "Student Data";
3439
3405
  var problem_number_question_chart$1 = "Q. {{number}}";
3440
3406
  var are_you_sure_to_sync_exam_results_to_academy$1 = "Are you sure to sync exam results to academy \"{{ academyName }}\" (it will run in the background and take a while)";
3441
- var are_you_sure_to_sync_textbook_results_to_academy$1 = "Are you sure to sync textbook results to academy \"{{ academyName }}\" (it will run in the background and take a while)";
3442
3407
  var messages$1 = {
3443
- exam_sessions_are_being_synchronized: "{{ total }} exam sessions are being synchronized",
3444
- textbook_sessions_are_being_synchronized: "{{ total }} textbook sessions are being synchronized"
3408
+ exam_sessions_are_being_synchronized: "{{ total }} exam sessions are being synchronized"
3445
3409
  };
3446
- var sync_exam$1 = "Sync Exam";
3447
- var sync_textbook$1 = "Sync Textbook";
3448
3410
  var submit$1 = "Submit";
3449
3411
  var must_select_a_teacher_first$1 = "Must select a teacher first";
3450
3412
  var student_grade_is_invalid$1 = "Student grade must be from 1 to 12";
@@ -3508,7 +3470,6 @@ var academy_invite_detail$1 = "Academy Invite Detail";
3508
3470
  var are_you_sure_to_delete_academy_invite$1 = "Are you sure to delete this academy invite?";
3509
3471
  var day$1 = "day";
3510
3472
  var days$1 = "days";
3511
- var month$1 = "month";
3512
3473
  var emails$1 = "Emails";
3513
3474
  var is_accepted$1 = "Is Accepted";
3514
3475
  var re_send$1 = "Resend";
@@ -3893,8 +3854,6 @@ var order_matters$1 = "Order matters";
3893
3854
  var order_does_not_matter$1 = "Order doesn't matter";
3894
3855
  var synonym_processing$1 = "Answer Synonym processing";
3895
3856
  var compare_type$1 = "Compare Type";
3896
- var all_changes_saved$1 = "All changes saved";
3897
- var saving$1 = "Saving";
3898
3857
  var textbook_name$1 = "Textbook name";
3899
3858
  var korean_language$1 = "Korean";
3900
3859
  var answer_cannot_be_empty$1 = "Answer cannot be empty";
@@ -3941,13 +3900,6 @@ var admin_to_teachers$1 = "Admin to teachers";
3941
3900
  var teacher_to_teachers$1 = "Teacher to teachers";
3942
3901
  var student_required$1 = "Student is required";
3943
3902
  var teachers_required$1 = "Teachers are required";
3944
- var all_changes_are_not_saved_yet$1 = "All changes are not saved yet";
3945
- var pause$1 = "Pause";
3946
- var press_to_start$1 = "Press to start";
3947
- var study_timer$1 = "Focused Study Timer";
3948
- var show_timer$1 = "Show timer";
3949
- var failed_to_pause_the_subject_name$1 = "Failed to pause the subject '{{name}}'";
3950
- var failed_to_start_the_subject_name$1 = "Failed to start the subject '{{name}}'";
3951
3903
  var lang_en = {
3952
3904
  problem_solving: problem_solving$1,
3953
3905
  my_story: my_story$1,
@@ -4165,7 +4117,6 @@ var lang_en = {
4165
4117
  new_question: new_question$1,
4166
4118
  hour: hour$1,
4167
4119
  hours: hours,
4168
- hour_h: hour_h$1,
4169
4120
  minute: minute$1,
4170
4121
  second: second$1,
4171
4122
  question_order: question_order$1,
@@ -4629,7 +4580,6 @@ var lang_en = {
4629
4580
  total_users: total_users$1,
4630
4581
  added_date: added_date$1,
4631
4582
  sync_exam_results: sync_exam_results$1,
4632
- sync_textbook_results: sync_textbook_results$1,
4633
4583
  update_data_fail: update_data_fail$1,
4634
4584
  add_students_to_class: add_students_to_class$1,
4635
4585
  add_teachers_to_class: add_teachers_to_class$1,
@@ -4640,10 +4590,7 @@ var lang_en = {
4640
4590
  student_data: student_data$1,
4641
4591
  problem_number_question_chart: problem_number_question_chart$1,
4642
4592
  are_you_sure_to_sync_exam_results_to_academy: are_you_sure_to_sync_exam_results_to_academy$1,
4643
- are_you_sure_to_sync_textbook_results_to_academy: are_you_sure_to_sync_textbook_results_to_academy$1,
4644
4593
  messages: messages$1,
4645
- sync_exam: sync_exam$1,
4646
- sync_textbook: sync_textbook$1,
4647
4594
  submit: submit$1,
4648
4595
  must_select_a_teacher_first: must_select_a_teacher_first$1,
4649
4596
  student_grade_is_invalid: student_grade_is_invalid$1,
@@ -4707,7 +4654,6 @@ var lang_en = {
4707
4654
  are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite$1,
4708
4655
  day: day$1,
4709
4656
  days: days$1,
4710
- month: month$1,
4711
4657
  emails: emails$1,
4712
4658
  is_accepted: is_accepted$1,
4713
4659
  re_send: re_send$1,
@@ -5080,8 +5026,6 @@ var lang_en = {
5080
5026
  order_does_not_matter: order_does_not_matter$1,
5081
5027
  synonym_processing: synonym_processing$1,
5082
5028
  compare_type: compare_type$1,
5083
- all_changes_saved: all_changes_saved$1,
5084
- saving: saving$1,
5085
5029
  textbook_name: textbook_name$1,
5086
5030
  korean_language: korean_language$1,
5087
5031
  answer_cannot_be_empty: answer_cannot_be_empty$1,
@@ -5127,14 +5071,7 @@ var lang_en = {
5127
5071
  admin_to_teachers: admin_to_teachers$1,
5128
5072
  teacher_to_teachers: teacher_to_teachers$1,
5129
5073
  student_required: student_required$1,
5130
- teachers_required: teachers_required$1,
5131
- all_changes_are_not_saved_yet: all_changes_are_not_saved_yet$1,
5132
- pause: pause$1,
5133
- press_to_start: press_to_start$1,
5134
- study_timer: study_timer$1,
5135
- show_timer: show_timer$1,
5136
- failed_to_pause_the_subject_name: failed_to_pause_the_subject_name$1,
5137
- failed_to_start_the_subject_name: failed_to_start_the_subject_name$1
5074
+ teachers_required: teachers_required$1
5138
5075
  };
5139
5076
 
5140
5077
  i18n.use(initReactI18next).init({
@@ -5592,7 +5529,7 @@ var PrintExamView2 = function PrintExamView2(_ref) {
5592
5529
  }, t("print_pdf"))));
5593
5530
  };
5594
5531
 
5595
- var styles = {"lighter":"#F0FFF6","light":"#89F0B2","less_dark":"#3DC674","dark":"#349056","darker":"#18442A","gray_50":"#FBFBF9","gray_100":"#EAEAE5","gray_300":"#D0D0C8","gray_500":"#9A9A98","gray_700":"#5D5D5B","gray_900":"#363634","red_900":"#DB4D4D","green_support_900":"#3ACB46","yellow_900":"#FEAF06","purple_900":"#C3099A","btn-login-google":"_2HqmH","math-jax":"_3Pfdk","block-login":"_wWIyO","box-login":"_38Lo1","btn-primary":"_rd4Uy","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","dropdown-academy":"_3CMVp","image-academy":"_2ibYC","academy-btn":"_1JMRU","switch-icon":"_N4FNf","dropdown-content-academy":"_31Dr0","dropdown-academy-item":"_3bjcz","noGutters":"_31ZQk","custom-col-2":"_3yXyK","custom-col-3":"_1RsJQ","custom-col-5":"_L42CP","custom-col-10":"_2u6eL","custom-row":"_8x7OP","custom-col":"_1JmTh","custom-col-4":"_3HO1e","custom-col-8":"_Oy31M","custom-col-12":"_3aUKo","custom-container":"_39LRs","form-label":"__Ut-u","form-control":"_2k4dX","btn-outline-primary":"_2PWdX","sort-icons":"_mQvLF","active":"_3oAH-","form-select":"_3W3aw","truncate":"_3NJzN","headers":"_3xnI5","logo-container":"_3YG70","tabBox":"_1CQPn","routerBox":"_3hx2T","tabText":"_3UyhW","router-link-active":"_1TGKA","router-link":"_1AqMh","userImg":"_2RI6G","disabled-link":"_3aVHg","line-clamp":"_3fpky","timer-menu":"_3bvVg","timer-menu-item":"_z624V","subject-name":"_2KJX4","duration":"_1mwlk","icon-start":"_maff_"};
5532
+ var styles = {"lighter":"#F0FFF6","light":"#89F0B2","less_dark":"#3DC674","dark":"#349056","darker":"#18442A","gray_50":"#FBFBF9","gray_100":"#EAEAE5","gray_300":"#D0D0C8","gray_500":"#9A9A98","gray_700":"#5D5D5B","gray_900":"#363634","red_900":"#DB4D4D","green_support_900":"#3ACB46","yellow_900":"#FEAF06","purple_900":"#C3099A","btn-login-google":"_2HqmH","math-jax":"_3Pfdk","block-login":"_wWIyO","box-login":"_38Lo1","btn-primary":"_rd4Uy","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","dropdown-academy":"_3CMVp","image-academy":"_2ibYC","academy-btn":"_1JMRU","switch-icon":"_N4FNf","dropdown-content-academy":"_31Dr0","dropdown-academy-item":"_3bjcz","noGutters":"_31ZQk","custom-col-2":"_3yXyK","custom-col-3":"_1RsJQ","custom-col-5":"_L42CP","custom-col-10":"_2u6eL","custom-row":"_8x7OP","custom-col":"_1JmTh","custom-col-4":"_3HO1e","custom-col-8":"_Oy31M","custom-col-12":"_3aUKo","custom-container":"_39LRs","form-label":"__Ut-u","form-control":"_2k4dX","btn-outline-primary":"_2PWdX","sort-icons":"_mQvLF","active":"_3oAH-","form-select":"_3W3aw","truncate":"_3NJzN","headers":"_3xnI5","logo-container":"_3YG70","tabBox":"_1CQPn","routerBox":"_3hx2T","tabText":"_3UyhW","router-link-active":"_1TGKA","router-link":"_1AqMh","userImg":"_2RI6G","disabled-link":"_3aVHg","line-clamp":"_3fpky"};
5596
5533
 
5597
5534
  var config = {
5598
5535
  loader: {
@@ -6062,6 +5999,7 @@ var customStyles = {
6062
5999
 
6063
6000
  var _excluded = ["isDefault", "defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti"];
6064
6001
  var CustomAsyncSelect = function CustomAsyncSelect(_ref) {
6002
+ var _value$;
6065
6003
  var isDefault = _ref.isDefault,
6066
6004
  options = _ref.options,
6067
6005
  isDisabled = _ref.isDisabled,
@@ -6069,7 +6007,8 @@ var CustomAsyncSelect = function CustomAsyncSelect(_ref) {
6069
6007
  value = _ref.value,
6070
6008
  isMulti = _ref.isMulti,
6071
6009
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
6072
- var initialValues = Array.isArray(value) ? options.filter(function (i) {
6010
+ var isOptionValue = (value === null || value === void 0 ? void 0 : value.value) || (value === null || value === void 0 ? void 0 : (_value$ = value[0]) === null || _value$ === void 0 ? void 0 : _value$.value);
6011
+ var initialValues = isOptionValue ? value : Array.isArray(value) ? options.filter(function (i) {
6073
6012
  return value.includes(i.value);
6074
6013
  }) : isMulti ? options.filter(function (i) {
6075
6014
  return i.value == value;
@@ -6341,12 +6280,6 @@ var TextbookEditorType;
6341
6280
  TextbookEditorType[TextbookEditorType["Korea"] = 1] = "Korea";
6342
6281
  TextbookEditorType[TextbookEditorType["Math"] = 2] = "Math";
6343
6282
  })(TextbookEditorType || (TextbookEditorType = {}));
6344
- var PrintStatus;
6345
- (function (PrintStatus) {
6346
- PrintStatus[PrintStatus["Idle"] = 0] = "Idle";
6347
- PrintStatus[PrintStatus["Saving"] = 1] = "Saving";
6348
- PrintStatus[PrintStatus["Saved"] = 2] = "Saved";
6349
- })(PrintStatus || (PrintStatus = {}));
6350
6283
 
6351
6284
  var SchoolType$1;
6352
6285
  (function (SchoolType) {
@@ -6356,13 +6289,6 @@ var SchoolType$1;
6356
6289
  SchoolType[SchoolType["High"] = 3] = "High";
6357
6290
  })(SchoolType$1 || (SchoolType$1 = {}));
6358
6291
 
6359
- var SubjectTimerStatus;
6360
- (function (SubjectTimerStatus) {
6361
- SubjectTimerStatus[SubjectTimerStatus["NotStarted"] = 0] = "NotStarted";
6362
- SubjectTimerStatus[SubjectTimerStatus["Started"] = 1] = "Started";
6363
- SubjectTimerStatus[SubjectTimerStatus["Paused"] = 2] = "Paused";
6364
- })(SubjectTimerStatus || (SubjectTimerStatus = {}));
6365
-
6366
6292
  var canAccess = function canAccess(userRoles, componentRoles) {
6367
6293
  if (!Array.isArray(userRoles)) {
6368
6294
  return false;
@@ -6612,11 +6538,6 @@ var getRemainTime = function getRemainTime(startTime, duration) {
6612
6538
  if (timePass > durationInNumber) return 0;
6613
6539
  return durationInNumber - timePass;
6614
6540
  };
6615
- var getCountTime = function getCountTime(startTime, duration) {
6616
- var timePass = diffFromNow(startTime, "second");
6617
- if (typeof timePass !== "number") return null;
6618
- return duration + timePass;
6619
- };
6620
6541
 
6621
6542
  var formatDateTime = function formatDateTime(inputDate) {
6622
6543
  var date = new Date(inputDate);
@@ -8343,27 +8264,6 @@ var getSubjectListApi = function getSubjectListApi(textSearch) {
8343
8264
  return Promise.reject(e);
8344
8265
  }
8345
8266
  };
8346
- var getStudentSubjectListApi = function getStudentSubjectListApi() {
8347
- try {
8348
- return Promise.resolve(api.get(SUBJECT_URL + "/timers"));
8349
- } catch (e) {
8350
- return Promise.reject(e);
8351
- }
8352
- };
8353
- var startStudentSubjectTimerApi = function startStudentSubjectTimerApi(subjectId) {
8354
- try {
8355
- return Promise.resolve(api.post(SUBJECT_URL + "/" + subjectId + "/timers"));
8356
- } catch (e) {
8357
- return Promise.reject(e);
8358
- }
8359
- };
8360
- var pauseStudentSubjectApi = function pauseStudentSubjectApi(subjectId, recordId, data) {
8361
- try {
8362
- return Promise.resolve(api.post(SUBJECT_URL + "/" + subjectId + "/timers/" + recordId, data));
8363
- } catch (e) {
8364
- return Promise.reject(e);
8365
- }
8366
- };
8367
8267
 
8368
8268
  var SubjectSelector = function SubjectSelector(_ref) {
8369
8269
  var value = _ref.value,
@@ -10433,7 +10333,6 @@ var grey = {
10433
10333
  var green = {
10434
10334
  0: '#FFFFFF',
10435
10335
  100: '#F0FFF6',
10436
- 200: '#D2FFE4',
10437
10336
  300: '#89F0B2',
10438
10337
  500: '#3DC674',
10439
10338
  700: '#349056',
@@ -13225,7 +13124,7 @@ var DefaultLessonFilter = {
13225
13124
  };
13226
13125
  var DefaultTeacherFilter = {
13227
13126
  currentPage: 1,
13228
- pageSize: 50,
13127
+ pageSize: 100,
13229
13128
  sortColumnDirection: OrderBy$2.DESC,
13230
13129
  sortColumnName: TeacherSortBy.Name,
13231
13130
  textSearch: ""
@@ -13381,16 +13280,18 @@ var DEFAULT_USER_FILTERS = {
13381
13280
 
13382
13281
  var styles$3 = {"avatar":"_2rJkZ","date-picker":"_1iqE2","time-picker":"_20xtc","teacher-selector-wrapper":"_3L1Oj"};
13383
13282
 
13283
+ var _excluded$7 = ["teachers", "value"];
13384
13284
  var TeacherSelector = function TeacherSelector(_ref) {
13385
13285
  var teachers = _ref.teachers,
13386
- value = _ref.value;
13286
+ value = _ref.value,
13287
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
13387
13288
  var teacherOptions = teachers.map(function (i) {
13388
13289
  return {
13389
13290
  label: i.teacherName + "/" + i.teacherEmail,
13390
13291
  value: i.id
13391
13292
  };
13392
13293
  });
13393
- return React__default.createElement(CustomAsyncSelect, {
13294
+ return React__default.createElement(CustomAsyncSelect, Object.assign({
13394
13295
  options: teacherOptions,
13395
13296
  value: value,
13396
13297
  menuPlacement: "bottom",
@@ -13403,7 +13304,7 @@ var TeacherSelector = function TeacherSelector(_ref) {
13403
13304
  },
13404
13305
  menuPortalTarget: document.body,
13405
13306
  isClearable: true
13406
- });
13307
+ }, rest));
13407
13308
  };
13408
13309
 
13409
13310
  var ErrorHandler = function ErrorHandler(_ref) {
@@ -13488,6 +13389,7 @@ var ClassForm = function ClassForm(_ref) {
13488
13389
  };
13489
13390
  var handleChangeTeacher = function handleChangeTeacher(val) {
13490
13391
  formikProp.setFieldValue("mainTeacherId", val === null || val === void 0 ? void 0 : val.value);
13392
+ formikProp.setFieldValue("mainTeacher", val);
13491
13393
  };
13492
13394
  var handleChangeWeeklyDayTime = function handleChangeWeeklyDayTime(key, newValue, currentValue) {
13493
13395
  var _extends2;
@@ -13653,7 +13555,7 @@ var ClassForm = function ClassForm(_ref) {
13653
13555
  }, "*")), React__default.createElement("div", {
13654
13556
  className: "" + styles$3["teacher-selector-wrapper"]
13655
13557
  }, React__default.createElement(TeacherSelector, {
13656
- value: formikProp.values.mainTeacherId,
13558
+ value: formikProp.values.mainTeacher,
13657
13559
  teachers: teachers,
13658
13560
  onInputChange: onSearchTeachers,
13659
13561
  onChange: handleChangeTeacher,
@@ -16043,14 +15945,15 @@ var getNoteType = function getNoteType(t, type) {
16043
15945
  };
16044
15946
 
16045
15947
  var NoteItemList = function NoteItemList(_ref) {
16046
- var _data$reciever, _data$reciever2, _data$recievers;
15948
+ var _data$reciever, _data$recievers;
16047
15949
  var data = _ref.data,
16048
15950
  index = _ref.index,
16049
15951
  role = _ref.role,
16050
15952
  calcOrderNumber = _ref.calcOrderNumber,
16051
15953
  onDelete = _ref.onDelete,
16052
15954
  onUpdate = _ref.onUpdate,
16053
- onView = _ref.onView;
15955
+ onView = _ref.onView,
15956
+ onViewStudentInfo = _ref.onViewStudentInfo;
16054
15957
  var isAdminUser = useSelector(function (state) {
16055
15958
  var _state$common, _state$common$user, _state$common$user$ro;
16056
15959
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : (_state$common$user$ro = _state$common$user.roles) === null || _state$common$user$ro === void 0 ? void 0 : _state$common$user$ro.includes(Role.Admin);
@@ -16073,6 +15976,9 @@ var NoteItemList = function NoteItemList(_ref) {
16073
15976
  var handleView = function handleView() {
16074
15977
  onView(data);
16075
15978
  };
15979
+ var handleViewStudentInfo = function handleViewStudentInfo() {
15980
+ onViewStudentInfo(data);
15981
+ };
16076
15982
  var disabled = !data.isOwned && (!isAdminUser || data.type == undefined || data.type == NoteType.TeacherToAllAdmin || data.type == NoteType.TeacherToTeachers);
16077
15983
  var cleanedRichText = useMemo(function () {
16078
15984
  return cleanRichText(data.content);
@@ -16094,10 +16000,15 @@ var NoteItemList = function NoteItemList(_ref) {
16094
16000
  display: "inline-block",
16095
16001
  color: grey$1[600],
16096
16002
  fontWeight: 600
16097
- }, "(", " " + t("me"), ")")), React__default.createElement(Typography, null, data.sender.email))), data.type === NoteType.ToAcademy || data.type === NoteType.ToStudent ? React__default.createElement(TableCell$1, null, React__default.createElement(Typography, {
16098
- color: blue[700],
16099
- fontWeight: 600
16100
- }, (_data$reciever = data.reciever) === null || _data$reciever === void 0 ? void 0 : _data$reciever.fullName), React__default.createElement(Typography, null, (_data$reciever2 = data.reciever) === null || _data$reciever2 === void 0 ? void 0 : _data$reciever2.email)) : data.type === NoteType.TeacherToTeachers ? React__default.createElement(TableCell$1, null, React__default.createElement(Stack, {
16003
+ }, "(", " " + t("me"), ")")), React__default.createElement(Typography, null, data.sender.email))), data.type === NoteType.ToAcademy || data.type === NoteType.ToStudent ? React__default.createElement(TableCell$1, null, React__default.createElement(Button, {
16004
+ variant: "text",
16005
+ color: "success",
16006
+ sx: {
16007
+ color: blue[700],
16008
+ fontWeight: 600
16009
+ },
16010
+ onClick: handleViewStudentInfo
16011
+ }, (_data$reciever = data.reciever) === null || _data$reciever === void 0 ? void 0 : _data$reciever.fullName)) : data.type === NoteType.TeacherToTeachers ? React__default.createElement(TableCell$1, null, React__default.createElement(Stack, {
16101
16012
  direction: "column"
16102
16013
  }, (_data$recievers = data.recievers) === null || _data$recievers === void 0 ? void 0 : _data$recievers.slice(0, 2).map(function (i) {
16103
16014
  return React__default.createElement(Typography, null, i.fullName, " - ", i.email);
@@ -16735,10 +16646,12 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16735
16646
  };
16736
16647
 
16737
16648
  var NoteList = function NoteList(_ref) {
16649
+ var _selectedStudentNote$;
16738
16650
  var defaultFilter = _ref.defaultFilter,
16739
16651
  role = _ref.role,
16740
16652
  headers = _ref.headers,
16741
- isAdmin = _ref.isAdmin;
16653
+ isAdmin = _ref.isAdmin,
16654
+ onViewQA = _ref.onViewQA;
16742
16655
  var _useTranslation = useTranslation(),
16743
16656
  t = _useTranslation.t;
16744
16657
  var _useList = useList(function (filter) {
@@ -16772,6 +16685,16 @@ var NoteList = function NoteList(_ref) {
16772
16685
  var _useState5 = useState(false),
16773
16686
  openDeleteNoteDialog = _useState5[0],
16774
16687
  setOpenDeleteNoteDialog = _useState5[1];
16688
+ var _useState6 = useState(),
16689
+ selectedStudentNote = _useState6[0],
16690
+ setSelectedStudentNote = _useState6[1];
16691
+ var handleChangeSelectedStudentNote = function handleChangeSelectedStudentNote(note) {
16692
+ if (note.type !== NoteType.ToAcademy && note.type !== NoteType.ToStudent) return;
16693
+ setSelectedStudentNote(note);
16694
+ };
16695
+ var handleCloseStudentInfo = function handleCloseStudentInfo() {
16696
+ setSelectedStudentNote(undefined);
16697
+ };
16775
16698
  var handleOpenCreateNoteDialog = function handleOpenCreateNoteDialog() {
16776
16699
  var _defaultFilter$types;
16777
16700
  if (((_defaultFilter$types = defaultFilter.types) === null || _defaultFilter$types === void 0 ? void 0 : _defaultFilter$types.length) === 1) setOpenNoteDialog(defaultFilter.types[0]);else if (defaultFilter.types && defaultFilter.types.length > 1) {
@@ -16925,7 +16848,8 @@ var NoteList = function NoteList(_ref) {
16925
16848
  role: role,
16926
16849
  onDelete: handleOpenDeleteNoteDialog,
16927
16850
  onUpdate: handleOpenNoteDialog,
16928
- onView: handleOpenNoteDrawer
16851
+ onView: handleOpenNoteDrawer,
16852
+ onViewStudentInfo: handleChangeSelectedStudentNote
16929
16853
  });
16930
16854
  }
16931
16855
  }), !data.length && !isLoading && React__default.createElement(TableRow, null, React__default.createElement(TableCell, {
@@ -16973,6 +16897,16 @@ var NoteList = function NoteList(_ref) {
16973
16897
  title: t("delete_note"),
16974
16898
  okText: t("delete_note"),
16975
16899
  cancelText: t("cancel")
16900
+ }), React__default.createElement(StudentInfoDrawer, {
16901
+ role: role,
16902
+ open: !!selectedStudentNote,
16903
+ studentId: (selectedStudentNote === null || selectedStudentNote === void 0 ? void 0 : (_selectedStudentNote$ = selectedStudentNote.reciever) === null || _selectedStudentNote$ === void 0 ? void 0 : _selectedStudentNote$.id) || 0,
16904
+ onClose: handleCloseStudentInfo,
16905
+ anchor: "right",
16906
+ width: "80dvw",
16907
+ history: history,
16908
+ inert: true,
16909
+ onViewQA: onViewQA
16976
16910
  }));
16977
16911
  };
16978
16912
 
@@ -17081,7 +17015,8 @@ var TEACHER_NOTE_FILTER = {
17081
17015
  };
17082
17016
 
17083
17017
  var NoteTabs = function NoteTabs(_ref) {
17084
- var role = _ref.role;
17018
+ var role = _ref.role,
17019
+ onViewQA = _ref.onViewQA;
17085
17020
  var roles = useSelector(function (state) {
17086
17021
  var _state$common$user$ro, _state$common, _state$common$user;
17087
17022
  return (_state$common$user$ro = state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.roles) != null ? _state$common$user$ro : [];
@@ -17128,7 +17063,8 @@ var NoteTabs = function NoteTabs(_ref) {
17128
17063
  role: role,
17129
17064
  isAdmin: isAdmin,
17130
17065
  defaultFilter: ACADEMY_NOTE_FILTER,
17131
- headers: NOTE_STUDENT_HEADERS
17066
+ headers: NOTE_STUDENT_HEADERS,
17067
+ onViewQA: onViewQA
17132
17068
  })), React__default.createElement(NotetabPanel, {
17133
17069
  value: value,
17134
17070
  index: 1
@@ -17136,7 +17072,8 @@ var NoteTabs = function NoteTabs(_ref) {
17136
17072
  role: role,
17137
17073
  isAdmin: isAdmin,
17138
17074
  defaultFilter: STUDENT_PARENTS_NOTE_FILTER,
17139
- headers: NOTE_STUDENT_HEADERS
17075
+ headers: NOTE_STUDENT_HEADERS,
17076
+ onViewQA: onViewQA
17140
17077
  })), React__default.createElement(NotetabPanel, {
17141
17078
  value: value,
17142
17079
  index: 2
@@ -20371,12 +20308,12 @@ function CreateNewQuestionDialog(_ref) {
20371
20308
  });
20372
20309
  }
20373
20310
 
20374
- var _excluded$7 = ["children", "value", "index"];
20311
+ var _excluded$8 = ["children", "value", "index"];
20375
20312
  var CustomTabPanel = function CustomTabPanel(props) {
20376
20313
  var children = props.children,
20377
20314
  value = props.value,
20378
20315
  index = props.index,
20379
- other = _objectWithoutPropertiesLoose(props, _excluded$7);
20316
+ other = _objectWithoutPropertiesLoose(props, _excluded$8);
20380
20317
  return React__default.createElement("div", Object.assign({
20381
20318
  role: "tabpanel",
20382
20319
  hidden: value !== index,
@@ -24433,7 +24370,7 @@ var ChapterProblemSolvingResultsDialog = function ChapterProblemSolvingResultsDi
24433
24370
  }, t("cancel"))))));
24434
24371
  };
24435
24372
 
24436
- var _excluded$8 = ["onChange"];
24373
+ var _excluded$9 = ["onChange"];
24437
24374
  var StartPageDialog = function StartPageDialog(_ref) {
24438
24375
  var t = _ref.t,
24439
24376
  onClose = _ref.onClose,
@@ -24499,7 +24436,7 @@ var StartPageDialog = function StartPageDialog(_ref) {
24499
24436
  }, t("page_to_start_with")), React__default.createElement(Field, {
24500
24437
  name: "startPage",
24501
24438
  render: function render(_ref3) {
24502
- var field = _objectWithoutPropertiesLoose(_ref3, _excluded$8);
24439
+ var field = _objectWithoutPropertiesLoose(_ref3, _excluded$9);
24503
24440
  return React__default.createElement(CustomSelectOption, Object.assign({
24504
24441
  maxMenuHeight: 150,
24505
24442
  menuPosition: "fixed",
@@ -26131,10 +26068,10 @@ var DrawerTextbookResultTab = function DrawerTextbookResultTab(_ref) {
26131
26068
  };
26132
26069
 
26133
26070
  var _styled$1;
26134
- var _excluded$9 = ["className"];
26071
+ var _excluded$a = ["className"];
26135
26072
  var CustomTooltip$1 = styled(function (_ref) {
26136
26073
  var className = _ref.className,
26137
- props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
26074
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$a);
26138
26075
  return React__default.createElement(Tooltip, Object.assign({}, props, {
26139
26076
  classes: {
26140
26077
  popper: className
@@ -27615,7 +27552,7 @@ var useTeacherList = function useTeacherList() {
27615
27552
  };
27616
27553
  };
27617
27554
 
27618
- var _excluded$a = ["getStudents"],
27555
+ var _excluded$b = ["getStudents"],
27619
27556
  _excluded2 = ["getTeachers"],
27620
27557
  _excluded3 = ["getLessons"];
27621
27558
  var PAGE_TITLE$4 = "classes";
@@ -27666,7 +27603,7 @@ var useClassDetail = function useClassDetail(_ref) {
27666
27603
  };
27667
27604
  var _useStudentClassList = useStudentClassList(classId),
27668
27605
  getStudents = _useStudentClassList.getStudents,
27669
- studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$a);
27606
+ studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$b);
27670
27607
  var _useTeacherClassList = useTeacherClassList(classId),
27671
27608
  getTeachers = _useTeacherClassList.getTeachers,
27672
27609
  teacherListProps = _objectWithoutPropertiesLoose(_useTeacherClassList, _excluded2);
@@ -27726,7 +27663,11 @@ var useClassDetail = function useClassDetail(_ref) {
27726
27663
  startTime: timeSpanToLocalMoment(i.startTime, course.startDate),
27727
27664
  endTime: timeSpanToLocalMoment(i.endTime, course.startDate)
27728
27665
  });
27729
- })
27666
+ }),
27667
+ mainTeacher: course.mainTeacherId ? {
27668
+ label: course.mainTeacherName + "/" + course.mainTeacherEmail,
27669
+ value: course.mainTeacherId
27670
+ } : null
27730
27671
  });
27731
27672
  }, [JSON.stringify(course)]);
27732
27673
  var convertToRequestBody = function convertToRequestBody(request) {
@@ -28112,6 +28053,7 @@ var LessonFormBody = function LessonFormBody(_ref) {
28112
28053
  setOpenPicker = _useState[1];
28113
28054
  var handleChangeTeacher = function handleChangeTeacher(val) {
28114
28055
  formikProp.setFieldValue("mainTeacherId", val === null || val === void 0 ? void 0 : val.value);
28056
+ formikProp.setFieldValue("mainTeacher", val);
28115
28057
  };
28116
28058
  useEffect(function () {
28117
28059
  if (open && data) formikProp.setValues(data);else formikProp.setValues(DEFAULT_LESSON_REQUEST);
@@ -28155,7 +28097,7 @@ var LessonFormBody = function LessonFormBody(_ref) {
28155
28097
  }, "*")), React__default.createElement("div", {
28156
28098
  className: "" + styles$3["teacher-selector-wrapper"]
28157
28099
  }, React__default.createElement(TeacherSelector, {
28158
- value: formikProp.values.mainTeacherId,
28100
+ value: formikProp.values.mainTeacher,
28159
28101
  teachers: teachers,
28160
28102
  onInputChange: onSearchTeachers,
28161
28103
  onChange: handleChangeTeacher
@@ -28263,7 +28205,11 @@ var LessonFormDialog = function LessonFormDialog(_ref) {
28263
28205
  return _extends({}, data, {
28264
28206
  date: moment.utc(data.date).local(),
28265
28207
  startTime: timeSpanToLocalMoment(data.startTime, data.date),
28266
- endTime: timeSpanToLocalMoment(data.endTime, data.date)
28208
+ endTime: timeSpanToLocalMoment(data.endTime, data.date),
28209
+ mainTeacher: data.mainTeacherId ? {
28210
+ label: data.mainTeacherName + "/" + data.mainTeacherEmail,
28211
+ value: data.mainTeacherId
28212
+ } : null
28267
28213
  });
28268
28214
  };
28269
28215
  var lessonRequest = useMemo(convertLessonRequest, [JSON.stringify(data)]);
@@ -29054,14 +29000,14 @@ var CSV_PREFIX = "data:text/csv;charset=utf-8,";
29054
29000
 
29055
29001
  var styles$8 = {"action-btn":"_1jXbz","action-btn--pencil":"_at4xP","icon-rotate-180":"_12gv9","drop-area":"_R4bn5"};
29056
29002
 
29057
- var _excluded$b = ["text", "isRequired", "className"];
29003
+ var _excluded$c = ["text", "isRequired", "className"];
29058
29004
  var LabelRequired = function LabelRequired(_ref) {
29059
29005
  var text = _ref.text,
29060
29006
  _ref$isRequired = _ref.isRequired,
29061
29007
  isRequired = _ref$isRequired === void 0 ? true : _ref$isRequired,
29062
29008
  _ref$className = _ref.className,
29063
29009
  className = _ref$className === void 0 ? "" : _ref$className,
29064
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
29010
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$c);
29065
29011
  return React__default.createElement(FormLabel, Object.assign({
29066
29012
  className: "fw-medium mb-1 " + className
29067
29013
  }, rest), text, isRequired && React__default.createElement("span", {
@@ -29115,7 +29061,7 @@ var deleteUserApi = function deleteUserApi(id) {
29115
29061
  return api["delete"](USER_URL$1 + "/delete/" + id);
29116
29062
  };
29117
29063
 
29118
- var _excluded$c = ["ref"],
29064
+ var _excluded$d = ["ref"],
29119
29065
  _excluded2$1 = ["ref"],
29120
29066
  _excluded3$1 = ["ref"],
29121
29067
  _excluded4 = ["ref"],
@@ -29145,7 +29091,7 @@ var UserDialog = function UserDialog(_ref) {
29145
29091
  t = _useTranslation.t;
29146
29092
  var _register = register("fullName"),
29147
29093
  fullNameRef = _register.ref,
29148
- fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$c);
29094
+ fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$d);
29149
29095
  var _register2 = register("email"),
29150
29096
  emailRef = _register2.ref,
29151
29097
  emailBio = _objectWithoutPropertiesLoose(_register2, _excluded2$1);
@@ -33216,12 +33162,12 @@ var ArticleDialog = function ArticleDialog(_ref) {
33216
33162
 
33217
33163
  var styles$a = {"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"};
33218
33164
 
33219
- var _excluded$d = ["isOpen", "onClose", "handleSaveExam"];
33165
+ var _excluded$e = ["isOpen", "onClose", "handleSaveExam"];
33220
33166
  var CreateExamDrawer = function CreateExamDrawer(props) {
33221
33167
  var isOpen = props.isOpen,
33222
33168
  onClose = props.onClose,
33223
33169
  handleSaveExam = props.handleSaveExam,
33224
- examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$d);
33170
+ examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$e);
33225
33171
  var _useTranslation = useTranslation(),
33226
33172
  t = _useTranslation.t;
33227
33173
  var theme = useTheme();
@@ -33983,11 +33929,11 @@ var TextbookRow = function TextbookRow(_ref) {
33983
33929
  });
33984
33930
  var _useTranslation = useTranslation(),
33985
33931
  t = _useTranslation.t;
33986
- 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) {
33932
+ 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) {
33987
33933
  var _infoUser$email, _infoUser$email$trim;
33988
33934
  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);
33989
- })));
33990
- 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);
33935
+ })))) && data.totalUses <= 0;
33936
+ 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) && data.totalUses <= 0;
33991
33937
  var isSharable = !data.isPublic && data.isShared && onAcademy && (isAdminSite || isSuperAdminUser || !isAdmin && data.createdBy.id === infoUser.id);
33992
33938
  var handleUpdateTextbook = function handleUpdateTextbook() {
33993
33939
  onUpdateTextbook(data);
@@ -34374,12 +34320,12 @@ var useNotificationDetail = function useNotificationDetail(_ref) {
34374
34320
 
34375
34321
  var styles$b = {"avatar":"_8niRT"};
34376
34322
 
34377
- var _excluded$e = ["value", "disabled", "optionTypeNotification"];
34323
+ var _excluded$f = ["value", "disabled", "optionTypeNotification"];
34378
34324
  var TypeSelector = function TypeSelector(_ref) {
34379
34325
  var value = _ref.value,
34380
34326
  disabled = _ref.disabled,
34381
34327
  optionTypeNotification = _ref.optionTypeNotification,
34382
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$e);
34328
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
34383
34329
  return React__default.createElement(CustomAsyncSelect, Object.assign({
34384
34330
  options: optionTypeNotification,
34385
34331
  value: value
@@ -34772,11 +34718,11 @@ var useNotificationList = function useNotificationList(_ref) {
34772
34718
  };
34773
34719
  };
34774
34720
 
34775
- var _excluded$f = ["value", "optionTypeNotification"];
34721
+ var _excluded$g = ["value", "optionTypeNotification"];
34776
34722
  var SelectFilterType = function SelectFilterType(_ref) {
34777
34723
  var value = _ref.value,
34778
34724
  optionTypeNotification = _ref.optionTypeNotification,
34779
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
34725
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$g);
34780
34726
  return React__default.createElement(CustomAsyncSelect, Object.assign({
34781
34727
  options: optionTypeNotification,
34782
34728
  value: value
@@ -35008,10 +34954,10 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
35008
34954
  var isAdminSite = role === Role.Admin;
35009
34955
  var onAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
35010
34956
  var isSuperAdminUser = !!user && user.isSuperAdmin;
35011
- 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) {
34957
+ 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) {
35012
34958
  var _user$email, _user$email$trim;
35013
34959
  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);
35014
- }));
34960
+ }))) && selectedTextbook.totalUses <= 0;
35015
34961
  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);
35016
34962
  var handleOpenConfirmDeleteChapterDialog = function handleOpenConfirmDeleteChapterDialog(chapter) {
35017
34963
  setSelectedChapter(chapter);
@@ -35113,24 +35059,6 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
35113
35059
  return Promise.reject(e);
35114
35060
  }
35115
35061
  };
35116
- var handleSaveData = useCallback(function (values) {
35117
- try {
35118
- if (!coverImage && !(values !== null && values !== void 0 && values.coverImage)) {
35119
- return Promise.resolve();
35120
- }
35121
- return Promise.resolve(_catch(function () {
35122
- var coverImg = coverImage || (values === null || values === void 0 ? void 0 : values.coverImage);
35123
- return Promise.resolve(updateTextbookApi$1(_extends({}, values, {
35124
- coverImage: coverImg
35125
- }), (selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.id) || 0, isSuperAdmin)).then(function () {});
35126
- }, function (error) {
35127
- toast.error(getErrorMessage(t, error));
35128
- throw error;
35129
- }));
35130
- } catch (e) {
35131
- return Promise.reject(e);
35132
- }
35133
- }, [coverImage, isSuperAdmin, JSON.stringify(selectedTextbook)]);
35134
35062
  useEffect(function () {
35135
35063
  if (!textbookId) return;
35136
35064
  handleGetTextbookDetail();
@@ -35149,7 +35077,6 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
35149
35077
  isSuperAdminUser: isSuperAdminUser,
35150
35078
  openDialog: openDialog,
35151
35079
  handleSubmit: handleSubmit,
35152
- handleSaveData: handleSaveData,
35153
35080
  selectedTextbook: selectedTextbook,
35154
35081
  handleOpenDialog: handleOpenDialog,
35155
35082
  handleCloseDialog: handleCloseDialog,
@@ -35443,8 +35370,6 @@ var CompareTypeOptions = [{
35443
35370
  label: "synonym_processing",
35444
35371
  value: QuestionAnswerType.SynonymProcessing
35445
35372
  }];
35446
- var SAVE_TIME_INTERVAL_IN_MILLISECONDS = 60 * 1000;
35447
- var SAVE_TIME_MAX_DIFF_IN_MILLISECONDS = 1000;
35448
35373
 
35449
35374
  var CustomTextbookTab = function CustomTextbookTab(props) {
35450
35375
  var children = props.children,
@@ -36053,7 +35978,7 @@ var isEqual$1 = function isEqual(prev, next) {
36053
35978
  };
36054
35979
  var QuestionShortInput$1 = memo(QuestionShortInput, isEqual$1);
36055
35980
 
36056
- var _excluded$g = ["onChange"];
35981
+ var _excluded$h = ["onChange"];
36057
35982
  var _$2 = _$8;
36058
35983
  var BpIcon$1 = styled("span")(function (_ref) {
36059
35984
  var theme = _ref.theme;
@@ -36364,7 +36289,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
36364
36289
  name: path + ".questionTypeId",
36365
36290
  render: function render(_ref5) {
36366
36291
  var _ref5$field = _ref5.field,
36367
- field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$g);
36292
+ field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$h);
36368
36293
  return React__default.createElement(CustomSelectOption, Object.assign({}, field, {
36369
36294
  isDisabled: disabled,
36370
36295
  value: data.questionType,
@@ -36413,7 +36338,7 @@ var isEqual$2 = function isEqual(prev, next) {
36413
36338
  };
36414
36339
  var QuestionBlock$1 = memo(QuestionBlock, isEqual$2);
36415
36340
 
36416
- var _excluded$h = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onQuestioStartOrderChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36341
+ var _excluded$i = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onQuestioStartOrderChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36417
36342
  var _$3 = _$8;
36418
36343
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
36419
36344
  var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate, _questions$2;
@@ -36434,7 +36359,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
36434
36359
  onCloseCategoryMenu = _ref.onCloseCategoryMenu,
36435
36360
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
36436
36361
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
36437
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$h);
36362
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
36438
36363
  var errors = formikProps.errors;
36439
36364
  var startOrderRef = useRef(null);
36440
36365
  var articles = data.articles,
@@ -36577,7 +36502,7 @@ var isEqual$3 = function isEqual(prev, next) {
36577
36502
  };
36578
36503
  var QuestionGroupBlockBody$1 = memo(QuestionGroupBlockBody, isEqual$3);
36579
36504
 
36580
- var _excluded$i = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36505
+ var _excluded$j = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36581
36506
  var _$4 = _$8;
36582
36507
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
36583
36508
  var _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2, _data$articles$4, _data$articles$4$cate, _data$articles$4$cate2;
@@ -36602,7 +36527,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
36602
36527
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
36603
36528
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
36604
36529
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
36605
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
36530
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$j);
36606
36531
  var errors = formikProps.errors,
36607
36532
  setFieldValue = formikProps.setFieldValue;
36608
36533
  var _useTranslation = useTranslation(),
@@ -37065,7 +36990,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
37065
36990
  }, formikProps)))));
37066
36991
  };
37067
36992
 
37068
- var _excluded$j = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36993
+ var _excluded$k = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
37069
36994
  var ChapterBlockBody = function ChapterBlockBody(_ref) {
37070
36995
  var path = _ref.path,
37071
36996
  paths = _ref.paths,
@@ -37085,7 +37010,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
37085
37010
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
37086
37011
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
37087
37012
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
37088
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$j);
37013
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
37089
37014
  var _useTranslation = useTranslation(),
37090
37015
  t = _useTranslation.t;
37091
37016
  var setFieldValue = formikProps.setFieldValue;
@@ -37264,7 +37189,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
37264
37189
  }));
37265
37190
  };
37266
37191
 
37267
- var _excluded$k = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
37192
+ var _excluded$l = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
37268
37193
  var _$5 = _$8;
37269
37194
  var ChapterBlock = function ChapterBlock(_ref) {
37270
37195
  var data = _ref.data,
@@ -37287,7 +37212,7 @@ var ChapterBlock = function ChapterBlock(_ref) {
37287
37212
  onOpenSubCategoryMenu = _ref.onOpenSubCategoryMenu,
37288
37213
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
37289
37214
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
37290
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
37215
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$l);
37291
37216
  var errors = formikProps.errors;
37292
37217
  var _useTranslation = useTranslation(),
37293
37218
  t = _useTranslation.t;
@@ -37978,7 +37903,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
37978
37903
  }));
37979
37904
  };
37980
37905
 
37981
- var _excluded$l = ["value"];
37906
+ var _excluded$m = ["value"];
37982
37907
  var VisuallyHiddenInput = styled("input")({
37983
37908
  clip: "rect(0 0 0 0)",
37984
37909
  clipPath: "inset(50%)",
@@ -38146,7 +38071,7 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
38146
38071
  render: function render(_ref4) {
38147
38072
  var _ref4$field = _ref4.field,
38148
38073
  value = _ref4$field.value,
38149
- action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$l);
38074
+ action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$m);
38150
38075
  return React__default.createElement(LocalizationProvider$1, {
38151
38076
  dateAdapter: AdapterMoment
38152
38077
  }, React__default.createElement(DatePicker$1, Object.assign({}, action, {
@@ -38620,9 +38545,8 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
38620
38545
  }));
38621
38546
  };
38622
38547
 
38623
- var _excluded$m = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "selectedTextbook", "handleSaveData", "onChangeTab", "onUploadImage"];
38548
+ var _excluded$n = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "onChangeTab", "onUploadImage"];
38624
38549
  var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38625
- var _valuesTextbook$curre;
38626
38550
  var isCreatedByAdmin = _ref.isCreatedByAdmin,
38627
38551
  isSuperAdminUser = _ref.isSuperAdminUser,
38628
38552
  isSuperAdmin = _ref.isSuperAdmin,
@@ -38632,30 +38556,14 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38632
38556
  coverImage = _ref.coverImage,
38633
38557
  disabled = _ref.disabled,
38634
38558
  ownersDisabled = _ref.ownersDisabled,
38635
- selectedTextbook = _ref.selectedTextbook,
38636
- handleSaveData = _ref.handleSaveData,
38637
38559
  onChangeTab = _ref.onChangeTab,
38638
38560
  onUploadImage = _ref.onUploadImage,
38639
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$m);
38561
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$n);
38640
38562
  var values = formikProps.values,
38641
38563
  errors = formikProps.errors,
38642
38564
  dirty = formikProps.dirty,
38643
38565
  submitCount = formikProps.submitCount,
38644
38566
  setValues = formikProps.setValues;
38645
- var theme = useTheme();
38646
- var savedRunRef = useRef(Date.now());
38647
- var runTimeRef = useRef(Date.now());
38648
- var valuesTextbook = useRef(null);
38649
- var isFirstLoadRef = useRef(true);
38650
- var _React$useState = React__default.useState(PrintStatus.Idle),
38651
- saveStatus = _React$useState[0],
38652
- setSaveStatus = _React$useState[1];
38653
- var timeoutRef = useRef(null);
38654
- var isProcessingRef = useRef(false);
38655
- var pendingValuesRef = useRef(null);
38656
- var _useState = useState(),
38657
- lastEdited = _useState[0],
38658
- setLastEdited = _useState[1];
38659
38567
  useEffect(function () {
38660
38568
  var handleBeforeUnload = function handleBeforeUnload(event) {
38661
38569
  var message = t$1("are_you_sure_you_want_to_quit_yours_changes_may_not_be_saved");
@@ -38676,99 +38584,9 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38676
38584
  var newValues = _resetAllCategoriesAndQuestionTypesBySubject(values, val);
38677
38585
  setValues(newValues);
38678
38586
  };
38679
- useEffect(function () {
38680
- if (!valuesTextbook.current && isFirstLoadRef.current && !_$8.isEqual(values, DEFAULT_TEXTBOOK_REQUEST)) {
38681
- valuesTextbook.current = _$8.cloneDeep(values);
38682
- isFirstLoadRef.current = false;
38683
- }
38684
- }, [values]);
38685
- var _handleSave = function handleSave(valuesProps) {
38686
- try {
38687
- var _temp = _finallyRethrows(function () {
38688
- return _catch(function () {
38689
- isProcessingRef.current = true;
38690
- setSaveStatus(PrintStatus.Saving);
38691
- var valuesToSave = valuesProps || values;
38692
- return Promise.resolve(handleSaveData(valuesToSave)).then(function () {
38693
- valuesTextbook.current = _$8.cloneDeep(valuesToSave);
38694
- var now = Date.now();
38695
- savedRunRef.current = now;
38696
- runTimeRef.current = now;
38697
- setSaveStatus(PrintStatus.Saved);
38698
- });
38699
- }, function (error) {
38700
- setSaveStatus(PrintStatus.Idle);
38701
- console.error(error);
38702
- });
38703
- }, function (_wasThrown, _result) {
38704
- isProcessingRef.current = false;
38705
- if (pendingValuesRef.current) {
38706
- if (timeoutRef.current) {
38707
- clearTimeout(timeoutRef.current);
38708
- }
38709
- timeoutRef.current = setTimeout(function () {
38710
- timeoutRef.current = null;
38711
- var pendingValues = pendingValuesRef.current;
38712
- if (pendingValues) {
38713
- _handleSave(pendingValues);
38714
- pendingValuesRef.current = null;
38715
- }
38716
- }, SAVE_TIME_INTERVAL_IN_MILLISECONDS);
38717
- }
38718
- if (_wasThrown) throw _result;
38719
- return _result;
38720
- });
38721
- return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
38722
- } catch (e) {
38723
- return Promise.reject(e);
38724
- }
38725
- };
38726
- useEffect(function () {
38727
- var now = Date.now();
38728
- if (valuesTextbook.current && !_$8.isEqual(values, valuesTextbook.current)) setLastEdited(now);
38729
- if (!_$8.isEmpty(errors) || !valuesTextbook.current || !(selectedTextbook !== null && selectedTextbook !== void 0 && selectedTextbook.id)) return;
38730
- if (valuesTextbook.current && _$8.isEqual(values, valuesTextbook.current)) return;
38731
- if (isProcessingRef.current) {
38732
- pendingValuesRef.current = _$8.cloneDeep(values);
38733
- return;
38734
- }
38735
- var timeSinceLastRun = now - runTimeRef.current;
38736
- var maxTime = SAVE_TIME_INTERVAL_IN_MILLISECONDS + SAVE_TIME_MAX_DIFF_IN_MILLISECONDS;
38737
- if (timeSinceLastRun > maxTime) {
38738
- runTimeRef.current = now;
38739
- timeSinceLastRun = 0;
38740
- }
38741
- if (timeSinceLastRun >= SAVE_TIME_INTERVAL_IN_MILLISECONDS) {
38742
- if (timeoutRef.current) {
38743
- clearTimeout(timeoutRef.current);
38744
- timeoutRef.current = null;
38745
- pendingValuesRef.current = null;
38746
- }
38747
- _handleSave();
38748
- } else {
38749
- pendingValuesRef.current = _$8.cloneDeep(values);
38750
- var intevalTime = SAVE_TIME_INTERVAL_IN_MILLISECONDS - timeSinceLastRun;
38751
- timeoutRef.current = setTimeout(function () {
38752
- timeoutRef.current = null;
38753
- var pendingValues = pendingValuesRef.current;
38754
- if (pendingValues) {
38755
- clearTimeout(timeoutRef.current);
38756
- _handleSave(pendingValues);
38757
- pendingValuesRef.current = null;
38758
- }
38759
- }, intevalTime);
38760
- }
38761
- return function () {
38762
- if (timeoutRef.current) {
38763
- clearTimeout(timeoutRef.current);
38764
- }
38765
- };
38766
- }, [values, errors]);
38767
38587
  var inforErrors = errors.coverImage || errors.grade || errors.isbn || errors.preparedType || errors.publicationDate || errors.publisher;
38768
38588
  var contentsErrors = errors.chapters;
38769
38589
  var textbookOwnersErrors = errors.textbookOwners;
38770
- var hasError = !_$8.isEmpty(errors);
38771
- var isSaved = !lastEdited || _$8.isEqual(values, (_valuesTextbook$curre = valuesTextbook.current) != null ? _valuesTextbook$curre : {});
38772
38590
  return React__default.createElement(Form, null, React__default.createElement(Stack, {
38773
38591
  direction: "column",
38774
38592
  gap: 3
@@ -38856,45 +38674,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38856
38674
  }), React__default.createElement(FormLabel, {
38857
38675
  htmlFor: "type",
38858
38676
  className: "text-center"
38859
- }, t$1("math"))))), React__default.createElement(Stack, {
38860
- flexDirection: "row",
38861
- gap: "8px"
38862
- }, React__default.createElement(Stack, {
38863
- padding: "6px 12px",
38864
- sx: {
38865
- transition: "opacity 0.3s ease",
38866
- opacity: saveStatus === PrintStatus.Idle && isSaved ? 0 : 1,
38867
- pointerEvents: "none",
38868
- gap: "8px",
38869
- flexDirection: "row",
38870
- justifyContent: "center",
38871
- alignItems: "center"
38872
- }
38873
- }, saveStatus === PrintStatus.Saving && React__default.createElement(AiOutlineLoading3Quarters, {
38874
- style: {
38875
- animation: "spin 1s linear infinite"
38876
- }
38877
- }), saveStatus === PrintStatus.Saved && isSaved && React__default.createElement(IoCheckmark, null), saveStatus !== PrintStatus.Saving && !isSaved && React__default.createElement(Fragment$1, null, hasError ? React__default.createElement(MdError, {
38878
- color: red[900]
38879
- }) : React__default.createElement(FaClockRotateLeft, {
38880
- size: "14px"
38881
- })), React__default.createElement(Typography, {
38882
- sx: {
38883
- color: theme.palette.grey[700],
38884
- fontSize: "14px",
38885
- display: "flex",
38886
- alignItems: "center",
38887
- gap: 1,
38888
- "@keyframes spin": {
38889
- "0%": {
38890
- transform: "rotate(0deg)"
38891
- },
38892
- "100%": {
38893
- transform: "rotate(360deg)"
38894
- }
38895
- }
38896
- }
38897
- }, saveStatus === PrintStatus.Saving && t$1("saving"), saveStatus === PrintStatus.Saved && isSaved && t$1("all_changes_saved"), saveStatus !== PrintStatus.Saving && (selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.id) && !isSaved && t$1("all_changes_are_not_saved_yet"))), React__default.createElement(Button, {
38677
+ }, t$1("math"))))), React__default.createElement(Box, null, React__default.createElement(Button, {
38898
38678
  type: "submit",
38899
38679
  sx: {
38900
38680
  width: "fit-content"
@@ -39001,7 +38781,6 @@ var PreparedTextbookView = function PreparedTextbookView(_ref) {
39001
38781
  isSuperAdminUser = _useTextbookManagemen.isSuperAdminUser,
39002
38782
  isAdmin = _useTextbookManagemen.isAdmin,
39003
38783
  coverImage = _useTextbookManagemen.coverImage,
39004
- handleSaveData = _useTextbookManagemen.handleSaveData,
39005
38784
  selectedTextbook = _useTextbookManagemen.selectedTextbook,
39006
38785
  handleSubmit = _useTextbookManagemen.handleSubmit,
39007
38786
  handleUploadImage = _useTextbookManagemen.handleUploadImage;
@@ -39024,9 +38803,7 @@ var PreparedTextbookView = function PreparedTextbookView(_ref) {
39024
38803
  isAdmin: isAdmin,
39025
38804
  isSuperAdmin: isSuperAdmin,
39026
38805
  selected: selected,
39027
- handleSaveData: handleSaveData,
39028
38806
  textbookId: textbookId,
39029
- selectedTextbook: selectedTextbook,
39030
38807
  onChangeTab: handleChangeTab,
39031
38808
  onUploadImage: handleUploadImage,
39032
38809
  coverImage: coverImage,
@@ -40544,491 +40321,6 @@ var singleLogo = function singleLogo(_ref) {
40544
40321
  }))));
40545
40322
  };
40546
40323
 
40547
- var TimerItem = function TimerItem(_ref) {
40548
- var data = _ref.data,
40549
- seconds = _ref.seconds,
40550
- loading = _ref.loading,
40551
- activeTimerId = _ref.activeTimerId,
40552
- onStartOrPauseTimer = _ref.onStartOrPauseTimer;
40553
- var theme = useTheme();
40554
- var _useTranslation = useTranslation(),
40555
- t = _useTranslation.t;
40556
- var handleStartOrPauseTimer = function handleStartOrPauseTimer() {
40557
- onStartOrPauseTimer(data);
40558
- };
40559
- var isStarted = activeTimerId === data.id && data.status === SubjectTimerStatus.Started;
40560
- var displayedTime = useMemo(function () {
40561
- switch (data.status) {
40562
- case SubjectTimerStatus.Started:
40563
- return activeTimerId !== data.id ? formatTime$2(Math.floor(data.duration / 1000), t) : formatTime$2(seconds != null ? seconds : 0, t);
40564
- case SubjectTimerStatus.NotStarted:
40565
- return t("press_to_start");
40566
- default:
40567
- return formatTime$2(Math.floor(data.duration / 1000), t);
40568
- }
40569
- }, [data.id, data.status, data.duration, seconds, activeTimerId, t]);
40570
- return React__default.createElement(MenuItem, {
40571
- className: "" + styles["timer-menu-item"],
40572
- sx: {
40573
- py: 1,
40574
- bgcolor: theme.palette.background.paper,
40575
- borderRadius: 0.75,
40576
- minHeight: "52px"
40577
- },
40578
- disabled: loading,
40579
- onClick: handleStartOrPauseTimer
40580
- }, React__default.createElement(Stack, {
40581
- direction: "row",
40582
- gap: 1,
40583
- sx: {
40584
- justifyContent: "space-between",
40585
- alignItems: "center",
40586
- width: "100%"
40587
- }
40588
- }, React__default.createElement(Typography, {
40589
- className: styles["subject-name"] + " " + styles["truncate"],
40590
- fontSize: "14px",
40591
- fontWeight: 600
40592
- }, data.name), React__default.createElement(Box, {
40593
- sx: {
40594
- display: "flex",
40595
- alignItems: "center",
40596
- gap: 1.5
40597
- }
40598
- }, React__default.createElement(Typography, {
40599
- className: "" + styles["duration"],
40600
- sx: {
40601
- color: isStarted ? theme.palette.common.black : theme.palette.success.light,
40602
- fontSize: "14px",
40603
- fontWeight: 700
40604
- }
40605
- }, displayedTime), !isStarted && React__default.createElement(Box, {
40606
- className: "" + styles["icon-start"]
40607
- }, React__default.createElement(IoPlayCircleSharp, {
40608
- size: 20
40609
- })))));
40610
- };
40611
- var TOTAL_SECONDS_IN_A_MINUTE = 60;
40612
- var TOTAL_SECONDS_IN_AN_HOUR = 60 * 60;
40613
- var formatTime$2 = function formatTime(totalSeconds, t) {
40614
- var hours = Math.floor(totalSeconds / TOTAL_SECONDS_IN_AN_HOUR);
40615
- var minutes = Math.floor(totalSeconds % TOTAL_SECONDS_IN_AN_HOUR / TOTAL_SECONDS_IN_A_MINUTE);
40616
- var seconds = totalSeconds % TOTAL_SECONDS_IN_A_MINUTE;
40617
- if (hours > 0) {
40618
- return "" + hours.toString().padStart(2, "0") + t("hour_h") + " " + minutes.toString().padStart(2, "0") + t("minutes") + " " + seconds.toString().padStart(2, "0") + t("seconds");
40619
- }
40620
- if (minutes > 0) {
40621
- return "" + minutes.toString().padStart(2, "0") + t("minutes") + " " + seconds.toString().padStart(2, "0") + t("seconds");
40622
- }
40623
- return "" + seconds.toString().padStart(2, "0") + t("seconds");
40624
- };
40625
-
40626
- var TimerCountItem = function TimerCountItem(_ref) {
40627
- var data = _ref.data,
40628
- activeTimerId = _ref.activeTimerId,
40629
- onChangeTime = _ref.onChangeTime;
40630
- var requestAnimationRef = useRef(null);
40631
- var user = useSelector(function (state) {
40632
- var _state$common;
40633
- return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
40634
- });
40635
- useEffect(function () {
40636
- if (data.status !== SubjectTimerStatus.Started || !(user !== null && user !== void 0 && user.academyDomain) && !(user !== null && user !== void 0 && user.isLearningSpace) || data.id !== activeTimerId) return;
40637
- var _animate = function animate() {
40638
- var startTime = data.startTime,
40639
- lastResumeTime = data.lastResumeTime,
40640
- duration = data.duration;
40641
- var startOfTime = lastResumeTime !== DATE_TIME_MIN_VALUE ? lastResumeTime : startTime;
40642
- if (startOfTime === DATE_TIME_MIN_VALUE) return;
40643
- var time = getCountTime(startOfTime, Math.floor(duration / 1000));
40644
- if (typeof time !== "number") {
40645
- onChangeTime(data, undefined);
40646
- return;
40647
- }
40648
- onChangeTime(data, time);
40649
- requestAnimationRef.current = requestAnimationFrame(_animate);
40650
- };
40651
- requestAnimationRef.current = requestAnimationFrame(_animate);
40652
- return function () {
40653
- !!requestAnimationRef.current && cancelAnimationFrame(requestAnimationRef.current);
40654
- };
40655
- }, [JSON.stringify(data), user === null || user === void 0 ? void 0 : user.id, user === null || user === void 0 ? void 0 : user.academyDomain, user === null || user === void 0 ? void 0 : user.isLearningSpace, activeTimerId]);
40656
- return React__default.createElement(Fragment$1, null);
40657
- };
40658
-
40659
- var formatDate = function formatDate(t, date) {
40660
- return utcToLocalTime(date, t("date_format"));
40661
- };
40662
- var TimerDropdown = function TimerDropdown() {
40663
- var _user$academyDomain$t, _user$academyDomain, _user$academyDomain$t2;
40664
- var _useTranslation = useTranslation(),
40665
- t = _useTranslation.t;
40666
- var theme = useTheme();
40667
- var user = useSelector(function (state) {
40668
- var _state$common;
40669
- return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
40670
- });
40671
- var _useState = useState(null),
40672
- open = _useState[0],
40673
- setOpen = _useState[1];
40674
- var _useState2 = useState([]),
40675
- timers = _useState2[0],
40676
- setTimers = _useState2[1];
40677
- var _useState3 = useState(),
40678
- seconds = _useState3[0],
40679
- setSeconds = _useState3[1];
40680
- var _useState4 = useState(),
40681
- activeTimerId = _useState4[0],
40682
- setActiveTimerId = _useState4[1];
40683
- var _useState5 = useState(false),
40684
- loadingItem = _useState5[0],
40685
- setLoadingItem = _useState5[1];
40686
- var _useState6 = useState(false),
40687
- isFetching = _useState6[0],
40688
- setFetching = _useState6[1];
40689
- var fetchedRef = useRef();
40690
- var academyDomain = (_user$academyDomain$t = user === null || user === void 0 ? void 0 : (_user$academyDomain = user.academyDomain) === null || _user$academyDomain === void 0 ? void 0 : (_user$academyDomain$t2 = _user$academyDomain.toLowerCase) === null || _user$academyDomain$t2 === void 0 ? void 0 : _user$academyDomain$t2.call(_user$academyDomain)) != null ? _user$academyDomain$t : "";
40691
- var handleChangeTime = function handleChangeTime(data, time) {
40692
- if (!(user !== null && user !== void 0 && user.id) || !academyDomain && !(user !== null && user !== void 0 && user.isLearningSpace)) return;
40693
- if (academyDomain !== fetchedRef.current && data.id !== activeTimerId) return;
40694
- setSeconds(time);
40695
- var key = user.id + "-" + data.id + "-" + SUBJECT_TIMER_KEY + academyDomain;
40696
- saveDuration(key, time * 1000);
40697
- };
40698
- var handleOpen = function handleOpen(event) {
40699
- setOpen(event.currentTarget);
40700
- };
40701
- var handleClose = function handleClose() {
40702
- setOpen(null);
40703
- };
40704
- var handleStartOrPauseTimer = function handleStartOrPauseTimer(data) {
40705
- try {
40706
- var _temp2 = function _temp2(_result3) {
40707
- if (_exit) return _result3;
40708
- setLoadingItem(false);
40709
- };
40710
- var _exit = false;
40711
- var isActive = activeTimerId === data.id;
40712
- var isPaused = data.status === SubjectTimerStatus.Paused;
40713
- setLoadingItem(true);
40714
- var _temp = _catch(function () {
40715
- return Promise.resolve(handlePauseAllTimers(data.id)).then(function () {
40716
- return function () {
40717
- if (data.recordId) {
40718
- return function () {
40719
- if (!isActive && !isPaused) {
40720
- setActiveTimerId(data.id);
40721
- setTimers(function (timers) {
40722
- return timers.map(function (timer) {
40723
- return timer.id === data.id ? _extends({}, timer, {
40724
- lastResumeTime: moment().utc().toISOString()
40725
- }) : timer;
40726
- });
40727
- });
40728
- setLoadingItem(false);
40729
- _exit = true;
40730
- } else {
40731
- return Promise.resolve(pauseStudentSubjectApi(data.id, data.recordId, {
40732
- status: isPaused ? SubjectTimerStatus.Started : SubjectTimerStatus.Paused,
40733
- startTime: isPaused ? moment().utc().valueOf() : 0,
40734
- pauseTime: !isPaused ? moment().utc().valueOf() : 0,
40735
- duration: isActive && seconds ? seconds * 1000 : data.duration
40736
- })).then(function (res) {
40737
- setTimers(function (timers) {
40738
- return timers.map(function (timer) {
40739
- return timer.id === data.id ? res.data : timer;
40740
- });
40741
- });
40742
- setActiveTimerId(!isPaused && isActive ? undefined : data.id);
40743
- });
40744
- }
40745
- }();
40746
- } else {
40747
- return Promise.resolve(startStudentSubjectTimerApi(data.id)).then(function (res) {
40748
- setTimers(function (timers) {
40749
- return timers.map(function (timer) {
40750
- return timer.id === data.id ? res.data : timer;
40751
- });
40752
- });
40753
- setActiveTimerId(!isPaused && isActive ? undefined : data.id);
40754
- });
40755
- }
40756
- }();
40757
- });
40758
- }, function () {
40759
- toast.error(t(isPaused ? "failed_to_start_the_subject_name" : "failed_to_pause_the_subject_name", {
40760
- name: data.name
40761
- }));
40762
- });
40763
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
40764
- } catch (e) {
40765
- return Promise.reject(e);
40766
- }
40767
- };
40768
- var handlePauseAllTimers = function handlePauseAllTimers(exceptId) {
40769
- try {
40770
- !exceptId && setLoadingItem(true);
40771
- var tasks = timers.filter(function (i) {
40772
- return i.status === SubjectTimerStatus.Started && i.id !== exceptId;
40773
- }).map(function (i) {
40774
- return handlePauseTimer(i);
40775
- });
40776
- return Promise.resolve(Promise.all(tasks)).then(function () {
40777
- !exceptId && setLoadingItem(false);
40778
- });
40779
- } catch (e) {
40780
- return Promise.reject(e);
40781
- }
40782
- };
40783
- var handlePauseTimer = function handlePauseTimer(data, updateState) {
40784
- if (updateState === void 0) {
40785
- updateState = true;
40786
- }
40787
- try {
40788
- if (data.status === SubjectTimerStatus.Paused) return Promise.resolve(data);
40789
- return Promise.resolve(_catch(function () {
40790
- return Promise.resolve(pauseStudentSubjectApi(data.id, data.recordId, {
40791
- status: SubjectTimerStatus.Paused,
40792
- duration: activeTimerId === data.id && seconds ? seconds * 1000 : data.duration,
40793
- pauseTime: moment().utc().valueOf()
40794
- })).then(function (res) {
40795
- if (updateState) setTimers(function (state) {
40796
- return state.map(function (i) {
40797
- return i.id === data.id ? res.data : i;
40798
- });
40799
- });
40800
- return res.data;
40801
- });
40802
- }, function () {
40803
- activeTimerId === data.id && toast.error(t("failed_to_pause_the_subject_name", {
40804
- name: data.name
40805
- }));
40806
- }));
40807
- } catch (e) {
40808
- return Promise.reject(e);
40809
- }
40810
- };
40811
- var getDataFromLocalStorage = useCallback(function (items) {
40812
- if (fetchedRef.current !== academyDomain) return [];
40813
- return items.map(function (item) {
40814
- var key = (user === null || user === void 0 ? void 0 : user.id) + "-" + item.id + "-" + SUBJECT_TIMER_KEY + academyDomain;
40815
- var duration = getLocalDuration(key, item);
40816
- var lastResumeTime = moment().utc().toISOString();
40817
- return _extends({}, item, {
40818
- duration: duration !== null ? duration : item.duration,
40819
- lastResumeTime: lastResumeTime
40820
- });
40821
- });
40822
- }, [user === null || user === void 0 ? void 0 : user.id, academyDomain]);
40823
- useEffect(function () {
40824
- var fetchData = function fetchData() {
40825
- try {
40826
- var _temp4 = function _temp4() {
40827
- setFetching(false);
40828
- };
40829
- if (!(user !== null && user !== void 0 && user.id) || !academyDomain && !(user !== null && user !== void 0 && user.isLearningSpace)) return Promise.resolve();
40830
- if (fetchedRef.current == academyDomain && !open) return Promise.resolve();
40831
- setFetching(true);
40832
- var _temp3 = _catch(function () {
40833
- return Promise.resolve(getStudentSubjectListApi()).then(function (res) {
40834
- var _items$find;
40835
- var _res$data$items = res.data.items,
40836
- items = _res$data$items === void 0 ? [] : _res$data$items;
40837
- fetchedRef.current = academyDomain;
40838
- setTimers(getDataFromLocalStorage(items));
40839
- setActiveTimerId((_items$find = items.find(function (i) {
40840
- return i.status === SubjectTimerStatus.Started;
40841
- })) === null || _items$find === void 0 ? void 0 : _items$find.id);
40842
- });
40843
- }, function (error) {
40844
- toast.error(getErrorMessage(t, error));
40845
- });
40846
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
40847
- } catch (e) {
40848
- return Promise.reject(e);
40849
- }
40850
- };
40851
- fetchData();
40852
- }, [t, getDataFromLocalStorage, user === null || user === void 0 ? void 0 : user.isLearningSpace, open]);
40853
- var today = formatDate(t);
40854
- var isRunning = timers.some(function (timer) {
40855
- return timer.status === SubjectTimerStatus.Started;
40856
- });
40857
- var selectedTimer = timers.find(function (i) {
40858
- return i.id === activeTimerId;
40859
- });
40860
- return React__default.createElement(Fragment$1, null, React__default.createElement(IconButton$1, {
40861
- onClick: handleOpen,
40862
- sx: {
40863
- width: 44,
40864
- height: 44,
40865
- mx: 1,
40866
- borderRadius: "6px",
40867
- padding: "8px",
40868
- background: !isRunning ? grey[50] : green[100],
40869
- "&: hover": {
40870
- background: !isRunning ? grey[200] : green[200]
40871
- }
40872
- }
40873
- }, React__default.createElement(Stack, {
40874
- justifyContent: "center",
40875
- alignItems: "center",
40876
- width: "100%",
40877
- height: "100%",
40878
- sx: {
40879
- borderRadius: "50%",
40880
- backgroundColor: "#FFF"
40881
- }
40882
- }, React__default.createElement(IoTimer, {
40883
- color: !isRunning ? grey[700] : green[500],
40884
- size: "16.25px"
40885
- }))), selectedTimer && React__default.createElement(TimerCountItem, {
40886
- data: selectedTimer,
40887
- activeTimerId: activeTimerId,
40888
- onChangeTime: handleChangeTime
40889
- }), React__default.createElement(Popover$1, {
40890
- open: !!open,
40891
- anchorEl: open,
40892
- onClose: handleClose,
40893
- anchorOrigin: {
40894
- vertical: "bottom",
40895
- horizontal: "right"
40896
- },
40897
- transformOrigin: {
40898
- vertical: "top",
40899
- horizontal: "right"
40900
- },
40901
- slotProps: {
40902
- paper: {
40903
- sx: {
40904
- px: 2,
40905
- mt: 1,
40906
- ml: 0.75,
40907
- width: 320,
40908
- borderRadius: 2,
40909
- boxShadow: 3,
40910
- bgcolor: theme.palette.grey[50]
40911
- }
40912
- }
40913
- }
40914
- }, React__default.createElement(Box, {
40915
- sx: {
40916
- py: 2,
40917
- display: "flex",
40918
- alignItems: "center",
40919
- justifyContent: "space-between"
40920
- }
40921
- }, React__default.createElement(Box, {
40922
- sx: {
40923
- display: "flex",
40924
- gap: 1,
40925
- alignItems: "center"
40926
- }
40927
- }, React__default.createElement(Box, {
40928
- display: "flex",
40929
- alignItems: "center"
40930
- }, React__default.createElement(IoTimer, null)), React__default.createElement(Typography, {
40931
- variant: "subtitle1",
40932
- fontWeight: "bold",
40933
- fontSize: "14px"
40934
- }, t("study_timer"))), React__default.createElement(Typography, {
40935
- color: "textSecondary",
40936
- whiteSpace: "nowrap",
40937
- fontSize: "14px"
40938
- }, today)), React__default.createElement(Divider, {
40939
- sx: {
40940
- bgcolor: theme.palette.grey[700]
40941
- }
40942
- }), React__default.createElement(Stack, {
40943
- className: "" + styles["timer-menu"],
40944
- gap: 1.5,
40945
- flexDirection: "column",
40946
- sx: {
40947
- py: 2,
40948
- maxHeight: "360px"
40949
- }
40950
- }, !isFetching && React__default.createElement(ListView, {
40951
- data: timers,
40952
- render: function render(item, index) {
40953
- return React__default.createElement(TimerItem, {
40954
- key: index,
40955
- data: item,
40956
- loading: loadingItem,
40957
- seconds: activeTimerId === item.id ? seconds : undefined,
40958
- activeTimerId: activeTimerId,
40959
- onStartOrPauseTimer: handleStartOrPauseTimer
40960
- });
40961
- }
40962
- }), isFetching && React__default.createElement(Stack, {
40963
- sx: {
40964
- width: "100%",
40965
- py: 2
40966
- },
40967
- justifyContent: "center",
40968
- alignItems: "center"
40969
- }, React__default.createElement(Typography, {
40970
- className: "text-muted"
40971
- }, React__default.createElement(CircularProgress, {
40972
- size: "16px",
40973
- color: "success"
40974
- }))), !timers.length && !isFetching && React__default.createElement(Box, null, React__default.createElement(Typography, {
40975
- className: "text-muted"
40976
- }, t("no_data")))), React__default.createElement(Divider, {
40977
- sx: {
40978
- bgcolor: theme.palette.grey[700]
40979
- }
40980
- }), React__default.createElement(Box, {
40981
- sx: {
40982
- p: 2,
40983
- textAlign: "right"
40984
- }
40985
- }, React__default.createElement(Button, {
40986
- disableTouchRipple: true,
40987
- onClick: function onClick() {
40988
- return handlePauseAllTimers();
40989
- },
40990
- disabled: loadingItem,
40991
- sx: {
40992
- fontWeight: 700,
40993
- color: theme.palette.success.main,
40994
- padding: "8px 12px",
40995
- bgcolor: theme.palette.background.paper,
40996
- "&:hover": {
40997
- bgcolor: theme.palette.grey[200]
40998
- },
40999
- "&:disabled": {
41000
- opacity: 0.5
41001
- }
41002
- }
41003
- }, loadingItem ? t("saving") : t("pause")))));
41004
- };
41005
- var SUBJECT_TIMER_KEY = "stk";
41006
- var saveDuration = function saveDuration(key, duration) {
41007
- localStorage.setItem(key, "" + duration);
41008
- };
41009
- var getLocalDuration = function getLocalDuration(key, timer) {
41010
- try {
41011
- var res = localStorage.getItem(key);
41012
- var duration = +(res != null ? res : "");
41013
- if (!duration || Number.isNaN(duration) || duration <= timer.duration) return null;
41014
- return duration;
41015
- } catch (error) {
41016
- return null;
41017
- }
41018
- };
41019
-
41020
- var HeaderLink = function HeaderLink(_ref) {
41021
- var data = _ref.data,
41022
- render = _ref.render;
41023
- var activePaths = data.activePaths,
41024
- path = data.path;
41025
- var pathname = window.location.pathname.toLowerCase();
41026
- var isActive = (activePaths === null || activePaths === void 0 ? void 0 : activePaths.some(function (a) {
41027
- return pathname.startsWith(a);
41028
- })) || pathname.startsWith(path);
41029
- return React__default.createElement(Fragment$1, null, render(data, isActive));
41030
- };
41031
-
41032
40324
  var Header = function Header(_ref) {
41033
40325
  var academyListRoute = _ref.academyListRoute,
41034
40326
  homeRoute = _ref.homeRoute,
@@ -41151,9 +40443,7 @@ var Header = function Header(_ref) {
41151
40443
  justifyContent: "center",
41152
40444
  height: "100%",
41153
40445
  className: styles["logo"] + " d-flex d-lg-none"
41154
- }, React__default.createElement(singleLogo, null))), !isTeacherSide && React__default.createElement(Stack, {
41155
- className: "me-2 ms-2"
41156
- }, React__default.createElement(TimerDropdown, null)), React__default.createElement(Stack, {
40446
+ }, React__default.createElement(singleLogo, null))), React__default.createElement(Stack, {
41157
40447
  className: "me-2",
41158
40448
  display: "none"
41159
40449
  }, React__default.createElement(TheLanguageDropdown, null)), showAnnouncement && renderNotificationLink && React__default.createElement(AnnouncementContainer, {
@@ -41162,6 +40452,17 @@ var Header = function Header(_ref) {
41162
40452
  renderViewNoteLink: renderViewNoteLink
41163
40453
  })));
41164
40454
  };
40455
+ var HeaderLink = function HeaderLink(_ref3) {
40456
+ var data = _ref3.data,
40457
+ render = _ref3.render;
40458
+ var activePaths = data.activePaths,
40459
+ path = data.path;
40460
+ var pathname = location.pathname.toLowerCase();
40461
+ var isActive = (activePaths === null || activePaths === void 0 ? void 0 : activePaths.some(function (a) {
40462
+ return pathname.startsWith(a);
40463
+ })) || pathname.startsWith(path);
40464
+ return React__default.createElement(Fragment$1, null, render(data, isActive));
40465
+ };
41165
40466
 
41166
40467
  var useLayoutContext = function useLayoutContext(role, showLoadingAcademy, domain) {
41167
40468
  var _currentPusher$connec2;
@@ -41326,5 +40627,5 @@ var LayoutContext = function LayoutContext(_ref) {
41326
40627
  });else return React__default.createElement(Fragment$1, null, children);
41327
40628
  };
41328
40629
 
41329
- export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, SubjectTimerStatus, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getCountTime, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, includePathname, isLocalHost, isTextType, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
40630
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, includePathname, isLocalHost, isTextType, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
41330
40631
  //# sourceMappingURL=index.modern.js.map