touchstudy-core 0.1.174 → 0.1.176

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 } 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';
@@ -541,6 +541,7 @@ var teacher_in_charge = "담당 교사";
541
541
  var counselor = "상담교사";
542
542
  var new_question = "새로운 질문";
543
543
  var hour = "시간";
544
+ var hour_h = "시간";
544
545
  var minute = "분";
545
546
  var second = "두번째";
546
547
  var question_order = "{{number}} 번";
@@ -1115,6 +1116,7 @@ var academy_invite_detail = "아카데미 초대 세부정보";
1115
1116
  var are_you_sure_to_delete_academy_invite = "이 아카데미 초대를 삭제하시겠습니까?";
1116
1117
  var day = "낮";
1117
1118
  var days = "날";
1119
+ var month = "월";
1118
1120
  var emails = "이메일";
1119
1121
  var is_accepted = "승인됨";
1120
1122
  var re_send = "다시 보내기";
@@ -1547,6 +1549,12 @@ var teacher_to_teachers = "교사에서 교사들에게";
1547
1549
  var student_required = "학생은 필수입니다";
1548
1550
  var teachers_required = "교사가 필요합니다";
1549
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}}'를 시작하는 데 실패했습니다";
1550
1558
  var lang_ko = {
1551
1559
  problem_solving: problem_solving,
1552
1560
  my_story: my_story,
@@ -1738,6 +1746,7 @@ var lang_ko = {
1738
1746
  counselor: counselor,
1739
1747
  new_question: new_question,
1740
1748
  hour: hour,
1749
+ hour_h: hour_h,
1741
1750
  minute: minute,
1742
1751
  second: second,
1743
1752
  question_order: question_order,
@@ -2304,6 +2313,7 @@ var lang_ko = {
2304
2313
  are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite,
2305
2314
  day: day,
2306
2315
  days: days,
2316
+ month: month,
2307
2317
  emails: emails,
2308
2318
  is_accepted: is_accepted,
2309
2319
  re_send: re_send,
@@ -2723,7 +2733,13 @@ var lang_ko = {
2723
2733
  teacher_to_teachers: teacher_to_teachers,
2724
2734
  student_required: student_required,
2725
2735
  teachers_required: teachers_required,
2726
- all_changes_are_not_saved_yet: all_changes_are_not_saved_yet
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
2727
2743
  };
2728
2744
 
2729
2745
  var problem_solving$1 = "Problem Solving";
@@ -2942,6 +2958,7 @@ var counselor$1 = "Counselor";
2942
2958
  var new_question$1 = "New Question";
2943
2959
  var hour$1 = "hr";
2944
2960
  var hours = "hrs";
2961
+ var hour_h$1 = "h";
2945
2962
  var minute$1 = "min";
2946
2963
  var second$1 = "second";
2947
2964
  var question_order$1 = "Number {{number}}";
@@ -3491,6 +3508,7 @@ var academy_invite_detail$1 = "Academy Invite Detail";
3491
3508
  var are_you_sure_to_delete_academy_invite$1 = "Are you sure to delete this academy invite?";
3492
3509
  var day$1 = "day";
3493
3510
  var days$1 = "days";
3511
+ var month$1 = "month";
3494
3512
  var emails$1 = "Emails";
3495
3513
  var is_accepted$1 = "Is Accepted";
3496
3514
  var re_send$1 = "Resend";
@@ -3924,6 +3942,12 @@ var teacher_to_teachers$1 = "Teacher to teachers";
3924
3942
  var student_required$1 = "Student is required";
3925
3943
  var teachers_required$1 = "Teachers are required";
3926
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}}'";
3927
3951
  var lang_en = {
3928
3952
  problem_solving: problem_solving$1,
3929
3953
  my_story: my_story$1,
@@ -4141,6 +4165,7 @@ var lang_en = {
4141
4165
  new_question: new_question$1,
4142
4166
  hour: hour$1,
4143
4167
  hours: hours,
4168
+ hour_h: hour_h$1,
4144
4169
  minute: minute$1,
4145
4170
  second: second$1,
4146
4171
  question_order: question_order$1,
@@ -4682,6 +4707,7 @@ var lang_en = {
4682
4707
  are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite$1,
4683
4708
  day: day$1,
4684
4709
  days: days$1,
4710
+ month: month$1,
4685
4711
  emails: emails$1,
4686
4712
  is_accepted: is_accepted$1,
4687
4713
  re_send: re_send$1,
@@ -5102,7 +5128,13 @@ var lang_en = {
5102
5128
  teacher_to_teachers: teacher_to_teachers$1,
5103
5129
  student_required: student_required$1,
5104
5130
  teachers_required: teachers_required$1,
5105
- all_changes_are_not_saved_yet: all_changes_are_not_saved_yet$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
5106
5138
  };
5107
5139
 
5108
5140
  i18n.use(initReactI18next).init({
@@ -5560,7 +5592,7 @@ var PrintExamView2 = function PrintExamView2(_ref) {
5560
5592
  }, t("print_pdf"))));
5561
5593
  };
5562
5594
 
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"};
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_"};
5564
5596
 
5565
5597
  var config = {
5566
5598
  loader: {
@@ -6135,6 +6167,7 @@ var CustomSelect = function CustomSelect(_ref) {
6135
6167
  Option: CustomOption
6136
6168
  },
6137
6169
  styles: _extends({}, customStyles, styles),
6170
+ isMulti: isMulti,
6138
6171
  placeholder: t("select_placeholder")
6139
6172
  }, rest));
6140
6173
  };
@@ -6323,6 +6356,13 @@ var SchoolType$1;
6323
6356
  SchoolType[SchoolType["High"] = 3] = "High";
6324
6357
  })(SchoolType$1 || (SchoolType$1 = {}));
6325
6358
 
