touchstudy-core 0.1.95 → 0.1.96

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.
@@ -9,7 +9,7 @@ import { useDispatch, useSelector } from 'react-redux';
9
9
  import axios from 'axios';
10
10
  import { useTranslation, initReactI18next } from 'react-i18next';
11
11
  export { I18nextProvider, useTranslation } from 'react-i18next';
12
- import { Paper, Card, Stack, Box, Typography, TextField, Button, Grid, Dialog, DialogTitle, IconButton, DialogContent, DialogActions, Pagination, styled, useTheme, useMediaQuery, MenuList, Tooltip, tooltipClasses, ClickAwayListener, CircularProgress, FormControl, RadioGroup, FormControlLabel, Radio, FormGroup, FormLabel, Checkbox, InputLabel, Container, Table, TableBody, TableRow, TableCell, TableHead, InputBase, List, ListItem, TableContainer, Chip } from '@mui/material';
12
+ import { Paper, Card, Stack, Box, Typography, TextField, Button, Grid, Dialog, DialogTitle, IconButton, DialogContent, DialogActions, Pagination, styled, useTheme, useMediaQuery, MenuList, Tooltip, tooltipClasses, ClickAwayListener, CircularProgress, FormControl, RadioGroup, FormControlLabel, Radio, FormGroup, FormLabel, Checkbox, InputLabel, Container, Table, TableBody, TableRow, TableCell, TableHead, InputBase, TableContainer, List, ListItem, Chip } from '@mui/material';
13
13
  import { blue } from '@mui/material/colors';
14
14
  import { GoogleReCaptcha, GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';
15
15
  import { gapi } from 'gapi-script';
@@ -26,7 +26,7 @@ import MenuItem from '@mui/material/MenuItem';
26
26
  import IconButton$1 from '@mui/material/IconButton';
27
27
  import { GoArrowSwitch } from 'react-icons/go';
28
28
  import Select, { components } from 'react-select';
29
- import { FaCaretDown, FaTrash, FaPlus, FaSave, FaPencilAlt, FaPlusCircle, FaTimes, FaSortUp, FaSortDown, FaEye, FaUpload } from 'react-icons/fa';
29
+ import { FaCaretDown, FaTrash, FaPlus, FaSave, FaPencilAlt, FaPlusCircle, FaTimes, FaSortUp, FaSortDown, FaEye, FaShare, FaExchangeAlt, FaUpload } from 'react-icons/fa';
30
30
  import { PiDotsNineLight } from 'react-icons/pi';
31
31
  import { IoMdArrowBack } from 'react-icons/io';
32
32
  import _ from 'lodash';
@@ -114,6 +114,7 @@ var Role;
114
114
  Role["Teacher"] = "Teacher";
115
115
  Role["Admin"] = "Admin";
116
116
  Role["AcademyAdmin"] = "AcademyAdmin";
117
+ Role["AcademyAdminTeacher"] = "AcademyAdminTeacher";
117
118
  })(Role || (Role = {}));
118
119
  var Language;
