mario-core 2.9.337-release → 2.9.338-release

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.
package/dist/index.js CHANGED
@@ -39811,212 +39811,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
39811
39811
  })), t("log_out")))));
39812
39812
  };
39813
39813
 
39814
- var apiGetLanguage = function apiGetLanguage() {
39815
- return api.get(BASE_URL + "/api/language");
39816
- };
39817
-
39818
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
39819
- return api.put(BASE_URL + "/api/language?lang=" + lang);
39820
- };
39821
-
39822
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
39823
-
39824
- var useLanguages = function useLanguages() {
39825
- var dispatch = reactRedux.useDispatch();
39826
-
39827
- var _useTranslation = reactI18next.useTranslation(),
39828
- i18n = _useTranslation.i18n;
39829
-
39830
- var language = reactRedux.useSelector(function (state) {
39831
- return state.common.language;
39832
- });
39833
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
39834
-
39835
- var _useState = React.useState([]),
39836
- languageList = _useState[0],
39837
- setLanguageList = _useState[1];
39838
-
39839
- var _useState2 = React.useState(false),
39840
- dropdownOpen = _useState2[0],
39841
- setDropdownOpen = _useState2[1];
39842
-
39843
- var _useState3 = React.useState(defaultLanguage),
39844
- currentLang = _useState3[0],
39845
- setCurrentLang = _useState3[1];
39846
-
39847
- var toggle = function toggle() {
39848
- return setDropdownOpen(function (prevState) {
39849
- return !prevState;
39850
- });
39851
- };
39852
-
39853
- var changeLanguageApp = function changeLanguageApp(lang) {
39854
- try {
39855
- var _temp3 = function _temp3() {
39856
- dispatch(setLoading(false));
39857
- };
39858
-
39859
- dispatch(setLoading(true));
39860
-
39861
- var _temp4 = _catch(function () {
39862
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
39863
- i18n.changeLanguage(lang);
39864
- setCurrentLang(lang);
39865
- dispatch(setLanguage(lang));
39866
- });
39867
- }, function (err) {
39868
- var _err$response, _err$response$data;
39869
-
39870
- dispatch(setAlert({
39871
- type: "danger",
39872
- 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
39873
- }));
39874
- });
39875
-
39876
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
39877
- } catch (e) {
39878
- return Promise.reject(e);
39879
- }
39880
- };
39881
-
39882
- var getListLanguage = function getListLanguage() {
39883
- try {
39884
- var _temp6 = _catch(function () {
39885
- return Promise.resolve(apiGetLanguage()).then(function (res) {
39886
- setLanguageList(res.data);
39887
- });
39888
- }, function (err) {
39889
- var _err$response2, _err$response2$data;
39890
-
39891
- dispatch(setAlert({
39892
- type: "danger",
39893
- 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
39894
- }));
39895
- });
39896
-
39897
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
39898
- } catch (e) {
39899
- return Promise.reject(e);
39900
- }
39901
- };
39902
-
39903
- React.useEffect(function () {
39904
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
39905
- getListLanguage();
39906
- }, []);
39907
- return {
39908
- languageList: languageList,
39909
- toggle: toggle,
39910
- dropdownOpen: dropdownOpen,
39911
- currentLang: currentLang,
39912
- changeLanguageApp: changeLanguageApp,
39913
- setCurrentLang: setCurrentLang
39914
- };
39915
- };
39916
-
39917
- var TheLanguageDropdown = function TheLanguageDropdown() {
39918
- var _useLanguages = useLanguages(),
39919
- languageList = _useLanguages.languageList,
39920
- toggle = _useLanguages.toggle,
39921
- dropdownOpen = _useLanguages.dropdownOpen,
39922
- currentLang = _useLanguages.currentLang,
39923
- changeLanguageApp = _useLanguages.changeLanguageApp;
39924
-
39925
- var currentLanguage = React.useMemo(function () {
39926
- var current = languageList.find(function (i) {
39927
- return i.code === currentLang;
39928
- });
39929
- if (!current) return null;
39930
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
39931
- className: "mr-2 " + styles['dropdown-menu-flag'],
39932
- src: "" + getStaticFileUrl(current.image)
39933
- }), " ", current.name);
39934
- }, [currentLang, languageList]);
39935
- return React__default.createElement(reactstrap.Dropdown, {
39936
- isOpen: dropdownOpen,
39937
- toggle: toggle,
39938
- className: "" + styles["dropdown-menu"]
39939
- }, React__default.createElement(reactstrap.DropdownToggle, {
39940
- className: styles["header-avatar"] + " d-flex align-items-center"
39941
- }, React__default.createElement("span", {
39942
- style: {
39943
- color: "#000",
39944
- textTransform: "capitalize",
39945
- display: 'flex',
39946
- alignItems: 'center'
39947
- }
39948
- }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
39949
- className: "ml-2",
39950
- style: {
39951
- fontSize: '10px'
39952
- }
39953
- }))), React__default.createElement(reactstrap.DropdownMenu, {
39954
- className: styles["dropdown-content-language"]
39955
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
39956
- return React__default.createElement(reactstrap.DropdownItem, {
39957
- key: lang.code,
39958
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
39959
- onClick: function onClick() {
39960
- return changeLanguageApp(lang.code);
39961
- }
39962
- }, React__default.createElement("div", {
39963
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
39964
- }, React__default.createElement("span", {
39965
- className: "mr-2 d-flex hover-opacity"
39966
- }, React__default.createElement("img", {
39967
- style: {
39968
- width: "30px",
39969
- height: "25px",
39970
- borderRadius: "5px"
39971
- },
39972
- src: getStaticFileUrl(lang.image)
39973
- })), lang.name));
39974
- })));
39975
- };
39976
-
39977
- var TheHeader = function TheHeader(_ref) {
39978
- var onToggleModel = _ref.onToggleModel;
39979
- var dispatch = reactRedux.useDispatch();
39980
- var sidebarShow = reactRedux.useSelector(function (state) {
39981
- return state.common.sidebarShow;
39982
- });
39983
-
39984
- var _useTranslation = reactI18next.useTranslation(),
39985
- t = _useTranslation.t;
39986
-
39987
- var toggleSidebarMobile = function toggleSidebarMobile() {
39988
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
39989
- dispatch(setSidebar(val));
39990
- };
39991
-
39992
- var isDistrict = window.location.host.includes("-district");
39993
- return React__default.createElement(react.CHeader, {
39994
- withSubheader: true,
39995
- className: "d-flex align-items-center justify-content-end"
39996
- }, React__default.createElement(react.CToggler, {
39997
- inHeader: true,
39998
- className: "ml-md-3 d-lg-none",
39999
- onClick: toggleSidebarMobile
40000
- }), React__default.createElement(react.CHeaderBrand, {
40001
- className: "mx-auto flex-grow-1 d-lg-none",
40002
- to: "/"
40003
- }, React__default.createElement("img", {
40004
- src: getStaticFileUrl(Images.LOGO_HEADER),
40005
- className: styles["header-logo"]
40006
- })), React__default.createElement(react.CHeaderNav, {
40007
- className: "pr-3"
40008
- }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
40009
- className: "mr-3",
40010
- style: {
40011
- color: '#000'
40012
- },
40013
- href: '/privacy-policy',
40014
- target: "blank"
40015
- }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
40016
- onToggleModel: onToggleModel
40017
- })));
40018
- };
40019
-
40020
39814
  var TITLE$3 = "Not found";
