mario-core 2.9.422-feedback → 2.9.424-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';
@@ -41368,14 +41368,7 @@ var BlockCreatePassword = function BlockCreatePassword() {
41368
41368
  className: "" + styles["img-login-rectangle"]
41369
41369
  }), React.createElement("p", {
41370
41370
  className: "" + styles["title-login"]
41371
- }, "You cannot regenerate the password")))), React.createElement(Col, {
41372
- lg: 4,
41373
- md: 4,
41374
- className: "" + styles["img-box"]
41375
- }, React.createElement("img", {
41376
- src: "/images/img-login.png",
41377
- className: "" + styles["img-login"]
41378
- })));
41371
+ }, "You cannot regenerate the password")))));
41379
41372
  });
41380
41373
  };
41381
41374
 
@@ -41940,6 +41933,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41940
41933
  })), t("log_out")))));
41941
41934
  };
41942
41935
 
41936
+ var apiGetLanguage = function apiGetLanguage() {
41937
+ return api.get(BASE_URL + "/api/language");
41938
+ };
41939
+
41940
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41941
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
41942
+ };
41943
+
41944
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41945
+
41946
+ var useLanguages = function useLanguages() {
41947
+ var dispatch = useDispatch();
41948
+
41949
+ var _useTranslation = useTranslation(),
41950
+ i18n = _useTranslation.i18n;
41951
+
41952
+ var language = useSelector(function (state) {
41953
+ return state.common.language;
41954
+ });
41955
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41956
+
41957
+ var _useState = useState([]),
41958
+ languageList = _useState[0],
41959
+ setLanguageList = _useState[1];
41960
+
41961
+ var _useState2 = useState(false),
41962
+ dropdownOpen = _useState2[0],
41963
+ setDropdownOpen = _useState2[1];
41964
+
41965
+ var _useState3 = useState(defaultLanguage),
41966
+ currentLang = _useState3[0],
41967
+ setCurrentLang = _useState3[1];
41968
+
41969
+ var toggle = function toggle() {
41970
+ return setDropdownOpen(function (prevState) {
41971
+ return !prevState;
41972
+ });
41973
+ };
41974
+
41975
+ var changeLanguageApp = function changeLanguageApp(lang) {
41976
+ try {
41977
+ var _temp3 = function _temp3() {
41978
+ dispatch(setLoading(false));
41979
+ };
41980
+
41981
+ dispatch(setLoading(true));
41982
+
41983
+ var _temp4 = _catch(function () {
41984
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41985
+ i18n.changeLanguage(lang);
41986
+ setCurrentLang(lang);
41987
+ dispatch(setLanguage(lang));
41988
+ });
41989
+ }, function (err) {
41990
+ var _err$response, _err$response$data;
41991
+
41992
+ dispatch(setAlert({
41993
+ type: "danger",
41994
+ 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
41995
+ }));
41996
+ });
41997
+
41998
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41999
+ } catch (e) {
42000
+ return Promise.reject(e);
42001
+ }
42002
+ };
42003
+
42004
+ var getListLanguage = function getListLanguage() {
42005
+ try {
42006
+ var _temp6 = _catch(function () {
42007
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
42008
+ setLanguageList(res.data);
42009
+ });
42010
+ }, function (err) {
42011
+ var _err$response2, _err$response2$data;
42012
+
42013
+ dispatch(setAlert({
42014
+ type: "danger",
42015
+ 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
42016
+ }));
42017
+ });
42018
+
42019
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42020
+ } catch (e) {
42021
+ return Promise.reject(e);
42022
+ }
42023
+ };
42024
+
42025
+ useEffect(function () {
42026
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
42027
+ getListLanguage();
42028
+ }, []);
42029
+ return {
42030
+ languageList: languageList,
42031
+ toggle: toggle,
42032
+ dropdownOpen: dropdownOpen,
42033
+ currentLang: currentLang,
42034
+ changeLanguageApp: changeLanguageApp,
42035
+ setCurrentLang: setCurrentLang
42036
+ };
42037
+ };
42038
+
42039
+ var TheLanguageDropdown = function TheLanguageDropdown() {
42040
+ var _useLanguages = useLanguages(),
42041
+ languageList = _useLanguages.languageList,
42042
+ toggle = _useLanguages.toggle,
42043
+ dropdownOpen = _useLanguages.dropdownOpen,
42044
+ currentLang = _useLanguages.currentLang,
42045
+ changeLanguageApp = _useLanguages.changeLanguageApp;
42046
+
42047
+ var currentLanguage = useMemo(function () {
42048
+ var current = languageList.find(function (i) {
42049
+ return i.code === currentLang;
42050
+ });
42051
+ if (!current) return null;
42052
+ return React.createElement(React.Fragment, null, React.createElement("img", {
42053
+ className: "mr-2 " + styles['dropdown-menu-flag'],
42054
+ src: "" + getStaticFileUrl(current.image)
42055
+ }), " ", current.name);
42056
+ }, [currentLang, languageList]);
42057
+ return React.createElement(Dropdown, {
42058
+ isOpen: dropdownOpen,
42059
+ toggle: toggle,
42060
+ className: "" + styles["dropdown-menu"]
42061
+ }, React.createElement(DropdownToggle, {
42062
+ className: styles["header-avatar"] + " d-flex align-items-center"
42063
+ }, React.createElement("span", {
42064
+ style: {
42065
+ color: "#000",
42066
+ textTransform: "capitalize",
42067
+ display: 'flex',
42068
+ alignItems: 'center'
42069
+ }
42070
+ }, currentLanguage, React.createElement(BsChevronDown, {
42071
+ className: "ml-2",
42072
+ style: {
42073
+ fontSize: '10px'
42074
+ }
42075
+ }))), React.createElement(DropdownMenu, {
42076
+ className: styles["dropdown-content-language"]
42077
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42078
+ return React.createElement(DropdownItem, {
42079
+ key: lang.code,
42080
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42081
+ onClick: function onClick() {
42082
+ return changeLanguageApp(lang.code);
42083
+ }
42084
+ }, React.createElement("div", {
42085
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42086
+ }, React.createElement("span", {
42087
+ className: "mr-2 d-flex hover-opacity"
42088
+ }, React.createElement("img", {
42089
+ style: {
42090
+ width: "30px",
42091
+ height: "25px",
42092
+ borderRadius: "5px"
42093
+ },
42094
+ src: getStaticFileUrl(lang.image)
42095
+ })), lang.name));
42096
+ })));
42097
+ };
42098
+
42099
+ var TheHeader = function TheHeader(_ref) {
42100
+ var onToggleModel = _ref.onToggleModel;
42101
+ var dispatch = useDispatch();
42102
+ var sidebarShow = useSelector(function (state) {
42103
+ return state.common.sidebarShow;
42104
+ });
42105
+
42106
+ var _useTranslation = useTranslation(),
42107
+ t = _useTranslation.t;
42108
+
42109
+ var toggleSidebarMobile = function toggleSidebarMobile() {
42110
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42111
+ dispatch(setSidebar(val));
42112
+ };
42113
+
42114
+ var isDistrict = window.location.host.includes("-district");
42115
+ return React.createElement(CHeader, {
42116
+ withSubheader: true,
42117
+ className: "d-flex align-items-center justify-content-end"
42118
+ }, React.createElement(CToggler, {
42119
+ inHeader: true,
42120
+ className: "ml-md-3 d-lg-none",
42121
+ onClick: toggleSidebarMobile
42122
+ }), React.createElement(CHeaderBrand, {
42123
+ className: "mx-auto flex-grow-1 d-lg-none",
42124
+ to: "/"
42125
+ }, React.createElement("img", {
42126
+ src: getStaticFileUrl(Images.LOGO_HEADER),
42127
+ className: styles["header-logo"]
42128
+ })), React.createElement(CHeaderNav, {
42129
+ className: "pr-3"
42130
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42131
+ className: "mr-3",
42132
+ style: {
42133
+ color: '#000'
42134
+ },
42135
+ href: '/privacy-policy',
42136
+ target: "blank"
42137
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42138
+ onToggleModel: onToggleModel
42139
+ })));
42140
+ };
42141
+
41943
42142
  var TITLE$3 = "Not found";