6359
+ var SubjectTimerStatus;
6360
+ (function (SubjectTimerStatus) {
6361
+ SubjectTimerStatus[SubjectTimerStatus["NotStarted"] = 0] = "NotStarted";
6362
+ SubjectTimerStatus[SubjectTimerStatus["Started"] = 1] = "Started";
6363
+ SubjectTimerStatus[SubjectTimerStatus["Paused"] = 2] = "Paused";
6364
+ })(SubjectTimerStatus || (SubjectTimerStatus = {}));
6365
+
6326
6366
  var canAccess = function canAccess(userRoles, componentRoles) {
6327
6367
  if (!Array.isArray(userRoles)) {
6328
6368
  return false;
@@ -6572,6 +6612,11 @@ var getRemainTime = function getRemainTime(startTime, duration) {
6572
6612
  if (timePass > durationInNumber) return 0;
6573
6613
  return durationInNumber - timePass;
6574
6614
  };
6615
+ var getCountTime = function getCountTime(startTime, duration) {
6616
+ var timePass = diffFromNow(startTime, "second");
6617
+ if (typeof timePass !== "number") return null;
6618
+ return duration + timePass;
6619
+ };
6575
6620
 
6576
6621
  var formatDateTime = function formatDateTime(inputDate) {
6577
6622
  var date = new Date(inputDate);
@@ -8298,6 +8343,27 @@ var getSubjectListApi = function getSubjectListApi(textSearch) {
8298
8343
  return Promise.reject(e);
8299
8344
  }
8300
8345
  };
8346
+ var getStudentSubjectListApi = function getStudentSubjectListApi() {
8347
+ try {
8348
+ return Promise.resolve(api.get(SUBJECT_URL + "/timers"));
8349
+ } catch (e) {
8350
+ return Promise.reject(e);
8351
+ }
8352
+ };
8353
+ var startStudentSubjectTimerApi = function startStudentSubjectTimerApi(subjectId) {
8354
+ try {
8355
+ return Promise.resolve(api.post(SUBJECT_URL + "/" + subjectId + "/timers"));
8356
+ } catch (e) {
8357
+ return Promise.reject(e);
8358
+ }
8359
+ };
8360
+ var pauseStudentSubjectApi = function pauseStudentSubjectApi(subjectId, recordId, data) {
8361
+ try {
8362
+ return Promise.resolve(api.post(SUBJECT_URL + "/" + subjectId + "/timers/" + recordId, data));
8363
+ } catch (e) {
8364
+ return Promise.reject(e);
8365
+ }
8366
+ };
8301
8367
 
8302
8368
  var SubjectSelector = function SubjectSelector(_ref) {
8303
8369
  var value = _ref.value,
@@ -10367,6 +10433,7 @@ var grey = {
10367
10433
  var green = {
10368
10434
  0: '#FFFFFF',
10369
10435
  100: '#F0FFF6',
10436
+ 200: '#D2FFE4',
10370
10437
  300: '#89F0B2',
10371
10438
  500: '#3DC674',
10372
10439
  700: '#349056',
@@ -13035,8 +13102,8 @@ var DayOfWeek;
13035
13102
  })(DayOfWeek || (DayOfWeek = {}));
13036
13103
  var TeacherSortBy;
13037
13104
  (function (TeacherSortBy) {
13038
- TeacherSortBy["Name"] = "UserProfile.FullName";
13039
- TeacherSortBy["Email"] = "UserProfile.Email";
13105
+ TeacherSortBy["Name"] = "User.UserProfile.FullName";
13106
+ TeacherSortBy["Email"] = "User.UserProfile.Email";
13040
13107
  })(TeacherSortBy || (TeacherSortBy = {}));
13041
13108
  var ClassStatus;
13042
13109
  (function (ClassStatus) {
@@ -13314,23 +13381,29 @@ var DEFAULT_USER_FILTERS = {
13314
13381
 
13315
13382
  var styles$3 = {"avatar":"_2rJkZ","date-picker":"_1iqE2","time-picker":"_20xtc","teacher-selector-wrapper":"_3L1Oj"};
13316
13383
 
13317
- var _excluded$7 = ["teachers", "value"];
13318
13384
  var TeacherSelector = function TeacherSelector(_ref) {
13319
13385
  var teachers = _ref.teachers,
13320
- value = _ref.value,
13321
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
13386
+ value = _ref.value;
13322
13387
  var teacherOptions = teachers.map(function (i) {
13323
13388
  return {
13324
13389
  label: i.teacherName + "/" + i.teacherEmail,
13325
13390
  value: i.id
13326
13391
  };
13327
13392
  });
13328
- return React__default.createElement(CustomAsyncSelect, Object.assign({
13393
+ return React__default.createElement(CustomAsyncSelect, {
13329
13394
  options: teacherOptions,
13330
- value: value
13331
- }, rest, {
13395
+ value: value,
13396
+ menuPlacement: "bottom",
13397
+ styles: {
13398
+ menuPortal: function menuPortal(base) {
13399
+ return _extends({}, base, {
13400
+ zIndex: 9999
13401
+ });
13402
+ }
13403
+ },
13404
+ menuPortalTarget: document.body,
13332
13405
  isClearable: true
13333
- }));
13406
+ });
13334
13407
  };
13335
13408
 
13336
13409
  var ErrorHandler = function ErrorHandler(_ref) {
@@ -20298,12 +20371,12 @@ function CreateNewQuestionDialog(_ref) {
20298
20371
  });
20299
20372
  }
20300
20373
 
20301
- var _excluded$8 = ["children", "value", "index"];
20374
+ var _excluded$7 = ["children", "value", "index"];
20302
20375
  var CustomTabPanel = function CustomTabPanel(props) {
20303
20376
  var children = props.children,
20304
20377
  value = props.value,
20305
20378
  index = props.index,
20306
- other = _objectWithoutPropertiesLoose(props, _excluded$8);
20379
+ other = _objectWithoutPropertiesLoose(props, _excluded$7);
20307
20380
  return React__default.createElement("div", Object.assign({
20308
20381
  role: "tabpanel",
20309
20382
  hidden: value !== index,
@@ -24360,7 +24433,7 @@ var ChapterProblemSolvingResultsDialog = function ChapterProblemSolvingResultsDi
24360
24433
  }, t("cancel"))))));
24361
24434
  };
24362
24435
 
24363
- var _excluded$9 = ["onChange"];
24436
+ var _excluded$8 = ["onChange"];
24364
24437
  var StartPageDialog = function StartPageDialog(_ref) {
24365
24438
  var t = _ref.t,
24366
24439
  onClose = _ref.onClose,
@@ -24426,7 +24499,7 @@ var StartPageDialog = function StartPageDialog(_ref) {
24426
24499
  }, t("page_to_start_with")), React__default.createElement(Field, {
24427
24500
  name: "startPage",
24428
24501
  render: function render(_ref3) {
24429
- var field = _objectWithoutPropertiesLoose(_ref3, _excluded$9);
24502
+ var field = _objectWithoutPropertiesLoose(_ref3, _excluded$8);
24430
24503
  return React__default.createElement(CustomSelectOption, Object.assign({
24431
24504
  maxMenuHeight: 150,
24432
24505
  menuPosition: "fixed",
@@ -26058,10 +26131,10 @@ var DrawerTextbookResultTab = function DrawerTextbookResultTab(_ref) {
26058
26131
  };
26059
26132
 
26060
26133
  var _styled$1;
26061
- var _excluded$a = ["className"];
26134
+ var _excluded$9 = ["className"];
26062
26135
  var CustomTooltip$1 = styled(function (_ref) {
26063
26136
  var className = _ref.className,
26064
- props = _objectWithoutPropertiesLoose(_ref, _excluded$a);
26137
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
26065
26138
  return React__default.createElement(Tooltip, Object.assign({}, props, {
26066
26139
  classes: {
26067
26140
  popper: className
@@ -27542,7 +27615,7 @@ var useTeacherList = function useTeacherList() {
27542
27615
  };
27543
27616
  };
27544
27617
 
27545
- var _excluded$b = ["getStudents"],
27618
+ var _excluded$a = ["getStudents"],
27546
27619
  _excluded2 = ["getTeachers"],
27547
27620
  _excluded3 = ["getLessons"];
27548
27621
  var PAGE_TITLE$4 = "classes";
@@ -27593,7 +27666,7 @@ var useClassDetail = function useClassDetail(_ref) {
27593
27666
  };
27594
27667
  var _useStudentClassList = useStudentClassList(classId),
27595
27668
  getStudents = _useStudentClassList.getStudents,
27596
- studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$b);
27669
+ studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$a);
27597
27670
  var _useTeacherClassList = useTeacherClassList(classId),
27598
27671
  getTeachers = _useTeacherClassList.getTeachers,
27599
27672
  teacherListProps = _objectWithoutPropertiesLoose(_useTeacherClassList, _excluded2);
@@ -28981,14 +29054,14 @@ var CSV_PREFIX = "data:text/csv;charset=utf-8,";
28981
29054
 
28982
29055
  var styles$8 = {"action-btn":"_1jXbz","action-btn--pencil":"_at4xP","icon-rotate-180":"_12gv9","drop-area":"_R4bn5"};
28983
29056
 
28984
- var _excluded$c = ["text", "isRequired", "className"];
29057
+ var _excluded$b = ["text", "isRequired", "className"];
28985
29058
  var LabelRequired = function LabelRequired(_ref) {
28986
29059
  var text = _ref.text,
28987
29060
  _ref$isRequired = _ref.isRequired,
28988
29061
  isRequired = _ref$isRequired === void 0 ? true : _ref$isRequired,
28989
29062
  _ref$className = _ref.className,
28990
29063
  className = _ref$className === void 0 ? "" : _ref$className,
28991
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$c);
29064
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
28992
29065
  return React__default.createElement(FormLabel, Object.assign({
28993
29066
  className: "fw-medium mb-1 " + className
28994
29067
  }, rest), text, isRequired && React__default.createElement("span", {
@@ -29042,7 +29115,7 @@ var deleteUserApi = function deleteUserApi(id) {
29042
29115
  return api["delete"](USER_URL$1 + "/delete/" + id);
29043
29116
  };
29044
29117
 
29045
- var _excluded$d = ["ref"],
29118
+ var _excluded$c = ["ref"],
29046
29119
  _excluded2$1 = ["ref"],
29047
29120
  _excluded3$1 = ["ref"],
29048
29121
  _excluded4 = ["ref"],
@@ -29072,7 +29145,7 @@ var UserDialog = function UserDialog(_ref) {
29072
29145
  t = _useTranslation.t;
29073
29146
  var _register = register("fullName"),
29074
29147
  fullNameRef = _register.ref,
29075
- fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$d);
29148
+ fullNameBio = _objectWithoutPropertiesLoose(_register, _excluded$c);
29076
29149
  var _register2 = register("email"),
29077
29150
  emailRef = _register2.ref,
29078
29151
  emailBio = _objectWithoutPropertiesLoose(_register2, _excluded2$1);
@@ -33143,12 +33216,12 @@ var ArticleDialog = function ArticleDialog(_ref) {
33143
33216
 
33144
33217
  var styles$a = {"drawer":"_11aYm","open":"_3Ydwm","drawer-overlay":"_3SQDf","drawer-header":"_2BwOx","drawer-form":"_2Zo7R","dropdown-content-academy":"_1lzjD","dropdown-change":"_1y7K9","dropdown-academy-item":"_1Y-55","dropdown-content-language":"_1fBXY","dropdown-item-language":"_3Szun","dropdown-item-language-active":"_2HhLb","item-address":"_3WYHC","item-logout":"_2-9ix","title-address":"_1r4pn","image-academy":"_2ZozT"};
33145
33218
 
33146
- var _excluded$e = ["isOpen", "onClose", "handleSaveExam"];
33219
+ var _excluded$d = ["isOpen", "onClose", "handleSaveExam"];
33147
33220
  var CreateExamDrawer = function CreateExamDrawer(props) {
33148
33221
  var isOpen = props.isOpen,
33149
33222
  onClose = props.onClose,
33150
33223
  handleSaveExam = props.handleSaveExam,
33151
- examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$e);
33224
+ examDetailViewProps = _objectWithoutPropertiesLoose(props, _excluded$d);
33152
33225
  var _useTranslation = useTranslation(),
33153
33226
  t = _useTranslation.t;
33154
33227
  var theme = useTheme();
@@ -34301,12 +34374,12 @@ var useNotificationDetail = function useNotificationDetail(_ref) {
34301
34374
 
34302
34375
  var styles$b = {"avatar":"_8niRT"};
34303
34376
 
34304
- var _excluded$f = ["value", "disabled", "optionTypeNotification"];
34377
+ var _excluded$e = ["value", "disabled", "optionTypeNotification"];
34305
34378
  var TypeSelector = function TypeSelector(_ref) {
34306
34379
  var value = _ref.value,
34307
34380
  disabled = _ref.disabled,
34308
34381
  optionTypeNotification = _ref.optionTypeNotification,
34309
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
34382
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$e);
34310
34383
  return React__default.createElement(CustomAsyncSelect, Object.assign({
34311
34384
  options: optionTypeNotification,
34312
34385
  value: value
@@ -34699,11 +34772,11 @@ var useNotificationList = function useNotificationList(_ref) {
34699
34772
  };
34700
34773
  };
34701
34774
 
34702
- var _excluded$g = ["value", "optionTypeNotification"];
34775
+ var _excluded$f = ["value", "optionTypeNotification"];
34703
34776
  var SelectFilterType = function SelectFilterType(_ref) {
34704
34777
  var value = _ref.value,
34705
34778
  optionTypeNotification = _ref.optionTypeNotification,
34706
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$g);
34779
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$f);
34707
34780
  return React__default.createElement(CustomAsyncSelect, Object.assign({
34708
34781
  options: optionTypeNotification,
34709
34782
  value: value
@@ -35980,7 +36053,7 @@ var isEqual$1 = function isEqual(prev, next) {
35980
36053
  };
35981
36054
  var QuestionShortInput$1 = memo(QuestionShortInput, isEqual$1);
35982
36055
 
35983
- var _excluded$h = ["onChange"];
36056
+ var _excluded$g = ["onChange"];
35984
36057
  var _$2 = _$8;
35985
36058
  var BpIcon$1 = styled("span")(function (_ref) {
35986
36059
  var theme = _ref.theme;
@@ -36291,7 +36364,7 @@ var QuestionBlock = function QuestionBlock(_ref2) {
36291
36364
  name: path + ".questionTypeId",
36292
36365
  render: function render(_ref5) {
36293
36366
  var _ref5$field = _ref5.field,
36294
- field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$h);
36367
+ field = _objectWithoutPropertiesLoose(_ref5$field, _excluded$g);
36295
36368
  return React__default.createElement(CustomSelectOption, Object.assign({}, field, {
36296
36369
  isDisabled: disabled,
36297
36370
  value: data.questionType,
@@ -36340,7 +36413,7 @@ var isEqual$2 = function isEqual(prev, next) {
36340
36413
  };
36341
36414
  var QuestionBlock$1 = memo(QuestionBlock, isEqual$2);
36342
36415
 
36343
- var _excluded$i = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onQuestioStartOrderChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36416
+ var _excluded$h = ["data", "path", "isMath", "open", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "categories", "questionTypes", "disabled", "onQuestioStartOrderChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36344
36417
  var _$3 = _$8;
36345
36418
  var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
36346
36419
  var _data$articles$3, _data$articles$3$cate, _data$articles$4, _data$articles$4$cate, _questions$2;
@@ -36361,7 +36434,7 @@ var QuestionGroupBlockBody = function QuestionGroupBlockBody(_ref) {
36361
36434
  onCloseCategoryMenu = _ref.onCloseCategoryMenu,
36362
36435
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
36363
36436
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
36364
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
36437
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$h);
36365
36438
  var errors = formikProps.errors;
36366
36439
  var startOrderRef = useRef(null);
36367
36440
  var articles = data.articles,
@@ -36504,7 +36577,7 @@ var isEqual$3 = function isEqual(prev, next) {
36504
36577
  };
36505
36578
  var QuestionGroupBlockBody$1 = memo(QuestionGroupBlockBody, isEqual$3);
36506
36579
 
36507
- var _excluded$j = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36580
+ var _excluded$i = ["expandedIndex", "open", "paths", "path", "isMath", "data", "categories", "isLoadingCategories", "isLoadingQuestionTypes", "questionTypes", "optionKey", "disabled", "onToggle", "onQuestionCountChange", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36508
36581
  var _$4 = _$8;
36509
36582
  var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
36510
36583
  var _data$articles$3, _data$articles$3$cate, _data$articles$3$cate2, _data$articles$4, _data$articles$4$cate, _data$articles$4$cate2;
@@ -36529,7 +36602,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
36529
36602
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
36530
36603
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
36531
36604
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
36532
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$j);
36605
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$i);
36533
36606
  var errors = formikProps.errors,
36534
36607
  setFieldValue = formikProps.setFieldValue;
36535
36608
  var _useTranslation = useTranslation(),
@@ -36992,7 +37065,7 @@ var QuestionGroupBlock = function QuestionGroupBlock(_ref) {
36992
37065
  }, formikProps)))));
36993
37066
  };
36994
37067
 
36995
- var _excluded$k = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
37068
+ var _excluded$j = ["path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "optionKey", "questionGroups", "subChapters", "categories", "questionTypes", "disabled", "onDelete", "onOpenSubCategoryMenu", "onOpenCategoryMenu", "onCloseCategoryMenu", "onCopiedPrevQuestionGroup", "onCloseQuestionTypeMenu", "onOpenQuestionTypeMenu"];
36996
37069
  var ChapterBlockBody = function ChapterBlockBody(_ref) {
36997
37070
  var path = _ref.path,
36998
37071
  paths = _ref.paths,
@@ -37012,7 +37085,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
37012
37085
  onCopiedPrevQuestionGroup = _ref.onCopiedPrevQuestionGroup,
37013
37086
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
37014
37087
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
37015
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
37088
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$j);
37016
37089
  var _useTranslation = useTranslation(),
37017
37090
  t = _useTranslation.t;
37018
37091
  var setFieldValue = formikProps.setFieldValue;
@@ -37191,7 +37264,7 @@ var ChapterBlockBody = function ChapterBlockBody(_ref) {
37191
37264
  }));
37192
37265
  };
37193
37266
 
37194
- var _excluded$l = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
37267
+ var _excluded$k = ["data", "expandedIndex", "open", "path", "paths", "isMath", "isLoadingCategories", "isLoadingQuestionTypes", "categories", "questionTypes", "optionKey", "disabled", "onToggle", "onDelete", "onCopiedPrevQuestionGroup", "onCloseCategoryMenu", "onOpenCategoryMenu", "onOpenSubCategoryMenu", "onOpenQuestionTypeMenu", "onCloseQuestionTypeMenu"];
37195
37268
  var _$5 = _$8;
37196
37269
  var ChapterBlock = function ChapterBlock(_ref) {
37197
37270
  var data = _ref.data,
@@ -37214,7 +37287,7 @@ var ChapterBlock = function ChapterBlock(_ref) {
37214
37287
  onOpenSubCategoryMenu = _ref.onOpenSubCategoryMenu,
37215
37288
  onOpenQuestionTypeMenu = _ref.onOpenQuestionTypeMenu,
37216
37289
  onCloseQuestionTypeMenu = _ref.onCloseQuestionTypeMenu,
37217
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$l);
37290
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$k);
37218
37291
  var errors = formikProps.errors;
37219
37292
  var _useTranslation = useTranslation(),
37220
37293
  t = _useTranslation.t;
@@ -37905,7 +37978,7 @@ var TextbookContentsTab = function TextbookContentsTab(props) {
37905
37978
  }));
37906
37979
  };
37907
37980
 
37908
- var _excluded$m = ["value"];
37981
+ var _excluded$l = ["value"];
37909
37982
  var VisuallyHiddenInput = styled("input")({
37910
37983
  clip: "rect(0 0 0 0)",
37911
37984
  clipPath: "inset(50%)",
@@ -38073,7 +38146,7 @@ var TextbookInfoTab = function TextbookInfoTab(_ref) {
38073
38146
  render: function render(_ref4) {
38074
38147
  var _ref4$field = _ref4.field,
38075
38148
  value = _ref4$field.value,
38076
- action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$m);
38149
+ action = _objectWithoutPropertiesLoose(_ref4$field, _excluded$l);
38077
38150
  return React__default.createElement(LocalizationProvider$1, {
38078
38151
  dateAdapter: AdapterMoment
38079
38152
  }, React__default.createElement(DatePicker$1, Object.assign({}, action, {
@@ -38547,7 +38620,7 @@ var TextbookOwnersTab = function TextbookOwnersTab(_ref) {
38547
38620
  }));
38548
38621
  };
38549
38622
 
38550
- var _excluded$n = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "selectedTextbook", "handleSaveData", "onChangeTab", "onUploadImage"];
38623
+ var _excluded$m = ["isCreatedByAdmin", "isSuperAdminUser", "isSuperAdmin", "isAdmin", "textbookId", "selected", "coverImage", "disabled", "ownersDisabled", "selectedTextbook", "handleSaveData", "onChangeTab", "onUploadImage"];
38551
38624
  var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38552
38625
  var _valuesTextbook$curre;
38553
38626
  var isCreatedByAdmin = _ref.isCreatedByAdmin,
@@ -38563,7 +38636,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
38563
38636
  handleSaveData = _ref.handleSaveData,
38564
38637
  onChangeTab = _ref.onChangeTab,
38565
38638
  onUploadImage = _ref.onUploadImage,
38566
- formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$n);
38639
+ formikProps = _objectWithoutPropertiesLoose(_ref, _excluded$m);
38567
38640
  var values = formikProps.values,
38568
38641
  errors = formikProps.errors,
38569
38642
  dirty = formikProps.dirty,
@@ -39816,7 +39889,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
39816
39889
  var handleGoToMainPage = function handleGoToMainPage() {
39817
39890
  if (!user) return;
39818
39891
  var isAcademy = user.academyDomain || user.isLearningSpace;
39819
- var mainUrl = !isAcademy ? homeAcademyUrl : homeUrl;
39892
+ var mainUrl = isAcademy ? homeAcademyUrl : homeUrl;
39820
39893
  pushTo(history, mainUrl);
39821
39894
  };
39822
39895
  var handleImageError = function handleImageError() {
@@ -40471,6 +40544,491 @@ var singleLogo = function singleLogo(_ref) {
40471
40544
  }))));
40472
40545
  };
40473
40546
 
40547
+ var TimerItem = function TimerItem(_ref) {
40548
+ var data = _ref.data,
40549
+ seconds = _ref.seconds,
40550
+ loading = _ref.loading,
40551
+ activeTimerId = _ref.activeTimerId,
40552
+ onStartOrPauseTimer = _ref.onStartOrPauseTimer;
40553
+ var theme = useTheme();
40554
+ var _useTranslation = useTranslation(),
40555
+ t = _useTranslation.t;
40556
+ var handleStartOrPauseTimer = function handleStartOrPauseTimer() {
40557
+ onStartOrPauseTimer(data);
40558
+ };
40559
+ var isStarted = activeTimerId === data.id && data.status === SubjectTimerStatus.Started;
40560
+ var displayedTime = useMemo(function () {
40561
+ switch (data.status) {
40562
+ case SubjectTimerStatus.Started:
40563
+ return activeTimerId !== data.id ? formatTime$2(Math.floor(data.duration / 1000), t) : formatTime$2(seconds != null ? seconds : 0, t);
40564
+ case SubjectTimerStatus.NotStarted:
40565
+ return t("press_to_start");
40566
+ default:
40567
+ return formatTime$2(Math.floor(data.duration / 1000), t);
40568
+ }
40569
+ }, [data.id, data.status, data.duration, seconds, activeTimerId, t]);
40570
+ return React__default.createElement(MenuItem, {
40571
+ className: "" + styles["timer-menu-item"],
40572
+ sx: {
40573
+ py: 1,
40574
+ bgcolor: theme.palette.background.paper,
40575
+ borderRadius: 0.75,
40576
+ minHeight: "52px"
40577
+ },
40578
+ disabled: loading,
40579
+ onClick: handleStartOrPauseTimer
40580
+ }, React__default.createElement(Stack, {
40581
+ direction: "row",
40582
+ gap: 1,
40583
+ sx: {
40584
+ justifyContent: "space-between",
40585
+ alignItems: "center",
40586
+ width: "100%"
40587
+ }
40588
+ }, React__default.createElement(Typography, {
40589
+ className: styles["subject-name"] + " " + styles["truncate"],
40590
+ fontSize: "14px",
40591
+ fontWeight: 600
40592
+ }, data.name), React__default.createElement(Box, {
40593
+ sx: {
40594
+ display: "flex",
40595
+ alignItems: "center",
40596
+ gap: 1.5
40597
+ }
40598
+ }, React__default.createElement(Typography, {
40599
+ className: "" + styles["duration"],
40600
+ sx: {
40601
+ color: isStarted ? theme.palette.common.black : theme.palette.success.light,
40602
+ fontSize: "14px",
40603
+ fontWeight: 700
40604
+ }
40605
+ }, displayedTime), !isStarted && React__default.createElement(Box, {
40606
+ className: "" + styles["icon-start"]
40607
+ }, React__default.createElement(IoPlayCircleSharp, {
40608
+ size: 20
40609
+ })))));
40610
+ };
40611
+ var TOTAL_SECONDS_IN_A_MINUTE = 60;
40612
+ var TOTAL_SECONDS_IN_AN_HOUR = 60 * 60;
40613
+ var formatTime$2 = function formatTime(totalSeconds, t) {
40614
+ var hours = Math.floor(totalSeconds / TOTAL_SECONDS_IN_AN_HOUR);
40615
+ var minutes = Math.floor(totalSeconds % TOTAL_SECONDS_IN_AN_HOUR / TOTAL_SECONDS_IN_A_MINUTE);
40616
+ var seconds = totalSeconds % TOTAL_SECONDS_IN_A_MINUTE;
40617
+ if (hours > 0) {
40618
+ return "" + hours.toString().padStart(2, "0") + t("hour_h") + " " + minutes.toString().padStart(2, "0") + t("minutes") + " " + seconds.toString().padStart(2, "0") + t("seconds");
40619
+ }
40620
+ if (minutes > 0) {
40621
+ return "" + minutes.toString().padStart(2, "0") + t("minutes") + " " + seconds.toString().padStart(2, "0") + t("seconds");
40622
+ }
40623
+ return "" + seconds.toString().padStart(2, "0") + t("seconds");
40624
+ };
40625
+
40626
+ var TimerCountItem = function TimerCountItem(_ref) {
40627
+ var data = _ref.data,
40628
+ activeTimerId = _ref.activeTimerId,
40629
+ onChangeTime = _ref.onChangeTime;
40630
+ var requestAnimationRef = useRef(null);
40631
+ var user = useSelector(function (state) {
40632
+ var _state$common;
40633
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
40634
+ });
40635
+ useEffect(function () {
40636
+ if (data.status !== SubjectTimerStatus.Started || !(user !== null && user !== void 0 && user.academyDomain) && !(user !== null && user !== void 0 && user.isLearningSpace) || data.id !== activeTimerId) return;
40637
+ var _animate = function animate() {
40638
+ var startTime = data.startTime,
40639
+ lastResumeTime = data.lastResumeTime,
40640
+ duration = data.duration;
40641
+ var startOfTime = lastResumeTime !== DATE_TIME_MIN_VALUE ? lastResumeTime : startTime;
40642
+ if (startOfTime === DATE_TIME_MIN_VALUE) return;
40643
+ var time = getCountTime(startOfTime, Math.floor(duration / 1000));
40644
+ if (typeof time !== "number") {
40645
+ onChangeTime(data, undefined);
40646
+ return;
40647
+ }
40648
+ onChangeTime(data, time);
40649
+ requestAnimationRef.current = requestAnimationFrame(_animate);
40650
+ };
40651
+ requestAnimationRef.current = requestAnimationFrame(_animate);
40652
+ return function () {
40653
+ !!requestAnimationRef.current && cancelAnimationFrame(requestAnimationRef.current);
40654
+ };
40655
+ }, [JSON.stringify(data), user === null || user === void 0 ? void 0 : user.id, user === null || user === void 0 ? void 0 : user.academyDomain, user === null || user === void 0 ? void 0 : user.isLearningSpace, activeTimerId]);
40656
+ return React__default.createElement(Fragment$1, null);
40657
+ };
40658
+
40659
+ var formatDate = function formatDate(t, date) {
40660
+ return utcToLocalTime(date, t("date_format"));
40661
+ };
40662
+ var TimerDropdown = function TimerDropdown() {
40663
+ var _user$academyDomain$t, _user$academyDomain, _user$academyDomain$t2;
40664
+ var _useTranslation = useTranslation(),
40665
+ t = _useTranslation.t;
40666
+ var theme = useTheme();
40667
+ var user = useSelector(function (state) {
40668
+ var _state$common;
40669
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
40670
+ });
40671
+ var _useState = useState(null),
40672
+ open = _useState[0],
40673
+ setOpen = _useState[1];
40674
+ var _useState2 = useState([]),
40675
+ timers = _useState2[0],
40676
+ setTimers = _useState2[1];
40677
+ var _useState3 = useState(),
40678
+ seconds = _useState3[0],
40679
+ setSeconds = _useState3[1];
40680
+ var _useState4 = useState(),
40681
+ activeTimerId = _useState4[0],
40682
+ setActiveTimerId = _useState4[1];
40683
+ var _useState5 = useState(false),
40684
+ loadingItem = _useState5[0],
40685
+ setLoadingItem = _useState5[1];
40686
+ var _useState6 = useState(false),
40687
+ isFetching = _useState6[0],
40688
+ setFetching = _useState6[1];
40689
+ var fetchedRef = useRef();
40690
+ var academyDomain = (_user$academyDomain$t = user === null || user === void 0 ? void 0 : (_user$academyDomain = user.academyDomain) === null || _user$academyDomain === void 0 ? void 0 : (_user$academyDomain$t2 = _user$academyDomain.toLowerCase) === null || _user$academyDomain$t2 === void 0 ? void 0 : _user$academyDomain$t2.call(_user$academyDomain)) != null ? _user$academyDomain$t : "";
40691
+ var handleChangeTime = function handleChangeTime(data, time) {
40692
+ if (!(user !== null && user !== void 0 && user.id) || !academyDomain && !(user !== null && user !== void 0 && user.isLearningSpace)) return;
40693
+ if (academyDomain !== fetchedRef.current && data.id !== activeTimerId) return;
40694
+ setSeconds(time);
40695
+ var key = user.id + "-" + data.id + "-" + SUBJECT_TIMER_KEY + academyDomain;
40696
+ saveDuration(key, time * 1000);
40697
+ };
40698
+ var handleOpen = function handleOpen(event) {
40699
+ setOpen(event.currentTarget);
40700
+ };
40701
+ var handleClose = function handleClose() {
40702
+ setOpen(null);
40703
+ };
40704
+ var handleStartOrPauseTimer = function handleStartOrPauseTimer(data) {
40705
+ try {
40706
+ var _temp2 = function _temp2(_result3) {
40707
+ if (_exit) return _result3;
40708
+ setLoadingItem(false);
40709
+ };
40710
+ var _exit = false;
40711
+ var isActive = activeTimerId === data.id;
40712
+ var isPaused = data.status === SubjectTimerStatus.Paused;
40713
+ setLoadingItem(true);
40714
+ var _temp = _catch(function () {
40715
+ return Promise.resolve(handlePauseAllTimers(data.id)).then(function () {
40716
+ return function () {
40717
+ if (data.recordId) {
40718
+ return function () {
40719
+ if (!isActive && !isPaused) {
40720
+ setActiveTimerId(data.id);
40721
+ setTimers(function (timers) {
40722
+ return timers.map(function (timer) {
40723
+ return timer.id === data.id ? _extends({}, timer, {
40724
+ lastResumeTime: moment().utc().toISOString()
40725
+ }) : timer;
40726
+ });
40727
+ });
40728
+ setLoadingItem(false);
40729
+ _exit = true;
40730
+ } else {
40731
+ return Promise.resolve(pauseStudentSubjectApi(data.id, data.recordId, {
40732
+ status: isPaused ? SubjectTimerStatus.Started : SubjectTimerStatus.Paused,
40733
+ startTime: isPaused ? moment().utc().valueOf() : 0,
40734
+ pauseTime: !isPaused ? moment().utc().valueOf() : 0,
40735
+ duration: isActive && seconds ? seconds * 1000 : data.duration
40736
+ })).then(function (res) {
40737
+ setTimers(function (timers) {
40738
+ return timers.map(function (timer) {
40739
+ return timer.id === data.id ? res.data : timer;
40740
+ });
40741
+ });
40742
+ setActiveTimerId(!isPaused && isActive ? undefined : data.id);
40743
+ });
40744
+ }
40745
+ }();
40746
+ } else {
40747
+ return Promise.resolve(startStudentSubjectTimerApi(data.id)).then(function (res) {
40748
+ setTimers(function (timers) {
40749
+ return timers.map(function (timer) {
40750
+ return timer.id === data.id ? res.data : timer;
40751
+ });
40752
+ });
40753
+ setActiveTimerId(!isPaused && isActive ? undefined : data.id);
40754
+ });
40755
+ }
40756
+ }();
40757
+ });
40758
+ }, function () {
40759
+ toast.error(t(isPaused ? "failed_to_start_the_subject_name" : "failed_to_pause_the_subject_name", {
40760
+ name: data.name
40761
+ }));
40762
+ });
40763
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
40764
+ } catch (e) {
40765
+ return Promise.reject(e);
40766
+ }
40767
+ };
40768
+ var handlePauseAllTimers = function handlePauseAllTimers(exceptId) {
40769
+ try {
40770
+ !exceptId && setLoadingItem(true);
40771
+ var tasks = timers.filter(function (i) {
40772
+ return i.status === SubjectTimerStatus.Started && i.id !== exceptId;
40773
+ }).map(function (i) {
40774
+ return handlePauseTimer(i);
40775
+ });
40776
+ return Promise.resolve(Promise.all(tasks)).then(function () {
40777
+ !exceptId && setLoadingItem(false);
40778
+ });
40779
+ } catch (e) {
40780
+ return Promise.reject(e);
40781
+ }
40782
+ };
40783
+ var handlePauseTimer = function handlePauseTimer(data, updateState) {
40784
+ if (updateState === void 0) {
40785
+ updateState = true;
40786
+ }
40787
+ try {
40788
+ if (data.status === SubjectTimerStatus.Paused) return Promise.resolve(data);
40789
+ return Promise.resolve(_catch(function () {
40790
+ return Promise.resolve(pauseStudentSubjectApi(data.id, data.recordId, {
40791
+ status: SubjectTimerStatus.Paused,
40792
+ duration: activeTimerId === data.id && seconds ? seconds * 1000 : data.duration,
40793
+ pauseTime: moment().utc().valueOf()
40794
+ })).then(function (res) {
40795
+ if (updateState) setTimers(function (state) {
40796
+ return state.map(function (i) {
40797
+ return i.id === data.id ? res.data : i;
40798
+ });
40799
+ });
40800
+ return res.data;
40801
+ });
40802
+ }, function () {
40803
+ activeTimerId === data.id && toast.error(t("failed_to_pause_the_subject_name", {
40804
+ name: data.name
40805
+ }));
40806
+ }));
40807
+ } catch (e) {
40808
+ return Promise.reject(e);
40809
+ }
40810
+ };
40811
+ var getDataFromLocalStorage = useCallback(function (items) {
40812
+ if (fetchedRef.current !== academyDomain) return [];
40813
+ return items.map(function (item) {
40814
+ var key = (user === null || user === void 0 ? void 0 : user.id) + "-" + item.id + "-" + SUBJECT_TIMER_KEY + academyDomain;
40815
+ var duration = getLocalDuration(key, item);
40816
+ var lastResumeTime = moment().utc().toISOString();
40817
+ return _extends({}, item, {
40818
+ duration: duration !== null ? duration : item.duration,
40819
+ lastResumeTime: lastResumeTime
40820
+ });
40821
+ });
40822
+ }, [user === null || user === void 0 ? void 0 : user.id, academyDomain]);
40823
+ useEffect(function () {
40824
+ var fetchData = function fetchData() {
40825
+ try {
40826
+ var _temp4 = function _temp4() {
40827
+ setFetching(false);
40828
+ };
40829
+ if (!(user !== null && user !== void 0 && user.id) || !academyDomain && !(user !== null && user !== void 0 && user.isLearningSpace)) return Promise.resolve();
40830
+ if (fetchedRef.current == academyDomain && !open) return Promise.resolve();
40831
+ setFetching(true);
40832
+ var _temp3 = _catch(function () {
40833
+ return Promise.resolve(getStudentSubjectListApi()).then(function (res) {
40834
+ var _items$find;
40835
+ var _res$data$items = res.data.items,
40836
+ items = _res$data$items === void 0 ? [] : _res$data$items;
40837
+ fetchedRef.current = academyDomain;
40838
+ setTimers(getDataFromLocalStorage(items));
40839
+ setActiveTimerId((_items$find = items.find(function (i) {
40840
+ return i.status === SubjectTimerStatus.Started;
40841
+ })) === null || _items$find === void 0 ? void 0 : _items$find.id);
40842
+ });
40843
+ }, function (error) {
40844
+ toast.error(getErrorMessage(t, error));
40845
+ });
40846
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
40847
+ } catch (e) {
40848
+ return Promise.reject(e);
40849
+ }
40850
+ };
40851
+ fetchData();
40852
+ }, [t, getDataFromLocalStorage, user === null || user === void 0 ? void 0 : user.isLearningSpace, open]);
40853
+ var today = formatDate(t);
40854
+ var isRunning = timers.some(function (timer) {
40855
+ return timer.status === SubjectTimerStatus.Started;
40856
+ });
40857
+ var selectedTimer = timers.find(function (i) {
40858
+ return i.id === activeTimerId;
40859
+ });
40860
+ return React__default.createElement(Fragment$1, null, React__default.createElement(IconButton$1, {
40861
+ onClick: handleOpen,
40862
+ sx: {
40863
+ width: 44,
40864
+ height: 44,
40865
+ mx: 1,
40866
+ borderRadius: "6px",
40867
+ padding: "8px",
40868
+ background: !isRunning ? grey[50] : green[100],
40869
+ "&: hover": {
40870
+ background: !isRunning ? grey[200] : green[200]
40871
+ }
40872
+ }
40873
+ }, React__default.createElement(Stack, {
40874
+ justifyContent: "center",
40875
+ alignItems: "center",
40876
+ width: "100%",
40877
+ height: "100%",
40878
+ sx: {
40879
+ borderRadius: "50%",
40880
+ backgroundColor: "#FFF"
40881
+ }
40882
+ }, React__default.createElement(IoTimer, {
40883
+ color: !isRunning ? grey[700] : green[500],
40884
+ size: "16.25px"
40885
+ }))), selectedTimer && React__default.createElement(TimerCountItem, {
40886
+ data: selectedTimer,
40887
+ activeTimerId: activeTimerId,
40888
+ onChangeTime: handleChangeTime
40889
+ }), React__default.createElement(Popover$1, {
40890
+ open: !!open,
40891
+ anchorEl: open,
40892
+ onClose: handleClose,
40893
+ anchorOrigin: {
40894
+ vertical: "bottom",
40895
+ horizontal: "right"
40896
+ },
40897
+ transformOrigin: {
40898
+ vertical: "top",
40899
+ horizontal: "right"
40900
+ },
40901
+ slotProps: {
40902
+ paper: {
40903
+ sx: {
40904
+ px: 2,
40905
+ mt: 1,
40906
+ ml: 0.75,
40907
+ width: 320,
40908
+ borderRadius: 2,
40909
+ boxShadow: 3,
40910
+ bgcolor: theme.palette.grey[50]
40911
+ }
40912
+ }
40913
+ }
40914
+ }, React__default.createElement(Box, {
40915
+ sx: {
40916
+ py: 2,
40917
+ display: "flex",
40918
+ alignItems: "center",
40919
+ justifyContent: "space-between"
40920
+ }
40921
+ }, React__default.createElement(Box, {
40922
+ sx: {
40923
+ display: "flex",
40924
+ gap: 1,
40925
+ alignItems: "center"
40926
+ }
40927
+ }, React__default.createElement(Box, {
40928
+ display: "flex",
40929
+ alignItems: "center"
40930
+ }, React__default.createElement(IoTimer, null)), React__default.createElement(Typography, {
40931
+ variant: "subtitle1",
40932
+ fontWeight: "bold",
40933
+ fontSize: "14px"
40934
+ }, t("study_timer"))), React__default.createElement(Typography, {
40935
+ color: "textSecondary",
40936
+ whiteSpace: "nowrap",
40937
+ fontSize: "14px"
40938
+ }, today)), React__default.createElement(Divider, {
40939
+ sx: {
40940
+ bgcolor: theme.palette.grey[700]
40941
+ }
40942
+ }), React__default.createElement(Stack, {
40943
+ className: "" + styles["timer-menu"],
40944
+ gap: 1.5,
40945
+ flexDirection: "column",
40946
+ sx: {
40947
+ py: 2,
40948
+ maxHeight: "360px"
40949
+ }
40950
+ }, !isFetching && React__default.createElement(ListView, {
40951
+ data: timers,
40952
+ render: function render(item, index) {
40953
+ return React__default.createElement(TimerItem, {
40954
+ key: index,
40955
+ data: item,
40956
+ loading: loadingItem,
40957
+ seconds: activeTimerId === item.id ? seconds : undefined,
40958
+ activeTimerId: activeTimerId,
40959
+ onStartOrPauseTimer: handleStartOrPauseTimer
40960
+ });
40961
+ }
40962
+ }), isFetching && React__default.createElement(Stack, {
40963
+ sx: {
40964
+ width: "100%",
40965
+ py: 2
40966
+ },
40967
+ justifyContent: "center",
40968
+ alignItems: "center"
40969
+ }, React__default.createElement(Typography, {
40970
+ className: "text-muted"
40971
+ }, React__default.createElement(CircularProgress, {
40972
+ size: "16px",
40973
+ color: "success"
40974
+ }))), !timers.length && !isFetching && React__default.createElement(Box, null, React__default.createElement(Typography, {
40975
+ className: "text-muted"
40976
+ }, t("no_data")))), React__default.createElement(Divider, {
40977
+ sx: {
40978
+ bgcolor: theme.palette.grey[700]
40979
+ }
40980
+ }), React__default.createElement(Box, {
40981
+ sx: {
40982
+ p: 2,
40983
+ textAlign: "right"
40984
+ }
40985
+ }, React__default.createElement(Button, {
40986
+ disableTouchRipple: true,
40987
+ onClick: function onClick() {
40988
+ return handlePauseAllTimers();
40989
+ },
40990
+ disabled: loadingItem,
40991
+ sx: {
40992
+ fontWeight: 700,
40993
+ color: theme.palette.success.main,
40994
+ padding: "8px 12px",
40995
+ bgcolor: theme.palette.background.paper,
40996
+ "&:hover": {
40997
+ bgcolor: theme.palette.grey[200]
40998
+ },
40999
+ "&:disabled": {
41000
+ opacity: 0.5
41001
+ }
41002
+ }
41003
+ }, loadingItem ? t("saving") : t("pause")))));
41004
+ };
41005
+ var SUBJECT_TIMER_KEY = "stk";
41006
+ var saveDuration = function saveDuration(key, duration) {
41007
+ localStorage.setItem(key, "" + duration);
41008
+ };
41009
+ var getLocalDuration = function getLocalDuration(key, timer) {
41010
+ try {
41011
+ var res = localStorage.getItem(key);
41012
+ var duration = +(res != null ? res : "");
41013
+ if (!duration || Number.isNaN(duration) || duration <= timer.duration) return null;
41014
+ return duration;
41015
+ } catch (error) {
41016
+ return null;
41017
+ }
41018
+ };
41019
+
41020
+ var HeaderLink = function HeaderLink(_ref) {
41021
+ var data = _ref.data,
41022
+ render = _ref.render;
41023
+ var activePaths = data.activePaths,
41024
+ path = data.path;
41025
+ var pathname = window.location.pathname.toLowerCase();
41026
+ var isActive = (activePaths === null || activePaths === void 0 ? void 0 : activePaths.some(function (a) {
41027
+ return pathname.startsWith(a);
41028
+ })) || pathname.startsWith(path);
41029
+ return React__default.createElement(Fragment$1, null, render(data, isActive));
41030
+ };
41031
+
40474
41032
  var Header = function Header(_ref) {
40475
41033
  var academyListRoute = _ref.academyListRoute,
40476
41034
  homeRoute = _ref.homeRoute,
@@ -40593,7 +41151,9 @@ var Header = function Header(_ref) {
40593
41151
  justifyContent: "center",
40594
41152
  height: "100%",
40595
41153
  className: styles["logo"] + " d-flex d-lg-none"
40596
- }, React__default.createElement(singleLogo, null))), React__default.createElement(Stack, {
41154
+ }, React__default.createElement(singleLogo, null))), !isTeacherSide && React__default.createElement(Stack, {
41155
+ className: "me-2 ms-2"
41156
+ }, React__default.createElement(TimerDropdown, null)), React__default.createElement(Stack, {
40597
41157
  className: "me-2",
40598
41158
  display: "none"
40599
41159
  }, React__default.createElement(TheLanguageDropdown, null)), showAnnouncement && renderNotificationLink && React__default.createElement(AnnouncementContainer, {
@@ -40602,17 +41162,6 @@ var Header = function Header(_ref) {
40602
41162
  renderViewNoteLink: renderViewNoteLink
40603
41163
  })));
40604
41164
  };
40605
- var HeaderLink = function HeaderLink(_ref3) {
40606
- var data = _ref3.data,
40607
- render = _ref3.render;
40608
- var activePaths = data.activePaths,
40609
- path = data.path;
40610
- var pathname = location.pathname.toLowerCase();
40611
- var isActive = (activePaths === null || activePaths === void 0 ? void 0 : activePaths.some(function (a) {
40612
- return pathname.startsWith(a);
40613
- })) || pathname.startsWith(path);
40614
- return React__default.createElement(Fragment$1, null, render(data, isActive));
40615
- };
40616
41165
 
40617
41166
  var useLayoutContext = function useLayoutContext(role, showLoadingAcademy, domain) {
40618
41167
  var _currentPusher$connec2;
@@ -40777,5 +41326,5 @@ var LayoutContext = function LayoutContext(_ref) {
40777
41326
  });else return React__default.createElement(Fragment$1, null, children);
40778
41327
  };
40779
41328
 
40780
- 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 };
41329
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, SubjectTimerStatus, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getCountTime, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, includePathname, isLocalHost, isTextType, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
40781
41330
  //# sourceMappingURL=index.modern.js.map