{"version":3,"sources":["utils/imageUtils.js","utils/mock.js","utils/wait.js","__mocks__/account.js","__mocks__/customUserFields.js","__mocks__/groups.js","__mocks__/licenseAlerts.js","__mocks__/licenses.js","__mocks__/notifications.js","__mocks__/serviceStatus.js","__mocks__/trainingRequests.js","__mocks__/usageChart.js","__mocks__/usageHeatMap.js","utils/padArray.js","__mocks__/users.js","__mocks__/welcomeEmails.js","serviceWorker.js","guards/AdminGuard.js","guards/AuthGuard.js","layouts/DashboardLayout/NavBar/NavItem.js","layouts/DashboardLayout/NavBar/index.js","components/IdleTimoutHandler.js","layouts/DashboardLayout/TopBar/Account.js","layouts/DashboardLayout/TopBar/Notifications.js","layouts/DashboardLayout/TopBar/index.js","layouts/DashboardLayout/index.js","utils/getDebugInfo.js","views/errors/ErrorView.js","components/ErrorBoundary.js","guards/GuestGuard.js","guards/AutoLoginGuard.js","guards/PasswordGuard.js","routes.js","components/GlobalStyles.js","components/GoogleAnalytics.js","hooks/useScrollReset.js","components/ScrollReset.js","theme/shadows.js","theme/index.js","theme/typography.js","App.js","index.js","constants.js","utils/axios.js","utils/pathUtils.js","slices/notification.js","hooks/useIsMountedRef.js","slices/admin/companySettings.js","utils/mui-datatables-master/src/utils.js","static/products.js","components/SplashScreen.js","contexts/JWTAuthContext.js","utils/analytics.js","components/Page.js","components/UserAvatar/getContrastColor.js","components/UserAvatar/index.js","slices/licenses.js","slices/admin/users.js","slices/admin/groups.js","slices/admin/welcomeEmails.js","slices/userProductAccess.js","static/countries.js","components/LoadingScreen.js","slices/admin/customFields.js","slices/savedDefaults.js","slices/usageHeatMap.js","slices/tickets.js","slices/licenseOverview.js","slices/licenseAlerts.js","slices/licenseStatuses.js","slices/serviceStatus.js","slices/usageChart.js","slices/UpdateProfile.js","slices/products.js","slices/admin/license/productAccess.js","AppInsights.js","hooks/useAuth.js","store/rootReducer.js","store/index.js"],"names":["base64ToImage","imageData","axiosMockAdapter","AxiosMockAdapter","axios","delayResponse","wait","time","Promise","res","setTimeout","users","id","firstName","lastName","avatar","emailAddress","password","groupId","admin","mock","restore","onPost","reply","request","a","JSON","parse","data","user","find","_user","message","accessToken","jwt","sign","userId","expiresIn","console","error","onGet","Authorization","headers","split","verify","err","fields","name","field","uuidv4","fieldId","update","_","map","_field","assign","fieldIds","reject","includes","groups","welcomeEmailId","userIds","parentGroup","parentGroupId","group","_group","groupIds","activeEmailAlerts","activeSmsAlerts","emailAddresses","phoneNumbers","_activeEmailAlerts","_activeSmsAlerts","_emailAddresses","_phoneNumbers","allLicenses","licenseId","productName","purchasedOn","moment","subtract","days","type","validUntil","add","usedLicenses","usedLicenseId","computerName","machineCode","ipAddress","activatedOn","licenseIds","license","licenseStatuses","activeLicenses","expiringLicenses","expiredLicenses","licenseOverview","productId","quantity","used","Math","round","random","toDate","lastUsed","downloadUrl","computersUsedOn","log","stringify","notifications","createdAt","getTime","description","title","href","notificationIds","notification","serviceStatus","operational","epoch","year","month","date","filters","rangeStart","dataPointsToGenerate","dataPoints","rangeEnd","range","customRange","end","start","timeSegmentation","diff","dataPointTime","i","dayOfWeek","day","excludeWeekends","workHoursOnly","set","isBefore","workHours","isAfter","timeAsString","toString","value","metric","push","chartData","totalLicenses","pushWeekDataPoints","weekDataPoints","arr","fill","Array","concat","slice","length","len","rightPadArray","emails","subject","customText","defaultEmail","emailReplyAddress","email","emailId","_email","emailIds","Boolean","window","location","hostname","match","AdminGuard","children","useAuth","to","AuthGuard","isAuthenticated","useLocation","setRedirectUrl","pathname","addRedirectUrlToPath","getRedirectUrl","isTempPassword","twoFactorEnabled","isCodeVerified","redirectUrl","useStyles","makeStyles","theme","item","display","paddingTop","paddingBottom","itemLeaf","button","color","colors","blueGrey","padding","marginLeft","justifyContent","textTransform","letterSpacing","width","background","buttonLeaf","fontWeight","typography","fontWeightRegular","fontWeightMedium","icon","alignItems","marginRight","spacing","active","palette","secondary","main","NavItem","className","depth","Icon","Info","info","openProp","open","rest","classes","useState","setOpen","paddingLeft","style","ListItem","clsx","disableGutters","key","Button","onClick","prevOpen","size","variant","Collapse","in","activeClassName","component","RouterLink","exact","defaultProps","items","DashboardSquare01Icon","CloudDownloadIcon","UserGroupIcon","LicenseIcon","adminOnly","TaskAdd02Icon","SoftwareIcon","ProfileIcon","LicenseThirdPartyIcon","ChartLineData02Icon","AnalyticsUpIcon","Alert01Icon","MicrosoftAdminIcon","UserSettings01Icon","MailAccount01Icon","PropertyEditIcon","LicenseMaintenanceIcon","ComputerSettingsIcon","Settings05Icon","TeachingIcon","renderNavItems","List","disablePadding","reduce","acc","userOnly","matchPath","path","reduceChildRoutes","navScrollBar","primary","divider","text","companyLogo","maxHeight","objectFit","objectPosition","mobileDrawer","desktopDrawer","myTicketsButton","backgroundColor","border","borderRadius","withAITracking","reactPlugin","onMobileClose","openMobile","dispatch","useDispatch","isMountedRef","useIsMountedRef","appInsightsProperties","sessionId","company","settings","useSelector","state","companySettings","appInsights","context","session","trackPageView","properties","useEffect","all","getCompanySettings","then","catch","trackException","exception","stack","content","Box","height","flexDirection","options","suppressScrollX","m","mb","Hidden","lgUp","header","srcSet","src","alt","companyTitle","maxWidth","mdDown","p","Drawer","anchor","paper","onClose","IdleTimeOutHandler","props","setShowModal","isLogout","setLogout","timer","undefined","events","eventHandler","eventType","localStorage","setItem","onActive","startTimer","addEvents","removeEvents","clearTimeout","lastInteractionTime","getItem","duration","timeOutInterval","_milliseconds","onIdle","handleLogout","forEach","eventName","addEventListener","removeEventListener","onLogout","userIcon","popover","accountMenuItem","textDecoration","Account","history","useHistory","ref","useRef","logout","enqueueSnackbar","useSnackbar","setUser","_updateProfileImage","e","detail","handleClose","setIsActive","handleTimeout","ButtonBase","UserAvatar","image","Menu","anchorOrigin","vertical","horizontal","keepMounted","PaperProps","getContentAnchorEl","anchorEl","current","MenuItem","infoIcon","warningIcon","warning","errorIcon","Notifications","isPopoverOpen","iconsMap","InformationCircleIcon","class","Alert02Icon","CancelCircleIcon","getNotifications","handleNotificationClicked","clearNotifications","Tooltip","IconButton","setPopoverOpen","Badge","badgeContent","invisible","SvgIcon","Popover","Typography","toLowerCase","Image","ListItemAvatar","Avatar","fontSize","ListItemText","primaryTypographyProps","root","zIndex","drawer","THEMES","LIGHT","boxShadow","default","ONE_DARK","toolbar","minHeight","left","breakpoints","down","TopBar","onMobileNavOpen","link","document","querySelector","createElement","rel","getElementsByTagName","appendChild","sizes","AppBar","Toolbar","ml","flexGrow","mr","dark","overflow","wrapper","flex","up","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","getDebugInfo","packageJson","version","React","container","details","position","detailsText","whiteSpace","copyDetails","top","right","ErrorView","errorInfo","useTheme","mobileDevice","useMediaQuery","detailsOpen","setDetailsOpen","getErrorDetails","componentStack","replace","Page","Container","align","mt","Paper","navigator","clipboard","writeText","reload","ErrorBoundary","this","setState","hasError","Component","GuestGuard","AutoLoginGuard","propTypes","PropTypes","node","PasswordGuard","routes","lazy","guard","layout","createStyles","boxSizing","margin","html","body","GlobalStyles","GA_MEASUREMENT_ID","process","REACT_APP_GA_MEASUREMENT_ID","GoogleAnalytics","Helmet","async","useScrollReset","scrollTo","ScrollReset","strongShadows","baseOptions","direction","h1","h2","h3","h4","h5","h6","overline","overrides","MuiLinearProgress","MuiListItemIcon","minWidth","MuiChip","MuiButton","MuiTab","textAlign","PrivateTabIndicator","MuiFilledInput","MuiFormControl","MuiFormHelperText","MuiIconButton","MuiInputBase","MuiInputLabel","MuiListItem","dense","MuiOutlinedInput","MuiFab","MuiTable","MuiTextField","MuiToolbar","MuiPaper","rounded","MuiAccordion","opacity","marginBottom","themesOptions","input","MuiCheckbox","colorSecondary","action","common","white","shadows","hover","selected","disabled","disabledBackground","focus","UNICORN","jss","create","plugins","jssPreset","rtl","createBrowserHistory","App","hugeiconsLicense","config","themeOptions","warn","Error","createMuiTheme","merge","responsiveFontSizes","createTheme","trackEvent","unlisten","listen","timestamp","Date","now","ThemeProvider","StylesProvider","utils","MomentUtils","maxSnack","renderRoutes","fallback","LoadingScreen","route","Guard","Fragment","Layout","render","enableES5","ReactDOM","store","getElementById","ENABLE_REDUX_DEV_TOOLS","axiosInstance","baseURL","interceptors","response","use","url","currentUrl","createSlice","initialState","reducers","payload","reducer","get","actions","post","isMounted","isDeleteDialogOpen","selectedUserIds","updateCompanySettings","resetCompanySettings","buildMap","rows","accum","dataIndex","escapeDangerousCSVCharacters","warnDeprecated","consoleWarnings","consoleWarn","warnInfo","getPageValue","count","rowsPerPage","page","totalPages","ceil","getCollatorComparator","Intl","Collator","numeric","sensitivity","compare","b","localeCompare","sortCompare","order","aData","bData","downloadCSV","csv","filename","blob","Blob","msSaveOrOpenBlob","dataURI","URL","webkitURL","downloadURI","createObjectURL","setAttribute","click","removeChild","createCSVDownload","columns","replaceDoubleQuoteInString","columnData","buildHead","soFar","column","download","label","downloadOptions","separator","CSVHead","buildBody","row","filter","index","join","trim","CSVBody","onDownload","buildCSV","generateRandomPassword","charset","randomIndex","floor","isArrayEqual","sort","saveToLocalStorage","getFromLocalStorage","removeFromLocalStorage","removeItem","nameImage","cardImage","variants","SlashScreen","CircularProgress","initialAuthState","isInitialized","isValidToken","decoded","jwtDecode","currentTime","exp","setSession","defaults","AuthContext","createContext","method","login","resolve","resetPassword","createMagicLink","magicLogin","AuthProvider","useReducer","getSessionId","dataStore","companyResponse","userName","userEmail","companyName","initialize","Provider","updateAvatar","deleteProfilePic","SplashScreen","getCompanyCountry","countries","option","address","country","toLocaleLowerCase","track","gtag","forwardRef","sendPageViewEvent","useCallback","page_path","rgbToYIQ","r","g","hexToRgb","hex","result","exec","parseInt","getContrastColor","colorHex","threshold","rgb","isRound","avatarChars","charAt","toUpperCase","seed","min","max","backgroundColors","seedRandom","assignedLicenses","activeDevices","isReleaseDialogOpen","selectedUsedLicenseIds","getAllLicenses","getAssignedLicenses","assignLicenses","bulkAssignLicenses","releaseLicenses","getUsedLicenses","getActiveDevices","selectUsedLicensesForRelease","releaseUsedLicenses","closeDialog","productVariantIds","filteredData","availableVariants","every","products","some","product","assignedProducts","addedUsers","removedUsers","removeActiveDevice","serverId","clientId","delete","createdUsers","csvInfo","statusInfo","getUsers","selectUsersForDelete","createUser","updateUser","twoFactorUpdated","updateCompanyPolicy","twoFactorPolicy","deleteUsers","updateUserPassword","passwordUpdated","uploadMultipleUsers","getBulkCreatedUsers","resetBulkCreatedUsers","newPassword","requirePasswordChange","emailSignInDetails","updateTwoFactor","csvFileData","selectedGroupIds","showWarning","getGroups","selectGroupsForDelete","createGroup","updateGroup","deleteGroups","clearWarning","selectedEmailIds","getEmails","selectEmailsForDelete","createEmail","updateEmail","deleteEmails","getDefaultEmail","setDefaultEmail","getEmailReplyAddress","setEmailReplyAddress","selectedFieldIds","getAssignedProducts","productVariantId","licenseType","abbr","isDivider","NProgress","done","isEditDialogOpen","getFields","createField","selectFieldForEdit","selectFieldsForDelete","updateField","deleteFields","openEditDialog","defaultCountry","updateDefaults","getDefaults","usageDetails","calendarData","startDate","utc","getChartData","Data","dispatchEvent","CustomEvent","getUsageDetails","getFilters","isEmpty","setFilters","tickets","getAllTickets","getTicketDetails","closed","ticketId","getLicenseOverview","getActiveAlerts","setActiveAlerts","getContactDetails","setContactDetails","getLicenseStatuses","getServiceStatus","qos","qosLevel","UpdateProfileDetails","updatedUser","updatedProfileInfo","allProducts","getAllProducts","productAccess","productLicenses","selectedProductIds","getCompanyProductAccess","getCompanyProductLicenses","selectUserToEditProductAccess","selectUsersToEditProductAccess","unselectUserId","u","clearUserSelection","selectProductId","unselectProductId","selectVariantId","assignedProduct","unselectVariantId","closeEditDialog","assginedProduct","updateUserProductAccess","browserHistory","ReactPlugin","ApplicationInsights","instrumentationKey","extensions","extensionConfig","identifier","disableFetchTracking","enableAutoRouteTracking","enableRequestHeaderTracking","enableResponseHeaderTracking","enablePerfMgr","enableUnhandledPromiseRejectionTracking","loadAppInsights","useContext","appReducer","combineReducers","customFields","customFieldsReducer","groupsReducer","notificationReducer","licenseOverviewReducer","licenseAlerts","licenseAlertsReducer","licenseStatusesReducer","licenses","licensesReducer","savedDefaults","savedDefaultsReducer","serviceStatusReducer","usageChart","usageChartReducer","usageHeatMap","usageHeatMapReducer","usersReducer","welcomeEmails","welcomeEmailsReducer","updateProfile","updateProfileReducer","productsReducer","companySettingsReducer","productAccessReducer","userProductAccess","userProductAccessReducer","ticketsReducer","rootReducer","configureStore","middleware","getDefaultMiddleware","serializableCheck","devTools","subscribe","getState","useReduxSelector","useReduxDispatch"],"mappings":"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","file":"static/js/main.ec29aec2.chunk.js","sourcesContent":["const base64ToImage = imageData => {\n if (imageData) {\n return \"data:image/png;base64,\" + imageData;\n } else {\n return null;\n }\n};\n\nexport default base64ToImage;\n","import AxiosMockAdapter from \"axios-mock-adapter\";\nimport axios from \"./axios\";\n\nconst axiosMockAdapter = new AxiosMockAdapter(axios, { delayResponse: 2000 });\n\nexport default axiosMockAdapter;\n","const wait = time => {\n return new Promise(res => setTimeout(res, time));\n};\n\nexport default wait;\n","import jwt from \"jsonwebtoken\";\nimport mock from \"src/utils/mock\";\nimport wait from \"src/utils/wait\";\n\nconst JWT_SECRET = \"top-secret-key\";\nconst JWT_EXPIRES_IN = \"2 days\";\n\nconst users = [\n {\n id: \"5e86809283e28b96d2d38537\",\n firstName: \"Test\",\n lastName: \"User\",\n avatar: \"/static/images/avatars/avatar_4.png\",\n emailAddress: \"test@civilgeo.com\",\n password: \"password123\",\n groupId: \"5e8882f1f0c9216396e05a9c\",\n admin: true\n }\n];\n\nmock.restore();\n\nmock.onPost(\"/api/account/login\").reply(async request => {\n try {\n await wait(1000);\n\n const { emailAddress, password } = JSON.parse(request.data);\n const user = users.find(_user => _user.emailAddress === emailAddress);\n\n if (!user) {\n return [400, { message: \"Please check your email address and password\" }];\n }\n\n if (user.password !== password) {\n return [400, { message: \"Invalid password\" }];\n }\n\n const accessToken = jwt.sign({ userId: user.id }, JWT_SECRET, {\n expiresIn: JWT_EXPIRES_IN\n });\n\n return [\n 200,\n {\n accessToken,\n user\n }\n ];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/account/resetPassword\").reply(async request => {\n return [200, {}];\n});\n\nmock.onGet(\"/api/account/me\").reply(request => {\n try {\n const { Authorization } = request.headers;\n\n if (!Authorization) {\n return [401, { message: \"Authorization token missing\" }];\n }\n\n const accessToken = Authorization.split(\" \")[1];\n const { userId } = jwt.verify(accessToken, JWT_SECRET);\n const user = users.find(_user => _user.id === userId);\n\n if (!user) {\n return [401, { message: \"Invalid authorization token\" }];\n }\n\n return [\n 200,\n {\n user\n }\n ];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","import { v4 as uuidv4 } from \"uuid\";\nimport _ from \"lodash\";\nimport mock from \"src/utils/mock\";\n\nlet fields = [\n {\n id: \"5e8882e440f6322fa399eeb8\",\n name: \"Telephone\"\n },\n {\n id: \"5e8882eb5f8ec686220ff131\",\n name: \"Office\"\n },\n {\n id: \"5e8882f1f0c9216396e05a9b\",\n name: \"Years with Company\"\n }\n];\n\nmock.onGet(\"/api/admin/customFields\").reply(request => {\n return [200, { fields }];\n});\n\nmock.onPost(\"/api/admin/customFields/new\").reply(request => {\n try {\n const { name } = JSON.parse(request.data);\n const field = {\n id: uuidv4(),\n name\n };\n\n fields = [...fields, field];\n\n return [200, { field }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/customFields/update\").reply(request => {\n try {\n const { fieldId, update } = JSON.parse(request.data);\n let field = null;\n\n fields = _.map(fields, _field => {\n if (_field.id === fieldId) {\n _.assign(_field, { ...update });\n field = _field;\n }\n\n return _field;\n });\n\n return [200, { field }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/customFields/remove\").reply(request => {\n try {\n const { fieldIds } = JSON.parse(request.data);\n\n fields = _.reject(fields, field => fieldIds.includes(field.id));\n\n return [200, { fieldIds }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","import { v4 as uuidv4 } from \"uuid\";\nimport _ from \"lodash\";\nimport mock from \"src/utils/mock\";\n\nlet groups = [\n {\n id: \"5e8882e440f6322fa399eeb8\",\n name: \"Engineering\",\n welcomeEmailId: \"5e8882e440f6322fa399eeb8\",\n userIds: [\"5e8882e440f6322fa399eeb6\", \"5e8882e440f6322fa399eeb7\"]\n },\n {\n id: \"5e8882eb5f8ec686220ff131\",\n name: \"Land Development\",\n parentGroup: \"5e8882e440f6322fa399eeb8\",\n welcomeEmailId: \"5e8882eb5f8ec686220ff131\",\n userIds: [\"5e8882e440f6322fa399eeb8\"]\n },\n {\n id: \"5e8882f1f0c9216396e05a9b\",\n name: \"Water Resources\",\n parentGroup: \"5e8882e440f6322fa399eeb8\",\n welcomeEmailId: \"5e8882f1f0c9216396e05a9b\",\n userIds: [\"5e8882eb5f8ec686220ff131\"]\n },\n {\n id: \"5e8882f1f0c9216396e05a9c\",\n name: \"IT Support\",\n welcomeEmailId: \"5e8882f1f0c9216396e05a9b\",\n userIds: [\"5e8882f1f0c9216396e05a9b\"]\n }\n];\n\nmock.onGet(\"/api/admin/groups\").reply(request => {\n return [200, { groups }];\n});\n\nmock.onPost(\"/api/admin/groups/new\").reply(request => {\n try {\n const { name, parentGroupId, welcomeEmailId } = JSON.parse(request.data);\n const group = {\n id: uuidv4(),\n name,\n parentGroupId,\n welcomeEmailId,\n userIds: []\n };\n\n groups = [...groups, group];\n\n return [200, { group }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/groups/update\").reply(request => {\n try {\n const { groupId, update } = JSON.parse(request.data);\n let group = null;\n\n groups = _.map(groups, _group => {\n if (_group.id === groupId) {\n _.assign(_group, { ...update });\n group = _group;\n }\n\n return _group;\n });\n\n return [200, { group }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/groups/remove\").reply(request => {\n try {\n const { groupIds } = JSON.parse(request.data);\n\n groups = _.reject(groups, group => groupIds.includes(group.id));\n\n return [200, { groupIds }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","import mock from \"src/utils/mock\";\n\nlet activeEmailAlerts = [\n \"licenseServerDown\",\n \"outOfLicenses\",\n \"lowOnLicenses\",\n \"licenseExpired\"\n];\nlet activeSmsAlerts = [\"lowOnLicenses\", \"licenseExpiring\"];\nlet emailAddresses = [\"test@civilgeo.com\"];\nlet phoneNumbers = [\"8592376597\", \"4089836551\"];\n\nmock.onGet(\"/api/licenseAlerts/activeAlerts\").reply(request => {\n return [200, { activeEmailAlerts, activeSmsAlerts }];\n});\n\nmock.onPost(\"/api/licenseAlerts/activeAlerts/set\").reply(request => {\n try {\n const {\n activeEmailAlerts: _activeEmailAlerts,\n activeSmsAlerts: _activeSmsAlerts\n } = JSON.parse(request.data);\n\n activeEmailAlerts = _activeEmailAlerts;\n activeSmsAlerts = _activeSmsAlerts;\n\n return [200, { activeEmailAlerts, activeSmsAlerts }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock\n .onGet(\"/api/licenseAlerts/contactDetails\")\n .reply(200, { emailAddresses, phoneNumbers });\n\nmock.onPost(\"/api/licenseAlerts/contactDetails/set\").reply(request => {\n try {\n const {\n emailAddresses: _emailAddresses,\n phoneNumbers: _phoneNumbers\n } = JSON.parse(request.data);\n\n emailAddresses = _emailAddresses;\n phoneNumbers = _phoneNumbers;\n\n return [200, { emailAddresses, phoneNumbers }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","import _ from \"lodash\";\nimport mock from \"src/utils/mock\";\nimport moment from \"moment\";\n\nlet allLicenses = [\n {\n licenseId: \"5e8882e440f6322fa399eeb8\",\n productName: \"GeoHECRAS\",\n purchasedOn: moment().subtract({ days: 50 }),\n type: \"Stand Alone\",\n users: 13,\n validUntil: moment().add({ days: 30 })\n },\n {\n licenseId: \"5e8882eb5f8ec686220ff131\",\n productName: \"GeoHECRAS 2D\",\n purchasedOn: moment().subtract({ days: 60 }),\n type: \"Cloud\",\n users: 5,\n validUntil: moment().add({ days: 10 })\n },\n {\n licenseId: \"5e8882f1f0c9216396e05a9b\",\n productName: \"GeoHECHMS\",\n purchasedOn: moment().subtract({ days: 20 }),\n type: \"Network Floating\",\n users: 3,\n validUntil: moment().add({ days: 5 })\n }\n];\n\nlet usedLicenses = [\n {\n usedLicenseId: \"5e8882e440f6322fa399eeb8\",\n productName: \"GeoHECRAS\",\n computerName: \"Madison-007\",\n machineCode: \"4638503985\",\n ipAddress: \"192.168.1.1\",\n activatedOn: moment().subtract({ days: 5 }),\n validUntil: moment().add({ days: 10 })\n },\n {\n usedLicenseId: \"5e8882eb5f8ec686220ff131\",\n productName: \"GeoHECRAS\",\n computerName: \"Madison-010\",\n machineCode: \"4850274952\",\n ipAddress: \"192.168.1.2\",\n activatedOn: moment().subtract({ days: 7 }),\n validUntil: moment().add({ days: 12 })\n },\n {\n usedLicenseId: \"5e8882f1f0c9216396e05a9b\",\n productName: \"GeoHECRAS 2D\",\n computerName: \"Madison-005\",\n machineCode: \"3943485709\",\n ipAddress: \"192.168.1.3\",\n activatedOn: moment().subtract({ days: 3 }),\n validUntil: moment().add({ days: 5 })\n }\n];\n\nconst licenseStatuses = {\n activeLicenses: 3,\n expiringLicenses: 1,\n expiredLicenses: 1\n};\n\nmock.onGet(\"/api/licenses/all\").reply(200, { allLicenses });\n\nmock.onGet(\"/api/licenses/used\").reply(() => {\n return [200, { usedLicenses }];\n});\n\nmock.onPost(\"/api/licenses/used/remove\").reply(request => {\n try {\n const { licenseIds } = JSON.parse(request.data);\n\n usedLicenses = _.reject(usedLicenses, license =>\n licenseIds.includes(license.id)\n );\n\n return [200, {}];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onGet(\"/api/licenses/status\").reply(200, { licenseStatuses });\n\nmock.onGet(\"/api/licenses/overview\").reply(request => {\n const licenseOverview = [\n {\n productId: \"geohecras\",\n productName: \"GeoHECRAS\",\n quantity: 5,\n used: Math.round(Math.random() * 10),\n validUntil: moment()\n .add(2, \"months\")\n .add(12, \"days\")\n .toDate(),\n lastUsed: moment().toDate(),\n downloadUrl: \"https://downloads.civilgeo.com/installer/geohecras\",\n computersUsedOn: 15\n },\n {\n productId: \"geohecras2d\",\n productName: \"GeoHECRAS 2D\",\n quantity: 3,\n used: Math.round(Math.random() * 10),\n validUntil: moment()\n .add(1, \"months\")\n .add(5, \"days\")\n .toDate(),\n lastUsed: moment().toDate(),\n downloadUrl: \"https://downloads.civilgeo.com/installer/geohecras2d\",\n computersUsedOn: 12\n },\n {\n productId: \"geohechms\",\n productName: \"GeoHECHMS\",\n quantity: 7,\n used: Math.round(Math.random() * 10),\n validUntil: moment()\n .add(3, \"months\")\n .add(2, \"days\")\n .toDate(),\n lastUsed: moment().toDate(),\n downloadUrl: \"https://downloads.civilgeo.com/installer/geohechms\",\n computersUsedOn: 20\n }\n ];\n\n return [200, { licenseOverview }];\n});\n\nmock.onPost(\"/api/licenses/add\").reply(request => {\n console.log(\"Got add license request:\");\n console.log(JSON.stringify(request.data));\n\n return [200, {}];\n});\n","import _ from \"lodash\";\nimport mock from \"src/utils/mock\";\nimport moment from \"moment\";\n\nlet notifications = [\n {\n id: \"5e8883f1b51cc1956a5a1ec0\",\n createdAt: moment()\n .subtract(2, \"hours\")\n .toDate()\n .getTime(),\n description: \"Dummy text\",\n title: \"Info Notification\",\n type: \"info\",\n href: \"/app/licenses/add\"\n },\n {\n id: \"5e8883f7ed1486d665d8be1e\",\n createdAt: moment()\n .subtract(1, \"day\")\n .toDate()\n .getTime(),\n description: \"Dummy text\",\n title: \"Warning Notification\",\n type: \"warning\",\n href: \"/app/licenses/add\"\n },\n {\n id: \"5e8883fca0e8612044248ecf\",\n createdAt: moment()\n .subtract(3, \"days\")\n .toDate()\n .getTime(),\n description: \"Dummy text\",\n title: \"Error Notification\",\n type: \"error\",\n href: \"/app/licenses/add\"\n }\n];\n\nmock.onGet(\"/api/notifications\").reply(200, { notifications });\n\nmock.onPost(\"/api/notifications/clear\").reply(request => {\n try {\n const { notificationIds } = JSON.parse(request.data);\n\n notifications = _.reject(notifications, notification =>\n notificationIds.includes(notification.id)\n );\n\n return [200, {}];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","import mock from \"src/utils/mock\";\n\nconst serviceStatus = {\n operational: false,\n message: \"Status update message\"\n};\n\nmock.onGet(\"/api/serviceStatus\").reply(200, { serviceStatus });\n","import mock from \"src/utils/mock\";\n\nmock.onPost(\"/api/trainingRequests/add\").reply(request => {\n console.log(\"Got training request:\");\n console.log(JSON.stringify(request.data));\n\n return [200, {}];\n});\n","import _ from \"lodash\";\nimport mock from \"src/utils/mock\";\nimport moment from \"moment\";\n\nconst LICENSES_USED_MAX_VALUE = 70;\nconst USAGE_LEVEL_MAX_VALUE = 100;\n\nconst epoch = {\n year: 1970,\n month: 0,\n date: 1\n};\n\nmock.onPost(\"/api/admin/usage/chart\").reply(request => {\n try {\n console.log(JSON.stringify(JSON.parse(request.data).filters));\n const { filters } = JSON.parse(request.data);\n\n let dataPoints = [];\n\n let rangeEnd = moment();\n if (filters.range === \"custom\") {\n rangeEnd = moment(filters.customRange.end);\n }\n\n let rangeStart;\n switch (filters.range) {\n case \"today\":\n rangeStart = moment(rangeStart).subtract(1, \"days\");\n break;\n case \"lastWeek\":\n rangeStart = moment(rangeStart).subtract(1, \"weeks\");\n break;\n case \"lastMonth\":\n rangeStart = moment(rangeStart).subtract(1, \"months\");\n break;\n case \"lastTwoMonths\":\n rangeStart = moment(rangeStart).subtract(2, \"months\");\n break;\n case \"lastThreeMonths\":\n rangeStart = moment(rangeStart).subtract(3, \"months\");\n break;\n case \"lastSixMonths\":\n rangeStart = moment(rangeStart).subtract(6, \"months\");\n break;\n case \"lastYear\":\n rangeStart = moment(rangeStart).subtract(1, \"years\");\n break;\n case \"custom\":\n rangeStart = moment(filters.customRange.start);\n break;\n default:\n rangeStart = moment(rangeStart).subtract(1, \"weeks\");\n break;\n }\n\n let dataPointsToGenerate;\n if (filters.timeSegmentation === \"hourly\") {\n dataPointsToGenerate = rangeEnd.diff(rangeStart, \"hours\");\n } else {\n dataPointsToGenerate = rangeEnd.diff(rangeStart, \"days\");\n }\n\n let dataPointTime = rangeStart;\n for (let i = 0; i < dataPointsToGenerate; i++) {\n if (filters.timeSegmentation === \"hourly\") {\n dataPointTime.add(1, \"hours\");\n } else {\n dataPointTime.add(1, \"days\");\n }\n\n const dayOfWeek = dataPointTime.day();\n if (\n filters.range === \"custom\" &&\n filters.customRange.excludeWeekends &&\n (dayOfWeek === 0 || dayOfWeek === 6)\n ) {\n continue;\n }\n\n if (filters.workHoursOnly && filters.timeSegmentation === \"hourly\") {\n if (\n moment(dataPointTime)\n .set(epoch)\n .isBefore(filters.workHours.start)\n ) {\n continue;\n }\n if (\n moment(dataPointTime)\n .set(epoch)\n .isAfter(filters.workHours.end)\n ) {\n continue;\n }\n }\n\n const timeAsString = dataPointTime.toDate().toString();\n\n let value;\n if (filters.metric === \"licensesUsed\") {\n value = _.random(0, LICENSES_USED_MAX_VALUE);\n } else {\n value = _.random(0, USAGE_LEVEL_MAX_VALUE);\n }\n\n dataPoints.push([timeAsString, value]);\n }\n\n console.log(\n JSON.stringify({\n chartData: dataPoints,\n totalLicenses: LICENSES_USED_MAX_VALUE\n })\n );\n\n //return [500, { message: \"Internal server error\" }];\n return [\n 200,\n {\n chartData: dataPoints,\n totalLicenses: LICENSES_USED_MAX_VALUE\n }\n ];\n } catch (err) {\n return [500, { message: \"Internal server error\" }];\n }\n});\n","import { leftPadArray, rightPadArray } from \"src/utils/padArray\";\n\nimport _ from \"lodash\";\nimport mock from \"src/utils/mock\";\nimport moment from \"moment\";\n\nconst LICENSES_USED_MAX_VALUE = 70;\nconst USAGE_LEVEL_MAX_VALUE = 100;\n\nmock.onPost(\"/api/admin/usage/heatMap\").reply(request => {\n try {\n //console.log(JSON.stringify(JSON.parse(request.data).filters));\n const { filters } = JSON.parse(request.data);\n\n let dataPoints = [];\n\n const pushWeekDataPoints = (date, weekDataPoints) => {\n dataPoints.push({\n name: moment(date).day(0),\n data: weekDataPoints\n });\n };\n\n let rangeEnd = moment();\n if (filters.range === \"custom\") {\n rangeEnd = moment(filters.customRange.end);\n }\n\n let rangeStart;\n switch (filters.range) {\n case \"lastMonth\":\n rangeStart = moment(rangeStart).subtract(1, \"months\");\n break;\n case \"lastTwoMonths\":\n rangeStart = moment(rangeStart).subtract(2, \"months\");\n break;\n case \"lastThreeMonths\":\n rangeStart = moment(rangeStart).subtract(3, \"months\");\n break;\n case \"custom\":\n rangeStart = moment(filters.customRange.start);\n break;\n case \"lastTwoWeeks\":\n default:\n rangeStart = moment(rangeStart).subtract(2, \"weeks\");\n break;\n }\n\n const dataPointsToGenerate = rangeEnd.diff(rangeStart, \"days\");\n const excludeWeekends =\n filters.range === \"custom\" && filters.customRange.excludeWeekends;\n\n let weekDataPoints = [];\n let dataPointTime = rangeStart;\n let timeAsString;\n for (let i = 0; i < dataPointsToGenerate; i++) {\n dataPointTime.add(1, \"days\");\n\n timeAsString = dataPointTime.toDate().toString();\n const dayOfWeek = dataPointTime.day();\n if (!(excludeWeekends && (dayOfWeek === 0 || dayOfWeek === 6))) {\n const value = _.random(0, USAGE_LEVEL_MAX_VALUE);\n\n weekDataPoints.push(value);\n }\n\n if (dayOfWeek === 6) {\n weekDataPoints = leftPadArray(\n weekDataPoints,\n excludeWeekends ? 5 : 7,\n -1\n );\n pushWeekDataPoints(timeAsString, weekDataPoints);\n weekDataPoints = [];\n }\n }\n\n if (weekDataPoints.length) {\n weekDataPoints = rightPadArray(\n weekDataPoints,\n excludeWeekends ? 5 : 7,\n -1\n );\n\n pushWeekDataPoints(timeAsString, weekDataPoints);\n }\n\n console.log(\n JSON.stringify({\n chartData: dataPoints,\n totalLicenses: LICENSES_USED_MAX_VALUE\n })\n );\n\n return [\n 200,\n {\n chartData: dataPoints,\n totalLicenses: LICENSES_USED_MAX_VALUE\n }\n ];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","const leftPadArray = function(arr, len, fill) {\n return Array(len)\n .fill(fill)\n .concat(arr)\n .slice(arr.length);\n};\n\nvar rightPadArray = function(arr, len, fill) {\n return arr.concat(Array(len).fill(fill)).slice(0, len);\n};\n\nexport { leftPadArray, rightPadArray };\n","import { v4 as uuidv4 } from \"uuid\";\nimport _ from \"lodash\";\nimport mock from \"src/utils/mock\";\n\nlet users = [\n {\n id: \"5e8882e440f6322fa399eeb6\",\n firstName: \"Mark\",\n lastName: \"Henderson\",\n emailAddress: \"mark.henderson@civilgeo.com\",\n groupId: \"5e8882e440f6322fa399eeb8\",\n admin: false\n },\n {\n id: \"5e8882e440f6322fa399eeb7\",\n firstName: \"Bob\",\n lastName: \"Klemp\",\n emailAddress: \"bob.klemp@civilgeo.com\",\n groupId: \"5e8882e440f6322fa399eeb8\",\n admin: false\n },\n {\n id: \"5e8882e440f6322fa399eeb8\",\n firstName: \"Alex\",\n lastName: \"Parker\",\n emailAddress: \"alex.parker@civilgeo.com\",\n groupId: \"5e8882e440f6322fa399eeb8\",\n admin: false\n },\n {\n id: \"5e8882eb5f8ec686220ff131\",\n firstName: \"Ashok\",\n lastName: \"Mani\",\n emailAddress: \"ashok.mani@civilgeo.com\",\n groupId: \"5e8882f1f0c9216396e05a9c\",\n admin: true\n },\n {\n id: \"5e8882f1f0c9216396e05a9b\",\n firstName: \"Chris\",\n lastName: \"Maeder\",\n emailAddress: \"chris@civilgeo.com\",\n groupId: \"5e8882e440f6322fa399eeb8\",\n admin: true\n }\n];\n\nmock.onGet(\"/api/admin/users\").reply(request => {\n return [200, { users }];\n});\n\nmock.onPost(\"/api/admin/users/new\").reply(request => {\n try {\n const { firstName, lastName, emailAddress, groupId, admin } = JSON.parse(\n request.data\n );\n const user = {\n id: uuidv4(),\n firstName,\n lastName,\n emailAddress,\n groupId,\n admin\n };\n\n users = [...users, user];\n\n return [200, { user }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/users/update\").reply(request => {\n try {\n const { userId, update } = JSON.parse(request.data);\n let user = null;\n\n users = _.map(users, _user => {\n if (_user.id === userId) {\n _.assign(_user, { ...update });\n user = _user;\n }\n\n return _user;\n });\n\n return [200, { user }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/users/remove\").reply(request => {\n try {\n const { userIds } = JSON.parse(request.data);\n\n users = _.reject(users, user => userIds.includes(user.id));\n\n return [200, { userIds }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","import { v4 as uuidv4 } from \"uuid\";\nimport _ from \"lodash\";\nimport mock from \"src/utils/mock\";\n\nlet emails = [\n {\n id: \"5e8882e440f6322fa399eeb8\",\n name: \"To Engineering\",\n subject: \"Welcome Engineers!\",\n customText: \"Test custom content #1\"\n },\n {\n id: \"5e8882eb5f8ec686220ff131\",\n name: \"To Land Development\",\n subject: \"Welcome Land Development Engineers!\",\n customText: \"Test custom content #2\"\n },\n {\n id: \"5e8882f1f0c9216396e05a9b\",\n name: \"To Water Resources\",\n subject: \"Welcome Water Resources Engineers!\",\n customText: \"Test custom content #3\"\n }\n];\nlet defaultEmail = \"5e8882eb5f8ec686220ff131\";\nlet emailReplyAddress = \"test@civilgeo.com\";\n\nmock.onGet(\"/api/admin/welcomeEmails/emails\").reply(request => {\n return [200, { emails }];\n});\n\nmock.onPost(\"/api/admin/welcomeEmails/emails/new\").reply(request => {\n try {\n const { name, subject, customText } = JSON.parse(request.data);\n const email = {\n id: uuidv4(),\n name,\n subject,\n customText\n };\n\n emails = [...emails, email];\n\n return [200, { email }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/welcomeEmails/emails/update\").reply(request => {\n try {\n const { emailId, update } = JSON.parse(request.data);\n let email = null;\n\n emails = _.map(emails, _email => {\n if (_email.id === emailId) {\n _.assign(_email, { ...update });\n email = _email;\n }\n\n return _email;\n });\n\n return [200, { email }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onPost(\"/api/admin/welcomeEmails/emails/remove\").reply(request => {\n try {\n const { emailIds } = JSON.parse(request.data);\n\n emails = _.reject(emails, email => emailIds.includes(email.id));\n\n return [200, { emailIds }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onGet(\"/api/admin/welcomeEmails/defaultEmail\").reply(request => {\n return [200, { defaultEmail }];\n});\n\nmock.onPost(\"/api/admin/welcomeEmails/defaultEmail/update\").reply(request => {\n try {\n const { emailId } = JSON.parse(request.data);\n\n defaultEmail = emailId;\n\n return [200, { defaultEmail }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n\nmock.onGet(\"/api/admin/welcomeEmails/replyEmail\").reply(request => {\n return [200, { emailReplyAddress }];\n});\n\nmock.onPost(\"/api/admin/welcomeEmails/replyEmail/update\").reply(request => {\n try {\n const { emailAddress } = JSON.parse(request.data);\n\n emailReplyAddress = emailAddress;\n\n return [200, { emailReplyAddress }];\n } catch (err) {\n console.error(err);\n return [500, { message: \"Internal server error\" }];\n }\n});\n","/* eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in projection, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"projection\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit http://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See http://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport useAuth from \"../hooks/useAuth\";\nimport { Redirect } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\n\nconst AdminGuard = ({ children }) => {\n const { user } = useAuth();\n\n if (!user.admin) {\n return ;\n }\n\n return <>{children};\n};\n\nAdminGuard.propTypes = {\n children: PropTypes.node\n};\n\nexport default AdminGuard;\n","import React from \"react\";\nimport useAuth from \"../hooks/useAuth\";\nimport { Redirect, useLocation } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport { addRedirectUrlToPath, getRedirectUrl, setRedirectUrl } from \"src/utils/pathUtils\";\n\nconst AuthGuard = ({ children }) => {\n const { isAuthenticated, user } = useAuth();\n const location = useLocation();\n \n if (!isAuthenticated) {\n console.log(location);\n setRedirectUrl(location.pathname);\n return ;\n }\n\n if(user.isTempPassword){\n return ;\n }\n\n if(user.twoFactorEnabled && !user.isCodeVerified){\n return ;\n }\n\n let redirectUrl = getRedirectUrl();\n if(redirectUrl\n && redirectUrl !== \"\")\n {\n setRedirectUrl(\"\");\n return ;\n }\n\n return <>{children};\n};\n\nAuthGuard.propTypes = {\n children: PropTypes.node\n};\n\nexport default AuthGuard;\n","import React, { useState } from \"react\";\nimport { NavLink as RouterLink } from \"react-router-dom\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { Button, Collapse, ListItem, colors, makeStyles } from \"@material-ui/core\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\nimport ExpandLessIcon from \"@material-ui/icons/ExpandLess\";\nimport { useLocation } from \"react-router-dom/cjs/react-router-dom\";\nimport { ContactSupportOutlined } from \"@material-ui/icons\";\n\nconst useStyles = makeStyles(theme => ({\n item: {\n display: \"block\",\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: \"flex\",\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: colors.blueGrey[300],\n padding: \"10px 8px\",\n marginLeft: \"-8px\",\n justifyContent: \"flex-start\",\n textTransform: \"none\", \n letterSpacing: 0,\n width: \"100%\",\n \"&:hover\":{\n background: \"rgb(255 255 255 / 4%)\"\n }\n }, \n buttonLeaf: {\n color: colors.blueGrey[300],\n padding: \"10px 8px\",\n justifyContent: \"flex-start\",\n textTransform: \"none\",\n letterSpacing: 0,\n marginLeft: \"-8px\",\n width: \"100%\",\n fontWeight: theme.typography.fontWeightRegular,\n \"&.depth-0\": {\n \"& $title\": {\n fontWeight: theme.typography.fontWeightMedium\n }\n },\n \"&:hover\":{\n background: \"rgb(255 255 255 / 4%)\"\n }\n },\n icon: {\n display: \"flex\",\n alignItems: \"center\",\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: \"auto\"\n },\n active: {\n color: theme.palette.secondary.main,\n \"& $title\": {\n fontWeight: theme.typography.fontWeightMedium\n },\n \"& $icon\": {\n color: theme.palette.secondary.main\n }\n }\n}));\n\nconst NavItem = ({\n children,\n className,\n depth,\n href,\n icon: Icon,\n info: Info,\n open: openProp,\n title,\n ...rest\n}) => {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n const { pathname } = useLocation();\n\n const handleToggle = () => {\n setOpen(prevOpen => !prevOpen);\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 28 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {children}\n \n );\n }\n\n return (\n \n \n {Icon && }\n {title}\n {Info && }\n \n \n );\n};\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.elementType,\n info: PropTypes.elementType,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","/* eslint-disable no-use-before-define */\nimport {\n Box,\n Drawer,\n Hidden,\n List,\n makeStyles\n} from \"@material-ui/core\";\nimport React, { useEffect } from \"react\";\n\nimport NavItem from \"./NavItem\";\nimport PerfectScrollbar from \"react-perfect-scrollbar\";\nimport PropTypes from \"prop-types\";\nimport { Link as RouterLink, matchPath, useLocation } from \"react-router-dom\";\nimport useAuth from \"src/hooks/useAuth\";\nimport base64ToImage from \"src/utils/imageUtils\";\nimport { useDispatch, useSelector } from \"src/store\";\nimport useIsMountedRef from \"src/hooks/useIsMountedRef\";\nimport { getCompanySettings } from \"src/slices/admin/companySettings\";\nimport {\n Alert01Icon,\n AnalyticsUpIcon,\n ChartLineData02Icon,\n CloudDownloadIcon,\n ComputerSettingsIcon,\n DashboardSquare01Icon,\n LicenseIcon,\n LicenseMaintenanceIcon,\n LicenseThirdPartyIcon,\n MailAccount01Icon,\n MicrosoftAdminIcon,\n ProfileIcon,\n PropertyEditIcon,\n Settings05Icon,\n SoftwareIcon,\n TaskAdd02Icon,\n TeachingIcon,\n UserGroupIcon,\n UserSettings01Icon\n} from \"@hugeicons/react-pro\";\nimport { withAITracking } from '@microsoft/applicationinsights-react-js';\nimport { reactPlugin, appInsights } from 'src/AppInsights';\n\n\nconst items = [\n\n {\n title: \"Dashboard\",\n icon: DashboardSquare01Icon,\n href: \"/app/home\"\n },\n {\n title: \"Software Downloads\",\n icon: CloudDownloadIcon,\n href: \"/app/products/all\"\n },\n {\n title: \"Assigned Products\",\n icon: UserGroupIcon,\n href: \"/app/products/assigned\"\n },\n {\n title: \"Licenses\",\n icon: LicenseIcon,\n adminOnly: true,\n href: \"/app/licenses/all\"\n },\n {\n title: \"Add Licenses\",\n icon: TaskAdd02Icon,\n adminOnly: true,\n href: \"/app/licenses/add\"\n },\n {\n title: \"Product Usage\",\n icon: SoftwareIcon,\n adminOnly: true,\n items: [\n {\n title: \"Usage Details\",\n icon: ProfileIcon,\n href: \"/app/usage/detail\"\n },\n {\n title: \"Licenses in Use\",\n icon: LicenseThirdPartyIcon,\n href: \"/app/licenses/used\"\n },\n {\n title: \"Usage Chart\",\n icon: ChartLineData02Icon,\n href: \"/app/usage/chart\"\n },\n {\n title: \"Usage Heat Map\",\n icon: AnalyticsUpIcon,\n href: \"/app/usage/heatmap\"\n }\n ]\n },\n {\n title: \"Licensing Alerts\",\n icon: Alert01Icon,\n adminOnly: true,\n href: \"/app/alerts\"\n },\n {\n title: \"Admin Center\",\n icon: MicrosoftAdminIcon,\n adminOnly: true,\n items: [\n {\n title: \"Manage Users\",\n icon: UserSettings01Icon,\n href: \"/app/admin/users/manage\"\n },\n {\n title: \"Manage User Groups\",\n icon: UserGroupIcon,\n href: \"/app/admin/groups/manage\"\n },\n {\n title: \"Welcome Emails\",\n icon: MailAccount01Icon,\n href: \"/app/admin/emails/manage\"\n },\n {\n title: \"Custom User Fields\",\n icon: PropertyEditIcon,\n href: \"/app/admin/customfields/manage\"\n },\n {\n title: \"License Management\",\n icon: LicenseMaintenanceIcon,\n href: \"/app/admin/licenseManagement\"\n },\n {\n title: \"Active Devices\",\n icon: ComputerSettingsIcon,\n href: \"/app/admin/deviceManagement\"\n },\n {\n title: \"Portal Configuration\",\n icon: Settings05Icon,\n href: \"/app/admin/config/portal\"\n },\n ]\n },\n {\n title: \"Request Training\",\n icon: TeachingIcon,\n href: \"/app/training\"\n },\n];\n\nfunction renderNavItems({ items, user, pathname, depth = 0 }) {\n return (\n \n {items.reduce(\n (acc, item) => reduceChildRoutes({ acc, item, user, pathname, depth }),\n []\n )}\n \n );\n}\n\nfunction reduceChildRoutes({ acc, pathname, user, item, depth }) {\n const key = item.title + depth;\n\n if (item.adminOnly && !user.admin) {\n return acc;\n }\n\n if (item.userOnly && user.admin) {\n return acc;\n }\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false\n });\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n user,\n pathname,\n items: item.items\n })}\n \n );\n\n } else {\n acc.push(\n \n );\n \n }\n\n return acc;\n}\n\nconst useStyles = makeStyles((theme) => ({\n navScrollBar:{\n background: theme.palette.primary.main,\n paddingBottom: \"64px\"\n },\n divider:{\n background: theme.palette.text.secondary\n },\n companyLogo:{\n width: \"100%\",\n maxHeight: \"3.0rem\",\n objectFit: \"contain\", // This will prevent the logo from being stretched or cut off\n objectPosition: \"left\",\n display: \"block\"\n },\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 256\n //top: 64,\n //height: \"calc(100% - 64px)\"\n },\n myTicketsButton: {\n width: \"100%\",\n backgroundColor: \"#212B36\",\n color: \"#fff\",\n border: \"1px solid #637381\",\n padding: \"10px\",\n borderRadius: \"8px\",\n \"&:hover\":{\n backgroundColor: \"#637381\",\n }\n }\n}));\n\nconst NavBar = ({ onMobileClose, openMobile }) => {\n const classes = useStyles(); \n const dispatch = useDispatch();\n const isMountedRef = useIsMountedRef();\n const { user,appInsightsProperties,sessionId, company } = useAuth();\n const location = useLocation();\n const { settings } = useSelector(state => state.companySettings);\n\n appInsights.context.session.id = sessionId;\n\n // Track the initial page view when the app loads\n appInsights.trackPageView({\n properties: appInsightsProperties \n });\n\n useEffect(() => {\n Promise.all([dispatch(getCompanySettings())])\n .then(() => {})\n .catch((error) => {\n // Track exception with Application Insights\n appInsights.trackException({\n exception: error,\n properties: {\n ...appInsightsProperties,\n message: error.message,\n stack: error.stack,\n name: error.name,\n sessionId: sessionId, // Included session ID from context\n }\n });\n });\n }, [dispatch, isMountedRef,user, sessionId, company]);\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location.pathname]);\n\n const content = (\n \n \n \n \n \n \n {settings?.companyLogo ? (\n \n ) : (\n \n // \n )}\n {/* {settings && settings.companyTitle ? settings.companyTitle : \"Customer Portal\"} */}\n \n \n \n \n \n \n {settings?.companyLogo ? (\n \n ) : (\n \n )}\n {/* {settings && settings.companyTitle ? settings.companyTitle : \"Customer Portal\"} */}\n \n \n \n \n\n \n {renderNavItems({\n items,\n user,\n pathname: location.pathname\n })}\n \n \n {/* \n \n My Tickets\n \n */}\n \n );\n\n return (\n <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n \n );\n};\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n};\n\nexport default withAITracking(reactPlugin,NavBar);","import React, { useEffect, useState } from \"react\";\nimport moment from \"moment\";\n\nconst IdleTimeOutHandler = props => {\n const [showModal, setShowModal] = useState(false);\n const [isLogout, setLogout] = useState(false);\n let timer = undefined;\n const events = [\"click\", \"load\", \"keydown\", \"scroll\", \"mousemove\"];\n const eventHandler = eventType => {\n if (!isLogout) {\n localStorage.setItem(\"lastInteractionTime\", moment());\n if (timer) {\n props.onActive();\n startTimer();\n }\n }\n };\n\n useEffect(() => {\n addEvents();\n\n return () => {\n removeEvents();\n clearTimeout(timer);\n };\n }, []);\n\n const startTimer = () => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(\n () => {\n let lastInteractionTime = localStorage.getItem(\"lastInteractionTime\");\n const diff = moment.duration(\n moment().diff(moment(lastInteractionTime))\n );\n let timeOutInterval = props.timeOutInterval\n ? props.timeOutInterval\n : 20000;\n if (isLogout) {\n clearTimeout(timer);\n } else {\n if (diff._milliseconds < timeOutInterval) {\n startTimer();\n props.onActive();\n } else {\n props.onIdle();\n handleLogout();\n clearTimeout(timer);\n setShowModal(true);\n }\n }\n },\n props.timeOutInterval ? props.timeOutInterval : 20000\n );\n };\n const addEvents = () => {\n events.forEach(eventName => {\n window.addEventListener(eventName, eventHandler);\n });\n\n startTimer();\n };\n\n const removeEvents = () => {\n events.forEach(eventName => {\n window.removeEventListener(eventName, eventHandler);\n });\n };\n\n const handleContinueSession = () => {\n setShowModal(false);\n setLogout(false);\n };\n const handleLogout = () => {\n removeEvents();\n clearTimeout(timer);\n setLogout(true);\n props.onLogout();\n setShowModal(false);\n };\n\n return (\n
\n {/* */}\n
\n );\n};\n\nexport default IdleTimeOutHandler;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useHistory, Link as RouterLink } from \"react-router-dom\";\nimport { useSnackbar } from \"notistack\";\nimport base64ToImage from \"src/utils/imageUtils\";\nimport {\n Box,\n ButtonBase,\n Menu,\n MenuItem,\n makeStyles\n} from \"@material-ui/core\";\nimport useAuth from \"src/hooks/useAuth\";\nimport UserAvatar from \"src/components/UserAvatar\";\nimport IdleTimeOutHandler from \"src/components/IdleTimoutHandler\";\n\nconst useStyles = makeStyles(theme => ({\n userIcon: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n },\n accountMenuItem: {\n color: \"black\",\n textDecoration: \"none\"\n }\n}));\n\nconst Account = () => {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const { user, logout} = useAuth();\n const { enqueueSnackbar } = useSnackbar();\n const [open, setOpen] = useState(false);\n const [ _user , setUser] = useState(user);\n \n\n const _updateProfileImage=(e)=>{\n setUser(e.detail.user);\n }\n\n useEffect(()=>{\n setUser(user);\n window.addEventListener(\"updateProfileImage\",_updateProfileImage);\n },[]);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const[isActive,setIsActive]=useState(true)\n\n const handleLogout = async () => {\n try {\n handleClose();\n logout();\n history.push(\"/\");\n } catch (err) {\n console.error(err);\n enqueueSnackbar(\"Unable to logout\");\n }\n };\n\n const handleTimeout = async () => {\n try {\n handleClose();\n logout();\n history.push(\"/timeout\");\n } catch (err) {\n console.error(err);\n enqueueSnackbar(\"Unable to logout\");\n }\n };\n\n return (\n <>\n \n {/* 20 minutes of idle timeout */}\n {\n setIsActive(true);\n }}\n onIdle={() => {\n setIsActive(false);\n }}\n onLogout={() => {\n handleTimeout();\n }}\n />\n\n \n {/* \n \n {_user.firstName}\n \n */}\n \n \n \n \n My Account\n \n \n \n \n Change Password\n \n \n Logout\n \n \n );\n};\n\nexport default Account;\n","import React, { useRef, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport {\n Avatar,\n Badge,\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Popover,\n SvgIcon,\n Tooltip,\n Typography,\n makeStyles\n} from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"src/store\";\nimport {\n getNotifications,\n clearNotifications,\n setPopoverOpen\n} from \"src/slices/notification\";\nimport clsx from \"clsx\";\nimport { useSnackbar } from \"notistack\";\nimport useIsMountedRef from \"src/hooks/useIsMountedRef\";\nimport { Alert02Icon, CancelCircleIcon, InformationCircleIcon, Notification01Icon, Notification02Icon } from \"@hugeicons/react-pro\";\n\nconst useStyles = makeStyles(theme => ({\n popover: {\n width: 420\n },\n notification: {\n textTransform: \"none\",\n borderRadius: 0\n },\n icon: {\n color: theme.palette.text.primary\n },\n infoIcon: {\n backgroundColor: theme.palette.info.main\n },\n warningIcon: {\n backgroundColor: theme.palette.warning.main\n },\n errorIcon: {\n backgroundColor: theme.palette.error.main\n }\n}));\n\nconst Notifications = () => {\n const classes = useStyles();\n const history = useHistory();\n const { notifications, isPopoverOpen } = useSelector(\n state => state.notifications\n );\n const ref = useRef(null);\n const dispatch = useDispatch();\n const { enqueueSnackbar } = useSnackbar();\n const isMountedRef = useIsMountedRef();\n\n const iconsMap = {\n info: {\n image: InformationCircleIcon,\n class: classes.infoIcon\n },\n warning: {\n image: Alert02Icon,\n class: classes.warningIcon\n },\n error: {\n image: CancelCircleIcon,\n class: classes.errorIcon\n }\n };\n\n const handleOpen = () => {\n dispatch(setPopoverOpen(true));\n };\n\n const handleClose = () => {\n dispatch(setPopoverOpen(false));\n };\n\n useEffect(() => {\n dispatch(getNotifications()).catch(() => {\n if (isMountedRef.current)\n enqueueSnackbar(\"There was an error getting notifications\");\n });\n }, [dispatch, enqueueSnackbar, isMountedRef]);\n\n const handleNotificationClicked = notification => () => {\n dispatch(clearNotifications([notification.id]));\n\n if (isMountedRef.current) {\n history.push({\n pathname: notification.href\n });\n }\n };\n\n const handleNotificationsCleared = () => {\n let notificationIds = [];\n notifications.forEach(notification =>\n notificationIds.push(notification.id)\n );\n dispatch(clearNotifications(notificationIds));\n };\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n Notifications\n \n \n {notifications.length === 0 ? (\n \n \n There are no notifications\n \n \n ) : (\n <>\n \n {notifications.map(notification => {\n const icon = iconsMap[notification.type.toLowerCase()];\n const Image = icon.image;\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n })}\n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default Notifications;\n","import React, { useEffect, useState } from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport SmallLogo from \"src/components/SmallLogo\";\nimport clsx from \"clsx\";\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles,\n SvgIcon,\n Avatar,\n Typography\n} from \"@material-ui/core\";\nimport { Menu as MenuIcon } from \"react-feather\";\nimport { THEMES } from \"src/constants\";\nimport Account from \"./Account\";\nimport Notifications from \"./Notifications\";\nimport { getCompanySettings } from \"src/slices/admin/companySettings\";\nimport { useSelector } from \"src/store\";\nimport base64ToImage from \"src/utils/imageUtils\";\nimport { useDispatch } from \"react-redux\";\nimport useIsMountedRef from \"src/hooks/useIsMountedRef\";\nimport FreshChatView from \"src/components/FreshChatView\";\nimport useAuth from \"src/hooks/useAuth\";\n\nconst useStyles = makeStyles(theme => ({\n root: {\n zIndex: theme.zIndex.drawer - 100,\n ...(theme.name === THEMES.LIGHT\n ? {\n boxShadow: \"0px 1px 1px 0.5px rgba(5, 44, 101, 0.06)\",\n backgroundColor: theme.palette.background.default\n }\n : {}),\n ...(theme.name === THEMES.ONE_DARK\n ? {\n backgroundColor: theme.palette.background.default\n }\n : {})\n },\n toolbar: {\n minHeight: 64,\n left: 256,\n width: \"calc(100% - 256px)\",\n [theme.breakpoints.down(\"md\")]:{\n left: 0,\n width: \"100%\",\n }\n },\n header: {\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n \"& div\": {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n \"& h1\": {\n [theme.breakpoints.down(\"md\")]: {\n fontSize: \"1.4rem\"\n }\n },\n \"& img\": {\n [theme.breakpoints.down(\"md\")]: {\n height: \"1.4rem\"\n },\n height: \"1.6rem\",\n marginRight: \"8px\"\n }\n }\n}));\n\nconst TopBar = ({ className, onMobileNavOpen, ...rest }) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const isMountedRef = useIsMountedRef();\n const { settings } = useSelector(state => state.companySettings);\n const {user, isAuthenticated} = useAuth();\n useEffect(() => {\n Promise.all([dispatch(getCompanySettings())])\n .then(() => {})\n .catch(() => {});\n }, [dispatch, isMountedRef]);\n\n useEffect(() => {\n let link = document.querySelector(\"link[rel~='icon']\");\n if (!link) {\n link = document.createElement('link');\n link.rel = 'icon'; \n document.getElementsByTagName('head')[0].appendChild(link);\n }\n link.type = \"image/png\";\n link.rel=\"shortcut icon\"\n link.sizes=\"16x16\";\n link.id=\"favicon\"\n link.href =( settings && settings.companyLogo )? base64ToImage(settings.companyLogo) : \"%PUBLIC_URL%/favicon.ico\";\n }, [settings]);\n\n return (\n \n \n {/* {isAuthenticated && } */}\n \n \n \n \n \n \n \n \n \n \n {/* {settings && settings.companyLogo ? (\n \n ) : (\n \n // \n )} */}\n {/* {settings && settings.companyTitle ? settings.companyTitle : \"Customer Portal\"} */}\n \n \n \n \n \n \n {/* {settings && settings.companyLogo ? (\n \n ) : (\n \n )} */}\n {/* {settings && settings.companyTitle ? settings.companyTitle : \"Customer Portal\"} */}\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nTopBar.defaultProps = {\n onMobileNavOpen: () => {}\n};\n\nexport default TopBar;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { makeStyles } from \"@material-ui/core\";\nimport NavBar from \"./NavBar\";\nimport TopBar from \"./TopBar\";\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: \"flex\",\n height: \"100%\",\n overflow: \"hidden\",\n width: \"100%\"\n },\n wrapper: {\n display: \"flex\",\n flex: \"1 1 auto\",\n overflow: \"hidden\",\n paddingTop: 64,\n [theme.breakpoints.up(\"lg\")]: {\n paddingLeft: 256\n }\n },\n contentContainer: {\n display: \"flex\",\n flex: \"1 1 auto\",\n overflow: \"hidden\"\n },\n content: {\n flex: \"1 1 auto\",\n height: \"100%\",\n overflow: \"auto\"\n }\n}));\n\nconst DashboardLayout = ({ children }) => {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n
\n
\n
{children}
\n
\n
\n
\n );\n};\n\nDashboardLayout.propTypes = {\n children: PropTypes.node\n};\n\nexport default DashboardLayout;\n","import React from \"react\";\nimport packageJson from \"src/../package.json\";\nimport preval from \"preval.macro\";\n\nconst buildTimeStamp = preval`module.exports = new Date().toLocaleString();`;\n\nconst getDebugInfo = () => {\n return `CivilGEO Customer Portal version: ${packageJson.version}, React version: ${React.version}, built: ${buildTimeStamp}`;\n};\n\nexport default getDebugInfo;\n","import {\n Box,\n Button,\n Container,\n IconButton,\n Paper,\n Tooltip,\n Typography,\n makeStyles,\n useMediaQuery,\n useTheme\n} from \"@material-ui/core\";\nimport React, { useState } from \"react\";\n\nimport CopyIcon from \"@material-ui/icons/FileCopy\";\nimport Page from \"src/components/Page\";\nimport getDebugInfo from \"src/utils/getDebugInfo\";\nimport { useSnackbar } from \"notistack\";\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n minHeight: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n padding: theme.spacing(3),\n paddingTop: 80,\n paddingBottom: 80\n },\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n details: {\n position: \"relative\"\n },\n detailsText: {\n whiteSpace: \"pre-wrap\",\n maxHeight: \"300px\",\n overflow: \"auto\"\n },\n copyDetails: {\n position: \"absolute\",\n top: 20,\n right: 20,\n zIndex: 10\n }\n}));\n\nconst ErrorView = ({ error, errorInfo }) => {\n const classes = useStyles();\n const theme = useTheme();\n const mobileDevice = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const { enqueueSnackbar } = useSnackbar();\n\n const [detailsOpen, setDetailsOpen] = useState(false);\n\n const getErrorDetails = () => {\n return (\n (errorInfo.componentStack || \"\").replace(/\\n|\\r/, \"\") +\n `\\n\\n${getDebugInfo()}`\n );\n };\n\n const copyDetails = () => {\n let text = \"\";\n\n if (error) text += `${error.toString()}\\n`;\n text += getErrorDetails();\n\n try {\n navigator.clipboard.writeText(text);\n enqueueSnackbar(\"Error copied\");\n } catch (error) {\n enqueueSnackbar(\"Failed to copy error\",{ variant: \"error\" });\n }\n };\n\n return (\n \n \n \n Something went wrong\n \n \n {!detailsOpen ? (\n {\n setDetailsOpen(true);\n }}\n variant=\"text\"\n >\n Details\n \n ) : (\n \n \n \n \n \n \n \n \n {error && error.toString()}\n \n {getErrorDetails()}\n \n \n )}\n \n \n {\n window.location.reload();\n }}\n variant=\"outlined\"\n >\n Reload\n \n \n \n \n );\n};\n\nexport default ErrorView;\n","import ErrorView from \"src/views/errors/ErrorView\";\nimport React from \"react\";\nimport { appInsights } from 'src/AppInsights';\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { error: null, errorInfo: null };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n error: error,\n errorInfo: errorInfo\n });\n // Log the error to Application Insights\n appInsights.trackException({ error, errorInfo });\n }\n\n render() {\n if (this.state.errorInfo) {\n // Error path\n return (\n \n );\n }\n\n // Normally, just render children\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import React from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport useAuth from \"../hooks/useAuth\";\n\nconst GuestGuard = ({ children }) => {\n const { isAuthenticated } = useAuth();\n\n if (isAuthenticated) {\n return ;\n }\n\n return <>{children};\n};\n\nGuestGuard.propTypes = {\n children: PropTypes.node\n};\n\nexport default GuestGuard;\n","import React from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport useAuth from \"../hooks/useAuth\";\nimport { useHistory, useParams } from \"react-router-dom/cjs/react-router-dom.min\";\nconst AutoLoginGuard = ({ children }) => {\n return <>{children}; \n};\n\nAutoLoginGuard.propTypes = {\n children: PropTypes.node\n};\n\nexport default AutoLoginGuard;\n","import React from \"react\";\nimport useAuth from \"../hooks/useAuth\";\nimport { Redirect } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\n\nconst PasswordGuard = ({ children }) => {\n const { isAuthenticated, user } = useAuth();\n\n if (!isAuthenticated) {\n return ;\n }\n\n return <>{children};\n};\n\nPasswordGuard.propTypes = {\n children: PropTypes.node\n};\n\nexport default PasswordGuard;\n","import React, { Fragment, Suspense, lazy } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\n\nimport AdminGuard from \"src/guards/AdminGuard\";\nimport AuthGuard from \"src/guards/AuthGuard\";\nimport DashboardLayout from \"src/layouts/DashboardLayout\";\nimport ErrorBoundary from \"src/components/ErrorBoundary\";\nimport GuestGuard from \"src/guards/GuestGuard\";\nimport AutoLoginGuard from \"src/guards/AutoLoginGuard\";\nimport LoadingScreen from \"src/components/LoadingScreen\";\nimport PasswordGuard from \"src/guards/PasswordGuard\";\n\nexport const renderRoutes = (routes = []) => (\n }>\n \n {routes.map((route, i) => {\n const Guard = route.guard || Fragment;\n const Layout = route.layout || Fragment;\n const Component = route.component;\n\n return (\n (\n \n \n \n \n {route.routes ? (\n renderRoutes(route.routes)\n ) : (\n \n )}\n \n \n \n \n )}\n />\n );\n })}\n \n \n);\n\nconst routes = [\n {\n exact: true,\n path: \"/\",\n component: () => \n },\n {\n exact: true,\n path: \"/404\",\n component: lazy(() => import(\"src/views/errors/NotFoundView\"))\n },\n {\n exact: true,\n guard: GuestGuard,\n path: [\"/login\", \"/passwordReset\", \"/magicLink\", \"/timeout\"],\n component: lazy(() => import(\"src/views/auth/LoginView\"))\n },\n {\n exact: true,\n guard: GuestGuard,\n path: [\"/magic/:key\"],\n component: lazy(() => import(\"src/views/auth/MagicLoginView\"))\n },\n {\n exact: true,\n guard: AutoLoginGuard,\n path: [\"/autoLogin/:key\"],\n component: lazy(() => import(\"src/views/auth/AutoLoginView\"))\n },\n {\n exact: true,\n guard: PasswordGuard,\n path: \"/app/changePassword\",\n component: lazy(() => import(\"src/views/auth/ChangePasswordView\"))\n },\n {\n exact: true,\n guard: PasswordGuard,\n path: \"/app/twoFactorVerification\",\n component: lazy(() => import(\"src/views/auth/TwoFactorView\"))\n },\n {\n path: \"/app\",\n guard: AuthGuard,\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: \"/app/account\",\n component: lazy(() => import(\"src/views/auth/AccountView\"))\n },\n {\n exact: true,\n path: \"/app/alerts\",\n component: lazy(() => import(\"src/views/alerts/AlertsView\"))\n },\n {\n exact: true,\n path: \"/app/training\",\n component: lazy(() => import(\"src/views/training/TrainingView\"))\n },\n {\n exact: true,\n path: \"/app/home\",\n component: lazy(() => import(\"src/views/home/HomeView\"))\n },\n {\n exact: true,\n path: [\"/app/products/all\", \"/app/releaseNotes/:key\"],\n component: lazy(() => import(\"src/views/software/Downloads\"))\n },\n { \n exact: true,\n path: \"/app/products/assigned\",\n component: lazy(() => import(\"src/views/productAccess\"))\n },\n { \n exact: true,\n path: \"/app/tickets/all\",\n component: lazy(() => import(\"src/views/tickets/ViewTickets\"))\n },\n { \n exact: true,\n path: \"/app/tickets/new\",\n component: lazy(() => import(\"src/views/tickets/CreateTicket\"))\n },\n { \n exact: true,\n path: \"/app/tickets/detail/:ticketId\",\n component: lazy(() => import(\"src/views/tickets/Details\"))\n },\n {\n exact: true,\n guard: AdminGuard,\n path: \"/app/licenses\",\n component: () => \n },\n {\n exact: true,\n path: \"/app/licenses/add\",\n guard: AdminGuard,\n component: lazy(() => import(\"src/views/licenses/AddLicensesView\"))\n },\n {\n exact: true,\n guard: AdminGuard,\n path: \"/app/licenses/all\",\n component: lazy(() => import(\"src/views/licenses/AllLicensesView\"))\n },\n {\n exact: true,\n path: \"/app/licenses/used\",\n guard: AdminGuard, \n component: lazy(() => import(\"src/views/licenses/UsedLicensesView\"))\n },\n {\n exact: true,\n path: \"/app/usage/detail\",\n guard: AdminGuard,\n component: lazy(() => import(\"src/views/usage/UsageDetailsView\"))\n },\n {\n exact: true,\n path: \"/app/usage\",\n guard: AdminGuard,\n component: () => \n },\n {\n exact: true,\n path: \"/app/usage/chart\",\n guard: AdminGuard,\n component: lazy(() => import(\"src/views/usage/ChartView\"))\n },\n {\n exact: true,\n path: \"/app/usage/heatMap\",\n guard: AdminGuard,\n component: lazy(() => import(\"src/views/usage/HeatMapView\"))\n },\n {\n path: \"/app/admin\",\n guard: AdminGuard,\n routes: [\n {\n exact: true,\n path: \"/app/admin\",\n component: () => \n },\n {\n exact: true,\n path: \"/app/admin/users\",\n component: () => \n },\n {\n exact: true,\n path: \"/app/admin/users/manage\",\n component: lazy(() =>\n import(\"src/views/admin/users/users/ManageView\")\n )\n },\n {\n exact: true,\n path: [\n \"/app/admin/users/add\",\n \"/app/admin/users/edit/:userIdEditing\"\n ],\n component: lazy(() => import(\"src/views/admin/users/users/AddView\"))\n },\n {\n exact: true,\n path: [\n \"/app/admin/users/addMultiple\"\n ],\n component: lazy(() => import(\"src/views/admin/users/users/AddMultipleView\"))\n },\n {\n exact: true,\n path: [\n \"/app/admin/users/addMultipleResult\"\n ],\n component: lazy(() => import(\"src/views/admin/users/users/AddMultipleResultView\"))\n },\n {\n exact: true,\n path: \"/app/admin/groups\",\n component: () => \n },\n {\n exact: true,\n path: \"/app/admin/groups/manage\",\n component: lazy(() =>\n import(\"src/views/admin/users/groups/ManageView\")\n )\n },\n {\n exact: true,\n path: [\n \"/app/admin/groups/add\",\n \"/app/admin/groups/edit/:groupIdEditing\"\n ],\n component: lazy(() =>\n import(\"src/views/admin/users/groups/AddView\")\n )\n },\n {\n exact: true,\n path: \"/app/admin/emails\",\n component: () => \n },\n {\n exact: true,\n path: [\n \"/app/admin/emails/manage\",\n \"/app/admin/emails/manage#:fragment\"\n ],\n component: lazy(() =>\n import(\"src/views/admin/users/emails/ManageView\")\n )\n },\n {\n exact: true,\n path: [\n \"/app/admin/emails/add\",\n \"/app/admin/emails/edit/:emailIdEditing\"\n ],\n component: lazy(() =>\n import(\"src/views/admin/users/emails/AddView\")\n )\n },\n {\n exact: true,\n path: \"/app/admin/customfields\",\n component: () => \n },\n {\n exact: true,\n path: \"/app/admin/customfields/manage\",\n component: lazy(() =>\n import(\"src/views/admin/users/customFields/ManageView\")\n )\n },\n {\n exact: true,\n path: \"/app/admin/licenseManagement\",\n component: lazy(() =>\n import(\"src/views/admin/licenseManagement/ProductView\")\n )\n },\n {\n exact: true,\n path: \"/app/admin/deviceManagement\",\n component: lazy(() =>\n import(\"src/views/admin/deviceManagement\")\n )\n },\n {\n exact: true,\n path: \"/app/admin/config/portal\",\n component: lazy(() =>\n import(\"src/views/admin/config/portalConfigView\")\n )\n },\n {\n component: () => \n }\n ]\n },\n {\n exact: true,\n path: \"/app\",\n component: () => \n },\n {\n component: () => \n }\n ]\n },\n {\n component: () => \n }\n];\n\nexport default routes;\n//\n","import { createStyles, makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n \"@global\": {\n \"*\": {\n boxSizing: \"border-box\",\n margin: 0,\n padding: 0\n },\n html: {\n \"-webkit-font-smoothing\": \"antialiased\",\n \"-moz-osx-font-smoothing\": \"grayscale\",\n height: \"100%\",\n width: \"100%\"\n },\n body: {\n height: \"100%\",\n width: \"100%\",\n overflow: \"hidden\"\n },\n \"#root\": {\n height: \"100%\",\n width: \"100%\"\n }\n }\n })\n);\n\nconst GlobalStyles = () => {\n useStyles();\n\n return null;\n};\n\nexport default GlobalStyles;\n","import React from \"react\";\nimport { Helmet } from \"react-helmet\";\n\nconst GA_MEASUREMENT_ID = process.env.REACT_APP_GA_MEASUREMENT_ID;\n\nconst GoogleAnalytics = () => {\n return (\n \n \n \n \n );\n};\n\nexport default GoogleAnalytics;\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nconst useScrollReset = () => {\n const location = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n};\n\nexport default useScrollReset;\n","import useScrollReset from \"src/hooks/useScrollReset\";\n\nconst ScrollReset = () => {\n useScrollReset();\n\n return null;\n};\n\nexport default ScrollReset;\n","export const softShadows = [\n \"none\",\n \"0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)\",\n \"0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)\"\n];\n\nexport const strongShadows = [\n \"none\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 2px 2px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 4px 8px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 5px 8px -2px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 6px 12px -4px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 7px 12px -4px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 6px 16px -4px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 7px 16px -4px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 8px 18px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 9px 18px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 10px 20px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 11px 20px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 12px 22px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 13px 22px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 14px 24px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 16px 28px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 18px 30px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 20px 32px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 22px 34px -8px rgba(0,0,0,0.50)\",\n \"0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)\"\n];\n","import _ from \"lodash\";\nimport { colors, createMuiTheme, responsiveFontSizes } from \"@material-ui/core\";\nimport { THEMES } from \"src/constants\";\nimport { softShadows, strongShadows } from \"./shadows\";\nimport typography from \"./typography\";\n\nconst baseOptions = {\n direction: \"ltr\",\n typography,\n overrides: {\n MuiLinearProgress: {\n root: {\n borderRadius: 3,\n overflow: \"hidden\"\n }\n },\n MuiListItemIcon: {\n root: {\n minWidth: 32\n }\n },\n MuiChip: {\n root: {\n backgroundColor: \"rgba(0,0,0,0.075)\"\n }\n }, \n MuiButton: { \n root:{\n textTransform: \"inherit\",\n borderRadius: \"8px\",\n minHeight:\"46px\",\n minWidth: \"100px\"\n },\n defaultProps: {\n size: 'small',\n textTransform: \"inherit\"\n },\n },\n MuiTab:{\n root:{ \n textAlign: \"left\", \n },\n wrapper:{\n alignItems: \"flex-start\"\n }\n },\n PrivateTabIndicator:{\n root:{\n height: \"3px\"\n }\n },\n MuiFilledInput: {\n defaultProps: {\n margin: 'dense',\n },\n },\n MuiFormControl: {\n defaultProps: {\n margin: 'dense',\n },\n },\n MuiFormHelperText: {\n defaultProps: {\n margin: 'dense',\n },\n },\n MuiIconButton: {\n defaultProps: {\n size: 'small',\n },\n },\n MuiInputBase: {\n defaultProps: {\n margin: 'dense',\n },\n },\n MuiInputLabel: {\n defaultProps: {\n margin: 'dense',\n },\n },\n MuiListItem: {\n defaultProps: {\n dense: true,\n },\n },\n MuiOutlinedInput: {\n defaultProps: {\n margin: 'dense',\n },\n },\n MuiFab: {\n defaultProps: {\n size: 'small',\n },\n },\n MuiTable: {\n defaultProps: {\n size: 'small',\n },\n },\n MuiTextField: {\n defaultProps: {\n margin: 'dense',\n },\n },\n MuiToolbar: {\n defaultProps: {\n variant: 'dense',\n },\n },\n MuiPaper:{\n rounded:{\n borderRadius: \"8px\"\n }\n },\n MuiAccordion:{\n root:{\n \"&::before\":{\n opacity:0\n }\n },\n rounded:{\n borderRadius: \"8px\",\n marginBottom: \"16px\"\n }\n }\n }\n};\n\nconst themesOptions = [\n {\n name: THEMES.LIGHT,\n overrides: {\n MuiInputBase: {\n input: {\n \"&::placeholder\": {\n opacity: 1,\n color: colors.blueGrey[600]\n }\n }\n },\n MuiCheckbox: { \n colorSecondary: {\n color: colors.blueGrey[900],\n '&$checked': {\n color: colors.blueGrey[900],\n },\n },\n },\n },\n palette: {\n type: \"light\",\n action: {\n active: colors.blueGrey[500]\n },\n background: {\n default: colors.common.white,\n dark: \"#f4f6f8\",\n paper: colors.common.white\n },\n primary: {\n main: \"#212B36\"\n },\n secondary: {\n main: colors.common.white,\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[500]\n }\n },\n shadows: softShadows\n },\n {\n name: THEMES.ONE_DARK,\n palette: {\n type: \"dark\",\n action: {\n active: \"rgba(255, 255, 255, 0.54)\",\n hover: \"rgba(255, 255, 255, 0.04)\",\n selected: \"rgba(255, 255, 255, 0.08)\",\n disabled: \"rgba(255, 255, 255, 0.26)\",\n disabledBackground: \"rgba(255, 255, 255, 0.12)\",\n focus: \"rgba(255, 255, 255, 0.12)\"\n },\n background: {\n default: \"#282C34\",\n dark: \"#1c2025\",\n paper: \"#282C34\"\n },\n primary: {\n main: \"#8a85ff\"\n },\n secondary: {\n main: \"#0070bd\"\n },\n text: {\n primary: \"#e6e5e8\",\n secondary: \"#adb0bb\"\n }\n },\n shadows: strongShadows\n },\n {\n name: THEMES.UNICORN,\n palette: {\n type: \"dark\",\n action: {\n active: \"rgba(255, 255, 255, 0.54)\",\n hover: \"rgba(255, 255, 255, 0.04)\",\n selected: \"rgba(255, 255, 255, 0.08)\",\n disabled: \"rgba(255, 255, 255, 0.26)\",\n disabledBackground: \"rgba(255, 255, 255, 0.12)\",\n focus: \"rgba(255, 255, 255, 0.12)\"\n },\n background: {\n default: \"#2a2d3d\",\n dark: \"#222431\",\n paper: \"#2a2d3d\"\n },\n primary: {\n main: \"#a67dff\"\n },\n secondary: {\n main: \"#a67dff\"\n },\n text: {\n primary: \"#f6f5f8\",\n secondary: \"#9699a4\"\n }\n },\n shadows: strongShadows\n }\n];\n\nexport const createTheme = (config = {}) => {\n let themeOptions = themesOptions.find(theme => theme.name === config.theme);\n\n if (!themeOptions) {\n console.warn(new Error(`The theme ${config.theme} is not valid`));\n [themeOptions] = themesOptions;\n }\n\n let theme = createMuiTheme(\n _.merge({}, baseOptions, themeOptions, { direction: config.direction })\n );\n\n if (config.responsiveFontSizes) {\n theme = responsiveFontSizes(theme);\n }\n\n return theme;\n};\n","export default {\n h1: {\n fontWeight: 500,\n fontSize: 35,\n letterSpacing: \"-0.24px\"\n },\n h2: {\n fontWeight: 500,\n fontSize: 29,\n letterSpacing: \"-0.24px\"\n },\n h3: {\n fontWeight: 500,\n fontSize: 24,\n letterSpacing: \"-0.06px\"\n },\n h4: {\n fontWeight: 500,\n fontSize: 20,\n letterSpacing: \"-0.06px\"\n },\n h5: {\n fontWeight: 500,\n fontSize: 16,\n letterSpacing: \"-0.05px\"\n },\n h6: {\n fontWeight: 500,\n fontSize: 14,\n letterSpacing: \"-0.05px\"\n },\n overline: {\n fontWeight: 500\n }\n};\n","import { StylesProvider, ThemeProvider, jssPreset } from \"@material-ui/core\";\nimport routes, { renderRoutes } from \"src/routes\";\nimport { AuthProvider } from \"src/contexts/JWTAuthContext\";\nimport GlobalStyles from \"src/components/GlobalStyles\";\nimport GoogleAnalytics from \"src/components/GoogleAnalytics\";\nimport MomentUtils from \"@date-io/moment\";\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\nimport React, { useEffect,useContext } from \"react\";\nimport { Router } from \"react-router-dom\";\nimport ScrollReset from \"src/components/ScrollReset\";\nimport { SnackbarProvider } from \"notistack\";\nimport { THEMES } from \"src/constants\";\nimport { create } from \"jss\";\nimport { createBrowserHistory } from \"history\";\nimport { createTheme } from \"src/theme\";\nimport rtl from \"jss-rtl\";\nimport { hugeiconsLicense } from \"@hugeicons/react-pro\";\nimport { withAITracking } from '@microsoft/applicationinsights-react-js';\nimport { reactPlugin, appInsights } from './AppInsights';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] });\nconst history = createBrowserHistory();\n\n\nconst App = () => {\n\n hugeiconsLicense(\"150eafea8c7e2d8e99e4c1f89374d6e6RT00ODIzODY2OTc3MDAwLFM9cHJvLFY9MSxQPUd1bXJvYWQsU1Q9NTdBMTk4MEIsRVQ9NkY0ODNBNEQ=\");\n\n const theme = createTheme({\n direction: \"ltr\",\n responsiveFontSizes: true,\n theme: THEMES.LIGHT\n });\n\n useEffect(() => {\n\n // Generate a new session ID (GUID)\n const sessionId = uuidv4();\n appInsights.context.session.id = sessionId;\n\n appInsights.trackEvent({\n name: 'Application On Load',\n properties: { 'Application Loaded': 'CGLicensePortal' }\n });\n\n // Track page views on route changes\n const unlisten = history.listen((location) => {\n appInsights.trackPageView({\n name: location.pathname,\n properties: { timestamp: Date.now() } // Pass the properties to trackPageView\n });\n });\n return () => {\n unlisten();\n };\n \n }, []);\n return (\n \n \n \n \n \n \n \n \n \n {renderRoutes(routes)}\n \n \n \n \n \n \n );\n};\n\nexport default App;\n//export default withAITracking(reactPlugin, App);\n","import \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\nimport \"react-perfect-scrollbar/dist/css/styles.css\";\nimport \"nprogress/nprogress.css\";\nimport \"src/__mocks__\";\nimport \"src/assets/css/prism.css\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport { enableES5 } from \"immer\";\nimport * as serviceWorker from \"src/serviceWorker\";\nimport store from \"src/store\";\nimport App from \"src/App\";\n\nenableES5();\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\nserviceWorker.register();\n","export const APP_VERSION = \"3.1.0\";\n\nexport const ENABLE_REDUX_DEV_TOOLS = true;\n\nexport const THEMES = {\n LIGHT: \"LIGHT\",\n ONE_DARK: \"ONE_DARK\",\n UNICORN: \"UNICORN\"\n};\n","import axios from \"axios\";\n\nconst axiosInstance = axios.create(\n {\n //baseURL: 'https://localhost:44384/' // Localhost \n //baseURL: 'https://licenseportalapistaging.azurewebsites.net/' // Staging API\n baseURL: 'https://customerapi.civilgeo.com/' // Production API\n }\n);\n\naxiosInstance.interceptors.response.use(\n response => response,\n error =>\n Promise.reject(\n (error.response && error.response.data) || \"Something went wrong\"\n )\n);\n\nexport default axiosInstance;\n","// Function to get previous page URL from local storage\nconst getRedirectUrl = () => {\n return localStorage.getItem('redirectUrl');\n};\n\n// Function to set previous page URL in local storage\nconst setRedirectUrl = (url) => {\n localStorage.setItem('redirectUrl', url);\n};\n\nconst addRedirectUrlToPath = (currentUrl, redirectUrl) => {\n return currentUrl+\"?redirectUrl=\"+redirectUrl;\n}\n\nexport {getRedirectUrl, setRedirectUrl, addRedirectUrlToPath}","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n notifications: [],\n isPopoverOpen: false\n};\n\nconst slice = createSlice({\n name: \"notifications\",\n initialState,\n reducers: {\n getNotifications(state, action) {\n const notifications = action.payload;\n\n state.notifications = notifications;\n },\n clearNotifications(state, action) {\n const {notificationIds} = action.payload;\n\n state.notifications = _.reject(state.notifications, notification =>\n notificationIds.includes(notification.id)\n );\n state.isPopoverOpen = false;\n },\n setPopoverOpen(state, action) {\n state.isPopoverOpen = action.payload;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getNotifications = () => async dispatch => {\n const response = await axios.get(\"/api/notifications\");\n\n dispatch(slice.actions.getNotifications(response.data));\n};\n\nexport const clearNotifications = notificationIds => async dispatch => {\n await axios.post(\"/api/notifications/clear\", {\n notificationIds\n });\n\n dispatch(slice.actions.clearNotifications({ notificationIds }));\n};\n\nexport const setPopoverOpen = open => dispatch => {\n dispatch(slice.actions.setPopoverOpen(open));\n};\n\nexport default slice;\n","import { useRef, useEffect } from \"react\";\n\nconst useIsMountedRef = () => {\n const isMounted = useRef(true);\n\n useEffect(\n () => () => {\n isMounted.current = false;\n },\n []\n );\n\n return isMounted;\n};\n\nexport default useIsMountedRef;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n settings: null,\n isDeleteDialogOpen: false,\n selectedUserIds: null\n};\n\nconst slice = createSlice({\n name: \"companySettings\",\n initialState,\n reducers: {\n getCompanySettings(state, action) {\n const settings = action.payload;\n state.settings = settings\n },\n\n updateCompanySettings(state, action) {\n const settings = action.payload;\n state.settings = settings\n },\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const updateCompanySettings = data => async dispatch => {\n const response = await axios.post(\"/api/companySettings\", data);\n\n dispatch(slice.actions.updateCompanySettings(response.data));\n};\n\nexport const resetCompanySettings = () => async dispatch => {\n const response = await axios.post(\"/api/companySettings/reset\");\n\n dispatch(slice.actions.updateCompanySettings(response.data));\n};\n\n\nexport const getCompanySettings = () => async dispatch => {\n const response = await axios.get(\"/api/companySettings\");\n\n dispatch(slice.actions.getCompanySettings(response.data));\n};\n\nexport default slice;\n","function buildMap(rows) {\n return rows.reduce((accum, { dataIndex }) => {\n accum[dataIndex] = true;\n return accum;\n }, {});\n}\n\nfunction escapeDangerousCSVCharacters(data) {\n if (typeof data === 'string') {\n // Places single quote before the appearance of dangerous characters if they\n // are the first in the data string.\n return data.replace(/^\\+|^\\-|^\\=|^\\@/g, \"'$&\");\n }\n\n return data;\n}\n\nfunction warnDeprecated(warning, consoleWarnings = true) {\n let consoleWarn = typeof consoleWarnings === 'function' ? consoleWarnings : console.warn;\n if (consoleWarnings) {\n consoleWarn(`Deprecation Notice: ${warning}`);\n }\n}\n\nfunction warnInfo(warning, consoleWarnings = true) {\n let consoleWarn = typeof consoleWarnings === 'function' ? consoleWarnings : console.warn;\n if (consoleWarnings) {\n consoleWarn(`${warning}`);\n }\n}\n\nfunction getPageValue(count, rowsPerPage, page) {\n const totalPages = count <= rowsPerPage ? 1 : Math.ceil(count / rowsPerPage);\n\n // `page` is 0-indexed\n return page >= totalPages ? totalPages - 1 : page;\n}\n\nfunction getCollatorComparator() {\n if (!!Intl) {\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\n return collator.compare;\n }\n\n const fallbackComparator = (a, b) => a.localeCompare(b);\n return fallbackComparator;\n}\n\nfunction sortCompare(order) {\n return (a, b) => {\n var aData = a.data === null || typeof a.data === 'undefined' ? '' : a.data;\n var bData = b.data === null || typeof b.data === 'undefined' ? '' : b.data;\n return (\n (typeof aData.localeCompare === 'function' ? aData.localeCompare(bData) : aData - bData) *\n (order === 'asc' ? 1 : -1)\n );\n };\n}\n\nfunction buildCSV(columns, data, options) {\n const replaceDoubleQuoteInString = columnData =>\n typeof columnData === 'string' ? columnData.replace(/\\\"/g, '\"\"') : columnData;\n\n const buildHead = columns => {\n return (\n columns\n .reduce(\n (soFar, column) =>\n column.download\n ? soFar +\n '\"' +\n escapeDangerousCSVCharacters(replaceDoubleQuoteInString(column.label || column.name)) +\n '\"' +\n options.downloadOptions.separator\n : soFar,\n '',\n )\n .slice(0, -1) + '\\r\\n'\n );\n };\n const CSVHead = buildHead(columns);\n\n const buildBody = data => {\n if (!data.length) return '';\n return data\n .reduce(\n (soFar, row) =>\n soFar +\n '\"' +\n row.data\n .filter((_, index) => columns[index].download)\n .map(columnData => escapeDangerousCSVCharacters(replaceDoubleQuoteInString(columnData)))\n .join('\"' + options.downloadOptions.separator + '\"') +\n '\"\\r\\n',\n '',\n )\n .trim();\n };\n const CSVBody = buildBody(data);\n\n const csv = options.onDownload\n ? options.onDownload(buildHead, buildBody, columns, data)\n : `${CSVHead}${CSVBody}`.trim();\n\n return csv;\n}\n\nfunction downloadCSV(csv, filename) {\n const blob = new Blob([csv], { type: 'text/csv' });\n\n /* taken from react-csv */\n if (navigator && navigator.msSaveOrOpenBlob) {\n navigator.msSaveOrOpenBlob(blob, filename);\n } else {\n const dataURI = `data:text/csv;charset=utf-8,${csv}`;\n\n const URL = window.URL || window.webkitURL;\n const downloadURI = typeof URL.createObjectURL === 'undefined' ? dataURI : URL.createObjectURL(blob);\n\n let link = document.createElement('a');\n link.setAttribute('href', downloadURI);\n link.setAttribute('download', filename);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n}\n\nfunction createCSVDownload(columns, data, options, downloadCSV) {\n const csv = buildCSV(columns, data, options);\n\n if (options.onDownload && csv === false) {\n return;\n }\n\n downloadCSV(csv, options.downloadOptions.filename);\n}\n\n // Function to generate a random password of defined length\n const generateRandomPassword = (length = 12) => {\n const charset = 'ACEFHJKMNPQRTWXYZbcdefhjkmnprtwxyz2347';\n let password = '';\n for (let i = 0; i < length; i++) {\n const randomIndex = Math.floor(Math.random() * charset.length);\n password += charset[randomIndex];\n }\n return password;\n };\n\nconst isArrayEqual = (a, b) => JSON.stringify(a.sort()) === JSON.stringify(b.sort());\n\nconst saveToLocalStorage = (id, value) => localStorage.setItem(id, value);\n\nconst getFromLocalStorage = (id) => localStorage.getItem(id);\n\nconst removeFromLocalStorage = (id) => localStorage.removeItem(id);\n\n\nexport {\n buildMap,\n getPageValue,\n getCollatorComparator,\n sortCompare,\n createCSVDownload,\n buildCSV,\n downloadCSV,\n warnDeprecated,\n warnInfo,\n escapeDangerousCSVCharacters,\n isArrayEqual,\n generateRandomPassword,\n saveToLocalStorage,\n getFromLocalStorage,\n removeFromLocalStorage\n};\n","export default [\n {\n text: \"GeoHECRAS\",\n description: \"Rapidly construct 1D & 2D HEC-RAS models, producing better and more accurate results. Accelerate engineering workflows and streamline analysis review.\",\n value: \"9a7b965d-ec50-4fe8-9141-f98d6ea7e2e6\",\n image: \"/static/images/products/GeoHECRAS.ico\",\n nameImage:\"/static/images/products/GeoHECRAS_Registered.png\",\n cardImage: \"/static/images/products/GeoHECRAS-Card-Image.webp\",\n variants: [\n // { text: \"Starter\", value: \"00000000-0000-0000-0000-000000000000\" },\n { text: \"GeoHECRAS 1D\", value: \"9a7b965d-ec50-4fe8-9141-f98d6ea7e2e6\" },\n { text: \"GeoHECRAS 1D & 2D\", value: \"4e27ae81-6e93-4c1f-ac15-699be660cd0a\" }\n ]\n },\n //{ text: \"GeoHECRAS 2D\", value: \"4e27ae81-6e93-4c1f-ac15-699be660cd0a\" },\n {\n text: \"GeoHECHMS\",\n description: \"Greatly speed up the process for creating, analyzing, and reviewing stormwater models using the industry‑standard Army Corps of Engineers HEC‑HMS.\",\n value: \"55eebc12-0b34-47b4-b2c0-5207961ed2b0\",\n image: \"/static/images/products/GeoHECHMS.ico\",\n nameImage:\"/static/images/products/GeoHECHMS_Registered.png\",\n cardImage: \"/static/images/products/GeoHECHMS-Card-Image.webp\",\n variants: [\n // { text: \"Starter\", value: \"00000000-0000-0000-0000-000000000000\" },\n // { text: \"Standard\", value: \"00000000-0000-0000-0000-000000000000\" },\n { text: \"GeoHECHMS\", value: \"55eebc12-0b34-47b4-b2c0-5207961ed2b0\" }\n ]\n },\n {\n text: \"GeoSTORM\",\n description: \"Accelerate the process of designing, analyzing, and reviewing urban and rural stormwater models in an AutoCAD compatible user interface.\",\n value: \"dca86248-c9c2-432e-a38e-1dc87b1cec16\",\n image: \"/static/images/products/GeoSTORM.ico\",\n nameImage:\"/static/images/products/GeoSTORM_Registered.png\",\n cardImage: \"/static/images/products/GeoSTORM-Card-Image.webp\",\n variants: [\n { text: \"GeoSTORM Starter\", value: \"dca86248-c9c2-432e-a38e-1dc87b1cec16\" },\n { text: \"GeoSTORM Standard\", value: \"1329ab1a-012d-4bc7-892d-c40a66c35ba1\" },\n { text: \"GeoSTORM Professional\", value: \"1ace0b8c-4d58-47d7-91f1-82c893778216\" }\n ]\n }\n];\n","import React from \"react\";\nimport { CircularProgress, makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles(theme => ({\n root: {\n alignItems: \"center\",\n backgroundColor: theme.palette.background.default,\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n justifyContent: \"center\",\n left: 0,\n padding: theme.spacing(3),\n position: \"fixed\",\n top: 0,\n width: \"100%\",\n zIndex: 2000\n }\n}));\n\nconst SlashScreen = () => {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n};\n\nexport default SlashScreen;\n","import React, { createContext, useEffect, useReducer } from \"react\";\n\nimport SplashScreen from \"src/components/SplashScreen\";\nimport axios from \"src/utils/axios\";\nimport jwtDecode from \"jwt-decode\";\nimport dataStore from \"src/store/index\";\nimport countries from \"src/static/countries\";\nimport { appInsights } from 'src/AppInsights';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst initialAuthState = {\n isAuthenticated: false,\n isInitialized: false,\n user: null,\n company: null,\n appInsightsProperties: null,\n sessionId: null, // Added sessionId to the state\n};\n\nconst isValidToken = accessToken => {\n if (!accessToken) {\n return false;\n }\n\n const decoded = jwtDecode(accessToken);\n const currentTime = Date.now() / 1000;\n\n return decoded.exp > currentTime;\n};\n\nconst setSession = accessToken => {\n if (accessToken) {\n localStorage.setItem(\"accessToken\", accessToken);\n axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\n } else {\n localStorage.removeItem(\"accessToken\");\n delete axios.defaults.headers.common.Authorization;\n }\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case \"INITIALIZE\": {\n const { isAuthenticated, user, company, appInsightsProperties, sessionId } = action.payload;\n\n return {\n ...state,\n isAuthenticated,\n isInitialized: true,\n user,\n company,\n appInsightsProperties, // Update the state with appInsights properties\n sessionId // Set sessionId in the state\n };\n } \n case \"LOGIN\":\n case \"MAGICLOGIN\": {\n const { user, company } = action.payload;\n\n return {\n ...state,\n isAuthenticated: true,\n user,\n company\n };\n }\n case \"UPDATE\":\n case \"REGISTER\": {\n const { user } = action.payload;\n\n return {\n ...state,\n isAuthenticated: true,\n user\n };\n }\n case \"LOGOUT\": {\n return {\n ...state,\n isAuthenticated: false,\n user: null\n };\n }\n default: {\n return { ...state };\n }\n }\n};\n\nconst AuthContext = createContext({\n ...initialAuthState,\n method: \"JWT\",\n login: () => Promise.resolve(),\n resetPassword: () => Promise.resolve(),\n createMagicLink: () => Promise.resolve(),\n magicLogin: () => Promise.resolve(),\n logout: () => { }\n});\n\nexport const AuthProvider = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, initialAuthState);\n\n // Function to get or generate a session ID\n const getSessionId = () => {\n let sessionId = localStorage.getItem('sessionId');\n if (!sessionId) {\n sessionId = uuidv4();\n localStorage.setItem('sessionId', sessionId);\n }\n return sessionId;\n };\n\n const login = async (emailAddress, password) => {\n const response = await axios.post(\"/api/account/login\", {\n emailAddress,\n password\n });\n const { accessToken, user, company } = response.data;\n\n setSession(accessToken);\n dataStore.dispatch({ type: \"RESET\" });\n dispatch({\n type: \"LOGIN\",\n payload: {\n user,\n company\n }\n });\n };\n\n const magicLogin = async (key) => {\n const response = await axios.post(\"/api/account/validateMagicLink?key=\" + key);\n const { accessToken, user, company } = response.data;\n\n setSession(accessToken);\n dataStore.dispatch({ type: \"RESET\" });\n\n dispatch({\n type: \"MAGICLOGIN\",\n payload: {\n user,\n company\n }\n });\n };\n\n const createMagicLink = async (emailAddress) => {\n await axios.get(\"/api/account/createMagicLink?emailAddress=\" + emailAddress);\n };\n\n const resetPassword = async emailAddress => {\n await axios.post(\"/api/account/resetPasswordEmail\", {\n emailAddress\n });\n };\n\n const logout = () => {\n setSession(null);\n //window.fcWidget && window.fcWidget.destroy();\n dataStore.dispatch({ type: \"RESET\" });\n // Remove session ID from localStorage\n localStorage.removeItem('sessionId');\n\n dispatch({ type: \"LOGOUT\" });\n };\n\n const updateAvatar = (userId, avatar) => async dispatch => {\n const response = await axios.post(\"api/account/updateAvatar\", { userId, avatar },\n { headers: { \"Content-Type\": \"application/json\" } });\n const { user } = response.data;\n dispatch({\n type: \"UPDATE\",\n payload: {\n user\n }\n });\n };\n\n const deleteProfilePic = (userId) => async dispatch => {\n const response = await axios.post(\"api/account/deleteProfilePic\", { userId });\n const { user } = response.data;\n\n dispatch({\n type: \"UPDATE\",\n payload: {\n user\n }\n });\n };\n\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const accessToken = window.localStorage.getItem(\"accessToken\");\n\n if (accessToken && isValidToken(accessToken)) {\n setSession(accessToken);\n\n const response = await axios.get(\"/api/account/me\");\n const user = response.data || {};\n const companyResponse = await axios.get(\"/api/account/company\");\n const company = companyResponse.data || {};\n\n // Prepare Application Insights properties\n const appInsightsProperties = {\n userId: user?.id,\n userName: `${user?.firstName} ${user?.lastName}`,\n userEmail: user?.emailAddress,\n companyName: company?.companyName,\n };\n const sessionId = getSessionId(); // Get or create a session ID\n // Set Application Insights context\n if (appInsights) {\n appInsights.trackEvent({\n name: 'Logged In',\n properties: appInsightsProperties,\n });\n appInsights.context.user.id = user?.id; // Set user ID\n appInsights.context.session.id = sessionId; // Set session ID\n }\n\n\n dispatch({\n type: \"INITIALIZE\",\n payload: {\n isAuthenticated: true,\n user,\n company,\n appInsightsProperties, // Pass the properties to the state\n sessionId // Pass sessionId to the state\n }\n });\n } else {\n dispatch({\n type: \"INITIALIZE\",\n payload: {\n isAuthenticated: false,\n user: null,\n company: null,\n appInsightsProperties: null, // Reset appInsights properties\n sessionId: null, // Reset sessionId\n }\n });\n }\n } catch (err) {\n console.error(err);\n dispatch({\n type: \"INITIALIZE\",\n payload: {\n isAuthenticated: false,\n user: null,\n company: null,\n appInsightsProperties: null, // Reset appInsights properties\n sessionId: null, // Reset sessionId\n }\n });\n }\n };\n\n initialize();\n }, []);\n\n if (!state.isInitialized) {\n return ;\n }\n\n return (\n \n {children}\n \n );\n};\n\n// Gets the country object corresponding to the companies country\nexport const getCompanyCountry = company => {\n return countries.find(option => {\n if (\n option &&\n company &&\n company.address &&\n company.address.country &&\n ((option.text && option.text.toLocaleLowerCase() === company.address.country.toLocaleLowerCase()) ||\n (option.value && option.value.toLocaleLowerCase() === company.address.country.toLocaleLowerCase()))\n ) {\n return true;\n }\n });\n};\n\nexport default AuthContext;\n","const track = (...args) => {\n if (process.env.NODE_ENV !== \"production\") {\n return;\n }\n\n if (!window.gtag) {\n return;\n }\n\n window.gtag(...args);\n};\n\nconst pageview = props => {\n track(\"config\", process.env.REACT_APP_GA_MEASUREMENT_ID, props);\n};\n\nconst event = (type, props) => {\n track(\"event\", type, props);\n};\n\nexport default {\n pageview,\n event\n};\n","import React, { forwardRef, useEffect, useCallback } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { useLocation } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport track from \"src/utils/analytics\";\n\nconst Page = forwardRef(({ children, title = \"\", ...rest }, ref) => {\n const location = useLocation();\n\n const sendPageViewEvent = useCallback(() => {\n track.pageview({\n page_path: location.pathname\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n sendPageViewEvent();\n }, [sendPageViewEvent]);\n\n return (\n
\n \n {title}\n \n {children}\n
\n );\n});\n\nPage.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.string\n};\n\nexport default Page;\n","const rgbToYIQ = ({ r, g, b }) => {\n return (r * 299 + g * 587 + b * 114) / 1000;\n};\n\nconst hexToRgb = hex => {\n if (!hex || hex === undefined || hex === \"\") {\n return undefined;\n }\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n }\n : undefined;\n};\n\nconst getContrastColor = (colorHex, threshold = 128) => {\n if (colorHex === undefined) {\n return \"#000\";\n }\n\n const rgb = hexToRgb(colorHex);\n\n if (rgb === undefined) {\n return \"#000\";\n }\n\n return rgbToYIQ(rgb) >= threshold ? \"#000\" : \"#fff\";\n};\n\nexport default getContrastColor;\n","import React from \"react\";\nimport { Avatar, makeStyles } from \"@material-ui/core\";\nimport seedRandom from \"seedrandom\";\nimport getContrastColor from \"./getContrastColor\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\n\nconst generateNumberInRange = (seed, min, max) => {\n return Math.floor(seedRandom(seed)() * (max - min + 1) + min);\n};\n\nconst useStyles = makeStyles(theme => ({\n avatar: {\n fontSize: \"1rem\"\n },\n popover: {\n width: 200\n }\n}));\n\nconst UserAvatar = (\n { firstName, lastName, image, className, style, isRound, ...rest },\n ref\n) => {\n const classes = useStyles();\n\n let avatarChars = firstName.charAt(0) + lastName.charAt(0);\n avatarChars = avatarChars.toUpperCase();\n\n const backgroundColors = [\n \"#F94144\",\n \"#F3722C\",\n \"#F8961E\",\n \"#F9844A\",\n \"#F9C74F\",\n \"#90BE6D\",\n \"#43AA8B\",\n \"#4D908E\",\n \"#577590\",\n \"#277DA1\"\n ];\n const backgroundColorIndex = generateNumberInRange(\n avatarChars,\n 0,\n backgroundColors.length - 1\n );\n const backgroundColor = backgroundColors[backgroundColorIndex];\n\n const color = getContrastColor(backgroundColor);\n\n return (\n \n {!image && avatarChars}\n \n );\n};\n\nUserAvatar.propTypes = {\n firstName: PropTypes.string,\n lastName: PropTypes.string, \n image: PropTypes.string,\n className: PropTypes.any,\n style: PropTypes.any,\n isRound: PropTypes.bool\n}\n\nexport default React.forwardRef(UserAvatar);\n","import _ from \"lodash\";\nimport axios from \"src/utils/axios\";\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport products from \"src/static/products\";\n\nconst initialState = {\n allLicenses: [],\n assignedLicenses: [],\n usedLicenses: [],\n activeDevices: [],\n isReleaseDialogOpen: false,\n selectedUsedLicenseIds: []\n};\n\nconst slice = createSlice({\n name: \"licenses\",\n initialState,\n reducers: {\n getAllLicenses(state, action) {\n const allLicenses = action.payload;\n\n state.allLicenses = allLicenses;\n },\n getAssignedLicenses(state, action) {\n const assignedLicenses = action.payload;\n\n state.assignedLicenses = assignedLicenses;\n },\n assignLicenses(state, action) {\n const assignedLicenses = action.payload;\n\n state.assignedLicenses = assignedLicenses;\n },\n bulkAssignLicenses(state, action) {\n const assignedLicenses = action.payload;\n\n state.assignedLicenses = assignedLicenses;\n },\n releaseLicenses(state, action) {\n const assignedLicenses = action.payload;\n\n state.assignedLicenses = assignedLicenses;\n },\n getUsedLicenses(state, action) {\n const usedLicenses = action.payload;\n\n state.usedLicenses = usedLicenses;\n },\n getActiveDevices(state, action) {\n const activeDevices = action.payload;\n\n state.activeDevices = activeDevices;\n },\n selectUsedLicensesForRelease(state, action) {\n const licenseIds = action.payload;\n\n state.isReleaseDialogOpen = true;\n state.selectedUsedLicenseIds = licenseIds;\n },\n releaseUsedLicenses(state, action) {\n const licenseIds = action.payload;\n\n state.usedLicenses = _.reject(state.usedLicenses, license =>\n licenseIds.includes(license.usedLicenseId)\n );\n },\n closeDialog(state) {\n state.isReleaseDialogOpen = false;\n state.selectedUsedLicenseIds = null;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getAllLicenses = () => async dispatch => {\n const response = await axios.get(\"/api/licenses/all\");\n dispatch(slice.actions.getAllLicenses(response.data));\n};\n\nexport const getAssignedLicenses = () => async dispatch => {\n const response = await axios.get(\"/api/licenses/allAssigned\");\n const productVariantIds = response.data.map(item => item.productId);\n // Filter response.data based on multiple conditions\n const filteredData = response.data.filter(item => {\n // Check if productVariantId exists in products and its variants.text includes \"GeoSTORM\"\n return item.availableVariants.every(variant => variant.type !== \"Network\") && // Check if licenseType is not \"Network\"\n productVariantIds.includes(item.productId) && // Check if productVariantId exists in productVariantIds\n products.some(product => (\n product.variants.some(variant => (\n variant.value === item.productId &&\n variant.text.includes('GeoSTORM')\n ))\n ));\n });\n dispatch(slice.actions.getAssignedLicenses(filteredData));\n};\n\nexport const assignLicenses = (userIds, assignedProducts) => async dispatch => {\n const response = await axios.post(\"/api/licenses/assign\", {\n userIds,\n assignedProducts\n });\n dispatch(slice.actions.assignLicenses(response.data));\n};\n\nexport const bulkAssignLicenses = (addedUsers, removedUsers) => async dispatch => {\n const response = await axios.post(\"/api/licenses/bulkAssign\", {\n addedUsers,\n removedUsers\n });\n dispatch(slice.actions.bulkAssignLicenses(response.data));\n};\n\nexport const releaseLicenses = (userIds, assignedProducts) => async dispatch => {\n const response = await axios.post(\"/api/licenses/release\", {\n userIds,\n assignedProducts\n });\n dispatch(slice.actions.releaseLicenses(response.data));\n};\n\nexport const getUsedLicenses = () => async dispatch => {\n const response = await axios.get(\"/api/licenses/used\");\n\n dispatch(slice.actions.getUsedLicenses(response.data));\n};\n\nexport const getActiveDevices = () => async dispatch => {\n const response = await axios.get(\"/api/licenses/devices\");\n\n dispatch(slice.actions.getActiveDevices(response.data));\n};\n\nexport const removeActiveDevice = (serverId, clientId) => async dispatch => {\n const response = await axios.delete(`/api/licenses/removeDevice?serverId=${serverId}&clientId=${clientId}`);\n dispatch(slice.actions.getActiveDevices(response.data));\n};\n\nexport const selectUsedLicensesForRelease = licenseIds => async dispatch => {\n dispatch(slice.actions.selectUsedLicensesForRelease({ licenseIds }));\n};\n\nexport const releaseUsedLicenses = licenseIds => async dispatch => {\n await axios.post(\"/api/licenses/used/remove\", {\n licenseIds\n });\n\n dispatch(slice.actions.releaseUsedLicenses({ licenseIds }));\n};\n\nexport const closeDialog = () => dispatch => {\n dispatch(slice.actions.closeDialog());\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\nimport { getFromLocalStorage, removeFromLocalStorage, saveToLocalStorage } from \"src/utils/mui-datatables-master/src/utils\";\n\nconst initialState = {\n users: [],\n isDeleteDialogOpen: false,\n selectedUserIds: null,\n createdUsers: [],\n csvInfo: null,\n statusInfo: null\n};\n\nconst slice = createSlice({\n name: \"users\",\n initialState,\n reducers: {\n getUsers(state, action) {\n const users = action.payload;\n\n state.users = users;\n },\n selectUsersForDelete(state, action) {\n const { userIds } = action.payload;\n\n state.isDeleteDialogOpen = true;\n state.selectedUserIds = userIds;\n },\n createUser(state, action) {\n const user = action.payload;\n\n state.users = [...state.users, user];\n },\n updateUser(state, action) {\n const user = action.payload;\n\n state.users = _.map(state.users, _user => {\n if (_user.id === user.id) {\n return user;\n }\n\n return _user;\n });\n },\n twoFactorUpdated(state, action) {\n const { userId, twoFactorEnabled, updateCompanyPolicy } = action.payload;\n state.users = _.map(state.users, _user => {\n if (updateCompanyPolicy) {\n _user.twoFactorEnabled = twoFactorEnabled;\n _user.twoFactorPolicy = twoFactorEnabled;\n } else if (_user.id === userId) {\n _user.twoFactorEnabled = twoFactorEnabled;\n }\n return _user;\n });\n },\n deleteUsers(state, action) {\n const { userIds } = action.payload;\n\n state.users = _.reject(state.users, user => userIds.includes(user.id));\n },\n updateUserPassword(state, action) {\n const { emailAddress } = action.payload;\n state.users = state.users.map(user =>\n user.emailAddress === emailAddress\n ? { ...user, passwordUpdated: true }\n : user\n );\n },\n closeDialog(state) {\n state.isDeleteDialogOpen = false;\n state.selectedUserIds = null;\n },\n uploadMultipleUsers(state, action) {\n const { createdUsers, csvInfo, statusInfo } = action.payload;\n state.users = [...state.users, ...createdUsers];\n saveToLocalStorage(\"bulkUserResponse\", JSON.stringify(action.payload));\n getBulkCreatedUsers(state);\n },\n getBulkCreatedUsers(state) {\n try {\n const { createdUsers, csvInfo, statusInfo } = JSON.parse(getFromLocalStorage(\"bulkUserResponse\"));\n state.createdUsers = createdUsers ?? [];\n state.csvInfo = csvInfo;\n state.statusInfo = statusInfo;\n } catch {\n state.createdUsers = [];\n state.csvInfo = null;\n state.statusInfo = null;\n }\n },\n resetBulkCreatedUsers(state) {\n removeFromLocalStorage(\"bulkUserResponse\");\n state.createdUsers = [];\n state.csvInfo = null;\n state.statusInfo = null;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const updateUserPassword = (emailAddress, newPassword, requirePasswordChange, emailSignInDetails, emailAddresses) => async dispatch => {\n try {\n const response = await axios.post(\"/api/admin/users/updatePassword\", {\n emailAddress,\n newPassword,\n requirePasswordChange,\n emailSignInDetails,\n emailAddresses\n });\n\n dispatch(slice.actions.updateUserPassword({ emailAddress }));\n return response.data; // Return response data if needed\n } catch (error) {\n console.error('Error updating user password:', error);\n throw error; // Propagate error if needed\n }\n};\n\n\n\nexport const getUsers = () => async dispatch => {\n const response = await axios.get(\"/api/admin/users\");\n\n dispatch(slice.actions.getUsers(response.data));\n};\n\nexport const createUser = data => async dispatch => {\n const response = await axios.post(\"/api/admin/users/new\", data);\n\n dispatch(slice.actions.createUser(response.data));\n};\n\nexport const selectUsersForDelete = userIds => async dispatch => {\n dispatch(slice.actions.selectUsersForDelete({ userIds }));\n};\n\nexport const updateUser = (userId, update) => async dispatch => {\n const response = await axios.post(\"/api/admin/users/update\", {\n userId,\n update\n });\n\n dispatch(slice.actions.updateUser(response.data));\n};\n\nexport const deleteUsers = userIds => async dispatch => {\n await axios.post(\"/api/admin/users/remove\", {\n userIds\n });\n\n dispatch(slice.actions.deleteUsers({ userIds }));\n};\n\nexport const updateTwoFactor = (userId, twoFactorEnabled) => async dispatch => {\n await axios.post(\"/api/admin/users/updateTwoFactor\", {\n userId,\n twoFactorEnabled\n });\n\n dispatch(slice.actions.twoFactorUpdated({ userId, twoFactorEnabled, updateCompanyPolicy:false }));\n};\n\nexport const setTwoFactor = (userId, twoFactorEnabled) => async dispatch => {\n await axios.post(\"/api/admin/users/setTwoFactorPolicy\", {\n userId,\n twoFactorEnabled\n });\n\n dispatch(slice.actions.twoFactorUpdated({ userId, twoFactorEnabled, updateCompanyPolicy:true }));\n};\n\nexport const uploadMultipleUsers = (csvFileData) => async dispatch => {\n const response = await axios.post(\"/api/admin/users/import\", {csvFileData});\n await dispatch(slice.actions.uploadMultipleUsers(response.data));\n return response.data;\n};\n\nexport const closeDialog = () => dispatch => {\n dispatch(slice.actions.closeDialog());\n};\n\nexport const getBulkCreatedUsers = () => async dispatch => {\n await dispatch(slice.actions.getBulkCreatedUsers());\n}\n\nexport const resetBulkCreatedUsers = () => async dispatch => {\n await dispatch(slice.actions.resetBulkCreatedUsers());\n}\n//updatePassword\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n groups: [],\n isDeleteDialogOpen: false,\n selectedGroupIds: null,\n showWarning: false, \n};\n\nconst slice = createSlice({\n name: \"groups\",\n initialState,\n reducers: {\n getGroups(state, action) {\n const groups = action.payload;\n\n state.groups = groups;\n \n },\n selectGroupsForDelete(state, action) {\n const { groupIds, enqueueSnackbar } = action.payload;\n \n const groupExists = groupIds.some(groupId => \n state.groups.some(group => group.parentGroup === groupId)\n );\n\n if (groupExists) {\n state.isDeleteDialogOpen = false;\n state.showWarning = true; // Set flag to true when warning should be shown\n } else {\n state.isDeleteDialogOpen = true;\n state.selectedGroupIds = groupIds;\n }\n },\n createGroup(state, action) {\n const group = action.payload;\n\n state.groups = [...state.groups, group];\n },\n updateGroup(state, action) {\n const group = action.payload;\n\n state.groups = _.map(state.groups, _group => {\n if (_group.id === group.id) {\n return group;\n }\n\n return _group;\n });\n },\n deleteGroups(state, action) {\n const { groupIds } = action.payload;\n\n state.groups = _.reject(state.groups, email =>\n groupIds.includes(email.id)\n );\n },\n closeDialog(state) {\n state.isDeleteDialogOpen = false;\n state.selectedGroupIds = null;\n },\n clearWarning(state) {\n state.showWarning = false; // Action to clear the warning flag\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getGroups = () => async dispatch => {\n const response = await axios.get(\"/api/admin/groups\");\n\n dispatch(slice.actions.getGroups(response.data));\n};\n\nexport const createGroup = data => async dispatch => {\n const response = await axios.post(\"/api/admin/groups/new\", data);\n\n dispatch(slice.actions.createGroup(response.data));\n};\n\nexport const selectGroupsForDelete = groupIds => async dispatch => {\n dispatch(slice.actions.selectGroupsForDelete({ groupIds }));\n};\n\nexport const updateGroup = (groupId, update) => async dispatch => {\n const response = await axios.post(\"/api/admin/groups/update\", {\n groupId,\n update\n });\n\n dispatch(slice.actions.updateGroup(response.data));\n};\n\nexport const deleteGroups = groupIds => async dispatch => {\n await axios.post(\"/api/admin/groups/remove\", {\n groupIds\n });\n\n dispatch(slice.actions.deleteGroups({ groupIds }));\n};\n\nexport const closeDialog = () => dispatch => {\n dispatch(slice.actions.closeDialog());\n};\nexport const clearWarning = () => dispatch => {\n dispatch(slice.actions.clearWarning());\n};\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n emails: [],\n defaultEmail: null,\n emailReplyAddress: null,\n isDeleteDialogOpen: false,\n selectedEmailIds: null\n};\n\nconst slice = createSlice({\n name: \"welcomeEmails\",\n initialState,\n reducers: {\n getEmails(state, action) {\n const emails = action.payload;\n\n state.emails = emails;\n },\n selectEmailsForDelete(state, action) {\n const { emailIds = null } = action.payload;\n\n state.isDeleteDialogOpen = true;\n state.selectedEmailIds = emailIds;\n },\n createEmail(state, action) {\n const email = action.payload;\n\n state.emails = [...state.emails, email];\n },\n updateEmail(state, action) {\n const email = action.payload;\n\n state.emails = _.map(state.emails, _email => {\n if (_email.id === email.id) {\n return email;\n }\n\n return _email;\n });\n },\n deleteEmails(state, action) {\n const {emailIds = null} = action.payload;\n\n state.emails = _.reject(state.emails, email =>\n emailIds.includes(email.id)\n );\n },\n getDefaultEmail(state, action) {\n const defaultEmail = action.payload;\n\n state.defaultEmail = defaultEmail;\n },\n setDefaultEmail(state, action) {\n const defaultEmail = action.payload;\n\n state.defaultEmail = defaultEmail;\n },\n getEmailReplyAddress(state, action) {\n const emailReplyAddress = action.payload;\n\n state.emailReplyAddress = emailReplyAddress;\n },\n setEmailReplyAddress(state, action) {\n const emailReplyAddress = action.payload;\n\n state.emailReplyAddress = emailReplyAddress;\n },\n closeDialog(state) {\n state.isDeleteDialogOpen = false;\n state.selectedFieldIds = null;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getEmails = () => async dispatch => {\n const response = await axios.get(\"/api/admin/welcomeEmails/emails\");\n\n dispatch(slice.actions.getEmails(response.data));\n};\n\nexport const createEmail = data => async dispatch => {\n const response = await axios.post(\n \"/api/admin/welcomeEmails/emails/new\",\n data\n );\n\n dispatch(slice.actions.createEmail(response.data));\n};\n\nexport const selectEmailsForDelete = emailIds => async dispatch => {\n dispatch(slice.actions.selectEmailsForDelete({ emailIds }));\n};\n\nexport const updateEmail = (emailId, update) => async dispatch => { \n const response = await axios.post(\"/api/admin/welcomeEmails/emails/update\", {\n emailId,\n update\n });\n\n dispatch(slice.actions.updateEmail(response.data));\n};\n\nexport const deleteEmails = emailIds => async dispatch => {\n await axios.post(\"/api/admin/welcomeEmails/emails/remove\", {\n emailIds\n });\n\n dispatch(slice.actions.deleteEmails({ emailIds }));\n};\n\nexport const getDefaultEmail = () => async dispatch => {\n const response = await axios.get(\"/api/admin/welcomeEmails/defaultEmail\");\n\n dispatch(slice.actions.getDefaultEmail(response.data));\n};\n\nexport const setDefaultEmail = emailId => async dispatch => {\n const response = await axios.post(\n \"/api/admin/welcomeEmails/defaultEmail/update\",\n {\n emailId\n }\n );\n\n dispatch(slice.actions.getDefaultEmail(response.data));\n};\n\nexport const getEmailReplyAddress = () => async dispatch => {\n const response = await axios.get(\"/api/admin/welcomeEmails/replyEmail\");\n\n dispatch(slice.actions.getEmailReplyAddress(response.data));\n};\n\nexport const setEmailReplyAddress = emailAddress => async dispatch => {\n const response = await axios.post(\n \"/api/admin/welcomeEmails/replyEmail/update\",\n {\n emailAddress\n }\n );\n\n dispatch(slice.actions.setEmailReplyAddress(response.data));\n};\n\nexport const closeDialog = () => dispatch => {\n dispatch(slice.actions.closeDialog());\n};\n\nexport default slice;\n","import axios from \"src/utils/axios\";\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport products from \"src/static/products\";\n\nconst initialState = {\n assignedProducts: []\n};\n\nconst slice = createSlice({\n name: \"userProductAccess\",\n initialState,\n reducers: {\n getAssignedProducts(state, action) {\n const assignedProducts = action.payload;\n\n state.assignedProducts = assignedProducts;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getAssignedProducts = () => async dispatch => {\n const response = await axios.get(\"/api/productAccess/\");\n const productVariantIds = response.data.map(item => item.productVariantId);\n\n // Filter response.data based on multiple conditions\n const filteredData = response.data.filter(item => {\n // Check if productVariantId exists in products and its variants.text includes \"GeoSTORM\"\n return !item.licenseType.includes(\"Network\") && // Check if licenseType is not \"Network\"\n productVariantIds.includes(item.productVariantId) && // Check if productVariantId exists in productVariantIds\n products.some(product => (\n product.variants.some(variant => (\n variant.value === item.productVariantId &&\n variant.text.includes('GeoSTORM')\n ))\n ));\n });\n dispatch(slice.actions.getAssignedProducts(filteredData));\n};\n\nexport default slice;\n","export default [\n { text: \"United States\", value: \"US\", abbr: \"USA\" },\n { text: \"Canada\", value: \"CA\", abbr: \"Canada\", isDivider: true },\n { text: \"Afghanistan\", value: \"AF\" },\n { text: \"Ă…land Islands\", value: \"AX\" },\n { text: \"Albania\", value: \"AL\" },\n { text: \"Algeria\", value: \"DZ\" },\n { text: \"American Samoa\", value: \"AS\" },\n { text: \"Andorra\", value: \"AD\" },\n { text: \"Angola\", value: \"AO\" },\n { text: \"Anguilla\", value: \"AI\" },\n { text: \"Antarctica\", value: \"AQ\" },\n { text: \"Antigua and Barbuda\", value: \"AG\" },\n { text: \"Argentina\", value: \"AR\" },\n { text: \"Armenia\", value: \"AM\" },\n { text: \"Aruba\", value: \"AW\" },\n { text: \"Australia\", value: \"AU\" },\n { text: \"Austria\", value: \"AT\" },\n { text: \"Azerbaijan\", value: \"AZ\" },\n { text: \"Bahamas\", value: \"BS\" },\n { text: \"Bahrain\", value: \"BH\" },\n { text: \"Bangladesh\", value: \"BD\" },\n { text: \"Barbados\", value: \"BB\" },\n { text: \"Belarus\", value: \"BY\" },\n { text: \"Belgium\", value: \"BE\" },\n { text: \"Belize\", value: \"BZ\" },\n { text: \"Benin\", value: \"BJ\" },\n { text: \"Bermuda\", value: \"BM\" },\n { text: \"Bhutan\", value: \"BT\" },\n { text: \"Bolivia\", value: \"BO\" },\n { text: \"Bosnia and Herzegovina\", value: \"BA\" },\n { text: \"Botswana\", value: \"BW\" },\n { text: \"Bouvet Island\", value: \"BV\" },\n { text: \"Brazil\", value: \"BR\" },\n { text: \"British Indian Ocean Territory\", value: \"IO\" },\n { text: \"Brunei Darussalam\", value: \"BN\" },\n { text: \"Bulgaria\", value: \"BG\" },\n { text: \"Burkina Faso\", value: \"BF\" },\n { text: \"Burundi\", value: \"BI\" },\n { text: \"Cambodia\", value: \"KH\" },\n { text: \"Cameroon\", value: \"CM\" },\n { text: \"Cape Verde\", value: \"CV\" },\n { text: \"Cayman Islands\", value: \"KY\" },\n { text: \"Central African Republic\", value: \"CF\" },\n { text: \"Chad\", value: \"TD\" },\n { text: \"Chile\", value: \"CL\" },\n { text: \"China\", value: \"CN\" },\n { text: \"Christmas Island\", value: \"CX\" },\n { text: \"Cocos (Keeling) Islands\", value: \"CC\" },\n { text: \"Colombia\", value: \"CO\" },\n { text: \"Comoros\", value: \"KM\" },\n { text: \"Congo\", value: \"CG\" },\n { text: \"Congo, The Democratic Republic of the\", value: \"CD\" },\n { text: \"Cook Islands\", value: \"CK\" },\n { text: \"Costa Rica\", value: \"CR\" },\n { text: \"Cote D'Ivoire\", value: \"CI\" },\n { text: \"Croatia\", value: \"HR\" },\n { text: \"Cuba\", value: \"CU\" },\n { text: \"Cyprus\", value: \"CY\" },\n { text: \"Czech Republic\", value: \"CZ\" },\n { text: \"Denmark\", value: \"DK\" },\n { text: \"Djibouti\", value: \"DJ\" },\n { text: \"Dominica\", value: \"DM\" },\n { text: \"Dominican Republic\", value: \"DO\" },\n { text: \"Ecuador\", value: \"EC\" },\n { text: \"Egypt\", value: \"EG\" },\n { text: \"El Salvador\", value: \"SV\" },\n { text: \"Equatorial Guinea\", value: \"GQ\" },\n { text: \"Eritrea\", value: \"ER\" },\n { text: \"Estonia\", value: \"EE\" },\n { text: \"Ethiopia\", value: \"ET\" },\n { text: \"Falkland Islands (Malvinas)\", value: \"FK\" },\n { text: \"Faroe Islands\", value: \"FO\" },\n { text: \"Fiji\", value: \"FJ\" },\n { text: \"Finland\", value: \"FI\" },\n { text: \"France\", value: \"FR\" },\n { text: \"French Guiana\", value: \"GF\" },\n { text: \"French Polynesia\", value: \"PF\" },\n { text: \"French Southern Territories\", value: \"TF\" },\n { text: \"Gabon\", value: \"GA\" },\n { text: \"Gambia\", value: \"GM\" },\n { text: \"Georgia\", value: \"GE\" },\n { text: \"Germany\", value: \"DE\" },\n { text: \"Ghana\", value: \"GH\" },\n { text: \"Gibraltar\", value: \"GI\" },\n { text: \"Greece\", value: \"GR\" },\n { text: \"Greenland\", value: \"GL\" },\n { text: \"Grenada\", value: \"GD\" },\n { text: \"Guadeloupe\", value: \"GP\" },\n { text: \"Guam\", value: \"GU\" },\n { text: \"Guatemala\", value: \"GT\" },\n { text: \"Guernsey\", value: \"GG\" },\n { text: \"Guinea\", value: \"GN\" },\n { text: \"Guinea-Bissau\", value: \"GW\" },\n { text: \"Guyana\", value: \"GY\" },\n { text: \"Haiti\", value: \"HT\" },\n { text: \"Heard Island and Mcdonald Islands\", value: \"HM\" },\n { text: \"Holy See (Vatican City State)\", value: \"VA\" },\n { text: \"Honduras\", value: \"HN\" },\n { text: \"Hong Kong\", value: \"HK\" },\n { text: \"Hungary\", value: \"HU\" },\n { text: \"Iceland\", value: \"IS\" },\n { text: \"India\", value: \"IN\" },\n { text: \"Indonesia\", value: \"ID\" },\n { text: \"Iran, Islamic Republic Of\", value: \"IR\" },\n { text: \"Iraq\", value: \"IQ\" },\n { text: \"Ireland\", value: \"IE\" },\n { text: \"Isle of Man\", value: \"IM\" },\n { text: \"Israel\", value: \"IL\" },\n { text: \"Italy\", value: \"IT\" },\n { text: \"Jamaica\", value: \"JM\" },\n { text: \"Japan\", value: \"JP\" },\n { text: \"Jersey\", value: \"JE\" },\n { text: \"Jordan\", value: \"JO\" },\n { text: \"Kazakhstan\", value: \"KZ\" },\n { text: \"Kenya\", value: \"KE\" },\n { text: \"Kiribati\", value: \"KI\" },\n { text: \"Korea, Democratic People'S Republic of\", value: \"KP\" },\n { text: \"Korea, Republic of\", value: \"KR\" },\n { text: \"Kuwait\", value: \"KW\" },\n { text: \"Kyrgyzstan\", value: \"KG\" },\n { text: \"Lao People'S Democratic Republic\", value: \"LA\" },\n { text: \"Latvia\", value: \"LV\" },\n { text: \"Lebanon\", value: \"LB\" },\n { text: \"Lesotho\", value: \"LS\" },\n { text: \"Liberia\", value: \"LR\" },\n { text: \"Libyan Arab Jamahiriya\", value: \"LY\" },\n { text: \"Liechtenstein\", value: \"LI\" },\n { text: \"Lithuania\", value: \"LT\" },\n { text: \"Luxembourg\", value: \"LU\" },\n { text: \"Macao\", value: \"MO\" },\n { text: \"Macedonia, The Former Yugoslav Republic of\", value: \"MK\" },\n { text: \"Madagascar\", value: \"MG\" },\n { text: \"Malawi\", value: \"MW\" },\n { text: \"Malaysia\", value: \"MY\" },\n { text: \"Maldives\", value: \"MV\" },\n { text: \"Mali\", value: \"ML\" },\n { text: \"Malta\", value: \"MT\" },\n { text: \"Marshall Islands\", value: \"MH\" },\n { text: \"Martinique\", value: \"MQ\" },\n { text: \"Mauritania\", value: \"MR\" },\n { text: \"Mauritius\", value: \"MU\" },\n { text: \"Mayotte\", value: \"YT\" },\n { text: \"Mexico\", value: \"MX\" },\n { text: \"Micronesia, Federated States of\", value: \"FM\" },\n { text: \"Moldova, Republic of\", value: \"MD\" },\n { text: \"Monaco\", value: \"MC\" },\n { text: \"Mongolia\", value: \"MN\" },\n { text: \"Montserrat\", value: \"MS\" },\n { text: \"Morocco\", value: \"MA\" },\n { text: \"Mozambique\", value: \"MZ\" },\n { text: \"Myanmar\", value: \"MM\" },\n { text: \"Namibia\", value: \"NA\" },\n { text: \"Nauru\", value: \"NR\" },\n { text: \"Nepal\", value: \"NP\" },\n { text: \"Netherlands\", value: \"NL\" },\n { text: \"Netherlands Antilles\", value: \"AN\" },\n { text: \"New Caledonia\", value: \"NC\" },\n { text: \"New Zealand\", value: \"NZ\" },\n { text: \"Nicaragua\", value: \"NI\" },\n { text: \"Niger\", value: \"NE\" },\n { text: \"Nigeria\", value: \"NG\" },\n { text: \"Niue\", value: \"NU\" },\n { text: \"Norfolk Island\", value: \"NF\" },\n { text: \"Northern Mariana Islands\", value: \"MP\" },\n { text: \"Norway\", value: \"NO\" },\n { text: \"Oman\", value: \"OM\" },\n { text: \"Pakistan\", value: \"PK\" },\n { text: \"Palau\", value: \"PW\" },\n { text: \"Palestinian Territory, Occupied\", value: \"PS\" },\n { text: \"Panama\", value: \"PA\" },\n { text: \"Papua New Guinea\", value: \"PG\" },\n { text: \"Paraguay\", value: \"PY\" },\n { text: \"Peru\", value: \"PE\" },\n { text: \"Philippines\", value: \"PH\" },\n { text: \"Pitcairn\", value: \"PN\" },\n { text: \"Poland\", value: \"PL\" },\n { text: \"Portugal\", value: \"PT\" },\n { text: \"Puerto Rico\", value: \"PR\" },\n { text: \"Qatar\", value: \"QA\" },\n { text: \"Reunion\", value: \"RE\" },\n { text: \"Romania\", value: \"RO\" },\n { text: \"Russian Federation\", value: \"RU\" },\n { text: \"RWANDA\", value: \"RW\" },\n { text: \"Saint Helena\", value: \"SH\" },\n { text: \"Saint Kitts and Nevis\", value: \"KN\" },\n { text: \"Saint Lucia\", value: \"LC\" },\n { text: \"Saint Pierre and Miquelon\", value: \"PM\" },\n { text: \"Saint Vincent and the Grenadines\", value: \"VC\" },\n { text: \"Samoa\", value: \"WS\" },\n { text: \"San Marino\", value: \"SM\" },\n { text: \"Sao Tome and Principe\", value: \"ST\" },\n { text: \"Saudi Arabia\", value: \"SA\" },\n { text: \"Senegal\", value: \"SN\" },\n { text: \"Serbia and Montenegro\", value: \"CS\" },\n { text: \"Seychelles\", value: \"SC\" },\n { text: \"Sierra Leone\", value: \"SL\" },\n { text: \"Singapore\", value: \"SG\" },\n { text: \"Slovakia\", value: \"SK\" },\n { text: \"Slovenia\", value: \"SI\" },\n { text: \"Solomon Islands\", value: \"SB\" },\n { text: \"Somalia\", value: \"SO\" },\n { text: \"South Africa\", value: \"ZA\" },\n { text: \"South Georgia and the South Sandwich Islands\", value: \"GS\" },\n { text: \"Spain\", value: \"ES\" },\n { text: \"Sri Lanka\", value: \"LK\" },\n { text: \"Sudan\", value: \"SD\" },\n { text: \"Suriname\", value: \"SR\" },\n { text: \"Svalbard and Jan Mayen\", value: \"SJ\" },\n { text: \"Swaziland\", value: \"SZ\" },\n { text: \"Sweden\", value: \"SE\" },\n { text: \"Switzerland\", value: \"CH\" },\n { text: \"Syrian Arab Republic\", value: \"SY\" },\n { text: \"Taiwan, Province of China\", value: \"TW\" },\n { text: \"Tajikistan\", value: \"TJ\" },\n { text: \"Tanzania, United Republic of\", value: \"TZ\" },\n { text: \"Thailand\", value: \"TH\" },\n { text: \"Timor-Leste\", value: \"TL\" },\n { text: \"Togo\", value: \"TG\" },\n { text: \"Tokelau\", value: \"TK\" },\n { text: \"Tonga\", value: \"TO\" },\n { text: \"Trinidad and Tobago\", value: \"TT\" },\n { text: \"Tunisia\", value: \"TN\" },\n { text: \"Turkey\", value: \"TR\" },\n { text: \"Turkmenistan\", value: \"TM\" },\n { text: \"Turks and Caicos Islands\", value: \"TC\" },\n { text: \"Tuvalu\", value: \"TV\" },\n { text: \"Uganda\", value: \"UG\" },\n { text: \"Ukraine\", value: \"UA\" },\n { text: \"United Arab Emirates\", value: \"AE\" },\n { text: \"United Kingdom\", value: \"GB\" },\n { text: \"United States Minor Outlying Islands\", value: \"UM\" },\n { text: \"Uruguay\", value: \"UY\" },\n { text: \"Uzbekistan\", value: \"UZ\" },\n { text: \"Vanuatu\", value: \"VU\" },\n { text: \"Venezuela\", value: \"VE\" },\n { text: \"Viet Nam\", value: \"VN\" },\n { text: \"Virgin Islands, British\", value: \"VG\" },\n { text: \"Virgin Islands, U.S.\", value: \"VI\" },\n { text: \"Wallis and Futuna\", value: \"WF\" },\n { text: \"Western Sahara\", value: \"EH\" },\n { text: \"Yemen\", value: \"YE\" },\n { text: \"Zambia\", value: \"ZM\" },\n { text: \"Zimbabwe\", value: \"ZW\" }\n];\n","import React, { useEffect } from \"react\";\nimport NProgress from \"nprogress\";\nimport { CircularProgress, makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles(theme => ({\n root: {\n alignItems: \"center\",\n backgroundColor: theme.palette.background.default,\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n justifyContent: \"center\",\n minHeight: \"100%\",\n padding: theme.spacing(3)\n }\n}));\n\nconst LoadingScreen = () => {\n const classes = useStyles();\n\n useEffect(() => {\n NProgress.start();\n\n return () => {\n NProgress.done();\n };\n }, []);\n\n return (\n
\n \n
\n );\n};\n\nexport default LoadingScreen;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n fields: [],\n isEditDialogOpen: false,\n isDeleteDialogOpen: false,\n selectedFieldIds: null\n};\n\nconst slice = createSlice({\n name: \"customFields\",\n initialState,\n reducers: {\n getFields(state, action) {\n const fields = action.payload;\n\n state.fields = fields;\n },\n createField(state, action) {\n const field = action.payload;\n\n state.fields = [...state.fields, field];\n },\n selectFieldForEdit(state, action) {\n const { fieldId } = action.payload;\n\n state.isEditDialogOpen = true;\n state.selectedFieldIds = fieldId;\n },\n selectFieldsForDelete(state, action) {\n const {fieldIds = null} = action.payload;\n\n state.isDeleteDialogOpen = true;\n state.selectedFieldIds = fieldIds;\n },\n updateField(state, action) {\n const field = action.payload;\n\n state.fields = _.map(state.fields, _field => {\n if (_field.id === field.id) {\n return field;\n }\n\n return _field;\n });\n },\n deleteFields(state, action) {\n const { fieldIds } = action.payload;\n\n state.fields = _.reject(state.fields, field =>\n fieldIds.includes(field.id)\n );\n },\n openEditDialog(state) {\n state.isEditDialogOpen = true;\n },\n closeDialog(state) {\n state.isEditDialogOpen = false;\n state.isDeleteDialogOpen = false;\n state.selectedFieldIds = null;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getFields = () => async dispatch => {\n const response = await axios.get(\"/api/admin/customFields\");\n\n dispatch(slice.actions.getFields(response.data));\n};\n\nexport const createField = data => async dispatch => {\n const response = await axios.post(\"/api/admin/customFields/new\", data);\n\n dispatch(slice.actions.createField(response.data));\n};\n\nexport const selectFieldForEdit = fieldId => async dispatch => {\n dispatch(slice.actions.selectFieldForEdit({ fieldId }));\n};\n\nexport const selectFieldsForDelete = fieldIds => async dispatch => {\n dispatch(slice.actions.selectFieldsForDelete({ fieldIds }));\n};\n\nexport const updateField = (fieldId, update) => async dispatch => {\n const response = await axios.post(\"/api/admin/customFields/update\", {\n fieldId,\n update\n });\n\n dispatch(slice.actions.updateField(response.data));\n};\n\nexport const deleteFields = fieldIds => async dispatch => {\n await axios.post(\"/api/admin/customFields/remove\", {\n fieldIds\n });\n\n dispatch(slice.actions.deleteFields({ fieldIds }));\n};\n\nexport const openEditDialog = () => dispatch => {\n dispatch(slice.actions.openEditDialog());\n};\n\nexport const closeDialog = () => dispatch => {\n dispatch(slice.actions.closeDialog());\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\n\nconst initialState = {\n defaultCountry: null\n};\n\nconst slice = createSlice({\n name: \"savedDefaults\",\n initialState,\n reducers: {\n updateDefaults(state, action) {\n \n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getDefaults = () => async dispatch => {\n let defaults = {};\n\n try {\n defaults = JSON.parse(localStorage.getItem(\"savedDefaults\"));\n } finally {\n dispatch(slice.actions.updateDefaults({ defaults }));\n }\n};\n\nexport const setDefaults = defaults => async dispatch => {\n localStorage.setItem(\"savedDefaults\", JSON.stringify(defaults));\n\n dispatch(slice.actions.updateDefaults({ defaults }));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\nimport moment from \"moment\";\n\nconst initialState = {\n usageDetails: [],\n chartData: null,\n calendarData: null,\n totalLicenses: 0,\n startDate: moment().utc(),\n filters: {\n product: \"all\",\n range: \"currentMonth\",\n customRange: {\n start: moment()\n .subtract(1, \"months\")\n .toDate()\n .toString(),\n end: moment()\n .toDate()\n .toString(),\n excludeWeekends: false\n },\n metric: \"licensesUsed\"\n }\n};\n\nconst slice = createSlice({\n name: \"usageHeatMap\",\n initialState,\n reducers: {\n getChartData(state, action) {\n const { chartData, calendarData, totalLicenses } = action.payload;\n state.chartData = chartData;\n state.calendarData = calendarData;\n state.totalLicenses = totalLicenses;\n const startDate =\n !calendarData ||\n !calendarData[0] ||\n !calendarData[0].Data ||\n !calendarData[0].Data[0]\n ? moment().utc()\n : moment(calendarData[0].Data[0]).utc();\n window.dispatchEvent(\n new CustomEvent(\"heatMapChartUpdated\", {\n detail: { date: startDate }\n })\n );\n },\n getUsageDetails(state, action) {\n const usageDetails = action.payload;\n state.usageDetails = usageDetails;\n },\n getFilters(state, action) {\n const { filters } = action.payload;\n\n if (_.isEmpty(filters)) {\n return;\n }\n\n state.filters = filters;\n },\n setFilters(state, action) {\n const { filters } = action.payload;\n\n state.filters = filters;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getChartData = filters => async dispatch => {\n const response = await axios.post(\"/api/admin/usage/heatMap\", {\n filters\n });\n\n dispatch(slice.actions.getChartData(response.data));\n};\n\nexport const getUsageDetails = filters => async dispatch => {\n const response = await axios.post(\"/api/admin/usage/details\", {\n filters\n });\n\n dispatch(slice.actions.getUsageDetails(response.data));\n};\n\n// export const getFilters = () => async dispatch => {\n// let filters = {};\n\n// try {\n// //filters = JSON.parse(localStorage.getItem(\"usageHeatMapFilters\"));\n// } finally {\n// dispatch(slice.actions.getFilters({ filters }));\n// }\n// };\n\nexport const setFilters = filters => async dispatch => { \n //localStorage.setItem(\"usageHeatMapFilters\", JSON.stringify(filters));\n\n dispatch(slice.actions.setFilters({ filters }));\n};\n\nexport default slice;\n","import _ from \"lodash\";\nimport axios from \"src/utils/axios\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n tickets: [],\n details: null\n};\n\nconst slice = createSlice({\n name: \"tickets\",\n initialState,\n reducers: {\n getAllTickets(state, action) {\n const tickets = action.payload;\n\n state.tickets = tickets;\n },\n getTicketDetails(state, action) {\n const details = action.payload;\n\n state.details = details;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getAllTickets = (closed) => async dispatch => {\n const response = await axios.get(\"/api/tickets/all?closed=\"+ closed);\n\n dispatch(slice.actions.getAllTickets(response.data));\n};\n\nexport const getTicketDetails = (ticketId) => async dispatch => {\n const response = await axios.get(\"/api/tickets/details?ticketId=\"+ ticketId);\n\n dispatch(slice.actions.getTicketDetails(response.data));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n licenseOverview: []\n};\n\nconst slice = createSlice({\n name: \"licenseOverview\",\n initialState,\n reducers: {\n getLicenseOverview(state, action) {\n const licenseOverview = action.payload;\n state.licenseOverview = licenseOverview;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getLicenseOverview = () => async dispatch => {\n const response = await axios.get(\"/api/licenses/overview\");\n\n dispatch(slice.actions.getLicenseOverview(response.data));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n activeEmailAlerts: null,\n activeSmsAlerts: null,\n emailAddresses: null,\n phoneNumbers: null\n};\n\nconst slice = createSlice({\n name: \"licenseAlerts\",\n initialState,\n reducers: {\n getActiveAlerts(state, action) {\n const { activeEmailAlerts, activeSmsAlerts } = action.payload;\n\n state.activeEmailAlerts = activeEmailAlerts;\n state.activeSmsAlerts = activeSmsAlerts;\n },\n setActiveAlerts(state, action) {\n const { activeEmailAlerts, activeSmsAlerts } = action.payload;\n\n state.activeEmailAlerts = activeEmailAlerts;\n state.activeSmsAlerts = activeSmsAlerts;\n },\n getContactDetails(state, action) {\n const { emailAddresses, phoneNumbers } = action.payload;\n\n state.emailAddresses = emailAddresses;\n state.phoneNumbers = phoneNumbers;\n },\n setContactDetails(state, action) {\n const { emailAddresses, phoneNumbers } = action.payload;\n\n state.emailAddresses = emailAddresses;\n state.phoneNumbers = phoneNumbers;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getActiveAlerts = () => async dispatch => {\n const response = await axios.get(\"/api/licenseAlerts/activeAlerts\");\n\n dispatch(slice.actions.getActiveAlerts(response.data));\n};\n\nexport const setActiveAlerts = (\n activeEmailAlerts,\n activeSmsAlerts\n) => async dispatch => {\n const response = await axios.post(\"/api/licenseAlerts/activeAlerts/set\", {\n activeEmailAlerts,\n activeSmsAlerts\n });\n\n dispatch(slice.actions.setActiveAlerts(response.data));\n};\n\nexport const getContactDetails = () => async dispatch => {\n const response = await axios.get(\"/api/licenseAlerts/contactDetails\");\n\n dispatch(slice.actions.getContactDetails(response.data));\n};\n\nexport const setContactDetails = (\n emailAddresses,\n phoneNumbers\n) => async dispatch => {\n const response = await axios.post(\"/api/licenseAlerts/contactDetails/set\", {\n emailAddresses,\n phoneNumbers\n });\n\n dispatch(slice.actions.setContactDetails(response.data));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n licenseStatuses: []\n};\n\nconst slice = createSlice({\n name: \"licenseStatuses\",\n initialState,\n reducers: {\n getLicenseStatuses(state, action) {\n const licenseStatuses = action.payload;\n \n state.licenseStatuses = licenseStatuses;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getLicenseStatuses = () => async dispatch => {\n const response = await axios.get(\"/api/licenses/status\");\n\n dispatch(slice.actions.getLicenseStatuses(response.data));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n serviceStatus: {\n operational: true,\n message: \"\"\n }\n};\n\nconst slice = createSlice({\n name: \"serviceStatus\",\n initialState,\n reducers: {\n getServiceStatus(state, action) {\n const serviceStatus = action.payload;\n \n state.serviceStatus = serviceStatus;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getServiceStatus = () => async dispatch => {\n const response = await axios.get(\"/api/serviceStatus\");\n\n dispatch(slice.actions.getServiceStatus(response.data));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\nimport moment from \"moment\";\n\nconst epoch = {\n year: 1970,\n month: 0,\n date: 1\n};\n\nconst initialState = {\n chartData: null,\n totalLicenses: 0,\n filters: {\n product: \"all\",\n range: \"lastWeek\",\n customRange: {\n start: moment()\n .subtract(1, \"weeks\")\n .toDate()\n .toString(),\n end: moment()\n .toDate()\n .toString(),\n excludeWeekends: false\n },\n metric: \"licensesUsed\",\n timeSegmentation: \"hourly\",\n workHoursOnly: false,\n workHours: {\n start: moment(\"09:00 AM\", \"hh:mm a\")\n .set(epoch)\n .toDate()\n .toString(),\n end: moment(\"05:30 PM\", \"hh:mm a\")\n .set(epoch)\n .toDate()\n .toString()\n },\n qos: false,\n qosLevel: 90\n }\n};\n\nconst slice = createSlice({\n name: \"usageChart\",\n initialState,\n reducers: {\n getChartData(state, action) {\n const { chartData, totalLicenses } = action.payload;\n\n state.chartData = chartData;\n state.totalLicenses = totalLicenses;\n },\n getFilters(state, action) {\n const { filters } = action.payload;\n\n if (_.isEmpty(filters)) {\n return;\n }\n\n state.filters = filters;\n },\n setFilters(state, action) {\n const { filters } = action.payload;\n\n state.filters = filters;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getChartData = filters => async dispatch => {\n const response = await axios.post(\"/api/admin/usage/chart\", {\n filters\n });\n\n dispatch(slice.actions.getChartData(response.data));\n};\n\nexport const setFilters = filters => async dispatch => {\n dispatch(slice.actions.setFilters({ filters }));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\nconst initialState={\n user:null\n};\n\nconst slice = createSlice({\n name:\"updateProfile\",\n initialState,\n reducers:{\n UpdateProfileDetails(state,action) {\n const updatedUser = action.payload;\n state.user=updatedUser;\n }\n }\n \n});\nexport const reducer = slice.reducer;\n\nexport const UpdateProfileDetails = (userId,updatedProfileInfo)=>async dispatch=>{\n \n const response = await axios.post(\"/api/account/updateUserProfile\",{\n userId,\n updatedProfileInfo\n });\n dispatch(slice.actions.UpdateProfileDetails(response.data));\n};\n\nexport default slice;","import axios from \"src/utils/axios\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n allProducts: []\n};\n\nconst slice = createSlice({\n name: \"products\",\n initialState,\n reducers: {\n getAllProducts(state, action) {\n const products = action.payload;\n\n state.allProducts = products;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getAllProducts = () => async dispatch => {\n const response = await axios.get(\"/api/products/all\");\n\n dispatch(slice.actions.getAllProducts(response.data));\n};\n\nexport default slice;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport axios from \"src/utils/axios\";\n\nconst initialState = {\n productAccess: [],\n productLicenses: [],\n isEditDialogOpen: false,\n selectedUserIds: [],\n selectedProductIds: [],\n assignedProducts: []\n};\n\nconst slice = createSlice({\n name: \"productAccess\",\n initialState,\n reducers: {\n getCompanyProductAccess(state, action) {\n const productAccess = action.payload;\n state.productAccess = productAccess;\n },\n getCompanyProductLicenses(state, action) {\n const productLicenses = action.payload;\n state.productLicenses = productLicenses;\n },\n selectUserToEditProductAccess(state, action) {\n const { userId, assignedProducts } = action.payload;\n state.assignedProducts = assignedProducts;\n state.selectedUserIds = [userId];\n state.isEditDialogOpen = true;\n },\n selectUsersToEditProductAccess(state, action) {\n const { userIds, assignedProducts } = action.payload;\n\n state.assignedProducts = assignedProducts;\n state.selectedUserIds = userIds;\n },\n unselectUserId(state, action) {\n const { userId, productVariantIds } = action.payload;\n state.selectedUserIds = state.selectedUserIds.filter(u => u !== userId);\n },\n clearUserSelection(state, action) {\n const { userId, productVariantIds } = action.payload;\n state.selectedUserIds = [];\n state.assignedProducts = [];\n },\n selectProductId(state, action) {\n const { productId } = action.payload;\n state.selectedProductIds = state.selectedProductIds\n .filter(p => p !== productId)\n .concat([productId]);\n },\n unselectProductId(state, action) {\n const { productId } = action.payload;\n state.selectedProductIds = state.selectedProductIds.filter(\n p => p !== productId\n );\n },\n selectVariantId(state, action) {\n const assignedProduct = action.payload; \n state.assignedProducts = state.assignedProducts\n .filter(p => p.productVariantId !== assignedProduct.productVariantId)\n .concat(assignedProduct); \n },\n unselectVariantId(state, action) {\n const assignedProduct = action.payload;\n state.assignedProducts = state.assignedProducts\n .filter(p => p.productVariantId !== assignedProduct.productVariantId);\n },\n openEditDialog(state) {\n state.isEditDialogOpen = true;\n },\n closeEditDialog(state) {\n state.isEditDialogOpen = false;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getCompanyProductAccess = () => async dispatch => {\n const response = await axios.get(\"/api/admin/productAccess\");\n\n dispatch(slice.actions.getCompanyProductAccess(response.data));\n};\n\nexport const getCompanyProductLicenses = () => async dispatch => {\n const response = await axios.get(\"/api/admin/productAccess/manageProducts\");\n\n dispatch(slice.actions.getCompanyProductLicenses(response.data));\n};\n\nexport const selectUserToEditProductAccess = (\n userId,\n assignedProducts\n) => dispatch => {\n dispatch(\n slice.actions.selectUserToEditProductAccess({\n userId,\n assignedProducts\n })\n );\n};\n\nexport const selectUsersToEditProductAccess = (\n userIds,\n assignedProducts\n) => dispatch => {\n dispatch(\n slice.actions.selectUsersToEditProductAccess({\n userIds,\n assignedProducts\n })\n );\n};\n\nexport const unselectUserId = (userId, productVariantIds) => dispatch => {\n dispatch(slice.actions.unselectUserId({ userId, productVariantIds }));\n};\n\nexport const clearUserSelection = (userId, productVariantIds) => dispatch => {\n dispatch(slice.actions.clearUserSelection({ userId, productVariantIds }));\n};\n\nexport const selectProductId = productId => dispatch => {\n dispatch(slice.actions.selectProductId({ productId }));\n};\n\nexport const unselectProductId = productId => dispatch => {\n dispatch(slice.actions.unselectProductId({ productId }));\n};\n\nexport const selectVariantId = assginedProduct => dispatch => { \n dispatch(slice.actions.selectVariantId(assginedProduct)); \n};\n\nexport const unselectVariantId = assginedProduct => dispatch => {\n dispatch(slice.actions.unselectVariantId(assginedProduct));\n};\n\nexport const updateUserProductAccess = (\n userIds,\n assignedProducts\n) => async dispatch => {\n const response = await axios.post(\"/api/admin/productAccess/update\", {\n userIds,\n assignedProducts\n });\n dispatch(slice.actions.closeEditDialog());\n};\n\nexport const openEditDialog = () => dispatch => {\n dispatch(slice.actions.openEditDialog());\n};\n\nexport const closeEditDialog = () => dispatch => {\n dispatch(slice.actions.closeEditDialog());\n};\n\nexport default slice;\n","// src/AppInsights.js\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\nimport { createBrowserHistory } from 'history';\n\nconst browserHistory = createBrowserHistory();\nconst reactPlugin = new ReactPlugin();\nconst appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: '1ff1adec-9ed7-4942-8013-480a838a4ff6', // instrumentation key\n extensions: [reactPlugin],\n extensionConfig: {\n [reactPlugin.identifier]: { history: browserHistory }\n },\n disableFetchTracking: false,\n enableAutoRouteTracking: true,\n enableRequestHeaderTracking: true,\n enableResponseHeaderTracking: true,\n enablePerfMgr: true, \n enableUnhandledPromiseRejectionTracking: true\n }\n});\n\nappInsights.loadAppInsights();\n\nexport { reactPlugin, appInsights };\n","import { useContext } from \"react\";\nimport AuthContext from \"src/contexts/JWTAuthContext\";\n\nconst useAuth = () => useContext(AuthContext);\n\nexport default useAuth;\n","import { combineReducers } from \"@reduxjs/toolkit\";\nimport { reducer as customFieldsReducer } from \"src/slices/admin/customFields\";\nimport { reducer as groupsReducer } from \"src/slices/admin/groups\";\nimport { reducer as notificationReducer } from \"src/slices/notification\";\nimport { reducer as licenseOverviewReducer } from \"src/slices/licenseOverview\";\nimport { reducer as licenseAlertsReducer } from \"src/slices/licenseAlerts\";\nimport { reducer as licenseStatusesReducer } from \"src/slices/licenseStatuses\";\nimport { reducer as licensesReducer } from \"src/slices/licenses\";\nimport { reducer as savedDefaultsReducer } from \"src/slices/savedDefaults\";\nimport { reducer as serviceStatusReducer } from \"src/slices/serviceStatus\";\nimport { reducer as usageChartReducer } from \"src/slices/usageChart\";\nimport { reducer as usageHeatMapReducer } from \"src/slices/usageHeatMap\";\nimport { reducer as usersReducer } from \"src/slices/admin/users\";\nimport { reducer as welcomeEmailsReducer } from \"src/slices/admin/welcomeEmails\";\nimport { reducer as updateProfileReducer } from \"src/slices/UpdateProfile\";\nimport { reducer as productsReducer } from \"src/slices/products\";\nimport { reducer as companySettingsReducer } from \"src/slices/admin/companySettings\";\nimport { reducer as productAccessReducer } from \"src/slices/admin/license/productAccess\";\nimport { reducer as userProductAccessReducer } from \"src/slices/userProductAccess\";\nimport { reducer as ticketsReducer } from \"src/slices/tickets\";\n\nconst appReducer = combineReducers({\n customFields: customFieldsReducer,\n groups: groupsReducer,\n notifications: notificationReducer,\n licenseOverview: licenseOverviewReducer,\n licenseAlerts: licenseAlertsReducer,\n licenseStatuses: licenseStatusesReducer,\n licenses: licensesReducer,\n savedDefaults: savedDefaultsReducer,\n serviceStatus: serviceStatusReducer,\n usageChart: usageChartReducer,\n usageHeatMap: usageHeatMapReducer,\n users: usersReducer,\n welcomeEmails: welcomeEmailsReducer,\n updateProfile:updateProfileReducer,\n products: productsReducer,\n companySettings: companySettingsReducer,\n productAccess: productAccessReducer,\n userProductAccess: userProductAccessReducer,\n tickets: ticketsReducer\n});\n\nconst rootReducer = (state, action) => {\n if (action.type === \"RESET\") {\n return appReducer(undefined, action);\n }\n\n return appReducer(state, action);\n};\n\nexport default rootReducer;\n","import {\n useDispatch as useReduxDispatch,\n useSelector as useReduxSelector\n} from \"react-redux\";\nimport { configureStore } from \"@reduxjs/toolkit\";\nimport { ENABLE_REDUX_DEV_TOOLS } from \"src/constants\";\nimport rootReducer from \"./rootReducer\";\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({\n serializableCheck: false,\n }),\n devTools: ENABLE_REDUX_DEV_TOOLS\n});\nstore.subscribe(() => store.getState());\n\nexport const useSelector = useReduxSelector;\n\nexport const useDispatch = () => useReduxDispatch();\n\nexport default store;\n"],"sourceRoot":""}