41944
42143
 
41945
42144
  var NotFound = function NotFound() {
@@ -41997,6 +42196,258 @@ var TheContent = function TheContent(_ref) {
41997
42196
 
41998
42197
  var TheContent$1 = React.memo(TheContent);
41999
42198
 
42199
+ var loadingStyle = {
42200
+ minWidth: "100vw",
42201
+ minHeight: "100vh",
42202
+ position: "fixed",
42203
+ top: 0,
42204
+ left: 0,
42205
+ zIndex: 999999999,
42206
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
42207
+ display: "flex",
42208
+ justifyContent: "center",
42209
+ alignItems: "center"
42210
+ };
42211
+
42212
+ var Loading = function Loading() {
42213
+ var isLoading = useSelector(function (state) {
42214
+ return state.common.isLoading;
42215
+ });
42216
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42217
+ return isLoading ? React.createElement("div", {
42218
+ style: loadingStyle
42219
+ }, React.createElement("div", {
42220
+ className: "spinner-border text-secondary",
42221
+ role: "status"
42222
+ }, React.createElement("span", {
42223
+ className: "sr-only"
42224
+ }, "Loading..."))) : null;
42225
+ };
42226
+
42227
+ var firstCheckToken = function firstCheckToken() {
42228
+ return Promise.resolve(_catch(function () {
42229
+ var token = getAccessToken();
42230
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42231
+ return tokenStatus.data ? true : false;
42232
+ }) : false;
42233
+ }, function () {
42234
+ return false;
42235
+ }));
42236
+ };
42237
+
42238
+ var canAccess = function canAccess(userRoles, componentRoles) {
42239
+ if (!Array.isArray(userRoles)) {
42240
+ return false;
42241
+ }
42242
+
42243
+ if (Array.isArray(componentRoles)) {
42244
+ var intersects = userRoles.filter(function (i) {
42245
+ return componentRoles.includes(i);
42246
+ });
42247
+ return intersects.length > 0;
42248
+ }
42249
+
42250
+ return true;
42251
+ };
42252
+
42253
+ var ModelSelectRole = function ModelSelectRole(_ref) {
42254
+ var _handleUserRole;
42255
+
42256
+ var open = _ref.open,
42257
+ onToggleModel = _ref.onToggleModel;
42258
+ var dispatch = useDispatch();
42259
+
42260
+ var _useTranslation = useTranslation(),
42261
+ t = _useTranslation.t;
42262
+
42263
+ var history = useHistory();
42264
+ var pathname = window.location.pathname;
42265
+ var user = useSelector(function (state) {
42266
+ return state.common.user;
42267
+ });
42268
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
42269
+
42270
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42271
+ dispatch(setLoading(true));
42272
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42273
+ dispatch(setUser(_extends({}, user, {
42274
+ roles: roleSelect
42275
+ })));
42276
+ localStorage.setItem("ROLES", roleSelect.toString());
42277
+ onToggleModel();
42278
+
42279
+ if (roles.includes("Parent")) {
42280
+ history.push("/parent");
42281
+ } else if (roles.includes("Admin")) {
42282
+ history.push("/admin/home");
42283
+ } else {
42284
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
42285
+ }
42286
+ };
42287
+
42288
+ return React.createElement(Modal, {
42289
+ isOpen: open,
42290
+ toggle: function toggle() {
42291
+ return onToggleModel();
42292
+ },
42293
+ className: "" + styles["model-switch-roles"],
42294
+ centered: true
42295
+ }, React.createElement("p", {
42296
+ className: "" + styles["title"]
42297
+ }, 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) {
42298
+ return React.createElement("p", {
42299
+ key: r,
42300
+ 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" : ""],
42301
+ onClick: function onClick() {
42302
+ return handleSelectUserRoles([r]);
42303
+ }
42304
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42305
+ })));
42306
+ };
42307
+
42308
+ var TheLayout = function TheLayout(_ref) {
42309
+ var routes = _ref.routes,
42310
+ navigation = _ref.navigation;
42311
+ var history = useHistory();
42312
+ var dispatch = useDispatch();
42313
+ var user = useSelector(function (state) {
42314
+ return state.common.user;
42315
+ });
42316
+ var language = useSelector(function (state) {
42317
+ return state.common.language;
42318
+ });
42319
+
42320
+ var _useState = useState(false),
42321
+ openModelSelectRole = _useState[0],
42322
+ setOpenModelSelectRole = _useState[1];
42323
+
42324
+ var _useTranslation = useTranslation(),
42325
+ t = _useTranslation.t;
42326
+
42327
+ var location = useLocation();
42328
+ var isNotification = location.pathname.includes("notifications");
42329
+ var isDistrict = window.location.host.includes("-district");
42330
+
42331
+ var handleToggleModel = function handleToggleModel() {
42332
+ setOpenModelSelectRole(!openModelSelectRole);
42333
+ };
42334
+
42335
+ var authRoutes = useMemo(function () {
42336
+ return routes.filter(function (route) {
42337
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42338
+ }).filter(function (route) {
42339
+ return !!route.isDistrict === isDistrict;
42340
+ });
42341
+ }, [user, language]);
42342
+ var authNavigations = useMemo(function () {
42343
+ return navigation.map(function (item) {
42344
+ var _item$_children, _item$_children2;
42345
+
42346
+ return _extends({}, item, {
42347
+ name: t(item.name),
42348
+ _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) {
42349
+ return _extends({}, x, {
42350
+ name: t(x.name)
42351
+ });
42352
+ }) : undefined
42353
+ });
42354
+ }).filter(function (nav) {
42355
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42356
+ }).filter(function (nav) {
42357
+ return !!nav.isDistrict === isDistrict;
42358
+ });
42359
+ }, [user, language]);
42360
+
42361
+ var getInformationSetting = function getInformationSetting() {
42362
+ try {
42363
+ var _temp2 = _catch(function () {
42364
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
42365
+ dispatch(setSandboxMode(res.data.isSandboxMode));
42366
+ });
42367
+ }, function (err) {
42368
+ console.error(err);
42369
+ });
42370
+
42371
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42372
+ } catch (e) {
42373
+ return Promise.reject(e);
42374
+ }
42375
+ };
42376
+
42377
+ useEffect(function () {
42378
+ checkAuthentication();
42379
+ }, []);
42380
+ useEffect(function () {
42381
+ getInformationSetting();
42382
+ }, [location.pathname]);
42383
+
42384
+ var checkAuthentication = function checkAuthentication() {
42385
+ try {
42386
+ var _temp4 = _catch(function () {
42387
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42388
+ tokenStatus ? loadInfo() : resetAuth();
42389
+ });
42390
+ }, function () {
42391
+ resetAuth();
42392
+ });
42393
+
42394
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42395
+ } catch (e) {
42396
+ return Promise.reject(e);
42397
+ }
42398
+ };
42399
+
42400
+ var loadInfo = function loadInfo() {
42401
+ try {
42402
+ var _temp6 = _catch(function () {
42403
+ return Promise.resolve(getInfo()).then(function (info) {
42404
+ var _info$data, _info$data$roles;
42405
+
42406
+ 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"))) {
42407
+ resetAuth();
42408
+ }
42409
+
42410
+ dispatch(setUser(info.data));
42411
+ });
42412
+ }, function () {
42413
+ resetAuth();
42414
+ });
42415
+
42416
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42417
+ } catch (e) {
42418
+ return Promise.reject(e);
42419
+ }
42420
+ };
42421
+
42422
+ var resetAuth = function resetAuth() {
42423
+ localStorage.removeItem(ACCESS_TOKEN);
42424
+ sessionStorage.removeItem(ACCESS_TOKEN);
42425
+ localStorage.removeItem("ROLES");
42426
+ history.push("/");
42427
+ };
42428
+
42429
+ if (!user) {
42430
+ return React.createElement(Loading, null);
42431
+ }
42432
+
42433
+ return React.createElement("div", {
42434
+ className: "c-app c-default-layout"
42435
+ }, !isNotification && React.createElement(TheSidebar, {
42436
+ navigation: authNavigations
42437
+ }), React.createElement("div", {
42438
+ className: "c-wrapper"
42439
+ }, !isNotification && React.createElement(TheHeader, {
42440
+ onToggleModel: handleToggleModel
42441
+ }), React.createElement("div", {
42442
+ className: "c-body bg-white"
42443
+ }, React.createElement(TheContent$1, {
42444
+ routes: authRoutes
42445
+ }))), React.createElement(ModelSelectRole, {
42446
+ open: openModelSelectRole,
42447
+ onToggleModel: handleToggleModel
42448
+ }));
42449
+ };
42450
+
42000
42451
  var buttonTextStyle = {
42001
42452
  fontWeight: 500
42002
42453
  };
