touchstudy-core 0.1.178 → 0.1.179

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, IoCheckmark, 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';
@@ -541,7 +541,6 @@ var teacher_in_charge = "담당 교사";
541
541
  var counselor = "상담교사";
542
542
  var new_question = "새로운 질문";
543
543
  var hour = "시간";
544
- var hour_h = "시간";
545
544
  var minute = "분";
546
545
  var second = "두번째";
547
546
  var question_order = "{{number}} 번";
@@ -1116,7 +1115,6 @@ var academy_invite_detail = "아카데미 초대 세부정보";
1116
1115
  var are_you_sure_to_delete_academy_invite = "이 아카데미 초대를 삭제하시겠습니까?";
1117
1116
  var day = "낮";
1118
1117
  var days = "날";
1119
- var month = "월";
1120
1118
  var emails = "이메일";
1121
1119
  var is_accepted = "승인됨";
1122
1120
  var re_send = "다시 보내기";
@@ -1549,12 +1547,6 @@ var teacher_to_teachers = "교사에서 교사들에게";
1549
1547
  var student_required = "학생은 필수입니다";
1550
1548
  var teachers_required = "교사가 필요합니다";
1551
1549
  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
1550
  var lang_ko = {
1559
1551
  problem_solving: problem_solving,
1560
1552
  my_story: my_story,
@@ -1746,7 +1738,6 @@ var lang_ko = {
1746
1738
  counselor: counselor,
1747
1739
  new_question: new_question,
1748
1740
  hour: hour,
1749
- hour_h: hour_h,
1750
1741
  minute: minute,
1751
1742
  second: second,
1752
1743
  question_order: question_order,
@@ -2313,7 +2304,6 @@ var lang_ko = {
2313
2304
  are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite,
2314
2305
  day: day,
2315
2306
  days: days,
2316
- month: month,
2317
2307
  emails: emails,
2318
2308
  is_accepted: is_accepted,
2319
2309
  re_send: re_send,
@@ -2733,13 +2723,7 @@ var lang_ko = {
2733
2723
  teacher_to_teachers: teacher_to_teachers,
2734
2724
  student_required: student_required,
2735
2725
  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
2726
+ all_changes_are_not_saved_yet: all_changes_are_not_saved_yet
2743
2727
  };
2744
2728
 
2745
2729
  var problem_solving$1 = "Problem Solving";
@@ -2958,7 +2942,6 @@ var counselor$1 = "Counselor";
2958
2942
  var new_question$1 = "New Question";
2959
2943
  var hour$1 = "hr";
2960
2944
  var hours = "hrs";
2961
- var hour_h$1 = "h";
2962
2945
  var minute$1 = "min";
2963
2946
  var second$1 = "second";
2964
2947
  var question_order$1 = "Number {{number}}";
@@ -3508,7 +3491,6 @@ var academy_invite_detail$1 = "Academy Invite Detail";
3508
3491
  var are_you_sure_to_delete_academy_invite$1 = "Are you sure to delete this academy invite?";
3509
3492
  var day$1 = "day";
3510
3493
  var days$1 = "days";
3511
- var month$1 = "month";
3512
3494
  var emails$1 = "Emails";
3513
3495
  var is_accepted$1 = "Is Accepted";
3514
3496
  var re_send$1 = "Resend";
@@ -3942,12 +3924,6 @@ var teacher_to_teachers$1 = "Teacher to teachers";
3942
3924
  var student_required$1 = "Student is required";
3943
3925
  var teachers_required$1 = "Teachers are required";
3944
3926
  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
3927
  var lang_en = {
3952
3928
  problem_solving: problem_solving$1,
3953
3929
  my_story: my_story$1,
@@ -4165,7 +4141,6 @@ var lang_en = {
4165
4141
  new_question: new_question$1,
4166
4142
  hour: hour$1,
4167
4143
  hours: hours,
4168
- hour_h: hour_h$1,
4169
4144
  minute: minute$1,
4170
4145
  second: second$1,
4171
4146
  question_order: question_order$1,
@@ -4707,7 +4682,6 @@ var lang_en = {
4707
4682
  are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite$1,
4708
4683
  day: day$1,
4709
4684
  days: days$1,
4710
- month: month$1,
4711
4685
  emails: emails$1,
4712
4686
  is_accepted: is_accepted$1,
4713
4687
  re_send: re_send$1,
@@ -5128,13 +5102,7 @@ var lang_en = {
5128
5102
  teacher_to_teachers: teacher_to_teachers$1,
5129
5103
  student_required: student_required$1,
5130
5104
  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
5105
+ all_changes_are_not_saved_yet: all_changes_are_not_saved_yet$1
5138
5106
  };
5139
5107
 
5140
5108
  i18n.use(initReactI18next).init({
@@ -5592,7 +5560,7 @@ var PrintExamView2 = function PrintExamView2(_ref) {
5592
5560
  }, t("print_pdf"))));
5593
5561
  };
5594
5562
 
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_"};
5563
+ 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
5564
 
5597
5565
  var config = {
5598
5566
  loader: {
@@ -6358,13 +6326,6 @@ var SchoolType$1;
6358
6326
  SchoolType[SchoolType["High"] = 3] = "High";
6359
6327
  })(SchoolType$1 || (SchoolType$1 = {}));
6360
6328
 
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
-
6368
6329
  var canAccess = function canAccess(userRoles, componentRoles) {
6369
6330
  if (!Array.isArray(userRoles)) {
6370
6331
  return false;
@@ -6614,11 +6575,6 @@ var getRemainTime = function getRemainTime(startTime, duration) {
6614
6575
  if (timePass > durationInNumber) return 0;
6615
6576
  return durationInNumber - timePass;
6616
6577
  };
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
- };
6622
6578
 
6623
6579
  var formatDateTime = function formatDateTime(inputDate) {
6624
6580
  var date = new Date(inputDate);
@@ -8345,27 +8301,6 @@ var getSubjectListApi = function getSubjectListApi(textSearch) {
8345
8301
  return Promise.reject(e);
8346
8302
  }
8347
8303
  };
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
- };
8369
8304
 
8370
8305
  var SubjectSelector = function SubjectSelector(_ref) {
8371
8306
  var value = _ref.value,
@@ -10435,7 +10370,6 @@ var grey = {
10435
10370
  var green = {
10436
10371
  0: '#FFFFFF',
10437
10372
  100: '#F0FFF6',
10438
- 200: '#D2FFE4',
10439
10373
  300: '#89F0B2',
10440
10374
  500: '#3DC674',
10441
10375
  700: '#349056',
@@ -40593,491 +40527,6 @@ var singleLogo = function singleLogo(_ref) {
40593
40527
  }))));
40594
40528
  };
40595
40529
 
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
-
41081
40530
  var Header = function Header(_ref) {
41082
40531
  var academyListRoute = _ref.academyListRoute,
41083
40532
  homeRoute = _ref.homeRoute,
@@ -41200,9 +40649,7 @@ var Header = function Header(_ref) {
41200
40649
  justifyContent: "center",
41201
40650
  height: "100%",
41202
40651
  className: styles["logo"] + " d-flex d-lg-none"
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, {
40652
+ }, React__default.createElement(singleLogo, null))), React__default.createElement(Stack, {
41206
40653
  className: "me-2",
41207
40654
  display: "none"
41208
40655
  }, React__default.createElement(TheLanguageDropdown, null)), showAnnouncement && renderNotificationLink && React__default.createElement(AnnouncementContainer, {
@@ -41211,6 +40658,17 @@ var Header = function Header(_ref) {
41211
40658
  renderViewNoteLink: renderViewNoteLink
41212
40659
  })));
41213
40660
  };
40661
+ var HeaderLink = function HeaderLink(_ref3) {
40662
+ var data = _ref3.data,
40663
+ render = _ref3.render;
40664
+ var activePaths = data.activePaths,
40665
+ path = data.path;
40666
+ var pathname = location.pathname.toLowerCase();
40667
+ var isActive = (activePaths === null || activePaths === void 0 ? void 0 : activePaths.some(function (a) {
40668
+ return pathname.startsWith(a);
40669
+ })) || pathname.startsWith(path);
40670
+ return React__default.createElement(Fragment$1, null, render(data, isActive));
40671
+ };
41214
40672
 
41215
40673
  var useLayoutContext = function useLayoutContext(role, showLoadingAcademy, domain) {
41216
40674
  var _currentPusher$connec2;
@@ -41375,5 +40833,5 @@ var LayoutContext = function LayoutContext(_ref) {
41375
40833
  });else return React__default.createElement(Fragment$1, null, children);
41376
40834
  };
41377
40835
 
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 };
40836
+ 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 };
41379
40837
  //# sourceMappingURL=index.modern.js.map