{"version":3,"sources":["generic/Admin/authAxios.js","generic/Admin/Loading/Loading.js","generic/Admin/ActivityFormats/VideoModal_Landing.js","generic/RoutesLanding.js","generic/reducers/ActivationReducer.js","generic/reducers/ConfirmReducer.js","generic/reducers/DataReducer.js","generic/reducers/index.js","App.js","index.js","generic/Admin/CommonMethods.js","generic/Admin/LocalStorage.js","generic/Admin/Toast/Toast.js","generic/Admin/Loading/Loading_2.js","generic/Admin/BrandAnimation/BrandAnimation.js","generic/Admin/ScreenSize/ScreenSize.js"],"names":["errorToastTimeout","authAxios","history","a","isShowAlert","_isRedirect","isRedirect","LocalStorage_Token","token","axios","defaults","baseURL","window","ffmpeg_baseurl","headers","common","interceptors","response","use","err","data","ReasonPhrase","test","ToastAlert","replace","lazyRedirect","message","Promise","reject","baseAxios","console","log","baseAxios2","ffmpeg_baseurl_2","catchTokenAxios","status","statusText","path","timeout","setTimeout","push","lazyASPRedirect","location","open","Loading","className","width","height","viewBox","preserveAspectRatio","transform","attributeName","type","values","keyTimes","dur","repeatCount","d","fill","VideoModal_Landing","props","useState","getVideoUrl","setVideoUrl","getVideoThumbUrl","setVideoThumbUrl","getIsVideoModalShow","setIsVideoModalShow","playerRef","useRef","useEffect","HandleSaveHit","LocalStorage_CounterExpired","_CounterExpired","WillCounterExpired","CounterExpiredSixHours","SaveUserHit","UserHit","togglePlayerModal","isShow","pauseVideo","current","pause","_VideoModal_Landing_fn_togglePlayerModal","_VideoModal_Landing_fn_setPlayerData","obj","VideoUrl","VideoThumbUrl","_VideoModal_Landing_fn_saveUserHit","onClick","data-test","playsInline","poster","src","ref","RoutesLanding","exact","initialState","loggedInUser","readContentResponse","activityJson","baseUrl","tabLearnVideoWillPlay","isTablet","isPhone","isResponsive","isLoadAutoLogin","needActivityAnswer","currentActivityQid","currentActivityQidComponentName","currentActivityAnswer","currentActivityAnswerResponse","currentActivityAnswerResponseType","activityProgress","audioModalLoaded","audioModalSource","logoutInvoke","currentBackMeUrl","externalActivityTabClick","askQuestionAlertToggle","ConfirmAlert","onOk","onCancel","skillCode","selCls","selTopicName","userInfo","userRole","userInfoUpdate","rootReducer","combineReducers","activation","state","action","payload","SConfirm","CacheData","store","createStore","composeWithDevTools","App","fallback","Loading_2","Component","publish","origin","ReactDOM","render","document","getElementById","IsExistToken","dispatch","post","res","error","AuthorizeEducator","_authAxios","config","undefined","auth","role","email","AuthorizeAdmin","val","PutFFMPEGLocalData","GetFFMPEGLocalDataByKey","LocalStorage_UserSet","LocalStorage_Token_Remove","DeleteFFMPEGLocalData","NeedActivityAnswer","NeedActivityAnswerReset","CurrentActivityAnswer","CurrentActivityAnswerResponse","CurrentActivityAnswerResponseType","CurrentActivityAnswerResponseTypeReset","CurrentActivityQid","CurrentActivityQidComponentName","ActivityProgress","ShowActivityJsonConsole","ShowActivityCorrectJsonConsole","ChangeCurrentBackMeUrl","ChangeExternalActivityTabClick","ClassRoman","class_id","moment","local","add","format","CounterExpiredDayStr","_from","_today","diff","ffmpegLocalStorageDb","Dexie","version","stores","ffmpegLocalStorage","catch","key","where","equals","first","value","_value","modify","ffmpeg_key","delete","Toast","position","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","_alert","toastRef","toast","info","success","warn","progress","classNames","inner","BrandAnimation","login","children","ScreenSize","useSelector","useDispatch","winWidth","innerWidth","winHeight","innerHeight","windowDimenion","detectHW","detectSize","addEventListener","removeEventListener"],"mappings":"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","file":"static/js/main.b3a6eb52.chunk.js","sourcesContent":["import axios from 'axios';\r\nimport { ToastAlert } from './Toast/Toast';\r\nimport { LocalStorage_Token } from './CommonMethods';\r\nlet errorToastTimeout = 2000;\r\nconst authAxios = async (history, isShowAlert = true, _isRedirect = true) => {\r\n let isRedirect = _isRedirect;\r\n const token = await LocalStorage_Token();\r\n axios.defaults.baseURL = window.ffmpeg_baseurl;\r\n if (token) {\r\n axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;\r\n }\r\n else {\r\n axios.defaults.headers.common['Authorization'] = `Bearer`;\r\n }\r\n axios.interceptors.response.use(function (response) {\r\n // Do something with response data\r\n return response;\r\n }, function (err) {\r\n if (err.response && err.response.data && err.response.data.ReasonPhrase) {\r\n // console.log(err.response);\r\n var { ReasonPhrase } = err.response.data;\r\n var isTokenError = /TokenError:/.test(ReasonPhrase);\r\n if (isTokenError) {\r\n if (isShowAlert == true) {\r\n ToastAlert(ReasonPhrase.replace(/TokenError:/, \"\"), 'e',errorToastTimeout);\r\n }\r\n } else {\r\n if (isShowAlert == true) {\r\n ToastAlert(ReasonPhrase, 'e', errorToastTimeout);\r\n }\r\n }\r\n if (isRedirect == true) {\r\n lazyRedirect(history, '/login', 2000, true);\r\n }\r\n }\r\n else if (err.message) {\r\n if (isShowAlert == true) {\r\n ToastAlert(err.message, 'e', errorToastTimeout);\r\n }\r\n if (isRedirect == true) {\r\n lazyRedirect(history, '/login', 2000, true);\r\n }\r\n } else {\r\n return Promise.reject(err);\r\n }\r\n });\r\n return axios;\r\n};\r\nexport const baseAxios = () => {\r\n axios.defaults.baseURL = window.ffmpeg_baseurl;\r\n axios.defaults.headers.common['Content-Type'] = 'application/json';\r\n axios.interceptors.response.use(function (response) {\r\n // Do something with response data\r\n return response;\r\n }, function (err) {\r\n if (err.message) {\r\n console.log(err.message, 'e');\r\n } else\r\n return Promise.reject(err);\r\n });\r\n return axios;\r\n};\r\nexport const baseAxios2 = () => {\r\n axios.defaults.baseURL = window.ffmpeg_baseurl_2;\r\n axios.defaults.headers.common['Content-Type'] = 'application/json';\r\n axios.interceptors.response.use(function (response) {\r\n // Do something with response data\r\n return response;\r\n }, function (err) {\r\n if (err.message) {\r\n console.log(err.message, 'e');\r\n } else\r\n return Promise.reject(err);\r\n });\r\n return axios;\r\n};\r\nexport const catchTokenAxios = ({ response }) => {\r\n if (response) {\r\n const { status, statusText } = response;\r\n // console.log(response, statusText);\r\n var isTokenError = /TokenError:/.test(statusText);\r\n if (isTokenError) {\r\n // ToastAlert(statusText, 'e'); statusText.replace(/TokenError:/, \"\");\r\n return statusText.replace(/TokenError:/, \"\");\r\n }\r\n return null;\r\n }\r\n};\r\nexport const lazyRedirect = (history, path, timeout = 5000, replace = false) => {\r\n if (path && timeout) {\r\n setTimeout(() => {\r\n if (replace) {\r\n history.replace(path);\r\n } else {\r\n history.push(path);\r\n }\r\n }, timeout);\r\n }\r\n};\r\nexport const lazyASPRedirect = (path, timeout = 5000, replace = false) => {\r\n if (path && timeout) {\r\n setTimeout(() => {\r\n if (replace) {\r\n window.location.replace(path, '_self');\r\n } else {\r\n window.open(path, '_self');\r\n }\r\n }, timeout);\r\n }\r\n};\r\nexport default authAxios;\r\n\r\n// axios.defaults.headers.get['Accept'] = 'application/json'\r\n// axios.defaults.headers.post['Accept'] = 'application/json' ","import React from 'react'\r\nimport './Loading.scss';\r\n\r\nexport default function Loading() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect, Fragment, useRef } from 'react';\r\n// import { MDBIcon, MDBBtn, MDBContainer, MDBLink, MDBCardImage } from \"mdbreact\";\r\nimport { Player } from 'video-react';\r\n// import { useSelector, useDispatch } from 'react-redux';\r\n// import $ from \"jquery\";\r\n// import Parser from 'html-react-parser';\r\n// import authAxios, { baseAxios, baseAxios2, catchTokenAxios, lazyRedirect } from '../authAxios';\r\nimport { SaveUserHit, UserHit, LocalStorage_CounterExpired, WillCounterExpired, CounterExpiredSixHours } from \"../CommonMethods\";\r\nimport './VideoModal_Landing.scss';\r\n\r\nexport default function VideoModal_Landing(props) {\r\n const [getVideoUrl, setVideoUrl] = useState(null);\r\n const [getVideoThumbUrl, setVideoThumbUrl] = useState(null);\r\n const [getIsLoading, setIsLoading] = useState(false);\r\n const [getIsVideoModalShow, setIsVideoModalShow] = useState(false);\r\n const [getMaxW, setMaxW] = useState(null);\r\n const playerRef = useRef();\r\n\r\n useEffect(async () => {\r\n\r\n }, []);\r\n const HandleSaveHit = async () => {\r\n let _CounterExpired = await LocalStorage_CounterExpired();\r\n _CounterExpired = WillCounterExpired(_CounterExpired);\r\n if (_CounterExpired === true) {\r\n await LocalStorage_CounterExpired(CounterExpiredSixHours());\r\n return await SaveUserHit();\r\n } else {\r\n return await UserHit();\r\n }\r\n }\r\n const setPlayerData = (obj = {}) => {\r\n setVideoUrl(obj.VideoUrl || null);\r\n setVideoThumbUrl(obj.VideoThumbUrl || null);\r\n };\r\n const togglePlayerModal = (isShow) => {\r\n if (isShow == false) {\r\n pauseVideo();\r\n }\r\n setIsVideoModalShow(isShow);\r\n };\r\n const pauseVideo = () => {\r\n if (playerRef.current != null)\r\n playerRef.current.pause();\r\n };\r\n window._VideoModal_Landing_fn_togglePlayerModal = togglePlayerModal;\r\n window._VideoModal_Landing_fn_setPlayerData = setPlayerData;\r\n window._VideoModal_Landing_fn_saveUserHit = HandleSaveHit;\r\n // window._VideoModal_Landing_fn_saveUserHit = SaveUserHit;\r\n //#region Helper Fn\r\n const removeLastSlash = (str = \"\") => {\r\n let ret = str.replace(/\\/$/g, \"\");\r\n return ret;\r\n };\r\n const hasHttp = (str = \"\") => {\r\n let pattern = /http/;\r\n let ret = pattern.test(str);\r\n return ret;\r\n };\r\n const MaxWidth = (str = null) => {\r\n if (str == null) {\r\n return 'none';\r\n }\r\n else {\r\n return str;\r\n }\r\n };\r\n const ParseServerUrl = (str = null) => {\r\n let ret = null;\r\n if (str != null) {\r\n let _hasHttp = hasHttp(str);\r\n if (_hasHttp == false) {\r\n if (props.isCors == true) {\r\n ret = removeLastSlash(activation.baseUrl) + str;\r\n } else {\r\n ret = removeLastSlash(baseAxios2().defaults.baseURL) + str;\r\n }\r\n } else {\r\n ret = str;\r\n }\r\n }\r\n return ret;\r\n };\r\n //#endregion\r\n\r\n return (\r\n \r\n {\r\n getIsVideoModalShow && \r\n
\r\n
\r\n
\r\n
\r\n
togglePlayerModal(false)}>
\r\n
\r\n {\r\n getVideoUrl && \r\n \r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n )\r\n}\r\n","import React, { Fragment, lazy, Suspense } from \"react\";\r\nimport { Route, Switch, Link, Redirect, useHistory } from \"react-router-dom\";\r\nimport { LocalStorage_Token, LocalStorage_Token_Remove } from \"./Admin/CommonMethods\";\r\n\r\n// import Login from \"./Admin/Login\";\r\nimport VideoModal_Landing from \"./Admin/ActivityFormats/VideoModal_Landing\";\r\nimport './generic.scss';\r\n\r\nexport function RoutesLanding() {\r\n return (\r\n \r\n \r\n \r\n {\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n}","const initialState = {\r\n loggedInUser: null,\r\n token: null,\r\n readContentResponse: {},\r\n activityJson: [],\r\n baseUrl: null,\r\n tabLearnVideoWillPlay: false,\r\n isTablet: false,\r\n isPhone: false,\r\n isResponsive: false,\r\n isLoadAutoLogin: false,\r\n needActivityAnswer: false,\r\n currentActivityQid: null,\r\n currentActivityQidComponentName: null,\r\n currentActivityAnswer: null,\r\n currentActivityAnswerResponse: null,\r\n currentActivityAnswerResponseType: null,\r\n activityProgress: false,\r\n audioModalLoaded: false,\r\n audioModalSource: null,\r\n logoutInvoke: false,\r\n currentBackMeUrl: null,\r\n externalActivityTabClick: null,\r\n askQuestionAlertToggle: false\r\n};\r\nexport function ActivationReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case 'SET_USER':\r\n return {\r\n ...state,\r\n loggedInUser: action.payload\r\n }\r\n case 'SET_TOKEN':\r\n return {\r\n ...state,\r\n token: action.payload\r\n }\r\n case 'SET_READ_CONTENT_RESPONSE':\r\n return {\r\n ...state,\r\n readContentResponse: action.payload\r\n }\r\n case 'SET_ACTIVITY_JSON':\r\n return {\r\n ...state,\r\n activityJson: action.payload\r\n }\r\n case 'SET_BASE_URL':\r\n return {\r\n ...state,\r\n baseUrl: action.payload\r\n }\r\n case 'SET_TAB_LEARN_VDO_WILL_PLAY':\r\n return {\r\n ...state,\r\n tabLearnVideoWillPlay: action.payload\r\n }\r\n case 'SET_IS_TABLET':\r\n return {\r\n ...state,\r\n isTablet: action.payload\r\n }\r\n case 'SET_IS_PHONE':\r\n return {\r\n ...state,\r\n isPhone: action.payload\r\n }\r\n case 'SET_IS_RESPONSIVE':\r\n return {\r\n ...state,\r\n isResponsive: action.payload\r\n }\r\n case 'SET_IS_LOAD_AUTO_LOGIN':\r\n return {\r\n ...state,\r\n isLoadAutoLogin: action.payload\r\n }\r\n case 'SET_NEED_ACTIVITY_ANSWER':\r\n return {\r\n ...state,\r\n needActivityAnswer: action.payload\r\n }\r\n case 'SET_CURRENT_ACTIVITY_QID':\r\n return {\r\n ...state,\r\n currentActivityQid: action.payload\r\n }\r\n case 'SET_CURRENT_ACTIVITY_QID_COMP_NAME':\r\n return {\r\n ...state,\r\n currentActivityQidComponentName: action.payload\r\n }\r\n case 'SET_CURRENT_ACTIVITY_ANSWER':\r\n return {\r\n ...state,\r\n currentActivityAnswer: action.payload\r\n }\r\n case 'SET_CURRENT_ACTIVITY_ANSWER_RESPONSE':\r\n return {\r\n ...state,\r\n currentActivityAnswerResponse: action.payload\r\n }\r\n case 'SET_CURRENT_ACTIVITY_ANSWER_RESPONSE_TYPE':\r\n return {\r\n ...state,\r\n currentActivityAnswerResponseType: action.payload\r\n }\r\n case 'SET_ACTIVITY_PROGRESS':\r\n return {\r\n ...state,\r\n activityProgress: action.payload\r\n }\r\n case 'SET_AUDIO_MODAL_LOADED':\r\n return {\r\n ...state,\r\n audioModalLoaded: action.payload\r\n }\r\n case 'SET_AUDIO_MODAL_SOURCE':\r\n return {\r\n ...state,\r\n audioModalSource: action.payload\r\n }\r\n case 'SET_LOGOUT_INVOKE':\r\n return {\r\n ...state,\r\n logoutInvoke: action.payload\r\n }\r\n case 'SET_BACKME_URL':\r\n return {\r\n ...state,\r\n currentBackMeUrl: action.payload\r\n }\r\n case 'SET_EXTERNAL_ACTIVITY_TAB_CLICK':\r\n return {\r\n ...state,\r\n externalActivityTabClick: action.payload\r\n }\r\n case 'SET_ASK_QUESTION_ALERT_TOGGLE':\r\n return {\r\n ...state,\r\n askQuestionAlertToggle: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}","const initialState = {\r\n isShow: false,\r\n ConfirmAlert: \"Are you sure to delete?\",\r\n onOk: null,\r\n onCancel: null\r\n};\r\nexport function ConfirmReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case 'SET_ISShow':\r\n return {\r\n ...state,\r\n isShow: action.payload\r\n }\r\n case 'SET_ConfirmAlert':\r\n return {\r\n ...state,\r\n ConfirmAlert: action.payload\r\n }\r\n case 'SET_onOk':\r\n return {\r\n ...state,\r\n onOk: action.payload\r\n }\r\n case 'SET_onCancel':\r\n return {\r\n ...state,\r\n onCancel: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}","const initialState = {\r\n skillCode: [],\r\n selCls: null,\r\n selTopicName: null,\r\n userInfo: null,\r\n userRole: null,\r\n userInfoUpdate: false\r\n};\r\nexport function DataReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case 'SET_SKILL_CODE':\r\n return {\r\n ...state,\r\n skillCode: action.payload\r\n }\r\n case 'SET_SEL_CLS':\r\n return {\r\n ...state,\r\n selCls: action.payload\r\n }\r\n case 'SET_TOPIC_NAME':\r\n return {\r\n ...state,\r\n selTopicName: action.payload\r\n }\r\n case 'SET_USER_INFO':\r\n return {\r\n ...state,\r\n userInfo: action.payload\r\n }\r\n case 'SET_USER_INFO_UPDATE':\r\n return {\r\n ...state,\r\n userInfoUpdate: action.payload\r\n }\r\n case 'SET_USER_ROLE':\r\n return {\r\n ...state,\r\n userRole: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { combineReducers } from \"redux\";\r\nimport { ActivationReducer } from \"./ActivationReducer\";\r\nimport { ConfirmReducer } from \"./ConfirmReducer\";\r\nimport { DataReducer } from \"./DataReducer\";\r\n\r\nconst rootReducer = combineReducers({\r\n activation: ActivationReducer,\r\n SConfirm: ConfirmReducer,\r\n CacheData: DataReducer\r\n});\r\n\r\nexport default rootReducer;","import React, { Component, Suspense } from 'react';\r\nimport { HashRouter as Router } from 'react-router-dom'; // BrowserRouter HashRouter\r\nimport { Routes, RouteActivity } from './generic/Routes';\r\n// import { RoutesHM } from './generic/RoutesHM';\r\nimport { RoutesLanding } from './generic/RoutesLanding';\r\nimport { createStore } from 'redux';\r\nimport { Provider } from 'react-redux';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\nimport rootReducer from './generic/reducers';\r\nimport Loading_2 from './generic/Admin/Loading/Loading_2';\r\n\r\nconst store = createStore(rootReducer, composeWithDevTools());\r\n\r\nclass App extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n }>\r\n {\r\n // \r\n }\r\n\r\n {\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\n\r\nwindow.publish = true;\r\n\r\n//---------------------------------------------------------------------\r\n//#region baseurl\r\nlet publish = window.publish || false;\r\nif (publish == true) {\r\n window.ffmpeg_baseurl = window.location.origin + \"/\";\r\n} else {\r\n // window.ffmpeg_baseurl = \"https://sekha.in/\"; // IIS\r\n window.ffmpeg_baseurl = \"http://localhost:50027/\"; // VS Sln\r\n}\r\n//#endregion\r\nReactDOM.render(, document.getElementById('root'));\r\n","import axios from 'axios';\r\nimport moment from 'moment';\r\nimport { PutFFMPEGLocalData, GetFFMPEGLocalDataByKey, DeleteFFMPEGLocalData } from './LocalStorage';\r\nimport authAxios, { baseAxios, catchTokenAxios, lazyRedirect, lazyASPRedirect } from './authAxios';\r\n\r\nexport async function IsExistToken({ history, dispatch }) {\r\n const token = await LocalStorage_Token();\r\n if (token == null) {\r\n lazyRedirect(history, '/login', 10, true);\r\n } else {\r\n dispatch({\r\n type: 'SET_TOKEN',\r\n payload: token\r\n });\r\n }\r\n};\r\nexport const SaveUserHit = async () => {\r\n try {\r\n var res = await baseAxios().post(`api/genericenglish/SaveUserHit`, {});\r\n return res.data || {};\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n};\r\nexport const UserHit = async () => {\r\n try {\r\n var res = await baseAxios().post(`api/genericenglish/UserHit`, {});\r\n return res.data || {};\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n};\r\nexport const CheckAuthAutoLogin = async ({ history, dispatch }) => {\r\n try {\r\n dispatch({\r\n type: 'SET_IS_LOAD_AUTO_LOGIN',\r\n payload: true\r\n });\r\n const _authAxios = await authAxios(history, false, false);\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json;charset=UTF-8',\r\n }\r\n };\r\n let res = await _authAxios.post(`api/genericenglish/CheckAuthAutoLogin`, {}, config);\r\n if (res === undefined) {\r\n res = {};\r\n }\r\n // console.log(res);\r\n const { auth, role, email } = res.data || {};\r\n dispatch({\r\n type: 'SET_IS_LOAD_AUTO_LOGIN',\r\n payload: false\r\n });\r\n if (auth == true) {\r\n const token = await LocalStorage_Token();\r\n if (token != null) {\r\n dispatch({\r\n type: 'SET_TOKEN',\r\n payload: token\r\n });\r\n\r\n }\r\n dispatch({\r\n type: 'SET_USER',\r\n payload: {\r\n role, email\r\n }\r\n });\r\n\r\n const { RedirectType, RedirectUrl } = res.data.redirect || {};\r\n if (RedirectType == 'asp') {\r\n let dashboard = baseAxios().defaults.baseURL + RedirectUrl;\r\n lazyASPRedirect(dashboard, 500, true);\r\n }\r\n else {\r\n lazyRedirect(history, RedirectUrl, 500, true);\r\n }\r\n }\r\n } catch (err) {\r\n dispatch({\r\n type: 'SET_IS_LOAD_AUTO_LOGIN',\r\n payload: false\r\n });\r\n console.error(err);\r\n }\r\n};\r\nexport const CheckAuthorization = async ({ history, dispatch }) => {\r\n try {\r\n const _authAxios = await authAxios(history);\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json;charset=UTF-8',\r\n }\r\n };\r\n let res = await _authAxios.post(`api/genericenglish/CheckAuthorization`, {}, config);\r\n if (res === undefined) {\r\n res = {};\r\n }\r\n const { auth, role, email } = res.data || {};\r\n // console.log(res.data);\r\n if (auth == true) {\r\n dispatch({\r\n type: 'SET_USER',\r\n payload: {\r\n role, email\r\n }\r\n });\r\n } else {\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n};\r\nexport const AuthorizeStudent = async ({ history, dispatch, loggedInUser = null }) => {\r\n try {\r\n // console.log('loggedInUser', loggedInUser);\r\n if (loggedInUser == null) {\r\n const _authAxios = await authAxios(history);\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json;charset=UTF-8',\r\n }\r\n };\r\n let res = await _authAxios.post(`api/genericenglish/AuthorizeStudent`, {}, config);\r\n if (res === undefined) {\r\n res = {};\r\n }\r\n const { auth, role, email } = res.data || {};\r\n // console.log(res.data);\r\n if (auth == true) {\r\n dispatch({\r\n type: 'SET_USER',\r\n payload: {\r\n role, email\r\n }\r\n });\r\n } else {\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n }\r\n else {\r\n // console.log('not need to auth check again');\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n};\r\nexport const AuthorizeEducator = async ({ history, dispatch }) => {\r\n try {\r\n const _authAxios = await authAxios(history);\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json;charset=UTF-8',\r\n }\r\n };\r\n let res = await _authAxios.post(`api/genericenglish/AuthorizeEducator`, {}, config);\r\n if (res === undefined) {\r\n res = {};\r\n }\r\n const { auth, role, email } = res.data || {};\r\n // console.log(res.data);\r\n if (auth == true) {\r\n dispatch({\r\n type: 'SET_USER',\r\n payload: {\r\n role, email\r\n }\r\n });\r\n } else {\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n};\r\nexport const AuthorizeAdmin = async ({ history, dispatch }) => {\r\n try {\r\n const _authAxios = await authAxios(history);\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json;charset=UTF-8',\r\n }\r\n };\r\n let res = await _authAxios.post(`api/genericenglish/AuthorizeAdmin`, {}, config);\r\n if (res === undefined) {\r\n res = {};\r\n }\r\n const { auth, role, email } = res.data || {};\r\n // console.log(res.data);\r\n if (auth == true) {\r\n dispatch({\r\n type: 'SET_USER',\r\n payload: {\r\n role, email\r\n }\r\n });\r\n } else {\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n lazyRedirect(history, '/login', 10, true);\r\n }\r\n};\r\nexport const LocalStorage_DeleteActivationExpired = async () => {\r\n await DeleteFFMPEGLocalData('ActivationExp');\r\n};\r\nexport const LocalStorage_Token = async (val) => {\r\n if (val) {\r\n await PutFFMPEGLocalData('xtoken', val);\r\n } else {\r\n let data = await GetFFMPEGLocalDataByKey('xtoken');\r\n return data;\r\n }\r\n};\r\nexport const LocalStorage_UserSet = async (val) => {\r\n if (val) {\r\n await PutFFMPEGLocalData('usr', val);\r\n } else {\r\n let data = await GetFFMPEGLocalDataByKey('usr');\r\n return data;\r\n }\r\n};\r\nexport const LocalStorage_Token_Remove = async () => {\r\n await DeleteFFMPEGLocalData('xtoken');\r\n await DeleteFFMPEGLocalData('usr');\r\n};\r\nexport const NeedActivityAnswer = async (dispatch) => {\r\n dispatch({\r\n type: 'SET_NEED_ACTIVITY_ANSWER',\r\n payload: true\r\n });\r\n};\r\nexport const NeedActivityAnswerReset = async (dispatch) => {\r\n dispatch({\r\n type: 'SET_NEED_ACTIVITY_ANSWER',\r\n payload: false\r\n });\r\n};\r\nexport const CurrentActivityAnswer = async (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_CURRENT_ACTIVITY_ANSWER',\r\n payload: data\r\n });\r\n};\r\nexport const CurrentActivityAnswerResponse = async (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_CURRENT_ACTIVITY_ANSWER_RESPONSE',\r\n payload: data\r\n });\r\n};\r\nexport const CurrentActivityAnswerResponseType = async (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_CURRENT_ACTIVITY_ANSWER_RESPONSE_TYPE',\r\n payload: data\r\n });\r\n};\r\nexport const CurrentActivityAnswerResponseTypeReset = async (dispatch) => {\r\n dispatch({\r\n type: 'SET_CURRENT_ACTIVITY_ANSWER_RESPONSE_TYPE',\r\n payload: null\r\n });\r\n};\r\nexport const CurrentActivityQid = async (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_CURRENT_ACTIVITY_QID',\r\n payload: data\r\n });\r\n};\r\nexport const CurrentActivityQidComponentName = async (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_CURRENT_ACTIVITY_QID_COMP_NAME',\r\n payload: data\r\n });\r\n};\r\nexport const ActivityProgress = async (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_ACTIVITY_PROGRESS',\r\n payload: data\r\n });\r\n};\r\nexport const CurrentActivityAnswerReset = async (dispatch) => {\r\n dispatch({\r\n type: 'SET_CURRENT_ACTIVITY_ANSWER',\r\n payload: null\r\n });\r\n};\r\nexport const ShowActivityJsonConsole = async (val) => {\r\n if (val) {\r\n await PutFFMPEGLocalData('activity_json_console', val);\r\n } else {\r\n let data = await GetFFMPEGLocalDataByKey('activity_json_console');\r\n return data;\r\n }\r\n};\r\nexport const ShowActivityCorrectJsonConsole = async (val) => {\r\n if (val) {\r\n await PutFFMPEGLocalData('activity_correct_json_console', val);\r\n } else {\r\n let data = await GetFFMPEGLocalDataByKey('activity_correct_json_console');\r\n return data;\r\n }\r\n};\r\nexport const ChangeCurrentBackMeUrl = (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_BACKME_URL',\r\n payload: data\r\n });\r\n};\r\nexport const ChangeExternalActivityTabClick = (dispatch, data) => {\r\n dispatch({\r\n type: 'SET_EXTERNAL_ACTIVITY_TAB_CLICK',\r\n payload: data\r\n });\r\n};\r\nexport const ClassRoman = (class_id) => {\r\n let data = {\r\n '5': 'V',\r\n '6': 'VI',\r\n '7': 'VII',\r\n '8': 'VIII',\r\n '9': 'IX',\r\n '10': 'X'\r\n };\r\n return data[class_id];\r\n};\r\n\r\n// Time methods\r\nexport const Today = () => {\r\n return moment().local().format('YYYY-MM-DD HH:mm:ss');\r\n};\r\nexport const ActivationExpiredDay = () => {\r\n return moment().local().add(30, 'hours').format('YYYY-MM-DD HH:mm:ss'); // days hours minutes\r\n};\r\nexport const Utc2Local = str => {\r\n // https://momentjs.com/docs/#/parsing/string-format/\r\n let dt = str;\r\n if (dt) {\r\n var x = moment.utc(dt, 'MM-DD-YYYY LTS');\r\n dt = x.local().format('MM-DD-YYYY LTS');\r\n }\r\n return dt;\r\n}\r\n\r\nexport const CounterExpiredSixHours = () => {\r\n return moment().local().add(6, 'hours').format('YYYY-MM-DD HH:mm:ss'); // days hours minutes\r\n};\r\nexport const WillCounterExpired = (CounterExpiredDayStr) => {\r\n if (CounterExpiredDayStr === null) return true;\r\n const _from = moment(CounterExpiredDayStr, 'YYYY-MM-DD HH:mm:ss');\r\n const _today = moment(Today(), 'YYYY-MM-DD HH:mm:ss');\r\n let diff = _from.diff(_today, 'hours'); // _nextday > _today = +ve\r\n // console.log(_from, _today, diff)\r\n return diff <= 0;\r\n};\r\nexport const LocalStorage_CounterExpired = async (val) => {\r\n if (val) {\r\n await PutFFMPEGLocalData('CounterExp', val);\r\n } else {\r\n let data = await GetFFMPEGLocalDataByKey('CounterExp');\r\n // console.log('CounterExp', data);\r\n return data;\r\n }\r\n};","import Dexie from 'dexie';\r\n\r\nconst ffmpegLocalStorageDb = () => {\r\n const ffmpegLocalStorageDb = new Dexie('sekhaLocalStorageDb'); //genericEnglishLocalStorageDb\r\n ffmpegLocalStorageDb.version(3).stores({ ffmpegLocalStorage: \"ffmpeg_key, value\" });\r\n ffmpegLocalStorageDb.open().catch(err => {\r\n console.log(err);\r\n });\r\n return ffmpegLocalStorageDb;\r\n};\r\nexport const GetFFMPEGLocalData = async () => {\r\n return await ffmpegLocalStorageDb().ffmpegLocalStorage.toArray();\r\n};\r\nexport const GetFFMPEGLocalDataByKey = async (key) => {\r\n const data = await ffmpegLocalStorageDb().ffmpegLocalStorage.where('ffmpeg_key').equals(key).first();\r\n // const value = (data || {}).value || null;\r\n const isUndefined = data === undefined;\r\n let value = null;\r\n if (!isUndefined) {\r\n value = data.value !== undefined ? data.value : null;\r\n }\r\n return value;\r\n // https://dexie.org/docs/Collection/Collection.first()\r\n};\r\n\r\nexport const SetFFMPEGLocalData = async (key, value) => {\r\n let data = {\r\n ffmpeg_key: key,\r\n value\r\n };\r\n return await ffmpegLocalStorageDb().ffmpegLocalStorage.add(data);\r\n};\r\nexport const PutFFMPEGLocalData = async (key, val) => {\r\n try {\r\n const data = await ffmpegLocalStorageDb().ffmpegLocalStorage.where('ffmpeg_key').equals(key).first();\r\n const isUndefined = data === undefined;\r\n let _value = null;\r\n if (!isUndefined) {\r\n _value = data.value !== undefined ? data.value : null;\r\n }\r\n\r\n // const _value = (data || {}).value || null;\r\n if (_value != null) {\r\n return await ffmpegLocalStorageDb().ffmpegLocalStorage.where('ffmpeg_key').equals(key).modify({ value: val });\r\n }\r\n else {\r\n return await ffmpegLocalStorageDb().ffmpegLocalStorage.add({\r\n ffmpeg_key: key,\r\n value: val\r\n });\r\n }\r\n } catch (ex) {\r\n }\r\n};\r\nexport const DeleteFFMPEGLocalData = async (key) => {\r\n return await ffmpegLocalStorageDb().ffmpegLocalStorage.where('ffmpeg_key').equals(key).delete();\r\n};\r\n\r\nexport default ffmpegLocalStorageDb;","import React from 'react'\r\nimport { ToastContainer, toast } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport './Toast.scss';\r\n\r\nexport function Toast() {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport function ToastAlert(_alert, type = '', autoClose = 5000, position = \"top-right\") {\r\n let toastRef = toast;\r\n if (type == 'info' || type == 'i') {\r\n toastRef = toast.info;\r\n }\r\n else if (type == 'success' || type == 's') {\r\n toastRef = toast.success;\r\n }\r\n else if (type == 'warn' || type == 'w') {\r\n toastRef = toast.warn;\r\n }\r\n else if (type == 'error' || type == 'e') {\r\n toastRef = toast.error;\r\n }\r\n toastRef(_alert, {\r\n position,\r\n autoClose,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n progress: undefined,\r\n });\r\n}","import React from 'react'\r\n// import Loads from '../img/loads.svg';\r\nimport './Loading.scss';\r\nimport classNames from 'classnames';\r\n\r\nexport default function Loading_2(props) {\r\n return (\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport './BrandAnimation.scss';\r\nimport classNames from 'classnames';\r\n\r\nfunction BrandAnimation(props) {\r\n return (\r\n
\r\n {props.children}\r\n
\r\n )\r\n}\r\n\r\nexport default BrandAnimation\r\n","import React, { useState, useEffect, Fragment, useRef } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\n\r\nfunction ScreenSize(props) {\r\n const { activation } = useSelector(state => state);\r\n const dispatch = useDispatch();\r\n\r\n const [windowDimenion, detectHW] = useState({\r\n winWidth: window.innerWidth,\r\n winHeight: window.innerHeight,\r\n });\r\n\r\n const detectSize = () => {\r\n detectHW({\r\n winWidth: window.innerWidth,\r\n winHeight: window.innerHeight,\r\n });\r\n if (window.innerWidth <= 768) {\r\n dispatch({\r\n type: 'SET_IS_RESPONSIVE',\r\n payload: true\r\n });\r\n } else {\r\n dispatch({\r\n type: 'SET_IS_RESPONSIVE',\r\n payload: false\r\n });\r\n }\r\n\r\n if (window.innerWidth >= 321 && window.innerWidth <= 768) {\r\n dispatch({\r\n type: 'SET_IS_TABLET',\r\n payload: true\r\n });\r\n }\r\n else {\r\n dispatch({\r\n type: 'SET_IS_TABLET',\r\n payload: false\r\n });\r\n }\r\n\r\n if (window.innerWidth <= 320) {\r\n dispatch({\r\n type: 'SET_IS_PHONE',\r\n payload: true\r\n });\r\n }\r\n else {\r\n dispatch({\r\n type: 'SET_IS_PHONE',\r\n payload: false\r\n });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n window.addEventListener('resize', detectSize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', detectSize)\r\n }\r\n }, [windowDimenion]);\r\n\r\n useEffect(() => {\r\n detectSize();\r\n // activation.isTablet ? 'Y' : 'N' // activation.isPhone\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n )\r\n}\r\n\r\nexport default ScreenSize;\r\n"],"sourceRoot":""}