@@ -51377,34 +51828,6 @@ var UserDetail = function UserDetail() {
51377
51828
  });
51378
51829
  };
51379
51830
 
51380
- var loadingStyle = {
51381
- minWidth: "100vw",
51382
- minHeight: "100vh",
51383
- position: "fixed",
51384
- top: 0,
51385
- left: 0,
51386
- zIndex: 999999999,
51387
- backgroundColor: "rgba(0, 0, 0, 0.4)",
51388
- display: "flex",
51389
- justifyContent: "center",
51390
- alignItems: "center"
51391
- };
51392
-
51393
- var Loading = function Loading() {
51394
- var isLoading = useSelector(function (state) {
51395
- return state.common.isLoading;
51396
- });
51397
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51398
- return isLoading ? React.createElement("div", {
51399
- style: loadingStyle
51400
- }, React.createElement("div", {
51401
- className: "spinner-border text-secondary",
51402
- role: "status"
51403
- }, React.createElement("span", {
51404
- className: "sr-only"
51405
- }, "Loading..."))) : null;
51406
- };
51407
-
51408
51831
  var ScrollToTop = function ScrollToTop() {
51409
51832
  var _useLocation = useLocation(),
51410
51833
  pathname = _useLocation.pathname;
@@ -51512,7 +51935,12 @@ var CommonHeader = function CommonHeader(_ref) {
51512
51935
  }, header))));