40021
39815
 
40022
39816
  var NotFound = function NotFound() {
@@ -40074,277 +39868,25 @@ var TheContent = function TheContent(_ref) {
40074
39868
 
40075
39869
  var TheContent$1 = React__default.memo(TheContent);
40076
39870
 
40077
- var loadingStyle = {
40078
- minWidth: "100vw",
40079
- minHeight: "100vh",
40080
- position: "fixed",
40081
- top: 0,
40082
- left: 0,
40083
- zIndex: 999999999,
40084
- backgroundColor: "rgba(0, 0, 0, 0.4)",
40085
- display: "flex",
40086
- justifyContent: "center",
40087
- alignItems: "center"
39871
+ var buttonTextStyle = {
39872
+ fontWeight: 500
40088
39873
  };
40089
-
40090
- var Loading = function Loading() {
40091
- var isLoading = reactRedux.useSelector(function (state) {
40092
- return state.common.isLoading;
40093
- });
40094
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
40095
- return isLoading ? React__default.createElement("div", {
40096
- style: loadingStyle
40097
- }, React__default.createElement("div", {
40098
- className: "spinner-border text-secondary",
40099
- role: "status"
40100
- }, React__default.createElement("span", {
40101
- className: "sr-only"
40102
- }, "Loading..."))) : null;
39874
+ var buttonStyle = {
39875
+ height: 38
40103
39876
  };
40104
39877
 
40105
- var firstCheckToken = function firstCheckToken() {
40106
- return Promise.resolve(_catch(function () {
40107
- var token = getAccessToken();
40108
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
40109
- return tokenStatus.data ? true : false;
40110
- }) : false;
40111
- }, function () {
40112
- return false;
40113
- }));
40114
- };
40115
-
40116
- var canAccess = function canAccess(userRoles, componentRoles) {
40117
- if (!Array.isArray(userRoles)) {
40118
- return false;
40119
- }
40120
-
40121
- if (Array.isArray(componentRoles)) {
40122
- var intersects = userRoles.filter(function (i) {
40123
- return componentRoles.includes(i);
40124
- });
40125
- return intersects.length > 0;
40126
- }
40127
-
40128
- return true;
40129
- };
40130
-
40131
- var ModelSelectRole = function ModelSelectRole(_ref) {
40132
- var _handleUserRole;
40133
-
40134
- var open = _ref.open,
40135
- onToggleModel = _ref.onToggleModel;
40136
- var dispatch = reactRedux.useDispatch();
40137
-
40138
- var _useTranslation = reactI18next.useTranslation(),
40139
- t = _useTranslation.t;
40140
-
40141
- var history = reactRouterDom.useHistory();
40142
- var pathname = window.location.pathname;
40143
- var user = reactRedux.useSelector(function (state) {
40144
- return state.common.user;
40145
- });
40146
- var roles = user === null || user === void 0 ? void 0 : user.roles;
40147
-
40148
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
40149
- dispatch(setLoading(true));
40150
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
40151
- dispatch(setUser(_extends({}, user, {
40152
- roles: roleSelect
40153
- })));
40154
- localStorage.setItem("ROLES", roleSelect.toString());
40155
- onToggleModel();
40156
-
40157
- if (roles.includes("Parent")) {
40158
- history.push("/parent");
40159
- } else if (roles.includes("Admin")) {
40160
- history.push("/admin/home");
40161
- } else {
40162
- pathname !== "/home" ? history.push("/home") : window.location.reload();
40163
- }
40164
- };
40165
-
40166
- return React__default.createElement(reactstrap.Modal, {
40167
- isOpen: open,
40168
- toggle: function toggle() {
40169
- return onToggleModel();
40170
- },
40171
- className: "" + styles["model-switch-roles"],
40172
- centered: true
40173
- }, React__default.createElement("p", {
40174
- className: "" + styles["title"]
40175
- }, t("continue_as")), React__default.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
40176
- return React__default.createElement("p", {
40177
- key: r,
40178
- 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" : ""],
40179
- onClick: function onClick() {
40180
- return handleSelectUserRoles([r]);
40181
- }
40182
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
40183
- })));
40184
- };
40185
-
40186
- var TheLayout = function TheLayout(_ref) {
40187
- var routes = _ref.routes,
40188
- navigation = _ref.navigation;
40189
- var history = reactRouterDom.useHistory();
40190
- var dispatch = reactRedux.useDispatch();
40191
- var user = reactRedux.useSelector(function (state) {
40192
- return state.common.user;
40193
- });
40194
- var language = reactRedux.useSelector(function (state) {
40195
- return state.common.language;
40196
- });
40197
-
40198
- var _useState = React.useState(false),
40199
- openModelSelectRole = _useState[0],
40200
- setOpenModelSelectRole = _useState[1];
40201
-
40202
- var _useTranslation = reactI18next.useTranslation(),
40203
- t = _useTranslation.t;
40204
-
40205
- var location = reactRouterDom.useLocation();
40206
- var isNotification = location.pathname.includes("notifications");
40207
- var isDistrict = window.location.host.includes("-district");
40208
-
40209
- var handleToggleModel = function handleToggleModel() {
40210
- setOpenModelSelectRole(!openModelSelectRole);
40211
- };
40212
-
40213
- var authRoutes = React.useMemo(function () {
40214
- return routes.filter(function (route) {
40215
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
40216
- }).filter(function (route) {
40217
- return !!route.isDistrict === isDistrict;
40218
- });
40219
- }, [user, language]);
40220
- var authNavigations = React.useMemo(function () {
40221
- return navigation.map(function (item) {
40222
- var _item$_children, _item$_children2;
40223
-
40224
- return _extends({}, item, {
40225
- name: t(item.name),
40226
- _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) {
40227
- return _extends({}, x, {
40228
- name: t(x.name)
40229
- });
40230
- }) : undefined
40231
- });
40232
- }).filter(function (nav) {
40233
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
40234
- }).filter(function (nav) {
40235
- return !!nav.isDistrict === isDistrict;
40236
- });
40237
- }, [user, language]);
40238
-
40239
- var getInformationSetting = function getInformationSetting() {
40240
- try {
40241
- var _temp2 = _catch(function () {
40242
- return Promise.resolve(getSchoolSettings()).then(function (res) {
40243
- dispatch(setSandboxMode(res.data.isSandboxMode));
40244
- });
40245
- }, function (err) {
40246
- console.error(err);
40247
- });
40248
-
40249
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
40250
- } catch (e) {
40251
- return Promise.reject(e);
40252
- }
40253
- };
40254
-
40255
- React.useEffect(function () {
40256
- checkAuthentication();
40257
- }, []);
40258
- React.useEffect(function () {
40259
- getInformationSetting();
40260
- }, [location.pathname]);
40261
-
40262
- var checkAuthentication = function checkAuthentication() {
40263
- try {
40264
- var _temp4 = _catch(function () {
40265
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
40266
- tokenStatus ? loadInfo() : resetAuth();
40267
- });
40268
- }, function () {
40269
- resetAuth();
40270
- });
40271
-
40272
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
40273
- } catch (e) {
40274
- return Promise.reject(e);
40275
- }
40276
- };
40277
-
40278
- var loadInfo = function loadInfo() {
40279
- try {
40280
- var _temp6 = _catch(function () {
40281
- return Promise.resolve(getInfo()).then(function (info) {
40282
- var _info$data, _info$data$roles;
40283
-
40284
- 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"))) {
40285
- resetAuth();
40286
- }
40287
-
40288
- dispatch(setUser(info.data));
40289
- });
40290
- }, function () {
40291
- resetAuth();
40292
- });
40293
-
40294
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
40295
- } catch (e) {
40296
- return Promise.reject(e);
40297
- }
40298
- };
40299
-
40300
- var resetAuth = function resetAuth() {
40301
- localStorage.removeItem(ACCESS_TOKEN);
40302
- sessionStorage.removeItem(ACCESS_TOKEN);
40303
- localStorage.removeItem("ROLES");
40304
- history.push("/");
40305
- };
40306
-
40307
- if (!user) {
40308
- return React__default.createElement(Loading, null);
40309
- }
40310
-
40311
- return React__default.createElement("div", {
40312
- className: "c-app c-default-layout"
40313
- }, !isNotification && React__default.createElement(TheSidebar, {
40314
- navigation: authNavigations
40315
- }), React__default.createElement("div", {
40316
- className: "c-wrapper"
40317
- }, !isNotification && React__default.createElement(TheHeader, {
40318
- onToggleModel: handleToggleModel
40319
- }), React__default.createElement("div", {
40320
- className: "c-body bg-white"
40321
- }, React__default.createElement(TheContent$1, {
40322
- routes: authRoutes
40323
- }))), React__default.createElement(ModelSelectRole, {
40324
- open: openModelSelectRole,
40325
- onToggleModel: handleToggleModel
40326
- }));
40327
- };
40328
-
40329
- var buttonTextStyle = {
40330
- fontWeight: 500
40331
- };
40332
- var buttonStyle = {
40333
- height: 38
40334
- };
40335
-
40336
- var AddButton = function AddButton(_ref) {
40337
- var text = _ref.text,
40338
- onClick = _ref.onClick;
40339
- return React__default.createElement(reactstrap.Button, {
40340
- onClick: onClick,
40341
- color: 'success',
40342
- style: buttonStyle,
40343
- className: 'd-flex align-items-center'
40344
- }, React__default.createElement(fa.FaPlus, null), React__default.createElement("span", {
40345
- className: 'ml-2',
40346
- style: buttonTextStyle
40347
- }, text));
39878
+ var AddButton = function AddButton(_ref) {
39879
+ var text = _ref.text,
39880
+ onClick = _ref.onClick;
39881
+ return React__default.createElement(reactstrap.Button, {
39882
+ onClick: onClick,
39883
+ color: 'success',
39884
+ style: buttonStyle,
39885
+ className: 'd-flex align-items-center'
39886
+ }, React__default.createElement(fa.FaPlus, null), React__default.createElement("span", {
39887
+ className: 'ml-2',
39888
+ style: buttonTextStyle
39889
+ }, text));
40348
39890
  };
40349
39891
 
40350
39892
  var DeleteButtonIcon = function DeleteButtonIcon(_ref) {
@@ -46138,19 +45680,47 @@ var UserDetail = function UserDetail() {
46138
45680
  });
46139
45681
  };
