mario-core 2.9.406-feedback → 2.9.408-feedback

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.
@@ -2,8 +2,8 @@ import 'bootstrap/dist/css/bootstrap.min.css';
2
2
  import i18n from 'i18next';
3
3
  import { initReactI18next, useTranslation } from 'react-i18next';
4
4
  export { I18nextProvider, useTranslation } from 'react-i18next';
5
- import React, { useCallback, useState, useEffect, useRef, Suspense, memo, Fragment, forwardRef, useImperativeHandle, useMemo } from 'react';
6
- import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, Modal, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
5
+ import React, { useCallback, useState, useEffect, useRef, useMemo, Suspense, memo, Fragment, forwardRef, useImperativeHandle } from 'react';
6
+ import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Modal, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
7
7
  import { Link, useLocation, useHistory, Switch, Route, Prompt, useParams } from 'react-router-dom';
8
8
  import { useDispatch, useSelector } from 'react-redux';
9
9
  import { Formik } from 'formik';
@@ -17,7 +17,7 @@ import { track, setSessionId, init, Identify, identify } from '@amplitude/analyt
17
17
  import moment from 'moment';
18
18
  import { LogLevel, PublicClientApplication } from '@azure/msal-browser';
19
19
  import { GiHamburgerMenu } from 'react-icons/gi';
20
- import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CContainer, CHeader, CToggler, CHeaderBrand, CHeaderNav } from '@coreui/react';
20
+ import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CHeader, CToggler, CHeaderBrand, CHeaderNav, CContainer } from '@coreui/react';
21
21
  import { CgMenuRight } from 'react-icons/cg';
22
22
  import { RiLogoutBoxRLine } from 'react-icons/ri';
23
23
  import Pusher from 'pusher-js/with-encryption';
@@ -1008,6 +1008,7 @@ var create_template_system = "Create Template System";
1008
1008
  var created_at = "Created At";
1009
1009
  var do_you_want_to_remove_this_template = "Do you want to remove this template?";
1010
1010
  var one_roster_setting = "OneRoster Setting";
1011
+ var clever_setting = "Clever Setting";
1011
1012
  var users = "Users";
1012
1013
  var one_roster_config = "OneRoster Config";
1013
1014
  var end_point_url = "End Point URL";
@@ -3169,6 +3170,7 @@ var lang_us = {
3169
3170
  created_at: created_at,
3170
3171
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template,
3171
3172
  one_roster_setting: one_roster_setting,
3173
+ clever_setting: clever_setting,
3172
3174
  users: users,
3173
3175
  one_roster_config: one_roster_config,
3174
3176
  end_point_url: end_point_url,
@@ -5352,6 +5354,7 @@ var create_template_system$1 = "Create Template System";
5352
5354
  var created_at$1 = "Created At";
5353
5355
  var do_you_want_to_remove_this_template$1 = "Do you want to remove this template?";
5354
5356
  var one_roster_setting$1 = "OneRoster Setting";
5357
+ var clever_setting$1 = "Clever Setting";
5355
5358
  var users$1 = "Users";
5356
5359
  var one_roster_config$1 = "OneRoster Config";
5357
5360
  var end_point_url$1 = "End Point URL";
@@ -7513,6 +7516,7 @@ var lang_uk = {
7513
7516
  created_at: created_at$1,
7514
7517
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$1,
7515
7518
  one_roster_setting: one_roster_setting$1,
7519
+ clever_setting: clever_setting$1,
7516
7520
  users: users$1,
7517
7521
  one_roster_config: one_roster_config$1,
7518
7522
  end_point_url: end_point_url$1,
@@ -9688,6 +9692,7 @@ var create_template_system$2 = "إنشاء قالب النظام";
9688
9692
  var created_at$2 = "تم إنشاؤه في";
9689
9693
  var do_you_want_to_remove_this_template$2 = "هل تريد إزالة هذا القالب؟";
9690
9694
  var one_roster_setting$2 = "إعداد OneRoster";
9695
+ var clever_setting$2 = "إعداد ذكي";
9691
9696
  var users$2 = "المستخدمون";
9692
9697
  var one_roster_config$2 = "ضبط OneRoster";
9693
9698
  var end_point_url$2 = "عنوان URL لنقطة النهاية";
@@ -11877,6 +11882,7 @@ var lang_ar = {
11877
11882
  created_at: created_at$2,
11878
11883
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$2,
11879
11884
  one_roster_setting: one_roster_setting$2,
11885
+ clever_setting: clever_setting$2,
11880
11886
  users: users$2,
11881
11887
  one_roster_config: one_roster_config$2,
11882
11888
  end_point_url: end_point_url$2,
@@ -14089,6 +14095,7 @@ var create_template_system$3 = "Crear sistema de plantillas";
14089
14095
  var created_at$3 = "Creado en";
14090
14096
  var do_you_want_to_remove_this_template$3 = "¿Desea eliminar esta plantilla?";
14091
14097
  var one_roster_setting$3 = "Configuración de OneRoster";
14098
+ var clever_setting$3 = "Configuración inteligente";
14092
14099
  var users$3 = "Usuarios";
14093
14100
  var one_roster_config$3 = "Configuración OneRoster";
14094
14101
  var end_point_url$3 = "URL del punto final";
@@ -16278,6 +16285,7 @@ var lang_es = {
16278
16285
  created_at: created_at$3,
16279
16286
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$3,
16280
16287
  one_roster_setting: one_roster_setting$3,
16288
+ clever_setting: clever_setting$3,
16281
16289
  users: users$3,
16282
16290
  one_roster_config: one_roster_config$3,
16283
16291
  end_point_url: end_point_url$3,
@@ -18490,6 +18498,7 @@ var create_template_system$4 = "创建模板系统";
18490
18498
  var created_at$4 = "创建时间";
18491
18499
  var do_you_want_to_remove_this_template$4 = "是否要删除此模板?";
18492
18500
  var one_roster_setting$4 = "OneRoster 设置";
18501
+ var clever_setting$4 = "巧妙的设置";
18493
18502
  var users$4 = "用户";
18494
18503
  var one_roster_config$4 = "OneRoster 配置";
18495
18504
  var end_point_url$4 = "端点 URL";
@@ -20679,6 +20688,7 @@ var lang_zh = {
20679
20688
  created_at: created_at$4,
20680
20689
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$4,
20681
20690
  one_roster_setting: one_roster_setting$4,
20691
+ clever_setting: clever_setting$4,
20682
20692
  users: users$4,
20683
20693
  one_roster_config: one_roster_config$4,
20684
20694
  end_point_url: end_point_url$4,
@@ -41786,6 +41796,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41786
41796
  })), t("log_out")))));
