{"version":3,"sources":["hooks/useAuth.js","components/SplashScreen.js","contexts/JWTAuthContext.js","appSettings.js","services.js","components/Logo.js","layouts/MainLayout/TopBar.js","utils/axios.js","components/SessionInfo.js","mixins/chartjs.js","serviceWorker.js","constants.js","store/rootReducer.js","store/index.js","contexts/SettingsContext.js","components/GlobalStyles.js","hooks/useScrollReset.js","components/ScrollReset.js","hooks/useSettings.js","theme/index.js","theme/typography.js","theme/shadows.js","layouts/DashboardLayout/NavBar/NavItem.js","layouts/DashboardLayout/NavBar/index.js","layouts/DashboardLayout/TopBar/Account.js","layouts/DashboardLayout/TopBar/index.js","layouts/DashboardLayout/FooterBar/index.js","layouts/DashboardLayout/index.js","layouts/MainLayout/index.js","components/LoadingScreen.js","components/AuthGuard.js","components/GuestGuard.js","routes.js","App.js","index.js"],"names":["useAuth","useContext","AuthContext","useStyles","makeStyles","theme","root","alignItems","backgroundColor","palette","background","default","display","flexDirection","height","justifyContent","left","padding","spacing","position","top","width","zIndex","SlashScreen","classes","className","Box","LinearProgress","initialAuthState","isAuthenticated","isInitialised","user","isValidToken","accessToken","decoded","jwtDecode","currentTime","Date","now","exp","setSession","localStorage","setItem","tokenClaims","jwt_decode","fullName","firstName","lastName","axios","defaults","headers","common","Authorization","removeItem","reducer","state","action","type","payload","createContext","login","Promise","resolve","logout","AuthProvider","children","useReducer","dispatch","email","password","a","services","getToken","response","success","undefined","data","useEffect","window","getItem","err","console","error","initialise","Provider","value","SplashScreen","appSettings","apiUrl","process","username","serviceResponse","fetch","method","body","JSON","stringify","then","ok","json","catch","getMyProfile","get","SessionInfo","updateMyProfile","post","updateMembership","formData","FormData","append","birthday","sex","maritalStatus","prcLicenseNo","prcIssueDate","prcExpirationDate","prcFileContent","fileContent","homeAddress","homeContactNo","company","companyAddress","companyContactNo","employmentStatus","highestEducationalAttainment","postGraduateCourse","chapterId","changePassword","sendEmailResetPassword","resetPassword","register","verifyEmail","getUpcomingEvents","getEvent","eventGlobalId","downloadIdentificationCard","filename","Accept","responseType","split","blob","link","document","createElement","href","URL","createObjectURL","download","click","remove","registerNewMembership","fileContent1","fileContent2","registerMembershipRenewal","registerEvent","certificateName","getMyEvents","getMembershipProofOfPayment","membershipGlobalId","getMembershipInsuranceForm","getMembershipReceipt","downloadMembershipReceipt","getEventRegistrationReceipt","eventRegistrationGlobalId","downloadEventRegistrationReceipt","downloadEventRegistrationCertificate","Logo","props","alt","src","textAlign","toolbar","logo","marginRight","fontWeight","typography","fontWeightMedium","marginLeft","divider","TopBar","rest","AppBar","clsx","color","Grid","container","direction","style","borderBottom","Toolbar","to","Hidden","xsDown","smUp","axiosInstance","create","baseURL","interceptors","use","reject","status","location","storageKey","token","e","getFullName","isValid","result","removeToken","Chart","helpers","extend","elements","Rectangle","prototype","draw","right","bottom","signX","signY","borderSkipped","radius","ctx","this","_chart","vm","_view","borderWidth","cornerRadius","config","options","horizontal","base","x","y","barSize","Math","min","abs","halfStroke","borderLeft","borderRight","borderTop","beginPath","fillStyle","strokeStyle","borderColor","lineWidth","corners","startCorner","indexOf","cornerAt","index","corner","moveTo","i","nextCornerId","floor","xTl","xTr","yTl","yTr","xBl","xBr","yBl","yBr","lineTo","quadraticCurveTo","fill","stroke","Boolean","hostname","match","THEMES","LIGHT","rootReducer","combineReducers","form","formReducer","store","configureStore","devTools","useReduxSelector","defaultSettings","responsiveFontSizes","ONE_LIGHT","storeSettings","settings","SettingsContext","saveSettings","SettingsProvider","useState","currentSettings","setCurrentSettings","restoredSettings","storedData","parse","restoreSettings","dir","update","mergedSettings","_","merge","Consumer","createStyles","boxSizing","margin","html","GlobalStyles","useScrollReset","useLocation","scrollTo","pathname","ScrollReset","useSettings","baseOptions","h1","fontSize","letterSpacing","h2","h3","h4","h5","h6","overline","overrides","MuiLinearProgress","borderRadius","overflow","MuiListItemIcon","minWidth","MuiChip","themesOptions","name","MuiInputBase","input","opacity","colors","grey","active","white","dark","paper","primary","main","secondary","text","shadows","item","paddingTop","paddingBottom","itemLeaf","button","textTransform","buttonLeaf","fontWeightRegular","icon","title","NavItem","depth","Icon","Info","info","openProp","open","setOpen","paddingLeft","ListItem","disableGutters","key","Button","onClick","prevOpen","size","Collapse","in","activeClassName","component","RouterLink","exact","defaultProps","sections","items","GlobeIcon","FileIcon","UserIcon","renderNavItems","List","disablePadding","reduce","acc","matchPath","path","push","reduceChildRoutes","mobileDrawer","desktopDrawer","avatar","cursor","NavBar","onMobileClose","openMobile","content","suppressScrollX","lgUp","p","map","section","subheader","ListSubheader","disableSticky","Drawer","anchor","onClose","variant","mdDown","popover","Account","history","useHistory","ref","useRef","enqueueSnackbar","useSnackbar","isOpen","handleClose","handleLogout","anchorOrigin","vertical","ButtonBase","Avatar","Typography","Menu","keepMounted","PaperProps","getContentAnchorEl","anchorEl","current","MenuItem","drawer","boxShadow","minHeight","onMobileNavOpen","IconButton","SvgIcon","ml","flexGrow","appBar","FooterBar","pt","wrapper","flex","breakpoints","up","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","MainLayout","LoadingScreen","NProgress","start","done","AuthGuard","GuestGuard","routes","lazy","guard","layout","jss","plugins","jssPreset","rtl","createBrowserHistory","App","themeOptions","find","createTheme","createMyTheme","ThemeProvider","StylesProvider","utils","MomentUtils","dense","maxSnack","renderRoutes","fallback","route","Guard","Fragment","Layout","Component","render","enableES5","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.f80c78af.chunk.js","sourcesContent":["import { useContext } from 'react';\r\nimport AuthContext from 'src/contexts/JWTAuthContext';\r\n\r\nconst useAuth = () => useContext(AuthContext);\r\n\r\nexport default useAuth;\r\n","import React from 'react';\r\nimport {\r\n Box,\r\n LinearProgress,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n alignItems: 'center',\r\n backgroundColor: theme.palette.background.default,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n justifyContent: 'center',\r\n left: 0,\r\n padding: theme.spacing(3),\r\n position: 'fixed',\r\n top: 0,\r\n width: '100%',\r\n zIndex: 2000\r\n }\r\n}));\r\n\r\nconst SlashScreen = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default SlashScreen;\r\n","import React, {\r\n createContext,\r\n useEffect,\r\n useReducer\r\n} from 'react';\r\nimport jwtDecode from 'jwt-decode';\r\nimport SplashScreen from 'src/components/SplashScreen';\r\nimport axios from 'src/utils/axios';\r\nimport services from 'src/services';\r\nimport jwt_decode from \"jwt-decode\";\r\n\r\nconst initialAuthState = {\r\n isAuthenticated: false,\r\n isInitialised: false,\r\n user: null\r\n};\r\n\r\nconst isValidToken = (accessToken) => {\r\n if (!accessToken) {\r\n return false;\r\n }\r\n\r\n const decoded = jwtDecode(accessToken);\r\n const currentTime = Date.now() / 1000;\r\n\r\n return decoded.exp > currentTime;\r\n};\r\n\r\nconst setSession = (accessToken) => {\r\n if (accessToken) {\r\n localStorage.setItem('_seauth', accessToken);\r\n const tokenClaims = jwt_decode(accessToken);\r\n let fullName = `${tokenClaims.firstName} ${tokenClaims.lastName}`;\r\n localStorage.setItem('_fname', fullName);\r\n\r\n axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\r\n } else {\r\n localStorage.removeItem('_seauth');\r\n delete axios.defaults.headers.common.Authorization;\r\n }\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case 'INITIALISE': {\r\n const { isAuthenticated, user } = action.payload;\r\n\r\n return {\r\n ...state,\r\n isAuthenticated,\r\n isInitialised: true,\r\n user\r\n };\r\n }\r\n case 'LOGIN': {\r\n return {\r\n ...state,\r\n isAuthenticated: true\r\n };\r\n }\r\n case 'LOGOUT': {\r\n return {\r\n ...state,\r\n isAuthenticated: false\r\n };\r\n }\r\n default: {\r\n return { ...state };\r\n }\r\n }\r\n};\r\n\r\nconst AuthContext = createContext({\r\n ...initialAuthState,\r\n login: () => Promise.resolve(),\r\n logout: () => { }\r\n});\r\n\r\nexport const AuthProvider = ({ children }) => {\r\n const [state, dispatch] = useReducer(reducer, initialAuthState);\r\n\r\n const login = async (email, password) => {\r\n if (email === \"\" || password === \"\") {\r\n return;\r\n }\r\n\r\n const response = await services.getToken(email, password);\r\n if (!response.success) {\r\n return \"Invalid username and password.\";\r\n }\r\n\r\n if (response.data !== undefined) {\r\n if (response.data !== \"\") {\r\n setSession(response.data);\r\n dispatch({\r\n type: 'LOGIN'\r\n });\r\n return \"\";\r\n }\r\n }\r\n\r\n return \"Invalid username and password.\";\r\n };\r\n\r\n const logout = () => {\r\n setSession(null);\r\n dispatch({ type: 'LOGOUT' });\r\n };\r\n\r\n useEffect(() => {\r\n const initialise = async () => {\r\n try {\r\n const accessToken = window.localStorage.getItem('_seauth');\r\n if (accessToken && isValidToken(accessToken)) {\r\n setSession(accessToken);\r\n dispatch({\r\n type: 'INITIALISE',\r\n payload: {\r\n isAuthenticated: true\r\n }\r\n });\r\n } else {\r\n dispatch({\r\n type: 'INITIALISE',\r\n payload: {\r\n isAuthenticated: false\r\n }\r\n });\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n dispatch({\r\n type: 'INITIALISE',\r\n payload: {\r\n isAuthenticated: false\r\n }\r\n });\r\n }\r\n };\r\n\r\n initialise();\r\n }, []);\r\n\r\n if (!state.isInitialised) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default AuthContext;","export const appSettings = {\r\n\tapiUrl: process.env.REACT_APP_API_URL + '/v1' // \tapiUrl: 'https://ohnap.ph:3030/v1'\t\r\n};","import axios from 'src/utils/axios';\r\nimport { appSettings } from 'src/appSettings';\r\nimport SessionInfo from 'src/components/SessionInfo';\r\n\r\nconst isDevelopmentEnv =\r\n !process.env.NODE_ENV || process.env.NODE_ENV === 'development';\r\n\r\nconst services = {\r\n getToken: async (username, password) => {\r\n let serviceResponse = null;\r\n await fetch(`${appSettings.apiUrl}/security/user/authenticate/`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ username, password })\r\n })\r\n .then(async function(response) {\r\n if (response.ok) {\r\n serviceResponse = await response.json();\r\n }\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n getMyProfile: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/user/myprofile`, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n updateMyProfile: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/user/myprofile/update`, payload, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n updateMembership: async payload => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('birthday', payload.birthday);\r\n formData.append('sex', payload.sex);\r\n formData.append('maritalStatus', payload.maritalStatus);\r\n formData.append('prcLicenseNo', payload.prcLicenseNo);\r\n formData.append('prcIssueDate', payload.prcIssueDate);\r\n formData.append('prcExpirationDate', payload.prcExpirationDate);\r\n formData.append('prcFormFile', payload.prcFileContent);\r\n formData.append('formFile', payload.fileContent);\r\n formData.append('homeAddress', payload.homeAddress);\r\n formData.append('homeContactNo', payload.homeContactNo);\r\n formData.append('company', payload.company);\r\n formData.append('companyAddress', payload.companyAddress);\r\n formData.append('companyContactNo', payload.companyContactNo);\r\n formData.append('employmentStatus', payload.employmentStatus);\r\n formData.append(\r\n 'highestEducationalAttainment',\r\n payload.highestEducationalAttainment\r\n );\r\n formData.append('postGraduateCourse', payload.postGraduateCourse);\r\n formData.append('chapterId', payload.chapterId);\r\n await axios\r\n .post(`${appSettings.apiUrl}/user/membership/update`, formData, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n changePassword: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/user/mypassword/update`, payload, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n sendEmailResetPassword: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(\r\n `${appSettings.apiUrl}/security/sendemailresetpassword`,\r\n payload,\r\n {}\r\n )\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n resetPassword: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/security/resetpassword`, payload, {})\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n register: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/security/register`, payload, {})\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n verifyEmail: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/security/verifyemail`, payload, {})\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n getUpcomingEvents: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/user/getupcomingevents/`, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n getEvent: async eventGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/user/getevent/` + eventGlobalId, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n downloadIdentificationCard: () => {\r\n let filename = `OHNAP-ID`;\r\n fetch(`${appSettings.apiUrl}/user/downloadidentificationcard`, {\r\n headers: {\r\n Accept: 'application/pdf',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n if (response.headers.get('content-disposition')) {\r\n filename = response.headers\r\n .get('content-disposition')\r\n .split('filename=')[1];\r\n }\r\n return response.blob();\r\n }\r\n })\r\n .then(blob => {\r\n var link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = filename;\r\n link.click();\r\n link.remove();\r\n });\r\n },\r\n registerNewMembership: async payload => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('formFile1', payload.fileContent1);\r\n formData.append('formFile2', payload.fileContent2);\r\n await axios\r\n .post(`${appSettings.apiUrl}/user/registernewmembership`, formData, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n registerMembershipRenewal: async payload => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('formFile', payload.fileContent);\r\n await axios\r\n .post(`${appSettings.apiUrl}/user/registermembershiprenewal`, formData, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n registerEvent: async payload => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('eventGlobalId', payload.eventGlobalId);\r\n formData.append('formFile', payload.fileContent);\r\n formData.append('certificateName', payload.certificateName);\r\n await axios\r\n .post(`${appSettings.apiUrl}/user/registerevent`, formData, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n getMyEvents: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/user/getmyevents`, {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n })\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n getMembershipProofOfPayment: async membershipGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(\r\n `${appSettings.apiUrl}/user/getmembershipproofofpayment/` +\r\n membershipGlobalId,\r\n {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n }\r\n )\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n getMembershipInsuranceForm: async membershipGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(\r\n `${appSettings.apiUrl}/user/getmembershipinsuranceform/` +\r\n membershipGlobalId,\r\n {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n }\r\n )\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n getMembershipReceipt: async membershipGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(\r\n `${appSettings.apiUrl}/user/getmembershipreceipt/` + membershipGlobalId,\r\n {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n }\r\n )\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n downloadMembershipReceipt: membershipGlobalId => {\r\n let filename = `OHNAP-ID`;\r\n fetch(`${appSettings.apiUrl}/user/downloadmembershipreceipt/` + membershipGlobalId, {\r\n headers: {\r\n Accept: 'image/png',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n if (response.headers.get('content-disposition')) {\r\n filename = response.headers\r\n .get('content-disposition')\r\n .split('filename=')[1];\r\n }\r\n return response.blob();\r\n }\r\n })\r\n .then(blob => {\r\n var link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = filename;\r\n link.click();\r\n link.remove();\r\n });\r\n },\r\n getEventRegistrationReceipt: async eventRegistrationGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(\r\n `${appSettings.apiUrl}/user/geteventregistrationreceipt/` + eventRegistrationGlobalId,\r\n {\r\n headers: { Authorization: `Bearer ${SessionInfo.getToken()}` }\r\n }\r\n )\r\n .then(function(response) {\r\n serviceResponse = response.data;\r\n })\r\n .catch(function(error) {\r\n if (isDevelopmentEnv) {\r\n console.log(`API Error: ${error.message}`);\r\n }\r\n });\r\n return serviceResponse;\r\n },\r\n downloadEventRegistrationReceipt: eventRegistrationGlobalId => {\r\n let filename = `OHNAP-ID`;\r\n fetch(`${appSettings.apiUrl}/user/downloadeventregistrationreceipt/` + eventRegistrationGlobalId, {\r\n headers: {\r\n Accept: 'image/png',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n if (response.headers.get('content-disposition')) {\r\n filename = response.headers\r\n .get('content-disposition')\r\n .split('filename=')[1];\r\n }\r\n return response.blob();\r\n }\r\n })\r\n .then(blob => {\r\n var link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = filename;\r\n link.click();\r\n link.remove();\r\n });\r\n },\r\n downloadEventRegistrationCertificate: eventRegistrationGlobalId => {\r\n let filename = `OHNAP-ID`;\r\n fetch(`${appSettings.apiUrl}/user/downloadeventregistrationcertificate/` + eventRegistrationGlobalId, {\r\n headers: {\r\n Accept: 'image/png',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n if (response.headers.get('content-disposition')) {\r\n filename = response.headers\r\n .get('content-disposition')\r\n .split('filename=')[1];\r\n }\r\n return response.blob();\r\n }\r\n })\r\n .then(blob => {\r\n var link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = filename;\r\n link.click();\r\n link.remove();\r\n });\r\n }\r\n};\r\nexport default services;\r\n","import React from 'react';\r\n\r\nconst Logo = props => {\r\n return \"OHNAP\";\r\n};\r\n\r\nexport default Logo;\r\n","import React from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\nimport { AppBar, Grid, Toolbar, Hidden, makeStyles } from '@material-ui/core';\r\nimport Logo from 'src/components/Logo';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n textAlign: 'center'\r\n },\r\n toolbar: {\r\n height: 88\r\n },\r\n logo: {\r\n marginRight: theme.spacing(1)\r\n },\r\n link: {\r\n fontWeight: theme.typography.fontWeightMedium,\r\n '& + &': {\r\n marginLeft: theme.spacing(2)\r\n }\r\n },\r\n divider: {\r\n width: 1,\r\n height: 32,\r\n marginLeft: theme.spacing(2),\r\n marginRight: theme.spacing(2)\r\n }\r\n}));\r\n\r\nconst TopBar = ({ className, ...rest }) => {\r\n const classes = useStyles();\r\n\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\nTopBar.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nexport default TopBar;\r\n","import axios from 'axios';\r\nimport { appSettings } from 'src/appSettings';\r\n\r\nlet axiosInstance = axios.create({\r\n baseURL: appSettings.apiUrl\r\n});\r\n\r\naxiosInstance.interceptors.response.use(\r\n response => {\r\n if (response.data.success === true) {\r\n return response.data;\r\n } else {\r\n return Promise.reject('API result failed.')\r\n }\r\n }, \r\n error => {\r\n if (error.response.status === 401 || error.response.status === 403) {\r\n window.location.href = '/unauthorized';\r\n return Promise.reject(error);\r\n } else {\r\n return Promise.reject((error.response && error.response.data) || 'Something went wrong.')\r\n }\r\n }\r\n);\r\n\r\nexport default axiosInstance;\r\n","import jwt_decode from \"jwt-decode\";\r\n\r\nconst _storageKeySession = \"_seauth\";\r\n\r\nconst SessionInfo = {\r\n storageKey: _storageKeySession,\r\n getToken: () => {\r\n let token = null;\r\n try {\r\n token = localStorage.getItem(_storageKeySession);\r\n token = token === null || token === \"undefined\" ? null : token;\r\n } catch (e) {\r\n console.error(e);\r\n token = null;\r\n }\r\n return token;\r\n },\r\n getFullName: () => {\r\n let fullName = localStorage.getItem(\"_fname\");\r\n return fullName;\r\n },\r\n isValid: () => {\r\n let result = true;\r\n let token = SessionInfo.getToken();\r\n if (token) {\r\n const tokenClaims = jwt_decode(token);\r\n if (Date.now() >= tokenClaims.exp * 1000) {\r\n result = false;\r\n }\r\n } \r\n return result;\r\n },\r\n removeToken: () => {\r\n try {\r\n localStorage.removeItem(_storageKeySession);\r\n } catch (e) { \r\n console.error(e);\r\n }\r\n }\r\n};\r\nexport default SessionInfo;","import { Chart } from 'react-chartjs-2';\r\n\r\n// ChartJS extension rounded bar chart\r\n// https://codepen.io/jedtrow/full/ygRYgo\r\nfunction draw() {\r\n const { ctx } = this._chart;\r\n const vm = this._view;\r\n let { borderWidth } = vm;\r\n\r\n let left;\r\n let right;\r\n let top;\r\n let bottom;\r\n let signX;\r\n let signY;\r\n let borderSkipped;\r\n let radius;\r\n\r\n // If radius is less than 0 or is large enough to cause drawing errors a max\r\n // radius is imposed. If cornerRadius is not defined set it to 0.\r\n let { cornerRadius } = this._chart.config.options;\r\n if (cornerRadius < 0) {\r\n cornerRadius = 0;\r\n }\r\n\r\n if (typeof cornerRadius === 'undefined') {\r\n cornerRadius = 0;\r\n }\r\n\r\n if (!vm.horizontal) {\r\n // bar\r\n left = vm.x - vm.width / 2;\r\n right = vm.x + vm.width / 2;\r\n top = vm.y;\r\n bottom = vm.base;\r\n signX = 1;\r\n signY = bottom > top ? 1 : -1;\r\n borderSkipped = vm.borderSkipped || 'bottom';\r\n } else {\r\n // horizontal bar\r\n left = vm.base;\r\n right = vm.x;\r\n top = vm.y - vm.height / 2;\r\n bottom = vm.y + vm.height / 2;\r\n signX = right > left ? 1 : -1;\r\n signY = 1;\r\n borderSkipped = vm.borderSkipped || 'left';\r\n }\r\n\r\n // Canvas doesn't allow us to stroke inside the width so we can\r\n // adjust the sizes to fit if we're setting a stroke on the line\r\n if (borderWidth) {\r\n // borderWidth shold be less than bar width and bar height.\r\n const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\r\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\r\n const halfStroke = borderWidth / 2;\r\n // Adjust borderWidth when bar top position is near vm.base(zero).\r\n const borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\r\n const borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\r\n const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\r\n const borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\r\n // not become a vertical line?\r\n if (borderLeft !== borderRight) {\r\n top = borderTop;\r\n bottom = borderBottom;\r\n }\r\n // not become a horizontal line?\r\n if (borderTop !== borderBottom) {\r\n left = borderLeft;\r\n right = borderRight;\r\n }\r\n }\r\n\r\n ctx.beginPath();\r\n ctx.fillStyle = vm.backgroundColor;\r\n ctx.strokeStyle = vm.borderColor;\r\n ctx.lineWidth = borderWidth;\r\n\r\n // Corner points, from bottom-left to bottom-right clockwise\r\n // | 1 2 |\r\n // | 0 3 |\r\n const corners = [[left, bottom], [left, top], [right, top], [right, bottom]];\r\n\r\n // Find first (starting) corner with fallback to 'bottom'\r\n const borders = ['bottom', 'left', 'top', 'right'];\r\n let startCorner = borders.indexOf(borderSkipped, 0);\r\n if (startCorner === -1) {\r\n startCorner = 0;\r\n }\r\n\r\n function cornerAt(index) {\r\n return corners[(startCorner + index) % 4];\r\n }\r\n\r\n // Draw rectangle from 'startCorner'\r\n let corner = cornerAt(0);\r\n ctx.moveTo(corner[0], corner[1]);\r\n\r\n for (let i = 1; i < 4; i += 1) {\r\n corner = cornerAt(i);\r\n let nextCornerId = i + 1;\r\n if (nextCornerId === 4) {\r\n nextCornerId = 0;\r\n }\r\n\r\n const width = corners[2][0] - corners[1][0];\r\n const height = corners[0][1] - corners[1][1];\r\n const x = corners[1][0];\r\n const y = corners[1][1];\r\n\r\n radius = cornerRadius;\r\n // Fix radius being too large\r\n if (radius > Math.abs(height) / 2) {\r\n radius = Math.floor(Math.abs(height) / 2);\r\n }\r\n if (radius > Math.abs(width) / 2) {\r\n radius = Math.floor(Math.abs(width) / 2);\r\n }\r\n\r\n if (height < 0) {\r\n // Negative values in a standard bar chart\r\n const xTl = x;\r\n const xTr = x + width;\r\n const yTl = y + height;\r\n const yTr = y + height;\r\n\r\n const xBl = x;\r\n const xBr = x + width;\r\n const yBl = y;\r\n const yBr = y;\r\n\r\n // Draw\r\n ctx.moveTo(xBl + radius, yBl);\r\n ctx.lineTo(xBr - radius, yBr);\r\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\r\n ctx.lineTo(xTr, yTr + radius);\r\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\r\n ctx.lineTo(xTl + radius, yTl);\r\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\r\n ctx.lineTo(xBl, yBl - radius);\r\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\r\n } else if (width < 0) {\r\n // Negative values in a horizontal bar chart\r\n const xTl = x + width;\r\n const xTr = x;\r\n const yTl = y;\r\n const yTr = y;\r\n\r\n const xBl = x + width;\r\n const xBr = x;\r\n const yBl = y + height;\r\n const yBr = y + height;\r\n\r\n // Draw\r\n ctx.moveTo(xBl + radius, yBl);\r\n ctx.lineTo(xBr - radius, yBr);\r\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\r\n ctx.lineTo(xTr, yTr + radius);\r\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\r\n ctx.lineTo(xTl + radius, yTl);\r\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\r\n ctx.lineTo(xBl, yBl - radius);\r\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\r\n } else {\r\n // Positive Value\r\n ctx.moveTo(x + radius, y);\r\n ctx.lineTo(x + width - radius, y);\r\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n ctx.lineTo(x + width, y + height - radius);\r\n ctx.quadraticCurveTo(\r\n x + width,\r\n y + height,\r\n x + width - radius,\r\n y + height\r\n );\r\n ctx.lineTo(x + radius, y + height);\r\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n ctx.lineTo(x, y + radius);\r\n ctx.quadraticCurveTo(x, y, x + radius, y);\r\n }\r\n }\r\n\r\n ctx.fill();\r\n if (borderWidth) {\r\n ctx.stroke();\r\n }\r\n}\r\n\r\nChart.helpers.extend(Chart.elements.Rectangle.prototype, {\r\n draw\r\n});\r\n","/* eslint-disable */\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in projection, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'projection' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}","export const ENABLE_REDUX_DEV_TOOLS = true;\r\nexport const THEMES = {\r\n LIGHT: 'LIGHT'\r\n};\r\n","import { combineReducers } from '@reduxjs/toolkit';\r\nimport { reducer as formReducer } from 'redux-form';\r\n\r\nconst rootReducer = combineReducers({\r\n form: formReducer\r\n});\r\n\r\nexport default rootReducer;\r\n","import { \r\n useDispatch as useReduxDispatch,\r\n useSelector as useReduxSelector\r\n} from 'react-redux';\r\nimport { configureStore } from '@reduxjs/toolkit';\r\nimport { ENABLE_REDUX_DEV_TOOLS } from 'src/constants';\r\nimport rootReducer from './rootReducer';\r\n\r\nconst store = configureStore({\r\n reducer: rootReducer,\r\n devTools: ENABLE_REDUX_DEV_TOOLS\r\n});\r\n\r\nexport const useSelector = useReduxSelector;\r\n\r\nexport const useDispatch = () => useReduxDispatch();\r\n\r\nexport default store;\r\n","import React, {\r\n createContext,\r\n useEffect,\r\n useState\r\n} from 'react';\r\nimport _ from 'lodash';\r\nimport { THEMES } from 'src/constants';\r\n\r\nconst defaultSettings = {\r\n direction: 'ltr',\r\n responsiveFontSizes: true,\r\n theme: THEMES.ONE_LIGHT\r\n};\r\n\r\nexport const restoreSettings = () => {\r\n let settings = null;\r\n\r\n try {\r\n const storedData = window.localStorage.getItem('settings');\r\n\r\n if (storedData) {\r\n settings = JSON.parse(storedData);\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n // If stored data is not a strigified JSON this will fail,\r\n // that's why we catch the error\r\n }\r\n\r\n return settings;\r\n};\r\n\r\nexport const storeSettings = (settings) => {\r\n window.localStorage.setItem('settings', JSON.stringify(settings));\r\n};\r\n\r\nconst SettingsContext = createContext({\r\n settings: defaultSettings,\r\n saveSettings: () => { }\r\n});\r\n\r\nexport const SettingsProvider = ({ settings, children }) => {\r\n const [currentSettings, setCurrentSettings] = useState(settings || defaultSettings);\r\n\r\n const handleSaveSettings = (update = {}) => {\r\n const mergedSettings = _.merge({}, currentSettings, update);\r\n\r\n setCurrentSettings(mergedSettings);\r\n storeSettings(mergedSettings);\r\n };\r\n\r\n useEffect(() => {\r\n const restoredSettings = restoreSettings();\r\n\r\n if (restoredSettings) {\r\n setCurrentSettings(restoredSettings);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n document.dir = currentSettings.direction;\r\n }, [currentSettings]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const SettingsConsumer = SettingsContext.Consumer;\r\n\r\nexport default SettingsContext;\r\n","import { createStyles, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(() => createStyles({\r\n '@global': {\r\n '*': {\r\n boxSizing: 'border-box',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n html: {\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n height: '100%',\r\n width: '100%'\r\n },\r\n body: {\r\n height: '100%',\r\n width: '100%'\r\n },\r\n '#root': {\r\n height: '100%',\r\n width: '100%'\r\n }\r\n }\r\n}));\r\n\r\nconst GlobalStyles = () => {\r\n useStyles();\r\n\r\n return null;\r\n};\r\n\r\nexport default GlobalStyles;\r\n","import { useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nconst useScrollReset = () => {\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [location.pathname]);\r\n\r\n return null;\r\n};\r\n\r\nexport default useScrollReset;\r\n","import useScrollReset from 'src/hooks/useScrollReset';\r\n\r\nconst ScrollReset = () => {\r\n useScrollReset();\r\n\r\n return null;\r\n};\r\n\r\nexport default ScrollReset;\r\n","import { useContext } from 'react'; \r\nimport SettingsContext from 'src/contexts/SettingsContext';\r\n\r\nconst useSettings = () => useContext(SettingsContext);\r\n\r\nexport default useSettings;\r\n","import _ from 'lodash';\r\nimport { colors, responsiveFontSizes } from '@material-ui/core';\r\nimport { THEMES } from 'src/constants';\r\nimport { softShadows } from './shadows';\r\nimport typography from './typography';\r\nimport { createTheme } from '@material-ui/core/styles';\r\n\r\nconst baseOptions = {\r\n direction: 'ltr',\r\n typography,\r\n overrides: {\r\n MuiLinearProgress: {\r\n root: {\r\n borderRadius: 3,\r\n overflow: 'hidden'\r\n }\r\n },\r\n MuiListItemIcon: {\r\n root: {\r\n minWidth: 32\r\n }\r\n },\r\n MuiChip: {\r\n root: {\r\n backgroundColor: 'rgba(0,0,0,0.075)'\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst themesOptions = [\r\n {\r\n name: THEMES.LIGHT,\r\n overrides: {\r\n MuiInputBase: {\r\n input: {\r\n '&::placeholder': {\r\n opacity: 1,\r\n color: colors.grey[600]\r\n }\r\n }\r\n }\r\n },\r\n palette: {\r\n type: 'light',\r\n action: {\r\n active: colors.grey[600]\r\n },\r\n background: {\r\n default: colors.common.white,\r\n dark: '#fcfcfc',\r\n paper: colors.common.white\r\n },\r\n primary: {\r\n main: '#0064C8'\r\n },\r\n secondary: {\r\n main: '#0064C8'\r\n },\r\n text: {\r\n primary: colors.grey[800],\r\n secondary: colors.grey[600]\r\n }\r\n },\r\n shadows: softShadows\r\n }\r\n];\r\n\r\nexport const createMyTheme = (config = {}) => {\r\n let themeOptions = themesOptions.find(theme => theme.name === config.theme);\r\n\r\n if (!themeOptions) {\r\n [themeOptions] = themesOptions;\r\n }\r\n\r\n let theme = createTheme(\r\n _.merge({}, baseOptions, themeOptions, { direction: config.direction })\r\n );\r\n\r\n if (config.responsiveFontSizes) {\r\n theme = responsiveFontSizes(theme);\r\n }\r\n\r\n return theme;\r\n};\r\n","export default {\r\n h1: {\r\n fontWeight: 500,\r\n fontSize: 35,\r\n letterSpacing: '-0.24px'\r\n },\r\n h2: {\r\n fontWeight: 500,\r\n fontSize: 29,\r\n letterSpacing: '-0.24px'\r\n },\r\n h3: {\r\n fontWeight: 500,\r\n fontSize: 24,\r\n letterSpacing: '-0.06px'\r\n },\r\n h4: {\r\n fontWeight: 500,\r\n fontSize: 20,\r\n letterSpacing: '-0.06px'\r\n },\r\n h5: {\r\n fontWeight: 500,\r\n fontSize: 16,\r\n letterSpacing: '-0.05px'\r\n },\r\n h6: {\r\n fontWeight: 500,\r\n fontSize: 14,\r\n letterSpacing: '-0.05px'\r\n },\r\n overline: {\r\n fontWeight: 500\r\n }\r\n};\r\n","export const softShadows = [\r\n 'none',\r\n '0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\r\n];\r\n\r\nexport const strongShadows = [\r\n 'none',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 2px 2px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 8px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 5px 8px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 12px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 12px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 16px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 16px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 8px 18px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 9px 18px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 10px 20px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 11px 20px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 12px 22px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 13px 22px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 14px 24px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 16px 28px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 18px 30px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 20px 32px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 22px 34px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)'\r\n];\r\n","import React, { useState } from 'react';\r\nimport { NavLink as RouterLink } from 'react-router-dom';\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Button,\r\n Collapse,\r\n ListItem,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n item: {\r\n display: 'block',\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n itemLeaf: {\r\n display: 'flex',\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n button: {\r\n color: theme.palette.text.secondary,\r\n padding: '10px 8px',\r\n justifyContent: 'flex-start',\r\n textTransform: 'none',\r\n letterSpacing: 0,\r\n width: '100%'\r\n },\r\n buttonLeaf: {\r\n color: theme.palette.text.secondary,\r\n padding: '10px 8px',\r\n justifyContent: 'flex-start',\r\n textTransform: 'none',\r\n letterSpacing: 0,\r\n width: '100%',\r\n fontWeight: theme.typography.fontWeightRegular,\r\n '&.depth-0': {\r\n '& $title': {\r\n fontWeight: theme.typography.fontWeightMedium\r\n }\r\n }\r\n },\r\n icon: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginRight: theme.spacing(1)\r\n },\r\n title: {\r\n marginRight: 'auto'\r\n },\r\n active: {\r\n color: theme.palette.secondary.main,\r\n '& $title': {\r\n fontWeight: theme.typography.fontWeightMedium\r\n },\r\n '& $icon': {\r\n color: theme.palette.secondary.main\r\n }\r\n }\r\n}));\r\n\r\nconst NavItem = ({\r\n children,\r\n className,\r\n depth,\r\n href,\r\n icon: Icon,\r\n info: Info,\r\n open: openProp,\r\n title,\r\n ...rest\r\n}) => {\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(openProp);\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n let paddingLeft = 8;\r\n\r\n if (depth > 0) {\r\n paddingLeft = 32 + 8 * depth;\r\n }\r\n\r\n const style = { paddingLeft };\r\n\r\n if (children) {\r\n return (\r\n \r\n \r\n {Icon && (\r\n \r\n )}\r\n \r\n {title}\r\n \r\n {open ? : }\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {Icon && (\r\n \r\n )}\r\n \r\n {title}\r\n \r\n {Info && }\r\n \r\n \r\n );\r\n};\r\n\r\nNavItem.propTypes = {\r\n children: PropTypes.node,\r\n className: PropTypes.string,\r\n depth: PropTypes.number.isRequired,\r\n href: PropTypes.string,\r\n icon: PropTypes.elementType,\r\n info: PropTypes.elementType,\r\n open: PropTypes.bool,\r\n title: PropTypes.string.isRequired\r\n};\r\n\r\nNavItem.defaultProps = {\r\n open: false\r\n};\r\n\r\nexport default NavItem;\r\n","/* eslint-disable no-use-before-define */\r\nimport React, { useEffect } from 'react';\r\nimport { useLocation, matchPath } from 'react-router-dom';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Box,\r\n Drawer,\r\n Hidden,\r\n List,\r\n ListSubheader,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport {\r\n Globe as GlobeIcon,\r\n User as UserIcon,\r\n File as FileIcon\r\n} from 'react-feather';\r\nimport NavItem from './NavItem';\r\n\r\nconst sections = [\r\n {\r\n items: [\r\n {\r\n title: 'Home',\r\n icon: GlobeIcon,\r\n href: '/user/home'\r\n },\r\n {\r\n title: 'My Enrollments',\r\n href: '/user/registrations',\r\n icon: FileIcon\r\n },\r\n {\r\n title: 'My Account',\r\n href: '/user/account',\r\n icon: UserIcon\r\n }\r\n ]\r\n }\r\n];\r\n\r\nfunction renderNavItems({ items, pathname, depth = 0 }) {\r\n return (\r\n \r\n {items.reduce(\r\n (acc, item) => reduceChildRoutes({ acc, item, pathname, depth }),\r\n []\r\n )}\r\n \r\n );\r\n}\r\n\r\nfunction reduceChildRoutes({ acc, pathname, item, depth }) {\r\n const key = item.title + depth;\r\n\r\n if (item.items) {\r\n const open = matchPath(pathname, {\r\n path: item.href,\r\n exact: false\r\n });\r\n\r\n acc.push(\r\n \r\n {renderNavItems({\r\n depth: depth + 1,\r\n pathname,\r\n items: item.items\r\n })}\r\n \r\n );\r\n } else {\r\n acc.push(\r\n \r\n );\r\n }\r\n\r\n return acc;\r\n}\r\n\r\nconst useStyles = makeStyles(() => ({\r\n mobileDrawer: {\r\n width: 222\r\n },\r\n desktopDrawer: {\r\n width: 222,\r\n top: 64,\r\n height: 'calc(100% - 64px)'\r\n },\r\n avatar: {\r\n cursor: 'pointer',\r\n width: 64,\r\n height: 64\r\n }\r\n}));\r\n\r\nconst NavBar = ({ onMobileClose, openMobile }) => {\r\n const classes = useStyles();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (openMobile && onMobileClose) {\r\n onMobileClose();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [location.pathname]);\r\n\r\n const content = (\r\n \r\n \r\n \r\n \r\n \r\n \"OHNAP\"\r\n \r\n \r\n \r\n \r\n {sections.map((section, index) => (\r\n \r\n {section.subheader}\r\n \r\n }\r\n >\r\n {renderNavItems({\r\n items: section.items,\r\n pathname: location.pathname\r\n })}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n {content}\r\n \r\n \r\n \r\n \r\n {content}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nNavBar.propTypes = {\r\n onMobileClose: PropTypes.func,\r\n openMobile: PropTypes.bool\r\n};\r\n\r\nexport default NavBar;\r\n","import React, { useRef, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useSnackbar } from 'notistack';\r\nimport {\r\n Avatar,\r\n Box,\r\n ButtonBase,\r\n Menu,\r\n MenuItem,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport useAuth from 'src/hooks/useAuth';\r\nimport SessionInfo from 'src/components/SessionInfo';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n avatar: {\r\n height: 32,\r\n width: 32,\r\n marginRight: theme.spacing(1)\r\n },\r\n popover: {\r\n width: 200\r\n }\r\n}));\r\n\r\nconst Account = () => {\r\n const classes = useStyles();\r\n const history = useHistory();\r\n const ref = useRef(null);\r\n const { logout } = useAuth();\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [isOpen, setOpen] = useState(false);\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleLogout = async () => {\r\n try {\r\n handleClose();\r\n await logout();\r\n history.push('/');\r\n } catch (err) {\r\n console.error(err);\r\n enqueueSnackbar('Unable to logout.', {\r\n variant: 'error',\r\n anchorOrigin: { horizontal: 'center', vertical: 'top' }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {SessionInfo.getFullName()}\r\n \r\n \r\n \r\n Logout\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Account;\r\n","import React from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport {\r\n AppBar,\r\n Box,\r\n Hidden,\r\n IconButton,\r\n Toolbar,\r\n makeStyles,\r\n SvgIcon\r\n} from '@material-ui/core';\r\nimport { Menu as MenuIcon } from 'react-feather';\r\nimport { THEMES } from 'src/constants';\r\nimport Account from './Account';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n zIndex: theme.zIndex.drawer + 100,\r\n ...(theme.name === THEMES.LIGHT\r\n ? {\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.primary.main\r\n }\r\n : {}),\r\n ...(theme.name === THEMES.ONE_LIGHT\r\n ? {\r\n backgroundColor: theme.palette.background.default\r\n }\r\n : {})\r\n },\r\n toolbar: {\r\n minHeight: 64\r\n }\r\n}));\r\n\r\nconst TopBar = ({ className, onMobileNavOpen, ...rest }) => {\r\n const classes = useStyles();\r\n\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\n \r\n );\r\n};\r\n\r\nTopBar.propTypes = {\r\n className: PropTypes.string,\r\n onMobileNavOpen: PropTypes.func\r\n};\r\n\r\nTopBar.defaultProps = {\r\n onMobileNavOpen: () => {}\r\n};\r\n\r\nexport default TopBar;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport { AppBar, Box, Hidden, Typography, makeStyles } from '@material-ui/core';\r\nimport { grey } from '@material-ui/core/colors';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n appBar: {\r\n zIndex: 0,\r\n position: 'fixed',\r\n top: 'auto',\r\n bottom: 0,\r\n height: 36,\r\n color: grey[600],\r\n backgroundColor: grey[100]\r\n }\r\n}));\r\n\r\nconst FooterBar = ({ className, onMobileNavOpen, ...rest }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Copyright © 2022 OHNAP, Inc. All Rights Reserved.\r\n \r\n \r\n \r\n \r\n \r\n \r\n Copyright © 2022 OHNAP, Inc. All Rights Reserved.\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nFooterBar.propTypes = {\r\n className: PropTypes.string,\r\n onMobileNavOpen: PropTypes.func\r\n};\r\n\r\nFooterBar.defaultProps = {\r\n onMobileNavOpen: () => {}\r\n};\r\n\r\nexport default FooterBar;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport NavBar from './NavBar';\r\nimport TopBar from './TopBar';\r\nimport FooterBar from './FooterBar';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n backgroundColor: theme.palette.background.dark,\r\n display: 'flex',\r\n height: '100%',\r\n overflow: 'hidden',\r\n width: '100%'\r\n },\r\n wrapper: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden',\r\n paddingTop: 64,\r\n [theme.breakpoints.up('lg')]: {\r\n paddingLeft: 222\r\n }\r\n },\r\n contentContainer: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden'\r\n },\r\n content: {\r\n flex: '1 1 auto',\r\n height: '100%',\r\n overflow: 'auto',\r\n paddingBottom: '35px'\r\n }\r\n}));\r\n\r\nconst DashboardLayout = ({ children }) => {\r\n const classes = useStyles();\r\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\r\n\r\n return (\r\n
\r\n setMobileNavOpen(true)} />\r\n setMobileNavOpen(false)}\r\n openMobile={isMobileNavOpen}\r\n />\r\n
\r\n
\r\n
{children}
\r\n
\r\n
\r\n setMobileNavOpen(true)} />\r\n
\r\n );\r\n};\r\n\r\nDashboardLayout.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default DashboardLayout;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport TopBar from './TopBar';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n backgroundColor: theme.palette.text.secondary,\r\n display: 'flex',\r\n height: '100%',\r\n overflow: 'hidden',\r\n width: '100%'\r\n },\r\n wrapper: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden',\r\n paddingTop: 80\r\n },\r\n contentContainer: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden'\r\n },\r\n content: {\r\n flex: '1 1 auto',\r\n height: '100%',\r\n overflow: 'auto'\r\n }\r\n}));\r\n\r\nconst MainLayout = ({ children }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
{children}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nMainLayout.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default MainLayout;\r\n","import React, { useEffect } from 'react';\r\nimport NProgress from 'nprogress';\r\nimport {\r\n Box,\r\n LinearProgress,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n alignItems: 'center',\r\n backgroundColor: theme.palette.background.default,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n justifyContent: 'center',\r\n minHeight: '100%',\r\n padding: theme.spacing(3)\r\n }\r\n}));\r\n\r\nconst LoadingScreen = () => {\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n NProgress.start();\r\n\r\n return () => {\r\n NProgress.done();\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LoadingScreen;\r\n","import React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport useAuth from '../hooks/useAuth';\r\n\r\nconst AuthGuard = ({ children }) => {\r\n const { isAuthenticated } = useAuth();\r\n\r\n if (!isAuthenticated) {\r\n return ;\r\n }\r\n\r\n return <>{children};\r\n};\r\n\r\nAuthGuard.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default AuthGuard;\r\n","import React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport useAuth from '../hooks/useAuth';\r\n\r\nconst GuestGuard = ({ children }) => {\r\n const { isAuthenticated } = useAuth();\r\n\r\n if (isAuthenticated) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n {children}\r\n \r\n );\r\n};\r\n\r\nGuestGuard.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default GuestGuard;\r\n","import React, { Suspense, Fragment, lazy } from 'react';\r\nimport { Switch, Redirect, Route } from 'react-router-dom';\r\nimport DashboardLayout from 'src/layouts/DashboardLayout';\r\nimport MainLayout from 'src/layouts/MainLayout';\r\nimport LoadingScreen from 'src/components/LoadingScreen';\r\nimport AuthGuard from 'src/components/AuthGuard';\r\nimport GuestGuard from 'src/components/GuestGuard';\r\n\r\nexport const renderRoutes = (routes = []) => (\r\n }>\r\n \r\n {routes.map((route, i) => {\r\n const Guard = route.guard || Fragment;\r\n const Layout = route.layout || Fragment;\r\n const Component = route.component;\r\n\r\n return (\r\n (\r\n \r\n \r\n {route.routes ? (\r\n renderRoutes(route.routes)\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\nconst routes = [\r\n {\r\n exact: true,\r\n path: '/404',\r\n component: lazy(() => import('src/views/errors/NotFoundView'))\r\n },\r\n {\r\n exact: true,\r\n guard: GuestGuard,\r\n path: '/',\r\n component: lazy(() => import('src/views/auth/LoginView'))\r\n },\r\n {\r\n exact: true,\r\n guard: GuestGuard,\r\n path: '/forgotpassword',\r\n component: lazy(() => import('src/views/auth/ForgotPasswordView'))\r\n },\r\n {\r\n exact: true,\r\n guard: GuestGuard,\r\n path: '/resetpassword/:token',\r\n component: lazy(() => import('src/views/auth/ResetPasswordView'))\r\n },\r\n {\r\n exact: true,\r\n guard: GuestGuard,\r\n path: '/register',\r\n component: lazy(() => import('src/views/auth/RegisterView'))\r\n },\r\n {\r\n exact: true,\r\n guard: GuestGuard,\r\n path: '/verifyemail/:token',\r\n component: lazy(() => import('src/views/auth/VerifyEmailView'))\r\n },\r\n {\r\n path: '/user',\r\n guard: AuthGuard,\r\n layout: DashboardLayout,\r\n routes: [\r\n {\r\n exact: true,\r\n path: '/user/account',\r\n component: lazy(() => import('src/views/account'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/registrations',\r\n component: lazy(() => import('src/views/registrations'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/account/edit',\r\n component: lazy(() => import('src/views/account/EditProfileView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/account/editpassword',\r\n component: lazy(() => import('src/views/account/EditPasswordView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/account/editaccount',\r\n component: lazy(() => import('src/views/account/EditAccountView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/account/completeaccount',\r\n component: lazy(() => import('src/views/account/CompleteAccountView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/home',\r\n component: lazy(() => import('src/views/dashboard'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/newmembership',\r\n component: lazy(() => import('src/views/dashboard/NewMembershipView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/membershiprenewal',\r\n component: lazy(() => import('src/views/dashboard/MembershipRenewalView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/user/viewevent/:eventGlobalId',\r\n component: lazy(() => import('src/views/event/ViewEventView'))\r\n },\r\n {\r\n component: () => \r\n }\r\n ]\r\n },\r\n {\r\n path: '*',\r\n layout: MainLayout,\r\n routes: [\r\n {\r\n component: () => \r\n }\r\n ]\r\n }\r\n];\r\n\r\nexport default routes;\r\n","import React from 'react';\r\nimport { Router } from 'react-router-dom';\r\nimport { createBrowserHistory } from 'history';\r\nimport { create } from 'jss';\r\nimport rtl from 'jss-rtl';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { SnackbarProvider } from 'notistack';\r\nimport {\r\n jssPreset,\r\n StylesProvider,\r\n ThemeProvider\r\n} from '@material-ui/core';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport GlobalStyles from 'src/components/GlobalStyles';\r\nimport ScrollReset from 'src/components/ScrollReset';\r\nimport { AuthProvider } from 'src/contexts/JWTAuthContext';\r\nimport useSettings from 'src/hooks/useSettings';\r\nimport { createMyTheme } from 'src/theme';\r\nimport routes, { renderRoutes } from 'src/routes';\r\n\r\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] });\r\nconst history = createBrowserHistory();\r\n\r\nconst App = () => {\r\n const { settings } = useSettings();\r\n\r\n const theme = createMyTheme({\r\n direction: settings.direction,\r\n responsiveFontSizes: settings.responsiveFontSizes,\r\n theme: settings.theme\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderRoutes(routes)}\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-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport 'react-perfect-scrollbar/dist/css/styles.css';\r\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\nimport 'react-quill/dist/quill.snow.css';\r\nimport 'prismjs/prism';\r\nimport 'prismjs/components/prism-bash';\r\nimport 'prismjs/components/prism-javascript';\r\nimport 'prismjs/components/prism-jsx';\r\nimport 'nprogress/nprogress.css';\r\nimport 'src/assets/css/prism.css';\r\nimport 'src/mixins/chartjs';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { enableES5 } from 'immer';\r\nimport * as serviceWorker from 'src/serviceWorker';\r\nimport store from 'src/store';\r\nimport { SettingsProvider } from 'src/contexts/SettingsContext';\r\nimport App from 'src/App';\r\n\r\nenableES5();\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\nserviceWorker.register();\r\n"],"sourceRoot":""}