{"version":3,"sources":["appSettings.js","components/SessionInfo.js","hooks/useAuth.js","utils/axios.js","components/SplashScreen.js","contexts/JWTAuthContext.js","services.js","components/Logo.js","layouts/MainLayout/TopBar.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":["appSettings","apiUrl","process","SessionInfo","storageKey","getToken","token","localStorage","getItem","e","console","error","getFullName","isValid","result","tokenClaims","jwt_decode","Date","now","exp","removeToken","removeItem","useAuth","useContext","AuthContext","axiosInstance","axios","create","baseURL","interceptors","response","use","data","success","Promise","reject","status","window","location","href","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","setSession","setItem","fullName","firstName","lastName","defaults","headers","common","Authorization","reducer","state","action","type","payload","createContext","login","resolve","logout","AuthProvider","children","useReducer","dispatch","email","password","a","services","undefined","useEffect","err","initialise","Provider","value","SplashScreen","username","serviceResponse","fetch","method","body","JSON","stringify","then","ok","json","catch","getMyProfile","get","updateMyProfile","post","changePassword","getAdministrators","getAdministrator","userGlobalId","addAdministrator","put","updateAdministratorDetails","deleteAdministrator","delete","updateAdministratorPassword","getSettings","updateGeneralSettings","updateSMTPSettings","sendEmailResetPassword","resetPassword","getEvents","getEvent","eventGlobalId","getEventWithoutRegistrations","addEvent","formData","FormData","append","title","startDate","endDate","noOfParticipants","fileContent","amount","allowRegistration","isExclusive","isVisible","updateEventDetails","certificateFileContent","removeCertificate","deleteEvent","deleteEventAllowedEmail","eventAllowedEmailGlobalId","getUserStatistics","getMembershipStatistics","getUpcomingEvents","searchUsers","updateEventRegistrationStatus","getUserMemberProfile","downloadUserIdentificationCard","filename","Accept","responseType","split","blob","link","document","createElement","URL","createObjectURL","download","click","remove","updateUserProfile","updateMembershipDetails","birthday","sex","maritalStatus","prcLicenseNo","prcIssueDate","prcExpirationDate","prcFileContent","homeAddress","homeContactNo","company","companyAddress","companyContactNo","employmentStatus","highestEducationalAttainment","postGraduateCourse","chapterId","updateMembershipApplicationDetails","membershipGlobalId","proofOfPaymentFileContent","insuranceFormFileContent","receiptFileContent","removeReceipt","updateMembershipExpiration","getChapters","getChapter","addChapter","updateChapterDetails","deleteChapter","downloadUsers","downloadRegistrants","updateMemberRegistrationStatus","sendEmailNotification","sendEmailNotifications","getMembershipProofOfPayment","getMembershipInsuranceForm","getMembershipReceipt","getEventRegistrationProofOfPayment","eventRegistrationGlobalId","getEventRegistrationReceipt","eventRegistratioGlobalId","addAllowedEmailsEvent","updateEventRegistrationDetails","log","hasCertificate","certificateName","referenceNo","addEventRegistrationDetails","downloadCertificate","downloadProfileId","downloadPrcId","Logo","props","alt","src","textAlign","toolbar","logo","marginRight","fontWeight","typography","fontWeightMedium","marginLeft","divider","TopBar","rest","AppBar","clsx","color","Grid","container","direction","justify","style","borderBottom","Toolbar","to","Hidden","xsDown","smUp","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","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","LayoutIcon","GlobeIcon","UsersIcon","HomeIcon","SettingsIcon","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","warn","Error","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.6cb8eba1.chunk.js","sourcesContent":["export const appSettings = {\r\n\tapiUrl: process.env.REACT_APP_API_URL + '/v1' // \tapiUrl: 'https://ohnap.ph:3030/v1'\t\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;\r\n","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 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 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;","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/administrator/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}/admin/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}/admin/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 changePassword: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/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 getAdministrators: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/administrators`, {\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 getAdministrator: async userGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/getadministrator/` + userGlobalId, {\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 addAdministrator: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .put(`${appSettings.apiUrl}/admin/addadministrator`, 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 updateAdministratorDetails: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updateadministrator`, 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 deleteAdministrator: async userGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .delete(\r\n `${appSettings.apiUrl}/admin/deleteadministrator/` + userGlobalId,\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 updateAdministratorPassword: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(\r\n `${appSettings.apiUrl}/admin/updateadministratorpassword`,\r\n payload,\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 getSettings: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/settings`, {\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 updateGeneralSettings: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updateGeneralSettings`, 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 updateSMTPSettings: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updatesmtpsettings`, 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: ${SessionInfo.getToken()}`);\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 getEvents: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/events`, {\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}/admin/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 getEventWithoutRegistrations: async eventGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/geteventwithoutregistrations/` + 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 addEvent: async payload => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('title', payload.title);\r\n formData.append('startDate', payload.startDate);\r\n formData.append('endDate', payload.endDate);\r\n formData.append('noOfParticipants', payload.noOfParticipants);\r\n formData.append('formFile', payload.fileContent);\r\n formData.append('amount', payload.amount);\r\n formData.append('allowRegistration', payload.allowRegistration);\r\n formData.append('isExclusive', payload.isExclusive);\r\n formData.append('isVisible', payload.isVisible);\r\n await axios\r\n .put(`${appSettings.apiUrl}/admin/addevent`, 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 updateEventDetails: async payload => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('eventGlobalId', payload.eventGlobalId);\r\n formData.append('title', payload.title);\r\n formData.append('startDate', payload.startDate);\r\n formData.append('endDate', payload.endDate);\r\n formData.append('noOfParticipants', payload.noOfParticipants);\r\n formData.append('formFile', payload.fileContent);\r\n formData.append('certificateFormFile', payload.certificateFileContent);\r\n formData.append('amount', payload.amount);\r\n formData.append('allowRegistration', payload.allowRegistration);\r\n formData.append('isExclusive', payload.isExclusive);\r\n formData.append('isVisible', payload.isVisible);\r\n formData.append('removeCertificate', payload.removeCertificate);\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updateevent`, 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 deleteEvent: async eventGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .delete(\r\n `${appSettings.apiUrl}/admin/deleteevent/` + eventGlobalId,\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 deleteEventAllowedEmail: async eventAllowedEmailGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .delete(\r\n `${appSettings.apiUrl}/admin/deleteeventallowedemail/` + eventAllowedEmailGlobalId,\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 getUserStatistics: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/getuserstatistics/`, {\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 getMembershipStatistics: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/getmembershipstatistics/`, {\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 getUpcomingEvents: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/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 searchUsers: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/searchusers`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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 updateEventRegistrationStatus: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/updateeventregistrationstatus`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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 getUserMemberProfile: async (userGlobalId) => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/usermemberprofile/` + userGlobalId, {\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 downloadUserIdentificationCard: userGlobalId => {\r\n let filename = `OHNAP-ID`;\r\n fetch(\r\n `${appSettings.apiUrl}/admin/downloaduseridentificationcard/` + userGlobalId,\r\n {\r\n headers: {\r\n Accept:\r\n 'application/pdf',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n }\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 updateUserProfile: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/updateuserprofile`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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 updateMembershipDetails: async (payload) => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('userGlobalId', payload.userGlobalId);\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('highestEducationalAttainment', payload.highestEducationalAttainment); \r\n formData.append('postGraduateCourse', payload.postGraduateCourse); \r\n formData.append('chapterId', payload.chapterId);\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updatemembershipdetails`, 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 updateMembershipApplicationDetails: async (payload) => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('membershipGlobalId', payload.membershipGlobalId);\r\n formData.append('proofOfPaymentFile', payload.proofOfPaymentFileContent);\r\n formData.append('insuranceFormFile', payload.insuranceFormFileContent);\r\n formData.append('receiptFile', payload.receiptFileContent);\r\n formData.append('removeReceipt', payload.removeReceipt);\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updatemembershipapplicationdetails`, 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 updateMembershipExpiration: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/updatemembershipexpiration`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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 getChapters: async () => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/chapters`, {\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 getChapter: async userGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/getchapter/` + userGlobalId, {\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 addChapter: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .put(`${appSettings.apiUrl}/admin/addchapter`, 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 updateChapterDetails: async payload => {\r\n let serviceResponse = null;\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updatechapter`, 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 deleteChapter: async chapterId => {\r\n let serviceResponse = null;\r\n await axios\r\n .delete(\r\n `${appSettings.apiUrl}/admin/deletechapter/` + chapterId,\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 downloadUsers: async () => {\r\n // dev note: for some reason axios does not work well with file download, so fetch was used instead\r\n let filename = `users.xlsx`;\r\n await fetch(\r\n `${appSettings.apiUrl}/admin/downloadusers`,\r\n {\r\n headers: {\r\n Accept:\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n }\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 downloadRegistrants: async (eventGlobalId) => {\r\n // dev note: for some reason axios does not work well with file download, so fetch was used instead\r\n let filename = `registrants.xlsx`;\r\n await fetch(\r\n `${appSettings.apiUrl}/admin/downloadregistrants/` + eventGlobalId,\r\n {\r\n headers: {\r\n Accept:\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n }\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 updateMemberRegistrationStatus: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/updatememberregistrationstatus`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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 sendEmailNotification: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/sendemailnotification`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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 sendEmailNotifications: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/sendemailnotifications`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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(`${appSettings.apiUrl}/admin/getmembershipproofofpayment/` + membershipGlobalId, {\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 getMembershipInsuranceForm: async membershipGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/getmembershipinsuranceform/` + membershipGlobalId, {\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 getMembershipReceipt: async membershipGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/getmembershipreceipt/` + membershipGlobalId, {\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 getEventRegistrationProofOfPayment: async eventRegistrationGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/geteventregistrationproofofpayment/` + eventRegistrationGlobalId, {\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 getEventRegistrationReceipt: async eventRegistratioGlobalId => {\r\n let serviceResponse = null;\r\n await axios\r\n .get(`${appSettings.apiUrl}/admin/geteventregistrationreceipt/` + eventRegistratioGlobalId, {\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 addAllowedEmailsEvent: async (payload) => {\r\n let serviceResponse = null;\r\n await axios.post(`${appSettings.apiUrl}/admin/addallowedemailsevent`, payload,\r\n { headers: { \"Authorization\": `Bearer ${SessionInfo.getToken()}` } }\r\n )\r\n .then(function (response) { serviceResponse = response.data; })\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 updateEventRegistrationDetails: async (payload) => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n console.log(payload);\r\n formData.append('eventRegistrationGlobalId', payload.eventRegistrationGlobalId);\r\n formData.append('proofOfPaymentFile', payload.proofOfPaymentFileContent);\r\n formData.append('receiptFile', payload.receiptFileContent);\r\n formData.append('removeReceipt', payload.removeReceipt);\r\n formData.append('hasCertificate', payload.hasCertificate);\r\n formData.append('certificateName', payload.certificateName ? payload.certificateName : 'temp');\r\n formData.append('referenceNo', payload.referenceNo? payload.referenceNo : 'temp');\r\n await axios\r\n .post(`${appSettings.apiUrl}/admin/updateeventregistrationdetails`, 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 addEventRegistrationDetails: async (payload) => {\r\n let serviceResponse = null;\r\n const formData = new FormData();\r\n formData.append('eventGlobalId', payload.eventGlobalId);\r\n formData.append('email', payload.email);\r\n await axios\r\n .put(`${appSettings.apiUrl}/admin/addeventregistrationdetails`, 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 downloadCertificate: eventRegistrationGlobalId => {\r\n let filename = `OHNAP-ID`;\r\n fetch(\r\n `${appSettings.apiUrl}/admin/downloadcertificate/` + eventRegistrationGlobalId,\r\n {\r\n headers: {\r\n Accept:\r\n 'application/pdf',\r\n Authorization: `Bearer ${SessionInfo.getToken()}`\r\n },\r\n responseType: 'blob'\r\n }\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 downloadProfileId: userGlobalId => {\r\n let filename = `OHNAP-ID`;\r\n fetch(`${appSettings.apiUrl}/admin/downloadprofileid/` + userGlobalId, {\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 downloadPrcId: userGlobalId => {\r\n let filename = `OHNAP-ID`;\r\n fetch(`${appSettings.apiUrl}/admin/downloadprcId/` + userGlobalId, {\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;","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 { 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 console.warn(new Error(`The theme ${config.theme} is not valid`));\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 Layout as LayoutIcon,\r\n Globe as GlobeIcon,\r\n Users as UsersIcon,\r\n Home as HomeIcon,\r\n Settings as SettingsIcon\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: 'Dashboard',\r\n icon: LayoutIcon,\r\n href: '/admin/dashboard'\r\n },\r\n {\r\n title: 'Events',\r\n icon: GlobeIcon,\r\n href: '/admin/events'\r\n },\r\n {\r\n title: 'Users / Members',\r\n icon: UsersIcon,\r\n href: '/admin/users'\r\n },\r\n {\r\n title: 'Administrators',\r\n href: '/admin/administrators',\r\n icon: UsersIcon\r\n },\r\n {\r\n title: 'Chapters',\r\n icon: HomeIcon,\r\n href: '/admin/chapters'\r\n },\r\n {\r\n title: 'Settings',\r\n href: '/admin/settings/general',\r\n icon: SettingsIcon\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 backgroundColor: '#f7f7f7'\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 const handleMyAccount = () => {\r\n handleClose();\r\n history.push('/admin/account');\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 My Account\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 path: '/admin',\r\n guard: AuthGuard,\r\n layout: DashboardLayout,\r\n routes: [\r\n {\r\n exact: true,\r\n path: '/admin/account',\r\n component: lazy(() => import('src/views/account'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/account/edit',\r\n component: lazy(() => import('src/views/account/EditView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/dashboard',\r\n component: lazy(() => import('src/views/dashboard'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/users',\r\n component: lazy(() => import('src/views/users'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/viewuser/:userGlobalId',\r\n component: lazy(() => import('src/views/users/ViewUserView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editprofile/:userGlobalId',\r\n component: lazy(() => import('src/views/users/EditProfileView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editexpiration/:userGlobalId',\r\n component: lazy(() => import('src/views/users/EditMembershipExpirationView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editmembership/:userGlobalId',\r\n component: lazy(() => import('src/views/users/EditMembershipView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/emailusers',\r\n component: lazy(() => import('src/views/users/SendEmailView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editmembershipapplication/:userGlobalId/:membershipGlobalId',\r\n component: lazy(() => import('src/views/users/EditMembershipApplicationView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/events',\r\n component: lazy(() => import('src/views/events'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/viewevent/:eventGlobalId/:activetab',\r\n component: lazy(() => import('src/views/events/ViewEventView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/addevent',\r\n component: lazy(() => import('src/views/events/AddEventView'))\r\n }, \r\n {\r\n exact: true,\r\n path: '/admin/editevent/:eventGlobalId',\r\n component: lazy(() => import('src/views/events/EditEventView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/addallowedemailsevent/:eventGlobalId',\r\n component: lazy(() => import('src/views/events/AddAllowedEmailsView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/emailregistrants/:eventGlobalId',\r\n component: lazy(() => import('src/views/events/SendEmailView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/emailallowedemails/:eventGlobalId',\r\n component: lazy(() => import('src/views/events/SendAllowedEmailView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editeventregistration/:eventGlobalId/:eventRegistrationGlobalId/:fullName/:hasCertificate/:certificateName/:referenceNo',\r\n component: lazy(() => import('src/views/events/EditEventRegistrationView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/addeventregistration/:eventGlobalId',\r\n component: lazy(() => import('src/views/events/AddEventRegistrationView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/administrators',\r\n component: lazy(() => import('src/views/administrators'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/addadministrator',\r\n component: lazy(() => import('src/views/administrators/AddAdministratorView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editadministrator/:userGlobalId',\r\n component: lazy(() => import('src/views/administrators/EditAdministratorView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/chapters',\r\n component: lazy(() => import('src/views/chapters'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/addchapter',\r\n component: lazy(() => import('src/views/chapters/AddChapterView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editchapter/:userGlobalId',\r\n component: lazy(() => import('src/views/chapters/EditChapterView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editpassword/:userGlobalId',\r\n component: lazy(() => import('src/views/administrators/ChangePasswordView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/settings/:activetab',\r\n component: lazy(() => import('src/views/settings'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editsettings/general',\r\n component: lazy(() => import('src/views/settings/EditGeneralView'))\r\n },\r\n {\r\n exact: true,\r\n path: '/admin/editsettings/smtp',\r\n component: lazy(() => import('src/views/settings/EditSMTPView'))\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":""}