41787
41797
  };
41788
41798
 
41799
+ var apiGetLanguage = function apiGetLanguage() {
41800
+ return api.get(BASE_URL + "/api/language");
41801
+ };
41802
+
41803
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41804
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
41805
+ };
41806
+
41807
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41808
+
41809
+ var useLanguages = function useLanguages() {
41810
+ var dispatch = useDispatch();
41811
+
41812
+ var _useTranslation = useTranslation(),
41813
+ i18n = _useTranslation.i18n;
41814
+
41815
+ var language = useSelector(function (state) {
41816
+ return state.common.language;
41817
+ });
41818
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41819
+
41820
+ var _useState = useState([]),
41821
+ languageList = _useState[0],
41822
+ setLanguageList = _useState[1];
41823
+
41824
+ var _useState2 = useState(false),
41825
+ dropdownOpen = _useState2[0],
41826
+ setDropdownOpen = _useState2[1];
41827
+
41828
+ var _useState3 = useState(defaultLanguage),
41829
+ currentLang = _useState3[0],
41830
+ setCurrentLang = _useState3[1];
41831
+
41832
+ var toggle = function toggle() {
41833
+ return setDropdownOpen(function (prevState) {
41834
+ return !prevState;
41835
+ });
41836
+ };
41837
+
41838
+ var changeLanguageApp = function changeLanguageApp(lang) {
41839
+ try {
41840
+ var _temp3 = function _temp3() {
41841
+ dispatch(setLoading(false));
41842
+ };
41843
+
41844
+ dispatch(setLoading(true));
41845
+
41846
+ var _temp4 = _catch(function () {
41847
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41848
+ i18n.changeLanguage(lang);
41849
+ setCurrentLang(lang);
41850
+ dispatch(setLanguage(lang));
41851
+ });
41852
+ }, function (err) {
41853
+ var _err$response, _err$response$data;
41854
+
41855
+ dispatch(setAlert({
41856
+ type: "danger",
41857
+ message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
41858
+ }));
41859
+ });
41860
+
41861
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41862
+ } catch (e) {
41863
+ return Promise.reject(e);
41864
+ }
41865
+ };
41866
+
41867
+ var getListLanguage = function getListLanguage() {
41868
+ try {
41869
+ var _temp6 = _catch(function () {
41870
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
41871
+ setLanguageList(res.data);
41872
+ });
41873
+ }, function (err) {
41874
+ var _err$response2, _err$response2$data;
41875
+
41876
+ dispatch(setAlert({
41877
+ type: "danger",
41878
+ message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
41879
+ }));
41880
+ });
41881
+
41882
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
41883
+ } catch (e) {
41884
+ return Promise.reject(e);
41885
+ }
41886
+ };
41887
+
41888
+ useEffect(function () {
41889
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
41890
+ getListLanguage();
41891
+ }, []);
41892
+ return {
41893
+ languageList: languageList,
41894
+ toggle: toggle,
41895
+ dropdownOpen: dropdownOpen,
41896
+ currentLang: currentLang,
41897
+ changeLanguageApp: changeLanguageApp,
41898
+ setCurrentLang: setCurrentLang
41899
+ };
41900
+ };
41901
+
41902
+ var TheLanguageDropdown = function TheLanguageDropdown() {
41903
+ var _useLanguages = useLanguages(),
41904
+ languageList = _useLanguages.languageList,
41905
+ toggle = _useLanguages.toggle,
41906
+ dropdownOpen = _useLanguages.dropdownOpen,
41907
+ currentLang = _useLanguages.currentLang,
41908
+ changeLanguageApp = _useLanguages.changeLanguageApp;
41909
+
41910
+ var currentLanguage = useMemo(function () {
41911
+ var current = languageList.find(function (i) {
41912
+ return i.code === currentLang;
41913
+ });
41914
+ if (!current) return null;
41915
+ return React.createElement(React.Fragment, null, React.createElement("img", {
41916
+ className: "mr-2 " + styles['dropdown-menu-flag'],
41917
+ src: "" + getStaticFileUrl(current.image)
41918
+ }), " ", current.name);
41919
+ }, [currentLang, languageList]);
41920
+ return React.createElement(Dropdown, {
41921
+ isOpen: dropdownOpen,
41922
+ toggle: toggle,
41923
+ className: "" + styles["dropdown-menu"]
41924
+ }, React.createElement(DropdownToggle, {
41925
+ className: styles["header-avatar"] + " d-flex align-items-center"
41926
+ }, React.createElement("span", {
41927
+ style: {
41928
+ color: "#000",
41929
+ textTransform: "capitalize",
41930
+ display: 'flex',
41931
+ alignItems: 'center'
41932
+ }
41933
+ }, currentLanguage, React.createElement(BsChevronDown, {
41934
+ className: "ml-2",
41935
+ style: {
41936
+ fontSize: '10px'
41937
+ }
41938
+ }))), React.createElement(DropdownMenu, {
41939
+ className: styles["dropdown-content-language"]
41940
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
41941
+ return React.createElement(DropdownItem, {
41942
+ key: lang.code,
41943
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
41944
+ onClick: function onClick() {
41945
+ return changeLanguageApp(lang.code);
41946
+ }
41947
+ }, React.createElement("div", {
41948
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
41949
+ }, React.createElement("span", {
41950
+ className: "mr-2 d-flex hover-opacity"
41951
+ }, React.createElement("img", {
41952
+ style: {
41953
+ width: "30px",
41954
+ height: "25px",
41955
+ borderRadius: "5px"
41956
+ },
41957
+ src: getStaticFileUrl(lang.image)
41958
+ })), lang.name));
41959
+ })));
41960
+ };
41961
+
41962
+ var TheHeader = function TheHeader(_ref) {
41963
+ var onToggleModel = _ref.onToggleModel;
41964
+ var dispatch = useDispatch();
41965
+ var sidebarShow = useSelector(function (state) {
41966
+ return state.common.sidebarShow;
41967
+ });
41968
+
41969
+ var _useTranslation = useTranslation(),
41970
+ t = _useTranslation.t;
41971
+
41972
+ var toggleSidebarMobile = function toggleSidebarMobile() {
41973
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
41974
+ dispatch(setSidebar(val));
41975
+ };
41976
+
41977
+ var isDistrict = window.location.host.includes("-district");
41978
+ return React.createElement(CHeader, {
41979
+ withSubheader: true,
41980
+ className: "d-flex align-items-center justify-content-end"
41981
+ }, React.createElement(CToggler, {
41982
+ inHeader: true,
41983
+ className: "ml-md-3 d-lg-none",
41984
+ onClick: toggleSidebarMobile
41985
+ }), React.createElement(CHeaderBrand, {
41986
+ className: "mx-auto flex-grow-1 d-lg-none",
41987
+ to: "/"
41988
+ }, React.createElement("img", {
41989
+ src: getStaticFileUrl(Images.LOGO_HEADER),
41990
+ className: styles["header-logo"]
41991
+ })), React.createElement(CHeaderNav, {
41992
+ className: "pr-3"
41993
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
41994
+ className: "mr-3",
41995
+ style: {
41996
+ color: '#000'
41997
+ },
41998
+ href: '/privacy-policy',
41999
+ target: "blank"
42000
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42001
+ onToggleModel: onToggleModel
42002
+ })));
42003
+ };
42004
+
41789
42005
  var TITLE$3 = "Not found";
