mario-core 2.9.425-feedback → 2.9.426-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, 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';
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';
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, CHeader, CToggler, CHeaderBrand, CHeaderNav, CContainer } from '@coreui/react';
20
+ import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CContainer, CHeader, CToggler, CHeaderBrand, CHeaderNav } 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';
@@ -41943,212 +41943,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41943
41943
  })), t("log_out")))));
41944
41944
  };
41945
41945
 
41946
- var apiGetLanguage = function apiGetLanguage() {
41947
- return api.get(BASE_URL + "/api/language");
41948
- };
41949
-
41950
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41951
- return api.put(BASE_URL + "/api/language?lang=" + lang);
41952
- };
41953
-
41954
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41955
-
41956
- var useLanguages = function useLanguages() {
41957
- var dispatch = useDispatch();
41958
-
41959
- var _useTranslation = useTranslation(),
41960
- i18n = _useTranslation.i18n;
41961
-
41962
- var language = useSelector(function (state) {
41963
- return state.common.language;
41964
- });
41965
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41966
-
41967
- var _useState = useState([]),
41968
- languageList = _useState[0],
41969
- setLanguageList = _useState[1];
41970
-
41971
- var _useState2 = useState(false),
41972
- dropdownOpen = _useState2[0],
41973
- setDropdownOpen = _useState2[1];
41974
-
41975
- var _useState3 = useState(defaultLanguage),
41976
- currentLang = _useState3[0],
41977
- setCurrentLang = _useState3[1];
41978
-
41979
- var toggle = function toggle() {
41980
- return setDropdownOpen(function (prevState) {
41981
- return !prevState;
41982
- });
41983
- };
41984
-
41985
- var changeLanguageApp = function changeLanguageApp(lang) {
41986
- try {
41987
- var _temp3 = function _temp3() {
41988
- dispatch(setLoading(false));
41989
- };
41990
-
41991
- dispatch(setLoading(true));
41992
-
41993
- var _temp4 = _catch(function () {
41994
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41995
- i18n.changeLanguage(lang);
41996
- setCurrentLang(lang);
41997
- dispatch(setLanguage(lang));
41998
- });
41999
- }, function (err) {
42000
- var _err$response, _err$response$data;
42001
-
42002
- dispatch(setAlert({
42003
- type: "danger",
42004
- 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
42005
- }));
42006
- });
42007
-
42008
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
42009
- } catch (e) {
42010
- return Promise.reject(e);
42011
- }
42012
- };
42013
-
42014
- var getListLanguage = function getListLanguage() {
42015
- try {
42016
- var _temp6 = _catch(function () {
42017
- return Promise.resolve(apiGetLanguage()).then(function (res) {
42018
- setLanguageList(res.data);
42019
- });
42020
- }, function (err) {
42021
- var _err$response2, _err$response2$data;
42022
-
42023
- dispatch(setAlert({
42024
- type: "danger",
42025
- 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
42026
- }));
42027
- });
42028
-
42029
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42030
- } catch (e) {
42031
- return Promise.reject(e);
42032
- }
42033
- };
42034
-
42035
- useEffect(function () {
42036
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
42037
- getListLanguage();
42038
- }, []);
42039
- return {
42040
- languageList: languageList,
42041
- toggle: toggle,
42042
- dropdownOpen: dropdownOpen,
42043
- currentLang: currentLang,
42044
- changeLanguageApp: changeLanguageApp,
42045
- setCurrentLang: setCurrentLang
42046
- };
42047
- };
42048
-
42049
- var TheLanguageDropdown = function TheLanguageDropdown() {
42050
- var _useLanguages = useLanguages(),
42051
- languageList = _useLanguages.languageList,
42052
- toggle = _useLanguages.toggle,
42053
- dropdownOpen = _useLanguages.dropdownOpen,
42054
- currentLang = _useLanguages.currentLang,
42055
- changeLanguageApp = _useLanguages.changeLanguageApp;
42056
-
42057
- var currentLanguage = useMemo(function () {
42058
- var current = languageList.find(function (i) {
42059
- return i.code === currentLang;
42060
- });
42061
- if (!current) return null;
42062
- return React.createElement(React.Fragment, null, React.createElement("img", {
42063
- className: "mr-2 " + styles['dropdown-menu-flag'],
42064
- src: "" + getStaticFileUrl(current.image)
42065
- }), " ", current.name);
42066
- }, [currentLang, languageList]);
42067
- return React.createElement(Dropdown, {
42068
- isOpen: dropdownOpen,
42069
- toggle: toggle,
42070
- className: "" + styles["dropdown-menu"]
42071
- }, React.createElement(DropdownToggle, {
42072
- className: styles["header-avatar"] + " d-flex align-items-center"
42073
- }, React.createElement("span", {
42074
- style: {
42075
- color: "#000",
42076
- textTransform: "capitalize",
42077
- display: 'flex',
42078
- alignItems: 'center'
42079
- }
42080
- }, currentLanguage, React.createElement(BsChevronDown, {
42081
- className: "ml-2",
42082
- style: {
42083
- fontSize: '10px'
42084
- }
42085
- }))), React.createElement(DropdownMenu, {
42086
- className: styles["dropdown-content-language"]
42087
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42088
- return React.createElement(DropdownItem, {
42089
- key: lang.code,
42090
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42091
- onClick: function onClick() {
42092
- return changeLanguageApp(lang.code);
42093
- }
42094
- }, React.createElement("div", {
42095
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42096
- }, React.createElement("span", {
42097
- className: "mr-2 d-flex hover-opacity"
42098
- }, React.createElement("img", {
42099
- style: {
42100
- width: "30px",
42101
- height: "25px",
42102
- borderRadius: "5px"
42103
- },
42104
- src: getStaticFileUrl(lang.image)
42105
- })), lang.name));
42106
- })));
42107
- };
42108
-
42109
- var TheHeader = function TheHeader(_ref) {
42110
- var onToggleModel = _ref.onToggleModel;
42111
- var dispatch = useDispatch();
42112
- var sidebarShow = useSelector(function (state) {
42113
- return state.common.sidebarShow;
42114
- });
42115
-
42116
- var _useTranslation = useTranslation(),
42117
- t = _useTranslation.t;
42118
-
42119
- var toggleSidebarMobile = function toggleSidebarMobile() {
42120
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42121
- dispatch(setSidebar(val));
42122
- };
42123
-
42124
- var isDistrict = window.location.host.includes("-district");
42125
- return React.createElement(CHeader, {
42126
- withSubheader: true,
42127
- className: "d-flex align-items-center justify-content-end"
42128
- }, React.createElement(CToggler, {
42129
- inHeader: true,
42130
- className: "ml-md-3 d-lg-none",
42131
- onClick: toggleSidebarMobile
42132
- }), React.createElement(CHeaderBrand, {
42133
- className: "mx-auto flex-grow-1 d-lg-none",
42134
- to: "/"
42135
- }, React.createElement("img", {
42136
- src: getStaticFileUrl(Images.LOGO_HEADER),
42137
- className: styles["header-logo"]
42138
- })), React.createElement(CHeaderNav, {
42139
- className: "pr-3"
42140
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42141
- className: "mr-3",
42142
- style: {
42143
- color: '#000'
42144
- },
42145
- href: '/privacy-policy',
42146
- target: "blank"
42147
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42148
- onToggleModel: onToggleModel
42149
- })));
42150
- };
42151
-
42152
41946
  var TITLE$3 = "Not found";