51513
51936
  };
51514
51937
 
51938
+ var IDLE_MINUTES_WARNING = 13;
51939
+ var AUTO_LOGOUT_MINUTES = 15;
51940
+
51515
51941
  var NotificationLogoutModal = function NotificationLogoutModal() {
51942
+ var history = useHistory();
51943
+
51516
51944
  var _useState = useState(false),
51517
51945
  isOpen = _useState[0],
51518
51946
  setIsOpen = _useState[1];
@@ -51524,37 +51952,65 @@ var NotificationLogoutModal = function NotificationLogoutModal() {
51524
51952
  objTime = _useState2[0],
51525
51953
  setObjTime = _useState2[1];
51526
51954
 
51955
+ var getLastActivity = function getLastActivity() {
51956
+ try {
51957
+ var _localStorage$getItem, _localStorage, _localStorage$getItem2;
51958
+
51959
+ return (_localStorage$getItem = (_localStorage = localStorage) === null || _localStorage === void 0 ? void 0 : (_localStorage$getItem2 = _localStorage.getItem) === null || _localStorage$getItem2 === void 0 ? void 0 : _localStorage$getItem2.call(_localStorage, "LAST_ACTIVITY_TIME")) != null ? _localStorage$getItem : null;
51960
+ } catch (_unused) {
51961
+ return null;
51962
+ }
51963
+ };
51964
+
51965
+ var doLogout = function doLogout() {
51966
+ localStorage.removeItem(ACCESS_TOKEN);
51967
+ sessionStorage.removeItem(ACCESS_TOKEN);
51968
+ localStorage.removeItem("ROLES");
51969
+ localStorage.removeItem("LAST_ACTIVITY_TIME");
51970
+ setIsOpen(false);
51971
+ history.replace("/login");
51972
+ };
51973
+
51527
51974
  var checkOpenModalLogout = function checkOpenModalLogout() {
51528
- var lastTimeOut = localStorage.getItem("LAST_TIME_REQUETST");
51529
- var timeMoment = moment(lastTimeOut, "YYYY-MM-DD HH:mm");
51975
+ var accessToken = getAccessToken();
51976
+ if (!accessToken) return;
51977
+ var lastActivity = getLastActivity();
51978
+
51979
+ if (!lastActivity) {
51980
+ var _localStorage2, _localStorage2$setIte;
51981
+
51982
+ (_localStorage2 = localStorage) === null || _localStorage2 === void 0 ? void 0 : (_localStorage2$setIte = _localStorage2.setItem) === null || _localStorage2$setIte === void 0 ? void 0 : _localStorage2$setIte.call(_localStorage2, "LAST_ACTIVITY_TIME", new Date().toISOString());
51983
+ return;
51984
+ }
51985
+
51986
+ var timeMoment = moment(lastActivity, "YYYY-MM-DD HH:mm");
51530
51987
  var currentTime = moment(moment().utc().format("YYYY-MM-DD HH:mm"));
51531
51988
  var minutes = currentTime.diff(timeMoment, "minutes");
51532
- var timeLogout = utcToLocalTime(currentTime.add(16 - minutes, 'minutes').format("YYYY-MM-DD HH:mm"), "HH:mm");
51533
51989
 
51534
- if (minutes == 13) {
51535
- var dataTime = {
51990
+ if (minutes >= AUTO_LOGOUT_MINUTES) {
51991
+ doLogout();
51992
+ return;
51993
+ }
51994
+
51995
+ var timeLogout = utcToLocalTime(currentTime.add(AUTO_LOGOUT_MINUTES - minutes, 'minutes').format("YYYY-MM-DD HH:mm"), "HH:mm");
51996
+
51997
+ if (minutes >= IDLE_MINUTES_WARNING) {
51998
+ setObjTime({
51536
51999
  minutes: minutes,
51537
52000
  timeLogout: timeLogout
51538
- };
51539
- setObjTime(dataTime);
51540
- onToggle();
52001
+ });
52002
+ setIsOpen(true);
51541
52003
  }
51542
52004
  };
51543
52005
 
51544
52006
  useEffect(function () {
51545
- var accessToken = getAccessToken();
51546
-
51547
- if (accessToken) {
51548
- var interval = setInterval(function () {
51549
- checkOpenModalLogout();
51550
- }, 60 * 1000);
51551
- return function () {
51552
- return clearInterval(interval);
51553
- };
51554
- }
51555
-
51556
- return;
51557
- }, [location.href]);
52007
+ var interval = setInterval(function () {
52008
+ checkOpenModalLogout();
52009
+ }, 60 * 1000);
52010
+ return function () {
52011
+ return clearInterval(interval);
52012
+ };
52013
+ }, []);
51558
52014
 
51559
52015
  var onToggle = function onToggle() {
51560
52016
  setIsOpen(!isOpen);
@@ -51566,7 +52022,7 @@ var NotificationLogoutModal = function NotificationLogoutModal() {
51566
52022
  size: "xs"
51567
52023
  }, React.createElement(ModalHeader, {
51568
52024
  toggle: onToggle
51569
- }, "Notification Logout"), React.createElement(ModalBody, null, "Are you still here? You have had no action for " + (objTime === null || objTime === void 0 ? void 0 : objTime.minutes) + " mins. \n Your account could be log out after " + (15 - (objTime === null || objTime === void 0 ? void 0 : objTime.minutes)) + " mins at " + (objTime === null || objTime === void 0 ? void 0 : objTime.timeLogout) + " if you don't action."), React.createElement(ModalFooter, {
52025
+ }, "Notification Logout"), React.createElement(ModalBody, null, "Are you still here? You have had no action for " + (objTime === null || objTime === void 0 ? void 0 : objTime.minutes) + " mins. \n Your account could be log out after " + (AUTO_LOGOUT_MINUTES - (objTime === null || objTime === void 0 ? void 0 : objTime.minutes)) + " mins at " + (objTime === null || objTime === void 0 ? void 0 : objTime.timeLogout) + " if you don't action."), React.createElement(ModalFooter, {
51570
52026
  className: "text-right"
51571
52027
  }, React.createElement(Button, {
51572
52028
  color: "primary",
@@ -54428,32 +54884,6 @@ var store = configureStore({
54428
54884
  }
54429
54885
  });
54430
54886
 
54431
- var firstCheckToken = function firstCheckToken() {
54432
- return Promise.resolve(_catch(function () {
54433
- var token = getAccessToken();
54434
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54435
- return tokenStatus.data ? true : false;
54436
- }) : false;
54437
- }, function () {
54438
- return false;
54439
- }));
54440
- };
54441
-
54442
- var canAccess = function canAccess(userRoles, componentRoles) {
54443
- if (!Array.isArray(userRoles)) {
54444
- return false;
54445
- }
54446
-
54447
- if (Array.isArray(componentRoles)) {
54448
- var intersects = userRoles.filter(function (i) {
54449
- return componentRoles.includes(i);
54450
- });
54451
- return intersects.length > 0;
54452
- }
54453
-
54454
- return true;
54455
- };
54456
-
54457
54887
  var isInViewport = function isInViewport(el) {
54458
54888
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54459
54889
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54487,411 +54917,7 @@ var generateRandomString = (function () {
54487
54917
  return (Math.random() + 1).toString(36).substring(7);
54488
54918
  });
54489
54919
 
54490
- var apiGetLanguage = function apiGetLanguage() {
54491
- return api.get(BASE_URL + "/api/language");
54492
- };
54493
-
54494
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54495
- return api.put(BASE_URL + "/api/language?lang=" + lang);
54496
- };
54497
-
54498
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54499
-
54500
- var useLanguages = function useLanguages() {
54501
- var dispatch = useDispatch();
54502
-
54503
- var _useTranslation = useTranslation(),
54504
- i18n = _useTranslation.i18n;
54505
-
54506
- var language = useSelector(function (state) {
54507
- return state.common.language;
54508
- });
54509
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54510
-
54511
- var _useState = useState([]),
54512
- languageList = _useState[0],
54513
- setLanguageList = _useState[1];
54514
-
54515
- var _useState2 = useState(false),
54516
- dropdownOpen = _useState2[0],
54517
- setDropdownOpen = _useState2[1];
54518
-
54519
- var _useState3 = useState(defaultLanguage),
54520
- currentLang = _useState3[0],
54521
- setCurrentLang = _useState3[1];
54522
-
54523
- var toggle = function toggle() {
54524
- return setDropdownOpen(function (prevState) {
54525
- return !prevState;
54526
- });
54527
- };
54528
-
54529
- var changeLanguageApp = function changeLanguageApp(lang) {
54530
- try {
54531
- var _temp3 = function _temp3() {
54532
- dispatch(setLoading(false));
54533
- };
54534
-
54535
- dispatch(setLoading(true));
54536
-
54537
- var _temp4 = _catch(function () {
54538
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54539
- i18n.changeLanguage(lang);
54540
- setCurrentLang(lang);
54541
- dispatch(setLanguage(lang));
54542
- });
54543
- }, function (err) {
54544
- var _err$response, _err$response$data;
54545
-
54546
- dispatch(setAlert({
54547
- type: "danger",
54548
- 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
54549
- }));
54550
- });
54551
-
54552
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54553
- } catch (e) {
54554
- return Promise.reject(e);
54555
- }
54556
- };
54557
-
54558
- var getListLanguage = function getListLanguage() {
54559
- try {
54560
- var _temp6 = _catch(function () {
54561
- return Promise.resolve(apiGetLanguage()).then(function (res) {
54562
- setLanguageList(res.data);
54563
- });
54564
- }, function (err) {
54565
- var _err$response2, _err$response2$data;
54566
-
54567
- dispatch(setAlert({
54568
- type: "danger",
54569
- 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
54570
- }));
54571
- });
54572
-
54573
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54574
- } catch (e) {
54575
- return Promise.reject(e);
54576
- }
54577
- };
54578
-
54579
- useEffect(function () {
54580
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
54581
- getListLanguage();
54582
- }, []);
54583
- return {
54584
- languageList: languageList,
54585
- toggle: toggle,
54586
- dropdownOpen: dropdownOpen,
54587
- currentLang: currentLang,
54588
- changeLanguageApp: changeLanguageApp,
54589
- setCurrentLang: setCurrentLang
54590
- };
54591
- };
54592
-
54593
- var TheLanguageDropdown = function TheLanguageDropdown() {
54594
- var _useLanguages = useLanguages(),
54595
- languageList = _useLanguages.languageList,
54596
- toggle = _useLanguages.toggle,
54597
- dropdownOpen = _useLanguages.dropdownOpen,
54598
- currentLang = _useLanguages.currentLang,
54599
- changeLanguageApp = _useLanguages.changeLanguageApp;
54600
-
54601
- var currentLanguage = useMemo(function () {
54602
- var current = languageList.find(function (i) {
54603
- return i.code === currentLang;
54604
- });
54605
- if (!current) return null;
54606
- return React.createElement(React.Fragment, null, React.createElement("img", {
54607
- className: "mr-2 " + styles['dropdown-menu-flag'],
54608
- src: "" + getStaticFileUrl(current.image)
54609
- }), " ", current.name);
54610
- }, [currentLang, languageList]);
54611
- return React.createElement(Dropdown, {
54612
- isOpen: dropdownOpen,
54613
- toggle: toggle,
54614
- className: "" + styles["dropdown-menu"]
54615
- }, React.createElement(DropdownToggle, {
54616
- className: styles["header-avatar"] + " d-flex align-items-center"
54617
- }, React.createElement("span", {
54618
- style: {
54619
- color: "#000",
54620
- textTransform: "capitalize",
54621
- display: 'flex',
54622
- alignItems: 'center'
54623
- }
54624
- }, currentLanguage, React.createElement(BsChevronDown, {
54625
- className: "ml-2",
54626
- style: {
54627
- fontSize: '10px'
54628
- }
54629
- }))), React.createElement(DropdownMenu, {
54630
- className: styles["dropdown-content-language"]
54631
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54632
- return React.createElement(DropdownItem, {
54633
- key: lang.code,
54634
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54635
- onClick: function onClick() {
54636
- return changeLanguageApp(lang.code);
54637
- }
54638
- }, React.createElement("div", {
54639
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54640
- }, React.createElement("span", {
54641
- className: "mr-2 d-flex hover-opacity"
54642
- }, React.createElement("img", {
54643
- style: {
54644
- width: "30px",
54645
- height: "25px",
54646
- borderRadius: "5px"
54647
- },
54648
- src: getStaticFileUrl(lang.image)
54649
- })), lang.name));
54650
- })));
54651
- };
54652
-
54653
- var TheHeader = function TheHeader(_ref) {
54654
- var onToggleModel = _ref.onToggleModel;
54655
- var dispatch = useDispatch();
54656
- var sidebarShow = useSelector(function (state) {
54657
- return state.common.sidebarShow;
54658
- });
54659
-
54660
- var _useTranslation = useTranslation(),
54661
- t = _useTranslation.t;
54662
-
54663
- var toggleSidebarMobile = function toggleSidebarMobile() {
54664
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54665
- dispatch(setSidebar(val));
54666
- };
54667
-
54668
- var isDistrict = window.location.host.includes("-district");
54669
- return React.createElement(CHeader, {
54670
- withSubheader: true,
54671
- className: "d-flex align-items-center justify-content-end"
54672
- }, React.createElement(CToggler, {
54673
- inHeader: true,
54674
- className: "ml-md-3 d-lg-none",
54675
- onClick: toggleSidebarMobile
54676
- }), React.createElement(CHeaderBrand, {
54677
- className: "mx-auto flex-grow-1 d-lg-none",
54678
- to: "/"
54679
- }, React.createElement("img", {
54680
- src: getStaticFileUrl(Images.LOGO_HEADER),
54681
- className: styles["header-logo"]
54682
- })), React.createElement(CHeaderNav, {
54683
- className: "pr-3"
54684
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54685
- className: "mr-3",
54686
- style: {
54687
- color: '#000'
54688
- },
54689
- href: '/privacy-policy',
54690
- target: "blank"
54691
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54692
- onToggleModel: onToggleModel
54693
- })));
54694
- };
54695
-
54696
- var ModelSelectRole = function ModelSelectRole(_ref) {
54697
- var _handleUserRole;
54698
-
54699
- var open = _ref.open,
54700
- onToggleModel = _ref.onToggleModel;
54701
- var dispatch = useDispatch();
54702
-
54703
- var _useTranslation = useTranslation(),
54704
- t = _useTranslation.t;
54705
-
54706
- var history = useHistory();
54707
- var pathname = window.location.pathname;
54708
- var user = useSelector(function (state) {
54709
- return state.common.user;
54710
- });
54711
- var roles = user === null || user === void 0 ? void 0 : user.roles;
54712
-
54713
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54714
- dispatch(setLoading(true));
54715
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54716
- dispatch(setUser(_extends({}, user, {
54717
- roles: roleSelect
54718
- })));
54719
- localStorage.setItem("ROLES", roleSelect.toString());
54720
- onToggleModel();
54721
-
54722
- if (roles.includes("Parent")) {
54723
- history.push("/parent");
54724
- } else if (roles.includes("Admin")) {
54725
- history.push("/admin/home");
54726
- } else {
54727
- pathname !== "/home" ? history.push("/home") : window.location.reload();
54728
- }
54729
- };
54730
-
54731
- return React.createElement(Modal, {
54732
- isOpen: open,
54733
- toggle: function toggle() {
54734
- return onToggleModel();
54735
- },
54736
- className: "" + styles["model-switch-roles"],
54737
- centered: true
54738
- }, React.createElement("p", {
54739
- className: "" + styles["title"]
54740
- }, 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) {
54741
- return React.createElement("p", {
54742
- key: r,
54743
- 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" : ""],
54744
- onClick: function onClick() {
54745
- return handleSelectUserRoles([r]);
54746
- }
54747
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54748
- })));
54749
- };
54750
-
54751
- var TheLayout = function TheLayout(_ref) {
54752
- var routes = _ref.routes,
54753
- navigation = _ref.navigation;
54754
- var history = useHistory();
54755
- var dispatch = useDispatch();
54756
- var user = useSelector(function (state) {
54757
- return state.common.user;
54758
- });
54759
- var language = useSelector(function (state) {
54760
- return state.common.language;
54761
- });
54762
-
54763
- var _useState = useState(false),
54764
- openModelSelectRole = _useState[0],
54765
- setOpenModelSelectRole = _useState[1];
54766
-
54767
- var _useTranslation = useTranslation(),
54768
- t = _useTranslation.t;
54769
-
54770
- var location = useLocation();
54771
- var isNotification = location.pathname.includes("notifications");
54772
- var isDistrict = window.location.host.includes("-district");
54773
-
54774
- var handleToggleModel = function handleToggleModel() {
54775
- setOpenModelSelectRole(!openModelSelectRole);
54776
- };
54777
-
54778
- var authRoutes = useMemo(function () {
54779
- return routes.filter(function (route) {
54780
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54781
- }).filter(function (route) {
54782
- return !!route.isDistrict === isDistrict;
54783
- });
54784
- }, [user, language]);
54785
- var authNavigations = useMemo(function () {
54786
- return navigation.map(function (item) {
54787
- var _item$_children, _item$_children2;
54788
-
54789
- return _extends({}, item, {
54790
- name: t(item.name),
54791
- _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) {
54792
- return _extends({}, x, {
54793
- name: t(x.name)
54794
- });
54795
- }) : undefined
54796
- });
54797
- }).filter(function (nav) {
54798
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54799
- }).filter(function (nav) {
54800
- return !!nav.isDistrict === isDistrict;
54801
- });
54802
- }, [user, language]);
54803
-
54804
- var getInformationSetting = function getInformationSetting() {
54805
- try {
54806
- var _temp2 = _catch(function () {
54807
- return Promise.resolve(getSchoolSettings()).then(function (res) {
54808
- dispatch(setSandboxMode(res.data.isSandboxMode));
54809
- });
54810
- }, function (err) {
54811
- console.error(err);
54812
- });
54813
-
54814
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54815
- } catch (e) {
54816
- return Promise.reject(e);
54817
- }
54818
- };
54819
-
54820
- useEffect(function () {
54821
- checkAuthentication();
54822
- }, []);
54823
- useEffect(function () {
54824
- getInformationSetting();
54825
- }, [location.pathname]);
54826
-
54827
- var checkAuthentication = function checkAuthentication() {
54828
- try {
54829
- var _temp4 = _catch(function () {
54830
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54831
- tokenStatus ? loadInfo() : resetAuth();
54832
- });
54833
- }, function () {
54834
- resetAuth();
54835
- });
54836
-
54837
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54838
- } catch (e) {
54839
- return Promise.reject(e);
54840
- }
54841
- };
54842
-
54843
- var loadInfo = function loadInfo() {
54844
- try {
54845
- var _temp6 = _catch(function () {
54846
- return Promise.resolve(getInfo()).then(function (info) {
54847
- var _info$data, _info$data$roles;
54848
-
54849
- 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"))) {
54850
- resetAuth();
54851
- }
54852
-
54853
- dispatch(setUser(info.data));
54854
- });
54855
- }, function () {
54856
- resetAuth();
54857
- });
54858
-
54859
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54860
- } catch (e) {
54861
- return Promise.reject(e);
54862
- }
54863
- };
54864
-
54865
- var resetAuth = function resetAuth() {
54866
- localStorage.removeItem(ACCESS_TOKEN);
54867
- sessionStorage.removeItem(ACCESS_TOKEN);
54868
- localStorage.removeItem("ROLES");
54869
- history.push("/");
54870
- };
54871
-
54872
- if (!user) {
54873
- return React.createElement(Loading, null);
54874
- }
54875
-
54876
- return React.createElement("div", {
54877
- className: "c-app c-default-layout"
54878
- }, !isNotification && React.createElement(TheSidebar, {
54879
- navigation: authNavigations
54880
- }), React.createElement("div", {
54881
- className: "c-wrapper"
54882
- }, !isNotification && React.createElement(TheHeader, {
54883
- onToggleModel: handleToggleModel
54884
- }), React.createElement("div", {
54885
- className: "c-body bg-white"
54886
- }, React.createElement(TheContent$1, {
54887
- routes: authRoutes
54888
- }))), React.createElement(ModelSelectRole, {
54889
- open: openModelSelectRole,
54890
- onToggleModel: handleToggleModel
54891
- }));
54892
- };
54893
-
54894
54920
  var amplitudeClient = amplitude;
54895
54921
 
54896
- 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 };
54922
+ 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, getAccessToken, 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 };
54897
54923
  //# sourceMappingURL=index.modern.js.map