46140
45682
 
46141
- var ScrollToTop = function ScrollToTop() {
46142
- var _useLocation = reactRouterDom.useLocation(),
46143
- pathname = _useLocation.pathname;
46144
-
46145
- React.useEffect(function () {
46146
- window.scrollTo(0, 0);
46147
- }, [pathname]);
46148
- return null;
45683
+ var loadingStyle = {
45684
+ minWidth: "100vw",
45685
+ minHeight: "100vh",
45686
+ position: "fixed",
45687
+ top: 0,
45688
+ left: 0,
45689
+ zIndex: 999999999,
45690
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
45691
+ display: "flex",
45692
+ justifyContent: "center",
45693
+ alignItems: "center"
46149
45694
  };
46150
45695
 
46151
- var modalInfo = function modalInfo(type) {
46152
- switch (type) {
46153
- case "danger":
45696
+ var Loading = function Loading() {
45697
+ var isLoading = reactRedux.useSelector(function (state) {
45698
+ return state.common.isLoading;
45699
+ });
45700
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
45701
+ return isLoading ? React__default.createElement("div", {
45702
+ style: loadingStyle
45703
+ }, React__default.createElement("div", {
45704
+ className: "spinner-border text-secondary",
45705
+ role: "status"
45706
+ }, React__default.createElement("span", {
45707
+ className: "sr-only"
45708
+ }, "Loading..."))) : null;
45709
+ };
45710
+
45711
+ var ScrollToTop = function ScrollToTop() {
45712
+ var _useLocation = reactRouterDom.useLocation(),
45713
+ pathname = _useLocation.pathname;
45714
+
45715
+ React.useEffect(function () {
45716
+ window.scrollTo(0, 0);
45717
+ }, [pathname]);
45718
+ return null;
45719
+ };
45720
+
45721
+ var modalInfo = function modalInfo(type) {
45722
+ switch (type) {
45723
+ case "danger":
46154
45724
  return {
46155
45725
  header: "Error",
46156
45726
  color: COLORS.DANGER
@@ -49157,6 +48727,32 @@ var store = toolkit.configureStore({
49157
48727
  }
49158
48728
  });
49159
48729
 
48730
+ var firstCheckToken = function firstCheckToken() {
48731
+ return Promise.resolve(_catch(function () {
48732
+ var token = getAccessToken();
48733
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
48734
+ return tokenStatus.data ? true : false;
48735
+ }) : false;
48736
+ }, function () {
48737
+ return false;
48738
+ }));
48739
+ };
48740
+
48741
+ var canAccess = function canAccess(userRoles, componentRoles) {
48742
+ if (!Array.isArray(userRoles)) {
48743
+ return false;
48744
+ }
48745
+
48746
+ if (Array.isArray(componentRoles)) {
48747
+ var intersects = userRoles.filter(function (i) {
48748
+ return componentRoles.includes(i);
48749
+ });
48750
+ return intersects.length > 0;
48751
+ }
48752
+
48753
+ return true;
48754
+ };
48755
+
49160
48756
  var isInViewport = function isInViewport(el) {
49161
48757
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
49162
48758
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -49192,6 +48788,412 @@ var generateRandomString = (function () {
49192
48788
 
49193
48789
  var amplitudeClient = amplitude.getInstance();
49194
48790
 
48791
+ var apiGetLanguage = function apiGetLanguage() {
48792
+ return api.get(BASE_URL + "/api/language");
48793
+ };
48794
+
48795
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
48796
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
48797
+ };
48798
+
48799
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
48800
+
48801
+ var useLanguages = function useLanguages() {
48802
+ var dispatch = reactRedux.useDispatch();
48803
+
48804
+ var _useTranslation = reactI18next.useTranslation(),
48805
+ i18n = _useTranslation.i18n;
48806
+
48807
+ var language = reactRedux.useSelector(function (state) {
48808
+ return state.common.language;
48809
+ });
48810
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
48811
+
48812
+ var _useState = React.useState([]),
48813
+ languageList = _useState[0],
48814
+ setLanguageList = _useState[1];
48815
+
48816
+ var _useState2 = React.useState(false),
48817
+ dropdownOpen = _useState2[0],
48818
+ setDropdownOpen = _useState2[1];
48819
+
48820
+ var _useState3 = React.useState(defaultLanguage),
48821
+ currentLang = _useState3[0],
48822
+ setCurrentLang = _useState3[1];
48823
+
48824
+ var toggle = function toggle() {
48825
+ return setDropdownOpen(function (prevState) {
48826
+ return !prevState;
48827
+ });
48828
+ };
48829
+
48830
+ var changeLanguageApp = function changeLanguageApp(lang) {
48831
+ try {
48832
+ var _temp3 = function _temp3() {
48833
+ dispatch(setLoading(false));
48834
+ };
48835
+
48836
+ dispatch(setLoading(true));
48837
+
48838
+ var _temp4 = _catch(function () {
48839
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
48840
+ i18n.changeLanguage(lang);
48841
+ setCurrentLang(lang);
48842
+ dispatch(setLanguage(lang));
48843
+ });
48844
+ }, function (err) {
48845
+ var _err$response, _err$response$data;
48846
+
48847
+ dispatch(setAlert({
48848
+ type: "danger",
48849
+ 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
48850
+ }));
48851
+ });
48852
+
48853
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
48854
+ } catch (e) {
48855
+ return Promise.reject(e);
48856
+ }
48857
+ };
48858
+
48859
+ var getListLanguage = function getListLanguage() {
48860
+ try {
48861
+ var _temp6 = _catch(function () {
48862
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
48863
+ setLanguageList(res.data);
48864
+ });
48865
+ }, function (err) {
48866
+ var _err$response2, _err$response2$data;
48867
+
48868
+ dispatch(setAlert({
48869
+ type: "danger",
48870
+ 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
48871
+ }));
48872
+ });
48873
+
48874
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
48875
+ } catch (e) {
48876
+ return Promise.reject(e);
48877
+ }
48878
+ };
48879
+
48880
+ React.useEffect(function () {
48881
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
48882
+ getListLanguage();
48883
+ }, []);
48884
+ return {
48885
+ languageList: languageList,
48886
+ toggle: toggle,
48887
+ dropdownOpen: dropdownOpen,
48888
+ currentLang: currentLang,
48889
+ changeLanguageApp: changeLanguageApp,
48890
+ setCurrentLang: setCurrentLang
48891
+ };
48892
+ };
48893
+
48894
+ var TheLanguageDropdown = function TheLanguageDropdown() {
48895
+ var _useLanguages = useLanguages(),
48896
+ languageList = _useLanguages.languageList,
48897
+ toggle = _useLanguages.toggle,
48898
+ dropdownOpen = _useLanguages.dropdownOpen,
48899
+ currentLang = _useLanguages.currentLang,
48900
+ changeLanguageApp = _useLanguages.changeLanguageApp;
48901
+
48902
+ var currentLanguage = React.useMemo(function () {
48903
+ var current = languageList.find(function (i) {
48904
+ return i.code === currentLang;
48905
+ });
48906
+ if (!current) return null;
48907
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
48908
+ className: "mr-2 " + styles['dropdown-menu-flag'],
48909
+ src: "" + getStaticFileUrl(current.image)
48910
+ }), " ", current.name);
48911
+ }, [currentLang, languageList]);
48912
+ return React__default.createElement(reactstrap.Dropdown, {
48913
+ isOpen: dropdownOpen,
48914
+ toggle: toggle,
48915
+ className: "" + styles["dropdown-menu"]
48916
+ }, React__default.createElement(reactstrap.DropdownToggle, {
48917
+ className: styles["header-avatar"] + " d-flex align-items-center"
48918
+ }, React__default.createElement("span", {
48919
+ style: {
48920
+ color: "#000",
48921
+ textTransform: "capitalize",
48922
+ display: 'flex',
48923
+ alignItems: 'center'
48924
+ }
48925
+ }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
48926
+ className: "ml-2",
48927
+ style: {
48928
+ fontSize: '10px'
48929
+ }
48930
+ }))), React__default.createElement(reactstrap.DropdownMenu, {
48931
+ className: styles["dropdown-content-language"]
48932
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
48933
+ return React__default.createElement(reactstrap.DropdownItem, {
48934
+ key: lang.code,
48935
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
48936
+ onClick: function onClick() {
48937
+ return changeLanguageApp(lang.code);
48938
+ }
48939
+ }, React__default.createElement("div", {
48940
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
48941
+ }, React__default.createElement("span", {
48942
+ className: "mr-2 d-flex hover-opacity"
48943
+ }, React__default.createElement("img", {
48944
+ style: {
48945
+ width: "30px",
48946
+ height: "25px",
48947
+ borderRadius: "5px"
48948
+ },
48949
+ src: getStaticFileUrl(lang.image)
48950
+ })), lang.name));
48951
+ })));
48952
+ };
48953
+
48954
+ var TheHeader = function TheHeader(_ref) {
48955
+ var onToggleModel = _ref.onToggleModel;
48956
+ var dispatch = reactRedux.useDispatch();
48957
+ var sidebarShow = reactRedux.useSelector(function (state) {
48958
+ return state.common.sidebarShow;
48959
+ });
48960
+
48961
+ var _useTranslation = reactI18next.useTranslation(),
48962
+ t = _useTranslation.t;
48963
+
48964
+ var toggleSidebarMobile = function toggleSidebarMobile() {
48965
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
48966
+ dispatch(setSidebar(val));
48967
+ };
48968
+
48969
+ var isDistrict = window.location.host.includes("-district");
48970
+ return React__default.createElement(react.CHeader, {
48971
+ withSubheader: true,
48972
+ className: "d-flex align-items-center justify-content-end"
48973
+ }, React__default.createElement(react.CToggler, {
48974
+ inHeader: true,
48975
+ className: "ml-md-3 d-lg-none",
48976
+ onClick: toggleSidebarMobile
48977
+ }), React__default.createElement(react.CHeaderBrand, {
48978
+ className: "mx-auto flex-grow-1 d-lg-none",
48979
+ to: "/"
48980
+ }, React__default.createElement("img", {
48981
+ src: getStaticFileUrl(Images.LOGO_HEADER),
48982
+ className: styles["header-logo"]
48983
+ })), React__default.createElement(react.CHeaderNav, {
48984
+ className: "pr-3"
48985
+ }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
48986
+ className: "mr-3",
48987
+ style: {
48988
+ color: '#000'
48989
+ },
48990
+ href: '/privacy-policy',
48991
+ target: "blank"
48992
+ }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
48993
+ onToggleModel: onToggleModel
48994
+ })));
48995
+ };
48996
+
48997
+ var ModelSelectRole = function ModelSelectRole(_ref) {
48998
+ var _handleUserRole;
48999
+
49000
+ var open = _ref.open,
49001
+ onToggleModel = _ref.onToggleModel;
49002
+ var dispatch = reactRedux.useDispatch();
49003
+
49004
+ var _useTranslation = reactI18next.useTranslation(),
49005
+ t = _useTranslation.t;
49006
+
49007
+ var history = reactRouterDom.useHistory();
49008
+ var pathname = window.location.pathname;
49009
+ var user = reactRedux.useSelector(function (state) {
49010
+ return state.common.user;
49011
+ });
49012
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
49013
+
49014
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
49015
+ dispatch(setLoading(true));
49016
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
49017
+ dispatch(setUser(_extends({}, user, {
49018
+ roles: roleSelect
49019
+ })));
49020
+ localStorage.setItem("ROLES", roleSelect.toString());
49021
+ onToggleModel();
49022
+
49023
+ if (roles.includes("Parent")) {
49024
+ history.push("/parent");
49025
+ } else if (roles.includes("Admin")) {
49026
+ history.push("/admin/home");
49027
+ } else {
49028
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
49029
+ }
49030
+ };
49031
+
49032
+ return React__default.createElement(reactstrap.Modal, {
49033
+ isOpen: open,
49034
+ toggle: function toggle() {
49035
+ return onToggleModel();
49036
+ },
49037
+ className: "" + styles["model-switch-roles"],
49038
+ centered: true
49039
+ }, React__default.createElement("p", {
49040
+ className: "" + styles["title"]
49041
+ }, t("continue_as")), React__default.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
49042
+ return React__default.createElement("p", {
49043
+ key: r,
49044
+ 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" : ""],
49045
+ onClick: function onClick() {
49046
+ return handleSelectUserRoles([r]);
49047
+ }
49048
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
49049
+ })));
49050
+ };
49051
+
49052
+ var TheLayout = function TheLayout(_ref) {
49053
+ var routes = _ref.routes,
49054
+ navigation = _ref.navigation;
49055
+ var history = reactRouterDom.useHistory();
49056
+ var dispatch = reactRedux.useDispatch();
49057
+ var user = reactRedux.useSelector(function (state) {
49058
+ return state.common.user;
49059
+ });
49060
+ var language = reactRedux.useSelector(function (state) {
49061
+ return state.common.language;
49062
+ });
49063
+
49064
+ var _useState = React.useState(false),
49065
+ openModelSelectRole = _useState[0],
49066
+ setOpenModelSelectRole = _useState[1];
49067
+
49068
+ var _useTranslation = reactI18next.useTranslation(),
49069
+ t = _useTranslation.t;
49070
+
49071
+ var location = reactRouterDom.useLocation();
49072
+ var isNotification = location.pathname.includes("notifications");
49073
+ var isDistrict = window.location.host.includes("-district");
49074
+
49075
+ var handleToggleModel = function handleToggleModel() {
49076
+ setOpenModelSelectRole(!openModelSelectRole);
49077
+ };
49078
+
49079
+ var authRoutes = React.useMemo(function () {
49080
+ return routes.filter(function (route) {
49081
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
49082
+ }).filter(function (route) {
49083
+ return !!route.isDistrict === isDistrict;
49084
+ });
49085
+ }, [user, language]);
49086
+ var authNavigations = React.useMemo(function () {
49087
+ return navigation.map(function (item) {
49088
+ var _item$_children, _item$_children2;
49089
+
49090
+ return _extends({}, item, {
49091
+ name: t(item.name),
49092
+ _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) {
49093
+ return _extends({}, x, {
49094
+ name: t(x.name)
49095
+ });
49096
+ }) : undefined
49097
+ });
49098
+ }).filter(function (nav) {
49099
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
49100
+ }).filter(function (nav) {
49101
+ return !!nav.isDistrict === isDistrict;
49102
+ });
49103
+ }, [user, language]);
49104
+
49105
+ var getInformationSetting = function getInformationSetting() {
49106
+ try {
49107
+ var _temp2 = _catch(function () {
49108
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
49109
+ dispatch(setSandboxMode(res.data.isSandboxMode));
49110
+ });
49111
+ }, function (err) {
49112
+ console.error(err);
49113
+ });
49114
+
49115
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
49116
+ } catch (e) {
49117
+ return Promise.reject(e);
49118
+ }
49119
+ };
49120
+
49121
+ React.useEffect(function () {
49122
+ checkAuthentication();
49123
+ }, []);
49124
+ React.useEffect(function () {
49125
+ getInformationSetting();
49126
+ }, [location.pathname]);
49127
+
49128
+ var checkAuthentication = function checkAuthentication() {
49129
+ try {
49130
+ var _temp4 = _catch(function () {
49131
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
49132
+ tokenStatus ? loadInfo() : resetAuth();
49133
+ });
49134
+ }, function () {
49135
+ resetAuth();
49136
+ });
49137
+
49138
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
49139
+ } catch (e) {
49140
+ return Promise.reject(e);
49141
+ }
49142
+ };
49143
+
49144
+ var loadInfo = function loadInfo() {
49145
+ try {
49146
+ var _temp6 = _catch(function () {
49147
+ return Promise.resolve(getInfo()).then(function (info) {
49148
+ var _info$data, _info$data$roles;
49149
+
49150
+ 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"))) {
49151
+ resetAuth();
49152
+ }
49153
+
49154
+ dispatch(setUser(info.data));
49155
+ });
49156
+ }, function () {
49157
+ resetAuth();
49158
+ });
49159
+
49160
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
49161
+ } catch (e) {
49162
+ return Promise.reject(e);
49163
+ }
49164
+ };
49165
+
49166
+ var resetAuth = function resetAuth() {
49167
+ localStorage.removeItem(ACCESS_TOKEN);
49168
+ sessionStorage.removeItem(ACCESS_TOKEN);
49169
+ localStorage.removeItem("ROLES");
49170
+ history.push("/");
49171
+ };
49172
+
49173
+ if (!user) {
49174
+ return React__default.createElement(Loading, null);
49175
+ }
49176
+
49177
+ return React__default.createElement("div", {
49178
+ className: "c-app c-default-layout"
49179
+ }, !isNotification && React__default.createElement(TheSidebar, {
49180
+ navigation: authNavigations
49181
+ }), React__default.createElement("div", {
49182
+ className: "c-wrapper"
49183
+ }, !isNotification && React__default.createElement(TheHeader, {
49184
+ onToggleModel: handleToggleModel
49185
+ }), React__default.createElement("div", {
49186
+ className: "c-body bg-white"
49187
+ }, React__default.createElement(TheContent$1, {
49188
+ routes: authRoutes
49189
+ }))), React__default.createElement(ModelSelectRole, {
49190
+ open: openModelSelectRole,
49191
+ onToggleModel: handleToggleModel
49192
+ }));
49193
+ };
49194
+
49195
+ var amplitudeClient$1 = amplitude.getInstance();
49196
+
49195
49197
  Object.defineProperty(exports, 'I18nextProvider', {
49196
49198
  enumerable: true,
49197
49199
  get: function () {
@@ -49279,7 +49281,7 @@ exports.UserContainer = UserContainer;
49279
49281
  exports.UserDetail = UserDetail;
49280
49282
  exports.UserList = UserList;
49281
49283
  exports.addTab = addTab;
49282
- exports.amplitudeClient = amplitudeClient;
49284
+ exports.amplitudeClient = amplitudeClient$1;
49283
49285
  exports.answerQuestion = answerQuestion;
49284
49286
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
49285
49287
  exports.api = api;