42153
41947
 
42154
41948
  var NotFound = function NotFound() {
@@ -42206,258 +42000,6 @@ var TheContent = function TheContent(_ref) {
42206
42000
 
42207
42001
  var TheContent$1 = React.memo(TheContent);
42208
42002
 
42209
- var loadingStyle = {
42210
- minWidth: "100vw",
42211
- minHeight: "100vh",
42212
- position: "fixed",
42213
- top: 0,
42214
- left: 0,
42215
- zIndex: 999999999,
42216
- backgroundColor: "rgba(0, 0, 0, 0.4)",
42217
- display: "flex",
42218
- justifyContent: "center",
42219
- alignItems: "center"
42220
- };
42221
-
42222
- var Loading = function Loading() {
42223
- var isLoading = useSelector(function (state) {
42224
- return state.common.isLoading;
42225
- });
42226
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42227
- return isLoading ? React.createElement("div", {
42228
- style: loadingStyle
42229
- }, React.createElement("div", {
42230
- className: "spinner-border text-secondary",
42231
- role: "status"
42232
- }, React.createElement("span", {
42233
- className: "sr-only"
42234
- }, "Loading..."))) : null;
42235
- };
42236
-
42237
- var firstCheckToken = function firstCheckToken() {
42238
- return Promise.resolve(_catch(function () {
42239
- var token = getAccessToken();
42240
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42241
- return tokenStatus.data ? true : false;
42242
- }) : false;
42243
- }, function () {
42244
- return false;
42245
- }));
42246
- };
42247
-
42248
- var canAccess = function canAccess(userRoles, componentRoles) {
42249
- if (!Array.isArray(userRoles)) {
42250
- return false;
42251
- }
42252
-
42253
- if (Array.isArray(componentRoles)) {
42254
- var intersects = userRoles.filter(function (i) {
42255
- return componentRoles.includes(i);
42256
- });
42257
- return intersects.length > 0;
42258
- }
42259
-
42260
- return true;
42261
- };
42262
-
42263
- var ModelSelectRole = function ModelSelectRole(_ref) {
42264
- var _handleUserRole;
42265
-
42266
- var open = _ref.open,
42267
- onToggleModel = _ref.onToggleModel;
42268
- var dispatch = useDispatch();
42269
-
42270
- var _useTranslation = useTranslation(),
42271
- t = _useTranslation.t;
42272
-
42273
- var history = useHistory();
42274
- var pathname = window.location.pathname;
42275
- var user = useSelector(function (state) {
42276
- return state.common.user;
42277
- });
42278
- var roles = user === null || user === void 0 ? void 0 : user.roles;
42279
-
42280
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42281
- dispatch(setLoading(true));
42282
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42283
- dispatch(setUser(_extends({}, user, {
42284
- roles: roleSelect
42285
- })));
42286
- localStorage.setItem("ROLES", roleSelect.toString());
42287
- onToggleModel();
42288
-
42289
- if (roles.includes("Parent")) {
42290
- history.push("/parent");
42291
- } else if (roles.includes("Admin")) {
42292
- history.push("/admin/home");
42293
- } else {
42294
- pathname !== "/home" ? history.push("/home") : window.location.reload();
42295
- }
42296
- };
42297
-
42298
- return React.createElement(Modal, {
42299
- isOpen: open,
42300
- toggle: function toggle() {
42301
- return onToggleModel();
42302
- },
42303
- className: "" + styles["model-switch-roles"],
42304
- centered: true
42305
- }, React.createElement("p", {
42306
- className: "" + styles["title"]
42307
- }, 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) {
42308
- return React.createElement("p", {
42309
- key: r,
42310
- 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" : ""],
42311
- onClick: function onClick() {
42312
- return handleSelectUserRoles([r]);
42313
- }
42314
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42315
- })));
42316
- };
42317
-
42318
- var TheLayout = function TheLayout(_ref) {
42319
- var routes = _ref.routes,
42320
- navigation = _ref.navigation;
42321
- var history = useHistory();
42322
- var dispatch = useDispatch();
42323
- var user = useSelector(function (state) {
42324
- return state.common.user;
42325
- });
42326
- var language = useSelector(function (state) {
42327
- return state.common.language;
42328
- });
42329
-
42330
- var _useState = useState(false),
42331
- openModelSelectRole = _useState[0],
42332
- setOpenModelSelectRole = _useState[1];
42333
-
42334
- var _useTranslation = useTranslation(),
42335
- t = _useTranslation.t;
42336
-
42337
- var location = useLocation();
42338
- var isNotification = location.pathname.includes("notifications");
42339
- var isDistrict = window.location.host.includes("-district");
42340
-
42341
- var handleToggleModel = function handleToggleModel() {
42342
- setOpenModelSelectRole(!openModelSelectRole);
42343
- };
42344
-
42345
- var authRoutes = useMemo(function () {
42346
- return routes.filter(function (route) {
42347
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42348
- }).filter(function (route) {
42349
- return !!route.isDistrict === isDistrict;
42350
- });
42351
- }, [user, language]);
42352
- var authNavigations = useMemo(function () {
42353
- return navigation.map(function (item) {
42354
- var _item$_children, _item$_children2;
42355
-
42356
- return _extends({}, item, {
42357
- name: t(item.name),
42358
- _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) {
42359
- return _extends({}, x, {
42360
- name: t(x.name)
42361
- });
42362
- }) : undefined
42363
- });
42364
- }).filter(function (nav) {
42365
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42366
- }).filter(function (nav) {
42367
- return !!nav.isDistrict === isDistrict;
42368
- });
42369
- }, [user, language]);
42370
-
42371
- var getInformationSetting = function getInformationSetting() {
42372
- try {
42373
- var _temp2 = _catch(function () {
42374
- return Promise.resolve(getSchoolSettings()).then(function (res) {
42375
- dispatch(setSandboxMode(res.data.isSandboxMode));
42376
- });
42377
- }, function (err) {
42378
- console.error(err);
42379
- });
42380
-
42381
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42382
- } catch (e) {
42383
- return Promise.reject(e);
42384
- }
42385
- };
42386
-
42387
- useEffect(function () {
42388
- checkAuthentication();
42389
- }, []);
42390
- useEffect(function () {
42391
- getInformationSetting();
42392
- }, [location.pathname]);
42393
-
42394
- var checkAuthentication = function checkAuthentication() {
42395
- try {
42396
- var _temp4 = _catch(function () {
42397
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42398
- tokenStatus ? loadInfo() : resetAuth();
42399
- });
42400
- }, function () {
42401
- resetAuth();
42402
- });
42403
-
42404
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42405
- } catch (e) {
42406
- return Promise.reject(e);
42407
- }
42408
- };
42409
-
42410
- var loadInfo = function loadInfo() {
42411
- try {
42412
- var _temp6 = _catch(function () {
42413
- return Promise.resolve(getInfo()).then(function (info) {
42414
- var _info$data, _info$data$roles;
42415
-
42416
- 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"))) {
42417
- resetAuth();
42418
- }
42419
-
42420
- dispatch(setUser(info.data));
42421
- });
42422
- }, function () {
42423
- resetAuth();
42424
- });
42425
-
42426
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42427
- } catch (e) {
42428
- return Promise.reject(e);
42429
- }
42430
- };
42431
-
42432
- var resetAuth = function resetAuth() {
42433
- localStorage.removeItem(ACCESS_TOKEN);
42434
- sessionStorage.removeItem(ACCESS_TOKEN);
42435
- localStorage.removeItem("ROLES");
42436
- history.push("/");
42437
- };
42438
-
42439
- if (!user) {
42440
- return React.createElement(Loading, null);
42441
- }
42442
-
42443
- return React.createElement("div", {
42444
- className: "c-app c-default-layout"
42445
- }, !isNotification && React.createElement(TheSidebar, {
42446
- navigation: authNavigations
42447
- }), React.createElement("div", {
42448
- className: "c-wrapper"
42449
- }, !isNotification && React.createElement(TheHeader, {
42450
- onToggleModel: handleToggleModel
42451
- }), React.createElement("div", {
42452
- className: "c-body bg-white"
42453
- }, React.createElement(TheContent$1, {
42454
- routes: authRoutes
42455
- }))), React.createElement(ModelSelectRole, {
42456
- open: openModelSelectRole,
42457
- onToggleModel: handleToggleModel
42458
- }));
42459
- };
42460
-
42461
42003
  var buttonTextStyle = {
42462
42004
  fontWeight: 500
42463
42005
  };