119
120
  (function (Language) {
@@ -2189,6 +2190,7 @@ var are_you_sure_you_want_to_delete_the_article = "정말로 기사를 삭제하
2189
2190
  var yes = "예";
2190
2191
  var no = "아니요";
2191
2192
  var cancel = "취소";
2193
+ var remove = "제거하다";
2192
2194
  var confirmation = "확인";
2193
2195
  var student_name = "학생 이름";
2194
2196
  var full_pool_time = "전체풀이시간";
@@ -2798,6 +2800,7 @@ var my_classes = "내 수업";
2798
2800
  var choose = "선택하다";
2799
2801
  var additional_duration = "진행중인 시험 시간 추가하기";
2800
2802
  var enter_textbook_name_to_search = "검색할 교재명을 입력하세요";
2803
+ var enter_teacher_name_to_search = "선생님 이름을 입력하여 검색하세요";
2801
2804
  var select_class_placeholder = "수업을 선택하세요...";
2802
2805
  var user_name = "유저 이름";
2803
2806
  var vulnerable_detail = "다른 학생들의 정답률은 높은데, 나는 정답을 맞추지 못한 문제들입니다.";
@@ -2914,6 +2917,8 @@ var view_records = "기록열람";
2914
2917
  var delete_action = "삭제";
2915
2918
  var edit_action = "수정";
2916
2919
  var view_action = "열람";
2920
+ var update_shared_action = "업데이트 권한";
2921
+ var share_action = "공유하다";
2917
2922
  var de_select = "선택 해제";
2918
2923
  var select_output = "선택 출력";
2919
2924
  var print_pdf = "PDF 인쇄";
@@ -2947,6 +2952,15 @@ var manage_users = "사용자 관리";
2947
2952
  var manage_classes = "수업 관리";
2948
2953
  var manage_notifications = "알림 관리";
2949
2954
  var late = "늦은";
2955
+ var authority = "권한";
2956
+ var share_textbook = "교과서 공유하기";
2957
+ var notify_share_textbook = {
2958
+ share_success: "교과서를 성공적으로 공유했습니다!",
2959
+ share_fail: "교과서도 없고 선생님도 없어요!",
2960
+ update_success: "공유 교과서가 성공적으로 업데이트되었습니다!",
2961
+ update_fail: "업데이트 실패!"
2962
+ };
2963
+ var academyadminteacher = "아카데미 관리자/선생님";
2950
2964
  var total_student = "총 학생 수";
2951
2965
  var total_teacher = "총 교사 수";
2952
2966
  var total_exam = "총 시험 수";
@@ -3004,6 +3018,7 @@ var lang_ko = {
3004
3018
  yes: yes,
3005
3019
  no: no,
3006
3020
  cancel: cancel,
3021
+ remove: remove,
3007
3022
  confirmation: confirmation,
3008
3023
  student_name: student_name,
3009
3024
  full_pool_time: full_pool_time,
@@ -3605,6 +3620,7 @@ var lang_ko = {
3605
3620
  choose: choose,
3606
3621
  additional_duration: additional_duration,
3607
3622
  enter_textbook_name_to_search: enter_textbook_name_to_search,
3623
+ enter_teacher_name_to_search: enter_teacher_name_to_search,
3608
3624
  "type_at_least_{number}_characters_to_search": "검색하려면 최소 {{ number }}자를 입력하세요",
3609
3625
  select_class_placeholder: select_class_placeholder,
3610
3626
  user_name: user_name,
@@ -3720,6 +3736,8 @@ var lang_ko = {
3720
3736
  delete_action: delete_action,
3721
3737
  edit_action: edit_action,
3722
3738
  view_action: view_action,
3739
+ update_shared_action: update_shared_action,
3740
+ share_action: share_action,
3723
3741
  de_select: de_select,
3724
3742
  select_output: select_output,
3725
3743
  print_pdf: print_pdf,
@@ -3753,6 +3771,10 @@ var lang_ko = {
3753
3771
  manage_classes: manage_classes,
3754
3772
  manage_notifications: manage_notifications,
3755
3773
  late: late,
3774
+ authority: authority,
3775
+ share_textbook: share_textbook,
3776
+ notify_share_textbook: notify_share_textbook,
3777
+ academyadminteacher: academyadminteacher,
3756
3778
  total_student: total_student,
3757
3779
  total_teacher: total_teacher,
3758
3780
  total_exam: total_exam,
@@ -3809,6 +3831,7 @@ var are_you_sure_you_want_to_delete_the_article$1 = "Are you sure you want to de
3809
3831
  var yes$1 = "Yes";
3810
3832
  var no$1 = "No";
3811
3833
  var cancel$1 = "Cancel";
3834
+ var remove$1 = "Remove";
3812
3835
  var confirmation$1 = "Confirmation";
3813
3836
  var student_name$1 = "Student name";
3814
3837
  var full_pool_time$1 = "Full pool time";
@@ -4071,6 +4094,7 @@ var parent_name$1 = "Parent name";
4071
4094
  var users$1 = "Users";
4072
4095
  var new_user$1 = "New user";
4073
4096
  var academy_admin$1 = "Academy Admin";
4097
+ var academy_admin_teacher = "Academy Admin / Teacher";
4074
4098
  var super_admin$1 = "Super Admin";
4075
4099
  var switch_academy_admin$1 = "Switch Academy Admin";
4076
4100
  var switch_academy$1 = "Switch Academy";
@@ -4419,6 +4443,7 @@ var my_classes$1 = "My Classes";
4419
4443
  var choose$1 = "Choose";
4420
4444
  var additional_duration$1 = "Additional duration";
4421
4445
  var enter_textbook_name_to_search$1 = "Enter textbook name to search";
4446
+ var enter_teacher_name_to_search$1 = "Enter teacher name to search";
4422
4447
  var select_class_placeholder$1 = "Select class...";
4423
4448
  var user_name$1 = "User Name";
4424
4449
  var vulnerable_detail$1 = "Other students had a high percentage of correct answers, but I could not answer these questions correctly.";
@@ -4535,6 +4560,8 @@ var view_records$1 = "View records";
4535
4560
  var delete_action$1 = "Delete";
4536
4561
  var edit_action$1 = "Edit";
4537
4562
  var view_action$1 = "View";
4563
+ var share_action$1 = "Share";
4564
+ var update_shared_action$1 = "Update Authority";
4538
4565
  var de_select$1 = "Deselect";
4539
4566
  var select_output$1 = "Select";
4540
4567
  var print_pdf$1 = "Print PDF";
@@ -4568,6 +4595,15 @@ var manage_users$1 = "Manage users";
4568
4595
  var manage_classes$1 = "Manage classes";
4569
4596
  var manage_notifications$1 = "Manage notifications";
4570
4597
  var late$1 = "Late";
4598
+ var authority$1 = "Authority";
4599
+ var share_textbook$1 = "Share textbook";
4600
+ var notify_share_textbook$1 = {
4601
+ share_success: "Share textbook successfully!",
4602
+ share_fail: "Textbook or teacher not exists!",
4603
+ update_success: "Update shared textbook successfully!",
4604
+ update_fail: "Update fail!"
4605
+ };
4606
+ var academyadminteacher$1 = "AcademyAdmin / Teacher";
4571
4607
  var total_student$1 = "Total Student";
4572
4608
  var total_teacher$1 = "Total Teacher";
4573
4609
  var total_exam$1 = "Total Exam";
@@ -4625,6 +4661,7 @@ var lang_en = {
4625
4661
  yes: yes$1,
4626
4662
  no: no$1,
4627
4663
  cancel: cancel$1,
4664
+ remove: remove$1,
4628
4665
  confirmation: confirmation$1,
4629
4666
  student_name: student_name$1,
4630
4667
  full_pool_time: full_pool_time$1,
@@ -4884,6 +4921,7 @@ var lang_en = {
4884
4921
  users: users$1,
4885
4922
  new_user: new_user$1,
4886
4923
  academy_admin: academy_admin$1,
4924
+ academy_admin_teacher: academy_admin_teacher,
4887
4925
  super_admin: super_admin$1,
4888
4926
  switch_academy_admin: switch_academy_admin$1,
4889
4927
  switch_academy: switch_academy$1,
@@ -5227,6 +5265,7 @@ var lang_en = {
5227
5265
  choose: choose$1,
5228
5266
  additional_duration: additional_duration$1,
5229
5267
  enter_textbook_name_to_search: enter_textbook_name_to_search$1,
5268
+ enter_teacher_name_to_search: enter_teacher_name_to_search$1,
5230
5269
  "type_at_least_{number}_characters_to_search": "Type at least {{ number }} characters to search",
5231
5270
  select_class_placeholder: select_class_placeholder$1,
5232
5271
  user_name: user_name$1,
@@ -5342,6 +5381,8 @@ var lang_en = {
5342
5381
  delete_action: delete_action$1,
5343
5382
  edit_action: edit_action$1,
5344
5383
  view_action: view_action$1,
5384
+ share_action: share_action$1,
5385
+ update_shared_action: update_shared_action$1,
5345
5386
  de_select: de_select$1,
5346
5387
  select_output: select_output$1,
5347
5388
  print_pdf: print_pdf$1,
@@ -5375,6 +5416,10 @@ var lang_en = {
5375
5416
  manage_classes: manage_classes$1,
5376
5417
  manage_notifications: manage_notifications$1,
5377
5418
  late: late$1,
5419
+ authority: authority$1,
5420
+ share_textbook: share_textbook$1,
5421
+ notify_share_textbook: notify_share_textbook$1,
5422
+ academyadminteacher: academyadminteacher$1,
5378
5423
  total_student: total_student$1,
5379
5424
  total_teacher: total_teacher$1,
5380
5425
  total_exam: total_exam$1,
@@ -6955,11 +7000,13 @@ var formatRole = function formatRole(roles, t) {
6955
7000
  if (roles.includes(Role.AcademyAdmin)) return t("academy_admin");
6956
7001
  if (roles.includes(Role.Teacher)) return t("teacher");
6957
7002
  if (roles.includes(Role.Student)) return t("student");
7003
+ if (roles.includes(Role.AcademyAdminTeacher)) return t("academy_admin_teacher");
6958
7004
  return "";
6959
7005
  };
6960
7006
  var getRole = function getRole(roles) {
6961
7007
  if (roles.includes(Role.Admin)) return Role.Admin;
6962
7008
  if (roles.includes(Role.AcademyAdmin)) return Role.AcademyAdmin;
7009
+ if (roles.includes(Role.AcademyAdminTeacher)) return Role.AcademyAdminTeacher;
6963
7010
  if (roles.includes(Role.Teacher)) return Role.Teacher;
6964
7011
  if (roles.includes(Role.Student)) return Role.Student;
6965
7012
  return null;
@@ -8566,6 +8613,12 @@ var updateTextbookApi = function updateTextbookApi(textbookId, data) {
8566
8613
  var deleteTextbookApi = function deleteTextbookApi(textbookId) {
8567
8614
  return api["delete"](TEXTBOOK_URL + "/" + textbookId);
8568
8615
  };
8616
+ var shareTextbookApi = function shareTextbookApi(textbookId, data) {
8617
+ return api.post(TEXTBOOK_URL + "/" + textbookId + "/shared-textbook", data);
8618
+ };
8619
+ var updateSharedTextbookApi = function updateSharedTextbookApi(textbookId, data) {
8620
+ return api.put(TEXTBOOK_URL + "/" + textbookId + "/shared-textbook", data);
8621
+ };
8569
8622
 
8570
8623
  var ExamStatus$1;
8571
8624
  (function (ExamStatus) {
@@ -8619,6 +8672,13 @@ var TextbookSortBy;
8619
8672
  TextbookSortBy["Title"] = "Name";
8620
8673
  TextbookSortBy["SubjectName"] = "Subject.Name";
8621
8674
  })(TextbookSortBy || (TextbookSortBy = {}));
8675
+ var TeacherSortBy;
8676
+ (function (TeacherSortBy) {
8677
+ TeacherSortBy["CreatedAt"] = "CreatedAt";
8678
+ TeacherSortBy["Name"] = "UserProfile.FullName";
8679
+ TeacherSortBy["Email"] = "Email";
8680
+ TeacherSortBy["PhoneNumber"] = "UserProfile.PhoneNumber";
8681
+ })(TeacherSortBy || (TeacherSortBy = {}));
8622
8682
  var ExamType;
8623
8683
  (function (ExamType) {
8624
8684
  ExamType["Normal"] = "Normal";
@@ -8632,6 +8692,12 @@ var ExamStatus$2;
8632
8692
  ExamStatus["Completed"] = "Completed";
8633
8693
  })(ExamStatus$2 || (ExamStatus$2 = {}));
8634
8694
 
8695
+ var DefaultTeacherQuery = {
8696
+ currentPage: 1,
8697
+ pageSize: 50,
8698
+ sortColumnDirection: OrderType.DESC,
8699
+ sortColumnName: TeacherSortBy.Name
8700
+ };
8635
8701
  var TEXTBOOK_HEADERS = [{
8636
8702
  title: "#"
8637
8703
  }, {
@@ -8646,7 +8712,26 @@ var TEXTBOOK_HEADERS = [{
8646
8712
  }, {
8647
8713
  title: "total_chapters"
8648
8714
  }, {
8649
- title: ["edit_action", "view_action", "delete_action"]
8715
+ title: "authority"
8716
+ }, {
8717
+ title: ["edit_action", "view_action", "share_action", "update_shared_action", "delete_action"]
8718
+ }];
8719
+ var TEACHER_ACADEMY_HEADERS = [{
8720
+ title: ""
8721
+ }, {
8722
+ title: "#"
8723
+ }, {
8724
+ title: "full_name",
8725
+ sortKey: TeacherSortBy.Name
8726
+ }, {
8727
+ title: "email",
8728
+ sortKey: TeacherSortBy.Email
8729
+ }, {
8730
+ title: "phone_number",
8731
+ sortKey: TeacherSortBy.PhoneNumber
8732
+ }, {
8733
+ title: "created_at",
8734
+ sortKey: TeacherSortBy.CreatedAt
8650
8735
  }];
8651
8736
  var DEFAULT_ANSWER_COUNT = 5;
8652
8737
  var DEFAULT_EXAM_REQUEST = {
@@ -8663,6 +8748,7 @@ var DEFAULT_EXAM_REQUEST = {
8663
8748
  };
8664
8749
  var TEXTBOOK_PAGE_TITLE = "textbooks";
8665
8750
  var TEXT_BOOK_SEARCH_PLACEHOLDER = "enter_textbook_name_to_search";
8751
+ var TEACHER_SEARCH_PLACEHOLDER = "enter_teacher_name_to_search";
8666
8752
  var TextbookDefaultQuery = {
8667
8753
  pageSize: 12,
8668
8754
  currentPage: 1,
@@ -10929,9 +11015,7 @@ var useTextbookList = function useTextbookList(props) {
10929
11015
  });
10930
11016
  };
10931
11017
  var handleCreateTextbook = function handleCreateTextbook() {
10932
- navigate(textbookUrl + "/create", {
10933
- replace: true
10934
- });
11018
+ pushTo(navigate, textbookUrl + "/create");
10935
11019
  };
10936
11020
  var toggleConfirmDialog = function toggleConfirmDialog() {
10937
11021
  handleChangeSelectedItem(undefined);
@@ -10966,6 +11050,7 @@ var useTextbookList = function useTextbookList(props) {
10966
11050
  return {
10967
11051
  filter: filter,
10968
11052
  textSearchRef: textSearchRef,
11053
+ getData: getData,
10969
11054
  paging: paging,
10970
11055
  textbooks: textbooks,
10971
11056
  selectedTextbook: selectedTextbook,
@@ -11087,17 +11172,361 @@ var SearchInput = function SearchInput(_ref) {
11087
11172
  }));
11088
11173
  };
11089
11174
 
11175
+ var ShareToTeacherDialog = function ShareToTeacherDialog(_ref) {
11176
+ var open = _ref.open,
11177
+ selectedShare = _ref.selectedShare,
11178
+ textSearchShareRef = _ref.textSearchShareRef,
11179
+ handleChangeSearchTextShare = _ref.handleChangeSearchTextShare,
11180
+ numSelectedShare = _ref.numSelectedShare,
11181
+ isCheckAllShare = _ref.isCheckAllShare,
11182
+ handleSelectAllClickShare = _ref.handleSelectAllClickShare,
11183
+ teachers = _ref.teachers,
11184
+ handleSortShare = _ref.handleSortShare,
11185
+ filterShare = _ref.filterShare,
11186
+ pagingShare = _ref.pagingShare,
11187
+ handleChangePageShare = _ref.handleChangePageShare,
11188
+ handleShareModel = _ref.handleShareModel,
11189
+ isSelectedShare = _ref.isSelectedShare,
11190
+ handleCloseShareDialog = _ref.handleCloseShareDialog,
11191
+ handleClickCheckboxShare = _ref.handleClickCheckboxShare,
11192
+ selectedTeacher = _ref.selectedTeacher,
11193
+ dataId = _ref.dataId,
11194
+ isUpdate = _ref.isUpdate;
11195
+ var _useTranslation = useTranslation(),
11196
+ t = _useTranslation.t;
11197
+ var theme = useTheme();
11198
+ return React__default.createElement(Dialog, {
11199
+ open: open,
11200
+ maxWidth: "md"
11201
+ }, React__default.createElement(DialogContent, {
11202
+ sx: {
11203
+ overflowY: "unset"
11204
+ }
11205
+ }, React__default.createElement(Grid, {
11206
+ container: true,
11207
+ spacing: 3,
11208
+ sx: {
11209
+ position: "relative",
11210
+ zIndex: 999999
11211
+ }
11212
+ }, selectedShare && React__default.createElement(Grid, {
11213
+ item: true,
11214
+ xs: 6,
11215
+ className: "d-flex mb-3"
11216
+ }, React__default.createElement(SearchInput, {
11217
+ placeholder: t(TEACHER_SEARCH_PLACEHOLDER),
11218
+ textSearchRef: textSearchShareRef,
11219
+ onChange: handleChangeSearchTextShare
11220
+ })), React__default.createElement(Grid, {
11221
+ item: true,
11222
+ xs: 12
11223
+ }, React__default.createElement(TableContainer, {
11224
+ sx: {
11225
+ maxHeight: "50vh"
11226
+ }
11227
+ }, React__default.createElement(Table, {
11228
+ stickyHeader: true
11229
+ }, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, selectedShare && React__default.createElement(TableCell, {
11230
+ padding: "checkbox"
11231
+ }, React__default.createElement(Checkbox, {
11232
+ color: "primary",
11233
+ checked: numSelectedShare > 0 && isCheckAllShare(teachers.length),
11234
+ onChange: handleSelectAllClickShare
11235
+ })), TEACHER_ACADEMY_HEADERS.map(function (i, index) {
11236
+ return selectedShare && index === 0 ? null : React__default.createElement(TableCell, {
11237
+ key: index,
11238
+ onClick: !!i.sortKey ? function () {
11239
+ return handleSortShare(i.sortKey);
11240
+ } : undefined,
11241
+ className: "" + (!!i.sortKey && "pointer")
11242
+ }, React__default.createElement("div", {
11243
+ className: "d-flex justify-content-between align-items-center text-nowrap"
11244
+ }, t(i.title), !!i.sortKey && selectedShare && React__default.createElement(SortIcon, {
11245
+ isAscending: filterShare.sortColumnName !== i.sortKey ? undefined : filterShare.sortColumnDirection === OrderType.ASC
11246
+ })));
11247
+ }))), React__default.createElement(TableBody, null, selectedTeacher ? React__default.createElement(TableRow, null, React__default.createElement(TableCell, null, selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.teacherName), React__default.createElement(TableCell, null, selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.teacherEmail), React__default.createElement(TableCell, null, selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.phoneNumber), React__default.createElement(TableCell, null, utcToLocalTime(selectedTeacher === null || selectedTeacher === void 0 ? void 0 : selectedTeacher.createdAt, t("date_time_format")))) : teachers.map(function (i, index) {
11248
+ var isItemSelected = isSelectedShare(i.id);
11249
+ return React__default.createElement(TableRow, {
11250
+ key: i.id
11251
+ }, React__default.createElement(TableCell, {
11252
+ padding: "checkbox"
11253
+ }, React__default.createElement(Checkbox, {
11254
+ onClick: function onClick() {
11255
+ return handleClickCheckboxShare(i.id);
11256
+ },
11257
+ color: "primary",
11258
+ checked: isItemSelected
11259
+ })), React__default.createElement(TableCell, null, (pagingShare.page - 1) * pagingShare.limit + index + 1), React__default.createElement(TableCell, null, i.teacherName), React__default.createElement(TableCell, null, i.teacherEmail), React__default.createElement(TableCell, null, i.phoneNumber), React__default.createElement(TableCell, null, utcToLocalTime(i.createdAt, t("date_time_format"))));
11260
+ }), !selectedShare && !teachers.length && React__default.createElement(TableRow, null, React__default.createElement(TableCell, {
11261
+ colSpan: 12,
11262
+ className: "text-center text-muted"
11263
+ }, t("no_data")))))), React__default.createElement("div", {
11264
+ className: "d-flex justify-content-end mt-4"
11265
+ }, !!pagingShare.totalPages && !selectedShare && React__default.createElement(Pagination, {
11266
+ count: pagingShare.totalPages,
11267
+ page: pagingShare.page,
11268
+ onChange: handleChangePageShare
11269
+ }))))), React__default.createElement(DialogActions, null, React__default.createElement(Stack, {
11270
+ direction: "row",
11271
+ spacing: 2,
11272
+ p: 2,
11273
+ pt: 0,
11274
+ justifyContent: "end"
11275
+ }, React__default.createElement(Button, {
11276
+ color: "primary",
11277
+ variant: "contained",
11278
+ type: "submit",
11279
+ disabled: selectedShare.length === 0 && numSelectedShare === 0,
11280
+ onClick: function onClick() {
11281
+ return handleShareModel(selectedShare, dataId);
11282
+ }
11283
+ }, !isUpdate ? t("submit") : t("remove")), React__default.createElement(Button, {
11284
+ sx: {
11285
+ bgcolor: theme.palette.grey[700]
11286
+ },
11287
+ color: "secondary",
11288
+ variant: "contained",
11289
+ onClick: handleCloseShareDialog
11290
+ }, t("cancel")))));
11291
+ };
11292
+
11293
+ var TEACHER_URL = BASE_URL + "/api/teacher";
11294
+ var getTeacherListApi = function getTeacherListApi(query) {
11295
+ return api.get("" + TEACHER_URL, {
11296
+ params: query
11297
+ });
11298
+ };
11299
+
11300
+ var useTextbookShare = function useTextbookShare(props) {
11301
+ var getData = props.getData;
11302
+ var _useList = useList(function (search) {
11303
+ return getTeacherListApi(search);
11304
+ }, DefaultTeacherQuery),
11305
+ filterShare = _useList.filter,
11306
+ textSearchShareRef = _useList.textSearchRef,
11307
+ pagingShare = _useList.paging,
11308
+ selectedTeacher = _useList.selectedItem,
11309
+ teachers = _useList.data,
11310
+ handleSortShare = _useList.handleSort,
11311
+ handleChangeSearchTextShare = _useList.handleChangeSearchText,
11312
+ handleChangePageShare = _useList.handleChangePage;
11313
+ var _useState = useState([]),
11314
+ selectedShare = _useState[0],
11315
+ setSelectedShare = _useState[1];
11316
+ var _useState2 = useState([]),
11317
+ notShared = _useState2[0],
11318
+ setNotShared = _useState2[1];
11319
+ var _useState3 = useState([]),
11320
+ shared = _useState3[0],
11321
+ setShared = _useState3[1];
11322
+ var _useState4 = useState(false),
11323
+ isUpdate = _useState4[0],
11324
+ setIsUpdate = _useState4[1];
11325
+ var _useState5 = useState(),
11326
+ currentModel = _useState5[0],
11327
+ setCurrentModel = _useState5[1];
11328
+ var isSelectedShare = function isSelectedShare(id) {
11329
+ return selectedShare.indexOf(id) !== -1;
11330
+ };
11331
+ var _useState6 = useState(false),
11332
+ openShareDialog = _useState6[0],
11333
+ setOpenShareDialog = _useState6[1];
11334
+ var _useTranslation = useTranslation(),
11335
+ t = _useTranslation.t;
11336
+ var dispatch = useDispatch();
11337
+ var infoUser = useSelector(function (state) {
11338
+ var _state$common;
11339
+ return (state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user) || {};
11340
+ });
11341
+ useEffect(function () {
11342
+ if (!isUpdate) {
11343
+ filterTeacherNotShared(currentModel);
11344
+ } else {
11345
+ filterTeacherShared(currentModel);
11346
+ }
11347
+ }, [teachers, isUpdate]);
11348
+ var handleOpenShareDialog = function handleOpenShareDialog(textbook) {
11349
+ setIsUpdate(false);
11350
+ setOpenShareDialog(true);
11351
+ setCurrentModel(textbook);
11352
+ filterTeacherNotShared(textbook);
11353
+ };
11354
+ var filterTeacherNotShared = function filterTeacherNotShared(textbook) {
11355
+ var sharedTeacherTextbook = textbook === null || textbook === void 0 ? void 0 : textbook.sharedUsers;
11356
+ var teacherNotShared = teachers.filter(function (teacher) {
11357
+ return !(sharedTeacherTextbook !== null && sharedTeacherTextbook !== void 0 && sharedTeacherTextbook.includes(teacher.teacherEmail.trim().toUpperCase())) && teacher.teacherEmail.trim().toUpperCase() != (textbook === null || textbook === void 0 ? void 0 : textbook.createdBy.email.trim().toUpperCase());
11358
+ });
11359
+ setNotShared(teacherNotShared);
11360
+ };
11361
+ var filterTeacherShared = function filterTeacherShared(textbook) {
11362
+ var sharedTeacherTextbook = textbook === null || textbook === void 0 ? void 0 : textbook.sharedUsers;
11363
+ var teacherShared = teachers.filter(function (teacher) {
11364
+ return (sharedTeacherTextbook === null || sharedTeacherTextbook === void 0 ? void 0 : sharedTeacherTextbook.includes(teacher.teacherEmail.trim().toUpperCase())) && teacher.teacherEmail.trim().toUpperCase() != (textbook === null || textbook === void 0 ? void 0 : textbook.createdBy.email.trim().toUpperCase());
11365
+ });
11366
+ setShared(teacherShared);
11367
+ };
11368
+ var handleCloseShareDialog = function handleCloseShareDialog() {
11369
+ setOpenShareDialog(false);
11370
+ setSelectedShare([]);
11371
+ };
11372
+ var handleOpenUpdateShareDialog = function handleOpenUpdateShareDialog(textbook) {
11373
+ setIsUpdate(true);
11374
+ setOpenShareDialog(true);
11375
+ setCurrentModel(textbook);
11376
+ filterTeacherShared(textbook);
11377
+ };
11378
+ var handleSelectAllClickShare = function handleSelectAllClickShare(event) {
11379
+ var newSelected = isUpdate ? shared.map(function (n) {
11380
+ return n.id;
11381
+ }) : notShared.map(function (n) {
11382
+ return n.id;
11383
+ });
11384
+ if (event.target.checked) {
11385
+ setSelectedShare(function (prev) {
11386
+ return _.uniq([].concat(prev, newSelected));
11387
+ });
11388
+ return;
11389
+ }
11390
+ setSelectedShare(_.difference(selectedShare, newSelected));
11391
+ };
11392
+ var isCheckAllShare = function isCheckAllShare(userLength) {
11393
+ var newSelected = isUpdate ? shared.map(function (n) {
11394
+ return n.id;
11395
+ }) : notShared.map(function (n) {
11396
+ return n.id;
11397
+ });
11398
+ var checkLength = _.intersection(selectedShare, newSelected).length;
11399
+ return checkLength === userLength;
11400
+ };
11401
+ var handleClickCheckboxShare = function handleClickCheckboxShare(id) {
11402
+ var selectedIndex = selectedShare.indexOf(id);
11403
+ var newSelected = [];
11404
+ if (selectedIndex === -1) {
11405
+ newSelected = newSelected.concat(selectedShare, id);
11406
+ } else if (selectedIndex === 0) {
11407
+ newSelected = newSelected.concat(selectedShare.slice(1));
11408
+ } else if (selectedIndex === selectedShare.length - 1) {
11409
+ newSelected = newSelected.concat(selectedShare.slice(0, -1));
11410
+ } else if (selectedIndex > 0) {
11411
+ newSelected = newSelected.concat(selectedShare.slice(0, selectedIndex), selectedShare.slice(selectedIndex + 1));
11412
+ }
11413
+ setSelectedShare(newSelected);
11414
+ };
11415
+ var updateTeacherNotShared = function updateTeacherNotShared(teacherIds) {
11416
+ var removeTeachers = notShared.filter(function (teacher) {
11417
+ return !teacherIds.includes(teacher.id);
11418
+ });
11419
+ setNotShared(removeTeachers);
11420
+ };
11421
+ var updateTeacherShared = function updateTeacherShared(teacherIds) {
11422
+ var existsTeachers = shared.filter(function (teacher) {
11423
+ return !teacherIds.includes(teacher.id);
11424
+ });
11425
+ setShared(existsTeachers);
11426
+ };
11427
+ var handleDisableShare = function handleDisableShare(textbook) {
11428
+ return !textbook.isShared || textbook.sharedUsers.map(function (item) {
11429
+ return item.trim();
11430
+ }).filter(function (item) {
11431
+ return item !== "";
11432
+ }).includes(infoUser.email || "");
11433
+ };
11434
+ var handleShareTextbook = function handleShareTextbook(teacherIds, textbookId) {
11435
+ try {
11436
+ var _temp2 = function _temp2() {
11437
+ dispatch(setLoading(false));
11438
+ setSelectedShare([]);
11439
+ setOpenShareDialog(false);
11440
+ };
11441
+ dispatch(setLoading(true));
11442
+ var _temp = _catch(function () {
11443
+ return Promise.resolve(shareTextbookApi(textbookId, {
11444
+ teacherIds: teacherIds
11445
+ })).then(function () {
11446
+ updateTeacherNotShared(teacherIds);
11447
+ setSelectedShare([]);
11448
+ return Promise.resolve(getData(false)).then(function () {
11449
+ toast.success(t("notify_share_textbook.share_success"));
11450
+ });
11451
+ });
11452
+ }, function (error) {
11453
+ toast.error(getErrorMessage(t, error, t("notify_share_textbook.share_fail")));
11454
+ });
11455
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
11456
+ } catch (e) {
11457
+ return Promise.reject(e);
11458
+ }
11459
+ };
11460
+ var handleUpdateSharedTextbook = function handleUpdateSharedTextbook(teacherIds, textbookId) {
11461
+ try {
11462
+ var _temp4 = function _temp4() {
11463
+ dispatch(setLoading(false));
11464
+ setSelectedShare([]);
11465
+ setOpenShareDialog(false);
11466
+ };
11467
+ dispatch(setLoading(true));
11468
+ var _temp3 = _catch(function () {
11469
+ return Promise.resolve(updateSharedTextbookApi(textbookId, {
11470
+ teacherIds: teacherIds
11471
+ })).then(function () {
11472
+ updateTeacherShared(teacherIds);
11473
+ setSelectedShare([]);
11474
+ return Promise.resolve(getData(false)).then(function () {
11475
+ toast.success(t("notify_share_textbook.update_success"));
11476
+ });
11477
+ });
11478
+ }, function (error) {
11479
+ toast.error(getErrorMessage(t, error, t("notify_share_textbook.update_fail")));
11480
+ });
11481
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
11482
+ } catch (e) {
11483
+ return Promise.reject(e);
11484
+ }
11485
+ };
11486
+ return {
11487
+ filterShare: filterShare,
11488
+ textSearchShareRef: textSearchShareRef,
11489
+ pagingShare: pagingShare,
11490
+ selectedShare: selectedShare,
11491
+ handleSortShare: handleSortShare,
11492
+ handleChangeSearchTextShare: handleChangeSearchTextShare,
11493
+ handleChangePageShare: handleChangePageShare,
11494
+ numSelectedShare: selectedShare.length,
11495
+ handleShareTextbook: handleShareTextbook,
11496
+ isSelectedShare: isSelectedShare,
11497
+ handleOpenShareDialog: handleOpenShareDialog,
11498
+ handleCloseShareDialog: handleCloseShareDialog,
11499
+ openShareDialog: openShareDialog,
11500
+ isCheckAllShare: isCheckAllShare,
11501
+ handleClickCheckboxShare: handleClickCheckboxShare,
11502
+ handleSelectAllClickShare: handleSelectAllClickShare,
11503
+ notShared: notShared,
11504
+ shared: shared,
11505
+ selectedTeacher: selectedTeacher,
11506
+ handleOpenUpdateShareDialog: handleOpenUpdateShareDialog,
11507
+ isUpdate: isUpdate,
11508
+ handleUpdateSharedTextbook: handleUpdateSharedTextbook,
11509
+ handleDisableShare: handleDisableShare,
11510
+ currentModel: currentModel
11511
+ };
11512
+ };
11513
+
11090
11514
  var TextbookList = function TextbookList(props) {
11091
11515
  var _useTranslation = useTranslation(),
11092
11516
  t = _useTranslation.t;
11517
+ var isAdmin = useSelector(function (state) {
11518
+ var _state$common, _state$common$user, _state$common$user$ro;
11519
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : (_state$common$user$ro = _state$common$user.roles) === null || _state$common$user$ro === void 0 ? void 0 : _state$common$user$ro.includes(Role.Admin);
11520
+ });
11093
11521
  var _useTextbookList = useTextbookList(props),
11094
11522
  filter = _useTextbookList.filter,
11095
11523
  textbooks = _useTextbookList.textbooks,
11096
11524
  paging = _useTextbookList.paging,
11525
+ getData = _useTextbookList.getData,
11097
11526
  textSearchRef = _useTextbookList.textSearchRef,
11098
- selectedTextbook = _useTextbookList.selectedTextbook,
11099
11527
  handleChangeSearchText = _useTextbookList.handleChangeSearchText,
11100
11528
  handleSort = _useTextbookList.handleSort,
11529
+ selectedTextbook = _useTextbookList.selectedTextbook,
11101
11530
  handleChangePage = _useTextbookList.handleChangePage,
11102
11531
  calcOrderNumber = _useTextbookList.calcOrderNumber,
11103
11532
  handleViewTextbook = _useTextbookList.handleViewTextbook,
@@ -11106,6 +11535,33 @@ var TextbookList = function TextbookList(props) {
11106
11535
  toggleConfirmDialog = _useTextbookList.toggleConfirmDialog,
11107
11536
  handleDeleteTextbook = _useTextbookList.handleDeleteTextbook,
11108
11537
  handleSelectDeleteTextbook = _useTextbookList.handleSelectDeleteTextbook;
11538
+ var _useTextbookShare = useTextbookShare(_extends({}, props, {
11539
+ getData: getData
11540
+ })),
11541
+ filterShare = _useTextbookShare.filterShare,
11542
+ textSearchShareRef = _useTextbookShare.textSearchShareRef,
11543
+ pagingShare = _useTextbookShare.pagingShare,
11544
+ selectedShare = _useTextbookShare.selectedShare,
11545
+ handleSortShare = _useTextbookShare.handleSortShare,
11546
+ handleChangeSearchTextShare = _useTextbookShare.handleChangeSearchTextShare,
11547
+ handleChangePageShare = _useTextbookShare.handleChangePageShare,
11548
+ numSelectedShare = _useTextbookShare.numSelectedShare,
11549
+ handleShareTextbook = _useTextbookShare.handleShareTextbook,
11550
+ isSelectedShare = _useTextbookShare.isSelectedShare,
11551
+ handleOpenShareDialog = _useTextbookShare.handleOpenShareDialog,
11552
+ handleCloseShareDialog = _useTextbookShare.handleCloseShareDialog,
11553
+ openShareDialog = _useTextbookShare.openShareDialog,
11554
+ isCheckAllShare = _useTextbookShare.isCheckAllShare,
11555
+ handleClickCheckboxShare = _useTextbookShare.handleClickCheckboxShare,
11556
+ handleSelectAllClickShare = _useTextbookShare.handleSelectAllClickShare,
11557
+ notShared = _useTextbookShare.notShared,
11558
+ shared = _useTextbookShare.shared,
11559
+ selectedTeacher = _useTextbookShare.selectedTeacher,
11560
+ handleOpenUpdateShareDialog = _useTextbookShare.handleOpenUpdateShareDialog,
11561
+ isUpdate = _useTextbookShare.isUpdate,
11562
+ handleUpdateSharedTextbook = _useTextbookShare.handleUpdateSharedTextbook,
11563
+ handleDisableShare = _useTextbookShare.handleDisableShare,
11564
+ currentModel = _useTextbookShare.currentModel;
11109
11565
  return React__default.createElement(LayoutList, {
11110
11566
  title: t(TEXTBOOK_PAGE_TITLE)
11111
11567
  }, React__default.createElement(Grid, {
@@ -11121,14 +11577,21 @@ var TextbookList = function TextbookList(props) {
11121
11577
  item: true,
11122
11578
  xs: 6
11123
11579
  }, React__default.createElement(Stack, {
11124
- alignItems: "end"
11580
+ alignItems: "end",
11581
+ direction: "row",
11582
+ sx: {
11583
+ justifyContent: "flex-end"
11584
+ },
11585
+ spacing: 2
11125
11586
  }, React__default.createElement(Button, {
11126
11587
  startIcon: React__default.createElement(FaPlus, {
11127
11588
  size: 12
11128
11589
  }),
11129
11590
  variant: "contained",
11130
11591
  color: "primary",
11131
- onClick: handleCreateTextbook
11592
+ onClick: handleCreateTextbook,
11593
+ disabled: isAdmin,
11594
+ className: (!isAdmin ? "bg-success" : "bg-secondary") + " text-white"
11132
11595
  }, t("create_textbook")))), React__default.createElement(Grid, {
11133
11596
  item: true,
11134
11597
  xs: 12,
@@ -11140,7 +11603,11 @@ var TextbookList = function TextbookList(props) {
11140
11603
  }), React__default.createElement(TableBody, null, textbooks.map(function (i, index) {
11141
11604
  return React__default.createElement(TableRow, {
11142
11605
  key: i.id
11143
- }, React__default.createElement(TableCell, null, calcOrderNumber(index)), React__default.createElement(TableCell, null, i.name), React__default.createElement(TableCell, null, i.subject.name), React__default.createElement(TableCell, null, utcToLocalTime(i.createdAt, t("date_format"))), React__default.createElement(TableCell, null, i.totalChapters), React__default.createElement(TableCell, null, React__default.createElement(Stack, {
11606
+ }, React__default.createElement(TableCell, null, calcOrderNumber(index)), React__default.createElement(TableCell, null, i.name), React__default.createElement(TableCell, null, i.subject.name), React__default.createElement(TableCell, null, utcToLocalTime(i.createdAt, t("date_format"))), React__default.createElement(TableCell, null, i.totalChapters), React__default.createElement(TableCell, null, i.sharedUsers.map(function (email, index) {
11607
+ return index > 2 ? null : index === 2 ? React__default.createElement("div", null, "(+", i.sharedUsers.length - 2, ")") : React__default.createElement("div", {
11608
+ key: index
11609
+ }, email.toLowerCase());
11610
+ })), React__default.createElement(TableCell, null, React__default.createElement(Stack, {
11144
11611
  direction: "row",
11145
11612
  spacing: 1,
11146
11613
  alignItems: "center"
@@ -11161,9 +11628,25 @@ var TextbookList = function TextbookList(props) {
11161
11628
  }
11162
11629
  }, React__default.createElement(FaEye, {
11163
11630
  size: 12
11631
+ })), React__default.createElement(IconButton, {
11632
+ disabled: handleDisableShare(i) || isAdmin,
11633
+ className: (handleDisableShare(i) || isAdmin ? "bg-secondary" : "bg-info") + " text-white me-1",
11634
+ onClick: function onClick() {
11635
+ return handleOpenShareDialog(i);
11636
+ }
11637
+ }, React__default.createElement(FaShare, {
11638
+ size: 12
11639
+ })), React__default.createElement(IconButton, {
11640
+ disabled: handleDisableShare(i) || isAdmin,
11641
+ className: (handleDisableShare(i) || isAdmin ? "bg-secondary" : "bg-success") + " text-white me-1",
11642
+ onClick: function onClick() {
11643
+ return handleOpenUpdateShareDialog(i);
11644
+ }
11645
+ }, React__default.createElement(FaExchangeAlt, {
11646
+ size: 12
11164
11647
  })), React__default.createElement(IconButton, {
11165
11648
  color: "default",
11166
- className: (i.isCreatedByAdmin ? "bg-secondary" : "bg-danger") + " text-white",
11649
+ className: (i.isCreatedByAdmin ? "bg-secondary" : "bg-danger") + " text-white mr-1",
11167
11650
  onClick: function onClick() {
11168
11651
  return handleSelectDeleteTextbook(i);
11169
11652
  },
@@ -11184,6 +11667,26 @@ var TextbookList = function TextbookList(props) {
11184
11667
  onConfirm: handleDeleteTextbook,
11185
11668
  confirmText: selectedTextbook === null || selectedTextbook === void 0 ? void 0 : selectedTextbook.name,
11186
11669
  isDelete: true
11670
+ }), !!currentModel && React__default.createElement(ShareToTeacherDialog, {
11671
+ open: openShareDialog,
11672
+ selectedShare: selectedShare,
11673
+ textSearchShareRef: textSearchShareRef,
11674
+ handleChangeSearchTextShare: handleChangeSearchTextShare,
11675
+ numSelectedShare: numSelectedShare,
11676
+ isCheckAllShare: isCheckAllShare,
11677
+ handleSelectAllClickShare: handleSelectAllClickShare,
11678
+ teachers: !isUpdate ? notShared : shared,
11679
+ filterShare: filterShare,
11680
+ pagingShare: pagingShare,
11681
+ handleSortShare: handleSortShare,
11682
+ handleChangePageShare: handleChangePageShare,
11683
+ handleShareModel: !isUpdate ? handleShareTextbook : handleUpdateSharedTextbook,
11684
+ isSelectedShare: isSelectedShare,
11685
+ handleCloseShareDialog: handleCloseShareDialog,
11686
+ handleClickCheckboxShare: handleClickCheckboxShare,
11687
+ selectedTeacher: selectedTeacher,
11688
+ dataId: currentModel.id,
11689
+ isUpdate: isUpdate
11187
11690
  }));
11188
11691
  };
11189
11692
 
@@ -17668,11 +18171,11 @@ var DayOfWeek;
17668
18171
  DayOfWeek[DayOfWeek["Friday"] = 5] = "Friday";
17669
18172
  DayOfWeek[DayOfWeek["Saturday"] = 6] = "Saturday";
17670
18173
  })(DayOfWeek || (DayOfWeek = {}));
17671
- var TeacherSortBy;
18174
+ var TeacherSortBy$1;
17672
18175
  (function (TeacherSortBy) {
17673
18176
  TeacherSortBy["Name"] = "UserProfile.FullName";
17674
18177
  TeacherSortBy["Email"] = "UserProfile.Email";
17675
- })(TeacherSortBy || (TeacherSortBy = {}));
18178
+ })(TeacherSortBy$1 || (TeacherSortBy$1 = {}));
17676
18179
  var ClassStatus;
17677
18180
  (function (ClassStatus) {
17678
18181
  ClassStatus["Default"] = "Default";
@@ -17776,7 +18279,7 @@ var DefaultTeacherFilter = {
17776
18279
  currentPage: 1,
17777
18280
  pageSize: 50,
17778
18281
  sortColumnDirection: OrderBy$2.DESC,
17779
- sortColumnName: TeacherSortBy.Name,
18282
+ sortColumnName: TeacherSortBy$1.Name,
17780
18283
  textSearch: ""
17781
18284
  };
17782
18285
  var DEFAULT_CLASS_REQUEST = {
@@ -19424,9 +19927,9 @@ var useLessonClassList = function useLessonClassList(courseId) {
19424
19927
  };
19425
19928
  };
19426
19929
 
19427
- var TEACHER_URL = BASE_URL + "/api/teacher";
19428
- var getTeacherListApi = function getTeacherListApi(query) {
19429
- return api.get("" + TEACHER_URL, {
19930
+ var TEACHER_URL$1 = BASE_URL + "/api/teacher";
19931
+ var getTeacherListApi$1 = function getTeacherListApi(query) {
19932
+ return api.get("" + TEACHER_URL$1, {
19430
19933
  params: query
19431
19934
  });
19432
19935
  };
@@ -19447,7 +19950,7 @@ var useTeacherList = function useTeacherList() {
19447
19950
  var getListTeacher = function getListTeacher() {
19448
19951
  try {
19449
19952
  var _temp = _catch(function () {
19450
- return Promise.resolve(getTeacherListApi(teacherFilter)).then(function (res) {
19953
+ return Promise.resolve(getTeacherListApi$1(teacherFilter)).then(function (res) {
19451
19954
  var _res$data;
19452
19955
  setTeachers(((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || []);
19453
19956
  });
@@ -22654,5 +23157,5 @@ var ReleaseAlert = function ReleaseAlert() {
22654
23157
  }
22655
23158
  };
22656
23159
 
22657
- export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AnswerCountSelector, ArticleCategorySelector, ArticleGroupView, BASE_URL, ChatContainer, ChatItemType, types as ChatTypes, ClassDetail, ClassList, CommonDialog, ConfirmDialog, index$1 as CoreHooks, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, index as Enums, ExamDetailView, ExamEvent, ExamResultV2, Header, InputText, LANGUAGES, Language, LayoutContext, Loading, LoadingComponent, Login, LoginWithEmail, SignIn as LoginWithPassword, NotFound, NotificationDetail, NotificationList, PUSHER_CONFIG, PassCodeCheck, PrintExamResultView, PrintExamView2, QuestionCountSelector, RecentUserAction, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, ScoreSelector, SubjectSelector, index$2 as Textbook, TextbookViewDetail as TextbookDetail, TextbookList, TheAcademyDropdown, TheLanguageDropdown, index$3 as Types, UserList, api, apiUpload, canAccess as canAccessRoute, checkSuperUrl, createRecentUserActionListApi, diffFromNow, formatRole, formatTime, getAcademyDomain, getAccessToken, getErrorMessage, getOrdinalSuffix, getRecentUserActionListApi, getRole, i18n, minutesToTimeSpan, setAlert, setLanguage, setLoading, setReFetchUserAcademies, setReadyRegisterPusher, setUser, store, times as timeUtils, toISOString, useAutoAcademyDomain, useCategorySelect, useChatContainer, useCountDownTimer, useGoogleSignOut, useLanguage, useLoadMore, useLogin, usePusherConversation, useSubjectSelect, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
23160
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AnswerCountSelector, ArticleCategorySelector, ArticleGroupView, BASE_URL, ChatContainer, ChatItemType, types as ChatTypes, ClassDetail, ClassList, CommonDialog, ConfirmDialog, index$1 as CoreHooks, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, index as Enums, ExamDetailView, ExamEvent, ExamResultV2, Header, InputText, LANGUAGES, Language, LayoutContext, Loading, LoadingComponent, Login, LoginWithEmail, SignIn as LoginWithPassword, NotFound, NotificationDetail, NotificationList, PUSHER_CONFIG, PassCodeCheck, PrintExamResultView, PrintExamView2, QuestionCountSelector, RecentUserAction, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, ScoreSelector, ShareToTeacherDialog, SubjectSelector, index$2 as Textbook, TextbookViewDetail as TextbookDetail, TextbookList, TheAcademyDropdown, TheLanguageDropdown, index$3 as Types, UserList, api, apiUpload, canAccess as canAccessRoute, checkSuperUrl, createRecentUserActionListApi, diffFromNow, formatRole, formatTime, getAcademyDomain, getAccessToken, getErrorMessage, getOrdinalSuffix, getRecentUserActionListApi, getRole, i18n, minutesToTimeSpan, setAlert, setLanguage, setLoading, setReFetchUserAcademies, setReadyRegisterPusher, setUser, store, times as timeUtils, toISOString, useAutoAcademyDomain, useCategorySelect, useChatContainer, useCountDownTimer, useGoogleSignOut, useLanguage, useList, useLoadMore, useLogin, usePusherConversation, useSubjectSelect, useSwitchAcademy, useTextbookShare, useVirtualizeList, utcToLocalTime };
22658
23161
  //# sourceMappingURL=index.modern.js.map