41790
42006
 
41791
42007
  var NotFound = function NotFound() {
@@ -41843,6 +42059,258 @@ var TheContent = function TheContent(_ref) {
41843
42059
 
41844
42060
  var TheContent$1 = React.memo(TheContent);
41845
42061
 
42062
+ var loadingStyle = {
42063
+ minWidth: "100vw",
42064
+ minHeight: "100vh",
42065
+ position: "fixed",
42066
+ top: 0,
42067
+ left: 0,
42068
+ zIndex: 999999999,
42069
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
42070
+ display: "flex",
42071
+ justifyContent: "center",
42072
+ alignItems: "center"
42073
+ };
42074
+
42075
+ var Loading = function Loading() {
42076
+ var isLoading = useSelector(function (state) {
42077
+ return state.common.isLoading;
42078
+ });
42079
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42080
+ return isLoading ? React.createElement("div", {
42081
+ style: loadingStyle
42082
+ }, React.createElement("div", {
42083
+ className: "spinner-border text-secondary",
42084
+ role: "status"
42085
+ }, React.createElement("span", {
42086
+ className: "sr-only"
42087
+ }, "Loading..."))) : null;
42088
+ };
42089
+
42090
+ var firstCheckToken = function firstCheckToken() {
42091
+ return Promise.resolve(_catch(function () {
42092
+ var token = getAccessToken();
42093
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42094
+ return tokenStatus.data ? true : false;
42095
+ }) : false;
42096
+ }, function () {
42097
+ return false;
42098
+ }));
42099
+ };
42100
+
42101
+ var canAccess = function canAccess(userRoles, componentRoles) {
42102
+ if (!Array.isArray(userRoles)) {
42103
+ return false;
42104
+ }
42105
+
42106
+ if (Array.isArray(componentRoles)) {
42107
+ var intersects = userRoles.filter(function (i) {
42108
+ return componentRoles.includes(i);
42109
+ });
42110
+ return intersects.length > 0;
42111
+ }
42112
+
42113
+ return true;
42114
+ };
42115
+
42116
+ var ModelSelectRole = function ModelSelectRole(_ref) {
42117
+ var _handleUserRole;
42118
+
42119
+ var open = _ref.open,
42120
+ onToggleModel = _ref.onToggleModel;
42121
+ var dispatch = useDispatch();
42122
+
42123
+ var _useTranslation = useTranslation(),
42124
+ t = _useTranslation.t;
42125
+
42126
+ var history = useHistory();
42127
+ var pathname = window.location.pathname;
42128
+ var user = useSelector(function (state) {
42129
+ return state.common.user;
42130
+ });
42131
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
42132
+
42133
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42134
+ dispatch(setLoading(true));
42135
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42136
+ dispatch(setUser(_extends({}, user, {
42137
+ roles: roleSelect
42138
+ })));
42139
+ localStorage.setItem("ROLES", roleSelect.toString());
42140
+ onToggleModel();
42141
+
42142
+ if (roles.includes("Parent")) {
42143
+ history.push("/parent");
42144
+ } else if (roles.includes("Admin")) {
42145
+ history.push("/admin/home");
42146
+ } else {
42147
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
42148
+ }
42149
+ };
42150
+
42151
+ return React.createElement(Modal, {
42152
+ isOpen: open,
42153
+ toggle: function toggle() {
42154
+ return onToggleModel();
42155
+ },
42156
+ className: "" + styles["model-switch-roles"],
42157
+ centered: true
42158
+ }, React.createElement("p", {
42159
+ className: "" + styles["title"]
42160
+ }, t("continue_as")), React.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
42161
+ return React.createElement("p", {
42162
+ key: r,
42163
+ className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
42164
+ onClick: function onClick() {
42165
+ return handleSelectUserRoles([r]);
42166
+ }
42167
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42168
+ })));
42169
+ };
42170
+
42171
+ var TheLayout = function TheLayout(_ref) {
42172
+ var routes = _ref.routes,
42173
+ navigation = _ref.navigation;
42174
+ var history = useHistory();
42175
+ var dispatch = useDispatch();
42176
+ var user = useSelector(function (state) {
42177
+ return state.common.user;
42178
+ });
42179
+ var language = useSelector(function (state) {
42180
+ return state.common.language;
42181
+ });
42182
+
42183
+ var _useState = useState(false),
42184
+ openModelSelectRole = _useState[0],
42185
+ setOpenModelSelectRole = _useState[1];
42186
+
42187
+ var _useTranslation = useTranslation(),
42188
+ t = _useTranslation.t;
42189
+
42190
+ var location = useLocation();
42191
+ var isNotification = location.pathname.includes("notifications");
42192
+ var isDistrict = window.location.host.includes("-district");
42193
+
42194
+ var handleToggleModel = function handleToggleModel() {
42195
+ setOpenModelSelectRole(!openModelSelectRole);
42196
+ };
42197
+
42198
+ var authRoutes = useMemo(function () {
42199
+ return routes.filter(function (route) {
42200
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42201
+ }).filter(function (route) {
42202
+ return !!route.isDistrict === isDistrict;
42203
+ });
42204
+ }, [user, language]);
42205
+ var authNavigations = useMemo(function () {
42206
+ return navigation.map(function (item) {
42207
+ var _item$_children, _item$_children2;
42208
+
42209
+ return _extends({}, item, {
42210
+ name: t(item.name),
42211
+ _children: item !== null && item !== void 0 && (_item$_children = item._children) !== null && _item$_children !== void 0 && _item$_children.length ? item === null || item === void 0 ? void 0 : (_item$_children2 = item._children) === null || _item$_children2 === void 0 ? void 0 : _item$_children2.map(function (x) {
42212
+ return _extends({}, x, {
42213
+ name: t(x.name)
42214
+ });
42215
+ }) : undefined
42216
+ });
42217
+ }).filter(function (nav) {
42218
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42219
+ }).filter(function (nav) {
42220
+ return !!nav.isDistrict === isDistrict;
42221
+ });
42222
+ }, [user, language]);
42223
+
42224
+ var getInformationSetting = function getInformationSetting() {
42225
+ try {
42226
+ var _temp2 = _catch(function () {
42227
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
42228
+ dispatch(setSandboxMode(res.data.isSandboxMode));
42229
+ });
42230
+ }, function (err) {
42231
+ console.error(err);
42232
+ });
42233
+
42234
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42235
+ } catch (e) {
42236
+ return Promise.reject(e);
42237
+ }
42238
+ };
42239
+
42240
+ useEffect(function () {
42241
+ checkAuthentication();
42242
+ }, []);
42243
+ useEffect(function () {
42244
+ getInformationSetting();
42245
+ }, [location.pathname]);
42246
+
42247
+ var checkAuthentication = function checkAuthentication() {
42248
+ try {
42249
+ var _temp4 = _catch(function () {
42250
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42251
+ tokenStatus ? loadInfo() : resetAuth();
42252
+ });
42253
+ }, function () {
42254
+ resetAuth();
42255
+ });
42256
+
42257
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42258
+ } catch (e) {
42259
+ return Promise.reject(e);
42260
+ }
42261
+ };
42262
+
42263
+ var loadInfo = function loadInfo() {
42264
+ try {
42265
+ var _temp6 = _catch(function () {
42266
+ return Promise.resolve(getInfo()).then(function (info) {
42267
+ var _info$data, _info$data$roles;
42268
+
42269
+ if (!info || !(info !== null && info !== void 0 && (_info$data = info.data) !== null && _info$data !== void 0 && (_info$data$roles = _info$data.roles) !== null && _info$data$roles !== void 0 && _info$data$roles.includes("Admin"))) {
42270
+ resetAuth();
42271
+ }
42272
+
42273
+ dispatch(setUser(info.data));
42274
+ });
42275
+ }, function () {
42276
+ resetAuth();
42277
+ });
42278
+
42279
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42280
+ } catch (e) {
42281
+ return Promise.reject(e);
42282
+ }
42283
+ };
42284
+
42285
+ var resetAuth = function resetAuth() {
42286
+ localStorage.removeItem(ACCESS_TOKEN);
42287
+ sessionStorage.removeItem(ACCESS_TOKEN);
42288
+ localStorage.removeItem("ROLES");
42289
+ history.push("/");
42290
+ };
42291
+
42292
+ if (!user) {
42293
+ return React.createElement(Loading, null);
42294
+ }
42295
+
42296
+ return React.createElement("div", {
42297
+ className: "c-app c-default-layout"
42298
+ }, !isNotification && React.createElement(TheSidebar, {
42299
+ navigation: authNavigations
42300
+ }), React.createElement("div", {
42301
+ className: "c-wrapper"
42302
+ }, !isNotification && React.createElement(TheHeader, {
42303
+ onToggleModel: handleToggleModel
42304
+ }), React.createElement("div", {
42305
+ className: "c-body bg-white"
42306
+ }, React.createElement(TheContent$1, {
42307
+ routes: authRoutes
42308
+ }))), React.createElement(ModelSelectRole, {
42309
+ open: openModelSelectRole,
42310
+ onToggleModel: handleToggleModel
42311
+ }));
42312
+ };
42313
+
41846
42314
  var buttonTextStyle = {
41847
42315
  fontWeight: 500
41848
42316
  };