@@ -51854,6 +51396,34 @@ var UserDetail = function UserDetail() {
51854
51396
  });
51855
51397
  };
51856
51398
 
51399
+ var loadingStyle = {
51400
+ minWidth: "100vw",
51401
+ minHeight: "100vh",
51402
+ position: "fixed",
51403
+ top: 0,
51404
+ left: 0,
51405
+ zIndex: 999999999,
51406
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
51407
+ display: "flex",
51408
+ justifyContent: "center",
51409
+ alignItems: "center"
51410
+ };
51411
+
51412
+ var Loading = function Loading() {
51413
+ var isLoading = useSelector(function (state) {
51414
+ return state.common.isLoading;
51415
+ });
51416
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51417
+ return isLoading ? React.createElement("div", {
51418
+ style: loadingStyle
51419
+ }, React.createElement("div", {
51420
+ className: "spinner-border text-secondary",
51421
+ role: "status"
51422
+ }, React.createElement("span", {
51423
+ className: "sr-only"
51424
+ }, "Loading..."))) : null;
51425
+ };
51426
+
51857
51427
  var ScrollToTop = function ScrollToTop() {
51858
51428
  var _useLocation = useLocation(),
51859
51429
  pathname = _useLocation.pathname;
@@ -54910,6 +54480,32 @@ var store = configureStore({
54910
54480
  }
54911
54481
  });
