touchstudy-core 0.1.177 → 0.1.178
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.
- package/dist/containers/PreparedTextbook/components/PreparedTextbookForm.d.ts +3 -1
- package/dist/containers/PreparedTextbook/configs/constants.d.ts +2 -0
- package/dist/containers/PreparedTextbook/configs/enums.d.ts +5 -0
- package/dist/containers/PreparedTextbook/hooks/useTextbookManagement.d.ts +2 -1
- package/dist/index.css +13 -0
- package/dist/index.js +772 -24
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +775 -27
- package/dist/index.modern.js.map +1 -1
- package/dist/layouts/Header.d.ts +1 -1
- package/dist/services/subjectService.d.ts +4 -0
- package/dist/theme/palette.d.ts +1 -0
- package/dist/utils/enums/index.d.ts +1 -0
- package/dist/utils/functions/times.d.ts +1 -0
- package/dist/utils/types/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.modern.js
CHANGED
@@ -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, IoCloseCircle, IoLogOut } 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, IoCheckmark, IoCloseCircle, IoLogOut, IoPlayCircleSharp, IoTimer } 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 } from 'react-icons/md';
|
51
|
+
import { MdVisibilityOff, MdVisibility, MdAutorenew, MdMoreHoriz, MdDownload, MdExpandMore, MdError } 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,6 +73,7 @@ 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';
|
76
77
|
import { BsCheckAll } from 'react-icons/bs';
|
77
78
|
import Popover$1 from '@mui/material/Popover';
|
78
79
|
import MenuItem from '@mui/material/MenuItem';
|
@@ -540,6 +541,7 @@ var teacher_in_charge = "담당 교사";
|
|
540
541
|
var counselor = "상담교사";
|
541
542
|
var new_question = "새로운 질문";
|
542
543
|
var hour = "시간";
|
544
|
+
var hour_h = "시간";
|
543
545
|
var minute = "분";
|
544
546
|
var second = "두번째";
|
545
547
|
var question_order = "{{number}} 번";
|
@@ -1033,6 +1035,7 @@ var teacher_required = "선생님은 필수입니다";
|
|
1033
1035
|
var total_users = "총 사용자";
|
1034
1036
|
var added_date = "추가된 날짜";
|
1035
1037
|
var sync_exam_results = "시험 결과 동기화";
|
1038
|
+
var sync_textbook_results = "교재 결과 동기화";
|
1036
1039
|
var update_data_fail = "데이터 업데이트 실패";
|
1037
1040
|
var add_students_to_class = "수업에 학생 추가";
|
1038
1041
|
var add_teachers_to_class = "수업에 교사 추가";
|
@@ -1043,9 +1046,13 @@ var question_management = "질문 관리";
|
|
1043
1046
|
var student_data = "학생 데이터";
|
1044
1047
|
var problem_number_question_chart = "문제 {{number}}번";
|
1045
1048
|
var are_you_sure_to_sync_exam_results_to_academy = "시험 결과를 아카데미 {{ academyName }}에 동기화하시겠습니까(백그라운드에서 실행되며 시간이 다소 소요됨)";
|
1049
|
+
var are_you_sure_to_sync_textbook_results_to_academy = "교재 학습 결과를 아카데미 {{ academyName }}에 동기화하시겠습니까? (백그라운드에서 실행되며 시간이 다소 소요됨)";
|
1046
1050
|
var messages = {
|
1047
|
-
exam_sessions_are_being_synchronized: "{{ total }} 개의 시험 세션이 동기화되고 있습니다"
|
1051
|
+
exam_sessions_are_being_synchronized: "{{ total }} 개의 시험 세션이 동기화되고 있습니다",
|
1052
|
+
textbook_sessions_are_being_synchronized: "{{ total }} 개의 교재 학습 세션이 동기화되고 있습니다"
|
1048
1053
|
};
|
1054
|
+
var sync_exam = "시험 동기화";
|
1055
|
+
var sync_textbook = "교재 동기화";
|
1049
1056
|
var submit = "제출하다";
|
1050
1057
|
var must_select_a_teacher_first = "먼저 교사를 선택해야 합니다";
|
1051
1058
|
var student_grade_is_invalid = "학생 등급은 1에서 12 사이여야 합니다";
|
@@ -1109,6 +1116,7 @@ var academy_invite_detail = "아카데미 초대 세부정보";
|
|
1109
1116
|
var are_you_sure_to_delete_academy_invite = "이 아카데미 초대를 삭제하시겠습니까?";
|
1110
1117
|
var day = "낮";
|
1111
1118
|
var days = "날";
|
1119
|
+
var month = "월";
|
1112
1120
|
var emails = "이메일";
|
1113
1121
|
var is_accepted = "승인됨";
|
1114
1122
|
var re_send = "다시 보내기";
|
@@ -1492,6 +1500,8 @@ var order_matters = "순서 상관 있음";
|
|
1492
1500
|
var order_does_not_matter = "순서 상관 없음";
|
1493
1501
|
var synonym_processing = "답 이음동의어 처리";
|
1494
1502
|
var compare_type = "비교 유형";
|
1503
|
+
var all_changes_saved = "모든 변경 사항이 저장되었습니다";
|
1504
|
+
var saving = "절약";
|
1495
1505
|
var textbook_name = "교재 이름";
|
1496
1506
|
var korean_language = "국어";
|
1497
1507
|
var answer_cannot_be_empty = "답변은 비워둘 수 없습니다";
|
@@ -1538,6 +1548,13 @@ var admin_to_teachers = "관리자에서 교사들에게";
|
|
1538
1548
|
var teacher_to_teachers = "교사에서 교사들에게";
|
1539
1549
|
var student_required = "학생은 필수입니다";
|
1540
1550
|
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}}'를 시작하는 데 실패했습니다";
|
1541
1558
|
var lang_ko = {
|
1542
1559
|
problem_solving: problem_solving,
|
1543
1560
|
my_story: my_story,
|
@@ -1729,6 +1746,7 @@ var lang_ko = {
|
|
1729
1746
|
counselor: counselor,
|
1730
1747
|
new_question: new_question,
|
1731
1748
|
hour: hour,
|
1749
|
+
hour_h: hour_h,
|
1732
1750
|
minute: minute,
|
1733
1751
|
second: second,
|
1734
1752
|
question_order: question_order,
|
@@ -2217,6 +2235,7 @@ var lang_ko = {
|
|
2217
2235
|
total_users: total_users,
|
2218
2236
|
added_date: added_date,
|
2219
2237
|
sync_exam_results: sync_exam_results,
|
2238
|
+
sync_textbook_results: sync_textbook_results,
|
2220
2239
|
update_data_fail: update_data_fail,
|
2221
2240
|
add_students_to_class: add_students_to_class,
|
2222
2241
|
add_teachers_to_class: add_teachers_to_class,
|
@@ -2227,7 +2246,10 @@ var lang_ko = {
|
|
2227
2246
|
student_data: student_data,
|
2228
2247
|
problem_number_question_chart: problem_number_question_chart,
|
2229
2248
|
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,
|
2230
2250
|
messages: messages,
|
2251
|
+
sync_exam: sync_exam,
|
2252
|
+
sync_textbook: sync_textbook,
|
2231
2253
|
submit: submit,
|
2232
2254
|
must_select_a_teacher_first: must_select_a_teacher_first,
|
2233
2255
|
student_grade_is_invalid: student_grade_is_invalid,
|
@@ -2291,6 +2313,7 @@ var lang_ko = {
|
|
2291
2313
|
are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite,
|
2292
2314
|
day: day,
|
2293
2315
|
days: days,
|
2316
|
+
month: month,
|
2294
2317
|
emails: emails,
|
2295
2318
|
is_accepted: is_accepted,
|
2296
2319
|
re_send: re_send,
|
@@ -2662,6 +2685,8 @@ var lang_ko = {
|
|
2662
2685
|
order_does_not_matter: order_does_not_matter,
|
2663
2686
|
synonym_processing: synonym_processing,
|
2664
2687
|
compare_type: compare_type,
|
2688
|
+
all_changes_saved: all_changes_saved,
|
2689
|
+
saving: saving,
|
2665
2690
|
textbook_name: textbook_name,
|
2666
2691
|
korean_language: korean_language,
|
2667
2692
|
answer_cannot_be_empty: answer_cannot_be_empty,
|
@@ -2707,7 +2732,14 @@ var lang_ko = {
|
|
2707
2732
|
admin_to_teachers: admin_to_teachers,
|
2708
2733
|
teacher_to_teachers: teacher_to_teachers,
|
2709
2734
|
student_required: student_required,
|
2710
|
-
teachers_required: teachers_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
|
2711
2743
|
};
|
2712
2744
|
|
2713
2745
|
var problem_solving$1 = "Problem Solving";
|
@@ -2926,6 +2958,7 @@ var counselor$1 = "Counselor";
|
|
2926
2958
|
var new_question$1 = "New Question";
|
2927
2959
|
var hour$1 = "hr";
|
2928
2960
|
var hours = "hrs";
|
2961
|
+
var hour_h$1 = "h";
|
2929
2962
|
var minute$1 = "min";
|
2930
2963
|
var second$1 = "second";
|
2931
2964
|
var question_order$1 = "Number {{number}}";
|
@@ -3394,6 +3427,7 @@ var teacher_required$1 = "Teacher is required";
|
|
3394
3427
|
var total_users$1 = "Total users";
|
3395
3428
|
var added_date$1 = "Added date";
|
3396
3429
|
var sync_exam_results$1 = "Sync exam results";
|
3430
|
+
var sync_textbook_results$1 = "Sync textbook results";
|
3397
3431
|
var update_data_fail$1 = "Update data fail";
|
3398
3432
|
var add_students_to_class$1 = "Add students to class";
|
3399
3433
|
var add_teachers_to_class$1 = "Add teachers to class";
|
@@ -3404,9 +3438,13 @@ var question_management$1 = "Question Management";
|
|
3404
3438
|
var student_data$1 = "Student Data";
|
3405
3439
|
var problem_number_question_chart$1 = "Q. {{number}}";
|
3406
3440
|
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)";
|
3407
3442
|
var messages$1 = {
|
3408
|
-
exam_sessions_are_being_synchronized: "{{ total }} exam sessions are being synchronized"
|
3443
|
+
exam_sessions_are_being_synchronized: "{{ total }} exam sessions are being synchronized",
|
3444
|
+
textbook_sessions_are_being_synchronized: "{{ total }} textbook sessions are being synchronized"
|
3409
3445
|
};
|
3446
|
+
var sync_exam$1 = "Sync Exam";
|
3447
|
+
var sync_textbook$1 = "Sync Textbook";
|
3410
3448
|
var submit$1 = "Submit";
|
3411
3449
|
var must_select_a_teacher_first$1 = "Must select a teacher first";
|
3412
3450
|
var student_grade_is_invalid$1 = "Student grade must be from 1 to 12";
|
@@ -3470,6 +3508,7 @@ var academy_invite_detail$1 = "Academy Invite Detail";
|
|
3470
3508
|
var are_you_sure_to_delete_academy_invite$1 = "Are you sure to delete this academy invite?";
|
3471
3509
|
var day$1 = "day";
|
3472
3510
|
var days$1 = "days";
|
3511
|
+
var month$1 = "month";
|
3473
3512
|
var emails$1 = "Emails";
|
3474
3513
|
var is_accepted$1 = "Is Accepted";
|
3475
3514
|
var re_send$1 = "Resend";
|
@@ -3854,6 +3893,8 @@ var order_matters$1 = "Order matters";
|
|
3854
3893
|
var order_does_not_matter$1 = "Order doesn't matter";
|
3855
3894
|
var synonym_processing$1 = "Answer Synonym processing";
|
3856
3895
|
var compare_type$1 = "Compare Type";
|
3896
|
+
var all_changes_saved$1 = "All changes saved";
|
3897
|
+
var saving$1 = "Saving";
|
3857
3898
|
var textbook_name$1 = "Textbook name";
|
3858
3899
|
var korean_language$1 = "Korean";
|
3859
3900
|
var answer_cannot_be_empty$1 = "Answer cannot be empty";
|
@@ -3900,6 +3941,13 @@ var admin_to_teachers$1 = "Admin to teachers";
|
|
3900
3941
|
var teacher_to_teachers$1 = "Teacher to teachers";
|
3901
3942
|
var student_required$1 = "Student is required";
|
3902
3943
|
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}}'";
|
3903
3951
|
var lang_en = {
|
3904
3952
|
problem_solving: problem_solving$1,
|
3905
3953
|
my_story: my_story$1,
|
@@ -4117,6 +4165,7 @@ var lang_en = {
|
|
4117
4165
|
new_question: new_question$1,
|
4118
4166
|
hour: hour$1,
|
4119
4167
|
hours: hours,
|
4168
|
+
hour_h: hour_h$1,
|
4120
4169
|
minute: minute$1,
|
4121
4170
|
second: second$1,
|
4122
4171
|
question_order: question_order$1,
|
@@ -4580,6 +4629,7 @@ var lang_en = {
|
|
4580
4629
|
total_users: total_users$1,
|
4581
4630
|
added_date: added_date$1,
|
4582
4631
|
sync_exam_results: sync_exam_results$1,
|
4632
|
+
sync_textbook_results: sync_textbook_results$1,
|
4583
4633
|
update_data_fail: update_data_fail$1,
|
4584
4634
|
add_students_to_class: add_students_to_class$1,
|
4585
4635
|
add_teachers_to_class: add_teachers_to_class$1,
|
@@ -4590,7 +4640,10 @@ var lang_en = {
|
|
4590
4640
|
student_data: student_data$1,
|
4591
4641
|
problem_number_question_chart: problem_number_question_chart$1,
|
4592
4642
|
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,
|
4593
4644
|
messages: messages$1,
|
4645
|
+
sync_exam: sync_exam$1,
|
4646
|
+
sync_textbook: sync_textbook$1,
|
4594
4647
|
submit: submit$1,
|
4595
4648
|
must_select_a_teacher_first: must_select_a_teacher_first$1,
|
4596
4649
|
student_grade_is_invalid: student_grade_is_invalid$1,
|
@@ -4654,6 +4707,7 @@ var lang_en = {
|
|
4654
4707
|
are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite$1,
|
4655
4708
|
day: day$1,
|
4656
4709
|
days: days$1,
|
4710
|
+
month: month$1,
|
4657
4711
|
emails: emails$1,
|
4658
4712
|
is_accepted: is_accepted$1,
|
4659
4713
|
re_send: re_send$1,
|
@@ -5026,6 +5080,8 @@ var lang_en = {
|
|
5026
5080
|
order_does_not_matter: order_does_not_matter$1,
|
5027
5081
|
synonym_processing: synonym_processing$1,
|
5028
5082
|
compare_type: compare_type$1,
|
5083
|
+
all_changes_saved: all_changes_saved$1,
|
5084
|
+
saving: saving$1,
|
5029
5085
|
textbook_name: textbook_name$1,
|
5030
5086
|
korean_language: korean_language$1,
|
5031
5087
|
answer_cannot_be_empty: answer_cannot_be_empty$1,
|
@@ -5071,7 +5127,14 @@ var lang_en = {
|
|
5071
5127
|
admin_to_teachers: admin_to_teachers$1,
|
5072
5128
|
teacher_to_teachers: teacher_to_teachers$1,
|
5073
5129
|
student_required: student_required$1,
|
5074
|
-
teachers_required: teachers_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
|
5075
5138
|
};
|
5076
5139
|
|
5077
5140
|
i18n.use(initReactI18next).init({
|
@@ -5529,7 +5592,7 @@ var PrintExamView2 = function PrintExamView2(_ref) {
|
|
5529
5592
|
}, t("print_pdf"))));
|
5530
5593
|
};
|
5531
5594
|
|
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"};
|
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_"};
|
5533
5596
|
|
5534
5597
|
var config = {
|
5535
5598
|
loader: {
|
@@ -6280,6 +6343,12 @@ var TextbookEditorType;
|
|
6280
6343
|
TextbookEditorType[TextbookEditorType["Korea"] = 1] = "Korea";
|
6281
6344
|
TextbookEditorType[TextbookEditorType["Math"] = 2] = "Math";
|
6282
6345
|
})(TextbookEditorType || (TextbookEditorType = {}));
|
6346
|
+
var PrintStatus;
|
6347
|
+
(function (PrintStatus) {
|
6348
|
+
PrintStatus[PrintStatus["Idle"] = 0] = "Idle";
|
6349
|
+
PrintStatus[PrintStatus["Saving"] = 1] = "Saving";
|
6350
|
+
PrintStatus[PrintStatus["Saved"] = 2] = "Saved";
|
6351
|
+
})(PrintStatus || (PrintStatus = {}));
|
6283
6352
|
|
6284
6353
|
var SchoolType$1;
|
6285
6354
|
(function (SchoolType) {
|
@@ -6289,6 +6358,13 @@ var SchoolType$1;
|
|
6289
6358
|
SchoolType[SchoolType["High"] = 3] = "High";
|
6290
6359
|
})(SchoolType$1 || (SchoolType$1 = {}));
|
6291
6360
|
|
6361
|
+
var SubjectTimerStatus;
|
6362
|
+
(function (SubjectTimerStatus) {
|
6363
|
+
SubjectTimerStatus[SubjectTimerStatus["NotStarted"] = 0] = "NotStarted";
|
6364
|
+
SubjectTimerStatus[SubjectTimerStatus["Started"] = 1] = "Started";
|
6365
|
+
SubjectTimerStatus[SubjectTimerStatus["Paused"] = 2] = "Paused";
|
6366
|
+
})(SubjectTimerStatus || (SubjectTimerStatus = {}));
|
6367
|
+
|
6292
6368
|
var canAccess = function canAccess(userRoles, componentRoles) {
|
6293
6369
|
if (!Array.isArray(userRoles)) {
|
6294
6370
|
return false;
|
@@ -6538,6 +6614,11 @@ var getRemainTime = function getRemainTime(startTime, duration) {
|
|
6538
6614
|
if (timePass > durationInNumber) return 0;
|
6539
6615
|
return durationInNumber - timePass;
|
6540
6616
|
};
|
6617
|
+
var getCountTime = function getCountTime(startTime, duration) {
|
6618
|
+
var timePass = diffFromNow(startTime, "second");
|
6619
|
+
if (typeof timePass !== "number") return null;
|
6620
|
+
return duration + timePass;
|
6621
|
+
};
|
6541
6622
|
|
6542
6623
|
var formatDateTime = function formatDateTime(inputDate) {
|
6543
6624
|
var date = new Date(inputDate);
|
@@ -8264,6 +8345,27 @@ var getSubjectListApi = function getSubjectListApi(textSearch) {
|
|
8264
8345
|
return Promise.reject(e);
|
8265
8346
|
}
|
8266
8347
|
};
|
8348
|
+
var getStudentSubjectListApi = function getStudentSubjectListApi() {
|
8349
|
+
try {
|
8350
|
+
return Promise.resolve(api.get(SUBJECT_URL + "/timers"));
|
8351
|
+
} catch (e) {
|
8352
|
+
return Promise.reject(e);
|
8353
|
+
}
|
8354
|
+
};
|
8355
|
+
var startStudentSubjectTimerApi = function startStudentSubjectTimerApi(subjectId) {
|
8356
|
+
try {
|
8357
|
+
return Promise.resolve(api.post(SUBJECT_URL + "/" + subjectId + "/timers"));
|
8358
|
+
} catch (e) {
|
8359
|
+
return Promise.reject(e);
|
8360
|
+
}
|
8361
|
+
};
|
8362
|
+
var pauseStudentSubjectApi = function pauseStudentSubjectApi(subjectId, recordId, data) {
|
8363
|
+
try {
|
8364
|
+
return Promise.resolve(api.post(SUBJECT_URL + "/" + subjectId + "/timers/" + recordId, data));
|
8365
|
+
} catch (e) {
|
8366
|
+
return Promise.reject(e);
|
8367
|
+
}
|
8368
|
+
};
|
8267
8369
|
|
8268
8370
|
var SubjectSelector = function SubjectSelector(_ref) {
|
8269
8371
|
var value = _ref.value,
|
@@ -10333,6 +10435,7 @@ var grey = {
|
|
10333
10435
|
var green = {
|
10334
10436
|
0: '#FFFFFF',
|
10335
10437
|
100: '#F0FFF6',
|
10438
|
+
200: '#D2FFE4',
|
10336
10439
|
300: '#89F0B2',
|
10337
10440
|
500: '#3DC674',
|
10338
10441
|
700: '#349056',
|
@@ -33929,11 +34032,11 @@ var TextbookRow = function TextbookRow(_ref) {
|
|
33929
34032
|
});
|
33930
34033
|
var _useTranslation = useTranslation(),
|
33931
34034
|
t = _useTranslation.t;
|
33932
|
-
var isEditable =
|
34035
|
+
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) {
|
33933
34036
|
var _infoUser$email, _infoUser$email$trim;
|
33934
34037
|
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);
|
33935
|
-
})))
|
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)
|
34038
|
+
})));
|
34039
|
+
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);
|
33937
34040
|
var isSharable = !data.isPublic && data.isShared && onAcademy && (isAdminSite || isSuperAdminUser || !isAdmin && data.createdBy.id === infoUser.id);
|
33938
34041
|
var handleUpdateTextbook = function handleUpdateTextbook() {
|
33939
34042
|
onUpdateTextbook(data);
|
@@ -34954,10 +35057,10 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
|
|
34954
35057
|
var isAdminSite = role === Role.Admin;
|
34955
35058
|
var onAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
|
34956
35059
|
var isSuperAdminUser = !!user && user.isSuperAdmin;
|
34957
|
-
var isEditable = !selectedTextbook ||
|
35060
|
+
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) {
|
34958
35061
|
var _user$email, _user$email$trim;
|
34959
35062
|
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);
|
34960
|
-
}))
|
35063
|
+
}));
|
34961
35064
|
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);
|
34962
35065
|
var handleOpenConfirmDeleteChapterDialog = function handleOpenConfirmDeleteChapterDialog(chapter) {
|
34963
35066
|
setSelectedChapter(chapter);
|
@@ -35059,6 +35162,24 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
|
|
35059
35162
|
return Promise.reject(e);
|
35060
35163
|
}
|
35061
35164
|
};
|
35165
|
+
var handleSaveData = useCallback(function (values) {
|
35166
|
+
try {
|
35167
|
+
if (!coverImage && !(values !== null && values !== void 0 && values.coverImage)) {
|
35168
|
+
return Promise.resolve();
|
35169
|
+
}
|
35170
|
+
return Promise.resolve(_catch(function () {
|
35171
|
+
var coverImg = coverImage || (values === null || values === void 0 ? void 0 : values.coverImage);
|
35172
|
+
return Promise.resolve(updateTextbookApi$1(_extends({}, values, {
|
35173
|
+
coverImage: coverImg
|
35174
|
+
}), (selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.id) || 0, isSuperAdmin)).then(function () {});
|
35175
|
+
}, function (error) {
|
35176
|
+
toast.error(getErrorMessage(t, error));
|
35177
|
+
throw error;
|
35178
|
+
}));
|
35179
|
+
} catch (e) {
|
35180
|
+
return Promise.reject(e);
|
35181
|
+
}
|
35182
|
+
}, [coverImage, isSuperAdmin, JSON.stringify(selectedTextbook)]);
|
35062
35183
|
useEffect(function () {
|
35063
35184
|
if (!textbookId) return;
|
35064
35185
|
handleGetTextbookDetail();
|
@@ -35077,6 +35198,7 @@ var useTextbookManagement = function useTextbookManagement(_ref) {
|
|
35077
35198
|
isSuperAdminUser: isSuperAdminUser,
|
35078
35199
|
openDialog: openDialog,
|
35079
35200
|
handleSubmit: handleSubmit,
|
35201
|
+
handleSaveData: handleSaveData,
|
35080
35202
|
selectedTextbook: selectedTextbook,
|
35081
35203
|
handleOpenDialog: handleOpenDialog,
|
35082
35204
|
handleCloseDialog: handleCloseDialog,
|
@@ -35370,6 +35492,8 @@ var CompareTypeOptions = [{
|
|
35370
35492
|
label: "synonym_processing",
|
35371
35493
|
value: QuestionAnswerType.SynonymProcessing
|
35372
35494
|
}];
|
35495
|
+
var SAVE_TIME_INTERVAL_IN_MILLISECONDS = 60 * 1000;
|
35496
|
+
var SAVE_TIME_MAX_DIFF_IN_MILLISECONDS = 1000;
|
35373
35497
|
|
35374
35498
|
var CustomTextbookTab = function CustomTextbookTab(props) {
|
35375
35499
|
var children = props.children,
|
@@ -38545,8 +38669,9 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
|
|
38545
38669
|
}));
|
38546
38670
|
};
|
38547
38671
|
|
38548
|
-
var _excluded$n = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "onChangeTab", "onUploadImage"];
|
38672
|
+
var _excluded$n = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "selectedTextbook", "handleSaveData", "onChangeTab", "onUploadImage"];
|
38549
38673
|
var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
38674
|
+
var _valuesTextbook$curre;
|
38550
38675
|
var isCreatedByAdmin = _ref.isCreatedByAdmin,
|
38551
38676
|
isSuperAdminUser = _ref.isSuperAdminUser,
|
38552
38677
|
isSuperAdmin = _ref.isSuperAdmin,
|
@@ -38556,6 +38681,8 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
38556
38681
|
coverImage = _ref.coverImage,
|
38557
38682
|
disabled = _ref.disabled,
|
38558
38683
|
ownersDisabled = _ref.ownersDisabled,
|
38684
|
+
selectedTextbook = _ref.selectedTextbook,
|
38685
|
+
handleSaveData = _ref.handleSaveData,
|
38559
38686
|
onChangeTab = _ref.onChangeTab,
|
38560
38687
|
onUploadImage = _ref.onUploadImage,
|
38561
38688
|
formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$n);
|
@@ -38564,6 +38691,20 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
38564
38691
|
dirty = formikProps.dirty,
|
38565
38692
|
submitCount = formikProps.submitCount,
|
38566
38693
|
setValues = formikProps.setValues;
|
38694
|
+
var theme = useTheme();
|
38695
|
+
var savedRunRef = useRef(Date.now());
|
38696
|
+
var runTimeRef = useRef(Date.now());
|
38697
|
+
var valuesTextbook = useRef(null);
|
38698
|
+
var isFirstLoadRef = useRef(true);
|
38699
|
+
var _React$useState = React__default.useState(PrintStatus.Idle),
|
38700
|
+
saveStatus = _React$useState[0],
|
38701
|
+
setSaveStatus = _React$useState[1];
|
38702
|
+
var timeoutRef = useRef(null);
|
38703
|
+
var isProcessingRef = useRef(false);
|
38704
|
+
var pendingValuesRef = useRef(null);
|
38705
|
+
var _useState = useState(),
|
38706
|
+
lastEdited = _useState[0],
|
38707
|
+
setLastEdited = _useState[1];
|
38567
38708
|
useEffect(function () {
|
38568
38709
|
var handleBeforeUnload = function handleBeforeUnload(event) {
|
38569
38710
|
var message = t$1("are_you_sure_you_want_to_quit_yours_changes_may_not_be_saved");
|
@@ -38584,9 +38725,99 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
38584
38725
|
var newValues = _resetAllCategoriesAndQuestionTypesBySubject(values, val);
|
38585
38726
|
setValues(newValues);
|
38586
38727
|
};
|
38728
|
+
useEffect(function () {
|
38729
|
+
if (!valuesTextbook.current && isFirstLoadRef.current && !_$8.isEqual(values, DEFAULT_TEXTBOOK_REQUEST)) {
|
38730
|
+
valuesTextbook.current = _$8.cloneDeep(values);
|
38731
|
+
isFirstLoadRef.current = false;
|
38732
|
+
}
|
38733
|
+
}, [values]);
|
38734
|
+
var _handleSave = function handleSave(valuesProps) {
|
38735
|
+
try {
|
38736
|
+
var _temp = _finallyRethrows(function () {
|
38737
|
+
return _catch(function () {
|
38738
|
+
isProcessingRef.current = true;
|
38739
|
+
setSaveStatus(PrintStatus.Saving);
|
38740
|
+
var valuesToSave = valuesProps || values;
|
38741
|
+
return Promise.resolve(handleSaveData(valuesToSave)).then(function () {
|
38742
|
+
valuesTextbook.current = _$8.cloneDeep(valuesToSave);
|
38743
|
+
var now = Date.now();
|
38744
|
+
savedRunRef.current = now;
|
38745
|
+
runTimeRef.current = now;
|
38746
|
+
setSaveStatus(PrintStatus.Saved);
|
38747
|
+
});
|
38748
|
+
}, function (error) {
|
38749
|
+
setSaveStatus(PrintStatus.Idle);
|
38750
|
+
console.error(error);
|
38751
|
+
});
|
38752
|
+
}, function (_wasThrown, _result) {
|
38753
|
+
isProcessingRef.current = false;
|
38754
|
+
if (pendingValuesRef.current) {
|
38755
|
+
if (timeoutRef.current) {
|
38756
|
+
clearTimeout(timeoutRef.current);
|
38757
|
+
}
|
38758
|
+
timeoutRef.current = setTimeout(function () {
|
38759
|
+
timeoutRef.current = null;
|
38760
|
+
var pendingValues = pendingValuesRef.current;
|
38761
|
+
if (pendingValues) {
|
38762
|
+
_handleSave(pendingValues);
|
38763
|
+
pendingValuesRef.current = null;
|
38764
|
+
}
|
38765
|
+
}, SAVE_TIME_INTERVAL_IN_MILLISECONDS);
|
38766
|
+
}
|
38767
|
+
if (_wasThrown) throw _result;
|
38768
|
+
return _result;
|
38769
|
+
});
|
38770
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
|
38771
|
+
} catch (e) {
|
38772
|
+
return Promise.reject(e);
|
38773
|
+
}
|
38774
|
+
};
|
38775
|
+
useEffect(function () {
|
38776
|
+
var now = Date.now();
|
38777
|
+
if (valuesTextbook.current && !_$8.isEqual(values, valuesTextbook.current)) setLastEdited(now);
|
38778
|
+
if (!_$8.isEmpty(errors) || !valuesTextbook.current || !(selectedTextbook !== null && selectedTextbook !== void 0 && selectedTextbook.id)) return;
|
38779
|
+
if (valuesTextbook.current && _$8.isEqual(values, valuesTextbook.current)) return;
|
38780
|
+
if (isProcessingRef.current) {
|
38781
|
+
pendingValuesRef.current = _$8.cloneDeep(values);
|
38782
|
+
return;
|
38783
|
+
}
|
38784
|
+
var timeSinceLastRun = now - runTimeRef.current;
|
38785
|
+
var maxTime = SAVE_TIME_INTERVAL_IN_MILLISECONDS + SAVE_TIME_MAX_DIFF_IN_MILLISECONDS;
|
38786
|
+
if (timeSinceLastRun > maxTime) {
|
38787
|
+
runTimeRef.current = now;
|
38788
|
+
timeSinceLastRun = 0;
|
38789
|
+
}
|
38790
|
+
if (timeSinceLastRun >= SAVE_TIME_INTERVAL_IN_MILLISECONDS) {
|
38791
|
+
if (timeoutRef.current) {
|
38792
|
+
clearTimeout(timeoutRef.current);
|
38793
|
+
timeoutRef.current = null;
|
38794
|
+
pendingValuesRef.current = null;
|
38795
|
+
}
|
38796
|
+
_handleSave();
|
38797
|
+
} else {
|
38798
|
+
pendingValuesRef.current = _$8.cloneDeep(values);
|
38799
|
+
var intevalTime = SAVE_TIME_INTERVAL_IN_MILLISECONDS - timeSinceLastRun;
|
38800
|
+
timeoutRef.current = setTimeout(function () {
|
38801
|
+
timeoutRef.current = null;
|
38802
|
+
var pendingValues = pendingValuesRef.current;
|
38803
|
+
if (pendingValues) {
|
38804
|
+
clearTimeout(timeoutRef.current);
|
38805
|
+
_handleSave(pendingValues);
|
38806
|
+
pendingValuesRef.current = null;
|
38807
|
+
}
|
38808
|
+
}, intevalTime);
|
38809
|
+
}
|
38810
|
+
return function () {
|
38811
|
+
if (timeoutRef.current) {
|
38812
|
+
clearTimeout(timeoutRef.current);
|
38813
|
+
}
|
38814
|
+
};
|
38815
|
+
}, [values, errors]);
|
38587
38816
|
var inforErrors = errors.coverImage || errors.grade || errors.isbn || errors.preparedType || errors.publicationDate || errors.publisher;
|
38588
38817
|
var contentsErrors = errors.chapters;
|
38589
38818
|
var textbookOwnersErrors = errors.textbookOwners;
|
38819
|
+
var hasError = !_$8.isEmpty(errors);
|
38820
|
+
var isSaved = !lastEdited || _$8.isEqual(values, (_valuesTextbook$curre = valuesTextbook.current) != null ? _valuesTextbook$curre : {});
|
38590
38821
|
return React__default.createElement(Form, null, React__default.createElement(Stack, {
|
38591
38822
|
direction: "column",
|
38592
38823
|
gap: 3
|
@@ -38674,7 +38905,45 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
38674
38905
|
}), React__default.createElement(FormLabel, {
|
38675
38906
|
htmlFor: "type",
|
38676
38907
|
className: "text-center"
|
38677
|
-
}, t$1("math"))))), React__default.createElement(
|
38908
|
+
}, t$1("math"))))), React__default.createElement(Stack, {
|
38909
|
+
flexDirection: "row",
|
38910
|
+
gap: "8px"
|
38911
|
+
}, !!(selectedTextbook !== null && selectedTextbook !== void 0 && selectedTextbook.id) && React__default.createElement(Stack, {
|
38912
|
+
padding: "6px 12px",
|
38913
|
+
sx: {
|
38914
|
+
transition: "opacity 0.3s ease",
|
38915
|
+
opacity: saveStatus === PrintStatus.Idle && isSaved ? 0 : 1,
|
38916
|
+
pointerEvents: "none",
|
38917
|
+
gap: "8px",
|
38918
|
+
flexDirection: "row",
|
38919
|
+
justifyContent: "center",
|
38920
|
+
alignItems: "center"
|
38921
|
+
}
|
38922
|
+
}, saveStatus === PrintStatus.Saving && React__default.createElement(AiOutlineLoading3Quarters, {
|
38923
|
+
style: {
|
38924
|
+
animation: "spin 1s linear infinite"
|
38925
|
+
}
|
38926
|
+
}), saveStatus === PrintStatus.Saved && isSaved && React__default.createElement(IoCheckmark, null), saveStatus !== PrintStatus.Saving && !isSaved && React__default.createElement(Fragment$1, null, hasError ? React__default.createElement(MdError, {
|
38927
|
+
color: red[900]
|
38928
|
+
}) : React__default.createElement(FaClockRotateLeft, {
|
38929
|
+
size: "14px"
|
38930
|
+
})), React__default.createElement(Typography, {
|
38931
|
+
sx: {
|
38932
|
+
color: theme.palette.grey[700],
|
38933
|
+
fontSize: "14px",
|
38934
|
+
display: "flex",
|
38935
|
+
alignItems: "center",
|
38936
|
+
gap: 1,
|
38937
|
+
"@keyframes spin": {
|
38938
|
+
"0%": {
|
38939
|
+
transform: "rotate(0deg)"
|
38940
|
+
},
|
38941
|
+
"100%": {
|
38942
|
+
transform: "rotate(360deg)"
|
38943
|
+
}
|
38944
|
+
}
|
38945
|
+
}
|
38946
|
+
}, saveStatus === PrintStatus.Saving && t$1("saving"), saveStatus === PrintStatus.Saved && isSaved && t$1("all_changes_saved"), saveStatus !== PrintStatus.Saving && !isSaved && t$1("all_changes_are_not_saved_yet"))), React__default.createElement(Button, {
|
38678
38947
|
type: "submit",
|
38679
38948
|
sx: {
|
38680
38949
|
width: "fit-content"
|
@@ -38781,6 +39050,7 @@ var PreparedTextbookView = function PreparedTextbookView(_ref) {
|
|
38781
39050
|
isSuperAdminUser = _useTextbookManagemen.isSuperAdminUser,
|
38782
39051
|
isAdmin = _useTextbookManagemen.isAdmin,
|
38783
39052
|
coverImage = _useTextbookManagemen.coverImage,
|
39053
|
+
handleSaveData = _useTextbookManagemen.handleSaveData,
|
38784
39054
|
selectedTextbook = _useTextbookManagemen.selectedTextbook,
|
38785
39055
|
handleSubmit = _useTextbookManagemen.handleSubmit,
|
38786
39056
|
handleUploadImage = _useTextbookManagemen.handleUploadImage;
|
@@ -38803,7 +39073,9 @@ var PreparedTextbookView = function PreparedTextbookView(_ref) {
|
|
38803
39073
|
isAdmin: isAdmin,
|
38804
39074
|
isSuperAdmin: isSuperAdmin,
|
38805
39075
|
selected: selected,
|
39076
|
+
handleSaveData: handleSaveData,
|
38806
39077
|
textbookId: textbookId,
|
39078
|
+
selectedTextbook: selectedTextbook,
|
38807
39079
|
onChangeTab: handleChangeTab,
|
38808
39080
|
onUploadImage: handleUploadImage,
|
38809
39081
|
coverImage: coverImage,
|
@@ -40321,6 +40593,491 @@ var singleLogo = function singleLogo(_ref) {
|
|
40321
40593
|
}))));
|
40322
40594
|
};
|
40323
40595
|
|
40596
|
+
var TimerItem = function TimerItem(_ref) {
|
40597
|
+
var data = _ref.data,
|
40598
|
+
seconds = _ref.seconds,
|
40599
|
+
loading = _ref.loading,
|
40600
|
+
activeTimerId = _ref.activeTimerId,
|
40601
|
+
onStartOrPauseTimer = _ref.onStartOrPauseTimer;
|
40602
|
+
var theme = useTheme();
|
40603
|
+
var _useTranslation = useTranslation(),
|
40604
|
+
t = _useTranslation.t;
|
40605
|
+
var handleStartOrPauseTimer = function handleStartOrPauseTimer() {
|
40606
|
+
onStartOrPauseTimer(data);
|
40607
|
+
};
|
40608
|
+
var isStarted = activeTimerId === data.id && data.status === SubjectTimerStatus.Started;
|
40609
|
+
var displayedTime = useMemo(function () {
|
40610
|
+
switch (data.status) {
|
40611
|
+
case SubjectTimerStatus.Started:
|
40612
|
+
return activeTimerId !== data.id ? formatTime$2(Math.floor(data.duration / 1000), t) : formatTime$2(seconds != null ? seconds : 0, t);
|
40613
|
+
case SubjectTimerStatus.NotStarted:
|
40614
|
+
return t("press_to_start");
|
40615
|
+
default:
|
40616
|
+
return formatTime$2(Math.floor(data.duration / 1000), t);
|
40617
|
+
}
|
40618
|
+
}, [data.id, data.status, data.duration, seconds, activeTimerId, t]);
|
40619
|
+
return React__default.createElement(MenuItem, {
|
40620
|
+
className: "" + styles["timer-menu-item"],
|
40621
|
+
sx: {
|
40622
|
+
py: 1,
|
40623
|
+
bgcolor: theme.palette.background.paper,
|
40624
|
+
borderRadius: 0.75,
|
40625
|
+
minHeight: "52px"
|
40626
|
+
},
|
40627
|
+
disabled: loading,
|
40628
|
+
onClick: handleStartOrPauseTimer
|
40629
|
+
}, React__default.createElement(Stack, {
|
40630
|
+
direction: "row",
|
40631
|
+
gap: 1,
|
40632
|
+
sx: {
|
40633
|
+
justifyContent: "space-between",
|
40634
|
+
alignItems: "center",
|
40635
|
+
width: "100%"
|
40636
|
+
}
|
40637
|
+
}, React__default.createElement(Typography, {
|
40638
|
+
className: styles["subject-name"] + " " + styles["truncate"],
|
40639
|
+
fontSize: "14px",
|
40640
|
+
fontWeight: 600
|
40641
|
+
}, data.name), React__default.createElement(Box, {
|
40642
|
+
sx: {
|
40643
|
+
display: "flex",
|
40644
|
+
alignItems: "center",
|
40645
|
+
gap: 1.5
|
40646
|
+
}
|
40647
|
+
}, React__default.createElement(Typography, {
|
40648
|
+
className: "" + styles["duration"],
|
40649
|
+
sx: {
|
40650
|
+
color: isStarted ? theme.palette.common.black : theme.palette.success.light,
|
40651
|
+
fontSize: "14px",
|
40652
|
+
fontWeight: 700
|
40653
|
+
}
|
40654
|
+
}, displayedTime), !isStarted && React__default.createElement(Box, {
|
40655
|
+
className: "" + styles["icon-start"]
|
40656
|
+
}, React__default.createElement(IoPlayCircleSharp, {
|
40657
|
+
size: 20
|
40658
|
+
})))));
|
40659
|
+
};
|
40660
|
+
var TOTAL_SECONDS_IN_A_MINUTE = 60;
|
40661
|
+
var TOTAL_SECONDS_IN_AN_HOUR = 60 * 60;
|
40662
|
+
var formatTime$2 = function formatTime(totalSeconds, t) {
|
40663
|
+
var hours = Math.floor(totalSeconds / TOTAL_SECONDS_IN_AN_HOUR);
|
40664
|
+
var minutes = Math.floor(totalSeconds % TOTAL_SECONDS_IN_AN_HOUR / TOTAL_SECONDS_IN_A_MINUTE);
|
40665
|
+
var seconds = totalSeconds % TOTAL_SECONDS_IN_A_MINUTE;
|
40666
|
+
if (hours > 0) {
|
40667
|
+
return "" + hours.toString().padStart(2, "0") + t("hour_h") + " " + minutes.toString().padStart(2, "0") + t("minutes") + " " + seconds.toString().padStart(2, "0") + t("seconds");
|
40668
|
+
}
|
40669
|
+
if (minutes > 0) {
|
40670
|
+
return "" + minutes.toString().padStart(2, "0") + t("minutes") + " " + seconds.toString().padStart(2, "0") + t("seconds");
|
40671
|
+
}
|
40672
|
+
return "" + seconds.toString().padStart(2, "0") + t("seconds");
|
40673
|
+
};
|
40674
|
+
|
40675
|
+
var TimerCountItem = function TimerCountItem(_ref) {
|
40676
|
+
var data = _ref.data,
|
40677
|
+
activeTimerId = _ref.activeTimerId,
|
40678
|
+
onChangeTime = _ref.onChangeTime;
|
40679
|
+
var requestAnimationRef = useRef(null);
|
40680
|
+
var user = useSelector(function (state) {
|
40681
|
+
var _state$common;
|
40682
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
40683
|
+
});
|
40684
|
+
useEffect(function () {
|
40685
|
+
if (data.status !== SubjectTimerStatus.Started || !(user !== null && user !== void 0 && user.academyDomain) && !(user !== null && user !== void 0 && user.isLearningSpace) || data.id !== activeTimerId) return;
|
40686
|
+
var _animate = function animate() {
|
40687
|
+
var startTime = data.startTime,
|
40688
|
+
lastResumeTime = data.lastResumeTime,
|
40689
|
+
duration = data.duration;
|
40690
|
+
var startOfTime = lastResumeTime !== DATE_TIME_MIN_VALUE ? lastResumeTime : startTime;
|
40691
|
+
if (startOfTime === DATE_TIME_MIN_VALUE) return;
|
40692
|
+
var time = getCountTime(startOfTime, Math.floor(duration / 1000));
|
40693
|
+
if (typeof time !== "number") {
|
40694
|
+
onChangeTime(data, undefined);
|
40695
|
+
return;
|
40696
|
+
}
|
40697
|
+
onChangeTime(data, time);
|
40698
|
+
requestAnimationRef.current = requestAnimationFrame(_animate);
|
40699
|
+
};
|
40700
|
+
requestAnimationRef.current = requestAnimationFrame(_animate);
|
40701
|
+
return function () {
|
40702
|
+
!!requestAnimationRef.current && cancelAnimationFrame(requestAnimationRef.current);
|
40703
|
+
};
|
40704
|
+
}, [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]);
|
40705
|
+
return React__default.createElement(Fragment$1, null);
|
40706
|
+
};
|
40707
|
+
|
40708
|
+
var formatDate = function formatDate(t, date) {
|
40709
|
+
return utcToLocalTime(date, t("date_format"));
|
40710
|
+
};
|
40711
|
+
var TimerDropdown = function TimerDropdown() {
|
40712
|
+
var _user$academyDomain$t, _user$academyDomain, _user$academyDomain$t2;
|
40713
|
+
var _useTranslation = useTranslation(),
|
40714
|
+
t = _useTranslation.t;
|
40715
|
+
var theme = useTheme();
|
40716
|
+
var user = useSelector(function (state) {
|
40717
|
+
var _state$common;
|
40718
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
40719
|
+
});
|
40720
|
+
var _useState = useState(null),
|
40721
|
+
open = _useState[0],
|
40722
|
+
setOpen = _useState[1];
|
40723
|
+
var _useState2 = useState([]),
|
40724
|
+
timers = _useState2[0],
|
40725
|
+
setTimers = _useState2[1];
|
40726
|
+
var _useState3 = useState(),
|
40727
|
+
seconds = _useState3[0],
|
40728
|
+
setSeconds = _useState3[1];
|
40729
|
+
var _useState4 = useState(),
|
40730
|
+
activeTimerId = _useState4[0],
|
40731
|
+
setActiveTimerId = _useState4[1];
|
40732
|
+
var _useState5 = useState(false),
|
40733
|
+
loadingItem = _useState5[0],
|
40734
|
+
setLoadingItem = _useState5[1];
|
40735
|
+
var _useState6 = useState(false),
|
40736
|
+
isFetching = _useState6[0],
|
40737
|
+
setFetching = _useState6[1];
|
40738
|
+
var fetchedRef = useRef();
|
40739
|
+
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 : "";
|
40740
|
+
var handleChangeTime = function handleChangeTime(data, time) {
|
40741
|
+
if (!(user !== null && user !== void 0 && user.id) || !academyDomain && !(user !== null && user !== void 0 && user.isLearningSpace)) return;
|
40742
|
+
if (academyDomain !== fetchedRef.current && data.id !== activeTimerId) return;
|
40743
|
+
setSeconds(time);
|
40744
|
+
var key = user.id + "-" + data.id + "-" + SUBJECT_TIMER_KEY + academyDomain;
|
40745
|
+
saveDuration(key, time * 1000);
|
40746
|
+
};
|
40747
|
+
var handleOpen = function handleOpen(event) {
|
40748
|
+
setOpen(event.currentTarget);
|
40749
|
+
};
|
40750
|
+
var handleClose = function handleClose() {
|
40751
|
+
setOpen(null);
|
40752
|
+
};
|
40753
|
+
var handleStartOrPauseTimer = function handleStartOrPauseTimer(data) {
|
40754
|
+
try {
|
40755
|
+
var _temp2 = function _temp2(_result3) {
|
40756
|
+
if (_exit) return _result3;
|
40757
|
+
setLoadingItem(false);
|
40758
|
+
};
|
40759
|
+
var _exit = false;
|
40760
|
+
var isActive = activeTimerId === data.id;
|
40761
|
+
var isPaused = data.status === SubjectTimerStatus.Paused;
|
40762
|
+
setLoadingItem(true);
|
40763
|
+
var _temp = _catch(function () {
|
40764
|
+
return Promise.resolve(handlePauseAllTimers(data.id)).then(function () {
|
40765
|
+
return function () {
|
40766
|
+
if (data.recordId) {
|
40767
|
+
return function () {
|
40768
|
+
if (!isActive && !isPaused) {
|
40769
|
+
setActiveTimerId(data.id);
|
40770
|
+
setTimers(function (timers) {
|
40771
|
+
return timers.map(function (timer) {
|
40772
|
+
return timer.id === data.id ? _extends({}, timer, {
|
40773
|
+
lastResumeTime: moment().utc().toISOString()
|
40774
|
+
}) : timer;
|
40775
|
+
});
|
40776
|
+
});
|
40777
|
+
setLoadingItem(false);
|
40778
|
+
_exit = true;
|
40779
|
+
} else {
|
40780
|
+
return Promise.resolve(pauseStudentSubjectApi(data.id, data.recordId, {
|
40781
|
+
status: isPaused ? SubjectTimerStatus.Started : SubjectTimerStatus.Paused,
|
40782
|
+
startTime: isPaused ? moment().utc().valueOf() : 0,
|
40783
|
+
pauseTime: !isPaused ? moment().utc().valueOf() : 0,
|
40784
|
+
duration: isActive && seconds ? seconds * 1000 : data.duration
|
40785
|
+
})).then(function (res) {
|
40786
|
+
setTimers(function (timers) {
|
40787
|
+
return timers.map(function (timer) {
|
40788
|
+
return timer.id === data.id ? res.data : timer;
|
40789
|
+
});
|
40790
|
+
});
|
40791
|
+
setActiveTimerId(!isPaused && isActive ? undefined : data.id);
|
40792
|
+
});
|
40793
|
+
}
|
40794
|
+
}();
|
40795
|
+
} else {
|
40796
|
+
return Promise.resolve(startStudentSubjectTimerApi(data.id)).then(function (res) {
|
40797
|
+
setTimers(function (timers) {
|
40798
|
+
return timers.map(function (timer) {
|
40799
|
+
return timer.id === data.id ? res.data : timer;
|
40800
|
+
});
|
40801
|
+
});
|
40802
|
+
setActiveTimerId(!isPaused && isActive ? undefined : data.id);
|
40803
|
+
});
|
40804
|
+
}
|
40805
|
+
}();
|
40806
|
+
});
|
40807
|
+
}, function () {
|
40808
|
+
toast.error(t(isPaused ? "failed_to_start_the_subject_name" : "failed_to_pause_the_subject_name", {
|
40809
|
+
name: data.name
|
40810
|
+
}));
|
40811
|
+
});
|
40812
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
40813
|
+
} catch (e) {
|
40814
|
+
return Promise.reject(e);
|
40815
|
+
}
|
40816
|
+
};
|
40817
|
+
var handlePauseAllTimers = function handlePauseAllTimers(exceptId) {
|
40818
|
+
try {
|
40819
|
+
!exceptId && setLoadingItem(true);
|
40820
|
+
var tasks = timers.filter(function (i) {
|
40821
|
+
return i.status === SubjectTimerStatus.Started && i.id !== exceptId;
|
40822
|
+
}).map(function (i) {
|
40823
|
+
return handlePauseTimer(i);
|
40824
|
+
});
|
40825
|
+
return Promise.resolve(Promise.all(tasks)).then(function () {
|
40826
|
+
!exceptId && setLoadingItem(false);
|
40827
|
+
});
|
40828
|
+
} catch (e) {
|
40829
|
+
return Promise.reject(e);
|
40830
|
+
}
|
40831
|
+
};
|
40832
|
+
var handlePauseTimer = function handlePauseTimer(data, updateState) {
|
40833
|
+
if (updateState === void 0) {
|
40834
|
+
updateState = true;
|
40835
|
+
}
|
40836
|
+
try {
|
40837
|
+
if (data.status === SubjectTimerStatus.Paused) return Promise.resolve(data);
|
40838
|
+
return Promise.resolve(_catch(function () {
|
40839
|
+
return Promise.resolve(pauseStudentSubjectApi(data.id, data.recordId, {
|
40840
|
+
status: SubjectTimerStatus.Paused,
|
40841
|
+
duration: activeTimerId === data.id && seconds ? seconds * 1000 : data.duration,
|
40842
|
+
pauseTime: moment().utc().valueOf()
|
40843
|
+
})).then(function (res) {
|
40844
|
+
if (updateState) setTimers(function (state) {
|
40845
|
+
return state.map(function (i) {
|
40846
|
+
return i.id === data.id ? res.data : i;
|
40847
|
+
});
|
40848
|
+
});
|
40849
|
+
return res.data;
|
40850
|
+
});
|
40851
|
+
}, function () {
|
40852
|
+
activeTimerId === data.id && toast.error(t("failed_to_pause_the_subject_name", {
|
40853
|
+
name: data.name
|
40854
|
+
}));
|
40855
|
+
}));
|
40856
|
+
} catch (e) {
|
40857
|
+
return Promise.reject(e);
|
40858
|
+
}
|
40859
|
+
};
|
40860
|
+
var getDataFromLocalStorage = useCallback(function (items) {
|
40861
|
+
if (fetchedRef.current !== academyDomain) return [];
|
40862
|
+
return items.map(function (item) {
|
40863
|
+
var key = (user === null || user === void 0 ? void 0 : user.id) + "-" + item.id + "-" + SUBJECT_TIMER_KEY + academyDomain;
|
40864
|
+
var duration = getLocalDuration(key, item);
|
40865
|
+
var lastResumeTime = moment().utc().toISOString();
|
40866
|
+
return _extends({}, item, {
|
40867
|
+
duration: duration !== null ? duration : item.duration,
|
40868
|
+
lastResumeTime: lastResumeTime
|
40869
|
+
});
|
40870
|
+
});
|
40871
|
+
}, [user === null || user === void 0 ? void 0 : user.id, academyDomain]);
|
40872
|
+
useEffect(function () {
|
40873
|
+
var fetchData = function fetchData() {
|
40874
|
+
try {
|
40875
|
+
var _temp4 = function _temp4() {
|
40876
|
+
setFetching(false);
|
40877
|
+
};
|
40878
|
+
if (!(user !== null && user !== void 0 && user.id) || !academyDomain && !(user !== null && user !== void 0 && user.isLearningSpace)) return Promise.resolve();
|
40879
|
+
if (fetchedRef.current == academyDomain && !open) return Promise.resolve();
|
40880
|
+
setFetching(true);
|
40881
|
+
var _temp3 = _catch(function () {
|
40882
|
+
return Promise.resolve(getStudentSubjectListApi()).then(function (res) {
|
40883
|
+
var _items$find;
|
40884
|
+
var _res$data$items = res.data.items,
|
40885
|
+
items = _res$data$items === void 0 ? [] : _res$data$items;
|
40886
|
+
fetchedRef.current = academyDomain;
|
40887
|
+
setTimers(getDataFromLocalStorage(items));
|
40888
|
+
setActiveTimerId((_items$find = items.find(function (i) {
|
40889
|
+
return i.status === SubjectTimerStatus.Started;
|
40890
|
+
})) === null || _items$find === void 0 ? void 0 : _items$find.id);
|
40891
|
+
});
|
40892
|
+
}, function (error) {
|
40893
|
+
toast.error(getErrorMessage(t, error));
|
40894
|
+
});
|
40895
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
40896
|
+
} catch (e) {
|
40897
|
+
return Promise.reject(e);
|
40898
|
+
}
|
40899
|
+
};
|
40900
|
+
fetchData();
|
40901
|
+
}, [t, getDataFromLocalStorage, user === null || user === void 0 ? void 0 : user.isLearningSpace, open]);
|
40902
|
+
var today = formatDate(t);
|
40903
|
+
var isRunning = timers.some(function (timer) {
|
40904
|
+
return timer.status === SubjectTimerStatus.Started;
|
40905
|
+
});
|
40906
|
+
var selectedTimer = timers.find(function (i) {
|
40907
|
+
return i.id === activeTimerId;
|
40908
|
+
});
|
40909
|
+
return React__default.createElement(Fragment$1, null, React__default.createElement(IconButton$1, {
|
40910
|
+
onClick: handleOpen,
|
40911
|
+
sx: {
|
40912
|
+
width: 44,
|
40913
|
+
height: 44,
|
40914
|
+
mx: 1,
|
40915
|
+
borderRadius: "6px",
|
40916
|
+
padding: "8px",
|
40917
|
+
background: !isRunning ? grey[50] : green[100],
|
40918
|
+
"&: hover": {
|
40919
|
+
background: !isRunning ? grey[200] : green[200]
|
40920
|
+
}
|
40921
|
+
}
|
40922
|
+
}, React__default.createElement(Stack, {
|
40923
|
+
justifyContent: "center",
|
40924
|
+
alignItems: "center",
|
40925
|
+
width: "100%",
|
40926
|
+
height: "100%",
|
40927
|
+
sx: {
|
40928
|
+
borderRadius: "50%",
|
40929
|
+
backgroundColor: "#FFF"
|
40930
|
+
}
|
40931
|
+
}, React__default.createElement(IoTimer, {
|
40932
|
+
color: !isRunning ? grey[700] : green[500],
|
40933
|
+
size: "16.25px"
|
40934
|
+
}))), selectedTimer && React__default.createElement(TimerCountItem, {
|
40935
|
+
data: selectedTimer,
|
40936
|
+
activeTimerId: activeTimerId,
|
40937
|
+
onChangeTime: handleChangeTime
|
40938
|
+
}), React__default.createElement(Popover$1, {
|
40939
|
+
open: !!open,
|
40940
|
+
anchorEl: open,
|
40941
|
+
onClose: handleClose,
|
40942
|
+
anchorOrigin: {
|
40943
|
+
vertical: "bottom",
|
40944
|
+
horizontal: "right"
|
40945
|
+
},
|
40946
|
+
transformOrigin: {
|
40947
|
+
vertical: "top",
|
40948
|
+
horizontal: "right"
|
40949
|
+
},
|
40950
|
+
slotProps: {
|
40951
|
+
paper: {
|
40952
|
+
sx: {
|
40953
|
+
px: 2,
|
40954
|
+
mt: 1,
|
40955
|
+
ml: 0.75,
|
40956
|
+
width: 320,
|
40957
|
+
borderRadius: 2,
|
40958
|
+
boxShadow: 3,
|
40959
|
+
bgcolor: theme.palette.grey[50]
|
40960
|
+
}
|
40961
|
+
}
|
40962
|
+
}
|
40963
|
+
}, React__default.createElement(Box, {
|
40964
|
+
sx: {
|
40965
|
+
py: 2,
|
40966
|
+
display: "flex",
|
40967
|
+
alignItems: "center",
|
40968
|
+
justifyContent: "space-between"
|
40969
|
+
}
|
40970
|
+
}, React__default.createElement(Box, {
|
40971
|
+
sx: {
|
40972
|
+
display: "flex",
|
40973
|
+
gap: 1,
|
40974
|
+
alignItems: "center"
|
40975
|
+
}
|
40976
|
+
}, React__default.createElement(Box, {
|
40977
|
+
display: "flex",
|
40978
|
+
alignItems: "center"
|
40979
|
+
}, React__default.createElement(IoTimer, null)), React__default.createElement(Typography, {
|
40980
|
+
variant: "subtitle1",
|
40981
|
+
fontWeight: "bold",
|
40982
|
+
fontSize: "14px"
|
40983
|
+
}, t("study_timer"))), React__default.createElement(Typography, {
|
40984
|
+
color: "textSecondary",
|
40985
|
+
whiteSpace: "nowrap",
|
40986
|
+
fontSize: "14px"
|
40987
|
+
}, today)), React__default.createElement(Divider, {
|
40988
|
+
sx: {
|
40989
|
+
bgcolor: theme.palette.grey[700]
|
40990
|
+
}
|
40991
|
+
}), React__default.createElement(Stack, {
|
40992
|
+
className: "" + styles["timer-menu"],
|
40993
|
+
gap: 1.5,
|
40994
|
+
flexDirection: "column",
|
40995
|
+
sx: {
|
40996
|
+
py: 2,
|
40997
|
+
maxHeight: "360px"
|
40998
|
+
}
|
40999
|
+
}, !isFetching && React__default.createElement(ListView, {
|
41000
|
+
data: timers,
|
41001
|
+
render: function render(item, index) {
|
41002
|
+
return React__default.createElement(TimerItem, {
|
41003
|
+
key: index,
|
41004
|
+
data: item,
|
41005
|
+
loading: loadingItem,
|
41006
|
+
seconds: activeTimerId === item.id ? seconds : undefined,
|
41007
|
+
activeTimerId: activeTimerId,
|
41008
|
+
onStartOrPauseTimer: handleStartOrPauseTimer
|
41009
|
+
});
|
41010
|
+
}
|
41011
|
+
}), isFetching && React__default.createElement(Stack, {
|
41012
|
+
sx: {
|
41013
|
+
width: "100%",
|
41014
|
+
py: 2
|
41015
|
+
},
|
41016
|
+
justifyContent: "center",
|
41017
|
+
alignItems: "center"
|
41018
|
+
}, React__default.createElement(Typography, {
|
41019
|
+
className: "text-muted"
|
41020
|
+
}, React__default.createElement(CircularProgress, {
|
41021
|
+
size: "16px",
|
41022
|
+
color: "success"
|
41023
|
+
}))), !timers.length && !isFetching && React__default.createElement(Box, null, React__default.createElement(Typography, {
|
41024
|
+
className: "text-muted"
|
41025
|
+
}, t("no_data")))), React__default.createElement(Divider, {
|
41026
|
+
sx: {
|
41027
|
+
bgcolor: theme.palette.grey[700]
|
41028
|
+
}
|
41029
|
+
}), React__default.createElement(Box, {
|
41030
|
+
sx: {
|
41031
|
+
p: 2,
|
41032
|
+
textAlign: "right"
|
41033
|
+
}
|
41034
|
+
}, React__default.createElement(Button, {
|
41035
|
+
disableTouchRipple: true,
|
41036
|
+
onClick: function onClick() {
|
41037
|
+
return handlePauseAllTimers();
|
41038
|
+
},
|
41039
|
+
disabled: loadingItem,
|
41040
|
+
sx: {
|
41041
|
+
fontWeight: 700,
|
41042
|
+
color: theme.palette.success.main,
|
41043
|
+
padding: "8px 12px",
|
41044
|
+
bgcolor: theme.palette.background.paper,
|
41045
|
+
"&:hover": {
|
41046
|
+
bgcolor: theme.palette.grey[200]
|
41047
|
+
},
|
41048
|
+
"&:disabled": {
|
41049
|
+
opacity: 0.5
|
41050
|
+
}
|
41051
|
+
}
|
41052
|
+
}, loadingItem ? t("saving") : t("pause")))));
|
41053
|
+
};
|
41054
|
+
var SUBJECT_TIMER_KEY = "stk";
|
41055
|
+
var saveDuration = function saveDuration(key, duration) {
|
41056
|
+
localStorage.setItem(key, "" + duration);
|
41057
|
+
};
|
41058
|
+
var getLocalDuration = function getLocalDuration(key, timer) {
|
41059
|
+
try {
|
41060
|
+
var res = localStorage.getItem(key);
|
41061
|
+
var duration = +(res != null ? res : "");
|
41062
|
+
if (!duration || Number.isNaN(duration) || duration <= timer.duration) return null;
|
41063
|
+
return duration;
|
41064
|
+
} catch (error) {
|
41065
|
+
return null;
|
41066
|
+
}
|
41067
|
+
};
|
41068
|
+
|
41069
|
+
var HeaderLink = function HeaderLink(_ref) {
|
41070
|
+
var data = _ref.data,
|
41071
|
+
render = _ref.render;
|
41072
|
+
var activePaths = data.activePaths,
|
41073
|
+
path = data.path;
|
41074
|
+
var pathname = window.location.pathname.toLowerCase();
|
41075
|
+
var isActive = (activePaths === null || activePaths === void 0 ? void 0 : activePaths.some(function (a) {
|
41076
|
+
return pathname.startsWith(a);
|
41077
|
+
})) || pathname.startsWith(path);
|
41078
|
+
return React__default.createElement(Fragment$1, null, render(data, isActive));
|
41079
|
+
};
|
41080
|
+
|
40324
41081
|
var Header = function Header(_ref) {
|
40325
41082
|
var academyListRoute = _ref.academyListRoute,
|
40326
41083
|
homeRoute = _ref.homeRoute,
|
@@ -40443,7 +41200,9 @@ var Header = function Header(_ref) {
|
|
40443
41200
|
justifyContent: "center",
|
40444
41201
|
height: "100%",
|
40445
41202
|
className: styles["logo"] + " d-flex d-lg-none"
|
40446
|
-
}, React__default.createElement(singleLogo, null))), React__default.createElement(Stack, {
|
41203
|
+
}, React__default.createElement(singleLogo, null))), !isTeacherSide && React__default.createElement(Stack, {
|
41204
|
+
className: "me-2 ms-2"
|
41205
|
+
}, React__default.createElement(TimerDropdown, null)), React__default.createElement(Stack, {
|
40447
41206
|
className: "me-2",
|
40448
41207
|
display: "none"
|
40449
41208
|
}, React__default.createElement(TheLanguageDropdown, null)), showAnnouncement && renderNotificationLink && React__default.createElement(AnnouncementContainer, {
|
@@ -40452,17 +41211,6 @@ var Header = function Header(_ref) {
|
|
40452
41211
|
renderViewNoteLink: renderViewNoteLink
|
40453
41212
|
})));
|
40454
41213
|
};
|
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
|
-
};
|
40466
41214
|
|
40467
41215
|
var useLayoutContext = function useLayoutContext(role, showLoadingAcademy, domain) {
|
40468
41216
|
var _currentPusher$connec2;
|
@@ -40627,5 +41375,5 @@ var LayoutContext = function LayoutContext(_ref) {
|
|
40627
41375
|
});else return React__default.createElement(Fragment$1, null, children);
|
40628
41376
|
};
|
40629
41377
|
|
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 };
|
41378
|
+
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 };
|
40631
41379
|
//# sourceMappingURL=index.modern.js.map
|