@@ -49745,7 +50213,7 @@ var useCSVImportTab = function useCSVImportTab() {
49745
50213
  });
49746
50214
  var header = parsedData.meta.fields;
49747
50215
  var dataRows = parsedData.data;
49748
- var chunkSize = 30;
50216
+ var chunkSize = 10;
49749
50217
  var chunks = [];
49750
50218
 
49751
50219
  for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
@@ -51191,34 +51659,6 @@ var UserDetail = function UserDetail() {
51191
51659
  });
51192
51660
  };
51193
51661
 
51194
- var loadingStyle = {
51195
- minWidth: "100vw",
51196
- minHeight: "100vh",
51197
- position: "fixed",
51198
- top: 0,
51199
- left: 0,
51200
- zIndex: 999999999,
51201
- backgroundColor: "rgba(0, 0, 0, 0.4)",
51202
- display: "flex",
51203
- justifyContent: "center",
51204
- alignItems: "center"
51205
- };
51206
-
51207
- var Loading = function Loading() {
51208
- var isLoading = useSelector(function (state) {
51209
- return state.common.isLoading;
51210
- });
51211
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51212
- return isLoading ? React.createElement("div", {
51213
- style: loadingStyle
51214
- }, React.createElement("div", {
51215
- className: "spinner-border text-secondary",
51216
- role: "status"
51217
- }, React.createElement("span", {
51218
- className: "sr-only"
51219
- }, "Loading..."))) : null;
51220
- };
51221
-
51222
51662
  var ScrollToTop = function ScrollToTop() {
51223
51663
  var _useLocation = useLocation(),
51224
51664
  pathname = _useLocation.pathname;
@@ -54242,32 +54682,6 @@ var store = configureStore({
54242
54682
  }
54243
54683
  });