54912
54482
 
54483
+ var firstCheckToken = function firstCheckToken() {
54484
+ return Promise.resolve(_catch(function () {
54485
+ var token = getAccessToken();
54486
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54487
+ return tokenStatus.data ? true : false;
54488
+ }) : false;
54489
+ }, function () {
54490
+ return false;
54491
+ }));
54492
+ };
54493
+
54494
+ var canAccess = function canAccess(userRoles, componentRoles) {
54495
+ if (!Array.isArray(userRoles)) {
54496
+ return false;
54497
+ }
54498
+
54499
+ if (Array.isArray(componentRoles)) {
54500
+ var intersects = userRoles.filter(function (i) {
54501
+ return componentRoles.includes(i);
54502
+ });
54503
+ return intersects.length > 0;
54504
+ }
54505
+
54506
+ return true;
54507
+ };
54508
+
54913
54509
  var isInViewport = function isInViewport(el) {
54914
54510
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54915
54511
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54943,6 +54539,410 @@ var generateRandomString = (function () {
54943
54539
  return (Math.random() + 1).toString(36).substring(7);
54944
54540
  });
54945
54541
 
54542
+ var apiGetLanguage = function apiGetLanguage() {
54543
+ return api.get(BASE_URL + "/api/language");
54544
+ };
54545
+
54546
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54547
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
54548
+ };
54549
+
54550
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54551
+
54552
+ var useLanguages = function useLanguages() {
54553
+ var dispatch = useDispatch();
54554
+
54555
+ var _useTranslation = useTranslation(),
54556
+ i18n = _useTranslation.i18n;
54557
+
54558
+ var language = useSelector(function (state) {
54559
+ return state.common.language;
54560
+ });
54561
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54562
+
54563
+ var _useState = useState([]),
54564
+ languageList = _useState[0],
54565
+ setLanguageList = _useState[1];
54566
+
54567
+ var _useState2 = useState(false),
54568
+ dropdownOpen = _useState2[0],
54569
+ setDropdownOpen = _useState2[1];
54570
+
54571
+ var _useState3 = useState(defaultLanguage),
54572
+ currentLang = _useState3[0],
54573
+ setCurrentLang = _useState3[1];
54574
+
54575
+ var toggle = function toggle() {
54576
+ return setDropdownOpen(function (prevState) {
54577
+ return !prevState;
54578
+ });
54579
+ };
54580
+
54581
+ var changeLanguageApp = function changeLanguageApp(lang) {
54582
+ try {
54583
+ var _temp3 = function _temp3() {
54584
+ dispatch(setLoading(false));
54585
+ };
54586
+
54587
+ dispatch(setLoading(true));
54588
+
54589
+ var _temp4 = _catch(function () {
54590
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54591
+ i18n.changeLanguage(lang);
54592
+ setCurrentLang(lang);
54593
+ dispatch(setLanguage(lang));
54594
+ });
54595
+ }, function (err) {
54596
+ var _err$response, _err$response$data;
54597
+
54598
+ dispatch(setAlert({
54599
+ type: "danger",
54600
+ 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
54601
+ }));
54602
+ });
54603
+
54604
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54605
+ } catch (e) {
54606
+ return Promise.reject(e);
54607
+ }
54608
+ };
54609
+
54610
+ var getListLanguage = function getListLanguage() {
54611
+ try {
54612
+ var _temp6 = _catch(function () {
54613
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
54614
+ setLanguageList(res.data);
54615
+ });
54616
+ }, function (err) {
54617
+ var _err$response2, _err$response2$data;
54618
+
54619
+ dispatch(setAlert({
54620
+ type: "danger",
54621
+ 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
54622
+ }));
54623
+ });
54624
+
54625
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54626
+ } catch (e) {
54627
+ return Promise.reject(e);
54628
+ }
54629
+ };
54630
+
54631
+ useEffect(function () {
54632
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
54633
+ getListLanguage();
54634
+ }, []);
54635
+ return {
54636
+ languageList: languageList,
54637
+ toggle: toggle,
54638
+ dropdownOpen: dropdownOpen,
54639
+ currentLang: currentLang,
54640
+ changeLanguageApp: changeLanguageApp,
54641
+ setCurrentLang: setCurrentLang
54642
+ };
54643
+ };
54644
+
54645
+ var TheLanguageDropdown = function TheLanguageDropdown() {
54646
+ var _useLanguages = useLanguages(),
54647
+ languageList = _useLanguages.languageList,
54648
+ toggle = _useLanguages.toggle,
54649
+ dropdownOpen = _useLanguages.dropdownOpen,
54650
+ currentLang = _useLanguages.currentLang,
54651
+ changeLanguageApp = _useLanguages.changeLanguageApp;
54652
+
54653
+ var currentLanguage = useMemo(function () {
54654
+ var current = languageList.find(function (i) {
54655
+ return i.code === currentLang;
54656
+ });
54657
+ if (!current) return null;
54658
+ return React.createElement(React.Fragment, null, React.createElement("img", {
54659
+ className: "mr-2 " + styles['dropdown-menu-flag'],
54660
+ src: "" + getStaticFileUrl(current.image)
54661
+ }), " ", current.name);
54662
+ }, [currentLang, languageList]);
54663
+ return React.createElement(Dropdown, {
54664
+ isOpen: dropdownOpen,
54665
+ toggle: toggle,
54666
+ className: "" + styles["dropdown-menu"]
54667
+ }, React.createElement(DropdownToggle, {
54668
+ className: styles["header-avatar"] + " d-flex align-items-center"
54669
+ }, React.createElement("span", {
54670
+ style: {
54671
+ color: "#000",
54672
+ textTransform: "capitalize",
54673
+ display: 'flex',
54674
+ alignItems: 'center'
54675
+ }
54676
+ }, currentLanguage, React.createElement(BsChevronDown, {
54677
+ className: "ml-2",
54678
+ style: {
54679
+ fontSize: '10px'
54680
+ }
54681
+ }))), React.createElement(DropdownMenu, {
54682
+ className: styles["dropdown-content-language"]
54683
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54684
+ return React.createElement(DropdownItem, {
54685
+ key: lang.code,
54686
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54687
+ onClick: function onClick() {
54688
+ return changeLanguageApp(lang.code);
54689
+ }
54690
+ }, React.createElement("div", {
54691
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54692
+ }, React.createElement("span", {
54693
+ className: "mr-2 d-flex hover-opacity"
54694
+ }, React.createElement("img", {
54695
+ style: {
54696
+ width: "30px",
54697
+ height: "25px",
54698
+ borderRadius: "5px"
54699
+ },
54700
+ src: getStaticFileUrl(lang.image)
54701
+ })), lang.name));
54702
+ })));
54703
+ };
54704
+
54705
+ var TheHeader = function TheHeader(_ref) {
54706
+ var onToggleModel = _ref.onToggleModel;
54707
+ var dispatch = useDispatch();
54708
+ var sidebarShow = useSelector(function (state) {
54709
+ return state.common.sidebarShow;
54710
+ });
54711
+
54712
+ var _useTranslation = useTranslation(),
54713
+ t = _useTranslation.t;
54714
+
54715
+ var toggleSidebarMobile = function toggleSidebarMobile() {
54716
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54717
+ dispatch(setSidebar(val));
54718
+ };
54719
+
54720
+ var isDistrict = window.location.host.includes("-district");
54721
+ return React.createElement(CHeader, {
54722
+ withSubheader: true,
54723
+ className: "d-flex align-items-center justify-content-end"
54724
+ }, React.createElement(CToggler, {
54725
+ inHeader: true,
54726
+ className: "ml-md-3 d-lg-none",
54727
+ onClick: toggleSidebarMobile
54728
+ }), React.createElement(CHeaderBrand, {
54729
+ className: "mx-auto flex-grow-1 d-lg-none",
54730
+ to: "/"
54731
+ }, React.createElement("img", {
54732
+ src: getStaticFileUrl(Images.LOGO_HEADER),
54733
+ className: styles["header-logo"]
54734
+ })), React.createElement(CHeaderNav, {
54735
+ className: "pr-3"
54736
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54737
+ className: "mr-3",
54738
+ style: {
54739
+ color: '#000'
54740
+ },
54741
+ href: '/privacy-policy',
54742
+ target: "blank"
54743
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54744
+ onToggleModel: onToggleModel
54745
+ })));
54746
+ };
54747
+
54748
+ var ModelSelectRole = function ModelSelectRole(_ref) {
54749
+ var _handleUserRole;
54750
+
54751
+ var open = _ref.open,
54752
+ onToggleModel = _ref.onToggleModel;
54753
+ var dispatch = useDispatch();
54754
+
54755
+ var _useTranslation = useTranslation(),
54756
+ t = _useTranslation.t;
54757
+
54758
+ var history = useHistory();
54759
+ var pathname = window.location.pathname;
54760
+ var user = useSelector(function (state) {
54761
+ return state.common.user;
54762
+ });
54763
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
54764
+
54765
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54766
+ dispatch(setLoading(true));
54767
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54768
+ dispatch(setUser(_extends({}, user, {
54769
+ roles: roleSelect
54770
+ })));
54771
+ localStorage.setItem("ROLES", roleSelect.toString());
54772
+ onToggleModel();
54773
+
54774
+ if (roles.includes("Parent")) {
54775
+ history.push("/parent");
54776
+ } else if (roles.includes("Admin")) {
54777
+ history.push("/admin/home");
54778
+ } else {
54779
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
54780
+ }
54781
+ };
54782
+
54783
+ return React.createElement(Modal, {
54784
+ isOpen: open,
54785
+ toggle: function toggle() {
54786
+ return onToggleModel();
54787
+ },
54788
+ className: "" + styles["model-switch-roles"],
54789
+ centered: true
54790
+ }, React.createElement("p", {
54791
+ className: "" + styles["title"]
54792
+ }, 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) {
54793
+ return React.createElement("p", {
54794
+ key: r,
54795
+ 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" : ""],
54796
+ onClick: function onClick() {
54797
+ return handleSelectUserRoles([r]);
54798
+ }
54799
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54800
+ })));
54801
+ };
54802
+
54803
+ var TheLayout = function TheLayout(_ref) {
54804
+ var routes = _ref.routes,
54805
+ navigation = _ref.navigation;
54806
+ var history = useHistory();
54807
+ var dispatch = useDispatch();
54808
+ var user = useSelector(function (state) {
54809
+ return state.common.user;
54810
+ });
54811
+ var language = useSelector(function (state) {
54812
+ return state.common.language;
54813
+ });
54814
+
54815
+ var _useState = useState(false),
54816
+ openModelSelectRole = _useState[0],
54817
+ setOpenModelSelectRole = _useState[1];
54818
+
54819
+ var _useTranslation = useTranslation(),
54820
+ t = _useTranslation.t;
54821
+
54822
+ var location = useLocation();
54823
+ var isNotification = location.pathname.includes("notifications");
54824
+ var isDistrict = window.location.host.includes("-district");
54825
+
54826
+ var handleToggleModel = function handleToggleModel() {
54827
+ setOpenModelSelectRole(!openModelSelectRole);
54828
+ };
54829
+
54830
+ var authRoutes = useMemo(function () {
54831
+ return routes.filter(function (route) {
54832
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54833
+ }).filter(function (route) {
54834
+ return !!route.isDistrict === isDistrict;
54835
+ });
54836
+ }, [user, language]);
54837
+ var authNavigations = useMemo(function () {
54838
+ return navigation.map(function (item) {
54839
+ var _item$_children, _item$_children2;
54840
+
54841
+ return _extends({}, item, {
54842
+ name: t(item.name),
54843
+ _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) {
54844
+ return _extends({}, x, {
54845
+ name: t(x.name)
54846
+ });
54847
+ }) : undefined
54848
+ });
54849
+ }).filter(function (nav) {
54850
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54851
+ }).filter(function (nav) {
54852
+ return !!nav.isDistrict === isDistrict;
54853
+ });
54854
+ }, [user, language]);
54855
+
54856
+ var getInformationSetting = function getInformationSetting() {
54857
+ try {
54858
+ var _temp2 = _catch(function () {
54859
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
54860
+ dispatch(setSandboxMode(res.data.isSandboxMode));
54861
+ });
54862
+ }, function (err) {
54863
+ console.error(err);
54864
+ });
54865
+
54866
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54867
+ } catch (e) {
54868
+ return Promise.reject(e);
54869
+ }
54870
+ };
54871
+
54872
+ useEffect(function () {
54873
+ checkAuthentication();
54874
+ }, []);
54875
+ useEffect(function () {
54876
+ getInformationSetting();
54877
+ }, [location.pathname]);
54878
+
54879
+ var checkAuthentication = function checkAuthentication() {
54880
+ try {
54881
+ var _temp4 = _catch(function () {
54882
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54883
+ tokenStatus ? loadInfo() : resetAuth();
54884
+ });
54885
+ }, function () {
54886
+ resetAuth();
54887
+ });
54888
+
54889
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54890
+ } catch (e) {
54891
+ return Promise.reject(e);
54892
+ }
54893
+ };
54894
+
54895
+ var loadInfo = function loadInfo() {
54896
+ try {
54897
+ var _temp6 = _catch(function () {
54898
+ return Promise.resolve(getInfo()).then(function (info) {
54899
+ var _info$data, _info$data$roles;
54900
+
54901
+ 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"))) {
54902
+ resetAuth();
54903
+ }
54904
+
54905
+ dispatch(setUser(info.data));
54906
+ });
54907
+ }, function () {
54908
+ resetAuth();
54909
+ });
54910
+
54911
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54912
+ } catch (e) {
54913
+ return Promise.reject(e);
54914
+ }
54915
+ };
54916
+
54917
+ var resetAuth = function resetAuth() {
54918
+ localStorage.removeItem(ACCESS_TOKEN);
54919
+ sessionStorage.removeItem(ACCESS_TOKEN);
54920
+ localStorage.removeItem("ROLES");
54921
+ history.push("/");
54922
+ };
54923
+
54924
+ if (!user) {
54925
+ return React.createElement(Loading, null);
54926
+ }
54927
+
54928
+ return React.createElement("div", {
54929
+ className: "c-app c-default-layout"
54930
+ }, !isNotification && React.createElement(TheSidebar, {
54931
+ navigation: authNavigations
54932
+ }), React.createElement("div", {
54933
+ className: "c-wrapper"
54934
+ }, !isNotification && React.createElement(TheHeader, {
54935
+ onToggleModel: handleToggleModel
54936
+ }), React.createElement("div", {
54937
+ className: "c-body bg-white"
54938
+ }, React.createElement(TheContent$1, {
54939
+ routes: authRoutes
54940
+ }))), React.createElement(ModelSelectRole, {
54941
+ open: openModelSelectRole,
54942
+ onToggleModel: handleToggleModel
54943
+ }));
54944
+ };
54945
+
54946
54946
  var amplitudeClient = amplitude;
54947
54947
 
54948
54948
  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 };