54244
54684
 
54245
- var firstCheckToken = function firstCheckToken() {
54246
- return Promise.resolve(_catch(function () {
54247
- var token = getAccessToken();
54248
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54249
- return tokenStatus.data ? true : false;
54250
- }) : false;
54251
- }, function () {
54252
- return false;
54253
- }));
54254
- };
54255
-
54256
- var canAccess = function canAccess(userRoles, componentRoles) {
54257
- if (!Array.isArray(userRoles)) {
54258
- return false;
54259
- }
54260
-
54261
- if (Array.isArray(componentRoles)) {
54262
- var intersects = userRoles.filter(function (i) {
54263
- return componentRoles.includes(i);
54264
- });
54265
- return intersects.length > 0;
54266
- }
54267
-
54268
- return true;
54269
- };
54270
-
54271
54685
  var isInViewport = function isInViewport(el) {
54272
54686
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54273
54687
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54301,410 +54715,6 @@ var generateRandomString = (function () {
54301
54715
  return (Math.random() + 1).toString(36).substring(7);
54302
54716
  });
54303
54717
 
54304
- var apiGetLanguage = function apiGetLanguage() {
54305
- return api.get(BASE_URL + "/api/language");
54306
- };
54307
-
54308
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54309
- return api.put(BASE_URL + "/api/language?lang=" + lang);
54310
- };
54311
-
54312
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54313
-
54314
- var useLanguages = function useLanguages() {
54315
- var dispatch = useDispatch();
54316
-
54317
- var _useTranslation = useTranslation(),
54318
- i18n = _useTranslation.i18n;
54319
-
54320
- var language = useSelector(function (state) {
54321
- return state.common.language;
54322
- });
54323
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54324
-
54325
- var _useState = useState([]),
54326
- languageList = _useState[0],
54327
- setLanguageList = _useState[1];
54328
-
54329
- var _useState2 = useState(false),
54330
- dropdownOpen = _useState2[0],
54331
- setDropdownOpen = _useState2[1];
54332
-
54333
- var _useState3 = useState(defaultLanguage),
54334
- currentLang = _useState3[0],
54335
- setCurrentLang = _useState3[1];
54336
-
54337
- var toggle = function toggle() {
54338
- return setDropdownOpen(function (prevState) {
54339
- return !prevState;
54340
- });
54341
- };
54342
-
54343
- var changeLanguageApp = function changeLanguageApp(lang) {
54344
- try {
54345
- var _temp3 = function _temp3() {
54346
- dispatch(setLoading(false));
54347
- };
54348
-
54349
- dispatch(setLoading(true));
54350
-
54351
- var _temp4 = _catch(function () {
54352
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54353
- i18n.changeLanguage(lang);
54354
- setCurrentLang(lang);
54355
- dispatch(setLanguage(lang));
54356
- });
54357
- }, function (err) {
54358
- var _err$response, _err$response$data;
54359
-
54360
- dispatch(setAlert({
54361
- type: "danger",
54362
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
54363
- }));
54364
- });
54365
-
54366
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54367
- } catch (e) {
54368
- return Promise.reject(e);
54369
- }
54370
- };
54371
-
54372
- var getListLanguage = function getListLanguage() {
54373
- try {
54374
- var _temp6 = _catch(function () {
54375
- return Promise.resolve(apiGetLanguage()).then(function (res) {
54376
- setLanguageList(res.data);
54377
- });
54378
- }, function (err) {
54379
- var _err$response2, _err$response2$data;
54380
-
54381
- dispatch(setAlert({
54382
- type: "danger",
54383
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
54384
- }));
54385
- });
54386
-
54387
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54388
- } catch (e) {
54389
- return Promise.reject(e);
54390
- }
54391
- };
54392
-
54393
- useEffect(function () {
54394
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
54395
- getListLanguage();
54396
- }, []);
54397
- return {
54398
- languageList: languageList,
54399
- toggle: toggle,
54400
- dropdownOpen: dropdownOpen,
54401
- currentLang: currentLang,
54402
- changeLanguageApp: changeLanguageApp,
54403
- setCurrentLang: setCurrentLang
54404
- };
54405
- };
54406
-
54407
- var TheLanguageDropdown = function TheLanguageDropdown() {
54408
- var _useLanguages = useLanguages(),
54409
- languageList = _useLanguages.languageList,
54410
- toggle = _useLanguages.toggle,
54411
- dropdownOpen = _useLanguages.dropdownOpen,
54412
- currentLang = _useLanguages.currentLang,
54413
- changeLanguageApp = _useLanguages.changeLanguageApp;
54414
-
54415
- var currentLanguage = useMemo(function () {
54416
- var current = languageList.find(function (i) {
54417
- return i.code === currentLang;
54418
- });
54419
- if (!current) return null;
54420
- return React.createElement(React.Fragment, null, React.createElement("img", {
54421
- className: "mr-2 " + styles['dropdown-menu-flag'],
54422
- src: "" + getStaticFileUrl(current.image)
54423
- }), " ", current.name);
54424
- }, [currentLang, languageList]);
54425
- return React.createElement(Dropdown, {
54426
- isOpen: dropdownOpen,
54427
- toggle: toggle,
54428
- className: "" + styles["dropdown-menu"]
54429
- }, React.createElement(DropdownToggle, {
54430
- className: styles["header-avatar"] + " d-flex align-items-center"
54431
- }, React.createElement("span", {
54432
- style: {
54433
- color: "#000",
54434
- textTransform: "capitalize",
54435
- display: 'flex',
54436
- alignItems: 'center'
54437
- }
54438
- }, currentLanguage, React.createElement(BsChevronDown, {
54439
- className: "ml-2",
54440
- style: {
54441
- fontSize: '10px'
54442
- }
54443
- }))), React.createElement(DropdownMenu, {
54444
- className: styles["dropdown-content-language"]
54445
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54446
- return React.createElement(DropdownItem, {
54447
- key: lang.code,
54448
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54449
- onClick: function onClick() {
54450
- return changeLanguageApp(lang.code);
54451
- }
54452
- }, React.createElement("div", {
54453
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54454
- }, React.createElement("span", {
54455
- className: "mr-2 d-flex hover-opacity"
54456
- }, React.createElement("img", {
54457
- style: {
54458
- width: "30px",
54459
- height: "25px",
54460
- borderRadius: "5px"
54461
- },
54462
- src: getStaticFileUrl(lang.image)
54463
- })), lang.name));
54464
- })));
54465
- };
54466
-
54467
- var TheHeader = function TheHeader(_ref) {
54468
- var onToggleModel = _ref.onToggleModel;
54469
- var dispatch = useDispatch();
54470
- var sidebarShow = useSelector(function (state) {
54471
- return state.common.sidebarShow;
54472
- });
54473
-
54474
- var _useTranslation = useTranslation(),
54475
- t = _useTranslation.t;
54476
-
54477
- var toggleSidebarMobile = function toggleSidebarMobile() {
54478
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54479
- dispatch(setSidebar(val));
54480
- };
54481
-
54482
- var isDistrict = window.location.host.includes("-district");
54483
- return React.createElement(CHeader, {
54484
- withSubheader: true,
54485
- className: "d-flex align-items-center justify-content-end"
54486
- }, React.createElement(CToggler, {
54487
- inHeader: true,
54488
- className: "ml-md-3 d-lg-none",
54489
- onClick: toggleSidebarMobile
54490
- }), React.createElement(CHeaderBrand, {
54491
- className: "mx-auto flex-grow-1 d-lg-none",
54492
- to: "/"
54493
- }, React.createElement("img", {
54494
- src: getStaticFileUrl(Images.LOGO_HEADER),
54495
- className: styles["header-logo"]
54496
- })), React.createElement(CHeaderNav, {
54497
- className: "pr-3"
54498
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54499
- className: "mr-3",
54500
- style: {
54501
- color: '#000'
54502
- },
54503
- href: '/privacy-policy',
54504
- target: "blank"
54505
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54506
- onToggleModel: onToggleModel
54507
- })));
54508
- };
54509
-
54510
- var ModelSelectRole = function ModelSelectRole(_ref) {
54511
- var _handleUserRole;
54512
-
54513
- var open = _ref.open,
54514
- onToggleModel = _ref.onToggleModel;
54515
- var dispatch = useDispatch();
54516
-
54517
- var _useTranslation = useTranslation(),
54518
- t = _useTranslation.t;
54519
-
54520
- var history = useHistory();
54521
- var pathname = window.location.pathname;
54522
- var user = useSelector(function (state) {
54523
- return state.common.user;
54524
- });
54525
- var roles = user === null || user === void 0 ? void 0 : user.roles;
54526
-
54527
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54528
- dispatch(setLoading(true));
54529
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54530
- dispatch(setUser(_extends({}, user, {
54531
- roles: roleSelect
54532
- })));
54533
- localStorage.setItem("ROLES", roleSelect.toString());
54534
- onToggleModel();
54535
-
54536
- if (roles.includes("Parent")) {
54537
- history.push("/parent");
54538
- } else if (roles.includes("Admin")) {
54539
- history.push("/admin/home");
54540
- } else {
54541
- pathname !== "/home" ? history.push("/home") : window.location.reload();
54542
- }
54543
- };
54544
-
54545
- return React.createElement(Modal, {
54546
- isOpen: open,
54547
- toggle: function toggle() {
54548
- return onToggleModel();
54549
- },
54550
- className: "" + styles["model-switch-roles"],
54551
- centered: true
54552
- }, React.createElement("p", {
54553
- className: "" + styles["title"]
54554
- }, t("continue_as")), React.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
54555
- return React.createElement("p", {
54556
- key: r,
54557
- className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
54558
- onClick: function onClick() {
54559
- return handleSelectUserRoles([r]);
54560
- }
54561
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54562
- })));
54563
- };
54564
-
54565
- var TheLayout = function TheLayout(_ref) {
54566
- var routes = _ref.routes,
54567
- navigation = _ref.navigation;
54568
- var history = useHistory();
54569
- var dispatch = useDispatch();
54570
- var user = useSelector(function (state) {
54571
- return state.common.user;
54572
- });
54573
- var language = useSelector(function (state) {
54574
- return state.common.language;
54575
- });
54576
-
54577
- var _useState = useState(false),
54578
- openModelSelectRole = _useState[0],
54579
- setOpenModelSelectRole = _useState[1];
54580
-
54581
- var _useTranslation = useTranslation(),
54582
- t = _useTranslation.t;
54583
-
54584
- var location = useLocation();
54585
- var isNotification = location.pathname.includes("notifications");
54586
- var isDistrict = window.location.host.includes("-district");
54587
-
54588
- var handleToggleModel = function handleToggleModel() {
54589
- setOpenModelSelectRole(!openModelSelectRole);
54590
- };
54591
-
54592
- var authRoutes = useMemo(function () {
54593
- return routes.filter(function (route) {
54594
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54595
- }).filter(function (route) {
54596
- return !!route.isDistrict === isDistrict;
54597
- });
54598
- }, [user, language]);
54599
- var authNavigations = useMemo(function () {
54600
- return navigation.map(function (item) {
54601
- var _item$_children, _item$_children2;
54602
-
54603
- return _extends({}, item, {
54604
- name: t(item.name),
54605
- _children: item !== null && item !== void 0 && (_item$_children = item._children) !== null && _item$_children !== void 0 && _item$_children.length ? item === null || item === void 0 ? void 0 : (_item$_children2 = item._children) === null || _item$_children2 === void 0 ? void 0 : _item$_children2.map(function (x) {
54606
- return _extends({}, x, {
54607
- name: t(x.name)
54608
- });
54609
- }) : undefined
54610
- });
54611
- }).filter(function (nav) {
54612
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54613
- }).filter(function (nav) {
54614
- return !!nav.isDistrict === isDistrict;
54615
- });
54616
- }, [user, language]);
54617
-
54618
- var getInformationSetting = function getInformationSetting() {
54619
- try {
54620
- var _temp2 = _catch(function () {
54621
- return Promise.resolve(getSchoolSettings()).then(function (res) {
54622
- dispatch(setSandboxMode(res.data.isSandboxMode));
54623
- });
54624
- }, function (err) {
54625
- console.error(err);
54626
- });
54627
-
54628
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54629
- } catch (e) {
54630
- return Promise.reject(e);
54631
- }
54632
- };
54633
-
54634
- useEffect(function () {
54635
- checkAuthentication();
54636
- }, []);
54637
- useEffect(function () {
54638
- getInformationSetting();
54639
- }, [location.pathname]);
54640
-
54641
- var checkAuthentication = function checkAuthentication() {
54642
- try {
54643
- var _temp4 = _catch(function () {
54644
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54645
- tokenStatus ? loadInfo() : resetAuth();
54646
- });
54647
- }, function () {
54648
- resetAuth();
54649
- });
54650
-
54651
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54652
- } catch (e) {
54653
- return Promise.reject(e);
54654
- }
54655
- };
54656
-
54657
- var loadInfo = function loadInfo() {
54658
- try {
54659
- var _temp6 = _catch(function () {
54660
- return Promise.resolve(getInfo()).then(function (info) {
54661
- var _info$data, _info$data$roles;
54662
-
54663
- if (!info || !(info !== null && info !== void 0 && (_info$data = info.data) !== null && _info$data !== void 0 && (_info$data$roles = _info$data.roles) !== null && _info$data$roles !== void 0 && _info$data$roles.includes("Admin"))) {
54664
- resetAuth();
54665
- }
54666
-
54667
- dispatch(setUser(info.data));
54668
- });
54669
- }, function () {
54670
- resetAuth();
54671
- });
54672
-
54673
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54674
- } catch (e) {
54675
- return Promise.reject(e);
54676
- }
54677
- };
54678
-
54679
- var resetAuth = function resetAuth() {
54680
- localStorage.removeItem(ACCESS_TOKEN);
54681
- sessionStorage.removeItem(ACCESS_TOKEN);
54682
- localStorage.removeItem("ROLES");
54683
- history.push("/");
54684
- };
54685
-
54686
- if (!user) {
54687
- return React.createElement(Loading, null);
54688
- }
54689
-
54690
- return React.createElement("div", {
54691
- className: "c-app c-default-layout"
54692
- }, !isNotification && React.createElement(TheSidebar, {
54693
- navigation: authNavigations
54694
- }), React.createElement("div", {
54695
- className: "c-wrapper"
54696
- }, !isNotification && React.createElement(TheHeader, {
54697
- onToggleModel: handleToggleModel
54698
- }), React.createElement("div", {
54699
- className: "c-body bg-white"
54700
- }, React.createElement(TheContent$1, {
54701
- routes: authRoutes
54702
- }))), React.createElement(ModelSelectRole, {
54703
- open: openModelSelectRole,
54704
- onToggleModel: handleToggleModel
54705
- }));
54706
- };
54707
-
54708
54718
  var amplitudeClient = amplitude;
54709
54719
 
54710
54720
  export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, DEFAULT_LANGUAGE_CODE, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, IS_USER_SESSION_BROWSER, Images, LANGUAGES, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationLogoutModal, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SANDBOX_NOTIFICATION, SUPPORTED_LANGUAGES_CODE, SandboxAlert, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserContainer, UserDetail, UserList, addTab, amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getCookieValue, getFileUrl, getInfo, getStaticFileUrl, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableMarioAi, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setOpenModelCongratulation, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSandboxMode, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, setWeeklyQuestList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };