{"version":3,"sources":["store/role/editor/actions.ts","components/base/modals/DismissableModal.tsx","store/facility/dashboard/actions.ts","components/pages/user/UserTableView.tsx","utils/typeCheckers.ts","components/template/authentication/oidcConfig.ts","models/Privileges.ts","components/pages/user/UserEditor.tsx","components/pages/roles/RoleEditor.tsx","components/pages/facility/editor/visit-dashboard-row/Styled.ts","components/pages/organization/OrganizationTableView.tsx","components/pages/feedback/FeedbackList.tsx","components/pages/feedback/FeedbackTableView.tsx","components/pages/feedback/FeedbackDetail.tsx","components/pages/feedback/FeedbackDetailView.tsx","components/pages/cameraDashboard/toolbar/AccessLevelRow.tsx","components/pages/cameraDetails/CloudStreamTarget/CloudStreamTarget.tsx","constants.ts","components/pages/messages/MessageList.tsx","components/pages/messages/MessageTableView.tsx","components/pages/roles/RoleTableView.tsx","components/pages/facility/list/FacilityList.tsx","components/pages/facility/list/FacilityTableView.tsx","components/pages/facility/editor/visit-dashboard-row/VisitDashboardRow.tsx","components/base/modals/ErrorModal.tsx","store/user/editor/types.ts","utils/AppConstants.ts","components/base/layout/Content.tsx","store/message/dashboard/types.ts","store/facility/dashboard/types.ts","store/organization/dashboard/types.ts","store/role/dashboard/types.ts","store/user/dashboard/types.ts","reportWebVitals.ts","serviceWorkerRegistration.js","web.config","store/message/dashboard/reducers.ts","store/message/editor/types.ts","store/message/editor/reducers.ts","store/facility/dashboard/reducers.ts","store/facility/editor/types.ts","store/facility/editor/reducers.ts","store/feedback/dashboard/reducers.ts","store/feedback/detail/reducers.ts","store/datasource/types.ts","store/datasource/reducers.ts","store/profile/types.ts","store/profile/reducers.ts","store/organization/dashboard/reducers.ts","store/organization/editor/types.ts","store/organization/editor/reducers.ts","store/role/dashboard/reducers.ts","store/role/editor/reducers.ts","store/user/dashboard/reducers.ts","store/user/editor/reducers.ts","store/synchronization/types.ts","store/synchronization/reducers.ts","store/cameraDevice/dashboard/types/streamPreviewsTypes.ts","utils/ReduxData.ts","store/cameraDevice/dashboard/reducers/streamPreviewsReducer.ts","store/cameraDevice/dashboard/types/streamStatusTypes.ts","store/cameraDevice/dashboard/reducers/streamStatusReducer.ts","store/cameraDevice/dashboard/reducers/toolbarReducer.ts","store/cameraDevice/dashboard/reducers/pageStateReducer.ts","store/cameraDevice/details/types/types.ts","store/cameraDevice/details/reducers/reducers.ts","store/index.ts","components/template/helpers.ts","components/template/Styled.ts","store/context/SidebarContext.ts","components/template/useServiceWorker.ts","components/template/useRefresher.ts","components/base/layout/header/Styled.ts","store/profile/actions.ts","components/base/layout/AuthenticationButton.tsx","images/algo-logo.png","images/algo-logo-ani.gif","images/index.ts","images/algo-nav/icon-toggle-sidebar.svg","components/base/layout/header/Header.tsx","components/pages/Welcome.tsx","components/styled/Globals.ts","components/pages/login-cycle/RedirectContent.tsx","components/pages/login-cycle/Redirect.tsx","components/pages/NotFound.tsx","components/pages/login-cycle/AccessDenied.tsx","components/pages/user/UserList.tsx","store/organization/editor/actions.ts","components/pages/organization/OrganizationEditor.tsx","components/pages/organization/OrganizationList.tsx","components/pages/cameraDashboard/previews/NoCameras.tsx","store/cameraDevice/dashboard/actions/streamStatusActions.ts","components/pages/cameraDashboard/previews/CameraCard.tsx","components/pages/cameraDashboard/previews/CameraPreview.tsx","store/cameraDevice/dashboard/actions/streamPreviewsActions.ts","components/pages/cameraDashboard/previews/CameraPreviews.tsx","components/pages/cameraDashboard/toolbar/SelectionRow.tsx","components/pages/cameraDashboard/toolbar/CameraToolbar.tsx","components/pages/cameraDashboard/Modal.tsx","components/pages/cameraDashboard/ToTopButton.tsx","components/pages/cameraDashboard/CameraDashboard.tsx","components/pages/cameraDetails/CameraPreview.tsx","components/pages/cameraDetails/LogSummary.tsx","store/cameraDevice/details/actions/loadActions.ts","components/pages/cameraDetails/NavButton.tsx","utils/hooks/usePrevious.ts","components/pages/cameraDetails/StreamLogMessage.tsx","components/pages/cameraDetails/PagedTab.tsx","utils/data/nuon.ts","components/pages/cameraDetails/StreamLogNavigator.tsx","components/pages/cameraDetails/CameraDeviceDetails.tsx","store/cameraDevice/details/actions/updateActions.ts","components/pages/cameraDetails/CameraDeviceDetailsWrapper.tsx","store/message/editor/actions.ts","components/pages/messages/MessageEditor.tsx","components/pages/roles/RoleList.tsx","store/facility/editor/actions.ts","components/pages/facility/editor/Styled.ts","components/pages/facility/editor/editor-title-row/Styled.ts","components/pages/facility/editor/editor-title-row/EditorTitleRow.tsx","components/pages/facility/editor/property-forms/GeneralInformation.tsx","components/pages/facility/editor/dynamic-select-and-input/Styled.ts","components/pages/facility/editor/dynamic-select-and-input/DynamicSelectAndInput.tsx","components/pages/facility/editor/property-forms/SelectAndInputForm.tsx","components/pages/facility/editor/dynamic-edit-delete/DynamicEditDelete.tsx","components/pages/facility/editor/property-forms/StringAndModalForm.tsx","components/modal/Styled.ts","components/modal/FullPageModal.tsx","components/pages/facility/editor/edit-route/hooks.ts","components/pages/facility/editor/edit-route/Styled.ts","components/pages/facility/editor/edit-route/EditRoute.tsx","components/pages/facility/editor/edit-location/library.ts","components/pages/facility/hooks/useGetData.ts","components/pages/facility/editor/edit-location/Styled.ts","images/map-pins/pin-region-96.png","components/pages/facility/editor/edit-location/constants.ts","components/pages/facility/editor/edit-location/EditLocation.tsx","components/pages/facility/editor/edit-map-settings/library.ts","components/pages/facility/editor/edit-map-settings/Styled.ts","components/pages/facility/editor/edit-map-settings/constants.ts","components/pages/facility/editor/edit-map-settings/EditMapSettings.tsx","components/pages/facility/constants.ts","components/pages/facility/editor/FacilityEditor.tsx","store/synchronization/actions.ts","components/pages/synchronization/Synchronization.tsx","components/template/authentication/silent-renew/SilentRenew.tsx","components/template/authentication/session-ended/SessionEnded.tsx","components/template/authentication/session-ended/hooks.ts","store/datasource/actions.ts","images/algo-nav/icon-sync.svg","images/algo-nav/icon-profile.svg","images/algo-nav/icon-group.svg","images/algo-nav/icon-profile-tag.svg","images/algo-nav/icon-alert-triangle.svg","images/algo-nav/icon-camera.svg","images/algo-nav/icon-house.svg","images/algo-nav/icon-mail.svg","components/template/constants.tsx","components/template/Template.tsx","App.tsx","index.tsx","store/feedback/dashboard/types.ts","store/feedback/detail/types.ts","store/cameraDevice/dashboard/types/pageStateTypes.ts","utils/reactSelectStyles.ts","store/role/editor/types.ts","store/cameraDevice/dashboard/actions/pageStateActions.ts","components/pages/Loading.tsx","store/api-version-constants.ts","components/base/modals/ConfirmationModal.tsx","components/base/layout/GenericTableView.tsx","store/cameraDevice/dashboard/types/toolbarTypes.ts","store/user/editor/actions.ts","store/user/dashboard/actions.ts","store/organization/dashboard/actions.ts","store/message/dashboard/actions.ts","store/role/dashboard/actions.ts","store/cameraDevice/dashboard/actions/toolbarActions.ts","store/feedback/dashboard/actions.ts","store/feedback/detail/actions.ts"],"names":["apiUrlOrganization","concat","__API_URL__","CUR_API_VERSION","CUR_API_ENDPOINTS","organizations","apiUrlPrivilege","privileges","apiUrlRole","roles","loadRoleSuccess","role","privilegeList","organizationList","type","TYPES","payload","loadRoleFailure","error","initializeRoleEditor","id","arguments","length","undefined","ROLE_DEFAULT_ID","async","dispatch","getState","roleEditor","initializing","getAccessToken","then","token","orgManager","OrganizationNetworkManager","privManager","PrivilegeNetworkManager","roleManager","RoleNetworkManager","setAccessToken","Promise","all","getAll","response","AARole","data","reject","Error","catch","getById","failure","saveRoleFailure","saveRole","savingRole","manager","save","saveRoleSuccess","err","clearRoleEditorError","uninitializeRoleEditor","DismissableModal","React","constructor","props","super","modalRef","dismiss","event","dismissCallback","this","preventDefault","$","current","modal","state","instanceId","Math","random","componentDidMount","render","title","message","_jsx","className","ref","tabIndex","children","_jsxs","onClick","apiUrlFacility","facilities","initializeFacilityDashboardFailure","initializeFacilityDashboard","facilityDashboard","loadingFacilities","FacilityNetworkManager","lastInitResponse","initializeFacilityDashboardSuccess","searchFacilitiesFailure","searchFacilities","name","console","log","lastSearchResponse","searchFacilitiesSuccess","deleteFacilityFailure","removeFacility","deletingFacility","delete","getAllResponse","deleteFacilitySuccess","uninitializeFacilityDashboard","UserTableView","clearFilter","search","DEFAULT_QUERY","organizationId","setState","query","applyFilter","key","searchBoxChange","organizationChange","newUser","tooltip","history","push","viewUser","sub","profile","userProfile","hasPrivilege","CREATE_USER","showDeleteModal","showDeleteConfirmModal","confirmDelete","deleteUser","DEFAULT_USER_SUB","dismissDelete","dashboard","deletingUser","remove","DEFAULT_ORGANIZATION_ID","initialize","userList","componentDidUpdate","prevProps","prevState","snapshot","warn","showSearch","actionCallback","pageSize","tableSettings","tableClassName","actionButtonClass","actionButtonGlyphClass","columnDefinitions","propertyName","isKey","displayName","headerColumnClass","selectFilterPlaceholder","selectFilterItems","value","label","map","org","emptyTableMessage","showPageSizeSelector","DEFAULT_PAGE_SIZE","newItemDisabled","actionDisabled","DELETE_USER","rowClickDisabled","style","height","GenericTableView","settings","items","users","rowClickCallback","newItemCallback","searchBoxChangeCallback","selectorChangeCallback","clearFilterCallback","applyFilterCallback","isLoading","loadingUsers","isProcessingAction","ConfirmationModal","confirmCallback","connect","userDashboard","bindActionCreators","initializeUserDashboard","loadUsers","removeUser","uninitialize","uninitializeUserDashboard","withRouter","isMomentEventValue","obj","isUtc","oidcConfig","client_id","redirect_uri","__CLIENT_URL__","response_type","scope","authority","__AUTHORITY_URL__","post_logout_redirect_uri","silent_redirect_uri","automaticSilentRenew","filterProtocolClaims","loadUserInfo","onSigninCallback","user","path","window","location","replace","userStore","WebStorageStateStore","store","localStorage","userManager","UserManager","resolve","getUser","access_token","reason","ALLOW_CAMERA_BULK_UPDATE","EDIT_CAMERA","VIEW_USER","VIEW_ORGANIZATION","CREATE_ORGANIZATION","DELETE_ORGANIZATION","VIEW_ROLE","CREATE_ROLE","DELETE_ROLE","VIEW_MESSAGE","CREATE_MESSAGE","DELETE_MESSAGE","CREATE_FACILITY","UPDATE_FACILITY","DELETE_FACILITY","FACILITY_PRIVILEGES","VIEW_FEEDBACK","EMAIL_FEEDBACK_RESPONSE","VIEW_SERVICE_STATUS","UserEditor","validator","setFormItemValue","property","currentValue","currentTarget","userForm","USER_CONS","givenName","middleName","familyName","userName","password","passwordConfirm","validate","editor","complexityRequirements","email","isValid","isMinLength","isMinDigit","isMinLower","isMinUpper","isMinSpecial","isMinCharacterType","setReactSelectFormItemValue","orgId","organizationValue","selectedOrgObj","find","selectedOrgRoles","roleId","rId","selectedOrgOption","selectedRoleOption","roleValues","item","statusId","statusValue","status","selectedStatusOption","saveUserForm","resetPasswordForm","resetPassword","sendResetEmail","sendingResetPasswordEmail","sendResetPasswordEmail","resetPasswordModalDismiss","clearResetPassword","resetPasswordEmailModalDismiss","clearResetPasswordEmail","togglePasswordCursorState","passwordFocus","back","goBack","CASPasswordValidation","match","params","AAUserForm","initialized","savingUser","userLoaded","_selectedOrgObj$roleI","selectedOrgItem","selectedRole","roleList","description","selectedStatus","statusOptions","changePasswordSuccess","changingPassword","organizationOptions","index","roleOptions","minLengthReq","minLength","minDigitReq","minNumberOfDigits","minLowerReq","minNumberOfLower","minUpperReq","minNumberOfUpper","minSpecialReq","minNumberOfSpecial","minTypeReq","minNumberOfCharacterTypes","passwordHistoryReq","numberOfHistoricalPasswords","passwordAgeLength","passwordAgeInDays","passwordRequirementAlert","passwordMismatchLabel","htmlFor","passwordInvalidLabel","passwordSection","disabled","placeholder","onChange","onFocus","onBlur","statusInformation","Select","classNamePrefix","styles","reactSelectStyles","menuPlacement","options","resetPasswordSuccessModal","resetPasswordEmailSuccessModal","sendResetPasswordEmailSuccess","content","Loading","isNewMode","isMulti","isOptionDisabled","option","includes","Content","pageHasSidebar","userEditor","initializeUserEditor","saveUser","resetUserPassword","clearResetUserPassword","sendUserResetPasswordEmail","clearSendUserResetPasswordEmail","uninitializeUserEditor","RoleEditor","ROLE_PRIVILEGES","privilegeValues","privilegeId","selectedPrivileges","ROLE_ORGANIZATIONS","organizationValues","selectedOrganizations","ROLE_DESCRIPTION","submit","roleLoaded","selectedPrivilege","filter","privilege","_props$editor$role$pr","selectedOrganization","organization","_props$editor$role$or","componentWillUnmount","privOptions","priv","orgOptions","onSubmit","StyledVisitDashboardRow","styled","div","_templateObject","_taggedTemplateLiteral","CopyBtnWrapper","_templateObject2","flexSmart","OrganizationTableView","newOrganization","viewOrganization","deleteOrganization","deletingOrganization","currentPageIndex","DEFAULT_PAGE_INDEX","totalPages","DEFAULT_TOTAL_PAGES","loadingOrganizations","organizationDashboard","initializeOrganizationDashboard","removeOrganization","loadOrganizations","uninitializeOrganizationDashboard","FeedbackList","FeedbackTableView","goToDetail","booleanIndicatorClass","feedback","dateCreated","moment","format","DATE_STRING_FORMAT","loadingFeedback","feedbackDashboard","initializeFeedbackDashboard","loadFeedback","uninitializeFeedbackDashboard","FeedbackDetail","goToDashboard","feedbackId","FEEDBACK_DEFAULT_ID","FeedbackDetailView","setFeedbackItemValue","feedbackResponse","FEEDBACK_RESPONSE_MESSAGE","responseMessage","detail","sendingResponse","sendResponse","closeModal","showSuccessModal","ATFeedbackResponse","updatedResponse","feedbackContact","company","successModal","loading","subject","formattedDateCreated","comments","feedbackDetail","initializeFeedbackDetail","uninitializeFeedbackDetail","pageState","streamPageState","previewsState","streamPreviews","toolbarState","streamToolbar","updatePageState","loadDatasources","editMode","sizeClass","useWatchSizeClass","isSmallMax","isMaxSize","EBreakpoint","SM","camsLoading","cameraData","accessLevelOptions","StreamAccessLevelOptions","accessLevelSelected","nuon","selectedAccessLevel","hasSelected","selectedStreams","updateCamsOk","Row","Col","xs","sm","md","lg","xl","Center","IconLabel","iconClass","iconStyle","color","labelFirst","iconAttributes","ACCESS_LEVEL_TOOLTIP","ThemedDropdown","selectedIndex","indexOf","noDropBorder","menuAttached","searchable","scrollThreshold","styleObject","callback","newIndex","EATStreamAccessLevel","width","borderRadius","showUpdateModal","CloudStreamTarget","_props$cloudStreamTar2","_props$cloudStreamTar3","useTooltip","noTarget","cloudStreamTarget","hlsPlaybackUrl","streamUrlTextRef","mapIndex","defaultAccessLevelOption","getDefaultAccessLevelOption","i","_props$cloudStreamTar","accessLevel","videoHeight","Container","fluid","backgroundColor","Body3","VideoJs","config","DefaultConfig","sources","src","html5","videojsHtml5","videoClassNames","videoDimensions","playButton","selection","updatingAccessLevel","updateAccessLevel","hidden","readOnly","Icon","size","attributes","newTooltipAttributes","focus","select","document","execCommand","vhs","withCredentials","overrideNative","MessageList","MessageTableView","goToEditor","newMessage","messageId","comfirmDelete","MESSAGE_DEFAULT_ID","_this$props$dashboard","_prevProps$dashboard$","prevIsLoading","loadingMessages","currentIsLoading","messages","_props$dashboard$mess","_dashboard$messages","start","end","deletingMessage","messageDashboard","initializeMessageDashboard","loadMessages","removeMessage","uninitializeMessageDashboard","RoleTableView","newRole","viewRole","deleteRole","deletingRole","previousIsLoading","loadingRoles","roleDashboard","initializeRoleDashboard","searchRoles","removeRole","uninitializeRoleDashboard","FacilityTableView","newFacility","facilityId","FAC_CONST","defaultId","getUpdatedFacilities","facility","direction","deriveDirection","locations","EATDirection","Unknown","directions","directionString","forEach","directionAbbrev","getDirectionLetter","VisitDashboardRow","useParams","dashboardUrl","SC","FormCard","flexDirection","FormButton","marginBottom","open","ErrorModal","formattedMessage","formattedTitle","LOAD_USER_EDITOR_BEGIN","LOAD_USER_EDITOR_SUCCESS","LOAD_USER_EDITOR_FAILURE","SAVE_USER_BEGIN","SAVE_USER_SUCCESS","SAVE_USER_FAILURE","CHANGE_PASSWORD_BEGIN","CHANGE_PASSWORD_SUCCESS","CHANGE_PASSWORD_FAILURE","CHANGE_PASSWORD_CLEAR","VALIDATE_PASSWORD_BEGIN","VALIDATE_PASSWORD_SUCCESS","VALIDATE_PASSWORD_FAILURE","CLEAR_USER_EDITOR_ERROR","UNINITIALIZE_USER_EDITOR","RESET_PASSWORD_EMAIL_BEGIN","RESET_PASSWORD_EMAIL_SUCCESS","RESET_PASSWORD_EMAIL_FAILURE","RESET_PASSWORD_EMAIL_CLEAR","PROFILE_REFRESH_INTERVAL","SERVICE_SYNCHRONIZATION_REFRESH_INTERVAL","DEFAULT_SERVICE_SYNCHRONIZATION_HISTORY_COUNT","DEFAULT_SELECTOR_KEY","ORG_CONS","datasources","parent","child","addUser","colNum","MESSAGE_TITLE","MESSAGE_BODY","MESSAGE_DATE_START","MESSAGE_DATE_END","MESSAGE_AUDIENCES","MESSAGE_AUDIENCE_OPTIONS","FACILITY_CONSTANTS","formInputStyles","labelWidth","inputWidth","inputHeight","WARN_DUPLICATE_PROP","WARN_RESET","WARN_DUPLICATE_MAP_SETTING","CAMERA_PREVIEWS_MAX_SELECTION","CAMERA_PREVIEWS_PER_PAGE","valueIfNew","INITIALIZE_MESSAGE_DASHBOARD_BEGIN","INITIALIZE_MESSAGE_DASHBOARD_SUCCESS","INITIALIZE_MESSAGE_DASHBOARD_FAILURE","LOAD_MESSAGES_BEGIN","LOAD_MESSAGES_SUCCESS","LOAD_MESSAGES_FAILURE","DELETE_MESSAGE_BEGIN","DELETE_MESSAGE_SUCCESS","DELETE_MESSAGE_FAILURE","CLEAR_MESSAGE_DASHBOARD_ERROR","UNINITIALIZE_MESSAGE_DASHBOARD","INITIALIZE_FACILITY_DASHBOARD_BEGIN","INITIALIZE_FACILITY_DASHBOARD_SUCCESS","INITIALIZE_FACILITY_DASHBOARD_FAILURE","SEARCH_FACILITIES_BEGIN","SEARCH_FACILITIES_SUCCESS","SEARCH_FACILITIES_FAILURE","DELETE_FACILITY_BEGIN","DELETE_FACILITY_SUCCESS","DELETE_FACILITY_FAILURE","CLEAR_FACILITY_DASHBOARD_ERROR","UNINITIALIZE_FACILITY_DASHBOARD","INITIALIZE_ORGANIZATION_DASHBOARD_BEGIN","INITIALIZE_ORGANIZATION_DASHBOARD_SUCCESS","INITIALIZE_ORGANIZATION_DASHBOARD_FAILURE","LOAD_ORGANIZATIONS_BEGIN","LOAD_ORGANIZATIONS_SUCCESS","LOAD_ORGANIZATIONS_FAILURE","DELETE_ORGANIZATION_BEGIN","DELETE_ORGANIZATION_SUCCESS","DELETE_ORGANIZATION_FAILURE","CLEAR_ORGANIZATION_DASHBOARD_ERROR","UNINITIALIZE_ORGANIZATION_DASHBOARD","INITIALIZE_ROLE_DASHBOARD_BEGIN","INITIALIZE_ROLE_DASHBOARD_SUCCESS","INITIALIZE_ROLE_DASHBOARD_FAILURE","LOAD_ROLES_BEGIN","LOAD_ROLES_SUCCESS","LOAD_ROLES_FAILURE","DELETE_ROLE_BEGIN","DELETE_ROLE_SUCCESS","DELETE_ROLE_FAILURE","CLEAR_ROLE_DASHBOARD_ERROR","UNINITIALIZE_ROLE_DASHBOARD","INITIALIZE_USER_DASHBOARD_BEGIN","INITIALIZE_USER_DASHBOARD_SUCCESS","INITIALIZE_USER_DASHBOARD_FAILURE","LOAD_USERS_BEGIN","LOAD_USERS_SUCCESS","LOAD_USERS_FAILURE","DELETE_USER_BEGIN","DELETE_USER_SUCCESS","DELETE_USER_FAILURE","CLEAR_USER_DASHBOARD_ERROR","UNINITIALIZE_USER_DASHBOARD","reportWebVitals","onPerfEntry","Function","_ref","getCLS","getFID","getFCP","getLCP","getTTFB","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","_navigator$serviceWor","controller","onUpdate","onSuccess","initialState","lastResponse","ProcessedResponse","LOAD_MESSAGE_BEGIN","LOAD_MESSAGE_SUCCESS","SAVE_MESSAGE_BEGIN","SAVE_MESSAGE_SUCCESS","SAVE_MESSAGE_FAILURE","CLEAR_MESSAGE_EDITOR_ERROR","UNINITIALIZE_MESSAGE_EDITOR","savingMessage","ATAldotMessage","lastMessageResponse","LOAD_FACILITY_BEGIN","LOAD_FACILITY_SUCCESS","LOAD_FACILITY_FAILURE","CLEANUP_FACILITY","SAVE_FACILITY_BEGIN","SAVE_FACILITY_SUCCESS","SAVE_FACILITY_FAILURE","CLEAR_FACILITY_EDITOR_ERROR","UNINITIALIZE_FACILITY_EDITOR","savingFacility","ATFacility","ATFeedback","FETCH_DATASOURCES_BEGIN","FETCH_DATASOURCES_SUCCESS","FETCH_DATASOURCES_FAILURE","CLEAR_DATASOURCES_ERROR","LOAD_PROFILE_BEGIN","LOAD_PROFILE_SUCCESS","LOAD_PROFILE_FAILURE","UNLOAD_PROFILE","CLEAR_PROFILE_ERROR","AAUserAuthorizationProfile","LOAD_ORGANIZATION_BEGIN","LOAD_ORGANIZATION_SUCCESS","LOAD_ORGANIZATION_FAILURE","SAVE_ORGANIZATION_BEGIN","SAVE_ORGANIZATION_SUCCESS","SAVE_ORGANIZATION_FAILURE","LOAD_USER_SEARCH_BEGIN","LOAD_USER_SEARCH_SUCCESS","LOAD_USER_SEARCH_FAILURE","ADD_USER_TO_ORGANIZATION_BEGIN","ADD_USER_TO_ORGANIZATION_SUCCESS","ADD_USER_TO_ORGANIZATION_FAILURE","REMOVE_USER_FROM_ORGANIZATION_BEGIN","REMOVE_USER_FROM_ORGANIZATION_SUCCESS","REMOVE_USER_FROM_ORGANIZATION_FAILURE","CLEAR_ORGANIZATION_EDITOR_ERROR","UNINITIALIZE_ORGANIZATION_EDITOR","organizationLoaded","loadingUserSearch","savingOrganization","addingUser","removingUser","AAOrganization","organizationUserList","userSearchList","datasourceList","validatingPassword","CASComplexityRequirement","passwordValidation","FETCH_LATEST_SYNCHRONIZATION_BEGIN","FETCH_LATEST_SYNCHRONIZATION_SUCCESS","FETCH_LATEST_SYNCHRONIZATION_FAILURE","FETCH_HISTORY_SYNCHRONIZATION_BEGIN","FETCH_HISTORY_SYNCHRONIZATION_SUCCESS","FETCH_HISTORY_SYNCHRONIZATION_FAILURE","CLEAR_SYNCHRONIZATION_ERROR","UNINITIALIZE_SYNCHRONIZATION_STATE","loadingLatest","loadingHistory","latest","LOAD_CAMERA_DEVICES_BEGIN","LOAD_CAMERA_DEVICES_SUCCESS","LOAD_CAMERA_DEVICES_FAILURE","ReduxData","initObject","totalCount","checksum","toggleLoading","setLoading","newValue","needsUpdate","newChecksum","cloneReduxData","oldData","LOAD_CAMERA_DEVICE_STATUS_BEGIN","LOAD_CAMERA_DEVICE_STATUS_SUCCESS","LOAD_CAMERA_DEVICE_STATUS_FAILURE","statusData","statusLoading","badStatus","cameraDeviceId","localIncomingStreamLogs","ATIncomingStreamLog","D_ATIncomingStreamLog","EATLogStatus","distributorIncomingStreamLogs","pushPublishEntryLogs","ATPushPublishEntryLog","D_ATPushPublishEntryLog","datasourceData","accessLevelData","accessChange","selectingAll","showAllSelectedStreams","pageCount","pageIndex","selectedRegion","selectedRegionIndex","LOAD_CAMERA_DEVICE_BEGIN","LOAD_CAMERA_DEVICE_SUCCESS","LOAD_CAMERA_DEVICE_FAILURE","LOAD_LOGS_BEGIN","LOAD_LOGS_SUCCESS","LOAD_LOGS_FAILURE","PATCH_CLOUD_STREAM_TARGET_BEGIN","PATCH_CLOUD_STREAM_TARGET_SUCCESS","PATCH_CLOUD_STREAM_TARGET_FAILURE","device","ATCameraDevice","logs","checksums","EATStreamServerLogSource","LocalIncomingStream","DistributorIncomingStream","LocalPushPublishEntry","totalCounts","loadingCameraDevice","loadingLogs","patchingCloudStreamTarget","noData","rootReducer","combineReducers","action","messageEditor","facilityEditor","datasource","organizationEditor","synchronization","tempData","clone","devices","parseInt","getChecksum","getCount","streamStatus","cameraDetails","source","Array","isArray","compose","applyMiddleware","thunkMiddleware","createStore","createStoreWithMiddleware","checkRouteAccess","profileState","expired","hasAnyPrivilege","StyledTemplate","StyledContentWrapper","StyledSideNav","_templateObject3","showSidebar","StyledContent","_templateObject4","SidebarContext","setShowSidebar","useServiceWorker","setServiceWorker","_navigator$serviceWor2","addEventListener","e","_navigator$serviceWor3","useRefresher","refreshFunction","interval","refresher","setRefresher","setInterval","clearInterval","StyledHeaderWrapper","MenuToggleSection","theme","colors","ToggleSidebarWrapper","HeaderSection","apiUrlUser","profiles","loadProfileFailure","loadUserProfile","UserNetworkManager","getProfile","loadProfileSuccess","unloadUserProfile","clearUserProfileError","AuthenticationButton","signIn","auth","signinRedirect","signOut","signoutRedirect","signInClassName","preferred_username","pathname","algoLogo","logoImg","_rect","_defs","_extends","Object","assign","bind","target","prototype","hasOwnProperty","call","apply","SvgIconToggleSidebar","svgRef","titleId","viewBox","fill","xmlns","xmlnsXlink","patternContentUnits","xlinkHref","transform","ForwardRef","navStyles","display","alignItems","toggleShowSidebar","useAuth","ToggleSidebar","NavLink","to","setRootNavIndex","default","alt","Welcome","StyledMessageContainer","StyledAlertContainer","StyledSubtext","StyledRootLink","a","RedirectContent","href","Redirect","NotFound","AccessDenied","UserList","apiUrlDatasource","loadOrganizationSuccess","loadOrganizationFailure","initializeOrganizationEditor","OrganizationManager","DatasourceManager","DatasourceNetworkManager","RoleManager","getAllUsers","saveOrganizationFailure","saveOrganization","saveOrganizationSuccess","addUserFailure","addUserToOrganization","subs","assignUsersToOrg","assignUser","orgResponse","userResponse","removeUserFailure","removeUserFromOrganization","unassignUser","clearOrganizationEditorError","uninitializeOrganizationEditor","OrganizationEditor","orgForm","organizationForm","parentOrgValues","parentOrganizationId","selectedOrganizationParent","childOrgValues","childrenOrganizationId","selectedOrganizationChild","orgRoleValues","selectedOrganizationRoles","orgDatasourceValues","selectedOrganizationDatasources","selectedOrgUserValues","selectedOrganizationUsers","fetchUserSearch","inputValue","userOptions","fetchOrganizationSearch","_org$name","_org$description","toUpperCase","fetchRoleSearch","_role$name","fetchDatasourceSearch","assignUsers","orgRoles","_props$editor$organiz","orgDatasources","_props$editor$organiz2","orgParents","_props$editor$organiz3","orgChildren","_props$editor$organiz4","addUserSpanClass","organizationUserView","AsyncSelect","cacheOptions","loadOptions","defaultOptions","isDisabled","OrganizationList","NoCameras","grey","getSiteValue","siteColors","bgColor","bRadius","StyledNoCameras","Body1","weight","apiUrlDevice","loadCameraDeviceStatus","loadCameraDeviceStatusBegin","CameraDeviceNetworkManager","getStatus","loadCameraDeviceStatusSuccess","loadCameraDeviceStatusFailure","snapshotURI","pillStyle","fontSize","letterSpacing","lineHeight","CameraCard","camera","pills","infoHeight","gmap","roadNamesMargin","infoStyle","padding","roadNamesStyle","StyledCameraCard","StyledGraphicCol","CameraSnapshot","snapshotHeight","StyledInfoRow","routeDesignator","crossStreet","StyledPillsWrapper","keys","Pill","pillClass","pillStyleObject","StyledNullCamera","_templateObject5","CssCustomScrollbar","preview","loadStatus","cloudStreamTargets","pillsObject","cameraClick","cursor","Selectable","active","selected","toggleCameraInList","loadCameraDevices","getCameraDeviceRequest","D_GET_ALL_CAMERA_DEVICES","req","setItem","JSON","stringify","removeItem","region","loadCameraDevicesSuccess","usePreserveRatio","EAspectRatio","prevPageState","usePrevious","prevRegion","datasourceChange","prevSearch","searchChange","indexChange","accessLevelChange","cameras","nullContent","skip","take","handleCameraClick","selectedList","indexOfSelected","newSelectedStreams","splice","isSelected","CameraPreview","selectAll","camerasLoading","streamsSelected","streamsSelectedCount","streamString","toggleTextSelect","toggleTextShow","margin","iconBackground","marginLeft","marginRight","iconForeground","StyledSelectionRow","StyledClickableText","Body2","showCameras","StyledSelectedDevices","iconBackgroundStyleObject","iconForegroundStyleObject","dismissable","siteSizes","getUserProfile","datasourcesLoading","searchString","setSearchString","cameraSearchString","parse","handleSearch","userCanBulkEdit","datasourceOptions","buildDatasourceOptions","toolbarRow","getElementById","toolbarHeight","offsetHeight","setHeightCallback","StyledToolbar","disabledPlaceholder","handleDatasourceSelection","ev","onKeyDown","AccessRow","SelectionRow","CameraDashboardModal","modalContent","cancelButton","confirmButton","show","updateParentState","updateStore","renderOption","Modal","controls","ToTopButton","clickAttribute","windowSize","useWatchWindowSize","innerWidth","innerHeight","_SidebarContext","left","selfWidth","sidebarWidth","StyledToTop","bottom","iconForegroundClass","top","right","updateAccessLevels","_cameraData$totalCoun","showToTop","setShowToTop","setToolbarHeight","containerHeight","useGetHeight","previewsHeight","pagerContent","determinePageCount","DashboardModal","targetsList","getCloudStreamTargets","CameraToolbar","RemoveScrollbar","onScroll","checkScrollHeight","cameraList","scroll","scrollTop","CameraPreviews","setScrollHeight","Pager","updatePageIndex","ellipsisThreshold","ellipsisOffset","backgroundColorActive","setFlag","getElementWidthByClass","calculateHeightFor","cameraDevice","newStream","renderNewStreamButton","rowStyle","borderTopLeftRadius","borderTopRightRadius","mapWrapperStyle","border","renderPills","pillsStyle","overflow","pillClasses","Caption1","newStreamButtonHeight","backgroundClass","fontWeight","statusIcon","statusColor","ELogType","LogSummary","_application$streamSe","formattedTime","Moment","timestamp","statusName","IncomingStream","incomingStreamName","entryName","application","PushPublishEntry","last","streamServer","loggingSource","initializeDetails","deviceId","loadCameraDevice","loadCameraDeviceSuccess","loadCameraDeviceFailure","loadLogs","loadLogsBegin","getLogs","loadLogsSuccess","loadLogsFailure","NavButton","StyledNavButton","update","hasChanged","oldValue","StreamLogMessage","StyledLogMessage","PagedTab","navIndex","perPage","useRef","useEffect","D_GET_CAMERA_DEVICE_LOGS","toString","maxHeight","details","_props$details$totalC","_props$details","_props$details$totalC2","_props$details2","_props$details$totalC3","_props$details3","_props$details4","_props$details5","selectOptions","selectedOption","DistributorPushPublishEntry","localPageCount","localPageIndex","distributorPageCount","distributorPageIndex","cloudPageCount","cloudPageIndex","updateNavIndex","propertySelector","CameraDeviceDetails","H3","FixedHeight","mapHeight","newLevel","StreamLogNavigator","apiUrlCST","patchCloudStreamTarget","cst","CloudStreamTargetNetworkManager","patchCloudStreamTargetSuccess","patchCloudStreamTargetFailure","_match$params","matchDeviceId","paramsId","currentId","apiUrlMessage","aldotMessages","loadMessageFailure","loadMessage","AldotMessageNetworkManager","loadMessageSuccess","saveMessageFailure","saveMessage","saveMessageSuccess","clearMessageEditorError","uninitializeMessageEditor","MessageEditor","updatedMessage","MESSAGE_CONS","body","setMomentFormItemValue","audienceValues","audiences","selectedAudienceOptions","aud","_this$state$message","_this$state$message2","_this$state$message3","_this$state$message4","_this$state$message5","_this$state$message6","_this$state$message7","rows","Datetime","displayTimeZone","RoleList","loadFacilityFailure","loadFacility","loadFacilitySuccess","cleanupFacility","saveFacility","saveFacilitySuccess","StyledFacilityEditor","ContentRow","TitleContent","DisabledOverlay","absoluteArrayBuilder","FormsContent","whenLargeMax","LeftColumn","_templateObject6","RightColumn","_templateObject7","FooterRow","_templateObject8","StyledEditorTitleRow","SideSection","StyledTitle","EditorTitleRow","CONST","facilityTypeStrings","getEnumStrings","EATFacilityType","facilitySizeClassStrings","EATKioskSizeClass","GeneralInformation","formConfig","facilityObject","updateFacility","FormTextInputLabeled","code","FormSelectLabeled","kioskSizeClass","SelectAndInputWrapper","DynamicSelectAndInput","_facilityObject","optionsList","selectVal","inputVal","updateFacilityObject","updateSelectVal","updateInputVal","rowObject","FormDynamicRow","deleteButton","deleteClick","removeListProperty","EFacilityPropertyType","FormSelect","disabledIndecies","findSelectedIndecies","updateListProperty","FormTextInput","propertyList","selectedIndecies","typesList","object","parkingTypeStrings","FTypes","amenityTypeStrings","phoneTypeStrings","SelectAndInputForm","ParkingSpacesForm","marginTop","findNextUnselected","total","AmenitiesForm","PhonesForm","number","DynamicEditDelete","displayString","editClick","editButton","StringAndModalForm","LocationsForm","fixedFloat","latitude","longitude","displayRouteDesignator","EATDirectionAbbrev","MapSettingsForm","centerLatitude","centerLongitude","zoomLevel","RoutesOfInterestForm","place","startLinearReference","endLinearReference","TravelTimesForm","_facilityObject$trave","InfoBanner","travelTimes","estimatedTimeMinutes","averageSpeedMph","StyledFullPageModal","absoluteBuilder","CloseButtonWrapper","CloseButton","button","FullPageModal","showCloseButton","closeCallback","filterInvalidRoads","roadways","filteredList","roadway","charAt","StyledEditRoute","StyledFooter","StyledLoadError","StyledMarkerFormItemRow","StyledMarkerLabel","StyledMarkerSelect","DIRECTIONS","MARKER_TYPES","directionStrings","EditRoute","route","routeIndex","currentRoutes","placeValue","setPlaceValue","selectedPlaceIndex","setSelectedPlaceIndex","directionValue","setDirectionValue","defaultDirection","North","directionIndex","determineDefaultDirection","startValue","setStartValue","endValue","setEndValue","markerValues","setMarkerValues","markerTypes","defaultSelectValues","element","foundType","mt","determineDefaultMarkerTypes","loaded","useGetRoadways","setRoadways","setLoaded","setError","fetch","json","roadwayStrings","setRoadwayStrings","disabledDirections","setDisabledDirections","searchObjectListByProperty","filterNaInt","cancelCallback","saveCallback","ATFacilityRoute","parseFloat","kvp","EATKioskMarkerType","getSelectOptions","objectArray","useGetData","apiString","setData","StyledEditLocation","StyledLoadFail","span","StyledTryAgain","StyledPrimaryContent","StyledFormsWrapper","StyledMapWrapper","_templateObject9","formCard1Styles","paddingTop","mapPinOptions","position","lat","lng","icon","iconSrc","mapPinIcon","w","h","D_MAP_CONFIG","center","zoom","EditLocation","locationIndex","currentMapCenter","cityNameValue","setCityNameValue","city","selectedCityIndex","setSelectedCityIndex","countyNameValue","setCountyNameValue","county","selectedCountyIndex","setSelectedCountyIndex","mileMarkerValue","setMileMarkerValue","linearReference","markerCoords","setMarkerCoords","existingMarkers","setExistingMarkers","mapConfig","setMapConfig","cities","citiesLoading","citiesLoaded","citiesError","counties","countiesLoading","countiesLoaded","countiesError","roadwaysLoading","roadwaysLoaded","roadwaysError","indexOfObject","addMarkerEventObject","evt","removeCurrentMarkers","addMarkerAtPointer","eventX","currentPointer","viewportX","eventY","viewportY","coords","screenToGeo","dataLoaded","dataLoading","noBorder","HELP","filterNaN","SuccessBanner","HereMap","rounded","listeners","markers","FACancel","buildReturnValue","routeDesignatorType","FASave","handleUpdateAndCenter","zoomLevelValue","isInvalidZoomLevel","parseResult","isNaN","StyledEditMapSettings","StyledZoomWrapper","StyledMapAndBannerWrapper","formCardStyles","faDoneStyles","successBannerStyles","styledMapWrapperStyles","EditMapSettings","mapSetting","mapSettingIndex","mapSettingCoords","setZoomLevelValue","setCoords","showSpeeds","newZoom","mapViewChangeObject","getZoom","handleZoomKeyPress","handleUpdateZoomState","FADone","propertyBooleanMap","propertyNumberMap","EATParkingType","EATAmenityType","EATPhoneType","_props$editor","_props$editor2","_props$editor6","_props$editor7","_props$editor8","_props$editor9","_props$editor10","setFacilityObject","showEditModal","setShowEditModal","setShowDeleteConfirmModal","setSelectedIndex","Theme","ThemeContext","c_success","c_failure","addToast","removeToast","updateList","ToastContext","useHistory","prevSaving","_props$editor3","_props$editor4","_props$editor5","getColorAtAlpha","climbHeight","whenExpire","whenTriggered","disableUI","handleEditClick","routesOfInterest","mapSettings","disableAddButton","formConfigs","addButton","alert","addParking","ATFacilityParking","addAmenity","ATFacilityAmenity","addPhone","ATFacilityPhone","addLocation","ATLocation","addMapSetting","ATFacilityMapSetting","addListProperty","comfirmResetFacility","handleResetFacility","ToastManager","apiUrlSynchronization","synchronizations","fetchLatestSynchronizationFailure","loadLatestSynchronizations","SynchronizationNetworkManager","getLatest","fetchLatestSynchronizationSuccess","fetchHistorySynchronizationFailure","loadSynchronizationHistory","serviceName","fetchHistorySynchronizationSuccess","clearSynchronizationError","uninitializeSynchronization","OKAY_STATUS_NAME","WARNING_STATUS_NAME","ERROR_STATUS_NAME","Synchronization","pageRefresher","refreshPageData","selectedServiceName","setServiceName","renderStatusOrb","renderStatusItems","_this$props$synchroni","list","renderHistoryItems","renderHistoryItem","ATSynchronization","formattedDatePart","formattedTimePart","renderHistoryItemHeader","statusHeader","SilentRenew","startSilentRenew","SessionEnded","clearDatasourceError","_path","SvgIconSync","d","SvgIconProfile","SvgIconGroup","SvgIconProfileTag","SvgIconAlertTriangle","SvgIconCamera","SvgIconHouse","SvgIconMail","navStringsPrivilegeFilter","navStringsArray","toolsStrings","PRIVS","userAdminStrings","siteAdminStrings","getNavString","navStrings","navSection","navLink","navConfigPrivilegeFilter","navConfigArray","toolsNavLinks","text","IconSync","navLinks","userAdminNavLinks","IconUsers","IconOrganizations","IconRoles","siteAdminNavLinks","IconAlerts","IconCameras","IconFacilities","IconFeedback","clearUserEditorError","clearUserDashboardError","clearOrganizationDashboardError","clearFeedbackDashboardError","clearFeedbackDetailError","clearMessageDashboardError","clearRoleDashboardError","setPrivileges","setNavStrings","errorObject","setErrorObject","hasError","info","shouldShowSidebar","SidebarContextValue","selectedNavIndex","setSelectedNavIndex","NavigationContextValue","checkForRedirect","postMessage","accessToken","dismissError","defaultLanding","go","Header","NavigationContext","Provider","ThemedNav","navSectionConfig","CSSTransition","classNames","timeout","enter","exit","Switch","Route","exact","component","CameraDashboard","CameraDeviceDetailsWrapper","FacilityList","FacilityEditor","App","themeMode","setThemeMode","useState","EThemeOptions","Light","themeObject","setThemeObject","getTheme","hasTriedSignin","setHasTriedSignin","hasAuthParams","isAuthenticated","activeNavigator","signinSilent","ThemeProvider","BrowserRouter","ToastProvider","Template","ReactDOM","AuthProvider","StrictMode","HereProvider","URL","process","origin","headers","contentType","get","ready","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration","INITIALIZE_FEEDBACK_DASHBOARD_BEGIN","INITIALIZE_FEEDBACK_DASHBOARD_SUCCESS","INITIALIZE_FEEDBACK_DASHBOARD_FAILURE","LOAD_FEEDBACK_BEGIN","LOAD_FEEDBACK_SUCCESS","LOAD_FEEDBACK_FAILURE","CLEAR_FEEDBACK_DASHBOARD_ERROR","UNINITIALIZE_FEEDBACK_DASHBOARD","LOAD_FEEDBACK_DETAIL_BEGIN","LOAD_FEEDBACK_DETAIL_SUCCESS","LOAD_FEEDBACK_DETAIL_FAILURE","SEND_RESPONSE_BEGIN","SEND_RESPONSE_SUCCESS","SEND_RESPONSE_FAILURE","CLEAR_FEEDBACK_DETAIL_ERROR","UNINITIALIZE_FEEDBACK_DETAIL","UPDATE_PAGE_STATE","UPDATE_ACCESS_LEVELS_BEGIN","UPDATE_ACCESS_LEVELS_SUCCESS","UPDATE_ACCESS_LEVELS_FAILURE","SELECT_ALL_BEGIN","SELECT_ALL_SUCCESS","SELECT_ALL_FAILURE","SELECT_ALL_DESELECT","control","base","borderColor","isFocused","boxShadow","isActive","LOAD_ROLE_BEGIN","LOAD_ROLE_SUCCESS","LOAD_ROLE_FAILURE","SAVE_ROLE_BEGIN","SAVE_ROLE_SUCCESS","SAVE_ROLE_FAILURE","CLEAR_ROLE_EDITOR_ERROR","UNINITIALIZE_ROLE_EDITOR","apiUrlTarget","newPageState","targets","newTarget","updateAccessLevelsSuccess","updateAccessLevelsFailure","responseList","selectAllSuccess","selectAllFailure","V1_ENDPOINTS","aleaAlerts","feedbacks","forecasts","messageSigns","places","trafficEvents","videoboards","weatherAlerts","weatherCategories","zones","V2_ENDPOINTS","V3_ENDPOINTS","version","confirm","searchBoxRef","newPageIndex","changePageSize","persist","selectorChange","selectorKey","newItem","itemAction","keyDef","def","rowClick","renderTableCell","isTrue","isFalse","spanClass","justifyContent","renderTableRows","pagedItems","colSpan","renderActionTableCell","definition","defintion","renderActionButton","btnClassName","iconClassName","showItemAction","stopPropagation","renderTableHeaders","columnHeaders","actionHeader","renderPageSizeSelector","defaultValue","renderSelectFilter","defaultSelector","hideFilterPlaceholder","showSelectFilter","renderFilterBar","searchBarClass","showFilterBar","onReset","initialPageSize","initialTotalPages","defaultSelection","_this$props$items","_prevProps$items","_props$items","slice","tableWrapperClass","tableClass","minimalNav","LOAD_DATASOURCES_BEGIN","LOAD_DATASOURCES_SUCCESS","LOAD_DATASOURCES_FAILURE","UPDATE_ACCESS_LEVEL_BEGIN","UPDATE_ACCESS_LEVEL_SUCCESS","UPDATE_ACCESS_LEVEL_FAILURE","loadUserEditorSuccess","loadUserEditorFailure","uninitializeUserEditorState","getRequirements","getUserById","copy","saveUserSuccess","saveUserFailure","updateUser","updateResponse","createUser","changePasswordFailure","changePassword","passwordForm","AAPasswordForm","currentPassword","reset","sendResetPasswordFailure","initializeUserDashboardFailure","initializeUserDashboardSuccess","loadUsersFailure","loadUsersSuccess","deleteUserFailure","deleteResponse","initializeOrganizationDashboardFailure","initializeOrganizationDashboardSuccess","loadOrganizationsFailure","loadOrganizationsSuccess","deleteOrganizationFailure","initializeMessageDashboardFailure","showExpired","initializeMessageDashboardSuccess","loadMessagesFailure","loadMessagesSuccess","deleteMessageFailure","deleteMessageSuccess","initializeDashboardFailure","initializeDashboardSuccess","loadRolesFailure","loadRolesSuccess","deleteRoleFailure","getDatasourcesRequest","D_GET_ALL","availableToUser","loadDatasourcesSuccess","loadDatasourcesFailure","apiUrlFeedback","initializeFeedbackDashboardFailure","FeedbackNetworkManager","initializeFeedbackDashboardSuccess","loadFeedbackFailure","loadFeedbackSuccess","sendResponseFailure","sendFeedbackResponse","emailCreationResponse"],"mappings":"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","file":"static/js/main.9adf1242.chunk.js","sourcesContent":["//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"../..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../../components/template/authentication/oidcConfig\";\n// interfaces & models\nimport * as TYPES from \"./types\";\nimport { \n IAAPrivilege, IAARole, IAAOrganization, AARole \n} from \"@algo/network-manager/models/v3/admin\";\nimport { \n IOrganizationNetworkManager, OrganizationNetworkManager,\n IRoleNetworkManager, RoleNetworkManager,\n IPrivilegeNetworkManager, PrivilegeNetworkManager, IProcessedResponse\n} from \"@algo/network-manager/managers/v3\";\n//constants\nimport { ROLE_DEFAULT_ID } from \"../../../utils/AppConstants\";\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlOrganization: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).organizations}`;\nconst apiUrlPrivilege: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).privileges}`;\nconst apiUrlRole: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).roles}`;\n\nfunction loadRoleBegin(): TYPES.RoleEditorTypes {\n return {\n type: TYPES.LOAD_ROLE_BEGIN,\n payload: {} as TYPES.RoleEditorPayload\n } ;\n}\n\nfunction loadRoleSuccess(\n role: IAARole, \n privilegeList: IAAPrivilege[], \n organizationList: IAAOrganization[]\n): TYPES.RoleEditorTypes {\n return {\n type: TYPES.LOAD_ROLE_SUCCESS,\n payload: {\n role: role,\n privilegeList: privilegeList,\n organizationList: organizationList\n } as TYPES.RoleEditorPayload\n };\n}\n\nfunction loadRoleFailure(error: Error): TYPES.RoleEditorTypes {\n return {\n type: TYPES.LOAD_ROLE_FAILURE,\n payload: {\n error: error\n } as TYPES.RoleEditorPayload\n };\n}\n\nexport let initializeRoleEditor = (\n id: number = ROLE_DEFAULT_ID\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().roleEditor.initializing) {\n dispatch(loadRoleBegin());\n\n getAccessToken().then(\n (token) => {\n let orgManager: IOrganizationNetworkManager = \n new OrganizationNetworkManager(apiUrlOrganization);\n\n let privManager: IPrivilegeNetworkManager = \n new PrivilegeNetworkManager(apiUrlPrivilege);\n\n let roleManager: IRoleNetworkManager = \n new RoleNetworkManager(apiUrlRole);\n \n orgManager.setAccessToken(token);\n privManager.setAccessToken(token);\n roleManager.setAccessToken(token);\n\n if (id === ROLE_DEFAULT_ID) {\n Promise.all([\n privManager.getAll(),\n orgManager.getAll()\n ])\n .then(response => {\n if (response[0].error)\n dispatch(loadRoleFailure(response[0].error))\n else if (response[1].error)\n dispatch(loadRoleFailure(response[1].error))\n else\n dispatch(loadRoleSuccess(new AARole(), response[0].data, response[1].data))\n }, reject => {\n dispatch(loadRoleFailure(new Error(reject)));\n })\n .catch(error => {\n dispatch(loadRoleFailure(new Error(error)));\n });\n }\n else {\n Promise.all([\n roleManager.getById({id}),\n privManager.getAll(),\n orgManager.getAll()\n ])\n .then(\n (response: IProcessedResponse[]) => {\n if (response[0].error) dispatch(loadRoleFailure(response[0].error))\n else if (response[1].error) dispatch(loadRoleFailure(response[1].error))\n else if (response[2].error) dispatch(loadRoleFailure(response[2].error))\n else dispatch(loadRoleSuccess(response[0].data, response[1].data, response[2].data))\n }, failure => {\n dispatch(loadRoleFailure(failure));\n })\n .catch(error => {\n dispatch(loadRoleFailure(error));\n });\n }\n }\n )\n }\n}\n\n/*\nSave Role\n*/\n\nfunction saveRoleBegin(): TYPES.RoleEditorTypes {\n return {\n type: TYPES.SAVE_ROLE_BEGIN,\n payload: {} as TYPES.RoleEditorPayload\n };\n}\n\nfunction saveRoleSuccess(role: IAARole): TYPES.RoleEditorTypes {\n return {\n type: TYPES.SAVE_ROLE_SUCCESS,\n payload: {\n role: role\n } as TYPES.RoleEditorPayload\n };\n}\n\nfunction saveRoleFailure(error: Error): TYPES.RoleEditorTypes {\n return {\n type: TYPES.SAVE_ROLE_FAILURE,\n payload: {\n error: error\n } as TYPES.RoleEditorPayload\n };\n}\n\nexport let saveRole = (\n role: IAARole\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().roleEditor.savingRole) {\n dispatch(saveRoleBegin());\n\n let manager: IRoleNetworkManager =\n new RoleNetworkManager(apiUrlRole);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.save({role, id: role.id})\n .then(\n (response: IProcessedResponse) => {\n if (response.error) dispatch(saveRoleFailure(response.error))\n else dispatch(saveRoleSuccess(response.data))\n }\n ).catch(\n (err: Error) => \n dispatch(saveRoleFailure(err))\n )\n }\n ).catch(\n (err: Error) => \n dispatch(saveRoleFailure(err))\n )\n }\n}\n\n/*\nClear Role Editor Error\n*/\n\nfunction clearRoleEditorErrorState(): TYPES.RoleEditorTypes {\n return {\n type: TYPES.CLEAR_ROLE_EDITOR_ERROR,\n payload: {} as TYPES.RoleEditorPayload\n };\n}\n\nexport let clearRoleEditorError = (\n\n): ThunkAction> => async (dispatch, getState) => {\n if (getState().roleEditor.error !== null) {\n dispatch(clearRoleEditorErrorState());\n }\n}\n\n/*\nUninitialize Role Editor\n*/\n\nfunction uninitializeRoleEditorState(): TYPES.RoleEditorTypes {\n return {\n type: TYPES.UNINITIALIZE_ROLE_EDITOR,\n payload: {} as TYPES.RoleEditorPayload\n }\n}\n\nexport let uninitializeRoleEditor = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n dispatch(uninitializeRoleEditorState());\n}","import * as React from 'react';\n\ninterface DismissableModalProps {\n dismissCallback: (() => void);\n title: string;\n message: string;\n type: string;\n}\n\ninterface DismissableModalState {\n instanceId: number;\n}\n\nexport default class DismissableModal \n extends React.Component<\n DismissableModalProps, \n DismissableModalState\n > \n{\n modalRef: React.RefObject;\n\n constructor(props: Readonly) {\n super(props);\n\n this.modalRef = React.createRef();\n\n this.state = {\n instanceId: Math.random()\n } as DismissableModalState;\n }\n\n componentDidMount() {\n $((this.modalRef.current) as any).modal('show');\n }\n\n dismiss = (event: React.MouseEvent): void => {\n const { dismissCallback } = this.props;\n event.preventDefault();\n $((this.modalRef.current) as any).modal('hide');\n dismissCallback();\n }\n\n render() {\n const { title, message, type } = this.props;\n\n\n return (\n \n );\n }\n}","// libraries\nimport { ThunkAction } from 'redux-thunk'\nimport { AppState } from '../../index';\nimport { Action } from \"redux\";\nimport { getAccessToken } from '../../../components/template/authentication/oidcConfig';\nimport { FacilityNetworkManager, IFacilityNetworkManager, IProcessedResponse } from \"@algo/network-manager/managers/v3\";\n// types\nimport * as TYPES from \"./types\";\n// models & interfaces\nimport { ATFacility, IATFacility } from \"@algo/network-manager/models/v3\";\n//constants\nimport { DEFAULT_QUERY } from \"../../../utils/AppConstants\";\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlFacility: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).facilities}`;\n//const apiUrlFacility: string = `http://localhost:3000/facilities`;\n\nfunction initializeFacilityDashboardBegin(): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.INITIALIZE_FACILITY_DASHBOARD_BEGIN,\n payload: {} as TYPES.FacilityDashboardPayload\n };\n}\n\n/*\nInitialize FACILITY Dashboards\n*/\n\nfunction initializeFacilityDashboardSuccess(\n response: IProcessedResponse\n): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.INITIALIZE_FACILITY_DASHBOARD_SUCCESS,\n payload: {\n facilities: response.data,\n response: response,\n error: response.error\n } as TYPES.FacilityDashboardPayload\n };\n}\n\nfunction initializeFacilityDashboardFailure(\n error: Error\n): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.INITIALIZE_FACILITY_DASHBOARD_FAILURE,\n payload: {\n error: error\n } as TYPES.FacilityDashboardPayload\n };\n}\n\nexport let initializeFacilityDashboard = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n if (\n !getState().facilityDashboard.initializing || \n !getState().facilityDashboard.loadingFacilities\n ) {\n dispatch(initializeFacilityDashboardBegin());\n\n let manager: IFacilityNetworkManager = \n new FacilityNetworkManager(apiUrlFacility);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.getAll(\n getState().facilityDashboard.lastInitResponse,\n {},\n )\n .then(\n (response: IProcessedResponse) => {\n if (response.error) \n dispatch(initializeFacilityDashboardFailure(response.error))\n else \n dispatch(initializeFacilityDashboardSuccess(response))\n }\n ).catch(\n (error: Error) => dispatch(initializeFacilityDashboardFailure(error))\n )\n }\n ).catch(\n (error: Error) => {\n dispatch(initializeFacilityDashboardFailure(error))\n }\n ) \n }\n}\n\n/*\nSearch Facilities\n*/\n\nfunction searchFacilitiesBegin(): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.SEARCH_FACILITIES_BEGIN,\n payload: {} as TYPES.FacilityDashboardPayload\n };\n}\n\nfunction searchFacilitiesSuccess(\n response: IProcessedResponse\n): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.SEARCH_FACILITIES_SUCCESS,\n payload: {\n facilities: response.data,\n response,\n error: response.error\n } as TYPES.FacilityDashboardPayload\n };\n}\n\nfunction searchFacilitiesFailure(\n error: Error\n): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.SEARCH_FACILITIES_FAILURE,\n payload: {\n error: error\n } as TYPES.FacilityDashboardPayload\n };\n}\n\nexport let searchFacilities = (\n name: string = \"\"\n): ThunkAction> => async(dispatch, getState) => {\n if(!getState().facilityDashboard.initializing || !getState().facilityDashboard.loadingFacilities) {\n dispatch(searchFacilitiesBegin());\n\n let manager: IFacilityNetworkManager = \n new FacilityNetworkManager(apiUrlFacility);\n\n console.log(\"search facilities\");\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.getAll(\n getState().facilityDashboard.lastSearchResponse,\n {name}\n ).then(\n (response: IProcessedResponse) => {\n if (response.error) dispatch(searchFacilitiesFailure(response.error));\n else dispatch(searchFacilitiesSuccess(response));\n }\n ).catch(\n (error: Error) => dispatch(searchFacilitiesFailure(error))\n )\n }\n ).catch(\n (error: Error) => dispatch(searchFacilitiesFailure(error))\n ) \n }\n}\n\n/*\nRemove FACILITY\n*/\n\nfunction deleteFacilityBegin(): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.DELETE_FACILITY_BEGIN,\n payload: {} as TYPES.FacilityDashboardPayload\n };\n}\n\nfunction deleteFacilitySuccess(\n response: IProcessedResponse\n): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.DELETE_FACILITY_SUCCESS,\n payload: {\n facilities: response.data,\n error: response.error\n } as TYPES.FacilityDashboardPayload\n };\n}\n\nfunction deleteFacilityFailure(error: Error): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.DELETE_FACILITY_FAILURE,\n payload: {\n error: error\n } as TYPES.FacilityDashboardPayload\n };\n}\n\nexport let removeFacility = (\n id: number,\n name: string = \"\",\n // city: string = \"\",\n // place: string = \"\",\n // skip?: number,\n // take?: number\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().facilityDashboard.deletingFacility) {\n dispatch(deleteFacilityBegin());\n\n let manager: IFacilityNetworkManager = \n new FacilityNetworkManager(apiUrlFacility);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.delete({id})\n .then(\n (response: IProcessedResponse) => {\n if (response.error) dispatch(deleteFacilityFailure(response.error))\n else {\n manager.getAll(\n getState().facilityDashboard.lastInitResponse,\n {name},\n )\n .then(\n (getAllResponse: IProcessedResponse) => {\n if (getAllResponse.error) dispatch(deleteFacilityFailure(getAllResponse.error))\n else dispatch(deleteFacilitySuccess(getAllResponse))\n }\n ).catch(\n (error: Error) => dispatch(deleteFacilityFailure(error))\n )\n }\n }\n ).catch(\n (error: Error) => dispatch(deleteFacilityFailure(error))\n )\n }\n ).catch(\n (error: Error) => dispatch(deleteFacilityFailure(error))\n )\n }\n}\n\n/*\nClear FACILITY Dashboard Error\n*/\n\nfunction clearFacilityDashboardErrorState(): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.CLEAR_FACILITY_DASHBOARD_ERROR,\n payload: {} as TYPES.FacilityDashboardPayload\n };\n}\n\nexport let clearFacilityDashboardError = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n if (getState().facilityDashboard.error !== null) {\n dispatch(clearFacilityDashboardErrorState());\n }\n}\n\n/*\nUninitialize FACILITY Dashboard\n*/\n\nfunction uninitializeFacilityDashboardState(): TYPES.FacilityDashboardTypes {\n return {\n type: TYPES.UNINITIALIZE_FACILITY_DASHBOARD,\n payload: {} as TYPES.FacilityDashboardPayload\n };\n}\n\nexport let uninitializeFacilityDashboard = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n dispatch(uninitializeFacilityDashboardState());\n}","// libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// models & interfaces\nimport { ICASUserProfile } from \"@algo/network-manager/models/v3/cas\";\nimport { IAAOrganization } from '@algo/network-manager/models/v3/admin';\n// store\nimport {\n initializeUserDashboard, loadUsers, removeUser,\n uninitializeUserDashboard\n} from '../../../store/user/dashboard/actions';\nimport { AppState } from '../../../store';\nimport { ProfileState } from '../../../store/profile/types';\nimport { UserDashboardState } from '../../../store/user/dashboard/types';\n// components\nimport ConfirmationModal from '../../base/modals/ConfirmationModal';\nimport { \n GenericTableViewSelectFilterItem, GenericTableViewSettings, \n GenericTableView, GenericTableViewColumnDefinition\n} from '../../base/layout/GenericTableView';\n// constants\nimport { \n DEFAULT_ORGANIZATION_ID, DEFAULT_QUERY,\n DEFAULT_USER_SUB, DEFAULT_PAGE_SIZE,\n} from '../../../utils/AppConstants';\nimport { DELETE_USER, CREATE_USER } from '../../../models/Privileges';\n\ninterface OwnProps {\n showSearch: boolean; \n userList?: ICASUserProfile[];\n pageSize?: number;\n actionCallback?: ((key: any) => void);\n}\n\ninterface StateProps { \n profile: ProfileState;\n dashboard: UserDashboardState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n profile: state.profile,\n dashboard: state.userDashboard\n };\n}\n\ninterface DispatchProps {\n initialize: typeof initializeUserDashboard;\n search: typeof loadUsers;\n remove: typeof removeUser;\n uninitialize: typeof uninitializeUserDashboard;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeUserDashboard,\n search: loadUsers,\n remove: removeUser,\n uninitialize: uninitializeUserDashboard\n }, dispatch);\n}\n\ntype UserTableViewProps = \n OwnProps & \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface UserTableViewState {\n sub: string;\n showDeleteConfirmModal: boolean;\n organizationId: number;\n query: string;\n}\n\nclass UserTableView extends React.Component {\n constructor(props: UserTableViewProps) {\n super(props);\n\n this.state = {\n organizationId: DEFAULT_ORGANIZATION_ID,\n query: DEFAULT_QUERY,\n showDeleteConfirmModal: false,\n sub: DEFAULT_USER_SUB\n };\n }\n\n componentDidMount() {\n this.props.initialize();\n\n if (!this.props.userList) {\n this.applyFilter(DEFAULT_QUERY, DEFAULT_ORGANIZATION_ID);\n }\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n if (!this.props.dashboard.deletingUser && prevProps.dashboard.deletingUser) {\n console.warn(\"UPDATE LIST\");\n this.applyFilter(this.state.query, this.state.organizationId);\n }\n\n if (this.state.organizationId !== prevState.organizationId) {\n this.applyFilter(this.state.query, this.state.organizationId);\n }\n }\n\n clearFilter = (): void => {\n this.props.search(DEFAULT_QUERY, this.state.organizationId);\n\n this.setState((state, props) => {\n return {\n ...state,\n query: DEFAULT_QUERY\n };\n });\n }\n\n applyFilter = (query: string, key: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query,\n organizationId: key\n };\n });\n\n this.props.search(query, key);\n }\n\n searchBoxChange = (query: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n };\n });\n }\n\n organizationChange = (key: number): void => {\n this.setState((state, props) =>{\n return {\n ...state,\n organizationId: key\n };\n });\n }\n\n newUser = (): void => {\n $('[data-toggle=\"tooltip\"]').tooltip('hide');\n\n this.props.history.push(`/user/new`);\n }\n\n viewUser = (sub: string): void => {\n if (this.props.profile.userProfile.hasPrivilege(CREATE_USER)) {\n this.props.history.push(`/user/${sub}`);\n }\n }\n\n showDeleteModal = (sub: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n sub: sub,\n showDeleteConfirmModal: true\n };\n });\n }\n\n confirmDelete = (): void => {\n this.deleteUser(this.state.sub);\n\n this.setState((state, props) => {\n return {\n ...state,\n sub: DEFAULT_USER_SUB,\n showDeleteConfirmModal: false\n };\n });\n }\n\n dismissDelete = (): void => {\n this.setState((state, props) => {\n return {\n ...state,\n sub: DEFAULT_USER_SUB,\n showDeleteConfirmModal: false\n };\n });\n }\n\n deleteUser = (sub: string): void => {\n if (!this.props.dashboard.deletingUser) {\n this.props.remove(sub, this.state.query, this.state.organizationId);\n }\n }\n\n render() {\n let { dashboard, profile, showSearch, userList, actionCallback, pageSize } = this.props;\n\n let tableSettings = {\n tableClassName: 'av-user-table',\n actionButtonClass: 'btn btn-outline-danger',\n actionButtonGlyphClass: 'delete-icon',\n columnDefinitions: [\n {\n propertyName: 'sub',\n isKey: true\n },\n {\n propertyName: 'givenName',\n displayName: 'Given Name',\n isKey: false,\n headerColumnClass: 'av-user-user-col'\n },\n {\n propertyName: 'familyName',\n displayName: 'Family Name',\n isKey: false,\n headerColumnClass: 'av-user-user-col'\n },\n {\n propertyName: 'userName',\n displayName: 'Username',\n isKey: false,\n headerColumnClass: 'av-user-username-col'\n },\n {\n propertyName: 'email',\n displayName: 'Email',\n isKey: false,\n headerColumnClass: 'av-user-email-col'\n }\n ] as GenericTableViewColumnDefinition[],\n selectFilterPlaceholder: 'Organizations',\n selectFilterItems: [\n {\n value: DEFAULT_ORGANIZATION_ID,\n label: 'All Organizations'\n },\n ...dashboard.organizations\n .map((org: IAAOrganization) => {\n return {\n value: org.organizationId,\n label: org.name\n } as GenericTableViewSelectFilterItem;\n })\n ] as GenericTableViewSelectFilterItem[],\n emptyTableMessage: 'No users',\n showPageSizeSelector: false,\n pageSize: pageSize ? pageSize : DEFAULT_PAGE_SIZE,\n newItemDisabled: !profile.userProfile.hasPrivilege(CREATE_USER),\n actionDisabled: !profile.userProfile.hasPrivilege(DELETE_USER),\n rowClickDisabled: !profile.userProfile.hasPrivilege(CREATE_USER)\n } as GenericTableViewSettings;\n\n return (\n
\n \n {\n this.state.showDeleteConfirmModal \n ? \n : (null)\n }\n
\n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(UserTableView));","import { Moment } from \"moment\";\n\nexport let isMomentEventValue = (obj: string | Moment): obj is Moment => {\n return (obj as Moment).isUtc !== undefined;\n}","import { OidcClientSettings, User, UserManager, UserManagerSettings, WebStorageStateStore } from \"oidc-client-ts\";\nimport { useEffect } from \"react\";\nimport { hasAuthParams, useAuth } from \"react-oidc-context\";\n\ndeclare var __AUTHORITY_URL__: string;\ndeclare var __CLIENT_URL__: string;\n\nexport const oidcConfig: any = {\n client_id: 'algoadmin',\n redirect_uri: `${__CLIENT_URL__}/callback`,\n response_type: 'code',\n scope: 'openid profile offline_access algoadmin_api',\n authority: __AUTHORITY_URL__,\n post_logout_redirect_uri: `${__CLIENT_URL__}/session_ended`,\n silent_redirect_uri: `${__CLIENT_URL__}/silent_renew`,\n automaticSilentRenew: true,\n filterProtocolClaims: true,\n loadUserInfo: true,\n // this function removes the payload from the successful login URL\n onSigninCallback: (user: User | void) => {\n let path = (user && user.state) ? (user as any).state.path : '/';\n window.location.replace(path);\n },\n userStore: new WebStorageStateStore({ store: localStorage})\n};\n\nexport const userManager = new UserManager(oidcConfig);\n\nexport function getAccessToken(): Promise {\n return new Promise((resolve, reject) => {\n userManager.getUser()\n .then((user: any) => {\n if (user) {\n resolve(user.access_token);\n }\n else {\n reject('Access denied due to no user credential');\n }\n }, (reason: any) => {\n reject(reason);\n })\n .catch((error: any) => {\n throw error;\n });\n });\n}","export let CAMERA_ADMINISTRATOR = 'CameraAdministrator';\nexport let ALLOW_CAMERA_BULK_UPDATE = 'AllowCameraBulkUpdate';\nexport let VIEW_VIDEOBOARD = 'ViewVideoboard';\nexport let CREATE_VIDEOBOARD = 'CreateVideoboard';\nexport let EDIT_VIDEOBOARD = 'EditVideoboard';\nexport let DELETE_VIDEOBOARD = 'DeleteVideoboard';\nexport let VIEW_CAMERA = 'ViewCamera';\nexport let EDIT_CAMERA = 'EditCamera';\nexport let SYSTEM_ADMINISTRATOR = 'SystemAdministrator';\n\nexport let RESET_USER_PASSWORD = 'ResetUserPassword';\nexport let MEDIA_STREAM_ACCESS = 'MediaStreamAccess';\nexport let FIRST_RESPONDER_STREAM_ACCESS = 'FirstResponderStreamAccess';\nexport let PRIVATE_SECTOR_STREAM_ACCESS = 'PrivateSectorLimitedStreamAccess';\nexport let INTERNAL_STREAM_ACCESS = 'InternalStreamAccess';\nexport let UNLIMITED_STREAMING = 'UnlimitedStreaming';\n\nexport let VIEW_USER = 'ViewUser';\nexport let CREATE_USER = 'CreateUser';\nexport let DELETE_USER = 'DeleteUser';\n\nexport let VIEW_ORGANIZATION = 'ViewOrganization';\nexport let CREATE_ORGANIZATION = 'CreateOrganization';\nexport let DELETE_ORGANIZATION = 'DeleteOrganization';\n\nexport let VIEW_ROLE = 'ViewRole';\nexport let CREATE_ROLE = 'CreateRole';\nexport let DELETE_ROLE = 'DeleteRole';\n\nexport let VIEW_MESSAGE = 'ViewAlert';\nexport let CREATE_MESSAGE = 'CreateAlert';\nexport let DELETE_MESSAGE = 'DeleteAlert';\n\nexport let CREATE_FACILITY = 'CreateFacility';\nexport let UPDATE_FACILITY = 'UpdateFacility';\nexport let DELETE_FACILITY = 'DeleteFacility';\n\nexport let FACILITY_PRIVILEGES = [CREATE_FACILITY, UPDATE_FACILITY, DELETE_FACILITY];\n\nexport let VIEW_FEEDBACK = 'ViewFeedback';\nexport let EMAIL_FEEDBACK_RESPONSE = 'EmailFeedbackResponse';\n\nexport let VIEW_SERVICE_STATUS = \"ViewServiceStatus\";","// libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// styles\nimport reactSelectStyles from '../../../utils/reactSelectStyles';\n// interfaces & models\nimport { \n AAUserForm, IAAUserForm, IAAOrganization, IAARole \n} from \"@algo/network-manager/models/v3/admin\";\nimport { CASPasswordValidation } from \"@algo/network-manager/models/v3/cas\";\nimport { ReactSelectNumberKeyListItem } from '../../../models/ReactSelectListItems';\n// components\nimport Select from 'react-select';\nimport Content from '../../base/layout/Content';\nimport Loading from '../Loading';\nimport DismissableModal from '../../base/modals/DismissableModal';\n// store\nimport { AppState } from '../../../store';\nimport { UserEditorState } from '../../../store/user/editor/types';\n// constants\nimport {\n initializeUserEditor, saveUser, \n resetUserPassword, clearResetUserPassword,\n sendUserResetPasswordEmail, clearSendUserResetPasswordEmail,\n uninitializeUserEditor\n} from '../../../store/user/editor/actions';\nimport { isNewMode, USER_CONS } from '../../../utils/AppConstants';\n\ninterface StateProps { \n editor: UserEditorState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n editor: state.userEditor\n };\n};\n\ninterface DispatchProps {\n initialize: typeof initializeUserEditor;\n save: typeof saveUser;\n resetPassword: typeof resetUserPassword;\n clearResetPassword: typeof clearResetUserPassword;\n sendResetPasswordEmail: typeof sendUserResetPasswordEmail;\n clearResetPasswordEmail: typeof clearSendUserResetPasswordEmail;\n uninitialize: typeof uninitializeUserEditor;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeUserEditor,\n save: saveUser,\n resetPassword: resetUserPassword,\n clearResetPassword: clearResetUserPassword,\n sendResetPasswordEmail: sendUserResetPasswordEmail,\n clearResetPasswordEmail: clearSendUserResetPasswordEmail,\n uninitialize: uninitializeUserEditor\n }, dispatch);\n};\n\n\ntype UserEditorPageProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface UserEditorPageState {\n sub: string;\n userForm: IAAUserForm;\n initialized: boolean;\n selectedOrgOption: ReactSelectNumberKeyListItem | null;\n selectedRoleOption: ReactSelectNumberKeyListItem[];\n selectedStatusOption: ReactSelectNumberKeyListItem | null;\n selectedOrgRoles: number[];\n passwordFocus: boolean;\n isValid: boolean;\n isMinLength: boolean;\n isMinDigit: boolean;\n isMinLower: boolean;\n isMinUpper: boolean;\n isMinSpecial: boolean;\n isMinCharacterType: boolean;\n}\n\nclass UserEditor extends React.Component {\n validator: CASPasswordValidation;\n\n constructor(props: any) {\n super(props);\n\n this.validator = new CASPasswordValidation();\n\n this.state = {\n sub: ( this.props.match.params.sub ) \n ? this.props.match.params.sub \n : USER_CONS.sub,\n userForm: new AAUserForm(),\n initialized: !this.props.match.params.sub,\n selectedOrgOption: null,\n selectedRoleOption: [],\n selectedStatusOption: null,\n selectedOrgRoles: [],\n passwordFocus: false,\n isValid: false,\n isMinLength: false,\n isMinDigit: false,\n isMinLower: false,\n isMinUpper: false,\n isMinSpecial: false,\n isMinCharacterType: false\n } as UserEditorPageState;\n }\n\n componentDidMount() {\n this.props.initialize(this.state.sub);\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n componentDidUpdate(\n prevProps: any, \n prevState: any, \n snapshot: any\n ) {\n if (\n prevProps.editor.savingUser && \n !this.props.editor.savingUser && \n ( this.props.editor.error === null )\n ) this.props.history.replace(`/user/${this.props.editor.userForm.sub}`);\n\n if ((this.props.editor.userLoaded && !this.state.initialized)) {\n\n let selectedOrgObj: IAAOrganization | null = \n this.props.editor.organizationList\n .find((org: IAAOrganization) => { \n return org.organizationId === this.props.editor.userForm.organizationId; \n }) || null;\n\n var selectedOrgRoles: number[] = [];\n\n if (selectedOrgObj) {\n selectedOrgRoles = \n (!selectedOrgObj.roleId) \n ? [] \n : selectedOrgObj.roleId?.map((rId: number) => {\n return rId;\n }); \n }\n\n\n let selectedOrgItem: ReactSelectNumberKeyListItem | undefined = \n this.props.editor.organizationList\n .map((org: IAAOrganization) => {\n return {\n value: org.organizationId,\n label: org.name\n } as ReactSelectNumberKeyListItem;\n })\n .find((item: ReactSelectNumberKeyListItem) => {\n return item.value === this.props.editor.userForm.organizationId;\n });\n\n var selectedRole: ReactSelectNumberKeyListItem[] = [];\n\n if (this.props.editor.userForm.roleId) {\n selectedRole = \n this.props.editor.userForm.roleId\n .map((rId: number) => {\n return this.props.editor.roleList.find(\n role => { return role.id === rId; }\n );\n })\n .map(\n (role: IAARole | null | undefined) => {\n return {\n value: role?.id,\n label: role?.description\n } as ReactSelectNumberKeyListItem;\n });\n }\n\n \n\n let selectedStatus: ReactSelectNumberKeyListItem | undefined = \n USER_CONS.statusOptions.find(\n (item: ReactSelectNumberKeyListItem) => {\n return item.value === this.props.editor.userForm.status;\n }\n );\n\n this.setState((state: any, props: any) => {\n return {\n ...state,\n sub: ( state.sub === USER_CONS.sub ) \n ? props.editor.userForm.sub \n : state.sub,\n userForm: props.editor.userForm,\n selectedOrgOption: selectedOrgItem,\n selectedRoleOption: selectedRole,\n selectedOrgRoles: selectedOrgRoles,\n selectedStatusOption: selectedStatus,\n initialized: true\n };\n });\n }\n\n if (\n this.props.editor.changePasswordSuccess && \n ( this.props.editor.changingPassword !== prevProps.editor.changingPassword)\n ) {\n this.setState((state, props) => {\n var userForm = state.userForm;\n\n userForm.password = '';\n userForm.passwordConfirm = '';\n\n return {\n ...state,\n userForm: userForm,\n isValid: false,\n isMinLength: false,\n isMinDigit: false,\n isMinLower: false,\n isMinUpper: false,\n isMinSpecial: false,\n isMinCharacterType: false\n };\n });\n }\n }\n\n setFormItemValue = (\n property: string, \n event: React.ChangeEvent | React.ChangeEvent\n ): void => {\n\n event.preventDefault();\n\n let currentValue = event.currentTarget.value;\n\n this.setState((state, props) => {\n var userForm = state.userForm;\n\n switch (property) {\n case USER_CONS.givenName:\n userForm.givenName = currentValue;\n break;\n case USER_CONS.middleName:\n userForm.middleName = currentValue;\n break;\n case USER_CONS.familyName:\n userForm.familyName = currentValue;\n break;\n case USER_CONS.userName:\n userForm.userName = currentValue;\n break;\n case USER_CONS.password:\n userForm.password = currentValue;\n\n if (currentValue.length === 0) {\n userForm.passwordConfirm = '';\n }\n\n this.validator.validate(currentValue, props.editor.complexityRequirements);\n\n break;\n case USER_CONS.passwordConfirm:\n userForm.passwordConfirm = currentValue;\n break;\n case USER_CONS.email:\n userForm.email = currentValue;\n break; \n }\n\n return {\n ...state,\n userForm: userForm,\n isValid: this.validator.isValid,\n isMinLength: this.validator.isMinLength,\n isMinDigit: this.validator.isMinDigit,\n isMinLower: this.validator.isMinLower,\n isMinUpper: this.validator.isMinUpper,\n isMinSpecial: this.validator.isMinSpecial,\n isMinCharacterType: this.validator.isMinCharacterType\n };\n });\n }\n\n setReactSelectFormItemValue = (property: string, event: any): void => {\n var userForm = this.state.userForm;\n\n this.setState((state, props) => {\n switch (property) {\n case USER_CONS.orgId:\n let organizationValue = event as ReactSelectNumberKeyListItem;\n\n if (organizationValue !== null) {\n userForm.organizationId = organizationValue.value;\n }\n\n let selectedOrgObj: IAAOrganization | null = \n organizationValue !== null \n ? (this.props.editor.organizationList\n .find(\n (org: IAAOrganization) => { \n return org.organizationId === organizationValue.value; \n }\n ) || null\n )\n : null;\n\n let selectedOrgRoles: number[] = \n (selectedOrgObj && selectedOrgObj.roleId)\n ? selectedOrgObj.roleId.map(\n (rId: number) => {\n return rId;\n })\n : [];\n\n if (selectedOrgObj) {\n return {\n ...state,\n userForm: userForm,\n selectedOrgOption: organizationValue,\n selectedRoleOption: [],\n selectedOrgRoles: selectedOrgRoles\n };\n }\n else {\n return {\n ...state,\n userForm: userForm,\n selectedOrgOption: organizationValue\n };\n }\n case USER_CONS.roleId:\n let roleValues = event as ReactSelectNumberKeyListItem[];\n\n if (roleValues !== null) {\n userForm.roleId = roleValues\n .map((item: ReactSelectNumberKeyListItem) => {\n return item.value;\n });\n }\n\n return {\n ...state,\n userForm: userForm,\n selectedRoleOption: roleValues\n };\n case USER_CONS.statusId:\n let statusValue = event as ReactSelectNumberKeyListItem;\n\n if (statusValue !== null) {\n userForm.status = statusValue.value;\n }\n\n return {\n ...state,\n userForm: userForm,\n selectedStatusOption: statusValue\n }; \n default:\n break;\n }\n });\n }\n\n saveUserForm = (): void => {\n this.props.save(this.state.userForm, this.state.sub);\n }\n\n resetPasswordForm = (): void => {\n if (this.state.userForm.password === this.state.userForm.passwordConfirm) {\n this.props.resetPassword(this.state.sub, (this.state.userForm.password || \"\"));\n }\n }\n\n sendResetEmail = (): void => {\n if (!this.props.editor.sendingResetPasswordEmail) {\n this.props.sendResetPasswordEmail(this.state.sub);\n }\n }\n\n resetPasswordModalDismiss = (): void => {\n this.props.clearResetPassword();\n }\n\n resetPasswordEmailModalDismiss = (): void => {\n this.props.clearResetPasswordEmail();\n }\n\n togglePasswordCursorState = (): void => {\n this.setState((state, props) => {\n return {\n ...state,\n passwordFocus: !state.passwordFocus\n };\n });\n }\n\n back = (): void => {\n this.props.history.goBack();\n }\n\n render() {\n let { editor } = this.props;\n\n let organizationOptions = editor.organizationList.map((org, index) => {\n return {\n value: org.organizationId,\n label: org.name\n } as ReactSelectNumberKeyListItem;\n });\n\n let roleOptions = editor.roleList.map((role, index) => {\n return {\n value: role.id,\n label: role.description\n } as ReactSelectNumberKeyListItem;\n });\n\n let minLengthReq = editor.complexityRequirements.minLength > 0 ? (\n \n Password must be at least {editor.complexityRequirements.minLength} character{editor.complexityRequirements.minLength > 1 ? 's' : ''}\n \n ) : (null);\n\n let minDigitReq = editor.complexityRequirements.minNumberOfDigits > 0 ? (\n Password must have at least {editor.complexityRequirements.minNumberOfDigits} digit{editor.complexityRequirements.minNumberOfDigits > 1 ? 's' : ''}\n \n ) : (null);\n\n let minLowerReq = editor.complexityRequirements.minNumberOfLower > 0 ? (\n \n Password must have at least {editor.complexityRequirements.minNumberOfLower} lowercase alphabetic character{editor.complexityRequirements.minNumberOfLower > 1 ? 's' : ''}\n \n ) : (null);\n\n let minUpperReq = editor.complexityRequirements.minNumberOfUpper > 0 ? (\n \n Password must have at least {editor.complexityRequirements.minNumberOfUpper} uppercase alphabetic character{editor.complexityRequirements.minNumberOfUpper > 1 ? 's' : ''}\n \n ): (null);\n\n let minSpecialReq = editor.complexityRequirements.minNumberOfSpecial > 0 ? (\n \n Password must have at least {editor.complexityRequirements.minNumberOfSpecial} special character{editor.complexityRequirements.minNumberOfSpecial > 1 ? 's' : ''}\n \n ): (null);\n\n let minTypeReq = editor.complexityRequirements.minNumberOfCharacterTypes > 0 ? (\n \n Password must have at least {editor.complexityRequirements.minNumberOfCharacterTypes} character types\n \n ) : (null);\n\n let passwordHistoryReq = editor.complexityRequirements.numberOfHistoricalPasswords > 0 ? (\n
  • Cannot use one of the user's last {editor.complexityRequirements.numberOfHistoricalPasswords} password{editor.complexityRequirements.numberOfHistoricalPasswords > 1 ? 's' : ''}
  • \n ) : (null);\n\n let passwordAgeLength = editor.complexityRequirements.passwordAgeInDays > 0 ? (\n
  • Password will last for {editor.complexityRequirements.passwordAgeInDays} days
  • \n ) : (null);\n\n let passwordRequirementAlert = (\n
    \n
      Password Requirements:
    \n
    \n\n
      \n {minLengthReq}\n {minDigitReq}\n {minLowerReq}\n {minUpperReq}\n {minSpecialReq}\n {minTypeReq}\n {passwordHistoryReq}\n {passwordAgeLength}\n
    \n
    \n );\n\n let passwordMismatchLabel = this.state.userForm.password !== this.state.userForm.passwordConfirm ? (\n \n ) : (null);\n\n let passwordInvalidLabel = !this.state.isValid && (this.state.userForm.password && this.state.userForm.password.length > 0) ? (\n \n ): (null);\n\n let passwordSection = this.state.sub !== USER_CONS.sub ? (\n
    \n

    Account Password

    \n
    \n \n Send Reset Password Email\n \n
    \n {passwordRequirementAlert}\n
    \n \n
    \n this.setFormItemValue(USER_CONS.password, event)}\n onFocus={this.togglePasswordCursorState}\n onBlur={this.togglePasswordCursorState}\n />\n {passwordInvalidLabel}\n
    \n
    \n
    \n \n
    \n this.setFormItemValue(USER_CONS.passwordConfirm, event)}\n />\n {passwordMismatchLabel}\n
    \n
    \n
    \n   \n

    \n The account password can only be changed by clicking the Reset Password button.\n

    \n

    Saving the user profile will not change the user password.

    \n
    \n
    \n \n Reset Password\n \n
    \n
    \n ) : (null);\n\n let statusInformation = this.state.sub !== USER_CONS.sub ? (\n
    \n \n
    \n this.setReactSelectFormItemValue(USER_CONS.statusId, event)}\n />\n
    \n
    \n ): (null);\n\n let resetPasswordSuccessModal = editor.changePasswordSuccess ? (\n ) : (null);\n\n let resetPasswordEmailSuccessModal = editor.sendResetPasswordEmailSuccess ? (\n ) : (null);\n\n let content = !editor.initializing ? (\n
    \n

    User Form

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n

    {\n (isNewMode(this.state.userForm.sub, USER_CONS.sub)) \n ? `New User` \n : `Edit User`\n }\n

    \n
    \n
    \n\n
    \n
    \n
    \n
    \n

    Account Information

    \n
    \n \n
    \n this.setFormItemValue(USER_CONS.userName, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setFormItemValue(USER_CONS.email, event)}\n />\n
    \n
    \n {passwordSection}\n

    User Information

    \n
    \n \n
    \n this.setFormItemValue(USER_CONS.givenName, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setFormItemValue(USER_CONS.middleName, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setFormItemValue(USER_CONS.familyName, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(USER_CONS.orgId, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(USER_CONS.roleId, event)}\n isOptionDisabled={(option) => !this.state.selectedOrgRoles.includes(option.value)}\n />\n
    \n
    \n {statusInformation}\n
    \n \n Save\n \n
    \n
    \n
    \n
    \n ): ()\n\n return (\n
    \n
    \n \n {content}\n {resetPasswordSuccessModal}\n {resetPasswordEmailSuccessModal}\n \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(UserEditor)); ","// libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// interfaces & models\nimport { \n AARole, IAARole, IAAPrivilege, IAAOrganization\n} from \"@algo/network-manager/models/v3/admin\";\nimport { \n ReactSelectNumberKeyListItem \n} from '../../../models/ReactSelectListItems';\n// styles\nimport reactSelectStyles from '../../../utils/reactSelectStyles';\n// components\nimport Select from 'react-select';\nimport Content from '../../base/layout/Content';\nimport Loading from '../Loading';\n// store\nimport {\n initializeRoleEditor, saveRole, uninitializeRoleEditor\n} from '../../../store/role/editor/actions';\n// constants\nimport {\n ROLE_DEFAULT_ID, ROLE_DESCRIPTION, ROLE_PRIVILEGES,\n ROLE_ORGANIZATIONS\n} from '../../../utils/AppConstants';\n// store\nimport { RoleEditorState } from '../../../store/role/editor/types';\nimport { AppState } from '../../../store';\n\ninterface StateProps { \n editor: RoleEditorState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n editor: state.roleEditor\n };\n};\n\ninterface DispatchProps {\n initialize: typeof initializeRoleEditor;\n save: typeof saveRole;\n uninitialize: typeof uninitializeRoleEditor;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeRoleEditor,\n save: saveRole,\n uninitialize: uninitializeRoleEditor\n }, dispatch);\n};\n\ntype RoleEditorPageProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface RoleEditorPageState {\n roleId: number;\n initialized: boolean;\n role: IAARole;\n selectedPrivileges: ReactSelectNumberKeyListItem[];\n selectedOrganizations: ReactSelectNumberKeyListItem[];\n}\n\nclass RoleEditor extends React.Component {\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n roleId: this.props.match.params.roleId ? this.props.match.params.roleId : ROLE_DEFAULT_ID,\n initialized: !this.props.match.params.roleId,\n role: new AARole(),\n selectedPrivileges: [],\n selectedOrganizations: []\n } as RoleEditorPageState;\n }\n\n componentDidMount() {\n this.props.initialize(this.state.roleId);\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n if (prevProps.editor.savingRole && !this.props.editor.savingRole && this.props.editor.error === null) {\n this.props.history.replace(`/role/${this.props.editor.role.id}`);\n }\n\n if ((this.props.editor.roleLoaded && !this.state.initialized)) {\n this.setState((prevState, props) => {\n let selectedPrivilege = \n props.editor.privilegeList.filter((privilege: IAAPrivilege) => {\n return props.editor.role.privilegeId?.includes(privilege.id);\n })\n .map((privilege: IAAPrivilege) => {\n return {\n value: privilege.id,\n label: privilege.description\n } as ReactSelectNumberKeyListItem;\n });\n\n let selectedOrganization = \n props.editor.organizationList.filter(\n (organization: IAAOrganization) => {\n return props.editor.role.organizationId?.includes(organization.organizationId);\n }\n ).map(\n (organization: IAAOrganization) => {\n return {\n value: organization.organizationId,\n label: organization.name\n } as ReactSelectNumberKeyListItem;\n }\n );\n\n return {\n roleId: prevState.roleId === ROLE_DEFAULT_ID ? props.editor.role.id : prevState.roleId,\n role: props.editor.role,\n selectedPrivileges: selectedPrivilege,\n selectedOrganizations: selectedOrganization,\n initialized: true\n };\n });\n }\n\n }\n\n componentWillUnmount() {\n this.props.uninitialize();\n }\n\n setReactSelectFormItemValue = (\n property: string,\n event: any\n ): void => {\n\n var role = this.state.role;\n\n this.setState((state, props) => {\n switch (property) {\n case ROLE_PRIVILEGES:\n let privilegeValues = \n event as ReactSelectNumberKeyListItem[];\n\n if (privilegeValues !== null) {\n role.privilegeId = privilegeValues\n .map(item => {\n return item.value;\n });\n \n }\n \n return {\n ...state,\n role: role,\n selectedPrivileges: privilegeValues\n };\n case ROLE_ORGANIZATIONS:\n let organizationValues = \n event as ReactSelectNumberKeyListItem[];\n\n if (organizationValues !== null) {\n role.organizationId = organizationValues\n .map(item => {\n return item.value;\n });\n }\n \n return {\n ...state,\n role: role,\n selectedOrganizations: organizationValues\n };\n default:\n break;\n }\n });\n }\n\n setFormItemValue = (\n property: string, \n event: React.ChangeEvent | React.ChangeEvent\n ): void => {\n \n event.preventDefault();\n\n let currentValue = event.currentTarget.value;\n\n this.setState((state, props) => {\n var role = state.role;\n\n switch (property) {\n case ROLE_DESCRIPTION:\n role.description = currentValue;\n role.name = currentValue.replace(/\\s/g, '');\n\n return {\n ...state,\n role: role\n };\n default:\n break;\n }\n });\n }\n\n submit = (event?: React.FormEvent): void => {\n if (event) {\n event.preventDefault();\n }\n\n this.props.save(this.state.role); \n }\n\n back = (): void => {\n this.props.history.goBack();\n }\n\n render() {\n let { editor } = this.props;\n\n let privOptions = editor.privilegeList.map((priv, index) => {\n return {\n value: priv.id,\n label: priv.description\n } as ReactSelectNumberKeyListItem;\n });\n\n let orgOptions = editor.organizationList.map((org, index) => {\n return {\n value: org.organizationId,\n label: org.name\n } as ReactSelectNumberKeyListItem;\n });\n\n\n let content = !editor.initializing ? (\n
    \n

    Role Form

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n

    \n {\n ( this.state.role.id === ROLE_DEFAULT_ID ) \n ? `New Role` \n : `Edit Role`\n }\n

    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n

    Role Information

    \n
    \n \n
    \n \n this.setFormItemValue(\n ROLE_DESCRIPTION, \n event\n )\n }\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(ROLE_PRIVILEGES, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(ROLE_ORGANIZATIONS, event)}\n />\n
    \n
    \n
    \n \n Save\n \n
    \n
    \n
    \n
    \n
    \n ) : ()\n\n return (\n
    \n
    \n \n {content}\n \n
    \n
    \n );\n }\n\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(RoleEditor)); ","// libraries\nimport { flexSmart } from \"@caps-mobile/styled-lib\";\nimport styled from \"styled-components\";\n\nexport const StyledVisitDashboardRow = styled.div`\n margin-bottom: 10px;\n`;\n\nexport const CopyBtnWrapper = styled.div`\n height: 41px;\n width: 10%;\n \n ${flexSmart(\"center center\")}\n`;","// libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators } from \"redux\";\n// store\nimport { AppState } from '../../../store';\nimport { ProfileState } from '../../../store/profile/types';\nimport { \n OrganizationDashboardState \n} from '../../../store/organization/dashboard/types';\nimport {\n initializeOrganizationDashboard,\n loadOrganizations,\n removeOrganization,\n uninitializeOrganizationDashboard\n} from '../../../store/organization/dashboard/actions';\n// components\nimport ConfirmationModal from '../../base/modals/ConfirmationModal';\nimport { \n GenericTableView, GenericTableViewSettings, GenericTableViewColumnDefinition\n} from '../../base/layout/GenericTableView';\n// constants\nimport {\n DEFAULT_QUERY,\n DEFAULT_PAGE_INDEX,\n DEFAULT_PAGE_SIZE,\n DEFAULT_TOTAL_PAGES,\n DEFAULT_ORGANIZATION_ID\n} from '../../../utils/AppConstants';\nimport { \n DELETE_ORGANIZATION, CREATE_ORGANIZATION \n} from '../../../models/Privileges';\n\ninterface StateProps {\n profile: ProfileState;\n dashboard: OrganizationDashboardState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n profile: state.profile,\n dashboard: state.organizationDashboard\n };\n};\n\ninterface DispatchProps {\n initialize: typeof initializeOrganizationDashboard;\n remove: typeof removeOrganization;\n search: typeof loadOrganizations;\n uninitialize: typeof uninitializeOrganizationDashboard;\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return bindActionCreators({\n initialize: initializeOrganizationDashboard,\n remove: removeOrganization,\n search: loadOrganizations,\n uninitialize: uninitializeOrganizationDashboard\n }, dispatch);\n}\n\ntype OrganizationTableViewProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface OrganizationTableViewState {\n currentPageIndex: number;\n pageSize: number;\n totalPages: number;\n query: string;\n organizationId: number;\n showDeleteConfirmModal: boolean;\n}\n\nclass OrganizationTableView \n extends React.Component<\n OrganizationTableViewProps, \n OrganizationTableViewState\n > \n{\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n currentPageIndex: DEFAULT_PAGE_INDEX,\n pageSize: DEFAULT_PAGE_SIZE,\n totalPages: DEFAULT_TOTAL_PAGES,\n query: DEFAULT_QUERY,\n organizationId: DEFAULT_ORGANIZATION_ID,\n showDeleteConfirmModal: false\n } as OrganizationTableViewState;\n }\n\n componentDidMount() {\n this.props.initialize();\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n if (\n ( this.props.dashboard.deletingOrganization !== prevProps.dashboard.deletingOrganization ) && \n !this.props.dashboard.deletingOrganization\n ) this.applyFilter(this.state.query);\n }\n \n searchBoxChange = (query: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n };\n });\n }\n\n clearFilter = (): void => {\n this.props.search(DEFAULT_QUERY);\n\n this.setState((state, props) => {\n return {\n ...state,\n query: DEFAULT_QUERY\n };\n });\n }\n\n applyFilter = (query: string, key?: number): void => {\n this.props.search(this.state.query);\n }\n\n newOrganization = (): void => {\n $('[data-toggle=\"tooltip\"]').tooltip('hide');\n\n this.props.history.push(`/organization/new`);\n }\n\n viewOrganization = (id: number): void => {\n if (this.props.profile.userProfile.hasPrivilege(CREATE_ORGANIZATION)) {\n this.props.history.push(`/organization/${id}`);\n }\n }\n\n showDeleteModal = (id: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n organizationId: id,\n showDeleteConfirmModal: true\n };\n });\n }\n\n confirmDelete = (): void => {\n this.deleteOrganization(this.state.organizationId);\n\n this.setState((state, props) => {\n return {\n ...state,\n organizationId: DEFAULT_ORGANIZATION_ID,\n showDeleteConfirmModal: false\n };\n });\n }\n\n dismissDelete = (): void => {\n this.setState((state, props) => {\n return {\n ...state,\n organizationId: DEFAULT_ORGANIZATION_ID,\n showDeleteConfirmModal: false\n };\n });\n }\n\n deleteOrganization = (id: number): void => {\n if (!this.props.dashboard.deletingOrganization) {\n this.props.remove(id);\n }\n }\n\n render() {\n let { dashboard, profile } = this.props;\n\n let tableSettings = {\n tableClassName: 'av-organization-table',\n actionButtonClass: 'btn btn-outline-danger',\n actionButtonGlyphClass: 'delete-icon',\n columnDefinitions: [\n {\n propertyName: 'organizationId',\n isKey: true\n },\n {\n propertyName: 'name',\n displayName: 'Name',\n isKey: false,\n headerColumnClass: 'av-organization-description-col'\n },\n {\n propertyName: 'description',\n displayName: 'Description',\n isKey: false,\n headerColumnClass: 'av-organization-description-col'\n }\n ] as GenericTableViewColumnDefinition[],\n emptyTableMessage: 'No organizations',\n showPageSizeSelector: false,\n newItemDisabled: !profile.userProfile.hasPrivilege(CREATE_ORGANIZATION),\n actionDisabled: !profile.userProfile.hasPrivilege(DELETE_ORGANIZATION),\n rowClickDisabled: !profile.userProfile.hasPrivilege(CREATE_ORGANIZATION)\n } as GenericTableViewSettings;\n\n return (\n
    \n \n {\n this.state.showDeleteConfirmModal \n ? \n : (null)\n }\n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(OrganizationTableView));","import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n\nimport Content from '../../base/layout/Content';\nimport FeedbackTableView from './FeedbackTableView';\nimport { AppState } from \"../../../store\";\n\ninterface StateProps { \n}\n\nfunction mapStateToProps(state: AppState) {\n return { \n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch) {\n return bindActionCreators({\n \n }, dispatch);\n}\n\ntype FeedbackListProps = \n StateProps & \n RouteComponentProps;\n\nclass FeedbackList extends React.Component {\n\n componentDidMount() {\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(FeedbackList));","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// models & interfaces\n// store\nimport {\n initializeFeedbackDashboard, loadFeedback,\n uninitializeFeedbackDashboard\n} from '../../../store/feedback/dashboard/actions';\nimport { AppState } from \"../../../store\";\nimport { FeedbackDashboardState } from \"../../../store/feedback/dashboard/types\";\nimport { ProfileState } from \"../../../store/profile/types\";\n// components\nimport { \n GenericTableView, GenericTableViewSettings\n } from \"../../base/layout/GenericTableView\";\n// constants\nimport { DATE_STRING_FORMAT, DEFAULT_QUERY } from '../../../utils/AppConstants';\nimport { IATFeedback } from \"@algo/network-manager/models/v3\";\nimport moment from \"moment\";\n\ninterface OwnProps {\n showPageSizeSelector: boolean;\n showSearch: boolean;\n}\n\ninterface StateProps { \n dashboard: FeedbackDashboardState\n profile: ProfileState\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n dashboard: state.feedbackDashboard,\n profile: state.profile\n };\n};\n\ninterface DispatchProps {\n initialize: typeof initializeFeedbackDashboard;\n search: typeof loadFeedback;\n uninitialize: typeof uninitializeFeedbackDashboard;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeFeedbackDashboard,\n search: loadFeedback,\n uninitialize: uninitializeFeedbackDashboard\n }, dispatch);\n};\n\ntype FeedbackTableViewProps = \n OwnProps & \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface FeedbackTableViewState {\n query: string;\n}\n\nclass FeedbackTableView \n extends React.Component \n{\n constructor(props: Readonly) {\n super(props);\n \n this.state = {\n query: DEFAULT_QUERY\n } as FeedbackTableViewState;\n }\n\n componentDidMount() {\n this.props.initialize();\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n \n searchBoxChange = (query: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n };\n });\n }\n\n clearFilter = (): void => {\n this.props.search(DEFAULT_QUERY);\n\n this.setState((state, props) => {\n return {\n ...state,\n query: DEFAULT_QUERY\n };\n });\n }\n\n applyFilter = (query: string, key: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n };\n });\n\n this.props.search(this.state.query);\n }\n\n goToDetail = (id: number): void => {\n this.props.history.push(`/feedback/${id}`);\n }\n\n render() {\n let { dashboard } = this.props;\n\n let tableSettings = {\n tableClassName: 'av-feedback-table',\n booleanIndicatorClass: 'av-feedback-bool-indicator',\n columnDefinitions: [\n {\n propertyName: 'id',\n isKey: true\n },\n {\n propertyName: 'unread',\n displayName: '',\n isKey: false,\n headerColumnClass: ''\n },\n {\n propertyName: 'name',\n displayName: 'Name',\n isKey: false,\n headerColumnClass: 'av-feedback-name-col'\n },\n {\n propertyName: 'subject',\n displayName: 'Subject',\n isKey: false,\n headerColumnClass: 'av-feedback-subject-col'\n },\n {\n propertyName: 'dateCreated',\n displayName: 'Date Received',\n isKey: false,\n headerColumnClass: 'av-feedback-received-col'\n }\n ],\n emptyTableMessage: 'No feedback',\n showPageSizeSelector: false,\n newItemDisabled: true,\n actionDisabled: true,\n rowClickDisabled: false\n } as GenericTableViewSettings;\n\n return (\n {\n return {\n ...feedback,\n dateCreated: moment(feedback.dateCreated)\n .format(DATE_STRING_FORMAT)\n }\n }\n )}\n searchBoxChangeCallback={this.searchBoxChange}\n clearFilterCallback={this.clearFilter}\n applyFilterCallback={this.applyFilter}\n rowClickCallback={this.goToDetail}\n isLoading={dashboard.initializing || dashboard.loadingFeedback}\n isProcessingAction={false}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(FeedbackTableView)); ","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// store\nimport { AppState } from \"../../../store\";\n// components\nimport Content from '../../base/layout/Content';\nimport FeedbackDetailView from './FeedbackDetailView';\n// constants\nimport { FEEDBACK_DEFAULT_ID } from \"../../../utils/AppConstants\";\n\ninterface StateProps { \n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n };\n};\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n }, dispatch);\n};\n\ntype FeedbackDetailProps = \n StateProps & \n RouteComponentProps;\n\ninterface FeedbackDetailState {\n id: number;\n}\n\nclass FeedbackDetail extends React.Component {\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n id: ( this.props.match.params.feedbackId ) \n ? this.props.match.params.feedbackId \n : FEEDBACK_DEFAULT_ID\n } as FeedbackDetailState;\n }\n\n componentDidMount() {\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n goToDashboard = (): void => {\n this.props.history.goBack();\n }\n\n render() {\n return (\n
    \n
    \n \n \n \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(FeedbackDetail)); ","// libraries\nimport * as React from 'react';\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// models & interfaces\nimport { \n ATFeedbackResponse,\n IATFeedbackResponse \n} from \"@algo/network-manager/models/v3\";\n// store\nimport {\n initializeFeedbackDetail, sendResponse, uninitializeFeedbackDetail\n} from '../../../store/feedback/detail/actions';\nimport { AppState } from '../../../store';\nimport { ProfileState } from '../../../store/profile/types';\nimport { FeedbackDetailState } from '../../../store/feedback/detail/types';\n// components\nimport Loading from '../Loading';\nimport DismissableModal from '../../base/modals/DismissableModal';\n// constants\nimport {\n FEEDBACK_DEFAULT_ID, FEEDBACK_RESPONSE_MESSAGE\n} from \"../../../utils/AppConstants\";\nimport { EMAIL_FEEDBACK_RESPONSE } from '../../../models/Privileges';\n\ninterface OwnProps {\n id: number;\n}\n\ninterface StateProps { \n profile: ProfileState;\n detail: FeedbackDetailState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n profile: state.profile,\n detail: state.feedbackDetail\n };\n}\n\ninterface DispatchProps {\n initialize: typeof initializeFeedbackDetail;\n sendResponse: typeof sendResponse;\n uninitialize: typeof uninitializeFeedbackDetail;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeFeedbackDetail,\n sendResponse: sendResponse,\n uninitialize: uninitializeFeedbackDetail\n }, dispatch);\n}\n\ntype FeedbackDetailViewProps = \n StateProps & \n DispatchProps & \n OwnProps & \n RouteComponentProps;\n\ninterface FeedbackDetailViewState {\n id: number;\n feedbackResponse: IATFeedbackResponse;\n showSuccessModal: boolean;\n}\n\nclass FeedbackDetailView \n extends React.Component<\n FeedbackDetailViewProps, \n FeedbackDetailViewState\n > \n{\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n id: this.props.id ? this.props.id : FEEDBACK_DEFAULT_ID,\n feedbackResponse: new ATFeedbackResponse({\n feedbackId: this.props.id ? this.props.id : FEEDBACK_DEFAULT_ID,\n responseMessage: ''\n }),\n showSuccessModal: false\n };\n }\n\n componentDidMount() {\n this.props.initialize(this.state.id);\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n if (\n ( this.props.detail.sendingResponse !== prevProps.detail.sendingResponse ) && \n !this.props.detail.sendingResponse\n ) {\n this.setState((prevState, props) => {\n var updatedResponse = prevState.feedbackResponse;\n updatedResponse.responseMessage = '';\n\n return {\n feedbackResponse: updatedResponse,\n showSuccessModal: props.detail.error === null\n };\n });\n }\n }\n\n componentWillUnmount() {\n this.props.uninitialize();\n }\n\n back = (): void => {\n this.props.history.goBack();\n }\n\n setFeedbackItemValue = (property: any, event: any): void => {\n event.preventDefault();\n\n var currentValue = event.currentTarget.value;\n\n this.setState((prevState, props) => {\n var feedbackResponse = prevState.feedbackResponse;\n\n switch (property) {\n case FEEDBACK_RESPONSE_MESSAGE:\n feedbackResponse.responseMessage = currentValue;\n break;\n }\n\n return {\n feedbackResponse: feedbackResponse\n };\n });\n }\n\n submit = (): void => {\n if (!this.props.detail.sendingResponse) {\n this.props.sendResponse(this.state.feedbackResponse);\n }\n }\n\n closeModal = (): void => {\n this.setState((prevState, props) => {\n return {\n showSuccessModal: false\n };\n });\n }\n\n render() {\n let { detail, profile } = this.props;\n\n let feedbackContact = (\n
    \n {\n ( detail.feedback.email !== '' ) \n ? `${detail.feedback.name}` + \n `${\n detail.feedback.company && \n detail.feedback.company !== '' \n ? `, ${detail.feedback.company}` \n : ``\n } <${detail.feedback.email}>` \n : `${detail.feedback.name}`\n \n }\n
    \n );\n\n let successModal = \n ( this.state.showSuccessModal )\n ? (\n \n ) \n : null;\n\n if (detail.loading) {\n return ;\n }\n else {\n return (\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n

    {detail.feedback.subject}

    \n {feedbackContact}\n
    \n {detail.feedback.formattedDateCreated()}\n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n

    Comment

    \n

    {detail.feedback.comments}

    \n
    \n
    \n

    Respond to Feedback

    \n
    \n
    \n \n this.setFeedbackItemValue(\n FEEDBACK_RESPONSE_MESSAGE, \n event\n )\n }\n />\n
    \n
    \n
    \n \n \n Send\n \n
    \n
    \n
    \n {successModal}\n
    \n );\n }\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(FeedbackDetailView));","//libraries\nimport * as React from \"react\";\nimport { nuon } from \"@caps-mobile/common-lib\";\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// interfaces & models\nimport { EATStreamAccessLevel } from \"@algo/network-manager/models/v3\"\nimport { isMaxSize } from \"@algo/window-sizer\";\n// hooks\nimport { useWatchSizeClass } from \"@algo/window-sizer\";\n// enums\nimport { EBreakpoint } from \"@algo/window-sizer\";\n// redux-state-types\nimport {\n State as PageState\n} from \"../../../../store/cameraDevice/dashboard/types/pageStateTypes\";\nimport {\n State as StreamPreviewsState\n} from \"../../../../store/cameraDevice/dashboard/types/streamPreviewsTypes\";\nimport {\n State as ToolbarState\n} from \"../../../../store/cameraDevice/dashboard/types/toolbarTypes\";\nimport { AppState } from '../../../../store';\n//redux-actions\nimport {\n loadDatasources,\n} from \"../../../../store/cameraDevice/dashboard/actions/toolbarActions\";\nimport {\n updateAccessLevels,\n updatePageState,\n} from \"../../../../store/cameraDevice/dashboard/actions/pageStateActions\";\n//components\nimport { ThemedDropdown } from \"@caps-mobile/themed-dropdown\";\nimport { Center } from \"@algo/capsstrap\";\nimport { IconLabel } from \"@algo/icon-label\";\nimport { Row, Col } from \"reactstrap\";\n// constants\nimport { \n StreamAccessLevelOptions, ACCESS_LEVEL_TOOLTIP \n} from \"../../../../utils/AppConstants\";\n\n/**************************************************************************\n COMPONENT PROPS INTERFACES\n*************************************************************************/\n// redux store props\ninterface StateProps {\n pageState: PageState;\n previewsState: StreamPreviewsState;\n toolbarState: ToolbarState;\n}\n// redux action props\ninterface DispatchProps {\n updatePageState: typeof updatePageState;\n loadDatasources: typeof loadDatasources;\n //updateAccessLevels: typeof updateAccessLevels;\n}\n// redux store mapper\nlet mapStateToProps = (state: AppState) => {\n return {\n pageState: state.streamPageState,\n previewsState: state.streamPreviews,\n toolbarState: state.streamToolbar\n }\n}\n// redux action mapper\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators(\n {\n updatePageState: updatePageState,\n loadDatasources: loadDatasources,\n //updateAccessLevels: updateAccessLevels\n },\n dispatch\n );\n}\n\ntype IProps = StateProps & DispatchProps & RouteComponentProps;\n\nexport let AccessLevelRow: React.FC = (props) => {\n\n /*************************************************************************|\n CALCULATED VALUES & BREVITY NAMES \n |*************************************************************************/\n const editMode: boolean = props.pageState.editMode;\n\n const sizeClass: EBreakpoint = useWatchSizeClass();\n const isSmallMax: boolean = isMaxSize(sizeClass, EBreakpoint.SM);\n\n const camsLoading: boolean = props.previewsState.cameraData.isLoading;\n\n let accessLevelOptions: string[] = StreamAccessLevelOptions.map(\n (value: string) => {\n return value;\n }\n )\n\n let accessLevelSelected: boolean = nuon(props.pageState.selectedAccessLevel); // check if an access level has been selected\n \n let hasSelected: boolean = props.pageState.selectedStreams.length > 0; // confirm some cameras are selected\n\n let updateCamsOk: boolean = // used to toggle update button between active/disabled\n !camsLoading &&\n accessLevelSelected &&\n hasSelected;\n\n /*************************************************************************|\n EFFECTS \n |*************************************************************************/\n React.useEffect(\n () => {\n // intialize bootstrap/popper tooltips\n if(editMode) $('[data-toggle=\"tooltip\"]').tooltip();\n\n // ensure that all tooltips are hidden when component UnMounts\n return () => { $('[data-toggle=\"tooltip\"]').tooltip('hide'); }\n }, [editMode]\n );\n\n /*************************************************************************|\n PRIMARY RENDER\n |*************************************************************************/\n return (\n \n \n
    \n \n
    \n \n \n
    \n {\n props.updatePageState({\n ...props.pageState,\n selectedAccessLevel: \n EATStreamAccessLevel[\n accessLevelOptions[newIndex] as keyof typeof EATStreamAccessLevel\n ]\n })\n }}\n />\n
    \n \n \n
    \n {\n (updateCamsOk) && props.updatePageState({\n ...props.pageState,\n showUpdateModal: true,\n })\n }}\n disabled={!updateCamsOk}\n >\n \n \n
    \n \n
    \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(AccessLevelRow));","//libraries\nimport * as React from \"react\";\nimport { newTooltipAttributes, useTooltip } from \"@algo/tooltip\";\nimport {VideoJs, DefaultConfig} from \"@caps-mobile/video-js\";\n//enums\nimport { EATStreamAccessLevel } from \"@algo/network-manager/models/v3\";\n//models & interfaces\nimport { IATCloudStreamTarget } from \"@algo/network-manager/models/v3\";\n//components\nimport { ISelectOption, Select } from \"@algo/select\";\nimport { Icon } from \"@algo/icon\";\nimport { Container, Row, Col } from \"reactstrap\";\nimport { Body3 } from \"@algo/algo-styles\";\nimport { Center } from \"@algo/capsstrap\";\n// constants\nimport { StreamAccessLevelOptions }from \"../../../../utils/AppConstants\";\nimport { videojsHtml5 } from \"../../../../constants\";\n\ninterface IStreamViewer {\n cloudStreamTarget?: IATCloudStreamTarget;\n videoHeight?: number;\n delete?: (id: number) => any;\n updateAccessLevel?: (newLevel: EATStreamAccessLevel) => any;\n updatingAccessLevel?: boolean;\n}\n\nexport const CloudStreamTarget: React.FC = (props) => {\n\n /*************************************************************\n STATE\n ************************************************************/\n\n /*************************************************************\n EFFECTS\n ************************************************************/\n useTooltip($, false);\n\n /*************************************************************\n CALCULATED VALUES & BREVITY NAMES\n ************************************************************/\n const noTarget: boolean = !props.cloudStreamTarget || !props.cloudStreamTarget.hlsPlaybackUrl;\n\n const streamUrlTextRef: any = React.useRef(null); // used to capture textarea text for clipboard action (this should be replaced with clipboard api soon)\n\n let accessLevelOptions: Array = // set up the options list for access level drop down\n StreamAccessLevelOptions.map(\n (value: any, mapIndex: any) => {\n return {\n label: value,\n value: value,\n id: mapIndex,\n }\n }\n );\n\n const getDefaultAccessLevelOption = () => {\n if (noTarget) return 0;\n for (let i = 0; i < accessLevelOptions.length; i++) {\n if (accessLevelOptions[i].value === props.cloudStreamTarget?.accessLevel)\n return i;\n }\n return 0;\n }\n\n const defaultAccessLevelOption = getDefaultAccessLevelOption();\n \n const videoHeight: number = props.videoHeight ? props.videoHeight : 225;\n\n /*************************************************************\n CALLBACKS AND HANDLERS\n ************************************************************/\n const handleSelectChange: any = (selection: ISelectOption) => {\n if (!noTarget && props.updateAccessLevel) \n props.updateAccessLevel(EATStreamAccessLevel[selection.label as keyof typeof EATStreamAccessLevel]);\n }\n\n /*************************************************************\n PRIMARY RENDER\n ************************************************************/\n return (\n \n {/*Video Player Row*/}\n \n \n {(noTarget)\n ?
    \n No Target Video \n
    \n : \n }\n \n
    \n {/*Information Row*/}\n \n \n \n {/* Access Level Dropdown Row*/}\n \n \n
    \n \n
    \n \n
    \n {/* URL Copy Row */}\n \n \n \n {noTarget ? \"No Cloud Stream Target\" : \"HTTP Live Streaming URL\"}\n \n {(!noTarget)\n ? [\n
    \n \n
    \n
    \n );\n}\n\nexport default CloudStreamTarget;","export const videojsHtml5 = {\n vhs: {\n // withCredentials: true,\n // note that when tokenized urls are being used on the API side, this will need to be changed\n // back to withCredentials = true.\n withCredentials: false,\n overrideNative: false\n }\n};","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n// store\nimport { AppState } from \"../../../store\";\n// components\nimport Content from '../../base/layout/Content';\nimport MessageTableView from './MessageTableView';\n\ninterface StateProps { \n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n };\n};\n\ntype MessageListProps = StateProps & RouteComponentProps;\n\nclass MessageList extends React.Component {\n\n componentDidMount() {\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n)(withRouter(MessageList));","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// models & interfaces\nimport { DELETE_MESSAGE, CREATE_MESSAGE } from \"../../../models/Privileges\";\n// store\nimport {\n initializeMessageDashboard, loadMessages, removeMessage,\n uninitializeMessageDashboard\n} from '../../../store/message/dashboard/actions';\nimport { AppState } from \"../../../store\";\nimport { ProfileState } from \"../../../store/profile/types\";\nimport { MessageDashboardState } from \"../../../store/message/dashboard/types\";\n// components\nimport ConfirmationModal from '../../base/modals/ConfirmationModal';\nimport { \n GenericTableViewSettings, GenericTableView, \n GenericTableViewColumnDefinition\n} from \"../../base/layout/GenericTableView\";\n// constants\nimport {\n DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE, DEFAULT_TOTAL_PAGES,\n MESSAGE_DEFAULT_ID, DEFAULT_QUERY, DATE_STRING_FORMAT\n} from '../../../utils/AppConstants';\nimport { ATAldotMessage } from \"@algo/network-manager/models/v3\";\nimport moment from \"moment\";\n\ninterface StateProps { \n profile: ProfileState;\n dashboard: MessageDashboardState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n profile: state.profile,\n dashboard: state.messageDashboard\n };\n};\n\ninterface DispatchProps {\n initialize: typeof initializeMessageDashboard;\n search: typeof loadMessages;\n remove: typeof removeMessage;\n uninitialize: typeof uninitializeMessageDashboard;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeMessageDashboard,\n search: loadMessages,\n remove: removeMessage,\n uninitialize: uninitializeMessageDashboard\n }, dispatch);\n};\n\ntype MessageTableViewProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface MessageTableViewState {\n currentPageIndex: number;\n pageSize: number;\n totalPages: number;\n messageId: number;\n showDeleteConfirmModal: boolean;\n query: string;\n}\n\nclass MessageTableView extends React.Component {\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n currentPageIndex: DEFAULT_PAGE_INDEX,\n pageSize: DEFAULT_PAGE_SIZE,\n totalPages: DEFAULT_TOTAL_PAGES,\n messageId: MESSAGE_DEFAULT_ID,\n showDeleteConfirmModal: false,\n query: DEFAULT_QUERY\n } as MessageTableViewState;\n }\n\n componentDidMount() {\n this.props.initialize();\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n let prevIsLoading = \n prevProps.dashboard.initializing || \n prevProps.dashboard.loadingMessages;\n\n let currentIsLoading = \n this.props.dashboard.initializing || \n this.props.dashboard.loadingMessages;\n\n if (\n ( this.props.dashboard.messages?.length !== prevProps.dashboard.messages?.length ) || \n ( this.state.pageSize !== prevState.pageSize ) || \n ( prevIsLoading !== currentIsLoading )\n ) {\n this.setState((state, props) => {\n return {\n ...state,\n totalPages: (props.dashboard.messages?.length / this.state.pageSize) || 0,\n currentPageIndex: 0\n };\n })\n }\n }\n \n searchBoxChange = (query: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n };\n });\n }\n\n clearFilter = (): void => {\n this.props.search(DEFAULT_QUERY);\n\n this.setState((state, props) => {\n return {\n ...state,\n query: DEFAULT_QUERY\n };\n });\n }\n\n applyFilter = (query: string, key: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n }\n })\n\n this.props.search(query);\n }\n\n goToEditor = (id: number): void => {\n this.props.history.push(`/message/${id}`);\n }\n\n newMessage = (): void => {\n $('[data-toggle=\"tooltip\"]').tooltip('hide');\n\n if (this.props.profile.userProfile.hasPrivilege(CREATE_MESSAGE)) {\n this.props.history.push(`/message/new`);\n }\n }\n\n showDeleteModal = (id: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n messageId: id,\n showDeleteConfirmModal: true\n };\n });\n }\n\n comfirmDelete = (): void => {\n this.delete(this.state.messageId);\n\n this.setState((state, props) => {\n return {\n ...state,\n messageId: MESSAGE_DEFAULT_ID,\n showDeleteConfirmModal: false\n };\n });\n }\n\n dismissDelete = (): void => {\n this.setState((state, props) => {\n return {\n ...state,\n messageId: MESSAGE_DEFAULT_ID,\n showDeleteConfirmModal: false\n };\n });\n }\n\n delete = (id: number): void => {\n this.props.remove(id, this.state.query);\n }\n\n render() {\n let { dashboard, profile } = this.props;\n\n let tableSettings = {\n tableClassName: 'av-message-table',\n actionButtonClass: 'btn btn-outline-danger',\n actionButtonGlyphClass: 'delete-icon',\n columnDefinitions: [\n {\n propertyName: 'id',\n isKey: true\n },\n { \n propertyName: 'title', \n displayName: 'Title', \n isKey: false, \n headerColumnClass: 'av-message-title-col' \n },\n {\n propertyName: 'start',\n displayName: 'Start Date',\n isKey: false,\n headerColumnClass: 'av-message-start-col'\n },\n {\n propertyName: 'end',\n displayName: 'End Date',\n isKey: false,\n headerColumnClass: 'av-message-end-col'\n },\n ] as GenericTableViewColumnDefinition[],\n emptyTableMessage: 'No messages',\n showPageSizeSelector: false,\n newItemDisabled: !profile.userProfile.hasPrivilege(CREATE_MESSAGE),\n rowClickDisabled: !profile.userProfile.hasPrivilege(CREATE_MESSAGE),\n actionDisabled: !profile.userProfile.hasPrivilege(DELETE_MESSAGE)\n } as GenericTableViewSettings;\n\n return (\n
    \n {\n return {\n ...message,\n start: moment(message.start).format(DATE_STRING_FORMAT),\n end: moment(message.end).format(DATE_STRING_FORMAT)\n }\n }\n )} \n isLoading={dashboard.initializing || dashboard.loadingMessages} \n isProcessingAction={dashboard.deletingMessage} \n newItemCallback={this.newMessage} \n rowClickCallback={this.goToEditor}\n actionCallback={this.showDeleteModal}\n searchBoxChangeCallback={this.searchBoxChange}\n clearFilterCallback={this.clearFilter}\n applyFilterCallback={this.applyFilter}\n />\n {\n this.state.showDeleteConfirmModal \n ? \n : (null)\n }\n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(MessageTableView));","//libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n//redux-actions\nimport {\n initializeRoleDashboard,\n searchRoles,\n removeRole,\n uninitializeRoleDashboard\n} from '../../../store/role/dashboard/actions';\n//constants\nimport { DEFAULT_ORGANIZATION_ID } from \"../../../utils/AppConstants\";\nimport {\n DEFAULT_PAGE_INDEX,\n DEFAULT_PAGE_SIZE,\n DEFAULT_TOTAL_PAGES,\n ROLE_DEFAULT_ID,\n DEFAULT_QUERY\n} from '../../../utils/AppConstants';\n\nimport ConfirmationModal from '../../base/modals/ConfirmationModal';\nimport { DELETE_ROLE, CREATE_ROLE } from '../../../models/Privileges';\nimport { ProfileState } from '../../../store/profile/types';\nimport { RoleDashboardState } from '../../../store/role/dashboard/types';\nimport { AppState } from '../../../store';\nimport {\n GenericTableViewColumnDefinition, GenericTableViewSettings,\n GenericTableView, GenericTableViewSelectFilterItem\n} from '../../base/layout/GenericTableView';\nimport { \n IAAOrganization, AAOrganization \n} from '@algo/network-manager/models/v3/admin';\n\ninterface StateProps { \n profile: ProfileState;\n dashboard: RoleDashboardState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n profile: state.profile,\n dashboard: state.roleDashboard\n };\n}\n\ninterface DispatchProps {\n initialize: typeof initializeRoleDashboard;\n search: typeof searchRoles;\n remove: typeof removeRole;\n uninitialize: typeof uninitializeRoleDashboard;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeRoleDashboard,\n search: searchRoles,\n remove: removeRole,\n uninitialize: uninitializeRoleDashboard\n }, dispatch);\n}\n\ntype RoleTableViewProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface RoleTableViewState {\n currentPageIndex: number;\n pageSize: number;\n totalPages: number;\n roleId: number;\n showDeleteConfirmModal: boolean;\n organizationId: number;\n query: string;\n}\n\nclass RoleTableView \n extends React.Component<\n RoleTableViewProps, \n RoleTableViewState\n > \n{\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n currentPageIndex: DEFAULT_PAGE_INDEX,\n pageSize: DEFAULT_PAGE_SIZE,\n totalPages: DEFAULT_TOTAL_PAGES,\n roleId: ROLE_DEFAULT_ID,\n showDeleteConfirmModal: false,\n organizationId: DEFAULT_ORGANIZATION_ID,\n query: DEFAULT_QUERY\n } as RoleTableViewState;\n }\n\n componentDidMount() {\n\n this.props.initialize();\n\n this.applyFilter(DEFAULT_QUERY, DEFAULT_ORGANIZATION_ID);\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n let previousIsLoading = prevProps.dashboard.initializing || prevProps.dashboard.loadingRoles;\n let currentIsLoading = this.props.dashboard.initializing || this.props.dashboard.loadingRoles;\n\n if (this.props.dashboard.roles.length !== prevProps.dashboard.roles.length || this.state.pageSize !== prevState.pageSize || previousIsLoading !== currentIsLoading) {\n this.setState((state, props) => {\n return {\n totalPages: props.dashboard.roles.length / this.state.pageSize,\n currentPageIndex: 0\n };\n })\n }\n\n if (this.state.organizationId !== prevState.organizationId) {\n this.applyFilter(this.state.query, this.state.organizationId);\n }\n }\n \n searchBoxChange = (query: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n };\n });\n }\n\n clearFilter = (): void => {\n this.props.search(DEFAULT_QUERY, this.state.organizationId);\n\n this.setState((state, props) => {\n return {\n ...state,\n query: DEFAULT_QUERY\n };\n });\n }\n\n applyFilter = (query: string, key: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query,\n organizationId: key\n };\n });\n\n this.props.search(query, key);\n }\n\n organizationChange = (key: number): void => {\n this.setState((state, props) =>{\n return {\n ...state,\n organizationId: key\n };\n });\n }\n\n newRole = (): void => {\n $('[data-toggle=\"tooltip\"]').tooltip('hide');\n this.props.history.push(`/role/new`);\n }\n\n viewRole = (id: number): void => {\n if (this.props.profile.userProfile.hasPrivilege(CREATE_ROLE)) {\n this.props.history.push(`/role/${id}`);\n }\n }\n\n showDeleteModal = (id: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n roleId: id,\n showDeleteConfirmModal: true\n };\n });\n }\n\n confirmDelete = (): void => {\n this.deleteRole(this.state.roleId);\n\n this.setState((state, props) => {\n return {\n ...state,\n roleId: ROLE_DEFAULT_ID,\n showDeleteConfirmModal: false\n };\n });\n }\n\n dismissDelete = (): void => {\n this.setState((state, props) => {\n return {\n ...state,\n roleId: ROLE_DEFAULT_ID,\n showDeleteConfirmModal: false\n };\n });\n }\n\n deleteRole = (id: number): void => {\n if (!this.props.dashboard.deletingRole) {\n this.props.remove(\n id, \n this.state.organizationId, \n this.state.query\n );\n }\n }\n\n render() {\n let { dashboard, profile } = this.props;\n\n let tableSettings = {\n tableClassName: 'av-role-table',\n actionButtonClass: 'btn btn-outline-danger',\n actionButtonGlyphClass: 'delete-icon',\n columnDefinitions: [\n {\n propertyName: 'id',\n isKey: true\n },\n {\n propertyName: 'description',\n displayName: 'Description',\n isKey: false,\n headerColumnClass: 'av-role-description-col'\n }\n ] as GenericTableViewColumnDefinition[],\n selectFilterPlaceholder: 'Organizations',\n selectFilterItems: [\n {\n value: DEFAULT_ORGANIZATION_ID,\n label: 'All Organizations'\n },\n ...dashboard.organizations\n .map((org: IAAOrganization) => {\n return {\n value: org.organizationId,\n label: org.name\n } as GenericTableViewSelectFilterItem;\n })\n ] as GenericTableViewSelectFilterItem[],\n emptyTableMessage: 'No roles',\n showPageSizeSelector: false,\n newItemDisabled: !profile.userProfile.hasPrivilege(CREATE_ROLE),\n actionDisabled: !profile.userProfile.hasPrivilege(DELETE_ROLE),\n rowClickDisabled: !profile.userProfile.hasPrivilege(CREATE_ROLE)\n } as GenericTableViewSettings;\n\n return (\n
    \n \n {\n this.state.showDeleteConfirmModal \n ? \n : (null)}\n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(RoleTableView)); ","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n// components\nimport Content from '../../../base/layout/Content';\nimport FacilityTableView from './FacilityTableView';\n// store\nimport { AppState } from \"../../../../store\";\n\ninterface StateProps { \n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n };\n};\n\ntype FacilityListProps = StateProps & RouteComponentProps;\n\nexport const FacilityList: React.FC = (props) => {\n\n React.useEffect(\n () => {\n $('[data-toggle=\"tooltip\"]').tooltip();\n }, []\n );\n\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default connect(\n mapStateToProps,\n)(withRouter(FacilityList));","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// models & interfaces\nimport { \n EATDirection, getDirectionLetter, IATFacilityDto, IATLocationDto \n} from \"@algo/network-manager/models/v3\";\n// store\nimport {\n initializeFacilityDashboard, removeFacility, searchFacilities,\n uninitializeFacilityDashboard\n} from '../../../../store/facility/dashboard/actions';\nimport { AppState } from \"../../../../store\";\nimport { ProfileState } from \"../../../../store/profile/types\";\nimport { FacilityDashboardState } from \"../../../../store/facility/dashboard/types\";\n// components\nimport ConfirmationModal from '../../../base/modals/ConfirmationModal';\nimport { \n GenericTableViewSettings, GenericTableView, \n GenericTableViewColumnDefinition\n} from \"../../../base/layout/GenericTableView\";\n// constants\nimport { \n DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE, DEFAULT_QUERY,\n DEFAULT_TOTAL_PAGES, FACILITY_CONSTANTS as FAC_CONST\n} from '../../../../utils/AppConstants';\n\ninterface StateProps { \n profile: ProfileState;\n dashboard: FacilityDashboardState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n profile: state.profile,\n dashboard: state.facilityDashboard\n };\n};\n\ninterface DispatchProps {\n initialize: typeof initializeFacilityDashboard;\n search: typeof searchFacilities;\n remove: typeof removeFacility;\n uninitialize: typeof uninitializeFacilityDashboard;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeFacilityDashboard,\n search: searchFacilities,\n remove: removeFacility,\n uninitialize: uninitializeFacilityDashboard\n }, dispatch);\n};\n\ntype FacilityTableViewProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface FacilityTableViewState {\n currentPageIndex: number;\n pageSize: number;\n totalPages: number;\n facilityId: number;\n showDeleteConfirmModal: boolean;\n query: string;\n}\n\nclass FacilityTableView extends React.Component {\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n currentPageIndex: DEFAULT_PAGE_INDEX,\n pageSize: DEFAULT_PAGE_SIZE,\n totalPages: DEFAULT_TOTAL_PAGES,\n facilityId: FAC_CONST.defaultId,\n showDeleteConfirmModal: false,\n query: DEFAULT_QUERY\n } as FacilityTableViewState;\n }\n\n componentDidMount() {\n this.props.initialize();\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n\n let prevIsLoading = prevProps.dashboard.initializing || prevProps.dashboard.loadingFacilities;\n let currentIsLoading = this.props.dashboard.initializing || this.props.dashboard.loadingFacilities;\n\n if (\n ( this.props.dashboard.facilities?.length !== prevProps.dashboard.facilities?.length ) || \n ( this.state.pageSize !== prevState.pageSize ) || \n ( prevIsLoading !== currentIsLoading ) \n ){\n this.setState((state, props) => {\n return {\n ...state,\n totalPages: props.dashboard.facilities ? props.dashboard.facilities.length / this.state.pageSize : 0,\n currentPageIndex: 0\n };\n })\n }\n }\n \n searchBoxChange = (query: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n };\n });\n }\n\n clearFilter = (): void => {\n this.props.search(DEFAULT_QUERY);\n\n this.setState((state, props) => {\n return {\n ...state,\n query: DEFAULT_QUERY\n };\n });\n }\n\n applyFilter = (query: string, key: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n query: query\n }\n })\n\n console.log(\"apply filter\");\n this.props.search(query);\n }\n\n goToEditor = (id: number): void => {\n this.props.history.push(`/facility/${id}`);\n }\n\n newFacility = (): void => {\n\n $('[data-toggle=\"tooltip\"]').tooltip('hide');\n this.props.history.push(`/facility/new`);\n }\n\n showDeleteModal = (id: number): void => {\n this.setState((state, props) => {\n return {\n ...state,\n facilityId: id,\n showDeleteConfirmModal: true\n };\n });\n }\n\n comfirmDelete = (): void => {\n this.delete(this.state.facilityId);\n\n this.setState((state, props) => {\n return {\n ...state,\n facilityId: FAC_CONST.defaultId,\n showDeleteConfirmModal: false\n };\n });\n }\n\n dismissDelete = (): void => {\n this.setState((state, props) => {\n return {\n ...state,\n facilityId: FAC_CONST.defaultId,\n showDeleteConfirmModal: false\n };\n });\n }\n\n delete = (id: number): void => {\n\n this.props.remove(id, this.state.query);\n }\n\n render() {\n let { dashboard, profile } = this.props;\n\n let tableSettings = {\n tableClassName: 'av-facility-table',\n actionButtonClass: 'btn btn-outline-danger',\n actionButtonGlyphClass: 'delete-icon',\n columnDefinitions: [\n {\n propertyName: 'id',\n isKey: true\n },\n { \n propertyName: 'name', \n displayName: 'Name', \n isKey: false, \n headerColumnClass: 'av-facility-name-col' \n },\n { \n propertyName: 'direction', \n displayName: 'Direction', \n isKey: false, \n headerColumnClass: 'av-facility-direction-col' \n },\n {\n propertyName: 'code',\n displayName: 'Code',\n isKey: false,\n headerColumnClass: 'av-facility-code-col'\n },\n {\n propertyName: 'type',\n displayName: 'Type',\n isKey: false,\n headerColumnClass: 'av-facility-type-col'\n },\n {\n propertyName: 'open',\n displayName: 'Open',\n isKey: false,\n headerColumnClass: 'av-facility-open-col'\n },\n ] as GenericTableViewColumnDefinition[],\n emptyTableMessage: 'No facilities',\n showPageSizeSelector: false,\n newItemDisabled: false,//!profile.userProfile.hasPrivilege(CREATE_FACILITY),\n rowClickDisabled: false,//!profile.userProfile.hasPrivilege(CREATE_FACILITY),\n actionDisabled: false//!profile.userProfile.hasPrivilege(DELETE_FACILITY)\n } as GenericTableViewSettings;\n\n return (\n
    \n \n {\n this.state.showDeleteConfirmModal \n ? \n : (null)\n }\n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(FacilityTableView));\n\n\n// Helper function to add direction property to facility objects\nconst getUpdatedFacilities = (facilities: IATFacilityDto[]) => {\n\n return facilities.map(\n (facility: IATFacilityDto) => {\n return { ...facility, direction: deriveDirection(facility)};\n }\n )\n}\n\n// Helper function for deriving facility direction string\nconst deriveDirection = (facility: IATFacilityDto): string => {\n\n let locations: IATLocationDto[] = facility.locations || [];\n\n // if there are no locations, just return UNKNOWN direction\n if (locations.length === 0) \n return `${EATDirection.Unknown}`;\n\n // iterate over the locations and get a list of directions\n let directions: EATDirection[] = locations.map(\n (location: IATLocationDto) => {\n return location.direction;\n }\n )\n\n // if there are no directions, just return UNKNOWN direction\n if (directions.length === 0) \n return `${EATDirection.Unknown}`;\n\n // iterate over directions and build a unique-value-only list\n // of the analogous direction abbreviates, separated by \"/\"\n let directionString: string = \"\";\n\n directions.forEach(\n (direction: EATDirection, index: number) => {\n let directionAbbrev: string = getDirectionLetter(direction);\n if (directionString.indexOf(directionAbbrev) === -1){\n directionString += directionAbbrev;\n if (index !== directions.length - 1)\n directionString += \"/\";\n }\n }\n )\n\n return directionString || `${EATDirection.Unknown}`;\n}\n\n","// libraries\nimport * as React from \"react\";\nimport { newTooltipAttributes, useTooltip } from \"@algo/tooltip\";\n// styles\nimport * as SC from \"./Styled\";\n// components\nimport { Icon } from \"@algo/icon\";\nimport { FormButton, FormCard } from \"@caps-mobile/forms\";\nimport { useParams } from \"react-router-dom\";\n// constants\ndeclare var __API_URL__: string;\n\nexport type IProps = {\n\n};\n\nexport const VisitDashboardRow: React.FC = (props) => {\n\n const { facilityId } = useParams<{[key: string]: string}>();\n useTooltip($, false);\n\n // used to capture textarea text for clipboard action\n const streamUrlTextRef: any = React.useRef(null); \n\n const dashboardUrl: string = (__API_URL__.includes(\"caps\"))\n ? `https://algodashboard.caps.ua.edu/facility/${facilityId}`\n : `https://dashboard.algotraffic.com/facility/${facilityId}`;\n \n return (\n \n\n \n\n {window.open(dashboardUrl);}}\n >\n {\"Visit Dashboard\"}\n \n\n \n\n \n\n \n\n \n )\n};\n\nexport default VisitDashboardRow;","import * as React from 'react';\n\ninterface ErrorModalProps {\n dismissCallback: (() => void);\n title?: string;\n message?: string;\n error?: Error;\n}\n\ninterface ErrorModalState {\n instanceId: number;\n}\n\nexport default class ErrorModal \n extends React.Component<\n ErrorModalProps, \n ErrorModalState\n > \n{\n modalRef: React.RefObject;\n\n constructor(props: Readonly) {\n super(props);\n\n this.modalRef = React.createRef();\n\n this.state = {\n instanceId: Math.random()\n } as ErrorModalState;\n }\n\n componentDidMount() {\n $((this.modalRef.current) as any).modal('show');\n }\n\n dismiss = (event: React.MouseEvent): void => {\n const { dismissCallback } = this.props;\n event.preventDefault();\n $((this.modalRef.current) as any).modal('hide');\n dismissCallback();\n }\n\n render() {\n let { title, message, error } = this.props;\n\n var formattedMessage: string;\n\n if (error) {\n formattedMessage = error.message;\n }\n else if (message) {\n formattedMessage = title || \"\";\n }\n else {\n formattedMessage = 'There was an error';\n }\n\n var formattedTitle: string;\n\n if (error) {\n formattedTitle = error.name;\n }\n else if (title) {\n formattedTitle = title;\n }\n else {\n formattedTitle = 'General Exception';\n }\n\n return (\n \n );\n }\n}","import { \n IAAOrganization, IAARole, IAAUserForm \n} from \"@algo/network-manager/models/v3/admin\";\nimport { \n ICASComplexityRequirement, ICASPasswordValidation \n} from \"@algo/network-manager/models/v3/cas\";\n\nexport let LOAD_USER_EDITOR_BEGIN = 'LOAD_USER_EDITOR_BEGIN';\nexport let LOAD_USER_EDITOR_SUCCESS = 'LOAD_USER_EDITOR_SUCCESS';\nexport let LOAD_USER_EDITOR_FAILURE = 'LOAD_USER_EDITOR_FAILURE';\n\nexport let SAVE_USER_BEGIN = 'SAVE_USER_BEGIN';\nexport let SAVE_USER_SUCCESS = 'SAVE_USER_SUCCESS';\nexport let SAVE_USER_FAILURE = 'SAVE_USER_FAILURE';\n\nexport let CHANGE_PASSWORD_BEGIN = 'CHANGE_PASSWORD_BEGIN';\nexport let CHANGE_PASSWORD_SUCCESS = 'CHANGE_PASSWORD_SUCCESS';\nexport let CHANGE_PASSWORD_FAILURE = 'CHANGE_PASSWORD_FAILURE';\nexport let CHANGE_PASSWORD_CLEAR = 'CHANGE_PASSWORD_CLEAR';\n\nexport let VALIDATE_PASSWORD_BEGIN = 'VALIDATE_PASSWORD_BEGIN';\nexport let VALIDATE_PASSWORD_SUCCESS = 'VALIDATE_PASSWORD_SUCCESS';\nexport let VALIDATE_PASSWORD_FAILURE = 'VALIDATE_PASSWORD_FAILURE';\n\nexport let CLEAR_USER_EDITOR_ERROR = 'CLEAR_USER_EDITOR_ERROR';\n\nexport let UNINITIALIZE_USER_EDITOR = 'UNINITIALIZE_USER_EDITOR';\n\nexport let RESET_PASSWORD_EMAIL_BEGIN = 'RESET_PASSWORD_EMAIL_BEGIN';\nexport let RESET_PASSWORD_EMAIL_SUCCESS = 'RESET_PASSWORD_EMAIL_SUCCESS';\nexport let RESET_PASSWORD_EMAIL_FAILURE = 'RESET_PASSWORD_EMAIL_FAILURE';\nexport let RESET_PASSWORD_EMAIL_CLEAR = 'RESET_PASSWORD_EMAIL_CLEAR';\n\nexport interface UserEditorState {\n initializing: boolean;\n userLoaded: boolean;\n savingUser: boolean;\n validatingPassword: boolean;\n changingPassword: boolean;\n changePasswordSuccess: boolean;\n sendingResetPasswordEmail: boolean;\n sendResetPasswordEmailSuccess: boolean;\n userForm: IAAUserForm;\n roleList: IAARole[];\n organizationList: IAAOrganization[];\n complexityRequirements: ICASComplexityRequirement;\n passwordValidation: ICASPasswordValidation;\n error: Error | null;\n}\n\nexport interface UserEditorPayload {\n userForm: IAAUserForm;\n roleList: IAARole[];\n organizationList: IAAOrganization[];\n complexityRequirements: ICASComplexityRequirement;\n passwordValidation: ICASPasswordValidation;\n error: Error | null;\n}\n\ninterface LoadUserEditorBeginAction {\n type: typeof LOAD_USER_EDITOR_BEGIN;\n payload: UserEditorPayload;\n}\n\ninterface LoadUserEditorSuccessAction {\n type: typeof LOAD_USER_EDITOR_SUCCESS;\n payload: UserEditorPayload;\n}\n\ninterface LoadUserEditorFailureAction {\n type: typeof LOAD_USER_EDITOR_FAILURE;\n payload: UserEditorPayload;\n}\n\ninterface SaveUserBeginAction {\n type: typeof SAVE_USER_BEGIN;\n payload: UserEditorPayload;\n}\n\ninterface SaveUserSuccessAction {\n type: typeof SAVE_USER_FAILURE;\n payload: UserEditorPayload;\n}\n\ninterface SaveUserFailureAction {\n type: typeof SAVE_USER_FAILURE;\n payload: UserEditorPayload;\n}\n\ninterface ChangePasswordBeginAction {\n type: typeof CHANGE_PASSWORD_BEGIN;\n payload: UserEditorPayload;\n}\n\ninterface ChangePasswordSuccessAction {\n type: typeof CHANGE_PASSWORD_SUCCESS;\n payload: UserEditorPayload;\n}\n\ninterface ChangePasswordFailureAction {\n type: typeof CHANGE_PASSWORD_FAILURE;\n payload: UserEditorPayload;\n}\n\ninterface ChangePasswordClearAction {\n type: typeof CHANGE_PASSWORD_CLEAR;\n payload: UserEditorPayload;\n}\n\ninterface ValidatePasswordBeginAction {\n type: typeof VALIDATE_PASSWORD_BEGIN;\n payload: UserEditorPayload;\n}\n\ninterface ValidatePasswordSuccessAction {\n type: typeof VALIDATE_PASSWORD_SUCCESS;\n payload: UserEditorPayload;\n}\n\ninterface ValidatePasswordFailureAction {\n type: typeof VALIDATE_PASSWORD_FAILURE;\n payload: UserEditorPayload;\n}\n\ninterface ResetPasswordBeginAction {\n type: typeof RESET_PASSWORD_EMAIL_BEGIN;\n payload: UserEditorPayload;\n}\n\ninterface ResetPasswordSuccessAction {\n type: typeof RESET_PASSWORD_EMAIL_SUCCESS;\n payload: UserEditorPayload;\n}\n\ninterface ResetPasswordFailureAction {\n type: typeof RESET_PASSWORD_EMAIL_FAILURE;\n payload: UserEditorPayload;\n}\n\ninterface ResetPasswordClearAction {\n type: typeof RESET_PASSWORD_EMAIL_CLEAR;\n payload: UserEditorPayload;\n}\n\ninterface ClearUserEditorErrorAction {\n type: typeof CLEAR_USER_EDITOR_ERROR;\n payload: UserEditorPayload;\n}\n\ninterface UninitializeUserEditorAction {\n type: typeof UNINITIALIZE_USER_EDITOR;\n payload: UserEditorPayload;\n}\n\nexport type UserEditorTypes = \n LoadUserEditorBeginAction | \n LoadUserEditorSuccessAction | \n LoadUserEditorFailureAction | \n SaveUserBeginAction | \n SaveUserSuccessAction | \n SaveUserFailureAction | \n ChangePasswordBeginAction | \n ChangePasswordSuccessAction | \n ChangePasswordFailureAction | \n ChangePasswordClearAction | \n ValidatePasswordBeginAction | \n ValidatePasswordSuccessAction | \n ValidatePasswordFailureAction | \n ResetPasswordBeginAction | \n ResetPasswordSuccessAction | \n ResetPasswordFailureAction | \n ResetPasswordClearAction | \n ClearUserEditorErrorAction | \n UninitializeUserEditorAction;","import { nuon } from \"@caps-mobile/common-lib\";\nimport { ReactSelectNumberKeyListItem, ReactSelectStringKeyListItem } from \"../models/ReactSelectListItems\";\n\nexport let DATE_STRING_FORMAT = 'MM/DD/YYYY hh:mm A z';\nexport let DATE_PART_STRING_FORMAT = 'MMMM DD, YYYY';\nexport let TIME_PART_STRING_FORMAT = 'hh:mm A z';\n\nexport let STREAM_TIMEOUT_INTERVAL: number = 3600000;\nexport let PROFILE_REFRESH_INTERVAL: number = 60000;\nexport let SERVICE_SYNCHRONIZATION_REFRESH_INTERVAL: number = 60000;\nexport let DEFAULT_SERVICE_SYNCHRONIZATION_HISTORY_COUNT: number = 10;\nexport let DEFAULT_ORGANIZATION_ID: number = 0;\nexport let DEFAULT_USER_SUB: string = '00000000-0000-0000-0000-000000000000';\nexport let DEFAULT_QUERY: string = '';\nexport let DEFAULT_DATASOURCE_ID = 0;\nexport let DEFAULT_PAGE_INDEX: number = 0;\nexport let DEFAULT_PAGE_SIZE: number = 25;\nexport let DEFAULT_TOTAL_PAGES: number = 0;\nexport let ALL_ORGANIZATION_ID: number = 0;\nexport let DEFAULT_SELECTOR_KEY: number = 0;\n\nexport let ORGANIZATION_NAME = 'ORGANIZATION_NAME';\nexport let ORGANIZATION_DESCRIPTION = 'ORGANIZATION_DESCRIPTION';\nexport let ORGANIZATION_ROLES = 'ORGANIZATION_ROLES';\nexport let ORGANIZATION_DATASOURCES = 'ORGANIZATION_DATASOURCES';\nexport let ORGANIZATION_PARENT_ORGANIZATION = 'ORGANIZATION_PARENT_ORGANIZATION';\nexport let ORGANIZATION_CHILD_ORGANIZATION = 'ORGANIZATION_CHILD_ORGANIZATION';\nexport let ORGANIZATION_ADD_USER = 'ORGANIZATION_ADD_USER';\nexport let ORGANIZATION_COLUMNS_NUMBER = 3;\n\n// export all org constants as a brevity package\nexport let ORG_CONS = {\n id: DEFAULT_ORGANIZATION_ID,\n name: ORGANIZATION_NAME,\n description: ORGANIZATION_DESCRIPTION,\n roles: ORGANIZATION_ROLES,\n datasources: ORGANIZATION_DATASOURCES,\n parent: ORGANIZATION_PARENT_ORGANIZATION,\n child: ORGANIZATION_CHILD_ORGANIZATION,\n addUser: ORGANIZATION_ADD_USER,\n colNum: ORGANIZATION_COLUMNS_NUMBER\n}\n\nexport let USER_GIVEN_NAME = 'USER_FORM_GIVEN_NAME';\nexport let USER_MIDDLE_NAME = 'USER_MIDDLE_NAME';\nexport let USER_FAMILY_NAME = 'USER_FAMILY_NAME';\nexport let USER_USER_NAME = 'USER_USER_NAME';\nexport let USER_EMAIL = 'USER_EMAIL';\nexport let USER_PASSWORD = 'USER_PASSWORD';\nexport let USER_PASSWORD_CONFIRM = 'USER_PASSWORD_CONFIRM';\nexport let USER_ORGANIZATION_ID = 'USER_ORGANIZATION_ID';\nexport let USER_ROLE_ID = 'USER_ROLE_ID';\nexport let USER_STATUS_ID = 'USER_STATUS_ID';\nexport let USER_STATUS_OPTIONS = [\n {\n value: 0,\n label: 'Active'\n },\n {\n value: 1,\n label: 'Locked'\n },\n {\n value: 2,\n label: 'Password Expired'\n },\n {\n value: 3,\n label: 'Inactive'\n },\n {\n value: 4,\n label: 'Deleted'\n }\n] as ReactSelectNumberKeyListItem[];\nexport let USER_TYPE = 'USER_TYPE';\nexport let USER_COLUMNS_NUMBER: number = 4;\n\n// export all the user constants as a brevity package\nexport let USER_CONS = {\n sub: DEFAULT_USER_SUB,\n givenName: USER_GIVEN_NAME,\n middleName: USER_MIDDLE_NAME,\n familyName: USER_FAMILY_NAME,\n userName: USER_USER_NAME,\n email: USER_EMAIL,\n password: USER_PASSWORD,\n passwordConfirm: USER_PASSWORD_CONFIRM,\n orgId: USER_ORGANIZATION_ID,\n roleId: USER_ROLE_ID,\n statusId: USER_STATUS_ID,\n statusOptions: USER_STATUS_OPTIONS,\n type: USER_TYPE,\n colNum: USER_COLUMNS_NUMBER\n};\n\nexport let MESSAGE_DEFAULT_ID: number = 0;\nexport let MESSAGE_TITLE = 'MESSAGE_TITLE';\nexport let MESSAGE_BODY = 'MESSAGE_TEXT';\nexport let MESSAGE_DATE_START = 'MESSAGE_DATE_START';\nexport let MESSAGE_DATE_END = 'MESSAGE_DATE_END';\nexport let MESSAGE_COLUMNS_NUMBER: number = 5;\nexport let MESSAGE_AUDIENCES = 'MESSAGE_AUDIENCES';\nexport let MESSAGE_AUDIENCE_OPTIONS = [\n {\n value: 'Admin',\n label: 'Admin'\n },\n {\n value: 'Dashboard',\n label: 'Dashboard'\n },\n {\n value: 'Traffic',\n label: 'Traffic'\n },\n {\n value: 'Video',\n label: 'Video'\n },\n {\n value: 'None',\n label: 'None'\n }\n] as ReactSelectStringKeyListItem[];\n\nexport const FACILITY_CONSTANTS = {\n defaultId: 0,\n formInputStyles: {\n labelWidth: \"25%\",\n inputWidth: \"calc(75% - 12px)\",\n inputHeight: \"41px\"\n },\n WARN_DUPLICATE_PROP: `\n Facilities may only possess one of each \n 'Type' of Parking, Amenity, or Phone.`,\n WARN_RESET: `\n Are you sure you want to undo changes? \n All changes since last save will be lost.`,\n WARN_DUPLICATE_MAP_SETTING: `\n Facilities may only possess one Map View Setting.\n `\n}\nexport let FEEDBACK_DEFAULT_ID: number = 0;\nexport let FEEDBACK_RESPONSE_MESSAGE = 'FEEDBACK_RESPONSE_MESSAGE';\nexport let FEEDBACK_COLUMNS_NUMBER: number = 4;\n\nexport let ROLE_COLUMNS_NUMBER: number = 2;\nexport let ROLE_DEFAULT_ID: number = 0;\nexport let ROLE_DESCRIPTION = 'ROLE_DESCRIPTION';\nexport let ROLE_PRIVILEGES = 'ROLE_PRIVILEGES';\nexport let ROLE_ORGANIZATIONS = 'ROLE_ORGANIZATIONS';\n\nexport let CAMERA_DEFAULT_ID: number = 0;\nexport let CAMERA_ACCESS_LEVEL_ID:string = \"CAMERA_ACCESS_LEVEL_ID\";\nexport let CAMERA_DATASOURCE_ID: string = \"CAMERA_DATASOURCE_ID\";\nexport let CAMERA_ACCESS_LEVEL_OPTIONS = [\n {\n value: 1,\n label: 'Full Access'\n },\n {\n value: 2,\n label: 'Media'\n },\n {\n value: 3,\n label: 'First Responder'\n },\n {\n value: 4,\n label: 'Private Sector'\n },\n {\n value: 5,\n label: 'TMC Operator'\n }\n] as ReactSelectNumberKeyListItem[];\n\nexport let CAMERA_ACCESS_LEVEL_LEGEND = [\n {\n label: \"Full Access\",\n info: \"ALDOT, TMC, First Responders, Media, and Private Sector users and the public via ALGO Traffic\",\n },\n {\n label: \"Media\",\n info: \"ALDOT, TMC, First Responders, and Media users\"\n },\n {\n label: \"First Responders\",\n info: \"ALDOT, TMC, and First Responders users\"\n },\n {\n label: \"Private Sector\",\n info: \"ALDOT, TMC, First Responders, Media, and Private Sector users\"\n },\n {\n label: \"TMC Operator\",\n info: \"ALDOT and TMC users\"\n }\n] as any;\n\nexport const CAMERA_PREVIEWS_MAX_SELECTION = 25;\nexport const CAMERA_PREVIEWS_PER_PAGE = 30;\n\nexport let ASPECT_RATIO_16_9: number = 16 / 9; // 1.7777777777\nexport let ASPECT_RATIO_16_10: number = 16 / 10; // 1.6\nexport let ASPECT_RATIO_3_2: number = 3 / 2; // 1.5\nexport let ASPECT_RATIO_22_15: number = 22 / 15; // 1.4666666667 \nexport let ASPECT_RATIO_4_3: number = 4 / 3; // 1.3333333333\n\n// Webpack Define Plugin will change these values on build\nexport var __AUTHORITY_URL__: string; \nexport var __CLIENT_URL__: string;\nexport var __VIDEO_URL__: string;\n\nexport let ACCESS_LEVEL_TOOLTIP = \n \"This operation will update the Access Level of all currently selected Camera Streams\";\n\n// List that can be directly utilized in front-end access level selection\nexport const StreamAccessLevelOptions: Array = [\n \"Public\",\n \"Media\",\n \"FirstResponder\",\n \"Stakeholder\",\n \"ALDOT\",\n \"Hidden\",\n \"Unknown\"\n];\n\nexport const isNewMode = (id: string | number, valueIfNew: string | number): boolean => {\n\n // if there is no given id, or the comparison value for new is falsey - then new\n if (!id || !nuon(valueIfNew)) return true;\n\n // if the given id is absolutely equal to comparison value - then new\n if (id === valueIfNew) return true;\n\n // in all other cases, the page should render in Edit mode\n return false;\n}","import * as React from 'react';\n\ninterface ContentProps {\n pageHasSidebar: boolean;\n}\n\nexport default class Content extends React.Component {\n render() {\n let { pageHasSidebar } = this.props;\n let className: string = \n `av-content ${pageHasSidebar === true ? 'shared' : 'primary'}`;\n\n return (\n
    \n {this.props.children}\n
    \n );\n }\n}","import { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { IATAldotMessage } from \"@algo/network-manager/models/v3\";\n\nexport let INITIALIZE_MESSAGE_DASHBOARD_BEGIN = \n 'INITIALIZE_MESSAGE_DASHBOARD_BEGIN';\nexport let INITIALIZE_MESSAGE_DASHBOARD_SUCCESS = \n 'INITIALIZE_MESSAGE_DASHBOARD_SUCCESS';\nexport let INITIALIZE_MESSAGE_DASHBOARD_FAILURE = \n 'INITIALIZE_MESSAGE_DASHBOARD_FAILURE';\n\nexport let LOAD_MESSAGES_BEGIN = 'LOAD_MESSAGES_BEGIN';\nexport let LOAD_MESSAGES_SUCCESS = 'LOAD_MESSAGES_SUCCESS';\nexport let LOAD_MESSAGES_FAILURE = 'LOAD_MESSAGES_FAILURE';\n\nexport let DELETE_MESSAGE_BEGIN = 'DELETE_MESSAGE_BEGIN';\nexport let DELETE_MESSAGE_SUCCESS = 'DELETE_MESSAGE_SUCCESS';\nexport let DELETE_MESSAGE_FAILURE = 'DELETE_MESSAGE_FAILURE';\n\nexport let CLEAR_MESSAGE_DASHBOARD_ERROR = \n 'CLEAR_MESSAGE_DASHBOARD_ERROR';\n\nexport let UNINITIALIZE_MESSAGE_DASHBOARD = \n 'UNINITIALIZE_MESSAGE_DASHBOARD';\n\nexport interface MessageDashboardState {\n initializing: boolean;\n loadingMessages: boolean;\n deletingMessage: boolean;\n messages: IATAldotMessage[];\n error: Error | null;\n lastResponse: IProcessedResponse;\n}\n\nexport interface MessageDashboardPayload {\n messages: IATAldotMessage[];\n error: Error;\n response: IProcessedResponse;\n}\n\ninterface InitializeMessageDashboardBeginAction {\n type: typeof INITIALIZE_MESSAGE_DASHBOARD_BEGIN,\n payload: MessageDashboardPayload\n}\n\ninterface InitializeMessageDashboardSuccessAction {\n type: typeof INITIALIZE_MESSAGE_DASHBOARD_SUCCESS,\n payload: MessageDashboardPayload\n}\n\ninterface InitializeMessageDashboardFailureAction {\n type: typeof INITIALIZE_MESSAGE_DASHBOARD_FAILURE,\n payload: MessageDashboardPayload\n}\n\ninterface LoadMessagesBeginAction {\n type: typeof LOAD_MESSAGES_BEGIN,\n payload: MessageDashboardPayload\n}\n\ninterface LoadMessagesSuccessAction {\n type: typeof LOAD_MESSAGES_SUCCESS,\n payload: MessageDashboardPayload\n}\n\ninterface LoadMessagesFailureAction {\n type: typeof LOAD_MESSAGES_FAILURE,\n payload: MessageDashboardPayload\n}\n\ninterface DeleteMessageBeginAction {\n type: typeof DELETE_MESSAGE_BEGIN,\n payload: MessageDashboardPayload\n}\n\ninterface DeleteMessageSuccessAction {\n type: typeof DELETE_MESSAGE_SUCCESS,\n payload: MessageDashboardPayload\n}\n\ninterface DeleteMessageFailureAction {\n type: typeof DELETE_MESSAGE_FAILURE,\n payload: MessageDashboardPayload\n}\n\ninterface ClearMessageDashboardErrorAction {\n type: typeof CLEAR_MESSAGE_DASHBOARD_ERROR,\n payload: MessageDashboardPayload\n}\n\ninterface UninitializeMessageDashboardAction {\n type: typeof UNINITIALIZE_MESSAGE_DASHBOARD,\n payload: MessageDashboardPayload\n}\n\nexport type MessageDashboardTypes = \n InitializeMessageDashboardBeginAction |\n InitializeMessageDashboardSuccessAction |\n InitializeMessageDashboardFailureAction |\n LoadMessagesBeginAction |\n LoadMessagesSuccessAction |\n LoadMessagesFailureAction |\n DeleteMessageBeginAction |\n DeleteMessageSuccessAction |\n DeleteMessageFailureAction |\n ClearMessageDashboardErrorAction |\n UninitializeMessageDashboardAction;\n","import { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { IATFacility } from \"@algo/network-manager/models/v3\";\n\nexport let INITIALIZE_FACILITY_DASHBOARD_BEGIN = 'INITIALIZE_FACILITY_DASHBOARD_BEGIN';\nexport let INITIALIZE_FACILITY_DASHBOARD_SUCCESS = 'INITIALIZE_FACILITY_DASHBOARD_SUCCESS';\nexport let INITIALIZE_FACILITY_DASHBOARD_FAILURE = 'INITIALIZE_FACILITY_DASHBOARD_FAILURE';\n\nexport let SEARCH_FACILITIES_BEGIN = 'SEARCH_FACILITIES_BEGIN';\nexport let SEARCH_FACILITIES_SUCCESS = 'SEARCH_FACILITIES_SUCCESS';\nexport let SEARCH_FACILITIES_FAILURE = 'SEARCH_FACILITIES_FAILURE';\n\nexport let DELETE_FACILITY_BEGIN = 'DELETE_FACILITY_BEGIN';\nexport let DELETE_FACILITY_SUCCESS = 'DELETE_FACILITY_SUCCESS';\nexport let DELETE_FACILITY_FAILURE = 'DELETE_FACILITY_FAILURE';\n\nexport let CLEAR_FACILITY_DASHBOARD_ERROR = 'CLEAR_FACILITY_DASHBOARD_ERROR';\n\nexport let UNINITIALIZE_FACILITY_DASHBOARD = 'UNINITIALIZE_FACILITY_DASHBOARD';\n\nexport interface FacilityDashboardState {\n initializing: boolean;\n loadingFacilities: boolean;\n deletingFacility: boolean;\n facilities: IATFacility[];\n error: Error | null;\n lastInitResponse: IProcessedResponse;\n lastSearchResponse: IProcessedResponse;\n}\n\nexport interface FacilityDashboardPayload {\n facilities: IATFacility[];\n error: Error;\n response: IProcessedResponse;\n}\n\ninterface InitializeFacilityDashboardBeginAction {\n type: typeof INITIALIZE_FACILITY_DASHBOARD_BEGIN,\n payload: FacilityDashboardPayload\n}\n\ninterface InitializeFacilityDashboardSuccessAction {\n type: typeof INITIALIZE_FACILITY_DASHBOARD_SUCCESS,\n payload: FacilityDashboardPayload\n}\n\ninterface InitializeFacilityDashboardFailureAction {\n type: typeof INITIALIZE_FACILITY_DASHBOARD_FAILURE,\n payload: FacilityDashboardPayload\n}\n\ninterface SearchFacilitysBeginAction {\n type: typeof SEARCH_FACILITIES_BEGIN,\n payload: FacilityDashboardPayload\n}\n\ninterface SearchFacilitysSuccessAction {\n type: typeof SEARCH_FACILITIES_SUCCESS,\n payload: FacilityDashboardPayload\n}\n\ninterface SearchFacilitysFailureAction {\n type: typeof SEARCH_FACILITIES_FAILURE,\n payload: FacilityDashboardPayload\n}\n\ninterface DeleteFacilityBeginAction {\n type: typeof DELETE_FACILITY_BEGIN,\n payload: FacilityDashboardPayload\n}\n\ninterface DeleteFacilitySuccessAction {\n type: typeof DELETE_FACILITY_SUCCESS,\n payload: FacilityDashboardPayload\n}\n\ninterface DeleteFacilityFailureAction {\n type: typeof DELETE_FACILITY_FAILURE,\n payload: FacilityDashboardPayload\n}\n\ninterface ClearFacilityDashboardErrorAction {\n type: typeof CLEAR_FACILITY_DASHBOARD_ERROR,\n payload: FacilityDashboardPayload\n}\n\ninterface UninitializeFacilityDashboardAction {\n type: typeof UNINITIALIZE_FACILITY_DASHBOARD,\n payload: FacilityDashboardPayload\n}\n\nexport type FacilityDashboardTypes = \n InitializeFacilityDashboardBeginAction |\n InitializeFacilityDashboardSuccessAction |\n InitializeFacilityDashboardFailureAction |\n SearchFacilitysBeginAction |\n SearchFacilitysSuccessAction |\n SearchFacilitysFailureAction |\n DeleteFacilityBeginAction |\n DeleteFacilitySuccessAction |\n DeleteFacilityFailureAction |\n ClearFacilityDashboardErrorAction |\n UninitializeFacilityDashboardAction;\n","import { IAAOrganization } from \"@algo/network-manager/models/v3/admin\";\n\nexport let INITIALIZE_ORGANIZATION_DASHBOARD_BEGIN = 'INITIALIZE_ORGANIZATION_DASHBOARD_BEGIN';\nexport let INITIALIZE_ORGANIZATION_DASHBOARD_SUCCESS = 'INITIALIZE_ORGANIZATION_DASHBOARD_SUCCESS';\nexport let INITIALIZE_ORGANIZATION_DASHBOARD_FAILURE = 'INITIALIZE_ORGANIZATION_DASHBOARD_FAILURE';\n\nexport let LOAD_ORGANIZATIONS_BEGIN = 'LOAD_ORGANIZATIONS_BEGIN';\nexport let LOAD_ORGANIZATIONS_SUCCESS = 'LOAD_ORGANIZATIONS_SUCCESS';\nexport let LOAD_ORGANIZATIONS_FAILURE = 'LOAD_ORGANIZATIONS_FAILURE';\n\nexport let DELETE_ORGANIZATION_BEGIN = 'DELETE_ORGANIZATION_BEGIN';\nexport let DELETE_ORGANIZATION_SUCCESS = 'DELETE_ORGANIZATION_SUCCESS';\nexport let DELETE_ORGANIZATION_FAILURE = 'DELETE_ORGANIZATION_FAILURE';\n\nexport let CLEAR_ORGANIZATION_DASHBOARD_ERROR = 'CLEAR_ORGANIZATION_DASHBOARD_ERROR';\n\nexport let UNINITIALIZE_ORGANIZATION_DASHBOARD = 'UNINITIALIZE_ORGANIZATION_DASHBOARD';\n\nexport interface OrganizationDashboardState {\n initializing: boolean;\n loadingOrganizations: boolean;\n deletingOrganization: boolean;\n organizations: IAAOrganization[];\n error: Error | null;\n}\n\nexport interface OrganizationDashboardPayload {\n organizations: IAAOrganization[];\n error: Error | null;\n}\n\ninterface InitializeOrganizationDashboardBeginAction {\n type: typeof INITIALIZE_ORGANIZATION_DASHBOARD_BEGIN;\n payload: OrganizationDashboardPayload;\n}\n\ninterface InitializeOrganizationDashboardSuccessAction {\n type: typeof INITIALIZE_ORGANIZATION_DASHBOARD_SUCCESS;\n payload: OrganizationDashboardPayload;\n}\n\ninterface InitializeOrganizationDashboardFailureAction {\n type: typeof INITIALIZE_ORGANIZATION_DASHBOARD_FAILURE;\n payload: OrganizationDashboardPayload;\n}\n\ninterface LoadOrganizationsBeginAction {\n type: typeof LOAD_ORGANIZATIONS_BEGIN;\n payload: OrganizationDashboardPayload;\n}\n\ninterface LoadOrganizationsSuccessAction {\n type: typeof LOAD_ORGANIZATIONS_SUCCESS;\n payload: OrganizationDashboardPayload;\n}\n\ninterface LoadOrganizationsFailureAction {\n type: typeof LOAD_ORGANIZATIONS_FAILURE;\n payload: OrganizationDashboardPayload;\n}\n\ninterface DeleteOrganizationBeginAction {\n type: typeof DELETE_ORGANIZATION_BEGIN;\n payload: OrganizationDashboardPayload;\n}\n\ninterface DeleteOrganizationSuccessAction {\n type: typeof DELETE_ORGANIZATION_SUCCESS;\n payload: OrganizationDashboardPayload;\n}\n\ninterface DeleteOrganizationFailureAction {\n type: typeof DELETE_ORGANIZATION_FAILURE;\n payload: OrganizationDashboardPayload;\n}\n\ninterface ClearOrganizationDashboardErrorAction {\n type: typeof CLEAR_ORGANIZATION_DASHBOARD_ERROR;\n payload: OrganizationDashboardPayload;\n}\n\ninterface UninitializeOrganizationDashboardAction {\n type: typeof UNINITIALIZE_ORGANIZATION_DASHBOARD;\n payload: OrganizationDashboardPayload;\n}\n\nexport type OrganizationDashboardTypes = \n InitializeOrganizationDashboardBeginAction | \n InitializeOrganizationDashboardSuccessAction | \n InitializeOrganizationDashboardFailureAction | \n LoadOrganizationsBeginAction | \n LoadOrganizationsSuccessAction | \n LoadOrganizationsFailureAction | \n DeleteOrganizationBeginAction | \n DeleteOrganizationSuccessAction | \n DeleteOrganizationFailureAction | \n ClearOrganizationDashboardErrorAction | \n UninitializeOrganizationDashboardAction;\n","import { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { \n IAAOrganization, IAARole \n} from \"@algo/network-manager/models/v3/admin\";\n\nexport let INITIALIZE_ROLE_DASHBOARD_BEGIN = 'INITIALIZE_ROLE_DASHBOARD_BEGIN';\nexport let INITIALIZE_ROLE_DASHBOARD_SUCCESS = 'INITIALIZE_ROLE_DASHBOARD_SUCCESS';\nexport let INITIALIZE_ROLE_DASHBOARD_FAILURE = 'INITIALIZE_ROLE_DASHBOARD_FAILURE';\n\nexport let LOAD_ROLES_BEGIN = 'LOAD_ROLES_BEGIN';\nexport let LOAD_ROLES_SUCCESS = 'LOAD_ROLES_SUCCESS';\nexport let LOAD_ROLES_FAILURE = 'LOAD_ROLES_FAILURE';\n\nexport let DELETE_ROLE_BEGIN = 'DELETE_ROLE_BEGIN';\nexport let DELETE_ROLE_SUCCESS = 'DELETE_ROLE_SUCCESS';\nexport let DELETE_ROLE_FAILURE = 'DELETE_ROLE_FAILURE';\n\nexport let CLEAR_ROLE_DASHBOARD_ERROR = 'CLEAR_ROLE_DASHBOARD_ERROR';\n\nexport let UNINITIALIZE_ROLE_DASHBOARD = 'UNINITIALIZE_ROLE_DASHBOARD';\n\nexport interface RoleDashboardState {\n initializing: boolean;\n loadingRoles: boolean;\n deletingRole: boolean;\n roles: IAARole[];\n organizations: IAAOrganization[];\n error: Error | null;\n lastResponse: IProcessedResponse;\n}\n\nexport interface RoleDashboardPayload {\n roles: IAARole[];\n organizations: IAAOrganization[];\n error: Error | null;\n response: IProcessedResponse;\n}\n\ninterface InitializeRoleDashboardBeginAction {\n type: typeof INITIALIZE_ROLE_DASHBOARD_BEGIN;\n payload: RoleDashboardPayload;\n}\n\ninterface InitializeRoleDashboardSuccessAction {\n type: typeof INITIALIZE_ROLE_DASHBOARD_SUCCESS;\n payload: RoleDashboardPayload;\n}\n\ninterface InitializeRoleDashboardFailureAction {\n type: typeof INITIALIZE_ROLE_DASHBOARD_FAILURE;\n payload: RoleDashboardPayload;\n}\n\ninterface LoadRoleBeginAction {\n type: typeof LOAD_ROLES_BEGIN;\n payload: RoleDashboardPayload;\n}\n\ninterface LoadRoleSuccessAction {\n type: typeof LOAD_ROLES_SUCCESS;\n payload: RoleDashboardPayload;\n}\n\ninterface LoadRoleFailureAction {\n type: typeof LOAD_ROLES_FAILURE;\n payload: RoleDashboardPayload;\n}\n\ninterface DeleteRoleBeginAction {\n type: typeof DELETE_ROLE_BEGIN;\n payload: RoleDashboardPayload;\n}\n\ninterface DeleteRoleSuccessAction {\n type: typeof DELETE_ROLE_SUCCESS;\n payload: RoleDashboardPayload;\n}\n\ninterface DeleteRoleFailureAction {\n type: typeof DELETE_ROLE_FAILURE;\n payload: RoleDashboardPayload;\n}\n\ninterface ClearRoleDashboardErrorAction {\n type: typeof CLEAR_ROLE_DASHBOARD_ERROR;\n payload: RoleDashboardPayload;\n}\n\ninterface UninitializeRoleDashboardAction {\n type: typeof UNINITIALIZE_ROLE_DASHBOARD;\n payload: RoleDashboardPayload;\n}\n\nexport type RoleDashboardTypes = \n InitializeRoleDashboardBeginAction | \n InitializeRoleDashboardSuccessAction | \n InitializeRoleDashboardFailureAction | \n LoadRoleBeginAction | \n LoadRoleSuccessAction | \n LoadRoleFailureAction | \n DeleteRoleBeginAction | \n DeleteRoleSuccessAction | \n DeleteRoleFailureAction | \n ClearRoleDashboardErrorAction | \n UninitializeRoleDashboardAction;","import { IAAOrganization } from '@algo/network-manager/models/v3/admin';\nimport { CASUserProfile } from \"@algo/network-manager/models/v3/cas\";\n\nexport let INITIALIZE_USER_DASHBOARD_BEGIN = 'INITIALIZE_USER_DASHBOARD_BEGIN';\nexport let INITIALIZE_USER_DASHBOARD_SUCCESS = 'INITIALIZE_USER_DASHBOARD_SUCCESS';\nexport let INITIALIZE_USER_DASHBOARD_FAILURE = 'INITIALIZE_USER_DASHBOARD_FAILURE';\n\nexport let LOAD_USERS_BEGIN = 'LOAD_USERS_BEGIN';\nexport let LOAD_USERS_SUCCESS = 'LOAD_USERS_SUCCESS';\nexport let LOAD_USERS_FAILURE = 'LOAD_USERS_FAILURE';\n\nexport let DELETE_USER_BEGIN = 'DELETE_USER_BEGIN';\nexport let DELETE_USER_SUCCESS = 'DELETE_USER_SUCCESS';\nexport let DELETE_USER_FAILURE = 'DELETE_USER_FAILURE';\n\nexport let CLEAR_USER_DASHBOARD_ERROR = 'CLEAR_USER_DASHBOARD_ERROR';\n\nexport let CLEAR_USER_SEARCH = 'CLEAR_USER_SEARCH';\n\nexport let UNINITIALIZE_USER_DASHBOARD = 'UNINITIALIZE_USER_DASHBOARD';\n\nexport interface UserDashboardState {\n initializing: boolean;\n loadingUsers: boolean;\n deletingUser: boolean;\n organizations: IAAOrganization[];\n users: CASUserProfile[];\n error: Error | null;\n}\n\nexport interface UserDashboardPayload {\n organizations: IAAOrganization[];\n users: CASUserProfile[];\n error: Error | null;\n}\n\ninterface InitializeUserDashboardBeginAction {\n type: typeof INITIALIZE_USER_DASHBOARD_BEGIN;\n payload: UserDashboardPayload;\n}\n\ninterface InitializeUserDashboardSuccessAction {\n type: typeof INITIALIZE_USER_DASHBOARD_SUCCESS;\n payload: UserDashboardPayload;\n}\n\ninterface InitializeUSerDashboardFailureAction {\n type: typeof INITIALIZE_USER_DASHBOARD_FAILURE;\n payload: UserDashboardPayload;\n}\n\ninterface LoadUsersBeginAction {\n type: typeof LOAD_USERS_BEGIN;\n payload: UserDashboardPayload;\n}\n\ninterface LoadUsersSuccessAction {\n type: typeof LOAD_USERS_SUCCESS;\n payload: UserDashboardPayload;\n}\n\ninterface LoadUsersFailureAction {\n type: typeof LOAD_USERS_FAILURE;\n payload: UserDashboardPayload;\n}\n\ninterface DeleteUserBeginAction {\n type: typeof DELETE_USER_BEGIN;\n payload: UserDashboardPayload;\n}\n\ninterface DeleteUserSuccessAction {\n type: typeof DELETE_USER_SUCCESS;\n payload: UserDashboardPayload;\n}\n\ninterface DeleteUserFailureAction {\n type: typeof DELETE_USER_FAILURE;\n payload: UserDashboardPayload;\n}\n\ninterface ClearUserDashboardErrorAction {\n type: typeof CLEAR_USER_DASHBOARD_ERROR;\n payload: UserDashboardPayload;\n}\n\ninterface UninitializeUserDashboardAction {\n type: typeof UNINITIALIZE_USER_DASHBOARD;\n payload: UserDashboardPayload;\n}\n\nexport type UserDashboardTypes = \n InitializeUserDashboardBeginAction | \n InitializeUserDashboardSuccessAction | \n InitializeUSerDashboardFailureAction |\n LoadUsersBeginAction | \n LoadUsersSuccessAction | \n LoadUsersFailureAction | \n DeleteUserBeginAction | \n DeleteUserSuccessAction | \n DeleteUserFailureAction |\n ClearUserDashboardErrorAction | \n UninitializeUserDashboardAction;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\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 production, 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 https://cra.link/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.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n \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\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 https://cra.link/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 https://cra.link/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 headers: { 'Service-Worker': 'script' },\n })\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('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","export default __webpack_public_path__ + \"web.config\";","//types\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.MessageDashboardState = {\n initializing: false,\n loadingMessages: false,\n deletingMessage: false,\n messages: [],\n error: null,\n lastResponse: new ProcessedResponse()\n};\n\nexport function messageDashboardReducer(\n state = initialState, \n action: TYPES.MessageDashboardTypes\n): TYPES.MessageDashboardState {\n \n switch(action.type) {\n case TYPES.INITIALIZE_MESSAGE_DASHBOARD_BEGIN:\n return {\n ...state,\n initializing: true,\n loadingMessages: true\n };\n case TYPES.INITIALIZE_MESSAGE_DASHBOARD_SUCCESS:\n return {\n ...state,\n messages: action.payload.messages || [],\n initializing: false,\n loadingMessages: false \n };\n case TYPES.INITIALIZE_MESSAGE_DASHBOARD_FAILURE:\n return {\n ...state,\n error: action.payload.error,\n initializing: false,\n loadingMessages: false\n };\n case TYPES.LOAD_MESSAGES_BEGIN:\n return {\n ...state,\n loadingMessages: true\n };\n case TYPES.LOAD_MESSAGES_SUCCESS:\n return {\n ...state,\n messages: action.payload.messages,\n loadingMessages: false\n };\n case TYPES.LOAD_MESSAGES_FAILURE:\n return {\n ...state,\n error: action.payload.error\n };\n case TYPES.DELETE_MESSAGE_BEGIN:\n return {\n ...state,\n deletingMessage: true\n };\n case TYPES.DELETE_MESSAGE_SUCCESS:\n return {\n ...state,\n deletingMessage: false,\n messages: action.payload.messages\n };\n case TYPES.DELETE_MESSAGE_FAILURE:\n return {\n ...state,\n deletingMessage: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_MESSAGE_DASHBOARD_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_MESSAGE_DASHBOARD:\n return initialState;\n default:\n return state;\n }\n}","import { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { IATAldotMessage } from \"@algo/network-manager/models/v3\";\n\nexport let LOAD_MESSAGE_BEGIN = 'LOAD_MESSAGE_BEGIN';\nexport let LOAD_MESSAGE_SUCCESS = 'LOAD_MESSAGE_SUCCESS';\nexport let LOAD_MESSAGE_FAILURE = 'LOAD_MESSAGE_FAILURE';\n\nexport let SAVE_MESSAGE_BEGIN = 'SAVE_MESSAGE_BEGIN';\nexport let SAVE_MESSAGE_SUCCESS = 'SAVE_MESSAGE_SUCCESS';\nexport let SAVE_MESSAGE_FAILURE = 'SAVE_MESSAGE_FAILURE';\n\nexport let CLEAR_MESSAGE_EDITOR_ERROR = 'CLEAR_MESSAGE_EDITOR_ERROR';\n\nexport let UNINITIALIZE_MESSAGE_EDITOR = 'UNINITIALIZE_MESSAGE_EDITOR';\n\nexport interface MessageEditorState {\n initializing: boolean;\n savingMessage: boolean;\n message: IATAldotMessage;\n error: Error | null;\n lastMessageResponse: IProcessedResponse;\n}\n\nexport interface MessageEditorPayload {\n message?: IATAldotMessage;\n error?: Error;\n response?: IProcessedResponse;\n}\n\ninterface LoadMessageBeginAction {\n type: typeof LOAD_MESSAGE_BEGIN;\n payload: MessageEditorPayload\n}\n\ninterface LoadMessageSuccessAction {\n type: typeof LOAD_MESSAGE_SUCCESS;\n payload: MessageEditorPayload;\n}\n\ninterface LoadMessageFailureAction {\n type: typeof LOAD_MESSAGE_FAILURE;\n payload: MessageEditorPayload;\n}\n\ninterface SaveMessageBeginAction {\n type: typeof SAVE_MESSAGE_BEGIN;\n payload: MessageEditorPayload;\n}\n\ninterface SaveMessageSuccessAction {\n type: typeof SAVE_MESSAGE_SUCCESS;\n payload: MessageEditorPayload;\n}\n\ninterface SaveMessageFailureAction {\n type: typeof SAVE_MESSAGE_FAILURE;\n payload: MessageEditorPayload;\n}\n\ninterface ClearMessageEditorErrorAction {\n type: typeof CLEAR_MESSAGE_EDITOR_ERROR;\n payload: MessageEditorPayload;\n}\n\ninterface UninitializeMessageEditorAction {\n type: typeof UNINITIALIZE_MESSAGE_EDITOR;\n payload: MessageEditorPayload;\n}\n\nexport type MessageEditorTypes = \n LoadMessageBeginAction |\n LoadMessageSuccessAction |\n LoadMessageFailureAction |\n SaveMessageBeginAction |\n SaveMessageSuccessAction |\n SaveMessageFailureAction |\n ClearMessageEditorErrorAction |\n UninitializeMessageEditorAction;","import * as TYPES from \"./types\";\nimport { ATAldotMessage } from \"@algo/network-manager/models/v3\";\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\n\nlet initialState: TYPES.MessageEditorState = {\n initializing: false,\n savingMessage: false,\n message: new ATAldotMessage(),\n error: null,\n lastMessageResponse: new ProcessedResponse()\n};\n\nexport function messageEditorReducer(\n state = initialState, \n action: TYPES.MessageEditorTypes\n): TYPES.MessageEditorState {\n \n switch(action.type) {\n case TYPES.LOAD_MESSAGE_BEGIN:\n return {\n ...state,\n initializing: true\n };\n case TYPES.LOAD_MESSAGE_SUCCESS:\n return {\n ...state,\n initializing: false,\n message: action.payload.message || new ATAldotMessage(),\n lastMessageResponse: action.payload.response || new ProcessedResponse()\n };\n case TYPES.LOAD_MESSAGE_FAILURE:\n return {\n ...state,\n initializing: false,\n error: action.payload.error || new Error()\n };\n case TYPES.SAVE_MESSAGE_BEGIN:\n return {\n ...state,\n savingMessage: true\n };\n case TYPES.SAVE_MESSAGE_SUCCESS:\n return {\n ...state,\n savingMessage: false,\n message: action.payload.message || new ATAldotMessage()\n };\n case TYPES.SAVE_MESSAGE_FAILURE:\n return {\n ...state,\n savingMessage: false,\n error: action.payload.error || new Error()\n };\n case TYPES.CLEAR_MESSAGE_EDITOR_ERROR:\n return {\n ...state,\n error: null\n }\n case TYPES.UNINITIALIZE_MESSAGE_EDITOR:\n return initialState;\n default:\n return state;\n }\n}","//types\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.FacilityDashboardState = {\n initializing: false,\n loadingFacilities: false,\n deletingFacility: false,\n facilities: [],\n error: null,\n lastInitResponse: new ProcessedResponse(),\n lastSearchResponse: new ProcessedResponse()\n};\n\nexport function facilityDashboardReducer(\n state = initialState, \n action: TYPES.FacilityDashboardTypes\n): TYPES.FacilityDashboardState {\n \n switch(action.type) {\n case TYPES.INITIALIZE_FACILITY_DASHBOARD_BEGIN:\n return {\n ...state,\n initializing: true,\n loadingFacilities: true\n };\n case TYPES.INITIALIZE_FACILITY_DASHBOARD_SUCCESS:\n return {\n ...state,\n facilities: action.payload.facilities,\n initializing: false,\n loadingFacilities: false,\n lastInitResponse: action.payload.response \n };\n case TYPES.INITIALIZE_FACILITY_DASHBOARD_FAILURE:\n return {\n ...state,\n error: action.payload.error,\n initializing: false,\n loadingFacilities: false\n };\n case TYPES.SEARCH_FACILITIES_BEGIN:\n return {\n ...state,\n loadingFacilities: true\n };\n case TYPES.SEARCH_FACILITIES_SUCCESS:\n return {\n ...state,\n facilities: action.payload.facilities,\n loadingFacilities: false,\n lastSearchResponse: action.payload.response\n };\n case TYPES.SEARCH_FACILITIES_FAILURE:\n return {\n ...state,\n error: action.payload.error\n };\n case TYPES.DELETE_FACILITY_BEGIN:\n return {\n ...state,\n deletingFacility: true\n };\n case TYPES.DELETE_FACILITY_SUCCESS:\n return {\n ...state,\n deletingFacility: false,\n facilities: action.payload.facilities,\n error: action.payload.error\n };\n case TYPES.DELETE_FACILITY_FAILURE:\n return {\n ...state,\n deletingFacility: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_FACILITY_DASHBOARD_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_FACILITY_DASHBOARD:\n return initialState;\n default:\n return state;\n }\n}","import { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { ATFacility } from \"@algo/network-manager/models/v3\";\n\nexport let LOAD_FACILITY_BEGIN = 'LOAD_FACILITY_BEGIN';\nexport let LOAD_FACILITY_SUCCESS = 'LOAD_FACILITY_SUCCESS';\nexport let LOAD_FACILITY_FAILURE = 'LOAD_FACILITY_FAILURE';\n\nexport let CLEANUP_FACILITY = 'CLEANUP_FACILITY';\n\nexport let SAVE_FACILITY_BEGIN = 'SAVE_FACILITY_BEGIN';\nexport let SAVE_FACILITY_SUCCESS = 'SAVE_FACILITY_SUCCESS';\nexport let SAVE_FACILITY_FAILURE = 'SAVE_FACILITY_FAILURE';\n\nexport let CLEAR_FACILITY_EDITOR_ERROR = 'CLEAR_FACILITY_EDITOR_ERROR';\n\nexport let UNINITIALIZE_FACILITY_EDITOR = 'UNINITIALIZE_FACILITY_EDITOR';\n\nexport interface FacilityEditorState {\n initializing: boolean;\n savingFacility: boolean;\n facility: ATFacility;\n error: Error | null;\n lastResponse: IProcessedResponse;\n}\n\nexport interface FacilityEditorPayload {\n facility: ATFacility;\n error: Error;\n response: IProcessedResponse;\n}\n\ninterface LoadFacilityBeginAction {\n type: typeof LOAD_FACILITY_BEGIN;\n payload: FacilityEditorPayload\n}\n\ninterface LoadFacilitySuccessAction {\n type: typeof LOAD_FACILITY_SUCCESS;\n payload: FacilityEditorPayload;\n}\n\ninterface LoadFacilityFailureAction {\n type: typeof LOAD_FACILITY_FAILURE;\n payload: FacilityEditorPayload;\n}\n\ninterface CleanupFacilityAction {\n type: typeof CLEANUP_FACILITY;\n payload: FacilityEditorPayload\n}\n\ninterface SaveFacilityBeginAction {\n type: typeof SAVE_FACILITY_BEGIN;\n payload: FacilityEditorPayload;\n}\n\ninterface SaveFacilitySuccessAction {\n type: typeof SAVE_FACILITY_SUCCESS;\n payload: FacilityEditorPayload;\n}\n\ninterface SaveFacilityFailureAction {\n type: typeof SAVE_FACILITY_FAILURE;\n payload: FacilityEditorPayload;\n}\n\ninterface ClearFacilityEditorErrorAction {\n type: typeof CLEAR_FACILITY_EDITOR_ERROR;\n payload: FacilityEditorPayload;\n}\n\ninterface UninitializeFacilityEditorAction {\n type: typeof UNINITIALIZE_FACILITY_EDITOR;\n payload: FacilityEditorPayload;\n}\n\nexport type FacilityEditorTypes = \n LoadFacilityBeginAction |\n LoadFacilitySuccessAction |\n LoadFacilityFailureAction |\n CleanupFacilityAction |\n SaveFacilityBeginAction |\n SaveFacilitySuccessAction |\n SaveFacilityFailureAction |\n ClearFacilityEditorErrorAction |\n UninitializeFacilityEditorAction;","import * as TYPES from \"./types\";\nimport { ATFacility} from \"@algo/network-manager/models/v3\";\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\n\nlet initialState: TYPES.FacilityEditorState = {\n initializing: false,\n savingFacility: false,\n facility: new ATFacility(),\n error: null,\n lastResponse: new ProcessedResponse()\n};\n\nexport function facilityEditorReducer(state = initialState, action: TYPES.FacilityEditorTypes): TYPES.FacilityEditorState {\n switch(action.type) {\n case TYPES.LOAD_FACILITY_BEGIN:\n return {\n ...state,\n initializing: true\n };\n case TYPES.LOAD_FACILITY_SUCCESS:\n return {\n ...state,\n initializing: false,\n facility: action.payload.facility\n };\n case TYPES.LOAD_FACILITY_FAILURE:\n return {\n ...state,\n initializing: false,\n error: action.payload.error\n };\n case TYPES.CLEANUP_FACILITY:\n return {\n ...state,\n facility: action.payload.facility\n };\n case TYPES.SAVE_FACILITY_BEGIN:\n return {\n ...state,\n savingFacility: true\n };\n case TYPES.SAVE_FACILITY_SUCCESS:\n return {\n ...state,\n savingFacility: false,\n facility: action.payload.facility,\n error: action.payload.error\n };\n case TYPES.SAVE_FACILITY_FAILURE:\n return {\n ...state,\n savingFacility: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_FACILITY_EDITOR_ERROR:\n return {\n ...state,\n error: null\n }\n case TYPES.UNINITIALIZE_FACILITY_EDITOR:\n return initialState;\n default:\n return state;\n }\n}","// interfaces & models\nimport { \n ATFeedback, IATFeedbackDto\n } from \"@algo/network-manager/models/v3\";\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.FeedbackDashboardState = {\n initializing: false,\n loadingFeedback: false,\n feedback: [],\n error: null\n};\n\nexport function feedbackDashboardReducer(\n state = initialState, \n action: TYPES.FeedbackDashboardTypes\n): TYPES.FeedbackDashboardState {\n switch(action.type) {\n case TYPES.INITIALIZE_FEEDBACK_DASHBOARD_BEGIN:\n return {\n ...state,\n initializing: true,\n loadingFeedback: true\n };\n case TYPES.INITIALIZE_FEEDBACK_DASHBOARD_SUCCESS:\n return {\n ...state,\n initializing: false,\n loadingFeedback: false,\n feedback: action.payload.feedback.map(\n (feedback: IATFeedbackDto) => new ATFeedback(feedback)\n )\n };\n case TYPES.INITIALIZE_FEEDBACK_DASHBOARD_FAILURE:\n return {\n ...state,\n initializing: false,\n loadingFeedback: false,\n error: action.payload.error\n };\n case TYPES.LOAD_FEEDBACK_BEGIN:\n return {\n ...state,\n loadingFeedback: true\n };\n case TYPES.LOAD_FEEDBACK_SUCCESS:\n return {\n ...state,\n loadingFeedback: false,\n feedback: action.payload.feedback\n };\n case TYPES.LOAD_FEEDBACK_FAILURE:\n return {\n ...state,\n loadingFeedback: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_FEEDBACK_DASHBOARD_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_FEEDBACK_DASHBOARD:\n return initialState;\n default:\n return state;\n }\n}","//types\nimport * as TYPES from \"./types\";\n//models\nimport { ATFeedback } from \"@algo/network-manager/models/v3\";\n\nlet initialState: TYPES.FeedbackDetailState = {\n loading: false,\n sendingResponse: false,\n feedback: new ATFeedback(),\n error: null\n};\n\nexport function feedbackDetailReducer(\n state = initialState, \n action: TYPES.FeedbackDetailTypes): TYPES.FeedbackDetailState {\n\n switch(action.type) {\n case TYPES.LOAD_FEEDBACK_DETAIL_BEGIN:\n return {\n ...state,\n loading: true\n };\n case TYPES.LOAD_FEEDBACK_DETAIL_SUCCESS:\n return {\n ...state,\n loading: false,\n feedback: new ATFeedback(action.payload.feedback)\n };\n case TYPES.LOAD_FEEDBACK_DETAIL_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.payload.error\n };\n case TYPES.SEND_RESPONSE_BEGIN:\n return {\n ...state,\n sendingResponse: true\n };\n case TYPES.SEND_RESPONSE_SUCCESS:\n return {\n ...state,\n sendingResponse: false\n };\n case TYPES.SEND_RESPONSE_FAILURE:\n return {\n ...state,\n sendingResponse: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_FEEDBACK_DETAIL_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_FEEDBACK_DETAIL:\n return initialState;\n default:\n return state;\n }\n}","import { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { IATLegacyDatasource } from \"@algo/network-manager/models/v3\";\n\nexport let FETCH_DATASOURCES_BEGIN = 'FETCH_DATASOURCES_BEGIN';\nexport let FETCH_DATASOURCES_SUCCESS = 'FETCH_DATASOURCES_SUCCESS';\nexport let FETCH_DATASOURCES_FAILURE = 'FETCH_DATASOURCES_FAILURE';\nexport let CLEAR_DATASOURCES_ERROR = 'CLEAR_DATASOURCES_ERROR';\n\nexport interface DatasourceState {\n datasources: IATLegacyDatasource[];\n loading: boolean;\n error: Error | null;\n lastResponse: IProcessedResponse;\n}\n\nexport interface DatasourcePayload {\n datasources: IATLegacyDatasource[];\n error: Error | null;\n response: IProcessedResponse;\n}\n\ninterface FetchDatasourcesBeginAction {\n type: typeof FETCH_DATASOURCES_BEGIN;\n payload: DatasourcePayload;\n}\n\ninterface FetchDatasourcesSuccessAction {\n type: typeof FETCH_DATASOURCES_SUCCESS;\n payload: DatasourcePayload;\n}\n\ninterface FetchDatasourcesFailureAction {\n type: typeof FETCH_DATASOURCES_FAILURE;\n payload: DatasourcePayload;\n}\n\ninterface ClearDatasourcesErrorAction {\n type: typeof CLEAR_DATASOURCES_ERROR;\n payload: DatasourcePayload;\n}\n\nexport type DatasourceTypes = \n FetchDatasourcesBeginAction | \n FetchDatasourcesSuccessAction | \n FetchDatasourcesFailureAction | \n ClearDatasourcesErrorAction;\n","import { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport {\n DatasourceState, DatasourceTypes,\n CLEAR_DATASOURCES_ERROR,\n FETCH_DATASOURCES_BEGIN, FETCH_DATASOURCES_SUCCESS, FETCH_DATASOURCES_FAILURE\n} from \"./types\";\n\nlet initialState: DatasourceState = {\n loading: false,\n datasources: [],\n error: null,\n lastResponse: new ProcessedResponse()\n}\n\nexport function datasourceReducer(state = initialState, action: DatasourceTypes): DatasourceState {\n switch(action.type) {\n case FETCH_DATASOURCES_BEGIN:\n return {\n ...state,\n loading: true\n };\n case FETCH_DATASOURCES_SUCCESS:\n return {\n ...state,\n loading: false,\n datasources: action.payload.datasources,\n lastResponse: action.payload.response\n };\n case FETCH_DATASOURCES_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.payload.error\n };\n case CLEAR_DATASOURCES_ERROR:\n return {\n ...state,\n error: null\n };\n default:\n return state;\n }\n}","import { IAAUserAuthorizationProfile } from \"@algo/network-manager/models/v3/admin\";\n\nexport let LOAD_PROFILE_BEGIN = 'FETCH_PROFILE_BEGIN';\nexport let LOAD_PROFILE_SUCCESS = 'FETCH_PROFILE_SUCCESS';\nexport let LOAD_PROFILE_FAILURE = 'FETCH_PROFILE_FAILURE';\nexport let UNLOAD_PROFILE = 'UNLOAD_PROFILE';\nexport let CLEAR_PROFILE_ERROR = 'CLEAR_PROFILE_ERROR';\n\nexport interface ProfileState {\n userProfile: IAAUserAuthorizationProfile;\n loading: boolean;\n initialized: boolean;\n error: Error | null;\n}\n\nexport interface ProfilePayload {\n userProfile: IAAUserAuthorizationProfile;\n error: Error;\n}\n\ninterface FetchProfileBeginAction {\n type: typeof LOAD_PROFILE_BEGIN;\n payload: ProfilePayload;\n}\n\ninterface FetchProfileSuccessAction {\n type: typeof LOAD_PROFILE_SUCCESS;\n payload: ProfilePayload;\n}\n\ninterface FetchProfileFailureAction {\n type: typeof LOAD_PROFILE_FAILURE;\n payload: ProfilePayload;\n}\n\ninterface UnloadProfileAction {\n type: typeof UNLOAD_PROFILE;\n payload: ProfilePayload;\n}\n\ninterface ClearProfileErrorAction {\n type: typeof CLEAR_PROFILE_ERROR;\n payload: ProfilePayload;\n}\n\nexport type ProfileTypes = \n FetchProfileBeginAction | \n FetchProfileSuccessAction | \n FetchProfileFailureAction | \n UnloadProfileAction | \n ClearProfileErrorAction;","import * as TYPES from \"./types\";\nimport { AAUserAuthorizationProfile } from \"@algo/network-manager/models/v3/admin\";\n\nlet initialState: TYPES.ProfileState = {\n userProfile: new AAUserAuthorizationProfile(),\n loading: false,\n initialized: false,\n error: null\n}\n\nexport function profileReducer(\n state = initialState, \n action: TYPES.ProfileTypes\n): TYPES.ProfileState {\n\n switch(action.type) {\n case TYPES.LOAD_PROFILE_BEGIN:\n return {\n ...state,\n loading: true\n };\n case TYPES.LOAD_PROFILE_SUCCESS:\n return {\n ...state,\n loading: false,\n initialized: true,\n userProfile: new AAUserAuthorizationProfile(action.payload.userProfile)\n };\n case TYPES.LOAD_PROFILE_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_PROFILE_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNLOAD_PROFILE:\n return initialState;\n default:\n return state;\n }\n}","import * as TYPES from \"./types\";\n\nlet initialState: TYPES.OrganizationDashboardState = {\n initializing: false,\n loadingOrganizations: false,\n deletingOrganization: false,\n organizations: [],\n error: null\n};\n\nexport function organizationDashboardReducer(\n state = initialState, \n action: TYPES.OrganizationDashboardTypes\n): TYPES.OrganizationDashboardState {\n switch(action.type) {\n case TYPES.INITIALIZE_ORGANIZATION_DASHBOARD_BEGIN:\n return {\n ...state,\n initializing: true,\n loadingOrganizations: true\n };\n case TYPES.INITIALIZE_ORGANIZATION_DASHBOARD_SUCCESS:\n return {\n ...state,\n initializing: false,\n loadingOrganizations: false,\n organizations: action.payload.organizations\n };\n case TYPES.INITIALIZE_ORGANIZATION_DASHBOARD_FAILURE:\n return {\n ...state,\n initializing: false,\n loadingOrganizations: false,\n error: action.payload.error\n };\n case TYPES.LOAD_ORGANIZATIONS_BEGIN:\n return {\n ...state,\n loadingOrganizations: true\n };\n case TYPES.LOAD_ORGANIZATIONS_SUCCESS:\n return {\n ...state,\n loadingOrganizations: false,\n organizations: action.payload.organizations\n };\n case TYPES.LOAD_ORGANIZATIONS_FAILURE:\n return {\n ...state,\n loadingOrganizations: false,\n error: action.payload.error\n };\n case TYPES.DELETE_ORGANIZATION_BEGIN:\n return {\n ...state,\n deletingOrganization: true\n };\n case TYPES.DELETE_ORGANIZATION_SUCCESS:\n return {\n ...state,\n deletingOrganization: false,\n organizations: action.payload.organizations\n };\n case TYPES.DELETE_ORGANIZATION_FAILURE:\n return {\n ...state,\n deletingOrganization: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_ORGANIZATION_DASHBOARD_ERROR:\n return {\n ...state,\n error: null\n }\n case TYPES.UNINITIALIZE_ORGANIZATION_DASHBOARD:\n return initialState;\n default:\n return state;\n }\n}","import { IATLegacyDatasource } from \"@algo/network-manager/models/v3\";\nimport { IAARole, IAAOrganization } from \"@algo/network-manager/models/v3/admin\";\nimport { ICASUserProfile } from \"@algo/network-manager/models/v3/cas\";\n\nexport let LOAD_ORGANIZATION_BEGIN = 'LOAD_ORGANIZATION_BEGIN';\nexport let LOAD_ORGANIZATION_SUCCESS = 'LOAD_ORGANIZATION_SUCCESS';\nexport let LOAD_ORGANIZATION_FAILURE = 'LOAD_ORGANIZATION_FAILURE';\n\nexport let SAVE_ORGANIZATION_BEGIN = 'SAVE_ORGANIZATION_BEGIN';\nexport let SAVE_ORGANIZATION_SUCCESS = 'SAVE_ORGANIZATION_SUCCESS';\nexport let SAVE_ORGANIZATION_FAILURE = 'SAVE_ORGANIZATION_FAILURE';\n\nexport let LOAD_USER_SEARCH_BEGIN = 'LOAD_USER_SEARCH_BEGIN';\nexport let LOAD_USER_SEARCH_SUCCESS = 'LOAD_USER_SEARCH_SUCCESS';\nexport let LOAD_USER_SEARCH_FAILURE = 'LOAD_USER_SEARCH_FAILURE';\n\nexport let ADD_USER_TO_ORGANIZATION_BEGIN = 'ADD_USER_TO_ORGANIZATION_BEGIN';\nexport let ADD_USER_TO_ORGANIZATION_SUCCESS = 'ADD_USER_TO_ORGANIZATION_SUCCESS';\nexport let ADD_USER_TO_ORGANIZATION_FAILURE = 'ADD_USER_TO_ORGANIZATION_FAILURE';\n\nexport let REMOVE_USER_FROM_ORGANIZATION_BEGIN = 'REMOVE_USER_FROM_ORGANIZATION_BEGIN';\nexport let REMOVE_USER_FROM_ORGANIZATION_SUCCESS = 'REMOVE_USER_FROM_ORGANIZATION_SUCCESS';\nexport let REMOVE_USER_FROM_ORGANIZATION_FAILURE = 'REMOVE_USER_FROM_ORGANIZATION_FAILURE';\n\nexport let CLEAR_ORGANIZATION_EDITOR_ERROR = 'CLEAR_ORGANIZATION_EDITOR_ERROR';\n\nexport let UNINITIALIZE_ORGANIZATION_EDITOR = 'UNINITIALIZE_ORGANIZATION_EDITOR';\n\nexport interface OrganizationEditorState {\n initializing: boolean;\n organizationLoaded: boolean;\n loadingUserSearch: boolean;\n savingOrganization: boolean;\n addingUser: boolean,\n removingUser: boolean;\n organization: IAAOrganization;\n organizationList: IAAOrganization[];\n roleList: IAARole[];\n organizationUserList: ICASUserProfile[];\n userSearchList: ICASUserProfile[];\n datasourceList: IATLegacyDatasource[];\n error: Error | null;\n}\n\nexport interface OrganizationEditorPayload {\n organization: IAAOrganization;\n organizationList: IAAOrganization[];\n roleList: IAARole[];\n organizationUserList: ICASUserProfile[];\n userSearchList: ICASUserProfile[];\n datasourceList: IATLegacyDatasource[];\n error: Error | null;\n}\n\ninterface LoadOrganizationEditorBeginAction {\n type: typeof LOAD_ORGANIZATION_BEGIN;\n payload: OrganizationEditorPayload;\n}\n\ninterface LoadOrganizationEditorSuccessAction {\n type: typeof LOAD_ORGANIZATION_SUCCESS;\n payload: OrganizationEditorPayload;\n}\n\ninterface LoadOrganizationEditorFailureAction {\n type: typeof LOAD_ORGANIZATION_SUCCESS;\n payload: OrganizationEditorPayload;\n}\n\ninterface LoadUserSearchBeginAction {\n type: typeof LOAD_USER_SEARCH_BEGIN;\n payload: OrganizationEditorPayload;\n}\n\ninterface LoadUserSearchSuccessAction {\n type: typeof LOAD_USER_SEARCH_SUCCESS;\n payload: OrganizationEditorPayload;\n}\n\ninterface LoadUserSearchFailureAction {\n type: typeof LOAD_USER_SEARCH_FAILURE;\n payload: OrganizationEditorPayload;\n}\n\ninterface SaveOrganizationBeginAction {\n type: typeof SAVE_ORGANIZATION_BEGIN;\n payload: OrganizationEditorPayload;\n}\n\ninterface SaveOrganizationSuccessAction {\n type: typeof SAVE_ORGANIZATION_SUCCESS;\n payload: OrganizationEditorPayload;\n}\n\ninterface SaveOrganizationFailureAction {\n type: typeof SAVE_ORGANIZATION_FAILURE;\n payload: OrganizationEditorPayload;\n}\n\ninterface AddUserToOrganizationBeginAction {\n type: typeof ADD_USER_TO_ORGANIZATION_BEGIN;\n payload: OrganizationEditorPayload;\n}\n\ninterface AddUserToOrganizationSuccessAction {\n type: typeof ADD_USER_TO_ORGANIZATION_SUCCESS;\n payload: OrganizationEditorPayload;\n}\n\ninterface AddUserToOrganizationFailureAction {\n type: typeof ADD_USER_TO_ORGANIZATION_FAILURE;\n payload: OrganizationEditorPayload;\n}\n\ninterface RemoveUserFromOrganizationBeginAction {\n type: typeof REMOVE_USER_FROM_ORGANIZATION_BEGIN;\n payload: OrganizationEditorPayload;\n}\n\ninterface RemoveUserFromOrganizationSuccessAction {\n type: typeof REMOVE_USER_FROM_ORGANIZATION_SUCCESS;\n payload: OrganizationEditorPayload;\n}\n\ninterface RemoveUserFromOrganizationFailureAction {\n type: typeof REMOVE_USER_FROM_ORGANIZATION_FAILURE;\n payload: OrganizationEditorPayload;\n}\n\ninterface ClearOrganizationEditorErrorAction {\n type: typeof CLEAR_ORGANIZATION_EDITOR_ERROR;\n payload: OrganizationEditorPayload;\n}\n\ninterface UninitializeOrganizationEditorAction {\n type: typeof UNINITIALIZE_ORGANIZATION_EDITOR;\n payload: OrganizationEditorPayload;\n}\n\nexport type OrganizationEditorTypes = \n LoadOrganizationEditorBeginAction | \n LoadOrganizationEditorSuccessAction | \n LoadOrganizationEditorFailureAction | \n LoadUserSearchBeginAction | \n LoadUserSearchSuccessAction | \n LoadUserSearchFailureAction | \n SaveOrganizationBeginAction | \n SaveOrganizationSuccessAction | \n SaveOrganizationFailureAction | \n AddUserToOrganizationBeginAction | \n AddUserToOrganizationSuccessAction | \n AddUserToOrganizationFailureAction | \n RemoveUserFromOrganizationBeginAction | \n RemoveUserFromOrganizationSuccessAction | \n RemoveUserFromOrganizationFailureAction | \n ClearOrganizationEditorErrorAction | \n UninitializeOrganizationEditorAction;","// libraries\n// interfaces & models\nimport { \n AAOrganization \n} from \"@algo/network-manager/models/v3/admin\";\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.OrganizationEditorState = {\n initializing: false,\n organizationLoaded: false,\n loadingUserSearch: false,\n savingOrganization: false,\n addingUser: false,\n removingUser: false,\n organization: new AAOrganization(),\n organizationList: [],\n roleList: [],\n organizationUserList: [],\n userSearchList: [],\n datasourceList: [],\n error: null\n}\n\nexport function organizationEditorReducer(\n state = initialState, \n action: TYPES.OrganizationEditorTypes\n): TYPES.OrganizationEditorState {\n switch(action.type) {\n case TYPES.LOAD_ORGANIZATION_BEGIN:\n return {\n ...state,\n initializing: true,\n error: null\n };\n case TYPES.LOAD_ORGANIZATION_SUCCESS:\n return {\n ...state,\n initializing: false,\n organizationLoaded: true,\n organization: action.payload.organization,\n organizationList: action.payload.organizationList,\n roleList: action.payload.roleList,\n organizationUserList: action.payload.organizationUserList,\n datasourceList: action.payload.datasourceList,\n error: null\n }\n case TYPES.LOAD_ORGANIZATION_FAILURE:\n return {\n ...state,\n initializing: false,\n error: action.payload.error\n };\n case TYPES.LOAD_USER_SEARCH_BEGIN:\n return {\n ...state,\n loadingUserSearch: true,\n error: null\n };\n case TYPES.LOAD_USER_SEARCH_SUCCESS:\n return {\n ...state,\n loadingUserSearch: false,\n userSearchList: action.payload.userSearchList,\n error: null\n };\n case TYPES.LOAD_USER_SEARCH_FAILURE:\n return {\n ...state,\n loadingUserSearch: false,\n error: action.payload.error\n };\n case TYPES.SAVE_ORGANIZATION_BEGIN:\n return {\n ...state,\n savingOrganization: true,\n error: null\n };\n case TYPES.SAVE_ORGANIZATION_SUCCESS:\n return {\n ...state,\n savingOrganization: false,\n organization: action.payload.organization,\n error: null\n };\n case TYPES.SAVE_ORGANIZATION_FAILURE:\n return {\n ...state,\n savingOrganization: false,\n error: action.payload.error\n };\n case TYPES.ADD_USER_TO_ORGANIZATION_BEGIN:\n return {\n ...state,\n addingUser: true\n };\n case TYPES.ADD_USER_TO_ORGANIZATION_SUCCESS:\n return {\n ...state,\n addingUser: false,\n organizationUserList: action.payload.organizationUserList,\n error: null\n };\n case TYPES.ADD_USER_TO_ORGANIZATION_FAILURE:\n return {\n ...state,\n addingUser: false,\n error: action.payload.error\n };\n case TYPES.REMOVE_USER_FROM_ORGANIZATION_BEGIN:\n return {\n ...state,\n removingUser: true,\n error: null\n };\n case TYPES.REMOVE_USER_FROM_ORGANIZATION_SUCCESS:\n return {\n ...state,\n removingUser: false,\n organizationUserList: action.payload.organizationUserList,\n error: null\n };\n case TYPES.REMOVE_USER_FROM_ORGANIZATION_FAILURE:\n return {\n ...state,\n removingUser: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_ORGANIZATION_EDITOR_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_ORGANIZATION_EDITOR:\n return initialState;\n default:\n return state;\n }\n}","//types\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.RoleDashboardState = {\n initializing: false,\n loadingRoles: false,\n deletingRole: false,\n roles: [],\n organizations: [],\n error: null,\n lastResponse: new ProcessedResponse()\n}\n\nexport function roleDashboardReducer(\n state = initialState, \n action: TYPES.RoleDashboardTypes\n): TYPES.RoleDashboardState {\n\n switch(action.type) {\n case TYPES.INITIALIZE_ROLE_DASHBOARD_BEGIN:\n return {\n ...state,\n initializing: true\n };\n case TYPES.INITIALIZE_ROLE_DASHBOARD_SUCCESS:\n return {\n ...state,\n initializing: false,\n loadingRoles: false,\n organizations: action.payload.organizations\n };\n case TYPES.INITIALIZE_ROLE_DASHBOARD_FAILURE:\n return {\n ...state,\n initializing: false,\n loadingRoles: false,\n error: action.payload.error\n };\n case TYPES.LOAD_ROLES_BEGIN:\n return {\n ...state,\n loadingRoles: true\n };\n case TYPES.LOAD_ROLES_SUCCESS:\n return {\n ...state,\n loadingRoles: false,\n roles: action.payload.roles\n };\n case TYPES.LOAD_ROLES_FAILURE:\n return {\n ...state,\n loadingRoles: false,\n error: action.payload.error\n };\n case TYPES.DELETE_ROLE_BEGIN:\n return {\n ...state,\n deletingRole: true\n };\n case TYPES.DELETE_ROLE_SUCCESS:\n return {\n ...state,\n deletingRole: false,\n roles: action.payload.roles\n };\n case TYPES.DELETE_ROLE_FAILURE:\n return {\n ...state,\n deletingRole: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_ROLE_DASHBOARD_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_ROLE_DASHBOARD:\n return initialState;\n default:\n return state;\n }\n}","//types\nimport * as TYPES from \"./types\";\n//models\nimport { AARole } from \"@algo/network-manager/models/v3/admin\";\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\n\nlet initialState: TYPES.RoleEditorState = {\n initializing: false,\n roleLoaded: false,\n savingRole: false,\n role: new AARole(),\n privilegeList: [],\n organizationList: [],\n error: null,\n lastResponse: new ProcessedResponse()\n}\n\nexport function roleEditorReducer(\n state = initialState,\n action: TYPES.RoleEditorTypes\n): TYPES.RoleEditorState {\n switch(action.type) {\n case TYPES.LOAD_ROLE_BEGIN:\n return {\n ...state,\n initializing: true\n };\n case TYPES.LOAD_ROLE_SUCCESS:\n return {\n ...state,\n initializing: false,\n roleLoaded: true,\n role: action.payload.role,\n privilegeList: action.payload.privilegeList,\n organizationList: action.payload.organizationList\n };\n case TYPES.LOAD_ROLE_FAILURE:\n return {\n ...state,\n initializing: false,\n roleLoaded: false,\n error: action.payload.error\n };\n case TYPES.SAVE_ROLE_BEGIN:\n return {\n ...state,\n savingRole: true\n };\n case TYPES.SAVE_ROLE_SUCCESS:\n return {\n ...state,\n savingRole: false,\n role: action.payload.role\n };\n case TYPES.SAVE_ROLE_FAILURE:\n return {\n ...state,\n savingRole: false,\n error: action.payload.error\n };\n case TYPES.UNINITIALIZE_ROLE_EDITOR:\n return initialState;\n default:\n return state;\n }\n}","//types\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.UserDashboardState = {\n initializing: false,\n loadingUsers: false,\n deletingUser: false,\n organizations: [],\n users: [],\n error: null\n};\n\nexport function userDashboardReducer(state = initialState, action: TYPES.UserDashboardTypes): TYPES.UserDashboardState {\n switch(action.type) {\n case TYPES.INITIALIZE_USER_DASHBOARD_BEGIN:\n return {\n ...state,\n initializing: true\n };\n case TYPES.INITIALIZE_USER_DASHBOARD_SUCCESS:\n return {\n ...state,\n initializing: false,\n organizations: action.payload.organizations\n };\n case TYPES.INITIALIZE_USER_DASHBOARD_FAILURE:\n return {\n ...state,\n initializing: false,\n error: action.payload.error\n };\n case TYPES.LOAD_USERS_BEGIN: \n return {\n ...state,\n loadingUsers: true\n };\n case TYPES.LOAD_USERS_SUCCESS: \n return {\n ...state,\n loadingUsers: false,\n users: action.payload.users\n };\n case TYPES.LOAD_USERS_FAILURE:\n return {\n ...state,\n loadingUsers: false,\n error: action.payload.error\n };\n case TYPES.DELETE_USER_BEGIN:\n return {\n ...state,\n deletingUser: true\n };\n case TYPES.DELETE_USER_SUCCESS:\n return {\n ...state,\n deletingUser: false\n };\n case TYPES.DELETE_USER_FAILURE:\n return {\n ...state,\n deletingUser: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_USER_DASHBOARD_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_USER_DASHBOARD:\n return initialState;\n default:\n return state;\n }\n}","import { AAUserForm } from \"@algo/network-manager/models/v3/admin\";\nimport { \n CASComplexityRequirement, CASPasswordValidation \n} from \"@algo/network-manager/models/v3/cas\";\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.UserEditorState = {\n initializing: false,\n userLoaded: false,\n savingUser: false,\n validatingPassword: false,\n changingPassword: false,\n changePasswordSuccess: false,\n sendingResetPasswordEmail: false,\n sendResetPasswordEmailSuccess: false,\n userForm: new AAUserForm(),\n roleList: [],\n organizationList: [],\n complexityRequirements: new CASComplexityRequirement(),\n passwordValidation: new CASPasswordValidation(),\n error: null\n}\n\nexport function userEditorReducer(\n state = initialState, \n action: TYPES.UserEditorTypes\n): TYPES.UserEditorState {\n \n switch (action.type) {\n case TYPES.LOAD_USER_EDITOR_BEGIN:\n return {\n ...state,\n initializing: true\n };\n case TYPES.LOAD_USER_EDITOR_SUCCESS:\n return {\n ...state,\n initializing: false,\n userLoaded: true,\n userForm: action.payload.userForm,\n roleList: action.payload.roleList,\n organizationList: action.payload.organizationList,\n complexityRequirements: action.payload.complexityRequirements\n };\n case TYPES.LOAD_USER_EDITOR_FAILURE:\n return {\n ...state,\n initializing: false,\n error: action.payload.error\n };\n case TYPES.SAVE_USER_BEGIN:\n return {\n ...state,\n savingUser: true\n };\n case TYPES.SAVE_USER_SUCCESS:\n return {\n ...state,\n savingUser: false,\n userForm: action.payload.userForm\n };\n case TYPES.SAVE_USER_FAILURE:\n return {\n ...state,\n savingUser: false,\n error: action.payload.error\n };\n case TYPES.CHANGE_PASSWORD_BEGIN:\n return {\n ...state,\n changingPassword: true,\n changePasswordSuccess: false\n };\n case TYPES.CHANGE_PASSWORD_SUCCESS:\n return {\n ...state,\n changingPassword: false,\n changePasswordSuccess: true\n };\n case TYPES.CHANGE_PASSWORD_FAILURE:\n return {\n ...state,\n changingPassword: false,\n changePasswordSuccess: false,\n error: action.payload.error\n };\n case TYPES.CHANGE_PASSWORD_CLEAR:\n return {\n ...state,\n changingPassword: false,\n changePasswordSuccess: false\n };\n case TYPES.VALIDATE_PASSWORD_BEGIN:\n return {\n ...state,\n validatingPassword: true\n };\n case TYPES.VALIDATE_PASSWORD_SUCCESS:\n return {\n ...state,\n validatingPassword: false,\n passwordValidation: action.payload.passwordValidation\n };\n case TYPES.VALIDATE_PASSWORD_FAILURE:\n return {\n ...state,\n validatingPassword: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_USER_EDITOR_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.RESET_PASSWORD_EMAIL_BEGIN:\n return {\n ...state,\n sendingResetPasswordEmail: true\n };\n case TYPES.RESET_PASSWORD_EMAIL_SUCCESS:\n return {\n ...state,\n sendingResetPasswordEmail: false,\n sendResetPasswordEmailSuccess: true\n };\n case TYPES.RESET_PASSWORD_EMAIL_FAILURE:\n return {\n ...state,\n sendingResetPasswordEmail: false,\n error: action.payload.error\n };\n case TYPES.RESET_PASSWORD_EMAIL_CLEAR:\n return {\n ...state,\n sendingResetPasswordEmail: false,\n sendResetPasswordEmailSuccess: false\n };\n case TYPES.UNINITIALIZE_USER_EDITOR:\n return initialState;\n default:\n return state;\n }\n}","import { IProcessedResponse } from '@algo/network-manager/managers/v3';\nimport { ATSynchronization } from '@algo/network-manager/models/v3';\n\nexport let FETCH_LATEST_SYNCHRONIZATION_BEGIN = 'FETCH_LATEST_SYNCHRONIZATION_BEGIN';\nexport let FETCH_LATEST_SYNCHRONIZATION_SUCCESS = 'FETCH_LATEST_SYNCHRONIZATION_SUCCESS';\nexport let FETCH_LATEST_SYNCHRONIZATION_FAILURE = 'FETCH_LATEST_SYNCHRONIZATION_FAILURE';\n\nexport let FETCH_HISTORY_SYNCHRONIZATION_BEGIN = 'FETCH_HISTORY_SYNCHRONIZATION_BEGIN';\nexport let FETCH_HISTORY_SYNCHRONIZATION_SUCCESS = 'FETCH_HISTORY_SYNCHRONIZATION_SUCCESS';\nexport let FETCH_HISTORY_SYNCHRONIZATION_FAILURE = 'FETCH_HISTORY_SYNCHRONIZATION_FAILURE';\nexport let FETCH_HISTORY_SYNCHRONIZATION_NULL_SERVICE = \"FETCH_HISTORY_SYNCHRONIZATION_NULL_SERVICE\";\n\nexport let CLEAR_SYNCHRONIZATION_ERROR = 'CLEAR_SYNCHRONIZATION_ERROR';\n\nexport let UNINITIALIZE_SYNCHRONIZATION_STATE = 'UNINITIALIZE_SYNCHRONIZATION_STATE';\n\nexport interface SynchronizationState {\n latest: ATSynchronization[];\n history: ATSynchronization[];\n loadingLatest: boolean;\n loadingHistory: boolean;\n error: Error | null;\n lastResponse: IProcessedResponse;\n}\n\nexport interface SynchronizationPayload {\n latest: ATSynchronization[];\n history: ATSynchronization[] | [];\n error: Error | null;\n response: IProcessedResponse;\n}\n\ninterface FetchLatestSynchronizationBeginAction {\n type: typeof FETCH_LATEST_SYNCHRONIZATION_BEGIN;\n payload: SynchronizationPayload;\n}\n\ninterface FetchLatestSynchronizationSuccessAction {\n type: typeof FETCH_LATEST_SYNCHRONIZATION_SUCCESS;\n payload: SynchronizationPayload;\n}\n\ninterface FetchLatestSynchronizationFailureAction {\n type: typeof FETCH_LATEST_SYNCHRONIZATION_FAILURE;\n payload: SynchronizationPayload;\n}\n\ninterface FetchHistorySynchronizationBeginAction {\n type: typeof FETCH_HISTORY_SYNCHRONIZATION_BEGIN;\n payload: SynchronizationPayload;\n}\n\ninterface FetchHistorySynchronizationSuccessAction {\n type: typeof FETCH_HISTORY_SYNCHRONIZATION_SUCCESS;\n payload: SynchronizationPayload;\n}\n\ninterface FetchHistorySynchronizationFailureAction {\n type: typeof FETCH_HISTORY_SYNCHRONIZATION_FAILURE;\n payload: SynchronizationPayload;\n}\n\ninterface ClearSynchronizationErrorAction {\n type: typeof CLEAR_SYNCHRONIZATION_ERROR;\n payload: SynchronizationPayload;\n}\n\ninterface UninitializeSynchronizationAction {\n type: typeof UNINITIALIZE_SYNCHRONIZATION_STATE;\n payload: SynchronizationPayload;\n}\n\nexport type SynchronizationTypes = \n FetchLatestSynchronizationBeginAction | \n FetchLatestSynchronizationSuccessAction | \n FetchLatestSynchronizationFailureAction | \n FetchHistorySynchronizationBeginAction | \n FetchHistorySynchronizationSuccessAction | \n FetchHistorySynchronizationFailureAction | \n ClearSynchronizationErrorAction | \n UninitializeSynchronizationAction;","//types\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport * as TYPES from \"./types\";\n\nlet initialState: TYPES.SynchronizationState = {\n loadingLatest: false,\n loadingHistory: false,\n latest: [],\n history: [],\n error: null,\n lastResponse: new ProcessedResponse()\n}\n\nexport function synchronizationReducer(\n state = initialState, \n action: TYPES.SynchronizationTypes\n): TYPES.SynchronizationState {\n\n switch (action.type) {\n case TYPES.FETCH_LATEST_SYNCHRONIZATION_BEGIN:\n return {\n ...state,\n loadingLatest: true\n };\n case TYPES.FETCH_LATEST_SYNCHRONIZATION_SUCCESS:\n return {\n ...state,\n loadingLatest: false,\n latest: action.payload.latest,\n lastResponse: action.payload.response\n };\n case TYPES.FETCH_LATEST_SYNCHRONIZATION_FAILURE:\n return {\n ...state,\n loadingLatest: false,\n error: action.payload.error\n };\n case TYPES.FETCH_HISTORY_SYNCHRONIZATION_BEGIN:\n return {\n ...state,\n loadingHistory: true\n };\n case TYPES.FETCH_HISTORY_SYNCHRONIZATION_SUCCESS:\n return {\n ...state,\n loadingHistory: false,\n history: action.payload.history\n };\n case TYPES.FETCH_HISTORY_SYNCHRONIZATION_FAILURE:\n return {\n ...state,\n loadingHistory: false,\n error: action.payload.error\n };\n case TYPES.CLEAR_SYNCHRONIZATION_ERROR:\n return {\n ...state,\n error: null\n };\n case TYPES.UNINITIALIZE_SYNCHRONIZATION_STATE:\n return initialState;\n default:\n return state;\n }\n}","// interfaces & models\nimport { IReduxData } from \"../../../../utils/ReduxData\";\nimport { IATCameraDeviceDto, IATCameraDeviceStreamStatusDto } from \"@algo/network-manager/models/v3\";\nimport { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\n// constants\nexport const LOAD_CAMERA_DEVICES_BEGIN = \"LOAD_CAMERA_DEVICES_BEGIN\";\nexport const LOAD_CAMERA_DEVICES_SUCCESS = \"LOAD_CAMERA_DEVICES_SUCCESS\";\nexport const LOAD_CAMERA_DEVICES_FAILURE = \"LOAD_CAMERA_DEVICES_FAILURE\";\n\nexport const LOAD_CAMERA_DEVICE_STATUS_BEGIN = \"LOAD_CAMERA_DEVICE_STATUS_BEGIN\";\nexport const LOAD_CAMERA_DEVICE_STATUS_SUCCESS = \"LOAD_CAMERA_DEVICE_STATUS_SUCCESS\";\nexport const LOAD_CAMERA_DEVICE_STATUS_FAILURE = \"LOAD_CAMERA_DEVICE_STATUS_FAILURE\";\n\nexport interface IStatusData {\n [key: number]: IATCameraDeviceStreamStatusDto;\n}\n\nexport interface IStatusLoading {\n [key: number]: boolean;\n}\n\nexport interface State {\n cameraData: IReduxData;\n error: Error | null;\n lastResponse: IProcessedResponse;\n}\n\nexport interface Payload {\n devices: Array;\n totalCount: number;\n checksum: number;\n error: Error | null;\n response: IProcessedResponse;\n}\n\n/************************************************\n LOAD CAMERA DEVICES | ACTION TYPES\n ***********************************************/\ninterface LoadCameraDevicesBeginAction {\n type: typeof LOAD_CAMERA_DEVICES_BEGIN;\n payload: Payload;\n}\n\ninterface LoadCameraDevicesSuccessAction {\n type: typeof LOAD_CAMERA_DEVICES_SUCCESS;\n payload: Payload;\n}\n\ninterface LoadCameraDevicesFailureAction {\n type: typeof LOAD_CAMERA_DEVICES_FAILURE;\n payload: Payload;\n}\n\nexport type Actions =\n // LOAD CAMERA DEVICES\n LoadCameraDevicesBeginAction |\n LoadCameraDevicesSuccessAction |\n LoadCameraDevicesFailureAction;\n\n","export interface IReduxData {\n name: string;\n data: any;\n totalCount: number | null;\n checksum: number | null;\n isLoading: any;\n toggleLoading: () => void;\n setLoading: (newValue: boolean) => void;\n needsUpdate: (newChecksum: number) => boolean;\n}\n\nexport interface IReduxDataInitObject {\n name?: string; // a string to identify this data\n data?: any; // the data you want to hold in store\n totalCount?: number | null; // total count of data that can be requested \n checksum?: number | null; // checksum to compare to future calls to detect data changes\n isLoading?: boolean; // indicate whether the data is being loaded\n}\n\nexport class ReduxData {\n\n //class properties / attributes\n name: string;\n data: any;\n totalCount: number | null;\n checksum: number | null;\n isLoading: boolean\n\n constructor(initObject: IReduxDataInitObject) {\n this.name = initObject.name ? initObject.name : \"AnonymousData\";\n this.data = initObject.data ? initObject.data : null;\n this.totalCount = initObject.totalCount ? initObject.totalCount : null;\n this.checksum = initObject.checksum ? initObject.checksum : null;\n this.isLoading = initObject.isLoading ? initObject.isLoading : false;\n }\n\n toggleLoading() {\n this.isLoading = !this.isLoading;\n }\n\n setLoading(newValue: boolean) {\n this.isLoading = newValue;\n }\n\n needsUpdate(newChecksum: number) {\n return (newChecksum !== this.checksum);\n }\n}\n\nexport const cloneReduxData = (oldData: IReduxData) => {\n return new ReduxData(\n {\n name: oldData.name,\n data: oldData.data,\n totalCount: oldData.totalCount,\n checksum: oldData.checksum,\n isLoading: oldData.isLoading,\n }\n );\n}","import * as TYPES from \"../types/streamPreviewsTypes\";\nimport { ReduxData, cloneReduxData, IReduxData } from \"../../../../utils/ReduxData\";\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\n\nlet initialState: TYPES.State = {\n cameraData: new ReduxData({ name: \"cameraDevices\" }),\n error: null,\n lastResponse: new ProcessedResponse()\n};\n\nexport function streamPreviewsReducer(state = initialState, action: TYPES.Actions): TYPES.State {\n let tempData: ReduxData | null = null;\n switch (action.type) {\n\n /******************************************************************************\n LOAD CAMERA DEVICES | REDUCERS\n *****************************************************************************/\n case TYPES.LOAD_CAMERA_DEVICES_BEGIN:\n tempData = cloneReduxData(state.cameraData);\n tempData.setLoading(true);\n return {\n ...state,\n cameraData: tempData,\n };\n case TYPES.LOAD_CAMERA_DEVICES_SUCCESS:\n tempData = cloneReduxData(state.cameraData);\n tempData.data = action.payload.devices;\n tempData.checksum = parseInt(action.payload.response.getChecksum());\n tempData.totalCount = action.payload.response.getCount()\n tempData.setLoading(false);\n return {\n ...state,\n cameraData: tempData,\n lastResponse: action.payload.response\n };\n case TYPES.LOAD_CAMERA_DEVICES_FAILURE:\n tempData = cloneReduxData(state.cameraData);\n tempData.setLoading(false);\n return {\n ...state,\n cameraData: tempData,\n error: action.payload.error\n };\n default:\n return state;\n }\n}","// interfaces & models\nimport { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { IATCameraDeviceStreamStatusDto } from \"@algo/network-manager/models/v3\";\n// constants\nexport const LOAD_CAMERA_DEVICE_STATUS_BEGIN = \"LOAD_CAMERA_DEVICE_STATUS_BEGIN\";\nexport const LOAD_CAMERA_DEVICE_STATUS_SUCCESS = \"LOAD_CAMERA_DEVICE_STATUS_SUCCESS\";\nexport const LOAD_CAMERA_DEVICE_STATUS_FAILURE = \"LOAD_CAMERA_DEVICE_STATUS_FAILURE\";\n\n\nexport interface IStatusData {\n [key: number]: IATCameraDeviceStreamStatusDto;\n}\n\nexport interface IStatusLoading {\n [key: number]: boolean;\n}\n\nexport interface State {\n statusData: IStatusData;\n statusLoading: IStatusLoading;\n error: Error | null;\n lastResponse: IProcessedResponse;\n}\n\nexport interface Payload {\n id: number;\n status: IATCameraDeviceStreamStatusDto;\n error: Error | null;\n response: IProcessedResponse;\n}\n\n/******************************************************************************\n LOAD CAMERA DEVICE STATUS | ACTION TYPES\n *****************************************************************************/\ninterface LoadCameraDeviceStatusBeginAction {\n type: typeof LOAD_CAMERA_DEVICE_STATUS_BEGIN;\n payload: Payload;\n}\n\ninterface LoadCameraDeviceStatusSuccessAction {\n type: typeof LOAD_CAMERA_DEVICE_STATUS_SUCCESS;\n payload: Payload;\n}\n\ninterface LoadCameraDeviceStatusFailureAction {\n type: typeof LOAD_CAMERA_DEVICE_STATUS_FAILURE;\n payload: Payload;\n}\n\nexport type Actions =\n // LOAD CAMERA DEVICE STATUS\n LoadCameraDeviceStatusBeginAction |\n LoadCameraDeviceStatusSuccessAction |\n LoadCameraDeviceStatusFailureAction;\n\n","// libraries\n// interfaces & models\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { \n IATCameraDeviceStreamStatusDto,\n ATIncomingStreamLog, D_ATIncomingStreamLog,\n EATLogStatus,\n ATPushPublishEntryLog, D_ATPushPublishEntryLog,\n} from \"@algo/network-manager/models/v3\";\nimport * as TYPES from \"../types/streamStatusTypes\";\n\nlet initialState: TYPES.State = {\n statusData: {},\n statusLoading: {},\n error: null,\n lastResponse: new ProcessedResponse()\n};\n\nconst badStatus: IATCameraDeviceStreamStatusDto = {\n cameraDeviceId: 0,\n localIncomingStreamLogs: [ new ATIncomingStreamLog({ ...D_ATIncomingStreamLog, status: EATLogStatus.Unknown}) ],\n distributorIncomingStreamLogs: [ new ATIncomingStreamLog({ ...D_ATIncomingStreamLog, status: EATLogStatus.Unknown}) ],\n pushPublishEntryLogs: [ new ATPushPublishEntryLog({ ...D_ATPushPublishEntryLog, status: EATLogStatus.Unknown}) ],\n}\n\nexport function streamStatusReducer(\n state = initialState, \n action: TYPES.Actions\n): TYPES.State {\n\n switch (action.type) {\n\n /******************************************************************************\n LOAD CAMERA DEVICE STATUS | REDUCERS\n *****************************************************************************/\n case TYPES.LOAD_CAMERA_DEVICE_STATUS_BEGIN:\n return {\n ...state,\n statusLoading: {\n ...state.statusLoading,\n [action.payload.id]: true\n }\n };\n case TYPES.LOAD_CAMERA_DEVICE_STATUS_SUCCESS:\n return {\n ...state,\n statusLoading: {\n ...state.statusLoading,\n [action.payload.id]: false\n },\n statusData: {\n ...state.statusData,\n [action.payload.id]: action.payload.status\n },\n lastResponse: action.payload.response\n };\n case TYPES.LOAD_CAMERA_DEVICE_STATUS_FAILURE:\n return {\n ...state,\n statusLoading: {\n ...state.statusLoading,\n [action.payload.id]: false\n },\n statusData: {\n ...state.statusData,\n [action.payload.id]: badStatus\n },\n error: action.payload.error\n };\n\n default:\n return state;\n }\n}","import * as TYPES from \"../types/toolbarTypes\";\nimport { ReduxData, cloneReduxData as clone } from \"../../../../utils/ReduxData\";\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\n\nlet initialState: TYPES.State = {\n datasourceData: new ReduxData({ name: \"datasources\" }),\n accessLevelData: new ReduxData({ name: \"accessLevelData\" }),\n error: null,\n lastResponse: new ProcessedResponse()\n};\n\nexport function streamToolbarReducer(\n state = initialState, \n action: TYPES.Actions\n): TYPES.State {\n\n let tempData: any = null;\n switch (action.type) {\n\n /******************************************************************************\n LOAD DATASOURCES | REDUCERS\n *****************************************************************************/\n case TYPES.LOAD_DATASOURCES_BEGIN:\n tempData = clone(state.datasourceData);\n tempData.setLoading(true);\n return {\n ...state,\n datasourceData: tempData,\n };\n case TYPES.LOAD_DATASOURCES_SUCCESS:\n tempData = clone(state.datasourceData);\n tempData.data = action.payload.datasources;\n tempData.setLoading(false);\n return {\n ...state,\n datasourceData: tempData,\n lastResponse: action.payload.response\n };\n case TYPES.LOAD_DATASOURCES_FAILURE:\n tempData = clone(state.datasourceData);\n tempData.setLoading(false);\n return {\n ...state,\n datasourceData: tempData,\n error: action.payload.error\n };\n \n /******************************************************************************\n UPDATE ACCESS LEVEL | REDUCERS\n *****************************************************************************/\n case TYPES.UPDATE_ACCESS_LEVEL_BEGIN:\n tempData = clone(state.accessLevelData);\n tempData.setLoading(true);\n return {\n ...state,\n accessLevelData: tempData,\n };\n case TYPES.UPDATE_ACCESS_LEVEL_SUCCESS:\n tempData = clone(state.accessLevelData);\n tempData.setLoading(false);\n return {\n ...state,\n accessLevelData: tempData,\n lastResponse: action.payload.response\n };\n case TYPES.UPDATE_ACCESS_LEVEL_FAILURE:\n tempData = clone(state.accessLevelData);\n tempData.setLoading(false);\n return {\n ...state,\n accessLevelData: tempData,\n };\n default:\n return state;\n }\n}","import * as TYPES from \"../types/pageStateTypes\";\nimport {\n ReduxData,\n cloneReduxData as clone,\n IReduxData\n} from \"../../../../utils/ReduxData\";\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { EATStreamAccessLevel } from \"@algo/network-manager/models/v3\";\n\nlet initialState: TYPES.State = {\n accessLevelData: new ReduxData({ name: \"access-level-data\" }),\n accessChange: false,\n selectingAll: false,\n selectedStreams: [],\n showAllSelectedStreams: true,\n pageCount: 1,\n pageIndex: 0,\n editMode: false,\n selectedRegion: undefined,\n selectedAccessLevel: EATStreamAccessLevel.Unknown,\n selectedRegionIndex: 0,\n search: \"\",\n showUpdateModal: false,\n showDeleteModal: false,\n error: null,\n lastResponse: new ProcessedResponse()\n};\n\nexport function pageStateReducer(state = initialState, action: TYPES.Actions): TYPES.State {\n let tempData: IReduxData | null = null;\n switch (action.type) {\n\n /******************************************************************************\n UPDATE_PAGE_STATE | REDUCERS\n *****************************************************************************/\n case TYPES.UPDATE_PAGE_STATE:\n return {\n ...action.payload.pageState,\n }\n /******************************************************************************\n UPDATE ACCESS LEVEL | REDUCERS\n *****************************************************************************/\n case TYPES.UPDATE_ACCESS_LEVELS_BEGIN:\n tempData = clone(state.accessLevelData);\n tempData.setLoading(true);\n return {\n ...state,\n accessLevelData: tempData,\n showUpdateModal: false,\n };\n case TYPES.UPDATE_ACCESS_LEVELS_SUCCESS:\n tempData = clone(state.accessLevelData);\n tempData.setLoading(false);\n return {\n ...state,\n accessLevelData: tempData,\n selectedAccessLevel: EATStreamAccessLevel.Unknown,\n selectedStreams: [],\n showAllSelectedStreams: true,\n showUpdateModal: false,\n };\n case TYPES.UPDATE_ACCESS_LEVELS_FAILURE:\n tempData = clone(state.accessLevelData);\n tempData.setLoading(false);\n return {\n ...state,\n accessLevelData: tempData,\n selectedAccessLevel: EATStreamAccessLevel.Unknown,\n selectedStreams: [],\n showAllSelectedStreams: true,\n showUpdateModal: false,\n error: action.payload.error\n };\n\n /******************************************************************************\n SELECT ALL | REDUCERS\n *****************************************************************************/\n case TYPES.SELECT_ALL_BEGIN:\n return {\n ...state,\n selectingAll: true,\n };\n case TYPES.SELECT_ALL_SUCCESS:\n return {\n ...state,\n selectingAll: false,\n selectedStreams: action.payload.selectedStreams,\n showAllSelectedStreams: action.payload.showAllSelectedStreams\n };\n case TYPES.SELECT_ALL_DESELECT:\n return {\n ...state,\n selectingAll: false,\n selectedStreams: action.payload.selectedStreams,\n showAllSelectedStreams: action.payload.showAllSelectedStreams\n };\n case TYPES.SELECT_ALL_FAILURE:\n return {\n ...state,\n selectingAll: false,\n error: action.payload.error\n };\n default:\n return state;\n }\n}","// libraries\n// interfaces & models\nimport { IProcessedResponse } from \"@algo/network-manager/managers/v3\";\nimport { \n IATIncomingStreamLog, IATStreamFile, IATCameraDevice,\n EATStreamServerLogSource, IATPushPublishEntryLog\n} from \"@algo/network-manager/models/v3\";\nimport { \n IStringBoolDictionary, IStringNumberDictionary \n} from \"../../../../types/common\";\n\nexport const LOAD_CAMERA_DEVICE_BEGIN = 'LOAD_CAMERA_DEVICE_BEGIN';\nexport const LOAD_CAMERA_DEVICE_SUCCESS = 'LOAD_CAMERA_DEVICE_SUCCESS';\nexport const LOAD_CAMERA_DEVICE_FAILURE = 'LOAD_CAMERA_DEVICE_FAILURE';\n\nexport const LOAD_LOGS_BEGIN = \"LOAD_LOGS_BEGIN\";\nexport const LOAD_LOGS_SUCCESS = \"LOAD_LOGS_SUCCESS\";\nexport const LOAD_LOGS_FAILURE = \"LOAD_LOGS_FAILURE\";\n\nexport const PATCH_CLOUD_STREAM_TARGET_BEGIN = 'PATCH_CLOUD_STREAM_TARGET_BEGIN';\nexport const PATCH_CLOUD_STREAM_TARGET_SUCCESS = 'PATCH_CLOUD_STREAM_TARGET_SUCCESS';\nexport const PATCH_CLOUD_STREAM_TARGET_FAILURE = 'PATCH_CLOUD_STREAM_TARGET_FAILURE';\n\nexport interface CameraDetailsState {\n //data\n device: IATCameraDevice;\n logs: any;\n checksum: number;\n totalCount: number;\n checksums: IStringNumberDictionary;\n totalCounts: IStringNumberDictionary;\n //data locks\n loadingCameraDevice: boolean;\n loadingLogs: IStringBoolDictionary;\n patchingCloudStreamTarget: boolean;\n error: Error | null;\n noData: boolean;\n lastResponse: IProcessedResponse;\n}\n\nexport interface CameraDetailsPayload {\n device: IATCameraDevice;\n logs: Array;\n source: EATStreamServerLogSource;\n checksum: number;\n totalCount: number;\n checksums: Array;\n totalCounts: Array;\n streamFiles: Array;\n error: Error | null;\n response: IProcessedResponse;\n}\n\n/**************************************\n LOAD CAMERA DEVICE\n*************************************/\ninterface LoadCameraDeviceBeginAction {\n type: typeof LOAD_CAMERA_DEVICE_BEGIN,\n payload: CameraDetailsPayload\n}\n\ninterface LoadCameraDeviceSuccessAction {\n type: typeof LOAD_CAMERA_DEVICE_SUCCESS,\n payload: CameraDetailsPayload\n}\n\ninterface LoadCameraDeviceFailureAction {\n type: typeof LOAD_CAMERA_DEVICE_FAILURE,\n payload: CameraDetailsPayload\n}\n\n/**************************************\n LOAD LOGS\n*************************************/\ninterface LoadLogsBeginAction {\n type: typeof LOAD_LOGS_BEGIN,\n payload: CameraDetailsPayload\n}\n\ninterface LoadLogsSuccessAction {\n type: typeof LOAD_LOGS_SUCCESS,\n payload: CameraDetailsPayload\n}\n\ninterface LoadLogsFailureAction {\n type: typeof LOAD_LOGS_FAILURE,\n payload: CameraDetailsPayload\n}\n\n/**************************************\n PATCH CLOUD STREAM TARGET\n*************************************/\ninterface PatchCloudStreamTargetBeginAction {\n type: typeof PATCH_CLOUD_STREAM_TARGET_BEGIN,\n payload: CameraDetailsPayload\n}\n\ninterface PatchCloudStreamTargetSuccessAction {\n type: typeof PATCH_CLOUD_STREAM_TARGET_SUCCESS,\n payload: CameraDetailsPayload\n}\n\ninterface PatchCloudStreamTargetFailureAction {\n type: typeof PATCH_CLOUD_STREAM_TARGET_FAILURE,\n payload: CameraDetailsPayload\n}\n\nexport type CameraDetailsTypes =\n LoadCameraDeviceBeginAction |\n LoadCameraDeviceSuccessAction |\n LoadCameraDeviceFailureAction |\n LoadLogsBeginAction |\n LoadLogsSuccessAction |\n LoadLogsFailureAction |\n PatchCloudStreamTargetBeginAction |\n PatchCloudStreamTargetSuccessAction |\n PatchCloudStreamTargetFailureAction;\n","//types\nimport * as TYPES from \"../types/types\";\nimport { ATCameraDevice, EATStreamServerLogSource } from \"@algo/network-manager/models/v3\";\nimport { ProcessedResponse } from \"@algo/network-manager/managers/v3\";\n\nlet initialState: TYPES.CameraDetailsState = {\n //data\n device: new ATCameraDevice(),\n logs: {},\n checksum: 0,\n totalCount: 0,\n checksums: {\n [EATStreamServerLogSource.LocalIncomingStream]: 0,\n [EATStreamServerLogSource.DistributorIncomingStream]: 0,\n [EATStreamServerLogSource.LocalPushPublishEntry]: 0\n },\n totalCounts: {\n [EATStreamServerLogSource.LocalIncomingStream]: 0,\n [EATStreamServerLogSource.DistributorIncomingStream]: 0,\n [EATStreamServerLogSource.LocalPushPublishEntry]: 0\n },\n //data locks\n loadingCameraDevice: false,\n loadingLogs: {},\n patchingCloudStreamTarget: false,\n error: null,\n noData: false,\n lastResponse: new ProcessedResponse()\n};\n\nexport function cameraDetailsReducer(state = initialState, action: TYPES.CameraDetailsTypes): TYPES.CameraDetailsState {\n switch (action.type) {\n /**************************************\n LOAD CAMERA DEVICE\n *************************************/\n case TYPES.LOAD_CAMERA_DEVICE_BEGIN:\n return {\n ...state,\n loadingCameraDevice: true,\n };\n case TYPES.LOAD_CAMERA_DEVICE_SUCCESS:\n return {\n ...state,\n device: action.payload.device,\n loadingCameraDevice: false,\n lastResponse: action.payload.response\n };\n case TYPES.LOAD_CAMERA_DEVICE_FAILURE:\n return {\n ...state,\n error: action.payload.error,\n loadingCameraDevice: false,\n };\n /**************************************\n LOAD FILE LOGS\n *************************************/\n case TYPES.LOAD_LOGS_BEGIN:\n return {\n ...state,\n logs: {},\n loadingLogs: { ...state.loadingLogs, [action.payload.source]: true },\n error: null,\n noData: false\n };\n case TYPES.LOAD_LOGS_SUCCESS:\n return {\n ...state,\n logs: { ...state.logs, [action.payload.source]: action.payload.logs },\n checksums: { ...state.checksums, [action.payload.source]: action.payload.checksum },\n totalCounts: { ...state.totalCounts, [action.payload.source]: action.payload.totalCount },\n loadingLogs: { ...state.loadingLogs, [action.payload.source]: false },\n error: null,\n noData: !Array.isArray(action.payload.logs) || action.payload.logs.length === 0\n };\n case TYPES.LOAD_LOGS_FAILURE:\n return {\n ...state,\n logs: {},\n loadingLogs: { ...state.loadingLogs, [action.payload.source]: false },\n error: action.payload.error,\n noData: false\n };\n /**************************************\n PATCH CLOUD STREAM TARGET\n *************************************/\n case TYPES.PATCH_CLOUD_STREAM_TARGET_BEGIN:\n return {\n ...state,\n patchingCloudStreamTarget: true,\n };\n case TYPES.PATCH_CLOUD_STREAM_TARGET_SUCCESS:\n return {\n ...state,\n patchingCloudStreamTarget: false,\n };\n case TYPES.PATCH_CLOUD_STREAM_TARGET_FAILURE:\n return {\n ...state,\n error: action.payload.error,\n patchingCloudStreamTarget: false,\n };\n default:\n return state;\n }\n}","import { \n combineReducers, createStore, applyMiddleware, compose\n} from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { messageDashboardReducer } from './message/dashboard/reducers';\nimport { messageEditorReducer } from './message/editor/reducers';\nimport { facilityDashboardReducer } from './facility/dashboard/reducers';\nimport { facilityEditorReducer } from './facility/editor/reducers';\nimport { feedbackDashboardReducer } from './feedback/dashboard/reducers';\nimport { feedbackDetailReducer } from './feedback/detail/reducers';\nimport { datasourceReducer } from './datasource/reducers';\nimport { profileReducer } from './profile/reducers';\nimport { organizationDashboardReducer } from './organization/dashboard/reducers';\nimport { organizationEditorReducer } from './organization/editor/reducers';\nimport { roleDashboardReducer } from './role/dashboard/reducers';\nimport { roleEditorReducer } from './role/editor/reducers';\nimport { userDashboardReducer } from './user/dashboard/reducers';\nimport { userEditorReducer } from './user/editor/reducers';\nimport { synchronizationReducer } from './synchronization/reducers';\nimport { streamPreviewsReducer } from \"./cameraDevice/dashboard/reducers/streamPreviewsReducer\";\nimport { streamStatusReducer } from \"./cameraDevice/dashboard/reducers/streamStatusReducer\";\nimport { streamToolbarReducer } from \"./cameraDevice/dashboard/reducers/toolbarReducer\";\nimport { pageStateReducer as streamPageStateReducer } from \"./cameraDevice/dashboard/reducers/pageStateReducer\";\nimport { cameraDetailsReducer } from './cameraDevice/details/reducers/reducers';\n\nlet rootReducer = combineReducers({\n messageDashboard: messageDashboardReducer,\n messageEditor: messageEditorReducer,\n feedbackDashboard: feedbackDashboardReducer,\n feedbackDetail: feedbackDetailReducer,\n facilityDashboard: facilityDashboardReducer,\n facilityEditor: facilityEditorReducer,\n datasource: datasourceReducer,\n profile: profileReducer,\n organizationDashboard: organizationDashboardReducer,\n organizationEditor: organizationEditorReducer,\n roleDashboard: roleDashboardReducer,\n roleEditor: roleEditorReducer,\n userDashboard: userDashboardReducer,\n userEditor: userEditorReducer,\n synchronization: synchronizationReducer,\n streamPageState: streamPageStateReducer,\n streamPreviews: streamPreviewsReducer,\n streamStatus: streamStatusReducer,\n streamToolbar: streamToolbarReducer,\n cameraDetails: cameraDetailsReducer\n});\n\nexport type AppState = ReturnType;\n\nlet createStoreWithMiddleware = compose(\n applyMiddleware(\n thunkMiddleware, \n )\n)(createStore);\n\nlet initialState = {} as AppState;\n\nlet store = createStoreWithMiddleware(rootReducer, initialState);\n\nexport default store;","// used to validate whether a User currently has access to a Route, based on\n// their User data and privilege\n\nimport { IAAUserAuthorizationProfile } from \"@algo/network-manager/models/v3/admin\";\nimport { User } from \"oidc-client-ts\";\nimport { ProfileState } from \"../../store/profile/types\";\nimport { UserManager } from \"oidc-client-ts\";\n\n// return True only if non-expired user exists and has ANY of the given privileges\nexport const checkRouteAccess = (user: User | undefined | null, profileState: ProfileState, privileges: string[] = []) => {\n \n if (!user) return false;\n if (user.expired) return false;\n if (!privileges || privileges.length === 0) return true;\n \n // confirm user has this privilege\n return (\n (privileges !== null && privileges.length > 0) && \n hasAnyPrivilege(profileState.userProfile, privileges)\n );\n \n};\n\nexport const hasAnyPrivilege = (userProfile: IAAUserAuthorizationProfile, privileges: string[]): boolean => {\n for (const priv of privileges){\n if (userProfile.hasPrivilege(priv)){\n return true;\n }\n }\n\n return false;\n};\n\n\n// handles oidc redirect overhead\nexport const checkForRedirect = (location: any, userManager: UserManager, serviceWorker: any): void => {\n\n let doNotCheckForUser: string[] = ['/callback', '/silent_renew', '/session_ended'];\n\n // Redirect to capture active session in new tab/window\n if (location && !doNotCheckForUser.includes(location.pathname)) {\n userManager.getUser()\n .then((user: any) => {\n if (!user || user.expired) {\n userManager.signinRedirect();\n }\n else {\n /*\n * ACCESS TOKEN MESSAGE SENDING TO SERVICE WORKER\n * \n * If the service worker is in control of the client\n * then post a message to the SW that includes user access token.\n * \n */\n if (serviceWorker) {\n serviceWorker.postMessage({\n accessToken: user.access_token\n });\n }\n }\n }, (reject: any) => {\n throw reject;\n })\n .catch((error: any) => {\n throw error;\n });\n }\n};","// libraries\nimport styled from \"styled-components\";\n\nexport const StyledTemplate = styled.div`\n \n`;\n\nexport const StyledContentWrapper = styled.div`\n display: flex;\n height: calc(100% - 64px);\n`;\n\nexport const StyledSideNav = styled.div<{showSidebar: boolean}>`\n width: ${ props => props.showSidebar ? \"16rem\" : \"0px\" };\n height: 100%;\n\n > :first-child{\n //width: ${ props => props.showSidebar ? \"248px\" : \"0px\" };\n width: ${ props => props.showSidebar ? \"16rem\" : \"0px\" };\n padding: ${ props => props.showSidebar ? \"32px\" : \"0px\" };\n transition: width .5s ease-out, padding .5s ease-out;\n\n > div{\n opacity: ${ props => props.showSidebar ? \"1\" : \"0\" };\n transition: ${ props => props.showSidebar ? \".5s\" : \".0s\" };\n transition-delay: ${ props => props.showSidebar ? \".4s\" : \"0s\" };\n }\n \n }\n\n transition: width .5s ease-out;\n`;\n\nexport const StyledContent = styled.div<{showSidebar: boolean}>`\n width: ${ props => props.showSidebar ? \"calc(100% - 16rem)\" : \"100%\" };\n height: 100%;\n overflow: auto;\n\n transition: width .5s ease-out;\n`;","// libraries\nimport * as React from \"react\";\n\nexport const SidebarContext = React.createContext({\n showSidebar: false,\n setShowSidebar: (newValue: boolean) => {}\n});\n\nexport default SidebarContext;","// libraries\nimport * as React from \"react\";\n\n// handles setting up service worker\nexport const useServiceWorker = () => {\n\n const [serviceWorker, setServiceWorker] = React.useState(null);\n\n React.useEffect(\n () => {\n let promise = new Promise(resolve => {\n if (navigator.serviceWorker?.controller) {\n return resolve(`navigator.serviceWorker.controller exists`);\n }\n \n navigator.serviceWorker?.addEventListener(\n 'controllerchange', \n e => resolve(`navigator.serviceWorker event: controllerchange`)\n );\n });\n \n promise.then(() => {\n setServiceWorker(navigator.serviceWorker?.controller);\n });\n\n\n return () => {\n // cleanup\n };\n\n },\n []\n );\n\n\n return serviceWorker;\n};\n\nexport default useServiceWorker;","// libraries\nimport * as React from \"react\";\n\n// handles triggering a page refresh function on given interval\nexport const useRefresher = (refreshFunction: () => any, interval: number) => {\n\n const [refresher, setRefresher] = React.useState(refreshFunction);\n\n React.useEffect(\n\n () => {\n setRefresher(setInterval(refreshFunction, interval))\n\n return () => {\n // cleanup\n clearInterval(refresher);\n };\n\n }, []\n );\n\n return refresher;\n};\n\nexport default useRefresher;","// libraries\nimport styled from \"styled-components\";\nimport { flexSmart } from \"@caps-mobile/styled-lib\";\n\nexport const StyledHeaderWrapper = styled.div`\n height: 64px;\n width: 100%;\n\n ${flexSmart(\"flex-start center\")}\n\n border-bottom: 1px solid rgba(0,0,0,0.1);\n`;\n\nexport const MenuToggleSection = styled.div<{showSidebar: boolean}>`\n height: 100%;\n //width: ${props => props.showSidebar ? \"248px\" : \"248px\"};\n width: 16rem;\n\n display: flex;\n justify-content: ${props => props.showSidebar ? \"center\" : \"center\"};\n align-items: center;\n\n background: ${props => props.showSidebar ? \"rgba(0,0,0,0.1)\" : props.theme.colors[\"bg-primary\"][\"rgba\"]};\n\n background: linear-gradient(to right, rgba(0,0,0,0.1) 50%, ${props => props.theme.colors[\"bg-primary\"][\"rgba\"]} 50%) right;\n background-size: 200%;\n transition: .5s ease-out;\n\n ${props => props.showSidebar \n ? `\n background-position: left;\n `\n : `\n \n `\n }\n`;\n\nexport const ToggleSidebarWrapper = styled.div`\n\n &:hover{\n cursor: pointer;\n }\n`;\n\nexport const HeaderSection = styled.div<{showSidebar: boolean}>`\n height: 100%;\n //width: calc(100% - 248px);\n width: calc(100% - 16rem);\n\n padding: 1.7rem;\n\n ${flexSmart(\"space-between center\")}\n`;","//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../components/template/authentication/oidcConfig\";\n//types\nimport * as TYPES from \"./types\";\n//models\nimport { \n AAUserAuthorizationProfile\n} from \"@algo/network-manager/models/v3/admin\";\nimport { \n IProcessedResponse,\n IUserNetworkManager, UserNetworkManager \n} from \"@algo/network-manager/managers/v3\";\n//constants\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlUser: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).profiles}`;\n\n/*\nGet User Profile\n*/\nfunction loadProfileBegin(): TYPES.ProfileTypes {\n return {\n type: TYPES.LOAD_PROFILE_BEGIN,\n payload: {} as TYPES.ProfilePayload\n };\n}\n\nfunction loadProfileSuccess(response: IProcessedResponse): TYPES.ProfileTypes {\n return {\n type: TYPES.LOAD_PROFILE_SUCCESS,\n payload: {\n userProfile: response.data,\n error: response.error\n } as TYPES.ProfilePayload\n };\n}\n\nfunction loadProfileFailure(error: Error): TYPES.ProfileTypes {\n return {\n type: TYPES.LOAD_PROFILE_FAILURE,\n payload: {\n error: error\n } as TYPES.ProfilePayload\n };\n}\n\nexport let loadUserProfile = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().profile.loading) {\n dispatch(loadProfileBegin());\n\n let manager: IUserNetworkManager =\n new UserNetworkManager(apiUrlUser);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.getProfile()\n .then(\n (response: IProcessedResponse) => {\n if (response.error) \n dispatch(loadProfileFailure(response.error));\n else \n dispatch(loadProfileSuccess(response))\n }\n ).catch(\n (error: Error) => {\n dispatch(loadProfileFailure(error))\n }\n )\n }\n ).catch(\n (error: Error) => {\n dispatch(loadProfileFailure(error))\n }\n )\n }\n}\n\n// export let updateUserProfile = (\n// // \n// ): ThunkAction> => async (dispatch, getState) => {\n// if (getState().profile.initialized) {\n// dispatch(loadProfileBegin());\n\n// let manager: IUserNetworkManager = \n// new UserNetworkManager(apiUrlUser);\n\n// getAccessToken()\n// .then(\n// (token: string) => {\n// manager.setAccessToken(token);\n// manager.getProfile()\n// .then(\n// (response: IProcessedResponse) => {\n// if (response.error) \n// dispatch(loadProfileFailure(response.error));\n// else \n// dispatch(loadProfileSuccess(response));\n// }\n// ).catch(\n// (error: Error) => {\n// dispatch(loadProfileFailure(error))\n// }\n// )\n// }\n// ).catch(\n// (error: Error) => {\n// dispatch(loadProfileFailure(error))\n// }\n// )\n// }\n// }\n\n/*\nUnload User Profile\n*/\n\nfunction unloadProfileState(): TYPES.ProfileTypes {\n return {\n type: TYPES.UNLOAD_PROFILE,\n payload: {} as TYPES.ProfilePayload\n };\n}\n\nexport let unloadUserProfile = (\n //\n): ThunkAction> => async dispatch => {\n dispatch(unloadProfileState());\n}\n\n/*\nClear User Profile Error\n*/\n\nfunction clearUserProfileErrorState(): TYPES.ProfileTypes {\n return {\n type: TYPES.CLEAR_PROFILE_ERROR,\n payload: {} as TYPES.ProfilePayload\n };\n}\n\nexport let clearUserProfileError = (\n //\n): ThunkAction> => async dispatch => {\n dispatch(clearUserProfileErrorState());\n}","// libraries\nimport * as React from 'react';\nimport { connect } from \"react-redux\";\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n// store\nimport { unloadUserProfile } from '../../../store/profile/actions';\nimport { ProfileState } from '../../../store/profile/types';\nimport { AppState } from '../../../store';\nimport { AuthContextProps } from 'react-oidc-context';\n// components\n\ndeclare var __AUTHORITY_URL__: string;\ndeclare var __CLIENT_URL__: string;\n\ninterface StateProps {\n profile: ProfileState;\n}\n\ninterface AuthProps {\n auth: AuthContextProps;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return {\n profile: state.profile\n };\n}\n\ninterface DispatchProps {\n unloadUserProfile: typeof unloadUserProfile;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n unloadUserProfile: unloadUserProfile\n }, dispatch);\n}\n\ntype AuthenticationButtonProps = \n StateProps & \n DispatchProps & \n AuthProps &\n RouteComponentProps;\n\ninterface AuthenticationButtonState {\n isLoading: boolean;\n};\n\nclass AuthenticationButton \n extends React.Component<\n AuthenticationButtonProps, \n AuthenticationButtonState\n> {\n\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n isLoading: false\n } as AuthenticationButtonState;\n }\n\n signIn = (event: React.MouseEvent): void => {\n event.preventDefault();\n\n this.setState({\n isLoading: true\n });\n\n this.props.auth.signinRedirect();\n }\n\n signOut = (event: React.MouseEvent): void => {\n event.preventDefault();\n\n this.props.auth.signoutRedirect();\n }\n\n render() {\n const { location } = this.props;\n const signInClassName: string = \n `av-auth-btn av-auth-signin-btn my-2 my-sm-0 mr-lg-0 mr-sm-0` + \n `${( this.state.isLoading ) ? 'loading' : ''}`;\n\n if (this.props.auth.user && !this.props.auth.user.expired) {\n return (\n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n );\n }\n else if (location.pathname !== '/callback') {\n return (\n \n );\n }\n else {\n return null;\n }\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(AuthenticationButton));","export default __webpack_public_path__ + \"static/media/algo-logo.13e0db79.png\";","export default __webpack_public_path__ + \"static/media/algo-logo-ani.36067d3f.gif\";","/// \nimport * as logoImg from './algo-logo.png';\nimport * as logoAni from './algo-logo-ani.gif';\n\nexport let algoLogo = logoImg;\nexport let algoLogoAni = logoAni;","var _rect, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconToggleSidebar(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 25,\n viewBox: \"0 0 32 25\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 31.9444,\n height: 25,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_1841:330\",\n transform: \"scale(0.0217391 0.0277778)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_1841:330\",\n width: 46,\n height: 36,\n xlinkHref: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAkCAYAAAD2IghRAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALqADAAQAAAABAAAAJAAAAAAYIjylAAAC3klEQVRYCe2YTYhSURSA9ekIjbR1+oG2QbVQt8FMu1oONEsxU5mGNkMUTNtWs2g9BOVvCMOM0yxqIUGboF2YWbQsF5FOtJRpiPTZd8Qn+rialPpe4YHLuT/n3fvde895777rdHQkGo2eJXtT07TFVqt1mvy8EzHardBwtEA4Yuwa2VfNZvNBJpN5LyxtMKDDGDwieawAHHVM4Juk9VQqteWMxWIXAH7Dw3OjdmCxnd5oNC66gVg3oJlNi3watafrem0YoMvlOsGECx2b79LZMPs/bWOMBcZa5vlVkibJ7XbfEvAlkiEPk8nkmlEYpsPh8BmPp+tZOr73dpj9X7Y9x50Pib/b0g8Lu6QxIwnEtlCxY+TtpoHeNphkF2Tp540KtvuLkbebNrMJeFeYlfi4LQW/7mMTH1eJFo/Ht3Cdc6bGSrVavVEoFH6Y6qdeVIJHIhEfJKv4Ut+OULfo8/nuoz9MndQ0oBKcN8QBUXwZ8PO99rwiP2azWcuhhUkJLg18nV6gJNlSzK5gS0gV1KAVl6PAJg/0BSfBWimXy3eKxeJPVWfTrFOCh0Ih+ZxvmEGocwQCgSTg78xt0y4rwXO5XI3gXDEHJ+VPiUTCcmhZJCW4NBCcT1CSbCn/XXA6+HLeJRj73uMSnPV6/V4+n29avQ1KV8G/TwG2KcHYK1L2er371E3yCNs75MC8Ehz/rgJ/DdC+1yG9VCZ87h4Iam5QgosR8I/NxnYq/7PBOQOfthvNVny24iOuwMxVRlyosZnJisttaFv4Usqn3pbCTW334koABbxqkHJHd9XI201z57NiMHHY++bkTJKi8nqnUkfLfcoeM/zdpedJduilPIf9IfaBTh9jVbAt0OEyWi5n20cUxtuXf0sZ8DUQrrGOOKHOgJYbrUuuUql0EAwGvwJ+hQpbv2UEGtngALjdXmXgi36//ynwczQcRx9jEna56D+C6TNMz7iQWkun07uymb8A/4P5obc/yooAAAAASUVORK5CYII=\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconToggleSidebar);\nexport default __webpack_public_path__ + \"static/media/icon-toggle-sidebar.1db0399b.svg\";\nexport { ForwardRef as ReactComponent };","// libraries\nimport * as React from 'react';\nimport { \n withRouter, NavLink, RouteComponentProps\n } from 'react-router-dom';\nimport { connect } from 'react-redux';\n// styles\nimport * as SC from \"./Styled\";\n// store\nimport { AppState } from '../../../../store';\nimport { ProfileState } from '../../../../store/profile/types';\n// models & interfaces\n// components\nimport AuthenticationButton from '../AuthenticationButton';\n// resources\nimport { algoLogo } from '../../../../images';\nimport { \n ReactComponent as ToggleSidebar \n} from \"../../../../images/algo-nav/icon-toggle-sidebar.svg\";\nimport { AuthContextProps, useAuth } from 'react-oidc-context';\n\nconst navStyles = {\n height: \"100%\", \n display: \"flex\", \n alignItems: \"center\"\n};\n\nconst altText: string = \n `Algo Logo: A green circle with the` + \n `word 'algo' centered in script-like font.`;\n\ninterface OwnProps {\n showSidebar: boolean;\n toggleShowSidebar: () => any;\n setRootNavIndex: () => any;\n};\n\ninterface StateProps {\n profile: ProfileState;\n}\n\nlet mapStateToProps = (store: AppState) => {\n return {\n profile: store.profile\n };\n}\n\ntype HeaderProps = \n OwnProps & \n StateProps & \n RouteComponentProps;\n\nconst Header: React.FC = (props) => {\n\n let { showSidebar, toggleShowSidebar } = props;\n const auth = useAuth();\n \n return (\n \n\n \n \n \n \n \n \n \n \n props.setRootNavIndex()}>\n {altText}\n\n \n\n \n\n \n \n );\n}\n\nexport default connect(\n mapStateToProps\n)(withRouter(Header));","// libraries\nimport * as React from 'react';\n// components\nimport Content from '../base/layout/Content';\n\nexport default class Welcome extends React.Component {\n\n render() {\n return (\n
    \n
    \n \n
    \n

    Welcome

    \n
    \n
    \n
    \n Select a tool from the sidebar\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}","import styled from \"styled-components\";\nimport { flexSmart } from \"@caps-mobile/styled-lib\";\n\nexport const StyledMessageContainer = styled.div`\n height: 100%;\n width: 100%;\n ${flexSmart(\"center center\")}\n`;\n\nexport const StyledAlertContainer = styled.div`\n height: 100%;\n width: 100%;\n\n ${flexSmart(\"center center\")}\n flex-direction: column;\n`;\n\nexport const StyledSubtext = styled.div`\n font-size: 14px;\n line-height: 16px;\n`;\n\nexport const StyledRootLink = styled.a`\n font-weight: 700;\n color: rgba(30, 130, 76, .85);\n\n :hover{\n color: rgba(30, 130, 76, 1);\n }\n`;","// libraries\nimport * as React from \"react\";\n// styles\nimport * as SC from \"../../styled/Globals\";\n// components\nimport Content from '../../base/layout/Content';\n// store\n\ntype RedirectProps = any;\n\nexport const RedirectContent: React.FC = (props) => {\n \n return (\n \n
    \n

    \n Authenticating\n

    \n \n \n
    \n Please wait, you will be redirected shortly...\n
    \n \n If it has been more than 10 seconds and you have still not redirected, click here.\n \n
    \n
    \n
    \n
    \n );\n}\n\nexport default RedirectContent;","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n// components\nimport { RedirectContent } from \"./RedirectContent\";\n// store\nimport { AppState } from \"../../../store\";\n\ninterface StateProps { \n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n };\n}\n\ntype RedirectProps = \n StateProps & \n RouteComponentProps;\n\nclass Redirect extends React.Component {\n \n render() {\n return (\n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n)(withRouter(Redirect));","// libraries\nimport * as React from 'react';\n// components\nimport Content from '../base/layout/Content';\n\nexport default class NotFound extends React.Component {\n render() {\n return (\n
    \n
    \n \n
    \n

    Not Found

    \n
    \n
    \n
    \n This page does not exist\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}","// libraries\nimport * as React from 'react';\n// components\nimport Content from '../../base/layout/Content';\n\nexport default class AccessDenied extends React.Component {\n\n render() {\n return (\n
    \n
    \n \n
    \n

    Access Denied

    \n
    \n
    \n
    \n You do not have access to this page\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n// components\nimport Content from '../../base/layout/Content';\nimport UserTableView from './UserTableView';\n// store\nimport { AppState } from \"../../../store\";\n\ninterface StateProps { \n}\n\nfunction mapStateToProps(state: AppState) {\n return { \n };\n}\n\ntype UserListProps = \n StateProps & \n RouteComponentProps;\n\nclass UserList extends React.Component {\n\n render() {\n return (\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n)(withRouter(UserList));","//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"../..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../../components/template/authentication/oidcConfig\";\n//types\nimport * as TYPES from \"./types\"\n//models\nimport { \n AAOrganization, IAAOrganization, IAARole \n} from \"@algo/network-manager/models/v3/admin\";\nimport { CASUserProfile } from \"@algo/network-manager/models/v3/cas\";\nimport { IATLegacyDatasource } from \"@algo/network-manager/models/v3\";\nimport { \n IDatasourceNetworkManager, DatasourceNetworkManager,\n IOrganizationNetworkManager, OrganizationNetworkManager,\n IRoleNetworkManager, RoleNetworkManager, \n UserNetworkManager, IUserNetworkManager, \n IProcessedResponse, IAssignUser, IUnassignUser\n} from \"@algo/network-manager/managers/v3\";\n\n//constants\nimport { DEFAULT_ORGANIZATION_ID } from \"../../../utils/AppConstants\";\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlUser: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).users}`;\nconst apiUrlDatasource: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).datasources}`;\nconst apiUrlOrganization: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).organizations}`;\nconst apiUrlRole: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).roles}`;\n\n/*\nLoad Organization Editor\n*/\n\nfunction loadOrganizationBegin(): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.LOAD_ORGANIZATION_BEGIN,\n payload: {} as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction loadOrganizationSuccess(\n organization: IAAOrganization, \n organizationList: IAAOrganization[],\n roleList: IAARole[], \n organizationUserList: CASUserProfile[],\n datasourceList: IATLegacyDatasource[]\n): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.LOAD_ORGANIZATION_SUCCESS,\n payload: {\n organization: organization,\n organizationList: organizationList,\n roleList: roleList,\n organizationUserList: organizationUserList,\n datasourceList: datasourceList\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction loadOrganizationFailure(error: Error): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.LOAD_ORGANIZATION_FAILURE,\n payload: { \n error: error\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nexport let initializeOrganizationEditor = (\n id: number = DEFAULT_ORGANIZATION_ID\n): ThunkAction> => async (dispatch, getState) => {\n\n if (!getState().organizationEditor.initializing) {\n dispatch(loadOrganizationBegin());\n\n getAccessToken().then(\n (token) => {\n let OrganizationManager: IOrganizationNetworkManager = \n new OrganizationNetworkManager(apiUrlOrganization);\n\n let DatasourceManager: IDatasourceNetworkManager = \n new DatasourceNetworkManager(apiUrlDatasource);\n\n let RoleManager: IRoleNetworkManager = \n new RoleNetworkManager(apiUrlRole);\n\n let UserManager: UserNetworkManager = \n new UserNetworkManager(apiUrlUser);\n\n OrganizationManager.setAccessToken(token);\n DatasourceManager.setAccessToken(token);\n RoleManager.setAccessToken(token);\n UserManager.setAccessToken(token);\n\n if (id === DEFAULT_ORGANIZATION_ID) {\n Promise.all([\n OrganizationManager.getAll(),\n RoleManager.getAll(),\n DatasourceManager.getAll(\n getState().datasource.lastResponse\n ),\n ])\n .then(response => {\n dispatch(\n loadOrganizationSuccess(\n new AAOrganization(), \n response[0].data, \n response[1].data,\n [], \n response[2].data\n )\n )\n }, reject => {\n dispatch(loadOrganizationFailure(new Error(reject)));\n })\n .catch(error => {\n dispatch(loadOrganizationFailure(new Error(error)));\n });\n }\n else {\n Promise.all([\n OrganizationManager.getById({id}),\n OrganizationManager.getAll(),\n RoleManager.getAll(),\n UserManager.getAllUsers({organizationId: id}),\n DatasourceManager.getAll(getState().datasource.lastResponse),\n ])\n .then(response => {\n dispatch(loadOrganizationSuccess(\n response[0].data, \n response[1].data, \n response[2].data, \n response[3].data, \n response[4].data\n )\n );\n }, reject => {\n dispatch(loadOrganizationFailure(new Error(reject)));\n })\n .catch(error => {\n dispatch(loadOrganizationFailure(new Error(error)));\n });\n }\n }\n )\n }\n}\n\n/*\nLoad User Search\n*/\n\nfunction loadUserSearchBegin(): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.LOAD_USER_SEARCH_BEGIN,\n payload: {} as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction loadUserSearchSuccess(userSearchList: CASUserProfile[]): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.LOAD_USER_SEARCH_SUCCESS,\n payload: {\n userSearchList: userSearchList\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction loadUserSearchFailure(error: Error): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.LOAD_USER_SEARCH_FAILURE,\n payload: { \n error: error\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nexport let userSearch = (\n query: string\n): ThunkAction> => async (dispatch, getState) => {\n dispatch(loadUserSearchBegin());\n\n getAccessToken().then(\n (token: string) => {\n\n let manager = new UserNetworkManager(apiUrlUser);\n manager.setAccessToken(token);\n manager.getAllUsers({search: query})\n .then(\n (response: IProcessedResponse) => {\n if (response.error)\n dispatch(loadUserSearchFailure(response.error))\n else\n dispatch(loadUserSearchSuccess(response.data))\n }\n ).catch(\n (err: Error) => \n dispatch(loadUserSearchFailure(err))\n )\n }\n )\n}\n\n/*\nSave Organization\n*/\n\nfunction saveOrganizationBegin(): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.SAVE_ORGANIZATION_BEGIN,\n payload: {} as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction saveOrganizationSuccess(\n response: IProcessedResponse\n): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.SAVE_ORGANIZATION_SUCCESS,\n payload: { \n organization: response.data\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction saveOrganizationFailure(\n error: Error\n): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.SAVE_ORGANIZATION_FAILURE,\n payload: { \n error: error\n } as TYPES.OrganizationEditorPayload\n }\n}\n\nexport let saveOrganization = (\n organization: IAAOrganization\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().organizationEditor.savingOrganization) {\n dispatch(saveOrganizationBegin());\n\n getAccessToken().then(\n (token: string) => {\n \n let manager: IOrganizationNetworkManager = \n new OrganizationNetworkManager(apiUrlOrganization);\n\n manager.setAccessToken(token);\n manager.save({organization}).then(\n (response: IProcessedResponse) => {\n if (response.error)\n dispatch(saveOrganizationFailure(response.error))\n else\n dispatch(saveOrganizationSuccess(response))\n }\n ).catch(\n (err: Error) => dispatch(saveOrganizationFailure(err))\n )\n }\n )\n }\n}\n\n/*\nAdd User to Organization\n*/\n\nfunction addUserBegin(): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.ADD_USER_TO_ORGANIZATION_BEGIN,\n payload: {} as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction addUserSuccess(\n organizationUserList: CASUserProfile[]\n): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.ADD_USER_TO_ORGANIZATION_SUCCESS,\n payload: { \n organizationUserList: organizationUserList\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction addUserFailure(error: Error): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.ADD_USER_TO_ORGANIZATION_FAILURE,\n payload: { \n error: error\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nexport let addUserToOrganization = (\n organizationId: number, \n subs: string[]\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().organizationEditor.addingUser) {\n dispatch(addUserBegin());\n\n let orgManager: IOrganizationNetworkManager = \n new OrganizationNetworkManager(apiUrlOrganization);\n\n let userManager: IUserNetworkManager =\n new UserNetworkManager(apiUrlUser);\n\n \n getAccessToken()\n .then(\n (token: string) => {\n orgManager.setAccessToken(token);\n userManager.setAccessToken(token);\n\n let assignUsersToOrg: IAssignUser = {\n id: organizationId,\n sub: subs\n };\n\n orgManager.assignUser(assignUsersToOrg)\n .then(\n (orgResponse: IProcessedResponse) => {\n userManager.getAllUsers({organizationId})\n .then(\n (userResponse: IProcessedResponse) => {\n if (userResponse.error)\n addUserFailure(userResponse.error)\n else\n dispatch(addUserSuccess(userResponse.data))\n }\n ).catch(\n (err: Error) => dispatch(addUserFailure(err))\n )\n }\n ).catch(\n (err: Error) => \n dispatch(addUserFailure(err))\n )\n }\n );\n }\n}\n\n/*\nRemove User from Organization\n*/\n\nfunction removeUserBegin(): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.REMOVE_USER_FROM_ORGANIZATION_BEGIN,\n payload: {} as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction removeUserSuccess(\n organizationUserList: CASUserProfile[]\n): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.REMOVE_USER_FROM_ORGANIZATION_SUCCESS,\n payload: { \n organizationUserList: organizationUserList\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nfunction removeUserFailure(\n error: Error\n): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.REMOVE_USER_FROM_ORGANIZATION_FAILURE,\n payload: { \n error: error\n } as TYPES.OrganizationEditorPayload\n };\n}\n\nexport let removeUserFromOrganization = (\n organizationId: number, \n sub: string\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().organizationEditor.removingUser) {\n dispatch(removeUserBegin());\n\n let orgManager: IOrganizationNetworkManager \n = new OrganizationNetworkManager(apiUrlOrganization);\n\n let userManager: IUserNetworkManager\n = new UserNetworkManager(apiUrlUser);\n\n getAccessToken()\n .then(\n (token: string) => {\n orgManager.setAccessToken(token);\n userManager.setAccessToken(token);\n\n let unassignUser: IUnassignUser = \n {id: organizationId, sub: [sub]};\n\n orgManager.unassignUser(unassignUser)\n .then(\n (orgResponse: IProcessedResponse) => {\n userManager.getAllUsers({organizationId})\n .then(\n (userResponse: IProcessedResponse) => {\n if (userResponse.error)\n dispatch(removeUserFailure(userResponse.error))\n else\n dispatch(removeUserSuccess(userResponse.data))\n }\n ).catch(\n (err: Error) => dispatch(removeUserFailure(err))\n )\n }\n ).catch(\n (err: Error) => {\n dispatch(removeUserFailure(err))\n }\n )\n }\n );\n }\n}\n\n/*\nClear Organization Error\n*/\n\nfunction clearOrganizationEditorErrorState(\n): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.CLEAR_ORGANIZATION_EDITOR_ERROR,\n payload: {} as TYPES.OrganizationEditorPayload\n };\n}\n\nexport let clearOrganizationEditorError = (\n): ThunkAction> => async (dispatch, getState) => {\n if (getState().organizationEditor.error !== null) {\n dispatch(clearOrganizationEditorErrorState());\n }\n} \n\n/*\nUninitialize Organization Editor\n*/\n\nfunction uninitializeOrganizationEditorState(): TYPES.OrganizationEditorTypes {\n return {\n type: TYPES.UNINITIALIZE_ORGANIZATION_EDITOR,\n payload: {} as TYPES.OrganizationEditorPayload\n };\n}\n\nexport let uninitializeOrganizationEditor = (\n): ThunkAction> => async (dispatch, getState) => {\n dispatch(uninitializeOrganizationEditorState());\n}\n","//libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\nimport { getAccessToken } from '../../template/authentication/oidcConfig';\n//redux-types\nimport { OrganizationEditorState } from '../../../store/organization/editor/types';\nimport { AppState } from '../../../store';\n//redux-actions\nimport {\n initializeOrganizationEditor, saveOrganization,\n addUserToOrganization, removeUserFromOrganization,\n uninitializeOrganizationEditor\n} from '../../../store/organization/editor/actions';\n//interfaces & models\nimport { \n AAOrganization, IAAOrganization, IAARole\n} from '@algo/network-manager/models/v3/admin';\nimport { IATLegacyDatasource } from \"@algo/network-manager/models/v3\";\nimport { \n UserNetworkManager, IUserNetworkManager, IGetAllUsers, IProcessedResponse \n} from \"@algo/network-manager/managers/v3\";\n//components\nimport AsyncSelect from 'react-select/async';\nimport reactSelectStyles from '../../../utils/reactSelectStyles';\nimport Content from '../../base/layout/Content';\nimport Loading from '../Loading';\nimport UserTableView from '../user/UserTableView';\nimport { \n ReactSelectNumberKeyListItem, ReactSelectStringKeyListItem \n} from '../../../models/ReactSelectListItems';\n//constants\nimport { isNewMode, ORG_CONS } from '../../../utils/AppConstants';\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../../store/api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlUser: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).users}`;\n\ninterface StateProps { \n editor: OrganizationEditorState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n editor: state.organizationEditor\n };\n};\n\ninterface DispatchProps {\n initialize: typeof initializeOrganizationEditor;\n save: typeof saveOrganization;\n addUser: typeof addUserToOrganization;\n removeUser: typeof removeUserFromOrganization;\n uninitialize: typeof uninitializeOrganizationEditor;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeOrganizationEditor,\n save: saveOrganization,\n addUser: addUserToOrganization,\n removeUser: removeUserFromOrganization,\n uninitialize: uninitializeOrganizationEditor\n }, dispatch);\n};\n\ntype OrganizationEditorPageProps = StateProps & DispatchProps & RouteComponentProps;\n\ninterface OrganizationEditorPageState {\n organizationId: number;\n organizationForm: IAAOrganization;\n selectedOrganizationRoles: ReactSelectNumberKeyListItem[];\n selectedOrganizationDatasources: ReactSelectNumberKeyListItem[];\n selectedOrganizationParent: ReactSelectNumberKeyListItem[];\n selectedOrganizationChild: ReactSelectNumberKeyListItem[];\n selectedOrganizationUsers: ReactSelectStringKeyListItem[];\n initialized: boolean;\n}\n\nclass OrganizationEditor extends React.Component {\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n organizationId: \n (this.props.match.params.organizationId) \n ? (this.props.match.params.organizationId as number) \n : ORG_CONS.id,\n organizationForm: new AAOrganization(),\n selectedOrganizationRoles: [],\n selectedOrganizationDatasources: [],\n selectedOrganizationParent: [],\n selectedOrganizationChild: [],\n selectedOrganizationUsers: [],\n initialized: !props.match.params.organizationId\n } as OrganizationEditorPageState;\n }\n\n componentDidMount(){\n this.props.initialize(this.state.organizationId);\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n if (\n ( prevProps.editor.savingOrganization !== this.props.editor.savingOrganization ) && \n !this.props.editor.savingOrganization && \n ( this.props.editor.error === null )\n ) {\n if (this.props.location.pathname === \"/organization/new\") {\n this.props.history.replace(`/organization/${this.props.editor.organization.organizationId}`);\n }\n }\n\n if (this.props.editor.organizationLoaded && !this.state.initialized && !this.props.editor.savingOrganization) {\n this.setState((state, props) => {\n let orgRoles: ReactSelectNumberKeyListItem[] = props.editor.roleList\n .filter(\n (role: IAARole) => {\n return props.editor.organization.roleId?.includes(role.id);\n }\n )\n .map((role: IAARole) => {\n return {\n value: role.id,\n label: role.description\n } as ReactSelectNumberKeyListItem;\n });\n\n let orgDatasources: ReactSelectNumberKeyListItem[] = props.editor.datasourceList\n .filter((datasource: IATLegacyDatasource) => {\n return props?.editor.organization.datasources?.includes(datasource.id);\n })\n .map((datasource: IATLegacyDatasource) => {\n return {\n value: datasource.id,\n label: datasource.displayName\n } as ReactSelectNumberKeyListItem;\n });\n\n let orgParents: ReactSelectNumberKeyListItem[] = props.editor.organizationList\n .filter((organization: IAAOrganization) => {\n return props.editor.organization.parentOrganizationId?.includes(organization.organizationId);\n })\n .map((organization: IAAOrganization) => {\n return {\n value: organization.organizationId,\n label: organization.name\n } as ReactSelectNumberKeyListItem;\n });\n\n let orgChildren: ReactSelectNumberKeyListItem[] = props.editor.organizationList\n .filter((organization: IAAOrganization) => {\n return props.editor.organization.childrenOrganizationId?.includes(organization.organizationId);\n })\n .map((organization: IAAOrganization) => {\n return {\n value: organization.organizationId,\n label: organization.name\n } as ReactSelectNumberKeyListItem;\n });\n\n return {\n ...state,\n initialized: true,\n organizationId: \n ( props.editor.organization.organizationId !== ORG_CONS.id ) \n ? props.editor.organization.organizationId \n : ORG_CONS.id,\n organizationForm: props.editor.organization,\n selectedOrganizationParent: orgParents,\n selectedOrganizationChild: orgChildren,\n selectedOrganizationRoles: orgRoles,\n selectedOrganizationDatasources: orgDatasources\n };\n });\n }\n }\n\n componentWillUnmount() {\n this.props.uninitialize();\n }\n\n setReactSelectFormItemValue = (property: string, event: any): void => {\n var orgForm = this.state.organizationForm;\n\n switch (property) {\n case ORG_CONS.parent:\n let parentOrgValues = event as ReactSelectNumberKeyListItem[];\n\n if (parentOrgValues !== null) {\n orgForm.parentOrganizationId = parentOrgValues.map(item => { return item.value; });\n }\n\n this.setState((state, props) => {\n return {\n ...state,\n organizationForm: orgForm,\n selectedOrganizationParent: parentOrgValues\n }\n });\n break;\n case ORG_CONS.child:\n let childOrgValues = event as ReactSelectNumberKeyListItem[];\n\n if (childOrgValues !== null) {\n orgForm.childrenOrganizationId = childOrgValues.map(item => { return item.value; });\n }\n\n this.setState((state, props) => {\n return {\n ...state,\n organizationForm: orgForm,\n selectedOrganizationChild: childOrgValues\n };\n });\n break;\n case ORG_CONS.roles:\n let orgRoleValues = event as ReactSelectNumberKeyListItem[];\n \n if (orgRoleValues !== null) {\n orgForm.roleId = orgRoleValues.map(item => { return item.value; });\n }\n\n this.setState((state, props) => {\n return {\n ...state,\n organizationForm: orgForm,\n selectedOrganizationRoles: orgRoleValues\n };\n });\n break;\n case ORG_CONS.datasources:\n let orgDatasourceValues = event as ReactSelectNumberKeyListItem[];\n\n if (orgDatasourceValues !== null) {\n orgForm.datasources = orgDatasourceValues.map(item => { return item.value; });\n }\n this.setState((state, props) => {\n return {\n ...state,\n organizationForm: orgForm,\n selectedOrganizationDatasources: orgDatasourceValues\n };\n });\n break;\n case ORG_CONS.addUser:\n let selectedOrgUserValues = event as ReactSelectStringKeyListItem[];\n\n this.setState((state, props) => {\n return {\n ...state,\n selectedOrganizationUsers: selectedOrgUserValues\n };\n });\n break;\n default:\n break;\n }\n }\n\n setFormItemValue = (\n property: string, \n event: React.ChangeEvent | React.ChangeEvent\n ): void => {\n\n event.preventDefault();\n\n let currentValue = event.currentTarget.value;\n var orgForm = this.state.organizationForm;\n\n switch (property) {\n case ORG_CONS.name:\n orgForm.name = currentValue;\n\n this.setState((state, props) => {\n return {\n ...state,\n organizationForm: orgForm\n };\n });\n break;\n case ORG_CONS.description:\n orgForm.description = currentValue;\n\n this.setState((state, props) => {\n return {\n ...state,\n organizationForm: orgForm\n };\n });\n break;\n default:\n break;\n }\n }\n\n submit = (event?: React.FormEvent): void => {\n if (event) {\n event.preventDefault();\n }\n\n this.props.save(this.state.organizationForm);\n }\n\n fetchUserSearch = (inputValue: string): Promise => {\n return new Promise((resolve) => {\n getAccessToken()\n .then(\n (token: string) => {\n\n let manager: IUserNetworkManager = \n new UserNetworkManager(apiUrlUser);\n\n manager.setAccessToken(token);\n\n let getAllUsers: IGetAllUsers = { search: inputValue };\n\n manager.getAllUsers(getAllUsers)\n .then((response: IProcessedResponse) => {\n let userOptions = response.data\n .map((user: any) => {\n return {\n value: user.sub,\n label: user.userName\n };\n });\n\n resolve(userOptions);\n }, (err: any) => {\n resolve(err)\n })\n .catch((err: any) => {\n resolve(err);\n });\n }\n ) \n });\n }\n\n fetchOrganizationSearch = (inputValue: string): Promise => {\n let { editor } = this.props;\n\n return new Promise((resolve) => {\n try {\n let orgs = editor.organizationList\n .filter(org => {\n return (\n org.name?.toUpperCase().includes(inputValue.toUpperCase()) || \n org.description?.toUpperCase().includes(inputValue.toUpperCase())\n );\n })\n .map(org => {\n return {\n value: org.organizationId,\n label: org.name || \"\"\n };\n });\n resolve(orgs);\n }\n catch (err: any) {\n resolve(err);\n }\n })\n }\n\n fetchRoleSearch = (inputValue: string): Promise => {\n let { editor } = this.props;\n\n return new Promise((resolve) => {\n try {\n let roles = editor.roleList\n .filter(role => {\n return role.name?.toUpperCase().includes(inputValue.toUpperCase());\n })\n .map(role => {\n return {\n value: role.id,\n label: role.description || \"\"\n };\n });\n\n resolve(roles);\n }\n catch (err: any) {\n resolve(err);\n }\n });\n }\n\n fetchDatasourceSearch = (inputValue: string): Promise => {\n let { editor } = this.props;\n const datasources: Array = editor.datasourceList;\n\n return new Promise((resolve) => {\n try {\n //filter the list based on the current user search value\n let filteredDatasources =\n (inputValue === \"\")\n ? datasources\n : datasources.filter(datasource => {\n return (\n datasource.displayName.toUpperCase()\n .includes(inputValue.toUpperCase())\n );\n });\n //create a list of select option objects\n let selectionOptions = filteredDatasources.map(datasource => {\n return {\n value: datasource.id,\n label: datasource.displayName\n };\n });\n\n resolve(selectionOptions);\n }\n catch (err: any) {\n resolve(err);\n }\n });\n }\n\n assignUsers = (): void => {\n if (this.state.selectedOrganizationUsers.length > 0) {\n let subs = this.state.selectedOrganizationUsers.map(item => {\n return item.value;\n });\n\n this.props.addUser(this.state.organizationId, subs);\n\n this.setState({\n selectedOrganizationUsers: []\n });\n }\n }\n\n unassignUser = (sub: string): void => {\n this.props.removeUser(this.state.organizationId, sub);\n }\n\n back = (): void => {\n this.props.history.goBack();\n }\n\n render() {\n let { editor } = this.props;\n let addUserSpanClass: string = \n `add-icon ${editor.addingUser ? \"saving\": \"\"}`;\n\n let organizationUserView = this.state.organizationId !== ORG_CONS.id ? (\n
    \n

    Organization Membership

    \n
    \n
    \n \n this.setReactSelectFormItemValue(ORG_CONS.addUser, event)}\n />\n
    \n
    \n \n \n Add Users\n \n
    \n
    \n \n
    \n ) : (null);\n\n let content = (!editor.initializing) ? (\n
    \n

    Organization Form

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n

    \n {(isNewMode(\n this.state.organizationForm.organizationId, \n ORG_CONS.id\n )) \n ? `New Organization` \n : `Edit Organization`}\n

    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n

    Organization Information

    \n
    \n \n
    \n \n this.setFormItemValue(ORG_CONS.name, event)}\n />\n
    \n
    \n
    \n \n
    \n \n this.setFormItemValue(ORG_CONS.description, event)}\n />\n
    \n
    \n

    Organization Settings

    \n
    \n \n
    \n this.setReactSelectFormItemValue(ORG_CONS.parent, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(ORG_CONS.child, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(ORG_CONS.roles, event)}\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(ORG_CONS.datasources, event)}\n />\n
    \n
    \n
    \n \n Save\n \n
    \n
    \n
    \n {organizationUserView}\n
    \n
    \n ) : ();\n\n return (\n
    \n
    \n \n {content}\n \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(OrganizationEditor)); ","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n// components\nimport Content from '../../base/layout/Content';\nimport OrganizationTableView from \"./OrganizationTableView\";\n// store\nimport { AppState } from \"../../../store\";\n\ninterface StateProps { \n}\n\nfunction mapStateToProps(state: AppState) {\n return { \n };\n}\n\ntype OrganizationListProps = \n StateProps & \n RouteComponentProps;\n\nclass OrganizationList \n extends React.Component<\n OrganizationListProps\n > \n{\n render() {\n return (\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n)(withRouter(OrganizationList));","// libraries\nimport * as React from \"react\";\nimport styled from \"styled-components\";\n// components\nimport { Body1 } from \"@algo/algo-styles\";\nimport { getSiteValue, siteColors } from \"@algo/algo-styles\";\n\nexport interface IProps {\n backgroundColor?: string;\n borderRadius?: string;\n}\n\nexport const NoCameras: React.FC = (props) => {\n\n /*************************************************************************\n CALCULATED VALUES & BREVITY NAMES\n ************************************************************************/\n const grey: string = getSiteValue(siteColors, \"default-grey\"); // default background color\n const bgColor: string = props.backgroundColor ? props.backgroundColor : grey; // override if User provided background color\n const bRadius: string = props.borderRadius ? props.borderRadius : \"4px\"; // override if User provided border radius\n\n /*************************************************************************\n PRIMARY RENDER\n ************************************************************************/\n return (\n \n \n No Cameras\n \n \n );\n}\n\n/*************************************************************************\n STYLES\n************************************************************************/\ninterface IStyledNoCameras {\n backgroundColor: string;\n borderRadius: string;\n}\n\nconst StyledNoCameras = styled.div`\n background-color: ${props => props.backgroundColor};\n border-radius: ${props => props.borderRadius};\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n`;","//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"../../../\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../../../components/template/authentication/oidcConfig\";\n//types\nimport * as TYPES from \"../types/streamStatusTypes\";\n// interfaces & models\nimport { \n ICameraDeviceNetworkManager, CameraDeviceNetworkManager, IProcessedResponse \n} from \"@algo/network-manager/managers/v3\";\n// constants\nimport { \n CUR_API_VERSION, CUR_API_ENDPOINTS\n} from \"../../../api-version-constants\";\ndeclare var __API_URL__: string;\nconst apiUrlDevice: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).devices}`;\n\n/******************************************************************************\n LOAD CAMERA DEVICE STATUS | ACTION CREATOR\n *****************************************************************************/\nexport const loadCameraDeviceStatus =\n (id: number): ThunkAction> =>\n async (dispatch, getState) => {\n let statusLoading: TYPES.IStatusLoading =\n getState().streamStatus.statusLoading;\n\n if (!statusLoading[id]) {\n dispatch(loadCameraDeviceStatusBegin(id));\n\n const manager: ICameraDeviceNetworkManager =\n new CameraDeviceNetworkManager(apiUrlDevice);\n\n getAccessToken().then(\n (token) => {\n manager.setAccessToken(token);\n manager.getStatus(\n getState().streamStatus.lastResponse,\n {id}\n ).then(\n (response: IProcessedResponse) => {\n dispatch(loadCameraDeviceStatusSuccess(id, response));\n },\n (reject: any) => {\n dispatch(loadCameraDeviceStatusFailure(id, new Error(reject)));\n }\n ).catch(\n (error: Error) => {\n dispatch(loadCameraDeviceStatusFailure(id, error));\n }\n )\n }\n )\n }\n };\n\n/******************************************************************************\n LOAD CAMERA DEVICE STATUS | ACTIONS\n *****************************************************************************/\n\nfunction loadCameraDeviceStatusBegin(id: number): TYPES.Actions {\n return {\n type: TYPES.LOAD_CAMERA_DEVICE_STATUS_BEGIN,\n payload: {\n id\n } as TYPES.Payload\n };\n}\n\nfunction loadCameraDeviceStatusSuccess(\n id: number,\n response: IProcessedResponse\n): TYPES.Actions {\n return {\n type: TYPES.LOAD_CAMERA_DEVICE_STATUS_SUCCESS,\n payload: {\n id,\n status: response.data,\n response\n } as TYPES.Payload\n };\n}\n\nfunction loadCameraDeviceStatusFailure(\n id: number, \n error: Error\n): TYPES.Actions {\n return {\n type: TYPES.LOAD_CAMERA_DEVICE_STATUS_FAILURE,\n payload: { id, error } as TYPES.Payload\n };\n}","// libraries\nimport * as React from \"react\";\nimport styled from \"styled-components\";\n// components\nimport { IATCameraDevice } from \"@algo/network-manager/models/v3\";\nimport { Container, Row, Col } from \"reactstrap\";\n// @ts-ignore\nimport { Body1 } from \"@algo/algo-styles/AlgoTypography\";\n// @ts-ignore\nimport { IconLabel } from \"@algo/icon-label/IconLabel\";\n// @ts-ignore\nimport { Pill } from \"@algo/pill\";\n// styles\n// @ts-ignore\nimport { CssCustomScrollbar } from \"@algo/algo-styles/AlgoStyled\";\nimport { IStringStringDictionary } from \"../../../../types/common\";\n// constants\ndeclare var __API_URL__: string; // build-time variable for snapshots endpoint\nconst snapshotURI: string = `${__API_URL__}/v3.0/Cameras/`; // completes the snapshot enpoint address\nconst pillStyle: React.CSSProperties = {\n fontSize: \"12px\",\n letterSpacing: \"-0.01em\",\n lineHeight: \"1.3341\"\n}\nexport interface IProps {\n camera: IATCameraDevice;\n snapshotHeight: number;\n gmap?: React.ReactNode;\n pills?: IStringStringDictionary;\n}\n\nexport const CameraCard: React.FC = (props) => {\n\n /**************************************************\n CALCULATED VALUES & BREVITY NAMES\n *************************************************/\n const camera = props.camera; // the camera whose data we display\n const pills = props.pills || null; // the status pills (cloud, local, etc...)\n\n const infoHeight: number = (props.gmap) ? 131 : 187; // height of section beneath snapshot ( different when used with gmap )\n const roadNamesMargin: number = (props.gmap) ? 4 : 24; // margin under road names section ( different when used with gmap )\n\n let infoStyle: React.CSSProperties = { // brevity\n height: `${infoHeight}px`, padding: \"16px\",\n };\n\n let roadNamesStyle: React.CSSProperties = { // brevity\n height: \"64px\", marginBottom: `${roadNamesMargin}px`,\n };\n\n /**************************************************\n NULL RENDER\n *************************************************/\n if (!camera) return ( // should never happen, parent would fail at null camera \n \n \n Invalid Camera Object\n \n );\n\n /**************************************************\n PRIMARY RENDER\n *************************************************/\n\n return (\n \n \n \n {props.gmap\n ? props.gmap\n : \n }\n \n \n \n \n \n \n \n \n \n \n
    \n \n {camera.routeDesignator}\n \n
    \n \n
    \n \n \n \n {camera.crossStreet}\n \n \n \n
    \n \n
    \n \n \n \n {props.pills && Object.keys(props.pills).map(\n (key) => {\n return (\n \n )\n }\n )}\n \n \n \n
    \n \n
    \n
    \n );\n}\n\nexport default React.memo(CameraCard);\n\n/*****************************************************************************\n SECONDARY LOCAL COMPONENTS\n ****************************************************************************/\nexport interface ICameraSnapshot {\n height: number;\n camera: IATCameraDevice;\n}\n\nexport const CameraSnapshot: React.FC = (props) => {\n\n const { height, camera } = props;\n\n return (\n \n );\n}\n\n/*****************************************************************************\n STYLE-ONLY LOCAL COMPONENTS\n ****************************************************************************/\n// Styled NullCamera\ninterface IStyledNullCamera {\n height: number;\n}\n\nconst StyledNullCamera = styled.div`\n width: 100%;\n height: ${ props => props.height}px;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: #771b13;\n background: #fad6d3 linear-gradient(180deg, #fbdcda, #fad6d3) repeat-x;\n border-color: #f8c6c2;\n`;\n\n// Styled CameraCard\nexport const StyledCameraCard = styled.div`\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n\n width: 100%;\n border-radius: 4px;\n border: 0;\n`;\n\n// Styled GraphicCol\nexport interface IStyledGraphicCol {\n height?: number;\n}\n\nexport const StyledGraphicCol = styled.div`\n height: ${props => props.height};\n border-radius: 4px 4px 0 0;\n margin: 0;\n padding: 0;\n background-color: #efeff0;\n width: 100%;\n`;\n\n\n// Styled InfoRow\nexport interface IStyledInfoRow {\n height?: number;\n}\n\nexport const StyledInfoRow = styled.div`\n border-radius: 0 0 4px 4px;\n border: 1px solid #dee2e6;\n border-top: 0;\n`;\n\n// Styled PillsWrapper\nexport interface IStyledPillsWrapper {\n height?: number;\n};\n\nexport const StyledPillsWrapper = styled.div`\n height: ${props => props.height ? `${props.height}rem` : \"auto\"};\n display: flex;\n flex-wrap: wrap;\n padding: 0;\n justify-content: flex-start;\n align-items: flex-end;\n overflow: auto;\n\n ${CssCustomScrollbar}\n`;","//libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from \"redux\";\n//redux-state-types\nimport {\n State as CameraPreviewState\n} from '../../../../store/cameraDevice/dashboard/types/streamPreviewsTypes';\nimport {\n State as StatusState\n} from '../../../../store/cameraDevice/dashboard/types/streamStatusTypes';\nimport { AppState } from '../../../../store';\n// redux-actions\nimport {\n loadCameraDeviceStatus\n} from \"../../../../store/cameraDevice/dashboard/actions/streamStatusActions\";\n// interfaces & models\nimport { IATCameraDevice } from \"@algo/network-manager/models/v3\";\n//enums\nimport { EATStreamAccessLevel } from \"@algo/network-manager/models/v3\";\n//components\nimport CameraCard from \"./CameraCard\";\n// @ts-ignore\nimport { Selectable } from \"@algo/selectable/Selectable\";\n\ninterface StateProps {\n preview: CameraPreviewState; // (store) camera data\n status: StatusState; // (store) camera status data\n}\n\nlet mapStateToProps = (state: AppState) => {\n return {\n preview: state.streamPreviews, // (store) camera data\n status: state.streamStatus, // (store) camera status data\n };\n}\n\ninterface DispatchProps {\n loadStatus: typeof loadCameraDeviceStatus; // (action creator) load camera status data\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n loadStatus: loadCameraDeviceStatus // (action creator) load camera status data\n }, dispatch);\n}\n\ninterface IProps {\n camera: IATCameraDevice; // camera device\n selected: boolean; // (flag) is this preview in selected list / highlighted\n editMode: boolean; // (flag) is the toolbar expanded / previews selectable\n snapshotHeight: number; // calculated height value for snapshot (maintains image ratio)\n cameraClick: (id: number) => void; // (callback) logic when User clicks preview (!editMode)\n toggleCameraInList: (camera: IATCameraDevice) => void; // (callback) logic when User clicks preview (editMode)\n}\n\ntype CameraDashboardPreviewProps = StateProps & DispatchProps & IProps;\n\nexport let CameraPreview: React.FC = (props) => {\n\n /***********************************************************************************|\n CALCULATED VALUES & BREVITY NAMES\n |***********************************************************************************/\n const camera: IATCameraDevice = props.camera; // camera data\n\n const accessLevel: EATStreamAccessLevel = // current access level of camera\n (camera.cloudStreamTargets.length > 0)\n ? camera.cloudStreamTargets[0].accessLevel\n : EATStreamAccessLevel.Unknown\n\n const pillsObject = React.useMemo(\n () => ({ // used to map status pill styles in render\n [`${camera.name}`]: `pill-secondary`,\n [accessLevel]: 'pill-secondary',\n }), [camera, accessLevel]\n )\n\n /***********************************************************************************|\n PRIMARY RENDER\n |***********************************************************************************/\n return (\n {props.cameraClick(camera.id)}}\n style={{ cursor: \"pointer\" }}>\n { props.toggleCameraInList(camera) }\n : null\n }\n >\n \n \n \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(CameraPreview);","// libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"../../..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../../../components/template/authentication/oidcConfig\";\n// interfaces & models\nimport { IReduxData } from \"../../../../utils/ReduxData\";\nimport * as TYPES from \"../types/streamPreviewsTypes\";\nimport {\n ICameraDeviceNetworkManager, CameraDeviceNetworkManager,\n IGetAllCameraDevices, D_GET_ALL_CAMERA_DEVICES, IProcessedResponse,\n} from \"@algo/network-manager/managers/v3\";\n// constants\nimport { \n CUR_API_VERSION, CUR_API_ENDPOINTS\n} from \"../../../api-version-constants\";\ndeclare var __API_URL__: string;\nconst apiUrlDevice: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).devices}`;\n\n\n/******************************************************************************\n LOAD CAMERA DEVICES | ACTION CREATOR\n *****************************************************************************/\n\nexport const loadCameraDevices =(\n getCameraDeviceRequest: IGetAllCameraDevices = D_GET_ALL_CAMERA_DEVICES\n): ThunkAction> => async (dispatch, getState) => {\n\n const req: IGetAllCameraDevices = getCameraDeviceRequest;\n let cameraData: IReduxData = getState().streamPreviews.cameraData;\n\n if (req.search)\n localStorage.setItem(\"cameraSearchString\", JSON.stringify(req.search));\n else\n localStorage.removeItem(\"cameraSearchString\");\n\n if (!cameraData.isLoading) {\n dispatch(loadCameraDevicesBegin());\n\n const manager: ICameraDeviceNetworkManager = \n new CameraDeviceNetworkManager(apiUrlDevice);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.getAll(\n getState().streamPreviews.lastResponse, \n { \n ...getCameraDeviceRequest,\n region: req.region ? req.region : undefined\n }\n ).then(\n (response: IProcessedResponse) => {\n dispatch(loadCameraDevicesSuccess(response))\n }\n ).catch(\n (err: Error) => {\n dispatch(loadCameraDevicesFailure(err))\n }\n )\n }\n )\n }\n };\n\n/******************************************************************************\n LOAD CAMERA DEVICES | ACTIONS\n *****************************************************************************/\n\nfunction loadCameraDevicesBegin(): TYPES.Actions {\n return {\n type: TYPES.LOAD_CAMERA_DEVICES_BEGIN,\n payload: {} as TYPES.Payload\n };\n}\n\nfunction loadCameraDevicesSuccess(response: IProcessedResponse): TYPES.Actions {\n return {\n type: TYPES.LOAD_CAMERA_DEVICES_SUCCESS,\n payload: {\n devices: response.data,\n response\n } as TYPES.Payload\n };\n}\n\nfunction loadCameraDevicesFailure(error: Error): TYPES.Actions {\n return {\n type: TYPES.LOAD_CAMERA_DEVICES_FAILURE,\n payload: {\n error: error,\n } as TYPES.Payload\n };\n}","// libraries\nimport * as React from \"react\";\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps as IRouteProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// hooks\nimport { usePrevious } from \"@algo/hooks\";\nimport { usePreserveRatio } from \"@algo/window-sizer\";\n// interfaces & models\nimport { EATRegion, IATCameraDevice } from \"@algo/network-manager/models/v3\";\nimport { D_GET_ALL_CAMERA_DEVICES } from \"@algo/network-manager/managers/v3\";\nimport { IReduxData } from \"../../../../utils/ReduxData\";\n// enums\nimport { EAspectRatio } from \"@algo/window-sizer\";\n// local components\nimport { NoCameras } from \"./NoCameras\";\nimport CameraPreview from \"./CameraPreview\";\n// general components\nimport { Col } from \"reactstrap\";\nimport { Center } from \"@algo/algo-styles\";\nimport { Loading } from \"@algo/loading\";\n// redux-state-types\nimport { ProfileState } from '../../../../store/profile/types';\nimport {\n State as PageState\n} from \"../../../../store/cameraDevice/dashboard/types/pageStateTypes\";\nimport {\n State as StreamPreviewsState,\n} from '../../../../store/cameraDevice/dashboard/types/streamPreviewsTypes';\nimport { AppState} from '../../../../store';\n// redux-actions\nimport {\n loadCameraDevices,\n} from '../../../../store/cameraDevice/dashboard/actions/streamPreviewsActions';\nimport {\n updatePageState,\n} from \"../../../../store/cameraDevice/dashboard/actions/pageStateActions\";\n// constants\nimport { EDIT_CAMERA } from '../../../../models/Privileges';\nimport { CAMERA_PREVIEWS_MAX_SELECTION, CAMERA_PREVIEWS_PER_PAGE } from \"../../../../utils/AppConstants\";\n\n/**************************************************************************\n COMPONENT PROPS INTERFACES\n*************************************************************************/\n// store props\ninterface StateProps {\n profile: ProfileState; // (store) used to check for user's EDIT_CAMERA permission to see details page\n pageState: PageState; // (store) general page data shared by many dashboard elements\n streamPreviews: StreamPreviewsState; // (store) camera data for rendering previews\n}\n// action props\ninterface DispatchProps {\n loadCameraDevices: typeof loadCameraDevices; // (action creator) to get camera devices from api\n updatePageState: typeof updatePageState; // (action creator) to update pageState store\n}\n// store mapper\nlet mapStateToProps = (state: AppState) => {\n return {\n profile: state.profile, // (store) used to check for user's EDIT_CAMERA permission to see details page\n pageState: state.streamPageState, // (store) general page data shared by many dashboard elements\n streamPreviews: state.streamPreviews, // (store) camera data for rendering previews\n };\n}\n// action mapper\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n loadCameraDevices: loadCameraDevices, // (action creator) to get camera devices from api\n updatePageState: updatePageState, // (action creator) to update pageState store\n }, dispatch);\n}\n// combined props\ntype IProps = \n StateProps & \n DispatchProps & \n IRouteProps;\n\nexport const CameraPreviews: React.FC = (props): any => {\n\n const {\n loadCameraDevices, updatePageState\n } = {...props};\n\n const { height } = usePreserveRatio( // get the dimensions of... \n \"camera-preview-column\", // the given element by id or class[0]...\n EAspectRatio[\"16x9\"] // such that height is calculated with the given ratio\n );\n\n const snapshotHeight = height; // height applied to snapshot image to maintain 16x9 ratio\n\n /**************************************************************************\n CALCULATED VALUES & BREVITY NAMES\n *************************************************************************/\n const pageState: PageState = props.pageState; // (store) current page state\n const prevPageState: PageState = // (store) previous page state\n usePrevious(pageState) || pageState;\n\n const editMode: boolean = pageState.editMode; // is toolbar expanded / are previews selectable\n\n const region: EATRegion | undefined = pageState.selectedRegion; \n const prevRegion: EATRegion | undefined = prevPageState.selectedRegion;\n const datasourceChange: boolean = (region !== prevRegion); // check if datasource changed since last render\n\n const search: string = pageState.search;\n const prevSearch: string = prevPageState.search;\n const searchChange: boolean = (search !== prevSearch); // check if search value changed since last render\n\n const pageIndex: number = pageState.pageIndex;\n const prevIndex: number = prevPageState.pageIndex;\n const indexChange: boolean = (pageIndex !== prevIndex); // check if pager page changed since last render\n\n const accessLevelLoading: boolean = pageState.accessLevelData.isLoading;\n const prevAccessLevelLoading: boolean = prevPageState.accessLevelData.isLoading;\n const accessLevelChange: boolean = // check if access level change was triggered last render\n (accessLevelLoading !== prevAccessLevelLoading) || pageState.accessChange;\n\n const cameras: IReduxData = props.streamPreviews.cameraData; // (store) camera store object\n const devices: Array = cameras.data; // (store) camera data\n const loading: boolean = cameras.isLoading;\n const nullContent: boolean = (!devices) || (devices.length === 0); // indicates when no cameras are loaded\n\n const skip: number = ((pageIndex) * CAMERA_PREVIEWS_PER_PAGE); // (pager) get-start index\n const take: number = CAMERA_PREVIEWS_PER_PAGE; // (pager) get-end index\n\n /**************************************************************************\n EFFECTS\n *************************************************************************/\n\n React.useEffect(\n () => {\n loadCameraDevices({\n search: search ? search : undefined,\n region: region ? region : undefined,\n skip, take\n })\n }, []\n )\n\n React.useEffect(\n () => {\n if (\n (!loading) &&\n (\n datasourceChange || // User select\n searchChange || // User input\n indexChange || // Pager event\n accessLevelChange // User select\n )\n ) {\n loadCameraDevices({ // load new previews\n ...D_GET_ALL_CAMERA_DEVICES,\n search,\n region: (pageState.selectedRegion ? pageState.selectedRegion : undefined),\n skip: datasourceChange ? 0 : skip, // if the datasource just changed, start at get index 0\n take\n });\n updatePageState({ ...pageState, accessChange: false }); // update pageState to indicate access level change\n }\n }, [\n loadCameraDevices, updatePageState, loading, \n datasourceChange, searchChange, indexChange, \n accessLevelChange, cameras, pageState,\n region, search, skip, take, devices\n ]\n );\n\n /**************************************************************************\n HANDLERS & UTILITIES\n *************************************************************************/\n\n // triggered when User clicks a Camera preview element when not in Edit Mode\n const handleCameraClick = (id: number) => { // handles navigation to camera details page for clicked preview\n if (!editMode && props.profile.userProfile.hasPrivilege(EDIT_CAMERA)) {\n props.history.push(`/camera/${id}`);\n }\n }\n\n // triggered when User clicks a Camera preview in Edit Mode\n const toggleCameraInList = (camera: IATCameraDevice): void => {\n let pageState: any = props.pageState; // brevity\n\n let selectedStreams: Array = pageState.selectedStreams;\n let index: number = indexOfSelected(camera, selectedStreams);\n if (index === -1) { // if the camera is not in the currently selected list...\n let newSelectedStreams: Array = // make a new list that includes the camera (prepend to reduce search times)\n [camera, ...selectedStreams]; \n props.updatePageState({\n ...pageState,\n selectedStreams: newSelectedStreams,\n showAllSelectedStreams: \n (selectedStreams.length <= (CAMERA_PREVIEWS_MAX_SELECTION - 1)) // update whether selected cameras are shown\n ? true // if there are few enough now, show\n : false // if there are too many, hide\n });\n }\n else { // if the camera is already in the selected list...\n let newSelectedStreams: Array = selectedStreams;\n newSelectedStreams.splice(index, 1);\n props.updatePageState({\n ...pageState,\n selectedStreams: newSelectedStreams,\n showAllSelectedStreams: \n (selectedStreams.length <= CAMERA_PREVIEWS_MAX_SELECTION) // update whether selected cameras are shown\n ? true // if there are few enough now, show\n : pageState.showAllSelectedStreams, // if there are too many, keep the current state\n });\n }\n }\n\n /**************************************************************************\n RENDER LOADING\n *************************************************************************/\n if (loading) { return (
    )} // loading ani while getting cameras\n\n /**************************************************************************\n RENDER NULL CONTENT\n *************************************************************************/\n if (nullContent) { return ()} // No Cameras display when no cameras and no error\n\n /**************************************************************************\n RENDER CONTENT\n *************************************************************************/\n return devices.map(\n (device, mapIndex) => {\n const selected: boolean = // indicates whether the current camera is in selected list (highlighted)\n isSelected(device, props.pageState.selectedStreams);\n\n return (\n \n \n \n );\n }\n ) \n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(CameraPreviews));\n\n\n/*****************************************************************************\n UTILITIES\n*****************************************************************************/\nfunction isSelected(device: IATCameraDevice, selectedList: Array) {\n for (let i = 0; i < selectedList.length; i++) {\n if (selectedList[i].id === device.id) return true;\n }\n return false;\n}\n\nfunction indexOfSelected(device: IATCameraDevice, selectedList: Array) {\n for (let i = 0; i < selectedList.length; i++) {\n if (selectedList[i].id === device.id) return i;\n }\n return -1;\n}","// libraries\nimport * as React from \"react\";\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\nimport styled from \"styled-components\";\n// interfaces & models\nimport { \n IATCameraDevice\n} from \"@algo/network-manager/models/v3\";\nimport { Pill } from \"@algo/pill\";\nimport { getSiteValue, siteColors, siteSizes } from \"@algo/algo-styles\";\nimport { Body1, Body2 } from \"@algo/algo-styles\";\nimport { Row, Col } from \"reactstrap\";\nimport { Center } from \"@algo/capsstrap\";\n// redux-state-types\nimport {\n State as PageState\n} from \"../../../../store/cameraDevice/dashboard/types/pageStateTypes\";\nimport {\n State as StreamPreviewsState\n} from \"../../../../store/cameraDevice/dashboard/types/streamPreviewsTypes\";\nimport {\n State as ToolbarState\n} from \"../../../../store/cameraDevice/dashboard/types/toolbarTypes\";\nimport { AppState } from '../../../../store';\n//redux-actions\nimport {\n loadDatasources,\n} from \"../../../../store/cameraDevice/dashboard/actions/toolbarActions\";\nimport {\n updatePageState,\n selectAll\n} from \"../../../../store/cameraDevice/dashboard/actions/pageStateActions\";\n// constants\nimport { CAMERA_PREVIEWS_MAX_SELECTION } from \"../../../../utils/AppConstants\";\n\n/**************************************************************************\n COMPONENT PROPS INTERFACES\n*************************************************************************/\n// redux store props\ninterface StateProps {\n pageState: PageState;\n previewsState: StreamPreviewsState;\n toolbarState: ToolbarState;\n}\n// redux action props\ninterface DispatchProps {\n updatePageState: typeof updatePageState;\n loadDatasources: typeof loadDatasources;\n selectAll: typeof selectAll;\n}\n// redux store mapper\nlet mapStateToProps = (state: AppState) => {\n return {\n pageState: state.streamPageState,\n previewsState: state.streamPreviews,\n toolbarState: state.streamToolbar\n }\n}\n// redux action mapper\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators(\n {\n updatePageState: updatePageState,\n loadDatasources: loadDatasources,\n selectAll: selectAll,\n },\n dispatch\n );\n}\n\n// combined props\ntype IProps = StateProps & DispatchProps & RouteComponentProps;\n\nexport let SelectionRow = (props: IProps) => {\n\n /*************************************************************************|\n CALCULATED VALUES & BREVITY NAMES \n |*************************************************************************/\n const pageState: any = props.pageState;\n const camerasLoading: boolean = props.previewsState.cameraData.isLoading;\n const selectedStreams: any = props.pageState.selectedStreams;\n const showAllSelectedStreams: boolean = props.pageState.showAllSelectedStreams;\n\n let streamsSelected: Array = props.pageState.selectedStreams; // brevity\n let streamsSelectedCount: number = streamsSelected.length; // brevity\n let streamString: string = // account for single or plural \n (streamsSelectedCount === 1)\n ? \"Stream\"\n : \"Streams\";\n let toggleTextSelect: string = // if any device(s) selected, the function becomes de-select\n (streamsSelectedCount === 0)\n ? \"Select All\"\n : \"Deselect All\";\n let toggleTextShow: string = // account for hiding or showing\n (showAllSelectedStreams)\n ? \"Hide Selected Cameras\"\n : \"Show Selected Camera Names\";\n\n const showHideTip: string =\n `Selected camera names are hidden. ` +\n `Click \"Show Selected Camera Names\" ` +\n `above to see your selected cameras.`;\n\n //some style overrides for pill component\n let pillStyle: React.CSSProperties = {\n cursor: \"pointer\",\n backgroundColor: getSiteValue(siteColors, \"old-algo-green\"), color: \"#fff\",\n padding: \"2px 1px 2px 4px\", margin: \"6px 4px 0 4px\",\n borderRadius: \"25px\", fontSize: \".75rem\"\n }\n let iconBackground: React.CSSProperties = {\n color: \"#fff\", fontSize: \"1.15rem\",\n padding: \"0px\",\n marginLeft: \"4px\", marginRight: \"1px\"\n }\n let iconForeground: React.CSSProperties = {\n color: \"rgba(0,0,0,.60)\", fontSize: \"1rem\",\n padding: \"0px\",\n marginLeft: \"4px\", marginRight: \"1px\"\n }\n\n /*************************************************************************|\n HANDLERS & UTILITIES\n *************************************************************************/\n\n const selectAllCameras = () => {\n if (props.pageState.selectingAll) return; // check lock\n props.selectAll(); // select all cameras for current datasource\n }\n\n /* Used to add or remove a camera in the selected list */\n const toggleCameraInList = (camera: IATCameraDevice): void => {\n\n let index: number = selectedStreams.indexOf(camera);\n if (index === -1) { // if the camera is not in the currently selected list...\n let newSelectedStreams: Array = // make a new list that includes the camera (prepend to reduce search times)\n [camera, ...selectedStreams]; \n\n props.updatePageState({\n ...pageState,\n selectedStreams: newSelectedStreams,\n showAllSelectedStreams: (selectedStreams.length < CAMERA_PREVIEWS_MAX_SELECTION) // update whether selected cameras are shown\n ? true // if there are few enough now, show\n : false // if there are too many, hide\n });\n }\n else { // if the camera is already in the selected list...\n let newSelectedStreams: Array = selectedStreams;\n newSelectedStreams.splice(index, 1);\n props.updatePageState({\n ...pageState,\n selectedStreams: newSelectedStreams,\n showAllSelectedStreams: (selectedStreams.length < CAMERA_PREVIEWS_MAX_SELECTION) // update whether selected cameras are shown\n ? true // if there are few enough now, show\n : pageState.showAllSelectedStreams, // if there are too many, keep the current state\n });\n }\n }\n\n /*************************************************************************|\n PRIMARY RENDER\n *************************************************************************/\n return (\n \n \n
    \n \n \n {`${streamsSelectedCount} ${streamString} Selected`}\n \n { selectAllCameras() }}\n >\n \n {toggleTextSelect}\n \n \n {\n (streamsSelectedCount >= CAMERA_PREVIEWS_MAX_SELECTION) &&\n {\n props.updatePageState({\n ...props.pageState,\n showAllSelectedStreams: !showAllSelectedStreams,\n })\n }\n : undefined\n }\n >\n \n {toggleTextShow}\n \n \n }\n \n
    \n \n {showAllSelectedStreams\n ?\n streamsSelected.map(\n (camera) => {\n return (\n \n { toggleCameraInList(camera) }}\n >\n \n \n \n );\n }\n )\n :\n \n
    \n \n {showHideTip}\n \n
    \n \n }\n
    \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(SelectionRow));\n\n\n/*************************************************************************|\n STYLED COMPONENTS \n|*************************************************************************/\n\ninterface IStyledClickableTextProps {\n disabled?: boolean;\n selectAll?: boolean;\n showCameras?: boolean;\n}\n\nconst StyledClickableText = styled.div`\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0 .5rem 0 .5rem;\n font-weight: bold;\n\n color: ${\n props =>\n (props.disabled)\n ? getSiteValue(siteColors, \"dark-grey\")\n : (props.selectAll || props.showCameras)\n ? getSiteValue(siteColors, \"old-algo-green\")\n : getSiteValue(siteColors, \"off\")\n };\n`;\n\nconst StyledSelectionRow = styled.div`\n border-radius: ${getSiteValue(siteSizes, \"border-radius\")};\n display: flex;\n justify-content: center;\n align-items: center;\n flex-flow: row;\n padding: .5rem;\n background-color: ${getSiteValue(siteColors, \"default-grey\")};\n width: 100%;\n`;\n\nconst StyledSelectedDevices = styled.div`\n display: flex;\n flex-flow: row;\n flex-wrap: wrap;\n`;","// libraries\nimport * as React from \"react\";\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps as IRouteProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\nimport styled from \"styled-components\";\nimport { isMaxSize } from \"@algo/window-sizer\";\nimport { useAuth } from \"react-oidc-context\";\n// hooks\nimport { useWatchSizeClass } from \"@algo/window-sizer\";\n// enums\n// interfaces and models\nimport { ProfileState } from '../../../../store/profile/types';\nimport { EBreakpoint } from \"@algo/window-sizer\";\nimport { EATRegion, IATLegacyDatasource } from \"@algo/network-manager/models/v3\";\nimport { ALLOW_CAMERA_BULK_UPDATE } from '../../../../models/Privileges';\n// redux-state-types\nimport {\n State as PageState\n} from \"../../../../store/cameraDevice/dashboard/types/pageStateTypes\";\nimport {\n State as StreamPreviewsState\n} from \"../../../../store/cameraDevice/dashboard/types/streamPreviewsTypes\";\nimport {\n State as ToolbarState\n} from \"../../../../store/cameraDevice/dashboard/types/toolbarTypes\";\nimport { AppState } from '../../../../store';\n//redux-actions\nimport {\n loadDatasources,\n} from \"../../../../store/cameraDevice/dashboard/actions/toolbarActions\";\nimport {\n updatePageState,\n} from \"../../../../store/cameraDevice/dashboard/actions/pageStateActions\";\nimport { loadUserProfile } from '../../../../store/profile/actions';\n// local components\nimport AccessRow from \"./AccessLevelRow\";\nimport SelectionRow from \"./SelectionRow\";\n// general components\nimport { Container, Row, Col } from \"reactstrap\";\nimport { IconLabel } from \"@algo/icon-label\";\nimport { ThemedDropdown } from \"@caps-mobile/themed-dropdown\";\n\n\n/**************************************************************************\n COMPONENT PROPS INTERFACES\n*************************************************************************/\n// redux store props\ninterface IStateProps {\n profile: ProfileState;\n pageState: PageState;\n previewsState: StreamPreviewsState;\n toolbarState: ToolbarState;\n}\n// redux action props\ninterface IDispatchProps{\n getUserProfile: typeof loadUserProfile;\n updatePageState: typeof updatePageState;\n loadDatasources: typeof loadDatasources;\n}\n// redux store mapper\nlet mapStateToProps = (state: AppState) => {\n return { \n profile: state.profile,\n pageState: state.streamPageState,\n previewsState: state.streamPreviews,\n toolbarState: state.streamToolbar\n }\n}\n// redux action mapper\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators(\n {\n getUserProfile: loadUserProfile,\n updatePageState: updatePageState,\n loadDatasources: loadDatasources,\n },\n dispatch\n );\n}\n\ninterface IOwnProps {\n setHeightCallback: any;\n}\n\n// combined props\ntype IProps = IStateProps & IOwnProps & IDispatchProps & IRouteProps;\n\nexport const CameraToolbar: React.FC = (props) => {\n\n /*************************************************************************|\n CALCULATED VALUES & BREVITY NAMES \n |*************************************************************************/\n const auth = useAuth();\n const user = auth.user;\n const profile: ProfileState = props.profile;\n const pageState: PageState = props.pageState; // the shared store of the entire StreamDashboard page\n const editMode: boolean = pageState.editMode; // check whether to extend toolbar graphics & functions\n const camsLoading: boolean = props.previewsState.cameraData.isLoading; // check previews store for cameras loading state\n const datasources: Array = props.toolbarState.datasourceData.data; // get the list of datasources\n const datasourcesLoading: boolean = props.toolbarState.datasourceData.isLoading; // check toolbar store for datasources loading state\n const getUserProfile = props.getUserProfile;\n\n /*************************************************************************|\n STATE \n |*************************************************************************/\n const [searchString, setSearchString] = React.useState(\"\");\n const sizeClass = useWatchSizeClass();\n\n React.useEffect(() => {\n if (localStorage.cameraSearchString)\n setSearchString(JSON.parse(localStorage.cameraSearchString));\n else\n setSearchString(\"\");\n }, [localStorage.cameraSearchString]);\n\n /*************************************************************************|\n HANDLERS & UTILITIES \n |*************************************************************************/\n const isSmallMax = isMaxSize(sizeClass, EBreakpoint.SM);\n\n // assembles the list of datsources for Select element\n const buildDatasourceOptions = (): string[] => {\n\n let options: string[] = [\"All Datasources\"];\n\n if (datasources){\n datasources.forEach(\n (datasource, index) => {\n options.push(datasource.displayName);\n }\n )\n }\n\n return options;\n }\n\n // fires when user changes the datasource Select element value\n const handleDatasourceSelection = (selectedIndex: number) => {\n\n if (!camsLoading){\n let selectedRegionIndex = (selectedIndex === 0) \n ? 0 \n : selectedIndex;\n\n props.updatePageState(\n {\n ...pageState,\n selectedRegion: (selectedIndex === 0) \n ? undefined\n : datasources[(selectedIndex - 1)].region,\n selectedRegionIndex,\n pageIndex: 0\n }\n )\n }\n }\n\n const handleSearch = () => {\n props.updatePageState({ ...pageState, search: searchString });\n }\n\n const userCanBulkEdit = () => {\n\n if (\n user && \n !user.expired && \n profile.userProfile.hasPrivilege(ALLOW_CAMERA_BULK_UPDATE)\n ) return true;\n\n return false;\n };\n\n /*************************************************************************|\n CALCULATED VALUES & BREVITY NAMES\n |*************************************************************************/\n let datasourceOptions: string[] = buildDatasourceOptions();\n\n /*************************************************************************|\n EFFECTS\n |*************************************************************************/\n React.useEffect(\n () => {\n if (!datasources && !datasourcesLoading) { props.loadDatasources() } // initial datasources load\n \n let toolbarRow: HTMLElement | null = document.getElementById(\"toolbar-row\"); // rendered by StreamDashboard, checked here due to Effect timing\n let toolbarHeight: number | null = toolbarRow && toolbarRow.offsetHeight; // check if toolbar-row has been rendered\n toolbarHeight && props.setHeightCallback(toolbarHeight); // if so, report its height to dashboard ( dashboard will handle page sizing )\n }\n );\n\n React.useEffect(\n () => {\n if (!user) getUserProfile();\n }, [user, getUserProfile]\n );\n\n /*************************************************************************|\n PRIMARY RENDER\n |*************************************************************************/\n return (\n \n \n \n \n {\n userCanBulkEdit() &&\n props.updatePageState({\n ...pageState,\n editMode: !editMode\n });\n }\n }\n >\n \n \n \n \n {\n handleDatasourceSelection(newIndex);\n }}\n />\n \n \n ): void => {\n setSearchString(ev.currentTarget.value)\n }\n }\n onKeyDown={(event: React.KeyboardEvent) => {\n (event.key === \"Enter\") && handleSearch()\n }}\n />\n \n \n { handleSearch() }}\n disabled={camsLoading}\n >\n \n \n \n \n {(editMode) && [\n ,\n \n ]}\n \n \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(CameraToolbar));\n\n/****************************************************************************** \n STYLES\n *****************************************************************************/\nexport const StyledToolbar = styled.div`\n margin: 1rem 0 .75rem 0;\n padding: .5rem;\n border: 1px solid rgba(0,0,0,.125);\n border-radius: 4px;\n`;\n\nconst getIndexOfEnum = (myEnum: any, key: any): number => {\n\n let enumKeys: any = Object.keys(myEnum);\n\n for (let i = 0; i < myEnum.length; i++){\n if (enumKeys === key) return i; \n }\n \n return 0;\n}","import * as React from 'react';\nimport { Modal } from \"@algo/modal\";\nimport { StreamAccessLevelOptions } from \"../../../utils/AppConstants\";\nimport { EATStreamAccessLevel } from '@algo/network-manager/models/v3';\n\ninterface IProps {\n renderOption: string;\n show: boolean;\n updateParentState: any;\n updateStore: any;\n selectedAccessLevel: EATStreamAccessLevel;\n}\n\nexport let CameraDashboardModal = (props: IProps) => {\n let modalContent: React.ReactNode; //interior content of the modal\n let cancelButton: React.ReactNode; //button to close modal without success\n let confirmButton: React.ReactNode; //button to execute given logic and continue\n\n if (!props.show) return null;\n\n /* create the cancel button element */\n cancelButton =\n { props.updateParentState() }}\n >\n Cancel\n \n\n /* create the confirm button element */\n confirmButton = \n {\n props.updateStore();\n }}>\n {props.renderOption === \"update\" ? \"Update\" : \"Delete\"}\n \n\n /* create the interior content of the modal body */\n switch (props.renderOption) {\n case \"update\":\n modalContent =\n
    \n Are you sure you want to\n UPDATE \n the selected streams to: \n \n {props.selectedAccessLevel}\n \n
    \n break;\n case \"delete\":\n modalContent =\n
    \n WARNING! \n Are you sure you want to \n DELETE\n the selected streams? \n
    \n break;\n default: return null;\n }\n\n /* actually send the constructed Modal object back to the parent */\n return ;\n}\n\nexport default CameraDashboardModal;","// libraries\nimport * as React from \"react\";\nimport styled from \"styled-components\";\n// hooks\n// @ts-ignore\nimport { useWatchWindowSize } from \"@algo/window-sizer/WindowSizer\";\nimport { SidebarContext as _SidebarContext } from \"../../../store/context/SidebarContext\";\n// components\n// @ts-ignore\nimport { Center } from \"@algo/capsstrap\";\nimport { Pill } from \"@algo/pill\";\n// constants\nconst selfWidth: number = 165;\nconst sidebarWidth: number = 256;\n\nexport interface IToTopBotton {\n show?: boolean;\n onClick?: () => void;\n}\n\nexport const ToTopButton: React.FC = (props) => {\n\n /******************************************************** \n CALCULATED VALUES & BREVITY NAMES\n *******************************************************/\n const clickAttribute: any = (props.onClick)\n ? { onClick: props.onClick }\n : {};\n\n /******************************************************** \n STATE\n *******************************************************/\n const windowSize = useWatchWindowSize( // watch the window width / height\n {\n width: window.innerWidth,\n height: window.innerHeight\n });\n\n const SidebarContext = React.useContext(_SidebarContext);\n\n /******************************************************** \n UTILITIES & HANDLERS\n *******************************************************/\n const left = // left offset for absolute position\n (windowSize.width / 2) \n - (selfWidth / 2) // account for width of self div\n + (SidebarContext.showSidebar ? (sidebarWidth / 2) : 0); // conditionally account for sidebar open/close\n\n if (!props.show) return null;\n\n return (\n \n
    \n
    \n \n
    \n
    \n
    \n );\n\n\n}\n\nexport default ToTopButton;\n\n/********************************************************\n STYLES\n*******************************************************/\n\ninterface IStyledToTop {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n}\n\nconst StyledToTop = styled.div`\n position: absolute;\n top: ${props => props.top ? `${props.top}px` : \"auto\"};\n right: ${props => props.right ? `${props.right}px` : \"auto\"};\n bottom: ${props => props.bottom ? `${props.bottom}px` : \"auto\"};\n left: ${props => props.left ? `${props.left}px` : \"auto\"};\n\n transition: all .5s ease-out;\n`;","// libraries\nimport * as React from \"react\";\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from \"redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { determinePageCount } from \"@algo/pager\";\n// interfaces & models\nimport { IReduxData } from \"../../../utils/ReduxData\";\nimport {\n IATCameraDevice, IATCloudStreamTarget\n} from \"@algo/network-manager/models/v3\";\n// hooks\nimport { useGetHeight } from \"@algo/hooks\";\n// redux-state-types\nimport {\n State as PreviewsState\n} from \"../../../store/cameraDevice/dashboard/types/streamPreviewsTypes\";\nimport {\n State as PageState\n} from \"../../../store/cameraDevice/dashboard/types/pageStateTypes\";\nimport { AppState } from '../../../store';\n// redux-actions\nimport {\n updatePageState, updateAccessLevels\n} from \"../../../store/cameraDevice/dashboard/actions/pageStateActions\";\n// local components\nimport CameraPreviews from \"./previews/CameraPreviews\";\nimport CameraToolbar from \"./toolbar/CameraToolbar\";\nimport { CameraDashboardModal as DashboardModal } from \"./Modal\";\n// general components\nimport { Container, Row, Col } from \"reactstrap\";\nimport { Center } from \"@algo/algo-styles\";\nimport { RemoveScrollbar } from \"@algo/algo-styles\";\nimport { Pager } from \"@algo/pager\";\nimport { ToTopButton } from \"./ToTopButton\";\n\nconst NAV_BAR_HEIGHT: number = 64;\nconst DEFAULT_TOOLBAR_HEIGHT: number = 84;\nconst ITEMS_PER_PAGE: number = 30;\n\n/**************************************************************************\n COMPONENT PROPS INTERFACES\n*************************************************************************/\n// redux store props\ninterface StateProps {\n previewsState: PreviewsState;\n pageState: PageState;\n}\n// redux action props\ninterface DispatchProps {\n updatePageState: typeof updatePageState;\n updateAccessLevels: typeof updateAccessLevels\n}\n// redux action mapper\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n updatePageState: updatePageState,\n updateAccessLevels: updateAccessLevels\n }, dispatch);\n}\n// redux store mapper\nlet mapStateToProps = (state: AppState) => {\n return {\n previewsState: state.streamPreviews,\n pageState: state.streamPageState\n };\n}\n// combined props\ntype IProps = StateProps & DispatchProps & RouteComponentProps;\n\nexport const CameraDashboard: React.FC = (props) => {\n\n /**************************************************************************\n STATE\n *************************************************************************/\n const [showToTop, setShowToTop] = React.useState(false);\n const [toolbarHeight, setToolbarHeight] = React.useState(DEFAULT_TOOLBAR_HEIGHT);\n\n /**************************************************************************\n CALCULATED VALUES & BREVITY NAMES\n *************************************************************************/\n const pageState: PageState = props.pageState;\n const rootHeight: number = useGetHeight(\"id\", \"root\"); // get full root height\n const navBarHeight: number = NAV_BAR_HEIGHT; // get height of site navbar\n const containerHeight: number = // set height of top-level container\n rootHeight - navBarHeight;\n\n const pagerContent: number = 42; // set height of pager content\n const pagerMargin: number = 32; // account for toolbar margin\n const pagerHeight: number = // brevity\n pagerContent + pagerMargin;\n\n const previewsHeight: number = // set height of previews to remainder\n containerHeight - toolbarHeight - pagerHeight;\n\n const cameraData: IReduxData = props.previewsState.cameraData;\n\n const pageCount: number =\n determinePageCount(cameraData.totalCount ?? 0, ITEMS_PER_PAGE) ||\n props.pageState.pageCount ||\n 1;\n\n /**************************************************************************\n HANDLERS & UTILITIES\n *************************************************************************/\n\n /* when window is scrolled, check if scroll is greater than 300 pixels, \n * if so, activate ToTop button in state */\n const checkScrollHeight = (): void => {\n let cameraList: HTMLElement | null = document.getElementById(\"cameraList\");\n let scroll: number | undefined = cameraList?.scrollTop;\n\n if (scroll === undefined) return;\n if (scroll === 0 && showToTop) {\n setShowToTop(false); \n return;\n }\n\n if (scroll && (scroll >= 300) && !showToTop) {\n setShowToTop(true)\n }\n else if (scroll && (scroll < 300) && showToTop) {\n setShowToTop(false);\n }\n }\n\n /* Sets the scroll height of the cameraList div back to the top */\n const setScrollHeight = () => {\n let cameraList: HTMLElement | null = document.getElementById(\"cameraList\");\n if (cameraList)\n cameraList.scrollTop = 0;\n }\n\n const getCloudStreamTargets =\n (devices: Array): Array => {\n let targetsList: Array = [];\n devices.forEach(\n (device) => {\n if (device.cloudStreamTargets[0])\n targetsList.push(device.cloudStreamTargets[0])\n }\n );\n return targetsList;\n }\n\n /**************************************************************************\n PRIMARY RENDER\n *************************************************************************/\n\n return (\n \n\n {/* Modal anchor points */}\n {\n props.updatePageState({\n ...pageState,\n showUpdateModal: false,\n })\n }}\n updateStore={() => {\n props.updateAccessLevels(\n getCloudStreamTargets(pageState.selectedStreams),\n pageState.selectedAccessLevel\n )\n }}\n selectedAccessLevel={pageState.selectedAccessLevel}\n />\n\n {/* Toolbar Section */}\n \n { /* \n toolbar-row id is used in StreamToolbar to watch height \n and notify StreamDashboard of change to maintain page heights \n */ }\n \n {\n if (height !== toolbarHeight) setToolbarHeight(height);\n }\n } />\n \n \n\n {/* Stream Preview Section */}\n \n \n \n \n\n {/* Pager Section */}\n \n \n
    \n {\n props.updatePageState({\n ...pageState,\n pageIndex: newIndex,\n pageCount\n })\n }}\n ellipsisThreshold={10} ellipsisOffset={1}\n backgroundColorActive={\"old-algo-green\"}\n />\n
    \n \n
    \n \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(CameraDashboard));","//libraries\nimport * as React from 'react';\nimport {\n EAspectRatio,\n getElementWidthByClass,\n calculateHeightFor\n} // @ts-ignore\nfrom \"@algo/window-sizer/WindowSizer\";\n//components\nimport { IATCameraDevice } from \"@algo/network-manager/models/v3\";\nimport { Pill } from '@algo/pill';\nimport { GoogleMap } from \"@algo/google-map\";\n//styled components\nimport { Body1, Caption1 } from '@algo/algo-styles';\n\n//constants\ndeclare var __API_URL__: string;\nconst snapshotURI: string = `${__API_URL__}/v3.0/Cameras/`;\n//interfaces\n\nexport interface IPillObject {\n [key: string]: React.CSSProperties;\n}\n\nexport interface IPillClass {\n [key: string]: string;\n}\n\ninterface IProps {\n cameraDevice: IATCameraDevice;\n gmap?: any;\n pillClasses?: IPillClass;\n newStream?: boolean;\n backgroundClass?: string;\n labelClass?: string;\n iconClass?: string;\n}\n\ninterface IState { }\n\n\nexport class CameraPreview extends React.Component{\n\n width: number | null;\n height: number | null;\n\n constructor(props: IProps) {\n super(props);\n this.width = null;\n this.height = null;\n }\n\n componentDidMount = () => {\n let setFlag: boolean = false;\n if (!this.width || !this.height) {\n setFlag = true;\n }\n this.width = getElementWidthByClass(\"algo-camera-preview\");\n this.height = this.props.gmap\n ? this.props.gmap.height\n ? this.props.gmap.height\n : 225\n : calculateHeightFor(this.width, EAspectRatio[\"16x9\"]);\n\n if (setFlag) this.setState({ ...this.state });\n }\n\n render = () => {\n let camera: IATCameraDevice = this.props.cameraDevice; //brevity\n\n if (this.props.newStream) return this.renderNewStreamButton();\n if (!camera || !camera.id || camera.id === 0) { //confirm camera exists and id not 0\n return (
    Error! No Valid Camera Object Provided!
    )\n }\n\n let wrapperStyle: React.CSSProperties = { \n width: \"100%\", borderRadius: \"4px\", border: 0 \n };\n\n let rowStyle: React.CSSProperties = { \n height: `${this.height ? this.height : \"144\"}px`, \n borderTopLeftRadius: \"4px\", borderTopRightRadius: \"4px\" \n };\n\n let mapWrapperStyle: React.CSSProperties = { \n backgroundColor: \"#efeff0\", width: \"100%\", \n height: `${this.height ? this.height : \"144\"}px`, \n borderTopLeftRadius: \"4px\", borderTopRightRadius: \"4px\" \n };\n\n let infoStyle: React.CSSProperties = { \n height: this.props.gmap ? \"131px\" : \"11.68rem\"\n };\n\n let roadNamesStyle: React.CSSProperties = { height: \"4rem\" };\n \n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n {camera.routeDesignator}\n \n
    \n
    \n
    \n
    \n
    \n \n {camera.crossStreet}\n \n
    \n
    \n
    \n
    \n
    \n {this.renderPills()}\n
    \n
    \n
    \n
    \n );\n }\n\n renderPills = () => {\n let pillsStyle: React.CSSProperties = {\n height: this.props.gmap ? \"2rem\" : \"4rem\",\n overflow: \"auto\",\n };\n\n let pills = this.props.pillClasses ? this.props.pillClasses : null;\n if (!pills) return null;\n return (\n
    \n
    \n
    \n {\n Object.keys(pills).map(\n (key) => {\n return {key}\n }\n )\n }\n
    \n
    \n
    \n );\n }\n\n renderNewStreamButton = () => {\n let newStreamButtonHeight: string = `${this.height ? (this.height + 186) : \"250\"}px`;\n\n let newStreamIconStyle: React.CSSProperties = {\n marginBottom: \"16px\",\n fontSize: \"32px\",\n };\n let newStreamTextStyle: React.CSSProperties = {\n fontSize: \"18px\",\n fontWeight: \"bold\",\n };\n\n return (\n
    \n
    \n
    \n \n \n \n Create Stream\n \n
    \n
    \n
    \n );\n }\n}\n\nexport default CameraPreview;\n\n\n/*************************************************************\n HELPER FUNCTIONS\n************************************************************/\nconst getNewConfig = (device: IATCameraDevice) => {\n let coords: any = { lat: device.latitude, lng: device.longitude };\n\n let mapConfig: any = {\n center: coords,\n zoom: 16,\n disableDefaultUI: true,\n marker: {\n position: coords\n },\n }\n\n return mapConfig;\n}","//libraries\nimport * as React from \"react\";\nimport Moment from \"moment\";\n//interfaces and models\nimport { \n IATStreamServerApplication, IATIncomingStreamLog, IATPushPublishEntryLog\n} from \"@algo/network-manager/models/v3\";\n//components\nimport { Container, Row, Col } from \"reactstrap\";\nimport { Body2, Caption1 } from \"@algo/algo-styles\";\nimport { Icon } from \"@algo/icon\";\nimport { Pill } from \"@algo/pill\";\n//constants\n\nconst statusIcon: any = {\n \"Ok\": \"fas fa-check-circle\",\n \"Warning\": \"fas fa-exclamation-circle\",\n \"Error\": \"fas fa-exclamation-triangle\",\n \"Unknown\": \"fas fa-question-circle\"\n}\n\nconst statusColor: any = {\n \"Ok\": \"#01B420\",\n \"Warning\": \"#ffc107\",\n \"Error\": \"#E53424\",\n \"Unknown\": \"#000\"\n}\n\nconst pillStyleObject: React.CSSProperties = {\n color: \"#000\", backgroundColor: \"#C4C4C4\",\n borderRadius: \"4px\", padding: \"4px 8px 4px 8px\",\n marginRight: \"6px\"\n}\n\nexport enum ELogType {\n IncomingStream = \"IncomingStream\",\n PushPublishEntry = \"PushPublishEntry\",\n}\n\ninterface ILogSummaryProps {\n log: IATIncomingStreamLog | IATPushPublishEntryLog;\n type: ELogType;\n last: boolean;\n}\n\nexport const LogSummary: React.FC = (props) => {\n\n /*******************************************************************\n CALCULATED VALUES & BREVITY NAMES\n *******************************************************************/\n\n const status: string = props.log.status;\n\n const timeStamp: Moment.Moment = Moment(props.log.timestamp);\n const formattedTime: string = timeStamp.format(`L LT`);\n\n const statusName: string = \n ( (props.type === ELogType.IncomingStream)\n ? (props.log as IATIncomingStreamLog).incomingStreamName\n : (props.log as IATPushPublishEntryLog).entryName\n ) || \"\";\n\n const application: IATStreamServerApplication = props.log.application;\n\n /******************************************************************\n NULL & ERROR RENDER \n ******************************************************************/\n\n if (!props.log) {\n return
    Error! No log object was supplied to LogSummary!
    \n }\n else if (props.type !== ELogType.IncomingStream && props.type !== ELogType.PushPublishEntry) {\n return
    The Log Type did not match \"Incoming Stream\" or \"Push Publish Entry\" types.
    \n }\n\n /******************************************************************\n PRIMARY RENDER\n ******************************************************************/\n else return (\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {statusName}\n \n
    \n \n
    \n \n \n
    \n \n {formattedTime}\n \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n\n \n \n \n \n \n
    \n \n {application?.streamServer?.name}\n \n \n {application?.name}\n \n \n {props.log.loggingSource}\n \n
    \n \n
    \n \n \n
    \n \n {props.log.message || \"Message is missing\"}\n \n
    \n \n
    \n
    \n \n
    \n
    \n );\n}","//libraries\nimport { ThunkAction } from 'redux-thunk'\nimport { AppState } from '../../../index';\nimport { Action } from \"redux\";\nimport { getAccessToken } from '../../../../components/template/authentication/oidcConfig';\n// interfaces & models\nimport * as TYPES from \"../types/types\";\nimport {\n EATStreamServerLogSource\n} from \"@algo/network-manager/models/v3\";\nimport { \n CameraDeviceNetworkManager, ICameraDeviceNetworkManager, \n IGetCameraDeviceLogs, IProcessedResponse, ProcessedResponse \n} from \"@algo/network-manager/managers/v3\";\n//constants\nimport TestLogs from \"../../../../test/api-data/logs-distributor-tusc-cam-5-168-8.json\";\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlDevice: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).devices}`;\n\n/*******************************************************************************\n INITIALIZE \n*******************************************************************************/\n\nexport let initializeDetails = (\n deviceId: number\n): ThunkAction> => async (dispatch) => {\n dispatch(loadCameraDevice(deviceId));\n}\n\n/*******************************************************************************\n LOAD CAMERA DEVICE\n*******************************************************************************/\n\nexport let loadCameraDevice = (\n deviceId: number\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().cameraDetails.loadingCameraDevice) {\n dispatch(loadCameraDeviceBegin());\n\n getAccessToken()\n .then(\n (token) => {\n let manager: CameraDeviceNetworkManager = \n new CameraDeviceNetworkManager(apiUrlDevice);\n manager.setAccessToken(token);\n\n manager.getById(\n getState().cameraDetails.lastResponse, \n {id: deviceId}\n )\n .then(\n (response: any) => {\n dispatch(loadCameraDeviceSuccess(response));\n }, (reject: any) => {\n dispatch(loadCameraDeviceFailure(new Error(reject)));\n })\n .catch((error: any) => {\n dispatch(loadCameraDeviceFailure(error));\n });\n }\n )\n }\n}\n\nfunction loadCameraDeviceBegin(): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.LOAD_CAMERA_DEVICE_BEGIN,\n payload: {} as TYPES.CameraDetailsPayload\n };\n}\n\nfunction loadCameraDeviceSuccess(response: IProcessedResponse): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.LOAD_CAMERA_DEVICE_SUCCESS,\n payload: {\n device: response.data,\n response\n } as TYPES.CameraDetailsPayload\n };\n}\n\nfunction loadCameraDeviceFailure(error: Error): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.LOAD_CAMERA_DEVICE_FAILURE,\n payload: {\n error: error\n } as TYPES.CameraDetailsPayload\n };\n}\n\n/*******************************************************************************\n LOAD STREAM FILE LOGS\n*******************************************************************************/\n\nexport let loadLogs = (\n req: IGetCameraDeviceLogs\n): ThunkAction> => async (dispatch, getState) => {\n\n if (!getState().cameraDetails.loadingLogs[req.source || \"SOURCE-UNKNOWN\"] && req.id) {\n\n let source: EATStreamServerLogSource = \n EATStreamServerLogSource[\n req.source as keyof typeof EATStreamServerLogSource\n ];\n\n dispatch(loadLogsBegin(source));\n\n let manager: ICameraDeviceNetworkManager =\n new CameraDeviceNetworkManager(apiUrlDevice);\n\n getAccessToken()\n .then(\n (token) => {\n manager.setAccessToken(token);\n \n manager.getLogs(\n getState().cameraDetails.lastResponse, \n req\n )\n .then(\n (response: IProcessedResponse) => {\n dispatch(\n loadLogsSuccess(response, source)\n );\n },\n (reject: any) => {\n dispatch(loadLogsFailure(new Error(reject), source))\n }\n )\n .catch(\n (error: Error) => {\n dispatch(loadLogsFailure(error, source));\n }\n )\n },\n (reject) => {\n dispatch(loadLogsFailure(new Error(reject), source));\n }\n )\n .catch(\n (error: Error) => {\n dispatch(loadLogsFailure(error, source));\n }\n )\n }\n}\n\nexport let loadLogs_test = (\n req: IGetCameraDeviceLogs\n): ThunkAction> => async (dispatch, getState) => {\n\n if (!getState().cameraDetails.loadingLogs[req.source || \"SOURCE-UNKNOWN\"] && req.id) {\n\n let source: EATStreamServerLogSource = \n EATStreamServerLogSource[\n req.source as keyof typeof EATStreamServerLogSource\n ];\n\n dispatch(loadLogsBegin(source));\n\n let response = new ProcessedResponse();\n if (req.source === EATStreamServerLogSource.DistributorPushPublishEntry){\n response.data = [];\n //response.headers = new Headers();\n (response as any).totalCount = 0;\n dispatch(\n loadLogsSuccess(response, source)\n );\n }\n else {\n response.data = TestLogs.slice(req.skip || 0, req.take || TestLogs.length - 1);\n //response.headers = new Headers();\n (response as any).totalCount = 25;\n dispatch(\n loadLogsSuccess(response, source)\n );\n }\n \n }\n}\n\nfunction loadLogsBegin(\n source: EATStreamServerLogSource\n): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.LOAD_LOGS_BEGIN,\n payload: {\n source\n } as TYPES.CameraDetailsPayload\n };\n}\n\nfunction loadLogsSuccess(\n response: IProcessedResponse,\n source: EATStreamServerLogSource\n): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.LOAD_LOGS_SUCCESS,\n payload: {\n logs: response.data,\n totalCount: response.getCount() || 0,\n checksum: parseInt(response.getChecksum()) || 0,\n source,\n } as TYPES.CameraDetailsPayload\n };\n}\n\nfunction loadLogsFailure(\n error: Error, \n source: EATStreamServerLogSource\n): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.LOAD_LOGS_FAILURE,\n payload: {\n error: error,\n source: source,\n } as TYPES.CameraDetailsPayload\n };\n}","//libraries\nimport * as React from \"react\";\nimport styled from \"styled-components\";\n//components\nimport { Body1 } from \"@algo/algo-styles\";\nimport { Center } from \"@algo/capsstrap\";\nimport { getSiteValue, siteSizes, siteColors } from \"@algo/algo-styles\";\n\ninterface INavButtonProps {\n update: (newValue: number) => any;\n active: boolean;\n label: string;\n}\n\nexport const NavButton: React.FC = (props) => {\n\n /***********************************************************\n PRIMARY RENDER\n ***********************************************************/\n return (\n
    \n { props.update(0) }}\n active={props.active}\n >\n
    \n {props.label}\n
    \n
    \n
    \n );\n}\n\nexport default NavButton;\n\n\n/***********************************************************\n STYLED COMPONENTS\n***********************************************************/\ninterface IStyledNavButtonProps {\n active?: boolean;\n}\n\nconst StyledNavButton = styled.div`\n height: 42px;\n width: 100%;\n border-radius: ${getSiteValue(siteSizes, \"border-radius\")};\n background-color: ${props => props.active ? getSiteValue(siteColors, \"old-algo-green\") : getSiteValue(siteColors, \"medium-grey\")};\n color: ${props => props.active ? \"#fff\" : \"#000\"};\n cursor: pointer;\n`;","// libraries\nimport { useEffect, useRef } from \"react\";\n\n// used to track previous values for props or effect dependencies\nexport const usePrevious = (value: T): T | undefined => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport const hasChanged = (oldValue: any, newValue: any) => {\n if (oldValue !== newValue) return true;\n else return false;\n}","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Center } from \"@algo/capsstrap\";\nimport { Body1 } from \"@algo/algo-styles\";\n \nexport interface IStreamLogMessage {\n type?: string;\n message?: string;\n}\n\nexport const StreamLogMessage: React.FC = (props) => {\n return (\n
    \n \n {`${props.message ? props.message : \"No Logs\"}`}\n \n
    \n );\n}\n\ninterface IStyledLogMessage {\n type: string;\n}\n\nconst StyledLogMessage = styled.div`\n background-color: ${ props => props.type === \"null\" ? \"#fff3cd\" : \"#f8d7da\"};\n color: ${ props => props.type === \"null\" ? \"#856404\" : \"#721c24\"};\n border-radius: 4px;\n width: 75%;\n font-weight: bold;\n display: flex;\n justify-content: center;\n padding: 1rem;\n`;","//libraries\nimport * as React from \"react\";\nimport { hasChanged, usePrevious } from \"../../../utils/hooks/usePrevious\";\nimport { nuon } from \"../../../utils/data/nuon\";\n//enum\nimport { ELogType } from \"./LogSummary\";\n//interfaces and models\nimport { \n IATIncomingStreamLog, IATPushPublishEntryLog\n } from \"@algo/network-manager/models/v3\";\n// enums\nimport { EATStreamServerLogSource } from \"@algo/network-manager/models/v3\";\n//components\nimport { Container, Row, Col } from \"reactstrap\";\nimport { Center } from \"@algo/capsstrap\";\nimport { RemoveScrollbar } from \"@algo/algo-styles\";\nimport { Loading } from \"@algo/loading\";\nimport { Pager } from \"@algo/pager\";\nimport { LogSummary } from \"./LogSummary\";\nimport { StreamLogMessage } from \"./StreamLogMessage\";\n//constants\nimport { D_GET_CAMERA_DEVICE_LOGS } from \"@algo/network-manager/managers/v3\";\nconst NO_LOGS = \"No Logs\";\n\ninterface IPagedTab {\n logs: Array;\n loadLogs: any;\n navIndex: EATStreamServerLogSource;\n deviceId: number;\n loadingLogs: boolean;\n error: Error | null;\n noData: boolean;\n type: ELogType;\n pageCount: number;\n pageIndex: number;\n perPage: number;\n updatePageIndex: (newIndex: number) => void;\n}\n\nexport const PagedTab: React.FC = (props) => {\n\n const {\n logs, loadLogs, navIndex,\n deviceId, loadingLogs, error, noData,\n type, pageCount, pageIndex, perPage,\n updatePageIndex\n } = {...props};\n\n const prevProps = usePrevious(props);\n\n /**************************************\n EFFECTS\n **************************************/\n // Load Streaming Logs\n React.useEffect(\n () => {\n if ( // if there are no logs, and no error \n (!nuon(logs) && !error && !noData) ||\n ( // or if the perPage or pageIndex or navIndex values changed\n hasChanged(perPage, prevProps?.perPage) || \n hasChanged(pageIndex, prevProps?.pageIndex) ||\n navIndex !== prevProps?.navIndex\n )\n ){ // and only if you aren't already loading logs\n if (!loadingLogs) {\n loadLogs(\n {\n ...D_GET_CAMERA_DEVICE_LOGS,\n source: navIndex,\n id: deviceId,\n skip: (pageIndex * perPage),\n take: perPage\n }\n );\n }\n }\n }, [\n logs, error, loadingLogs, navIndex, \n deviceId, pageIndex, perPage, loadLogs,\n prevProps?.perPage, prevProps?.pageIndex\n ]\n );\n\n /**************************************\n ERROR RENDER\n **************************************/\n if (error) {\n if (error && error.toString() === NO_LOGS)\n return \n else\n return \n }\n\n /**************************************\n LOADING RENDER\n **************************************/\n if (loadingLogs) {\n return (\n
    \n \n
    \n );\n }\n\n /**************************************\n NULL RENDER\n **************************************/\n if ((!logs || noData) && !loadingLogs) {\n return \n }\n\n /**************************************\n PRIMARY RENDER\n **************************************/\n \n return (\n \n \n \n {\n logs.map(\n (log, mapIndex) => {\n return (\n
    \n \n
    \n )\n }\n )\n }\n \n
    \n\n \n \n { \n updatePageIndex(newIndex) \n }\n }\n ellipsisThreshold={10}\n ellipsisOffset={2}\n size={\"xs\"}\n backgroundColorActive={\"old-algo-green\"}\n />\n \n \n
    \n );\n}\n\nexport default PagedTab;","// not undefined or null\n// used to check for falsey values when 0 is truthy\nexport function nuon(value: any){\n\n if (value === undefined) return false;\n if (value === null) return false;\n\n return true;\n};","//libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from \"redux\";\n//enums\nimport { ELogType } from \"./LogSummary\";\nimport { EATStreamServerLogSource } from \"@algo/network-manager/models/v3\";\n// @ts-ignore\nimport { determinePageCount } from \"@algo/pager\";\n//redux-store\nimport {\n CameraDetailsState\n} from \"../../../store/cameraDevice/details/types/types\";\nimport { AppState } from \"../../../store\";\n//redux-actions\nimport {\n loadLogs\n} from \"../../../store/cameraDevice/details/actions/loadActions\";\n//types\nimport { IReactSelectOption } from \"../../../types/common\";\n//components\nimport Select from \"react-select\";\nimport { Container, Row, Col } from \"reactstrap\";\nimport { NavButton } from \"./NavButton\";\nimport { PagedTab } from \"./PagedTab\";\n\ninterface IStateProps {\n details?: CameraDetailsState;\n}\n\ninterface IDispatchProps {\n loadLogs?: typeof loadLogs;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n details: state.cameraDetails\n }\n};\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n loadLogs: loadLogs,\n }, dispatch);\n};\n\ntype StreamLogNavigatorTypes = IStateProps & IDispatchProps;\n\nexport const StreamLogNavigator: React.FC = (props) => {\n\n /***********************************************************\n CALCULATED VALUES & BREVITY NAMES\n ***********************************************************/\n\n const selectLabels: Array = [5, 10, 15, 20, 25, 50, 75, 100]; //string labels to fill Select dropdown objects\n const selectOptions: Array = selectLabels.map( //array of objects to pass as prop to Select\n (label) => { return { value: label, label: `${label}` } }\n );\n\n /***********************************************************\n STATE\n ***********************************************************/\n const [state, setState] = React.useState({\n selectedOption: selectOptions[4],\n navIndex: EATStreamServerLogSource.LocalIncomingStream,\n pageIndex: {\n [EATStreamServerLogSource.LocalIncomingStream]: 0,\n [EATStreamServerLogSource.DistributorIncomingStream]: 0,\n [EATStreamServerLogSource.DistributorPushPublishEntry]: 0\n },\n localPageCount: determinePageCount(props.details?.totalCounts[0] ?? 0, selectOptions[0].value),\n localPageIndex: 0,\n distributorPageCount: determinePageCount(props.details?.totalCounts[1] ?? 0, selectOptions[0].value),\n distributorPageIndex: 0,\n cloudPageCount: determinePageCount(props.details?.totalCounts[2] ?? 0, selectOptions[0].value),\n cloudPageIndex: 0,\n });\n\n /***********************************************************\n CALLBACKS & EVENT HANDLERS\n ***********************************************************/\n const updateNavIndex = (newIndex: EATStreamServerLogSource) => {\n setState({ ...state, navIndex: newIndex });\n }\n\n const updatePageIndex = (propertySelector: string, newIndex: number): void => {\n setState({\n ...state,\n pageIndex: { ...state.pageIndex, [propertySelector]: newIndex },\n });\n }\n\n /***********************************************************\n PRIMARY RENDER\n ***********************************************************/\n\n return (\n \n\n {/* Nav Row */}\n \n \n { updateNavIndex(EATStreamServerLogSource.LocalIncomingStream) }}\n active={state.navIndex === EATStreamServerLogSource.LocalIncomingStream}\n label={\"Local\"}\n />\n \n \n { updateNavIndex(EATStreamServerLogSource.DistributorIncomingStream) }}\n active={state.navIndex === EATStreamServerLogSource.DistributorIncomingStream}\n label={\"Distributor\"}\n />\n \n \n { updateNavIndex(EATStreamServerLogSource.DistributorPushPublishEntry) }}\n active={state.navIndex === EATStreamServerLogSource.DistributorPushPublishEntry}\n label={\"Cloud\"}\n />\n \n \n
    \n {\n setState({\n ...state,\n selectedOption: newValue,\n })\n }}\n />\n
    \n \n
    \n\n {/*Logs Row*/}\n \n \n {!props.details?.loadingCameraDevice && props.details?.device &&\n {\n updatePageIndex(state.navIndex, newIndex)\n }}\n />\n }\n \n \n\n
    \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(StreamLogNavigator);","//libraries\nimport * as React from \"react\";\n//interfaces and models\nimport { \n IATCameraDevice, IATCloudStreamTarget\n} from \"@algo/network-manager/models/v3\";\n//enums\nimport { EATStreamAccessLevel } from \"@algo/network-manager/models/v3\";\n//components\nimport { Container, Row, Col } from \"reactstrap\";\nimport { CameraPreview } from \"./CameraPreview\";\nimport { CloudStreamTarget } from \"./CloudStreamTarget/CloudStreamTarget\";\nimport StreamLogNavigator from \"./StreamLogNavigator\";\nimport { H3, FixedHeight } from \"@algo/algo-styles\";\n\ninterface IProps {\n //store data\n device: IATCameraDevice;\n pageState: any;\n //store actions\n updateAccessLevel: (\n cstId: IATCloudStreamTarget, \n accessLevel: EATStreamAccessLevel\n ) => any;\n updatePageState: any;\n //store action locks\n updatingAccessLevel: boolean;\n}\n\nexport const CameraDeviceDetails: React.FC = (props) => {\n\n /*************************************************************\n CALCULATED VALUES & BREVITY NAMES\n ************************************************************/\n\n const device: IATCameraDevice = props.device;\n\n const cloudStreamTarget: IATCloudStreamTarget | undefined =\n (\n device.cloudStreamTargets &&\n device.cloudStreamTargets.length > 0\n )\n ? device.cloudStreamTargets[0]\n : undefined\n\n const accessLevel: EATStreamAccessLevel =\n (device.cloudStreamTargets.length > 0)\n ? device.cloudStreamTargets[0].accessLevel\n : EATStreamAccessLevel.Unknown\n\n /*************************************************************\n CALLBACKS AND HANDLERS\n ************************************************************/\n\n const updateAccessLevel = (newLevel: EATStreamAccessLevel): void => {\n props.updatePageState({ ...props.pageState, accessChange: true });\n props.updateAccessLevel(props.device.cloudStreamTargets[0], newLevel);\n }\n\n /*************************************************************\n PRIMARY RENDER\n ************************************************************/\n return (\n \n\n {/* Header Row */}\n \n \n

    Device

    \n \n \n

    Public Stream

    \n \n
    \n\n {/* Summary Row */}\n \n \n \n \n \n \n \n \n {\n updateAccessLevel(newLevel)\n }\n }\n updatingAccessLevel={props.updatingAccessLevel}\n />\n \n \n \n\n {/* Stream Logs Header */}\n \n \n

    Streaming Logs

    \n \n
    \n\n \n \n \n \n \n\n
    \n );\n}\n\nexport default CameraDeviceDetails;","//libraries\nimport { ThunkAction } from 'redux-thunk'\nimport { AppState } from '../../../index';\nimport { Action } from \"redux\";\nimport { getAccessToken } from '../../../../components/template/authentication/oidcConfig';\n// interfaces & models\nimport { \n ICloudStreamTargetNetworkManager, CloudStreamTargetNetworkManager, IProcessedResponse\n} from \"@algo/network-manager/managers/v3\";\nimport { IATCloudStreamTarget } from \"@algo/network-manager/models/v3\";\nimport * as TYPES from \"../types/types\";\n//enums\nimport { EATStreamAccessLevel } from \"@algo/network-manager/models/v3\";\n//constants\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../../api-version-constants\";\ndeclare var __API_URL__: string;\nconst apiUrlCST: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).cloudStreamTargets}`;\n\n/*******************************************************************************\n PATCH CLOUD STREAM TARGET\n*******************************************************************************/\nexport let patchCloudStreamTarget = (\n cst: IATCloudStreamTarget,\n accessLevel: EATStreamAccessLevel\n): ThunkAction> => async (dispatch, getState) => {\n\n if (\n !getState().cameraDetails.loadingCameraDevice && \n !getState().cameraDetails.patchingCloudStreamTarget\n ) {\n \n dispatch(patchCloudStreamTargetBegin());\n\n let manager: ICloudStreamTargetNetworkManager = \n new CloudStreamTargetNetworkManager(apiUrlCST);\n\n cst.accessLevel = accessLevel;\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.update({id: cst.id, cst})\n .then(\n (response: IProcessedResponse) => \n dispatch(\n patchCloudStreamTargetSuccess(response)\n )\n ).catch(\n (err: Error) => \n dispatch(patchCloudStreamTargetFailure(err))\n )\n }\n ).catch(\n (err: Error) => dispatch(patchCloudStreamTargetFailure(err))\n )\n }\n}\n\nfunction patchCloudStreamTargetBegin(): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.PATCH_CLOUD_STREAM_TARGET_BEGIN,\n payload: {} as TYPES.CameraDetailsPayload\n };\n}\n\nfunction patchCloudStreamTargetSuccess(response?: IProcessedResponse): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.PATCH_CLOUD_STREAM_TARGET_SUCCESS,\n payload: {\n response\n } as TYPES.CameraDetailsPayload\n };\n}\n\nfunction patchCloudStreamTargetFailure(error: Error): TYPES.CameraDetailsTypes {\n return {\n type: TYPES.PATCH_CLOUD_STREAM_TARGET_FAILURE,\n payload: {\n error: error\n } as TYPES.CameraDetailsPayload\n };\n}\n","//libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n//components\nimport { CameraDeviceDetails } from './CameraDeviceDetails';\nimport { Loading } from \"@algo/loading\";\nimport { Center } from \"@algo/capsstrap\";\nimport { Body1 } from \"@algo/algo-styles\";\n//redux-store\nimport { \n State as PageState \n} from \"../../../store/cameraDevice/dashboard/types/pageStateTypes\";\nimport { \n CameraDetailsState \n} from \"../../../store/cameraDevice/details/types/types\";\nimport { AppState } from \"../../../store\";\n//redux-action-creators\nimport { \n initializeDetails, loadCameraDevice \n} from \"../../../store/cameraDevice/details/actions/loadActions\";\nimport { \n updatePageState \n} from \"../../../store/cameraDevice/dashboard/actions/pageStateActions\";\nimport { \n patchCloudStreamTarget \n} from \"../../../store/cameraDevice/details/actions/updateActions\";\n\n\ninterface IStateProps { \n details: CameraDetailsState;\n pageState: PageState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n details: state.cameraDetails,\n pageState: state.streamPageState\n }\n};\n\ninterface IDispatchProps {\n initialize: typeof initializeDetails;\n loadCameraDevice: typeof loadCameraDevice;\n patchCloudStreamTarget: typeof patchCloudStreamTarget;\n updatePageState: typeof updatePageState;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: initializeDetails,\n loadCameraDevice: loadCameraDevice,\n patchCloudStreamTarget: patchCloudStreamTarget,\n updatePageState: updatePageState\n }, dispatch);\n};\n\ntype StreamCreationWrapperProps = IStateProps & IDispatchProps & RouteComponentProps;\n\nexport const StreamCreationWrapper: React.FC = (props) => {\n\n const {\n details, match, loadCameraDevice\n } = {...props};\n\n const {\n patchingCloudStreamTarget\n } = {...details};\n\n const matchDeviceId = match?.params?.deviceId;\n\n /**************************************************************************\n CALCULATED VALUES & BREVITY NAMES \n *************************************************************************/\n let paramsId: string = props.match.params.deviceId;\n let currentId: string = ( props.details.device ) \n ? props.details.device.id.toString() \n : \"-1\";\n\n /**************************************************************************\n EFFECTS \n *************************************************************************/\n // confirm there is no device, and devices are not loading | if so, initialize\n React.useEffect(() => {\n if (!props.details.loadingCameraDevice) {\n if (!props.details.device || (paramsId !== currentId)) {\n props.initialize(props.match.params.deviceId);\n }\n }\n });\n // if patch action for CST just completed, re-load the current device \n React.useEffect(() => {\n (!patchingCloudStreamTarget)\n && loadCameraDevice(matchDeviceId);\n }, [patchingCloudStreamTarget, loadCameraDevice, matchDeviceId]);\n\n /**************************************************************************\n PRIMARY RENDER \n *************************************************************************/\n //if initializing isnt finished\n if (props.details.loadingCameraDevice || paramsId !== currentId) {\n return (\n
    \n \n
    \n );\n }\n else if (\n (!props.details.device && !props.details.loadingCameraDevice) ||\n (!props.details.logs && !props.details.loadingLogs)\n )\n {\n return (\n
    \n \n No Camera Device Loaded\n \n
    \n );\n }\n //if initializing finished successfully, render the StreamCreationPage\n else return (\n \n );\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(StreamCreationWrapper));","//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"../..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../../components/template/authentication/oidcConfig\";\n//types\nimport * as TYPES from \"./types\";\nimport { LOAD_MESSAGES_FAILURE } from \"../dashboard/types\";\n//models\nimport { IATAldotMessage } from \"@algo/network-manager/models/v3\";\nimport { \n IAldotMessageNetworkManager, AldotMessageNetworkManager, IProcessedResponse \n} from \"@algo/network-manager/managers/v3\";\n//constants\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../api-version-constants\";\nimport moment from \"moment\";\n\ndeclare var __API_URL__: string;\nconst apiUrlMessage: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).aldotMessages}`;\n\n/*\nLoad Message\n*/\n\nfunction loadMessageBegin(): TYPES.MessageEditorTypes {\n return {\n type: TYPES.LOAD_MESSAGE_BEGIN,\n payload: {} as TYPES.MessageEditorPayload\n };\n}\n\nfunction loadMessageSuccess(response: IProcessedResponse): TYPES.MessageEditorTypes {\n\n let payload: TYPES.MessageEditorPayload = \n response.data\n ? { message: response.data, response}\n : { response }\n\n return {\n type: TYPES.LOAD_MESSAGE_SUCCESS,\n payload: payload as TYPES.MessageEditorPayload\n };\n}\n\nfunction loadMessageFailure(error: Error): TYPES.MessageEditorTypes {\n return {\n type: LOAD_MESSAGES_FAILURE,\n payload: {\n error: error\n } as TYPES.MessageEditorPayload\n }\n}\n\nexport let loadMessage = (\n id: number\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().messageEditor.initializing) {\n dispatch(loadMessageBegin());\n\n let manager: IAldotMessageNetworkManager = \n new AldotMessageNetworkManager(apiUrlMessage);\n \n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.getById(\n getState().messageEditor.lastMessageResponse, \n {id}\n )\n .then(\n (response: IProcessedResponse) => {\n if (response.error)\n dispatch(loadMessageFailure(response.error))\n else \n dispatch(loadMessageSuccess(response))\n }\n ).catch(\n (err: Error) =>\n dispatch(loadMessageFailure(err))\n )\n }\n ).catch(\n (err: Error) => \n dispatch(loadMessageFailure(err))\n )\n }\n}\n\n/*\nSave Message\n*/\n\nfunction saveMessageBegin(): TYPES.MessageEditorTypes {\n return {\n type: TYPES.SAVE_MESSAGE_BEGIN,\n payload: {} as TYPES.MessageEditorPayload\n };\n}\n\nfunction saveMessageSuccess(response: IProcessedResponse): TYPES.MessageEditorTypes {\n return {\n type: TYPES.SAVE_MESSAGE_SUCCESS,\n payload: {\n message: response.data,\n response\n } as TYPES.MessageEditorPayload\n };\n}\n\nfunction saveMessageFailure(error: Error): TYPES.MessageEditorTypes {\n return {\n type: TYPES.SAVE_MESSAGE_FAILURE,\n payload: {\n error: error\n } as TYPES.MessageEditorPayload\n };\n}\n\nexport let saveMessage = (\n message: IATAldotMessage\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().messageEditor.savingMessage) {\n dispatch(saveMessageBegin());\n\n let manager: IAldotMessageNetworkManager = \n new AldotMessageNetworkManager(apiUrlMessage);\n\n console.log(message);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.save({\n message: {\n ...message, \n start: moment(message.start) as any,\n end: moment(message.end) as any\n }\n })\n .then(\n (response: IProcessedResponse) =>\n dispatch(saveMessageSuccess(response))\n ).catch(\n (err: Error) => \n dispatch(saveMessageFailure(err))\n )\n }\n ).catch(\n (err: Error) => \n dispatch(saveMessageFailure(err))\n )\n }\n}\n\n/*\nClear Message Editor Error\n*/\n\nfunction clearMessageEditorErrorState(\n\n): TYPES.MessageEditorTypes {\n return {\n type: TYPES.CLEAR_MESSAGE_EDITOR_ERROR,\n payload: {} as TYPES.MessageEditorPayload\n };\n}\n\nexport let clearMessageEditorError = (\n\n): ThunkAction> => async (dispatch, getState) => {\n if (getState().messageEditor.error !== null) {\n dispatch(clearMessageEditorErrorState());\n }\n}\n\n/*\nUninitialize Message Editor\n*/\n\nfunction uninitializeMessageEditorState(): TYPES.MessageEditorTypes {\n return {\n type: TYPES.UNINITIALIZE_MESSAGE_EDITOR,\n payload: {} as TYPES.MessageEditorPayload\n };\n}\n\nexport let uninitializeMessageEditor = (\n\n): ThunkAction> => async dispatch => {\n dispatch(uninitializeMessageEditorState());\n}","// libraries\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\nimport { isMomentEventValue } from '../../../utils/typeCheckers';\n// interfaces & models\n// needed to make Datetime component work\nimport 'moment-timezone';\nimport { Moment } from 'moment';\nimport Select from 'react-select';\nimport reactSelectStyles from '../../../utils/reactSelectStyles';\nimport { \n ATAldotMessage, EATAudience, IATAldotMessage \n} from '@algo/network-manager/models/v3';\n// components\nimport Datetime from 'react-datetime';\nimport Content from '../../base/layout/Content';\nimport Loading from '../Loading';\n// store\nimport {\n loadMessage, uninitializeMessageEditor, saveMessage\n} from '../../../store/message/editor/actions';\nimport { MessageEditorState } from '../../../store/message/editor/types';\nimport { AppState } from '../../../store';\n// constants\nimport * as MESSAGE_CONS from '../../../utils/AppConstants';\nimport moment from 'moment';\nimport { ReactSelectStringKeyListItem } from '../../../models/ReactSelectListItems';\n\ninterface StateProps { \n editor: MessageEditorState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n editor: state.messageEditor\n };\n};\n\ninterface DispatchProps {\n initialize: typeof loadMessage;\n save: typeof saveMessage;\n uninitialize: typeof uninitializeMessageEditor;\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n initialize: loadMessage,\n save: saveMessage,\n uninitialize: uninitializeMessageEditor\n }, dispatch);\n};\n\ntype MessageEditorPageProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface MessageEditorPageState {\n messageId: number;\n message: IATAldotMessage;\n selectedAudienceOptions: ReactSelectStringKeyListItem[]\n}\n\nclass MessageEditor extends React.Component \n{\n constructor(props: Readonly) {\n super(props);\n\n this.state = {\n messageId: ( this.props.match.params.messageId ) \n ? this.props.match.params.messageId \n : MESSAGE_CONS.MESSAGE_DEFAULT_ID,\n message: new ATAldotMessage()\n } as MessageEditorPageState;\n }\n\n componentDidMount() {\n if (this.state.messageId !== MESSAGE_CONS.MESSAGE_DEFAULT_ID) {\n this.props.initialize(this.state.messageId);\n }\n }\n\n componentDidUpdate(prevProps: any, prevState: any, snapshot: any) {\n\n if (\n (this.props.editor.initializing !== prevProps.editor.initializing) && \n !this.props.editor.initializing\n ) {\n this.setState((prevState, props) => {\n return {\n message: props.editor.message,\n selectedAudienceOptions: props.editor.message.audiences.map((aud: EATAudience) => \n {\n return {\n value: aud,\n label: aud\n } as ReactSelectStringKeyListItem;\n })\n };\n });\n }\n\n if (\n ( this.props.editor.savingMessage !== prevProps.editor.savingMessage ) && \n !this.props.editor.savingMessage &&\n ( this.props.editor.error === null )\n ) this.props.history.replace(`/message/${this.props.editor.message.id}`);\n\n }\n\n setFormItemValue = (\n property: string, \n event: React.ChangeEvent | React.ChangeEvent\n ): void => {\n\n event.preventDefault();\n\n let currentValue = event.currentTarget.value;\n\n this.setState((state, props) => {\n var updatedMessage = state.message;\n\n switch (property) {\n case MESSAGE_CONS.MESSAGE_TITLE:\n updatedMessage.title = currentValue;\n break;\n case MESSAGE_CONS.MESSAGE_BODY:\n updatedMessage.body = currentValue;\n break;\n default:\n break;\n }\n\n return {\n ...state,\n message: updatedMessage\n };\n });\n }\n\n setMomentFormItemValue = (\n property: string,\n event: string | Moment\n ): void => {\n\n if (isMomentEventValue(event)) {\n let currentValue = event as Moment;\n\n this.setState((state, props) => {\n var updatedMessage = state.message;\n \n switch (property) {\n case MESSAGE_CONS.MESSAGE_DATE_START:\n updatedMessage.start = \n currentValue.toString();\n break;\n case MESSAGE_CONS.MESSAGE_DATE_END:\n updatedMessage.end = \n currentValue.toString();\n break;\n }\n \n return {\n ...state,\n message: updatedMessage\n };\n });\n }\n }\n\n setReactSelectFormItemValue = (property: string, event: any): void => {\n this.setState((state, props) => {\n var updatedMessage = this.state.message;\n switch (property) {\n case MESSAGE_CONS.MESSAGE_AUDIENCES:\n let audienceValues = event as ReactSelectStringKeyListItem[];\n\n if (audienceValues !== null) {\n updatedMessage.audiences = audienceValues\n .map((item: ReactSelectStringKeyListItem) => {\n return item.value as EATAudience;\n });\n }\n\n return {\n ...state,\n message: updatedMessage,\n selectedAudienceOptions: audienceValues\n };\n default:\n break;\n }\n });\n }\n\n back = (): void => {\n this.props.history.goBack();\n }\n\n submit = (\n event?: React.FormEvent\n ): void => {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.props.editor.savingMessage) {\n this.props.save(this.state.message);\n }\n }\n\n render() {\n let { editor } = this.props;\n\n let content = ( editor.initializing ) \n ? \n : (\n
    \n

    Message Form

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n

    \n {(MESSAGE_CONS.isNewMode(\n this.state.message?.id, \n MESSAGE_CONS.MESSAGE_DEFAULT_ID\n )) \n ? `New Message` \n : `Edit Message`}\n

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    Message Information

    \n
    \n \n
    \n \n this.setFormItemValue(MESSAGE_CONS.MESSAGE_TITLE, event)\n }\n />\n
    \n
    \n
    \n \n
    \n \n this.setFormItemValue(MESSAGE_CONS.MESSAGE_BODY, event)\n }\n />\n
    \n
    \n
    \n \n
    \n \n this.setMomentFormItemValue(MESSAGE_CONS.MESSAGE_DATE_START, event)\n }\n />\n
    \n
    \n
    \n \n
    \n \n this.setMomentFormItemValue(MESSAGE_CONS.MESSAGE_DATE_END, event)\n }\n />\n
    \n
    \n
    \n \n
    \n this.setReactSelectFormItemValue(MESSAGE_CONS.MESSAGE_AUDIENCES, event)}\n />\n
    \n
    \n
    \n \n \n \n  Save\n \n
    \n
    \n
    \n
    \n
    \n );\n\n return (\n
    \n
    \n \n {content}\n \n
    \n
    \n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(MessageEditor)); ","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n// components\nimport Content from '../../base/layout/Content';\nimport RoleTableView from \"./RoleTableView\";\n// store\nimport { AppState } from \"../../../store\";\n\ninterface StateProps { \n}\n\nfunction mapStateToProps(state: AppState) {\n return { \n };\n}\n\ntype RoleListProps = StateProps & RouteComponentProps;\n\nclass RoleList extends React.Component {\n render() {\n return (\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n)(withRouter(RoleList));","//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"../..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../../components/template/authentication/oidcConfig\";\n//types\nimport * as TYPES from \"./types\";\n//models\nimport { ATFacility } from \"@algo/network-manager/models/v3\";\nimport { \n FacilityNetworkManager, IFacilityNetworkManager, IProcessedResponse\n} from \"@algo/network-manager/managers/v3\";\n//constants\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlFacility: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).facilities}`;\n\n/*\nLoad Facility\n*/\n\nfunction loadFacilityBegin(): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.LOAD_FACILITY_BEGIN,\n payload: {} as TYPES.FacilityEditorPayload\n };\n}\n\nfunction loadFacilitySuccess(\n response: IProcessedResponse\n): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.LOAD_FACILITY_SUCCESS,\n payload: {\n facility: response.data,\n error: response.error,\n response\n } as TYPES.FacilityEditorPayload\n };\n}\n\nfunction loadFacilityFailure(\n error: Error\n): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.LOAD_FACILITY_FAILURE,\n payload: {\n error: error\n } as TYPES.FacilityEditorPayload\n }\n}\n\nexport let loadFacility = (\n id: number\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().facilityEditor.initializing) {\n dispatch(loadFacilityBegin());\n\n let manager: IFacilityNetworkManager =\n new FacilityNetworkManager(apiUrlFacility);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.getById(getState().facilityEditor.lastResponse, {id})\n .then(\n (response: IProcessedResponse) => {\n if (response.error) \n dispatch(loadFacilityFailure(response.error))\n else \n dispatch(loadFacilitySuccess(response))\n }\n ).catch(\n (error: Error) => \n dispatch(loadFacilityFailure(error))\n )\n }\n ).catch(\n (error: Error) => dispatch(loadFacilityFailure(error))\n )\n }\n}\n\nfunction cleanupFacilityBegin(): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.CLEANUP_FACILITY,\n payload: {\n facility: new ATFacility()\n } as TYPES.FacilityEditorPayload\n }\n}\n\nexport let cleanupFacility = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n dispatch(cleanupFacilityBegin());\n};\n\n/*\nSave Facility\n*/\n\nfunction saveFacilityBegin(): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.SAVE_FACILITY_BEGIN,\n payload: {} as TYPES.FacilityEditorPayload\n };\n}\n\nfunction saveFacilitySuccess(response: IProcessedResponse): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.SAVE_FACILITY_SUCCESS,\n payload: {\n facility: response.data,\n error: response.error,\n } as TYPES.FacilityEditorPayload\n };\n}\n\nfunction saveFacilityFailure(error: Error): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.SAVE_FACILITY_FAILURE,\n payload: {\n error: error\n } as TYPES.FacilityEditorPayload\n };\n}\n\nexport let saveFacility = (\n facility: ATFacility\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().facilityEditor.savingFacility) {\n dispatch(saveFacilityBegin());\n\n let manager: IFacilityNetworkManager =\n new FacilityNetworkManager(apiUrlFacility);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.save({facility})\n .then(\n (response: IProcessedResponse) => {\n if (response.error) dispatch(saveFacilityFailure(response.error))\n else dispatch(saveFacilitySuccess(response))\n }\n ).catch(\n (error: Error) => dispatch(loadFacilityFailure(error))\n )\n }\n ).catch(\n (error: Error) => dispatch(loadFacilityFailure(error))\n )\n }\n}\n\n/*\nClear Facility Editor Error\n*/\n\nfunction clearFacilityEditorErrorState(): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.CLEAR_FACILITY_EDITOR_ERROR,\n payload: {} as TYPES.FacilityEditorPayload\n };\n}\n\nexport let clearFacilityEditorError = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n if (getState().facilityEditor.error !== null) {\n dispatch(clearFacilityEditorErrorState());\n }\n}\n\n/*\nUninitialize Facility Editor\n*/\n\nfunction uninitializeFacilityEditorState(): TYPES.FacilityEditorTypes {\n return {\n type: TYPES.UNINITIALIZE_FACILITY_EDITOR,\n payload: {} as TYPES.FacilityEditorPayload\n };\n}\n\nexport let uninitializeFacilityEditor = (\n //\n): ThunkAction> => async dispatch => {\n dispatch(uninitializeFacilityEditorState());\n}","// libraries\n// @ts-ignore\nimport { whenLargeMax } from \"@caps-mobile/algo-theme/breakpoints\";\nimport { absoluteArrayBuilder, flexSmart } from \"@caps-mobile/styled-lib\";\nimport styled from \"styled-components\";\n\nexport const StyledFacilityEditor = styled.div`\n width: 100%;\n height: 100%;\n\n position: relative;\n\n padding: .75rem 0 .75rem 0;\n \n ${flexSmart(\"center center\")}\n flex-direction: column;\n`;\n\nexport const ContentRow = styled.div`\n\n width: 100%;\n height: calc(100% - 41px);\n\n padding: 4px 4px 0 4px;\n\n box-sizing: border-box;\n\n ${flexSmart(\"flex-start center\")}\n flex-direction: column;\n overflow: hidden;\n`;\n\nexport const TitleContent = styled.div`\n width: 100%;\n\n padding: 4px 12.5% 4px 12.5%;\n`;\n\nexport const DisabledOverlay = styled.div`\n ${absoluteArrayBuilder([\"8.5%\", \"\", \"\", 0])}\n z-index: 99; \n\n width: 100%;\n height: 100%;\n\n ${flexSmart(\"center center\")}\n flex-direction: column;\n\n border-radius: 4px;\n\n font-size: 2.5rem;\n text-align: center;\n font-weight: bold;\n color: #1e824c;\n\n background-color: rgba(0,0,0,0.15);\n\n overflow: hidden;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n`;\n\nexport const FormsContent = styled.div`\n width: 100%;\n height: 100%;\n\n box-sizing: border-box;\n\n padding-top: 4px;\n padding-bottom: 4px;\n padding-right: 12.5%;\n padding-left: 12.5%;\n\n ${flexSmart(\"space-between flex-start\")}\n overflow: auto;\n\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n\n ${whenLargeMax(`\n flex-direction: column;\n `)}\n`;\n\nexport const LeftColumn = styled.div`\n width: 45%;\n height: auto;\n\n display: flex;\n flex-direction: column;\n\n ${whenLargeMax(`\n width: 100%;\n height: auto;\n `)}\n`;\n\nexport const RightColumn = styled.div`\n width: 45%;\n height: auto;\n\n display: flex;\n flex-direction: column;\n\n ${whenLargeMax(`\n width: 100%;\n height: auto;\n `)}\n`;\n\nexport const FooterRow = styled.div`\n height: calc(42px + .75rem);\n width: 100%;\n\n border-top: 1px solid rgba(0,0,0,0.1);\n\n ${flexSmart(\"space-evenly end\")}\n`;","// libraries\nimport styled from \"styled-components\";\nimport { flexSmart } from \"@caps-mobile/styled-lib\";\n\nexport const StyledEditorTitleRow = styled.div`\n\n height: 48px;\n width: 100%;\n\n padding: .25rem 1.5rem .25rem 1.5rem;\n\n ${flexSmart(\"center center\")}\n\n border-radius: 4px;\n box-shadow: 2px 4px 5px 0px #00000040;\n`;\n\nexport const SideSection = styled.div`\n width: 33%;\n height: 100%;\n ${flexSmart(\"flex-start center\")}\n`;\n\nexport const StyledTitle = styled.div`\n width: 33%;\n text-align: center;\n font-weight: bold;\n font-size: 1.5rem;\n\n color: #1e824c; \n`;","// libraries\nimport * as React from \"react\";\n// styles\nimport * as SC from \"./Styled\";\n\nexport type IProps = {\n title: string;\n action: (...args: any[]) => any;\n} & React.HTMLAttributes;\n\nexport const EditorTitleRow: React.FC = (props) => {\n\n return (\n \n \n \n \n \n {props.title}\n\n \n \n )\n};","// libraries\nimport * as React from \"react\";\nimport { getEnumStrings } from \"@caps-mobile/common-lib\";\n// types & models\nimport {\n ATFacility, EATFacilityType, EATKioskSizeClass\n} from \"@algo/network-manager/models/v3\";\n// components\nimport { FormCard, FormTextInputLabeled, FormSelectLabeled } from \"@caps-mobile/forms\";\n// constants\nimport { FACILITY_CONSTANTS } from \"../../../../../utils/AppConstants\";\nconst CONST = FACILITY_CONSTANTS.formInputStyles;\nconst facilityTypeStrings = getEnumStrings(EATFacilityType);\nconst facilitySizeClassStrings = getEnumStrings(EATKioskSizeClass);\n\nexport type IGeneralInformationProps = {\n formConfig: any;\n facilityObject: any;\n updateFacility: any;\n};\n\nexport const GeneralInformation: React.FC = (props) => {\n\n const { formConfig, facilityObject, updateFacility } = props;\n\n return(\n \n {\n facilityObject.name = newValue.currentTarget.value;\n updateFacility(new ATFacility(facilityObject));\n }\n }\n />\n {\n facilityObject.code = newValue.currentTarget.value;\n updateFacility(new ATFacility(facilityObject));\n }\n }\n />\n {\n facilityObject.type = \n EATFacilityType[facilityTypeStrings[newIndex] as keyof typeof EATFacilityType];\n updateFacility(new ATFacility(facilityObject))\n }\n }\n />\n {\n facilityObject.kioskSizeClass = \n EATKioskSizeClass[facilitySizeClassStrings[newIndex] as keyof typeof EATKioskSizeClass];\n updateFacility(new ATFacility(facilityObject))\n }\n }\n />\n \n );\n};\n\nexport default GeneralInformation;","// libraries\nimport styled from \"styled-components\";\n\nexport const SelectAndInputWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n`;","// libraries\nimport * as React from \"react\";\n// styles\nimport * as SC from \"./Styled\";\n// models & interfaces\nimport {\n ATFacility, EFacilityPropertyType \n}from \"@algo/network-manager/models/v3\";\n// components\nimport { \n FormSelect, FormDynamicRow, FormTextInput \n} from \"@caps-mobile/forms\";\n\nexport type IDynamicSelectAndInput = {\n facilityObject: ATFacility,\n type: string,\n optionsList: any,\n selectVal: (rowObject: any) => any,\n inputVal: (rowObject: any) => any,\n updateSelectVal: (rowObject: any, newValue: any) => any,\n updateInputVal: (rowObject: any, newValue: any) => any,\n updateFacilityObject: (facilityObject: ATFacility) => any;\n};\n\nexport const DynamicSelectAndInput: React.FC = (props) => {\n\n const { \n facilityObject, type, optionsList, \n selectVal, inputVal, updateFacilityObject ,\n updateSelectVal, updateInputVal\n } = props;\n\n const selectOptions: string[] = optionsList;\n\n if (!facilityObject || !type || !facilityObject[type as keyof ATFacility]) return null;\n\n return (facilityObject[type as keyof ATFacility] as any)?.map(\n (rowObject: any, mapIndex: number) => {\n return (\n {\n if (facilityObject[type as keyof ATFacility]){\n facilityObject.removeListProperty(\n EFacilityPropertyType[type as keyof typeof EFacilityPropertyType], \n mapIndex\n );\n updateFacilityObject(new ATFacility(facilityObject));\n }\n }}\n >\n \n {\n facilityObject.updateListProperty(\n EFacilityPropertyType[type as keyof typeof EFacilityPropertyType], \n mapIndex,\n updateSelectVal(rowObject, newIndex)\n );\n updateFacilityObject(new ATFacility(facilityObject));\n }}\n />\n {\n facilityObject.updateListProperty(\n EFacilityPropertyType[type as keyof typeof EFacilityPropertyType], \n mapIndex,\n updateInputVal(rowObject, newValue.currentTarget.value)\n );\n updateFacilityObject(new ATFacility(facilityObject));\n }}\n />\n \n \n )\n }\n )\n};\n\nexport const findSelectedIndecies = (\n facilityObject: ATFacility, \n propertyName: string, \n propertyList: string[]\n) => {\n\n // disallow uons\n if (\n !facilityObject || \n !propertyName || \n !propertyList || \n propertyList.length === 0\n ) return [];\n\n let selectedIndecies: number[] = [];\n\n // get the list of objects of the given property\n let objectsList: any = facilityObject[propertyName as keyof ATFacility];\n // create a list of just the type values of these objects\n let typesList: string[] = objectsList.map(\n (object: any) => {\n return object.type || null\n }\n )\n\n if (typesList && typesList.length > 0){\n for (let i = 0; i < propertyList.length; i++){\n if (typesList.includes(propertyList[i])){\n selectedIndecies.push(i);\n }\n }\n }\n\n return selectedIndecies;\n}","// libraries\nimport * as React from \"react\";\nimport { getEnumStrings } from \"@caps-mobile/common-lib\";\nimport { findSelectedIndecies } from \"../dynamic-select-and-input/DynamicSelectAndInput\";\n// types & models\nimport * as FTypes from \"@algo/network-manager/models/v3\";\n// components\nimport { FormCard} from \"@caps-mobile/forms\";\nimport { DynamicSelectAndInput } from \"../dynamic-select-and-input/DynamicSelectAndInput\";\n// constants\nconst parkingTypeStrings = getEnumStrings(FTypes.EATParkingType);\nconst amenityTypeStrings = getEnumStrings(FTypes.EATAmenityType);\nconst phoneTypeStrings = getEnumStrings(FTypes.EATPhoneType);\n\nexport type ISelectAndInputFormProps = {\n formConfig: any;\n facilityObject: any;\n type: string;\n updateFacility: any;\n optionsList: any;\n selectVal: any;\n inputVal: any;\n updateSelectVal: any;\n updateInputVal: any;\n} & React.HTMLAttributes;\n\nexport const SelectAndInputForm: React.FC = (props) => {\n\n const { \n formConfig, facilityObject, type, \n updateFacility, style, \n optionsList, selectVal, inputVal,\n updateSelectVal, updateInputVal\n } = props;\n\n return(\n \n \n \n );\n};\n\nexport type IParkingProps = {\n formConfig: any;\n facilityObject: any;\n updateFacility: any;\n} & React.HTMLAttributes;\n\nexport const ParkingSpacesForm: React.FC = (props) => {\n\n const { formConfig, facilityObject, updateFacility, style } = props;\n\n return(\n { \n return ( rowObject.type)\n ? parkingTypeStrings.indexOf(rowObject.type)\n : findNextUnselected(facilityObject, \"parkingSpaces\", parkingTypeStrings);\n }\n }\n inputVal={(rowObject: FTypes.ATFacilityParking) => { return rowObject.total}}\n updateSelectVal={(rowObject: FTypes.ATFacilityParking, newIndex: any) => {\n return { \n ...rowObject, \n type: FTypes.EATParkingType[\n parkingTypeStrings[newIndex] as keyof typeof FTypes.EATParkingType\n ]\n }\n }}\n updateInputVal={(rowObject: FTypes.ATFacilityParking, newValue: any) => {\n return { ...rowObject, total: parseInt(newValue)}}}\n />\n );\n};\n\nexport type IAmenitiesProps = {\n formConfig: any;\n facilityObject: any;\n updateFacility: any;\n} & React.HTMLAttributes;\n\nexport const AmenitiesForm: React.FC = (props) => {\n\n const { formConfig, facilityObject, updateFacility, style } = props;\n\n return(\n { \n return ( rowObject.type)\n ? amenityTypeStrings.indexOf(rowObject.type)\n : findNextUnselected(facilityObject, \"amenities\", amenityTypeStrings);\n }\n }\n inputVal={(rowObject: FTypes.ATFacilityAmenity) => { return rowObject.description}}\n updateSelectVal={\n (rowObject: FTypes.ATFacilityAmenity, newIndex: any) => {\n return { \n ...rowObject, \n type: FTypes.EATAmenityType[\n amenityTypeStrings[newIndex] as keyof typeof FTypes.EATAmenityType\n ]\n }\n }\n }\n updateInputVal={(rowObject: FTypes.ATFacilityAmenity, newValue: any) => {\n return { ...rowObject, description: newValue}}}\n />\n );\n};\n\nexport type IPhonesProps = {\n formConfig: any;\n facilityObject: any;\n updateFacility: any;\n} & React.HTMLAttributes;\n\nexport const PhonesForm: React.FC = (props) => {\n\n const { formConfig, facilityObject, updateFacility, style } = props;\n\n return(\n { \n return ( rowObject.type)\n ? phoneTypeStrings.indexOf(rowObject.type)\n : findNextUnselected(facilityObject, \"phones\", phoneTypeStrings);\n }\n }\n inputVal={(rowObject: FTypes.ATFacilityPhone) => { return rowObject.number}}\n updateSelectVal={\n (rowObject: FTypes.ATFacilityPhone, newIndex: any) => {\n return { \n ...rowObject, \n type: FTypes.EATPhoneType[\n phoneTypeStrings[newIndex] as keyof typeof FTypes.EATPhoneType\n ]\n }\n }\n }\n updateInputVal={(rowObject: FTypes.ATFacilityPhone, newValue: any) => {\n return { ...rowObject, number: newValue}}}\n />\n );\n};\n\nexport default SelectAndInputForm;\n\nexport const findNextUnselected = (\n facilityObject: FTypes.ATFacility, \n propertyName: string, \n propertyList: string[]\n): number | null => {\n\n let selectedIndecies: number[] = \n findSelectedIndecies(facilityObject, propertyName, propertyList);\n\n for (let i = 0; i < propertyList.length; i++){\n if (!selectedIndecies.includes(i))\n return i;\n }\n\n return null;\n}","// libraries\nimport * as React from \"react\";\n// types & models\nimport {\n ATFacility, EFacilityPropertyType \n}from \"@algo/network-manager/models/v3\";\n// components\nimport { FormDynamicRow } from \"@caps-mobile/forms\";\n\nexport type IDyncamicEditDelete = {\n facilityObject: ATFacility;\n type: string;\n displayString: (rowObject: any) => any;\n editClick: (type: EFacilityPropertyType, mapIndex: number) => any;\n updateFacilityObject: (facilityObject: ATFacility) => any;\n};\n\nexport const DynamicEditDelete: React.FC = (props) => {\n\n const { facilityObject, type, displayString, editClick, updateFacilityObject } = props;\n\n if (!facilityObject || !type || !facilityObject[type as keyof ATFacility]) return null;\n\n return (facilityObject[type as keyof ATFacility] as any)?.map(\n (rowObject: any, mapIndex: number) => {\n return (\n {\n if (facilityObject[type as keyof ATFacility]){\n facilityObject.removeListProperty(\n EFacilityPropertyType[type as keyof typeof EFacilityPropertyType], \n mapIndex\n );\n updateFacilityObject(new ATFacility(facilityObject));\n }\n }}\n editClick={() => {\n editClick(EFacilityPropertyType[type as keyof typeof EFacilityPropertyType], mapIndex);\n }}\n >\n {displayString(rowObject)}\n \n )\n }\n )\n};\n\nexport default DynamicEditDelete;","// libraries\nimport * as React from \"react\";\nimport { fixedFloat } from \"@caps-mobile/common-lib\";\n// types & models\nimport { \n IATLocation, ATFacilityRoute, ATTravelTime, \n IATFacilityMapSetting, EATDirectionAbbrev \n} from \"@algo/network-manager/models/v3\";\n// components\nimport { FormCard } from \"@caps-mobile/forms\";\nimport { DynamicEditDelete } from \"../dynamic-edit-delete/DynamicEditDelete\";\nimport { FormDynamicRow } from \"@caps-mobile/forms\";\nimport { InfoBanner } from \"@caps-mobile/banner\";\n\nexport type IStringAndModalFormProps = {\n formConfig: any;\n facilityObject: any;\n type: string;\n displayString: any;\n editClick: any;\n updateFacility: any;\n} & React.HTMLAttributes;\n\nexport const StringAndModalForm: React.FC = (props) => {\n\n const { \n formConfig, facilityObject, type, style, \n displayString, editClick, updateFacility,\n } = props;\n\n return(\n \n \n \n );\n};\n\nexport type ILocationsProps = {\n formConfig: any;\n facilityObject: any;\n editClick: any;\n updateFacility: any;\n} & React.HTMLAttributes;\n\nexport const LocationsForm: React.FC = (props) => {\n\n const { \n formConfig, facilityObject, style, \n editClick, updateFacility, \n } = props;\n\n return(\n { \n return `(${fixedFloat(rowObject.latitude, 8)}, ${fixedFloat(rowObject.longitude, 8)})` + \n ` @ ${rowObject.displayRouteDesignator}` +\n ` ${EATDirectionAbbrev[rowObject.direction]}`;\n }\n }\n />\n );\n};\n\nexport type IMapSettingsProps = {\n formConfig: any;\n facilityObject: any;\n editClick: any;\n updateFacility: any;\n} & React.HTMLAttributes;\n\nexport const MapSettingsForm: React.FC = (props) => {\n\n const { \n formConfig, facilityObject, style, \n editClick, updateFacility, \n } = props;\n\n return(\n { \n return `(${fixedFloat(rowObject.centerLatitude, 8)}, ${fixedFloat(rowObject.centerLongitude, 8)})` + \n ` @ ${rowObject.zoomLevel} Zoom Level`;\n }\n }\n />\n );\n};\n\nexport type IRoutesOfInterestProps = {\n formConfig: any;\n facilityObject: any;\n editClick: any;\n updateFacility: any;\n} & React.HTMLAttributes;\n\nexport const RoutesOfInterestForm: React.FC = (props) => {\n\n const { \n formConfig, facilityObject, style, \n editClick, updateFacility, \n } = props;\n\n return(\n { \n return `${rowObject.place.name} ${EATDirectionAbbrev[rowObject.direction]}` + \n ` from MP ${rowObject.startLinearReference}` + ` to MP ${rowObject.endLinearReference}`;\n }\n }\n />\n );\n};\n\nexport type ITravelTimesProps = {\n formConfig: any;\n facilityObject: any;\n} & React.HTMLAttributes;\n\nexport const TravelTimesForm: React.FC = (props) => {\n\n const { \n formConfig, facilityObject, style, \n } = props;\n\n return(\n \n \n \n {\"Routes are editable \"} only {\" in the ATMS\"}\n \n \n {\n facilityObject.travelTimes?.map(\n (rowObject: ATTravelTime, mapIndex: number) => {\n\n let displayString: string = \n `${rowObject.name}` + \n ` (${rowObject.estimatedTimeMinutes} minutes, ` +\n `${rowObject.averageSpeedMph} mph)`;\n \n return (\n \n {displayString}\n \n )\n }\n )\n }\n \n );\n};\n\nexport default StringAndModalForm;","// libraries\nimport styled from \"styled-components\";\nimport { flexSmart, absoluteBuilder } from \"@caps-mobile/styled-lib\";\n\nexport const StyledFullPageModal = styled.div`\n ${absoluteBuilder(null, [0, \"\", \"\", 0])}\n z-index: 999;\n\n height: 100%;\n width: 100%;\n\n ${flexSmart(\"center center\")}\n\n background-color: rgba(0,0,0, 0.65);\n`;\n\nexport const CloseButtonWrapper = styled.div`\n ${absoluteBuilder(null, [\"25px\", \"25px\", \"\", \"\"])}\n z-index: 1000;\n\n height: 32px;\n width: auto;\n\n ${flexSmart(\"center center\")}\n`;\n\nexport const CloseButton = styled.button`\n width: auto;\n height: 100%;\n\n ${flexSmart(\"center center\")}\n\n border: thin solid rgba(255,255,255, 0.5);\n border-radius: 4px;\n\n color: rgba(0,0,0,0.75);\n background-color: rgba(255,255,255, 1);\n`;\n","// libraries\nimport * as React from \"react\";\n// styles\nimport * as SC from \"./Styled\";\n\nexport type IFullPageModal = {\n showCloseButton?: boolean;\n closeCallback?: () => any;\n} & React.HTMLAttributes;\n\nconst iconStyle = {\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\"\n}\n\nexport const FullPageModal: React.FC = (props) => {\n\n return (\n \n\n { props.showCloseButton &&\n \n props.closeCallback && props.closeCallback()}\n >\n \n \n \n }\n\n {props.children}\n\n \n );\n};\n\nexport default FullPageModal;","// libraries\nimport * as React from \"react\";\n// types & models\nimport { IATPlace } from \"@algo/network-manager/models/v3\";\n// constants\ndeclare var __API_URL__: string;\nconst API_VERSION: string = \"v3.0\";\n\nexport const useGetRoadways = () => {\n\n const [roadways, setRoadways] = React.useState([]);\n const [loading, setLoading] = React.useState(false);\n const [loaded, setLoaded] = React.useState(false);\n const [error, setError] = React.useState(null);\n\n React.useEffect(\n () => {\n\n setLoading(true);\n fetch(`${__API_URL__}/${API_VERSION}/Places?type=Interstate&type=USHighway&type=StateHighway`)\n .then( response => response.json())\n .then( (data) => {\n setRoadways(filterInvalidRoads(data));\n setLoading(false);\n setLoaded(true);\n })\n .catch( (error) => {\n setLoading(false);\n setError(error);\n });\n\n // cleanup\n return () => {}\n }, []\n )\n\n return {roadways, loading, loaded, error};\n}\n\nconst filterInvalidRoads = (roadways: IATPlace[]) => {\n\n let filteredList: IATPlace[] = [];\n\n roadways.forEach(\n (roadway: IATPlace) => {\n if (roadway.name && roadway.name.charAt(roadway.name.length - 1) !== \"-\")\n filteredList.push(roadway);\n }\n )\n\n return filteredList;\n}","// libraries\nimport styled from \"styled-components\";\nimport { flexSmart } from \"@caps-mobile/styled-lib\";\n\nexport const StyledEditRoute = styled.div`\n\n height: 50%;\n width: 50%;\n\n padding: 1rem;\n\n background-color: ${ props => props.theme.colors[\"bg-primary\"][\"rgba\"]};\n border-radius: 4px;\n\n ${flexSmart(\"flex-start center\")}\n flex-direction: column; \n`;\n\nexport const StyledContent = styled.div`\n height: calc(100% - 41px);\n width: 100%;\n\n ${flexSmart(\"center center\")}\n flex-direction: column;\n`;\n\nexport const StyledFooter = styled.div`\n\n height: 41px;\n width: 100%;\n\n ${flexSmart(\"space-evenly center\")}\n`;\n\nexport const StyledLoadError = styled.div`\n\n ${flexSmart(\"center center\")}\n flex-direction: column;\n`;\n\n\nexport const StyledMarkerFormItemRow = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n -webkit-box-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n align-items: center;\n`;\n\nexport const StyledMarkerLabel = styled.label`\n width: 25%;\n margin-right: 12px;\n display: flex;\n flex-direction: row;\n -webkit-box-pack: end;\n justify-content: flex-end;\n -webkit-box-align: center;\n align-items: center;\n text-align: end;\n font-size: 14px;\n line-height: 17px;\n font-weight: 700;\n color: rgb(33, 37, 41);\n`;\n\nexport const StyledMarkerSelect = styled.div`\n width: calc(75% - 12px);\n`;","// libraries\nimport * as React from \"react\";\nimport { \n filterNaInt, getEnumStrings, searchObjectListByProperty \n} from \"@caps-mobile/common-lib\";\n// hooks\nimport { useGetRoadways } from \"./hooks\";\n// styles\nimport * as SC from \"./Styled\";\n// interfaces & models\nimport { \n ATFacilityRoute, EATDirection, EATKioskMarkerType, IATFacilityRoute, IATPlace \n} from \"@algo/network-manager/models/v3\";\n// components\nimport { \n FormButton, FormCard, FormTextInputLabeled, FormSelectLabeled \n} from \"@caps-mobile/forms\";\nimport Select from \"react-select\";\nimport reactSelectStyles from \"../../../../../utils/reactSelectStyles\";\nimport { ReactSelectStringKeyListItem } from \"../../../../../models/ReactSelectListItems\";\nimport { kMaxLength } from \"buffer\";\n\n// constants\nconst DIRECTIONS = [\"North\", \"South\", \"East\", \"West\"];\nconst MARKER_TYPES = [\n {\n value: \"TrafficEvent\",\n label: \"Traffic Event\"\n },\n {\n value: \"Facility\",\n label: \"Facility\"\n },\n {\n value: \"Camera\",\n label: \"Camera\"\n }\n] as ReactSelectStringKeyListItem[];\n\nconst directionStrings = getEnumStrings(EATDirection);\n\nconst determineDefaultDirection = (direction: EATDirection) => {\n\n if (direction === EATDirection.Unknown) return null;\n\n let defaultDirection: EATDirection = EATDirection.North;\n let directionIndex: number = directionStrings.indexOf(EATDirection[direction]);\n\n if (directionIndex < 4 && directionIndex >= 0)\n defaultDirection = direction;\n\n return EATDirection[defaultDirection];\n};\n\nconst determineDefaultMarkerTypes = (route: IATFacilityRoute) : ReactSelectStringKeyListItem[] => {\n if (route.markerTypes) {\n let defaultSelectValues : ReactSelectStringKeyListItem[] = [];\n\n (route.markerTypes as EATKioskMarkerType[]).forEach(element => {\n let foundType : ReactSelectStringKeyListItem | undefined = MARKER_TYPES.find(mt => mt.value === element);\n\n if (foundType) {\n defaultSelectValues.push(foundType);\n }\n });\n \n return defaultSelectValues;\n }\n\n return [];\n};\n\nexport type IEditRoute = {\n route: IATFacilityRoute;\n routeIndex: number;\n currentRoutes: IATFacilityRoute[];\n cancelCallback: () => any;\n saveCallback: (route: IATFacilityRoute, routeIndex: number) => any;\n} & React.HTMLAttributes;\n\n\nexport const EditRoute: React.FC = (props) => {\n\n const { route, routeIndex, currentRoutes } = props;\n\n const [placeValue, setPlaceValue] = \n React.useState(route.place);\n\n const [selectedPlaceIndex, setSelectedPlaceIndex] = \n React.useState(null);\n\n const [directionValue, setDirectionValue] = \n React.useState(determineDefaultDirection(route.direction));\n\n const [startValue, setStartValue] = \n React.useState(`${route.startLinearReference}`);\n\n const [endValue, setEndValue] = \n React.useState(`${route.endLinearReference}`);\n\n const [markerValues, setMarkerValues] = React.useState(determineDefaultMarkerTypes(route));\n\n const {roadways, loading, loaded, error } = useGetRoadways();\n\n const [roadwayStrings, setRoadwayStrings] = React.useState();\n\n const [disabledDirections, setDisabledDirections] = React.useState([]);\n\n React.useEffect(() => {\n if (roadways && roadways.length > 0){\n let roadwayStrings: string[] = roadways.map(\n (place: IATPlace, index: number) => {\n return place.name || \"\"\n }\n );\n\n let selectedIndex: number = \n searchObjectListByProperty(roadways, \"name\", (route?.place.name));\n\n setRoadwayStrings(roadwayStrings);\n setSelectedPlaceIndex(selectedIndex !== -1 ? selectedIndex : null);\n }\n }, [roadways]);\n\n /* React.useEffect(\n () => {\n disableDuplicateDirections();\n }, [placeValue]\n )\n\n const disableDuplicateDirections = () => {\n for (let i = 0; i < currentRoutes.length - 1; i++){\n if (currentRoutes[i].place.id === placeValue.id){\n disabledDirections.push(EATDirection[currentRoutes[i].direction]);\n }\n }\n\n setDisabledDirections([...disabledDirections]);\n }\n */\n const buildReturnValue = (): IATFacilityRoute => {\n return (\n new ATFacilityRoute({\n id: route.id,\n place: placeValue, \n direction: EATDirection[directionValue as keyof typeof EATDirection],\n startLinearReference: parseFloat(startValue) || 0, \n endLinearReference: parseFloat(endValue) || 0,\n markerTypes: markerValues.map(kvp => EATKioskMarkerType[kvp.value as keyof typeof EATKioskMarkerType])\n })\n )\n };\n\n return (\n \n\n \n { (!loaded && loading) &&\n
    \n Loading Places...\n
    \n }\n {\n (!loaded && !loading) &&\n \n Error! Failed to load roadways.\n Try refreshing the facility editor page.\n *If you have made other changes, you may want to save before reloading.*\n \n }\n { loaded &&\n \n { \n setPlaceValue(roadways[newIndex]);\n setSelectedPlaceIndex(newIndex);\n }}\n />\n {\n return DIRECTIONS.indexOf(direction);\n }\n )\n }\n selectedIndex={directionValue ? directionStrings.indexOf(directionValue) : null}\n callback={(newIndex: number) => {\n setDirectionValue(directionStrings[newIndex]);\n }}\n />\n setStartValue(filterNaInt(newValue.currentTarget.value))}\n />\n setEndValue(filterNaInt(newValue.currentTarget.value))}\n />\n\n\n \n \n Markers\n \n \n setMarkerValues([...event])}\n />\n \n \n \n \n \n }\n
    \n\n \n\n props.cancelCallback()} \n color={\"#DF3143\"} width={\"350px\"}>\n \n {\"Cancel\"}\n \n\n {\n props.saveCallback(buildReturnValue(), routeIndex);\n }\n } \n color={\"#1E824C\"} width={\"350px\"}>\n \n {\"Save\"}\n \n\n \n\n
    \n )\n};\n\nexport default EditRoute;\n\n","//libraries\nimport { nuon } from \"@caps-mobile/common-lib\";\n// interfaces & models\nimport { IATLocation, EATDirection, EATPlaceType } from \"@algo/network-manager/models/v3\";\n\n\nexport const buildReturnValue = (\n location: any, cityNameValue: string, countyNameValue: string,\n directionValue: any, markerCoords: any, mileMarkerValue: any, \n placeValue: any\n): IATLocation => {\n return (\n {\n ...location,\n city: cityNameValue || location.city,\n county: countyNameValue || location.county,\n latitude: markerCoords?.lat || location.latitude,\n longitude: markerCoords?.lng || location.longitude,\n direction: directionValue,\n linearReference: parseFloat(mileMarkerValue) || location.linearReference,\n routeDesignator: (placeValue?.name) ? placeValue.name : location.displayRouteDesignator,\n displayRouteDesignator: (placeValue?.name) ? placeValue.name : location.displayRouteDesignator,\n routeDesignatorType: (placeValue?.type) ? placeValue.type : location.routeDesignatorType\n }\n )\n};\n\nexport const getSelectOptions = (objectArray: any[]): string[] => {\n if (!objectArray) return [];\n\n return objectArray.map(\n (object: any) => {\n return object.name || `${object.id}`\n }\n )\n};","// libraries\nimport * as React from \"react\";\n// constants\ndeclare var __API_URL__: string;\nconst API_VERSION: string = \"v3.0\";\n\nexport const useGetData = (apiString: string) => {\n\n const [data, setData] = React.useState([]);\n const [loading, setLoading] = React.useState(false);\n const [loaded, setLoaded] = React.useState(false);\n const [error, setError] = React.useState(null);\n\n React.useEffect(\n () => {\n\n setLoading(true);\n fetch(`${__API_URL__}/${API_VERSION}/${apiString}`)\n .then( response => response.json())\n .then( (data) => {\n setData(data);\n setLoading(false);\n setLoaded(true);\n })\n .catch( (error) => {\n setLoading(false);\n setError(error);\n });\n\n // cleanup\n return () => {}\n }, []\n )\n\n return {data, loading, loaded, error};\n};\n\nexport default useGetData;","// libraries\nimport styled, { CSSProperties } from \"styled-components\";\nimport { flexSmart } from \"@caps-mobile/styled-lib\";\n\nexport const StyledEditLocation = styled.div`\n height: 90%;\n width: 90%;\n\n padding: 1rem;\n\n background-color: ${ props => props.theme.colors[\"bg-primary\"][\"rgba\"]};\n border-radius: 4px;\n\n ${flexSmart(\"flex-start center\")}\n flex-direction: column; \n`;\n\nexport const StyledContent = styled.div`\n height: calc(100% - 41px);\n width: 100%;\n\n ${flexSmart(\"center center\")}\n flex-direction: column;\n`;\n\nexport const StyledFooter = styled.div`\n height: 41px;\n width: 100%;\n\n ${flexSmart(\"space-evenly center\")}\n`;\n\nexport const StyledLoadError = styled.div`\n ${flexSmart(\"center center\")}\n flex-direction: column; \n`;\n\nexport const StyledLoadFail = styled.span`\n margin-bottom: 12px;\n\n color: \"red\";\n`;\n\nexport const StyledTryAgain = styled.span`\n margin-bottom: 8px;\n`;\n\nexport const StyledPrimaryContent = styled.div`\n width: 100%;\n height: 100%;\n\n padding: 0 2rem 0 2rem;\n`;\n\nexport const StyledFormsWrapper = styled.div`\n ${flexSmart(\"center stretch\")}\n`;\n\nexport const StyledMapWrapper = styled.div`\n height: calc(100% - 180px - 1rem);\n`;\n\n/**************************************************************************\n SUPPLEMENTAL STYLE OBJECTS\n*************************************************************************/\n\nexport const formCard1Styles: CSSProperties = {\n height: \"auto\",\n paddingTop: 0\n}","export default \"data:image/png;base64,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\"","// constants\nimport * as mapPinIcon from \"../../../../../images/map-pins/pin-region-96.png\";\n\n/**************************************************************************\n STRINGS\n*************************************************************************/\nexport const placesApiPath: string = \n \"Places?type=Interstate&type=USHighway&type=StateHighway\";\n\nexport const countiesApiPath: string =\n \"Counties\";\n\nexport const citiesApiPath: string =\n \"Cities\";\n\nexport const loadFailed: string = \n \"Error! Failed to load data.\";\n\nexport const tryAgain: string = \n \"Try canceling and re-opening this modal.\";\n\nexport const bannerText: string = \n `Place a marker indicating the entry point for the facility on the map below.`;\n\nexport const cityLabel: string = \"City\";\nexport const placeLabel: string = \"Roadway\";\nexport const countyLabel: string = \"County\";\nexport const directionLabel: string = \"Direction\";\nexport const mileLabel: string = \"Mile Marker\";\n\nexport const cancelLabel: string = \"Cancel\";\nexport const saveLabel: string = \"Save\";\n\n/**************************************************************************\n NUMBERS\n*************************************************************************/\n\n/**************************************************************************\n DATA OBJECTS\n*************************************************************************/\nexport const mapPinOptions = {\n type: 0,\n position: {lat: 0, lng: 0},\n options: {\n icon: { \n iconSrc: mapPinIcon.default, \n size: {w: 42, h: 42}\n } \n }\n};\n\nexport const D_MAP_CONFIG = {\n center: {\n lat: 32.411663269199124, \n lng: -86.26686300858245\n },\n zoom: 10,\n};","// libraries\nimport * as React from \"react\";\nimport * as HELP from \"./library\";\n// hooks\nimport { useGetData } from \"../../hooks/useGetData\";\n// styles\nimport * as SC from \"./Styled\";\n// types & models\nimport { \n EATDirection, IATLocation, IATPlace \n} from \"@algo/network-manager/models/v3\";\n// components\nimport { FACancel, FASave } from \"@caps-mobile/faicon\";\nimport { SuccessBanner } from \"@caps-mobile/banner\";\nimport { \n HereMap, addMarkerAtPointer, removeCurrentMarkers, \n IHereMarkerInit, IHereMapListener \n} from \"@algo/here-maps\";\nimport { \n FormButton, FormCard, FormTextInputLabeled, FormSelectLabeled \n} from \"@caps-mobile/forms\";\nimport { \n getEnumStrings, searchObjectListByProperty, filterNaN, nuon\n} from \"@caps-mobile/common-lib\";\nimport { Loading } from \"@algo/loading\";\n// constants\nimport * as CONST from \"./constants\";\nconst directionStrings: string[] = getEnumStrings(EATDirection);\n\nexport type IEditLocation = {\n location: IATLocation;\n locationIndex: number;\n cancelCallback: () => any;\n saveCallback: (\n location: IATLocation, \n locationIndex: number\n ) => any;\n} & React.HTMLAttributes;\n\nexport const EditLocation: React.FC = (props) => {\n\n /**************************************************************************\n VALIDATION & BREVITY NAMES\n *************************************************************************/\n const { location, locationIndex } = props;\n\n const currentMapCenter = {\n lat: location.latitude || CONST.D_MAP_CONFIG.center.lat,\n lng: location.longitude || CONST.D_MAP_CONFIG.center.lng\n };\n\n /**************************************************************************\n STATE\n *************************************************************************/\n const [cityNameValue, setCityNameValue] = \n React.useState(location.city || \"\");\n\n const [selectedCityIndex, setSelectedCityIndex] = \n React.useState(null);\n\n const [countyNameValue, setCountyNameValue] = \n React.useState(location.county || \"\");\n\n const [selectedCountyIndex, setSelectedCountyIndex] = \n React.useState(null);\n\n const [placeValue, setPlaceValue] = \n React.useState();\n\n const [selectedPlaceIndex, setSelectedPlaceIndex] = \n React.useState(null);\n\n const [mileMarkerValue, setMileMarkerValue] = \n React.useState(`${location.linearReference}` || \"\");\n\n const [directionValue, setDirectionValue] = \n React.useState(location.direction || EATDirection.Unknown);\n\n const [markerCoords, setMarkerCoords] = \n React.useState<{lat: number, lng: number}>();\n\n const [existingMarkers, setExistingMarkers] =\n React.useState([[{\n ...CONST.mapPinOptions, \n position: currentMapCenter\n }]]);\n\n const [mapConfig, setMapConfig] = React.useState(\n { ...CONST.D_MAP_CONFIG, center: currentMapCenter }\n );\n\n /**************************************************************************\n EFFECTS\n *************************************************************************/\n const {\n data: cities, loading: citiesLoading, \n loaded: citiesLoaded, error: citiesError \n } = useGetData(CONST.citiesApiPath);\n\n const {\n data: counties, loading: countiesLoading, \n loaded: countiesLoaded, error: countiesError \n } = useGetData(CONST.countiesApiPath);\n\n const {\n data: roadways, loading: roadwaysLoading, \n loaded: roadwaysLoaded, error: roadwaysError \n } = useGetData(CONST.placesApiPath);\n\n React.useEffect(() => {\n let indexOfObject: number | null = \n searchObjectListByProperty(cities, \"name\", location?.city);\n\n if (indexOfObject === -1) indexOfObject = null;\n\n setSelectedCityIndex(indexOfObject);\n }, [cities])\n\n React.useEffect(() => {\n let indexOfObject: number | null = \n searchObjectListByProperty(counties, \"name\", location?.county);\n\n if (indexOfObject === -1) indexOfObject = null;\n\n setSelectedCountyIndex(indexOfObject);\n }, [counties])\n\n React.useEffect(() => {\n let indexOfObject: number | null = \n searchObjectListByProperty(\n roadways, \"name\", location?.displayRouteDesignator\n );\n\n if (indexOfObject === -1) indexOfObject = null;\n setSelectedPlaceIndex(indexOfObject);\n\n }, [roadways])\n\n /**************************************************************************\n HERE MAPS LISTENER OBJECTS (STATE-DEPENDANT) \n *************************************************************************/\n const addMarkerEventObject: IHereMapListener = {\n type: \"tap\",\n action: (evt: H.mapevents.Event, map: H.Map) => {\n removeCurrentMarkers(map);\n addMarkerAtPointer(map, evt, CONST.mapPinOptions);\n let eventX: number = evt.currentPointer.viewportX;\n let eventY: number = evt.currentPointer.viewportY;\n let coords = map.screenToGeo(eventX, eventY);\n setMarkerCoords(coords);\n }\n };\n\n /**************************************************************************\n SENTINEL VALUES (DETERMINE IF LOADING OR ERROR)\n *************************************************************************/\n const dataLoaded = () => {\n return citiesLoaded && countiesLoaded && roadwaysLoaded;\n };\n\n const dataLoading = () => {\n return citiesLoading || countiesLoading || roadwaysLoading;\n };\n\n const dataError = () => {\n let error = null;\n\n if (!citiesLoading && citiesError) error = citiesError;\n if (!countiesLoading && countiesError) error = countiesError;\n if (!roadwaysLoading && roadwaysError) error = roadwaysError;\n\n return error;\n };\n\n /**************************************************************************\n PRIMARY RENDER\n *************************************************************************/\n return (\n \n\n \n { (!dataLoaded() && dataLoading()) &&\n \n }\n \n { (!dataLoaded() && !dataLoading()) &&\n \n \n {CONST.loadFailed}\n \n \n {CONST.tryAgain}\n \n \n }\n\n { dataLoaded() &&\n \n\n \n\n \n\n {\n setCityNameValue(cities[newIndex].name);\n setSelectedCityIndex(newIndex);\n }}\n />\n { \n setPlaceValue({...roadways[newIndex]});\n setSelectedPlaceIndex(newIndex);\n }}\n />\n\n \n\n \n {\n setCountyNameValue(counties[newIndex].name);\n setSelectedCountyIndex(newIndex);\n }}\n />\n \n { setDirectionValue(\n EATDirection[directionStrings[newIndex] as keyof typeof EATDirection]\n )\n }\n }\n />\n \n\n \n \n setMileMarkerValue(\n filterNaN(newValue.currentTarget.value)\n )\n }\n />\n \n\n \n\n \n {CONST.bannerText}\n \n\n \n \n \n\n \n }\n \n\n \n\n props.cancelCallback()} \n color={\"#DF3143\"} width={\"350px\"}>\n \n {CONST.cancelLabel}\n \n\n \n props.saveCallback(\n HELP.buildReturnValue(\n location, cityNameValue, countyNameValue, \n directionValue, markerCoords, mileMarkerValue, \n placeValue\n ), \n locationIndex\n )\n }\n >\n \n {CONST.saveLabel}\n \n\n \n\n \n )\n};\n\nexport default EditLocation;\n","// libraries\nimport { filterNaN } from \"@caps-mobile/common-lib\";\n// interfaces\n// @ts-ignore\nimport * as FTypes from \"@algo/network-manager/models/ATFacility\";\n\n// What to do when User clicks \"Update & Center button\"\n// Or when user presses \"Enter\" in the \"Zoom Level\" input field\nexport const handleUpdateAndCenter = (\n coords: H.geo.IPoint,\n mapConfig: any, \n zoomLevelValue: string,\n setMapConfig: any\n) => {\n setMapConfig({\n ...mapConfig, \n center: coords,\n zoom: parseFloat(zoomLevelValue)\n })\n}\n\n// What to do when User Presses \"Enter\" key in \"Zoom Level\" input field\nexport const handleZoomKeyPress = (\n e: React.KeyboardEvent,\n coords: H.geo.IPoint,\n mapConfig: any,\n zoomLevelValue: string,\n setMapConfig: any\n) => {\n let keyPressed: any = e.key;\n\n switch(keyPressed){\n case \"Enter\":\n !isInvalidZoomLevel(zoomLevelValue) && \n handleUpdateAndCenter(\n coords, mapConfig, zoomLevelValue, setMapConfig\n );\n break;\n default: \n break;\n }\n};\n\n// What to do when User edits \"Zoom Level\" input field\n// Filter non-number values to prevent errors\nexport const handleUpdateZoomState = (event: any, setZoomLevelValue: any) => {\n setZoomLevelValue(filterNaN(event.currentTarget.value));\n};\n\n// determine if the current zoomLevelValue is a valid float between 2 and 22\nexport const isInvalidZoomLevel = (zoomLevel: string) => {\n let parseResult: number = parseFloat(zoomLevel);\n if (isNaN(parseResult)) \n return true;\n else if (parseResult < 2 || parseResult > 22)\n return true;\n else return false;\n}\n\n// Data object returned to parent when User clicks \"Save\" button.\nexport const buildReturnValue = (\n zoomLevelValue: string, \n coords: H.geo.IPoint\n): FTypes.ATFacilityMapSetting => {\n return ({ \n zoomLevel: parseFloat(zoomLevelValue),\n centerLatitude: coords.lat, \n centerLongitude: coords.lng\n });\n};","// libraries\nimport styled, { CSSProperties } from \"styled-components\";\nimport { flexSmart } from \"@caps-mobile/styled-lib\";\n\n\n/******************************************************************************\n STYLED COMPONENTS\n *****************************************************************************/\nexport const StyledEditMapSettings = styled.div`\n\n height: 90%;\n width: 90%;\n\n padding: 1rem;\n\n background-color: ${ props => props.theme.colors[\"bg-primary\"][\"rgba\"]};\n border-radius: 4px;\n\n ${flexSmart(\"flex-start center\")}\n flex-direction: column; \n`;\n\nexport const StyledContent = styled.div`\n height: calc(100% - 41px);\n width: 100%;\n\n ${flexSmart(\"center center\")}\n flex-direction: column;\n`;\n\nexport const StyledZoomWrapper = styled.div`\n ${flexSmart(\"space-between center\")}\n`;\n\nexport const StyledMapAndBannerWrapper = styled.div`\n width: 100%;\n height: 100%;\n\n padding: 0 2rem 0 2rem;\n`;\n\nexport const StyledMapWrapper = styled.div`\n height: calc(100% - 86px);\n`;\n\nexport const StyledFooter = styled.div`\n\n height: 41px;\n width: 100%;\n\n ${flexSmart(\"space-evenly center\")}\n`;\n\nexport const StyledLoadError = styled.div`\n\n ${flexSmart(\"center center\")}\n flex-direction: column;\n \n`;\n\n/******************************************************************************\n SUPPLEMENTAL STYLE OBJECTS\n *****************************************************************************/\n\nexport const formCardStyles: CSSProperties = {\n height: \"auto\",\n paddingTop: 0\n};\n\nexport const faDoneStyles: CSSProperties = {\n fontSize: \"16px\",\n marginRight: \"8px\"\n};\n\nexport const successBannerStyles: CSSProperties = {\n marginBottom: \"12px\", \n fontSize: 16, \n padding: \"8px\", \n display: \"flex\", \n flexDirection: 'column'\n};\n\nexport const styledMapWrapperStyles: CSSProperties = {\n height: \"calc(100% - 86px\"\n};","// constants\nimport * as mapPinIcon from \"../../../../../images/map-pins/pin-region-96.png\";\n\n/**************************************************************************\n STRINGS\n*************************************************************************/\nexport const tipString1: string = \n `Place a marker indicating the center point for the facility on the map below.`;\n\nexport const tipString2: string =\n `Set zoom level by scrolling on the map, or by entering a floating point value between 2 and 22 (inclusive).`;\n\nexport const zoomLabel: string = `Zoom Level`;\nexport const updateZoomLabel: string = `Update & Center`;\n\nexport const cancel: string = \"Cancel\";\nexport const save: string = \"Save\";\n\n/**************************************************************************\n NUMBERS\n*************************************************************************/\n\n/**************************************************************************\n DATA OBJECTS\n*************************************************************************/\nexport const mapPinOptions = {\n type: 0,\n position: {lat: 0, lng: 0},\n options: {\n icon: { \n iconSrc: mapPinIcon.default, \n size: {w: 42, h: 42}\n } \n }\n};\n\nexport const D_MAP_CONFIG = {\n center: {lat: 32.411663269199124, lng: -86.26686300858245},\n zoom: 10,\n};","// libraries\nimport * as React from \"react\";\nimport * as HELP from \"./library\";\n// styles\nimport * as SC from \"./Styled\";\n// types & models\nimport { \n ATFacilityMapSetting \n} from \"@algo/network-manager/models/v3\";\n// components\nimport { \n HereMap, addMarkerAtPointer, removeCurrentMarkers, \n IHereMarkerInit, IHereMapListener \n} from \"@algo/here-maps\";\nimport { IHereMapConfig } from \"@algo/here-maps\";\nimport { FormButton, FormCard, FormTextInputLabeled } from \"@caps-mobile/forms\";\nimport { FASave, FACancel, FADone } from \"@caps-mobile/faicon\";\nimport { SuccessBanner } from \"@caps-mobile/banner\";\n// constants\nimport * as CONST from \"./constants\";\n\nexport type IEditMapSettings = {\n mapSetting: ATFacilityMapSetting;\n mapSettingIndex: number;\n cancelCallback: () => any;\n saveCallback: (\n mapSettings: ATFacilityMapSetting, \n mapSettingIndex: number\n ) => any;\n} & React.HTMLAttributes;\n\nexport const EditMapSettings: React.FC = (props) => {\n\n /**************************************************************************\n VALIDATION & BREVITY NAMES\n *************************************************************************/\n const { mapSetting, mapSettingIndex } = props;\n\n // check to see if mapSetting already has a legitimate center point\n // if not, use default\n let mapSettingCoords = (mapSetting.centerLatitude || mapSetting.centerLongitude)\n ? {lat: mapSetting.centerLatitude, lng: mapSetting.centerLongitude}\n : CONST.D_MAP_CONFIG.center;\n\n /**************************************************************************\n STATE\n *************************************************************************/\n // Track \"Zoom Level\" input field string value\n const [zoomLevelValue, setZoomLevelValue] = \n React.useState(\n mapSetting.zoomLevel \n ? `${mapSetting.zoomLevel}` \n : `${CONST.D_MAP_CONFIG.zoom}`\n );\n\n // List of markers for the HereMap to render\n // This component is only concerned with current map centroid\n const [existingMarkers, setExistingMarkers] =\n React.useState([[{\n ...CONST.mapPinOptions, \n position: mapSettingCoords\n }]]);\n\n // Track the coordinates for the currently selected centroid\n const [coords, setCoords] = React.useState(mapSettingCoords);\n\n // The configuration data that tells HereMap how to render/orient\n // Does not include listeners or markers\n const [mapConfig, setMapConfig] = React.useState(\n {\n ...CONST.D_MAP_CONFIG,\n center: coords,\n zoom: parseFloat(zoomLevelValue),\n showSpeeds: false\n }\n );\n\n /**************************************************************************\n EFFECTS\n *************************************************************************/\n // monitor coords change to re-center map \n // (also re-zooms if current zoom valid)\n React.useEffect(() => {\n let newZoom = \n HELP.isInvalidZoomLevel(zoomLevelValue) \n ? mapConfig.zoom \n : parseFloat(zoomLevelValue);\n\n setMapConfig({\n ...mapConfig, \n center: coords,\n zoom: newZoom\n });\n }, [coords]);\n\n /**************************************************************************\n HERE MAP LISTENER OBJECTS (STATE-DEPENDANT)\n *************************************************************************/\n // What the HereMap should do when User clicks the map:\n // remove any existing markers; add new marker at click\n const addMarkerEventObject: IHereMapListener = {\n type: \"tap\",\n action: (evt: H.mapevents.Event, map: H.Map) => {\n removeCurrentMarkers(map); \n addMarkerAtPointer(map, evt, CONST.mapPinOptions);\n let eventX: number = evt.currentPointer.viewportX;\n let eventY: number = evt.currentPointer.viewportY;\n let coords = map.screenToGeo(eventX, eventY);\n setCoords(coords);\n }\n };\n\n // What the HereMap should do at the end of a map change:\n // Update state value for zoom level to the current map zoom\n const mapViewChangeObject: IHereMapListener = {\n type: \"mapviewchangeend\",\n action: (evt: H.mapevents.Event, map: H.Map) => {\n setZoomLevelValue(`${map.getZoom()}`);\n }\n };\n\n /**************************************************************************\n PRIMARY RENDER\n *************************************************************************/\n return (\n \n \n\n \n \n \n HELP.handleZoomKeyPress(\n e, coords, \n mapConfig, zoomLevelValue, setMapConfig\n )}\n onChange={(e: any) => \n HELP.handleUpdateZoomState(e, setZoomLevelValue)}\n />\n HELP.handleUpdateAndCenter(\n coords, mapConfig, zoomLevelValue, setMapConfig)} \n >\n \n {CONST.updateZoomLabel}\n \n \n \n\n \n\n \n
    {CONST.tipString1}
    \n
    {CONST.tipString2}
    \n
    \n\n \n \n \n\n
    \n\n
    \n\n \n\n props.cancelCallback()} \n color={\"#DF3143\"} width={\"350px\"}>\n \n {CONST.cancel}\n \n\n props.saveCallback(\n HELP.buildReturnValue(zoomLevelValue, coords), \n mapSettingIndex)} \n color={\"#1E824C\"} width={\"350px\"}>\n \n {CONST.save}\n \n\n \n\n
    \n )\n};\n\nexport default EditMapSettings;","export const propertyBooleanMap: {[key: string]: boolean} = {\n \"parkingSpaces\": false, \"amenities\": false, \"phones\": false,\n \"locations\": false, \"mapSettings\": false, \"routesOfInterest\": false,\n \"travelTimes\": false\n};\n\nexport const propertyNumberMap: {[key: string]: number} = {\n \"parkingSpaces\": 0, \"amenities\": 0, \"phones\": 0,\n \"locations\": 0, \"mapSettings\": 0, \"routesOfInterest\": 0,\n \"travelTimes\": 0\n};","// libraries\nimport * as React from \"react\";\nimport { getEnumStrings, nuon } from \"@caps-mobile/common-lib\";\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from \"redux\";\n//redux-actions\nimport { \n loadFacility, saveFacility, cleanupFacility \n} from \"../../../../store/facility/editor/actions\";\n// hooks\nimport { useParams } from \"react-router-dom\";\nimport { useHistory } from \"react-router\";\nimport { usePrevious } from \"@algo/hooks\";\nimport { ThemeContext } from \"@caps-mobile/algo-theme\";\n// styles\nimport * as SC from \"./Styled\";\n// models & types\nimport { \n ATFacility, ATFacilityAmenity, ATFacilityMapSetting, \n ATFacilityParking, ATFacilityPhone, ATFacilityRoute,\n ATLocation,\n EATAmenityType, EATParkingType, EATPhoneType,\n EFacilityPropertyType, IATLocation\n} from \"@algo/network-manager/models/v3\";\n// store-state\nimport { AppState } from \"../../../../store\";\nimport { FacilityEditorState } from \"../../../../store/facility/editor/types\";\n// components\nimport { IToast, ToastContext, ToastManager } from \"@caps-mobile/toast\";\nimport { Loading } from \"@algo/loading\";\nimport { EditorTitleRow } from \"./editor-title-row/EditorTitleRow\";\nimport { FASave, FACancel} from \"@caps-mobile/faicon\";\nimport { FormButton } from \"@caps-mobile/forms\";\nimport GeneralInformation from \"./property-forms/GeneralInformation\";\nimport {\n ParkingSpacesForm, AmenitiesForm, PhonesForm, findNextUnselected\n} from \"./property-forms/SelectAndInputForm\";\nimport {\n LocationsForm, MapSettingsForm, \n RoutesOfInterestForm, TravelTimesForm\n} from \"./property-forms/StringAndModalForm\";\nimport FullPageModal from \"../../../modal/FullPageModal\";\nimport EditRoute from \"./edit-route/EditRoute\";\nimport EditLocation from \"./edit-location/EditLocation\";\nimport EditMapSettings from \"./edit-map-settings/EditMapSettings\";\n// constants\nimport * as CONST from \"../constants\";\nimport ConfirmationModal from \"../../../base/modals/ConfirmationModal\";\nimport { \n FACILITY_CONSTANTS as FAC_CONST \n} from \"../../../../utils/AppConstants\";\nimport VisitDashboardRow from \"./visit-dashboard-row/VisitDashboardRow\";\n\nconst parkingTypeStrings = getEnumStrings(EATParkingType);\nconst amenityTypeStrings = getEnumStrings(EATAmenityType);\nconst phoneTypeStrings = getEnumStrings(EATPhoneType);\n\ninterface IStateProps { editor?: FacilityEditorState; }\n\ninterface IDispatchProps {\n loadFacility: typeof loadFacility,\n cleanupFacility: typeof cleanupFacility,\n saveFacility: typeof saveFacility\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { editor: state.facilityEditor }\n};\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n loadFacility: loadFacility,\n saveFacility: saveFacility,\n cleanupFacility: cleanupFacility\n }, dispatch);\n};\n\nexport type IProps = {\n \n} & IStateProps & IDispatchProps;\n\nexport const FacilityEditor: React.FC = (props) => {\n\n /**************************************************************************\n STATE\n *************************************************************************/\n const { facilityId } = useParams<{[key: string]: string}>();\n\n const [facilityObject, setFacilityObject] = \n React.useState(new ATFacility());\n\n const [showEditModal, setShowEditModal] = \n React.useState<{[key: string]: boolean}>(CONST.propertyBooleanMap);\n\n const [showDeleteConfirmModal, setShowDeleteConfirmModal] =\n React.useState(false);\n\n const [selectedIndex, setSelectedIndex] = \n React.useState<{[key: string]: number}>(CONST.propertyNumberMap);\n\n /**************************************************************************\n EFFECTS\n *************************************************************************/\n\n const Theme: any = React.useContext(ThemeContext);\n\n const c_success: string = Theme.colors[\"bs-green\"];\n const c_failure: string = Theme.colors[\"bs-red\"];\n\n const { addToast, removeToast, updateList } = React.useContext(ToastContext);\n\n const history = useHistory();\n\n const prevSaving = usePrevious(props.editor?.savingFacility);\n\n React.useEffect(\n () => {\n if (facilityId){\n // get the data\n props.loadFacility(parseInt(facilityId));\n }\n\n return () => {\n props.cleanupFacility();\n }\n\n }, [facilityId]\n );\n\n React.useEffect(\n () => {\n if (props.editor && !props.editor.initializing && props.editor.facility){ \n setFacilityObject(new ATFacility(props.editor.facility));\n }\n\n }, [props.editor?.initializing]\n );\n\n React.useEffect(\n () => {\n // if a save action just finished and \n // there is no current facilityId\n if ( props.editor && !props.editor?.savingFacility && prevSaving){\n if (props.editor.error){\n addToast({\n message: `Error: Save Failed!`,\n color: Theme.getColorAtAlpha(c_failure, 1), \n backgroundColor: Theme.getColorAtAlpha(c_failure, 0.25),\n climbHeight: 1,\n height: 75,\n whenExpire: (object: IToast) => {removeToast(object)},\n whenTriggered: (object: IToast) => {updateList()}\n });\n }\n else {\n addToast({\n message: \"Save Successful.\",\n color: Theme.getColorAtAlpha(c_success, 1), \n backgroundColor: Theme.getColorAtAlpha(c_success, 0.25),\n climbHeight: 1,\n height: 75,\n whenExpire: (object: IToast) => {removeToast(object)},\n whenTriggered: (object: IToast) => {updateList()}\n });\n\n if (!facilityId && props.editor?.facility.id !== 0){\n history.push(`/facility/${props.editor?.facility.id}`);\n }\n }\n }\n }, [props.editor?.savingFacility]\n );\n\n let disableUI: boolean = \n (props.editor?.initializing || props.editor?.savingFacility || false);\n\n /**************************************************************************\n HELPERS\n *************************************************************************/\n // handles clicking the edit button for any of the stringAndModal dynamic rows\n // (EntryPoints, MapViewSettings, RoutesOfInterest)\n const handleEditClick = (type: EFacilityPropertyType, mapIndex: number) => {\n switch(type){\n case EFacilityPropertyType.routesOfInterest:\n setSelectedIndex({...selectedIndex, \"routesOfInterest\": mapIndex});\n !showEditModal.routesOfInterest && \n setShowEditModal({...showEditModal, \"routesOfInterest\": true});\n break;\n case EFacilityPropertyType.locations:\n setSelectedIndex({...selectedIndex, \"locations\": mapIndex});\n !showEditModal.locations && \n setShowEditModal({...showEditModal, \"locations\": true});\n break;\n case EFacilityPropertyType.mapSettings:\n setSelectedIndex({...selectedIndex, \"mapSettings\": mapIndex});\n !showEditModal.mapSettings && \n setShowEditModal({\n ...showEditModal, \n \"mapSettings\": true\n });\n break;\n default:\n return;\n }\n };\n\n // called when Reset button is clicked, should cause reset modal window to appear\n const handleResetFacility = () => {\n setShowDeleteConfirmModal(true);\n }\n\n // called when Save button is clicked, should initiate the put/post api call\n const handleSaveFacility = () => {\n props.saveFacility(facilityObject);\n };\n\n // called when confirm button is clicked in the reset facility modal window\n // will reload the current facility object if EDIT or reset to blank object if NEW\n const comfirmResetFacility = (): void => {\n facilityId \n ? props.loadFacility(parseInt(facilityId)) \n : setFacilityObject(new ATFacility())\n\n setShowDeleteConfirmModal(false);\n }\n\n // component config objects that tell Form components how to render\n\n let disableAddButton = (propertyName: string) => {\n switch(propertyName){\n case \"parkingSpaces\":\n return (\n facilityObject[propertyName] && \n (facilityObject[propertyName].length >= getEnumStrings(EATParkingType).length)\n )\n case \"amenities\":\n return (\n facilityObject[propertyName] && \n (facilityObject[propertyName].length >= getEnumStrings(EATAmenityType).length)\n )\n case \"phones\":\n return (\n facilityObject[propertyName] && \n (facilityObject[propertyName].length >= getEnumStrings(EATPhoneType).length)\n )\n case \"mapSettings\":\n return (\n facilityObject[propertyName] && \n (facilityObject[propertyName] && facilityObject[propertyName].length > 0)\n )\n default: \n return false;\n }\n }\n\n const formConfigs = [\n { title: \"General Information\"},\n { title: \"Parking\",\n addButton: {\n label: \"Add Parking\",\n disabled: disableAddButton(\"parkingSpaces\"),\n callback: () => {\n if (disableAddButton(\"parkingSpaces\")) { \n alert(FAC_CONST.WARN_DUPLICATE_PROP); return; \n }\n else {\n facilityObject.addParking(\n new ATFacilityParking({\n type: parkingTypeStrings[\n findNextUnselected(\n facilityObject, \n \"parkingSpaces\", \n parkingTypeStrings\n ) || 0\n ] as EATParkingType,\n })\n );\n setFacilityObject(new ATFacility(facilityObject));\n }\n }\n }\n },\n { title: \"Amenities\",\n addButton: {\n label: \"Add Amenity\",\n disabled: disableAddButton(\"amenities\"),\n callback: () => {\n if ( disableAddButton(\"amenities\")) { \n alert(FAC_CONST.WARN_DUPLICATE_PROP); return; \n }\n else {\n facilityObject.addAmenity(\n new ATFacilityAmenity({\n type: amenityTypeStrings[\n findNextUnselected(\n facilityObject, \n \"amenities\", \n amenityTypeStrings\n ) || 0\n ] as EATAmenityType,\n })\n );\n setFacilityObject(new ATFacility(facilityObject)); \n }\n }\n }\n },\n { title: \"Phone\",\n addButton: {\n label: \"Add Phone\",\n disabled: disableAddButton(\"phones\"),\n callback: () => {\n if (disableAddButton(\"phones\")) { \n alert(FAC_CONST.WARN_DUPLICATE_PROP); return; \n }\n facilityObject.addPhone(\n new ATFacilityPhone({\n type: phoneTypeStrings[\n findNextUnselected(\n facilityObject, \n \"phones\", \n phoneTypeStrings\n ) || 0\n ] as EATPhoneType,\n })\n );\n setFacilityObject(new ATFacility(facilityObject));\n }\n }\n },\n { title: \"Entry Points\",\n addButton: {\n label: \"Add Entry Points\", \n callback: () => {\n facilityObject.addLocation(new ATLocation());\n setFacilityObject(new ATFacility(facilityObject));\n }\n }\n },\n { title: \"Map View Settings\",\n addButton: {\n label: \"Add Map View Settings\",\n disabled: disableAddButton(\"mapSettings\"),\n callback: () => {\n if (disableAddButton(\"mapSettings\")) { \n alert(FAC_CONST.WARN_DUPLICATE_MAP_SETTING); \n return; \n }\n facilityObject.addMapSetting(new ATFacilityMapSetting());\n setFacilityObject(new ATFacility(facilityObject));\n }\n }\n },\n { title: \"Routes of Interest\",\n addButton: {\n label: \"Add Routes of Interest\", \n callback: () => {\n facilityObject.addListProperty(EFacilityPropertyType[\"routesOfInterest\"]);\n setFacilityObject(new ATFacility(facilityObject));\n }\n }\n },\n { title: \"Travel Time Routes\"}\n \n ];\n\n /**************************************************************************\n RENDER PRIMARY\n *************************************************************************/\n return (\n \n\n { showDeleteConfirmModal && \n setShowDeleteConfirmModal(false)} \n title={`Reset this Facility?`} type={`warning`}\n message={FAC_CONST.WARN_RESET} /> \n }\n\n { showEditModal.locations && \n setShowEditModal({\n ...showEditModal, \n \"locations\": false}\n )\n }\n >\n\n { \n ( \n nuon(selectedIndex.locations) && \n facilityObject.locations\n ) &&\n setShowEditModal({\n ...showEditModal, \n \"locations\": false}\n )\n } \n saveCallback={\n ( location: IATLocation, locationIndex: number ) => {\n if (facilityObject.locations)\n facilityObject.locations[locationIndex] = location;\n setFacilityObject(new ATFacility(facilityObject));\n setShowEditModal({...showEditModal, \"locations\": false});\n }} \n />\n }\n\n \n\n }\n\n { showEditModal.mapSettings && \n setShowEditModal({\n ...showEditModal, \n \"mapSettings\": false}\n )\n }\n >\n \n { \n ( \n nuon(selectedIndex.mapSettings) && \n facilityObject.mapSettings\n ) &&\n setShowEditModal({...showEditModal, \"mapSettings\": false})} \n saveCallback={\n (mapSetting: ATFacilityMapSetting, mapSettingIndex: number) => {\n if (facilityObject.mapSettings)\n facilityObject.mapSettings[mapSettingIndex] = mapSetting;\n\n setFacilityObject(new ATFacility(facilityObject));\n setShowEditModal({...showEditModal, \"mapSettings\": false});\n } \n } \n />\n }\n\n \n }\n\n { showEditModal.routesOfInterest && \n setShowEditModal({\n ...showEditModal, \n \"routesOfInterest\": false\n })}\n >\n \n { nuon(selectedIndex.routesOfInterest) && \n facilityObject.routesOfInterest &&\n \n setShowEditModal({...showEditModal, \"routesOfInterest\": false})} \n saveCallback={\n (route: ATFacilityRoute, routeIndex: number) => {\n if (facilityObject.routesOfInterest)\n facilityObject.routesOfInterest[routeIndex] = route;\n\n setFacilityObject(new ATFacility(facilityObject));\n setShowEditModal({...showEditModal, \"routesOfInterest\": false});\n } \n } \n />\n }\n\n \n }\n\n \n\n \n history.push(\"/facility\")}\n style={{marginBottom: \"12px\"}} />\n \n\n { (props.editor?.savingFacility) && \n \n \n \n }\n {(props.editor?.initializing)\n ? \n : \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n\n \n\n \n\n \n\n \n\n \n\n \n }\n \n\n \n \n \n {\"Reset\"}\n \n\n handleSaveFacility()}>\n \n {\"Save\"}\n \n \n\n \n\n \n );\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(FacilityEditor);","//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../components/template/authentication/oidcConfig\";\n// interfaces & models\nimport * as TYPES from './types';\nimport { IProcessedResponse, ISynchronizationNetworkManager, SynchronizationNetworkManager } from \"@algo/network-manager/managers/v3\";\n//constants\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlSynchronization: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).synchronizations}`;\n\n/*\n * Fetch Latest Synchronizations\n */\n\nfunction fetchLatestSynchronizationBegin(): TYPES.SynchronizationTypes {\n return {\n type: TYPES.FETCH_LATEST_SYNCHRONIZATION_BEGIN,\n payload: {} as TYPES.SynchronizationPayload\n };\n}\n\nfunction fetchLatestSynchronizationSuccess(response: IProcessedResponse): TYPES.SynchronizationTypes {\n return {\n type: TYPES.FETCH_LATEST_SYNCHRONIZATION_SUCCESS,\n payload: {\n latest: response.data,\n response\n } as TYPES.SynchronizationPayload\n };\n}\n\nfunction fetchLatestSynchronizationFailure(error: Error): TYPES.SynchronizationTypes {\n return {\n type: TYPES.FETCH_LATEST_SYNCHRONIZATION_FAILURE,\n payload: {\n error: error\n } as TYPES.SynchronizationPayload\n };\n}\n\nexport let loadLatestSynchronizations = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n if (!getState().synchronization.loadingLatest) {\n dispatch(fetchLatestSynchronizationBegin());\n\n let manager: ISynchronizationNetworkManager =\n new SynchronizationNetworkManager(apiUrlSynchronization);\n\n getAccessToken()\n .then(\n (token: string) => {\n manager.setAccessToken(token);\n manager.getLatest({})\n .then(\n (response: IProcessedResponse) => \n dispatch(fetchLatestSynchronizationSuccess(response))\n ).catch(\n (err: Error) => \n dispatch(fetchLatestSynchronizationFailure(err))\n )\n }\n ).catch(\n (err: Error) => dispatch(fetchLatestSynchronizationFailure(err))\n )\n }\n}\n\n/*\n * Fetch History Synchronizations\n */\n\nfunction fetchHistorySynchronizationBegin(): TYPES.SynchronizationTypes {\n return {\n type: TYPES.FETCH_HISTORY_SYNCHRONIZATION_BEGIN,\n payload: {} as TYPES.SynchronizationPayload\n };\n}\n\nfunction fetchHistorySynchronizationSuccess(response: IProcessedResponse): TYPES.SynchronizationTypes {\n return {\n type: TYPES.FETCH_HISTORY_SYNCHRONIZATION_SUCCESS,\n payload: {\n history: response.data,\n response\n } as TYPES.SynchronizationPayload\n };\n}\n\nfunction fetchHistorySynchronizationNullService(): TYPES.SynchronizationTypes {\n return {\n type: TYPES.FETCH_HISTORY_SYNCHRONIZATION_NULL_SERVICE,\n payload: {\n history: [],\n } as TYPES.SynchronizationPayload\n };\n}\n\nfunction fetchHistorySynchronizationFailure(error: Error): TYPES.SynchronizationTypes {\n return {\n type: TYPES.FETCH_HISTORY_SYNCHRONIZATION_FAILURE,\n payload: {\n error: error\n } as TYPES.SynchronizationPayload\n };\n}\n\nexport let loadSynchronizationHistory = (serviceName: string, take: number): ThunkAction> => async (dispatch, getState) => {\n if (!getState().synchronization.loadingHistory) {\n dispatch(fetchHistorySynchronizationBegin());\n\n if (serviceName == null) {\n dispatch(fetchHistorySynchronizationNullService());\n }\n\n else {\n getAccessToken()\n .then(\n (token: string) => {\n let manager: ISynchronizationNetworkManager = \n new SynchronizationNetworkManager(apiUrlSynchronization);\n\n manager.setAccessToken(token);\n manager.getAll({name: serviceName, take})\n .then((response: IProcessedResponse) => {\n dispatch(fetchHistorySynchronizationSuccess(response));\n }, (reject: any) => {\n dispatch(fetchHistorySynchronizationFailure(new Error(reject)));\n })\n .catch((error: any) => {\n dispatch(fetchHistorySynchronizationFailure(new Error(error)));\n });\n }\n )\n }\n }\n}\n\n/*\n * Clear Error\n */ \n\nfunction clearSynchronizationErrorState(): TYPES.SynchronizationTypes {\n return {\n type: TYPES.CLEAR_SYNCHRONIZATION_ERROR,\n payload: {} as TYPES.SynchronizationPayload\n };\n}\n\nexport let clearSynchronizationError = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n if (getState().synchronization.error !== null) {\n dispatch(clearSynchronizationErrorState());\n }\n}\n\n/*\n * Uninitialize State\n */ \n\nfunction uninitializeSynchronizationState(): TYPES.SynchronizationTypes {\n return {\n type: TYPES.UNINITIALIZE_SYNCHRONIZATION_STATE,\n payload: {} as TYPES.SynchronizationPayload\n };\n}\n\nexport let uninitializeSynchronization = (\n //\n): ThunkAction> => async (dispatch, getState) => {\n dispatch(uninitializeSynchronizationState());\n}","// libraries\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport { bindActionCreators, Dispatch } from \"redux\";\n// interface & models\nimport { ATSynchronization, IATSynchronization } from \"@algo/network-manager/models/v3\";\n// store\nimport { AppState } from \"../../../store\";\nimport { SynchronizationState } from \"../../../store/synchronization/types\";\nimport { \n loadLatestSynchronizations, loadSynchronizationHistory, \n uninitializeSynchronization \n} from \"../../../store/synchronization/actions\";\n// constants\nimport { \n SERVICE_SYNCHRONIZATION_REFRESH_INTERVAL,\n DEFAULT_SERVICE_SYNCHRONIZATION_HISTORY_COUNT\n} from \"../../../utils/AppConstants\";\nconst OKAY_STATUS_NAME: string = 'Okay';\nconst WARNING_STATUS_NAME: string = 'Warning';\nconst ERROR_STATUS_NAME: string = 'Error';\n\ninterface StateProps { \n synchronization: SynchronizationState;\n}\n\nlet mapStateToProps = (state: AppState) => {\n return { \n synchronization: state.synchronization\n };\n}\n\ninterface DispatchProps {\n loadLatestSynchronizations: typeof loadLatestSynchronizations,\n loadSynchronizationHistory: typeof loadSynchronizationHistory,\n uninitialize: typeof uninitializeSynchronization\n}\n\nlet mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n loadLatestSynchronizations: loadLatestSynchronizations,\n loadSynchronizationHistory: loadSynchronizationHistory,\n uninitialize: uninitializeSynchronization\n }, dispatch);\n}\n\ntype SynchronizationProps = \n StateProps & \n DispatchProps & \n RouteComponentProps;\n\ninterface OwnState {\n selectedServiceName: string;\n}\n\nclass Synchronization extends React.Component {\n pageRefresher: any;\n\n constructor(props: Readonly) {\n super(props);\n\n this.pageRefresher = setInterval(\n this.refreshPageData, \n SERVICE_SYNCHRONIZATION_REFRESH_INTERVAL\n );\n\n this.state = {\n selectedServiceName: \"\"\n } as OwnState;\n }\n\n componentDidMount() {\n this.props.loadLatestSynchronizations();\n }\n\n componentDidUpdate(\n prevProps: SynchronizationProps, prevState: OwnState, \n snapshot: any\n ) {\n if (this.state.selectedServiceName !== prevState.selectedServiceName) {\n this.props.loadSynchronizationHistory(\n this.state.selectedServiceName, \n DEFAULT_SERVICE_SYNCHRONIZATION_HISTORY_COUNT\n );\n }\n }\n\n componentWillUnmount() {\n clearInterval(this.pageRefresher);\n this.props.uninitialize();\n }\n\n refreshPageData = (): void => {\n this.props.loadLatestSynchronizations();\n\n if (this.state.selectedServiceName !== null) {\n this.props.loadSynchronizationHistory(\n this.state.selectedServiceName, \n DEFAULT_SERVICE_SYNCHRONIZATION_HISTORY_COUNT\n );\n }\n }\n\n setServiceName = (serviceName: string): void => {\n this.setState((state, props) => {\n return {\n ...state,\n selectedServiceName: serviceName\n };\n });\n }\n\n renderStatusOrb = (status: string): React.ReactNode => {\n switch (status) {\n case OKAY_STATUS_NAME:\n return ();\n case WARNING_STATUS_NAME:\n return ();\n case ERROR_STATUS_NAME:\n return ();\n default:\n return ();\n }\n }\n\n renderStatusItems = (): React.ReactNode => {\n if (this.props.synchronization.latest?.length > 0) {\n let list = (\n this.props.synchronization.latest.map(\n (item: IATSynchronization) => {\n return (\n
  • this.setServiceName(item.serviceName || \"\")}\n >\n
    \n
    \n {item.serviceName}\n
    \n
    \n {this.renderStatusOrb(item.status)}\n
    \n
    \n
  • \n );\n }\n )\n );\n\n return (\n
      \n {list}\n
    \n );\n }\n else {\n return (\n
    \n
    \n Loading...\n
    \n
    \n );\n }\n }\n\n renderHistoryItems = (): React.ReactNode => {\n if (\n this.props.synchronization.loadingHistory && \n ( this.props.synchronization.history.length === 0)\n ) {\n return (\n
    \n
    \n Loading...\n
    \n
    \n );\n }\n else if (this.state.selectedServiceName == null) {\n return (\n
    \n
    \n No synchronizer selected\n
    \n
    \n );\n }\n else if (\n ( this.state.selectedServiceName !== null ) && \n this.props.synchronization.history.length === 0\n ) {\n return (\n
    \n
    \n No history available\n
    \n
    \n );\n }\n else {\n return this.props.synchronization.history.map((\n item: IATSynchronization) => {\n return this.renderHistoryItem(new ATSynchronization(item));\n }\n );\n }\n }\n\n renderHistoryItem = (item: IATSynchronization): React.ReactNode => {\n\n return (\n
    \n
    \n
    \n
    {item.formattedDatePart()}
    \n
    {item.formattedTimePart()}
    \n
    \n
    \n
    {this.renderHistoryItemHeader(item.status, (item.serviceName || \"SERVICE_NAME_MISSING\"))}
    \n

    \n {item.message}\n

    \n
    \n
    \n
    \n );\n }\n\n renderHistoryItemHeader = (status: string, serviceName: string): string => {\n var statusHeader: string;\n\n switch (status) {\n case OKAY_STATUS_NAME:\n statusHeader = 'Success';\n break;\n case WARNING_STATUS_NAME:\n statusHeader = 'Warning';\n break;\n case ERROR_STATUS_NAME:\n statusHeader = 'Failure';\n break;\n default: \n statusHeader = 'Unknown';\n break; \n }\n\n return `${statusHeader} - ${serviceName} Sychronization`;;\n }\n\n render() {\n return (\n
    \n
    \n

    Synchronization Status

    \n
    \n
    \n
    \n Status History\n
    \n {this.renderHistoryItems()}\n
    \n
    \n
    \n
    \n
    \n Synchronizers\n
    \n {this.renderStatusItems()}\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(Synchronization));","// libraries\nimport * as React from \"react\";\n// styles\n// components\n// context\nimport { hasAuthParams, useAuth } from \"react-oidc-context\";\n// constants\n\n\nexport type IProps = {\n //\n};\n\nexport const SilentRenew: React.FC = (props) => {\n \n const auth = useAuth();\n //alert(\"reached silent renew comp\");\n React.useEffect(\n () => auth.startSilentRenew(),\n []\n );\n\n return (\n
    Silent Rewnew Comp
    \n )\n};\n\nexport default SilentRenew;\n\n","// libraries\nimport * as React from \"react\";\n// hooks\nimport { useNavigateAfterSignout } from \"./hooks\";\n\nexport type IProps = {\n //\n};\n\nexport const SessionEnded: React.FC = (props) => {\n\n useNavigateAfterSignout();\n\n return (\n
    Session Ended
    \n )\n};\n\nexport default SessionEnded;\n\n","// libraries\nimport { useContext, useEffect } from \"react\";\n\n// triggers navigation to the given route when the session_ended component renders\nexport const useNavigateAfterSignout = (routeName: string = \"/\") => {\n\n useEffect(\n () => {\n window.location.replace('/');\n }, []\n );\n}","//libraries\nimport { ThunkAction } from \"redux-thunk\";\nimport { AppState } from \"..\";\nimport { Action } from \"redux\";\nimport { getAccessToken } from \"../../components/template/authentication/oidcConfig\";\n//types\nimport {\n DatasourceTypes, DatasourcePayload,\n FETCH_DATASOURCES_BEGIN, FETCH_DATASOURCES_SUCCESS,\n FETCH_DATASOURCES_FAILURE, CLEAR_DATASOURCES_ERROR\n} from \"./types\";\n//models\nimport { IATLegacyDatasource, ATLegacyDatasource } from \"@algo/network-manager/models/v3\";\nimport { DatasourceNetworkManager, IDatasourceNetworkManager, IProcessedResponse } from \"@algo/network-manager/managers/v3\";\n//constants\nimport { CUR_API_VERSION, CUR_API_ENDPOINTS } from \"../api-version-constants\";\n\ndeclare var __API_URL__: string;\nconst apiUrlDatasource: string = \n `${__API_URL__}/${CUR_API_VERSION}/${CUR_API_ENDPOINTS(CUR_API_VERSION).datasources}`;\n\n/*\nFetch Datasources\n*/\nfunction fetchDatasourcesBegin(): DatasourceTypes {\n return {\n type: FETCH_DATASOURCES_BEGIN,\n payload: {} as DatasourcePayload\n };\n}\n\nfunction fetchDatasourcesSuccess(\n response: IProcessedResponse\n): DatasourceTypes {\n return {\n type: FETCH_DATASOURCES_SUCCESS,\n payload: {\n datasources: response.data.map( (datasource: IATLegacyDatasource) => new ATLegacyDatasource(datasource)),\n response: response,\n } as DatasourcePayload\n };\n}\n\nfunction fetchDatasourcesFailure(error: Error): DatasourceTypes {\n return {\n type: FETCH_DATASOURCES_FAILURE,\n payload: {\n error: error\n } as DatasourcePayload\n };\n}\n\nexport let loadDatasources = (): ThunkAction> => async (dispatch, getState) => {\n if (!getState().datasource.loading) {\n dispatch(fetchDatasourcesBegin());\n\n let manager: IDatasourceNetworkManager = new DatasourceNetworkManager(apiUrlDatasource);\n \n getAccessToken()\n .then(\n (token) => {\n manager.setAccessToken(token);\n manager.getAll(getState().datasource.lastResponse)\n .then(\n (response: IProcessedResponse) =>\n dispatch(fetchDatasourcesSuccess(response))\n )\n .catch(\n (err: any) => \n dispatch(fetchDatasourcesFailure(err))\n )\n }\n )\n .catch(\n (err: any) => \n dispatch(fetchDatasourcesFailure(err))\n )\n }\n}\n\n/*\nClear Datasource Error\n*/\n\nfunction clearDatasourceErrorState(): DatasourceTypes {\n return {\n type: CLEAR_DATASOURCES_ERROR,\n payload: {} as DatasourcePayload\n };\n}\n\nexport let clearDatasourceError = (): ThunkAction> => async (dispatch, getState) => {\n if (getState().datasource.error !== null) {\n dispatch(clearDatasourceErrorState());\n }\n}","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconSync(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 17,\n viewBox: \"0 0 16 17\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.7812 0.90625C13.7812 0.885417 13.7812 0.875 13.7812 0.875C13.7812 0.770833 13.8125 0.6875 13.875 0.625C13.9583 0.541667 14.0521 0.5 14.1562 0.5H15.625C15.875 0.5 16 0.625 16 0.875V7.125C16 7.22917 15.9583 7.32292 15.875 7.40625C15.8125 7.46875 15.7292 7.5 15.625 7.5H9.375C9.27083 7.5 9.17708 7.46875 9.09375 7.40625C9.03125 7.32292 9 7.22917 9 7.125V5.65625C9 5.55208 9.03125 5.46875 9.09375 5.40625C9.17708 5.32292 9.27083 5.28125 9.375 5.28125L12.5625 5.4375C12.0625 4.6875 11.4062 4.09375 10.5938 3.65625C9.80208 3.21875 8.9375 3 8 3C6.70833 3 5.5625 3.39583 4.5625 4.1875C3.58333 4.97917 2.94792 5.98958 2.65625 7.21875C2.61458 7.40625 2.48958 7.5 2.28125 7.5H0.75C0.645833 7.5 0.552083 7.46875 0.46875 7.40625C0.40625 7.32292 0.375 7.22917 0.375 7.125C0.375 7.10417 0.375 7.08333 0.375 7.0625C0.729167 5.25 1.61458 3.75 3.03125 2.5625C4.46875 1.35417 6.125 0.75 8 0.75C9.16667 0.75 10.2604 0.989583 11.2812 1.46875C12.3021 1.94792 13.1771 2.61458 13.9062 3.46875L13.7812 0.90625ZM8 14C9.27083 14 10.4062 13.6042 11.4062 12.8125C12.4062 12.0208 13.0521 11.0104 13.3438 9.78125C13.3854 9.59375 13.5104 9.5 13.7188 9.5H15.25C15.3542 9.5 15.4375 9.54167 15.5 9.625C15.5833 9.6875 15.625 9.77083 15.625 9.875C15.625 9.89583 15.6146 9.91667 15.5938 9.9375C15.2604 11.75 14.375 13.2604 12.9375 14.4688C11.5208 15.6562 9.875 16.25 8 16.25C6.83333 16.25 5.73958 16.0104 4.71875 15.5312C3.69792 15.0521 2.82292 14.3854 2.09375 13.5312L2.21875 16.0938C2.21875 16.1146 2.21875 16.125 2.21875 16.125C2.21875 16.2292 2.17708 16.3125 2.09375 16.375C2.03125 16.4583 1.94792 16.5 1.84375 16.5H0.375C0.125 16.5 0 16.375 0 16.125V9.875C0 9.77083 0.03125 9.6875 0.09375 9.625C0.177083 9.54167 0.270833 9.5 0.375 9.5H6.625C6.72917 9.5 6.8125 9.54167 6.875 9.625C6.95833 9.6875 7 9.77083 7 9.875V11.3438C7 11.4479 6.95833 11.5417 6.875 11.625C6.8125 11.6875 6.72917 11.7188 6.625 11.7188L3.4375 11.5625C3.9375 12.3125 4.58333 12.9062 5.375 13.3438C6.1875 13.7812 7.0625 14 8 14Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconSync);\nexport default __webpack_public_path__ + \"static/media/icon-sync.59e7308f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconProfile(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 15,\n viewBox: \"0 0 13 15\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.96094 6.23828C8.28646 6.91276 7.46615 7.25 6.5 7.25C5.53385 7.25 4.70443 6.91276 4.01172 6.23828C3.33724 5.54557 3 4.71615 3 3.75C3 2.78385 3.33724 1.96354 4.01172 1.28906C4.70443 0.596354 5.53385 0.25 6.5 0.25C7.46615 0.25 8.28646 0.596354 8.96094 1.28906C9.65365 1.96354 10 2.78385 10 3.75C10 4.71615 9.65365 5.54557 8.96094 6.23828ZM8.96094 8.125C9.96354 8.125 10.8203 8.48958 11.5312 9.21875C12.2604 9.92969 12.625 10.7865 12.625 11.7891V12.9375C12.625 13.3021 12.4974 13.612 12.2422 13.8672C11.987 14.1224 11.6771 14.25 11.3125 14.25H1.6875C1.32292 14.25 1.01302 14.1224 0.757812 13.8672C0.502604 13.612 0.375 13.3021 0.375 12.9375V11.7891C0.375 10.7865 0.730469 9.92969 1.44141 9.21875C2.17057 8.48958 3.03646 8.125 4.03906 8.125H4.50391C5.14193 8.41667 5.80729 8.5625 6.5 8.5625C7.19271 8.5625 7.85807 8.41667 8.49609 8.125H8.96094Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconProfile);\nexport default __webpack_public_path__ + \"static/media/icon-profile.f0abc798.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconGroup(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 15,\n viewBox: \"0 0 20 15\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.40625 5.90625C4.01042 6.30208 3.54167 6.5 3 6.5C2.45833 6.5 1.98958 6.30208 1.59375 5.90625C1.19792 5.51042 1 5.04167 1 4.5C1 3.95833 1.19792 3.48958 1.59375 3.09375C1.98958 2.69792 2.45833 2.5 3 2.5C3.54167 2.5 4.01042 2.69792 4.40625 3.09375C4.80208 3.48958 5 3.95833 5 4.5C5 5.04167 4.80208 5.51042 4.40625 5.90625ZM18.4062 5.90625C18.0104 6.30208 17.5417 6.5 17 6.5C16.4583 6.5 15.9896 6.30208 15.5938 5.90625C15.1979 5.51042 15 5.04167 15 4.5C15 3.95833 15.1979 3.48958 15.5938 3.09375C15.9896 2.69792 16.4583 2.5 17 2.5C17.5417 2.5 18.0104 2.69792 18.4062 3.09375C18.8021 3.48958 19 3.95833 19 4.5C19 5.04167 18.8021 5.51042 18.4062 5.90625ZM18 7.5C18.5417 7.5 19.0104 7.69792 19.4062 8.09375C19.8021 8.48958 20 8.95833 20 9.5V10.5C20 10.7708 19.8958 11.0104 19.6875 11.2188C19.5 11.4062 19.2708 11.5 19 11.5H16.9375C16.8333 10.7708 16.5729 10.1042 16.1562 9.5C15.7396 8.89583 15.2188 8.42708 14.5938 8.09375C14.9896 7.69792 15.4583 7.5 16 7.5H18ZM12.4688 6.46875C11.7812 7.15625 10.9583 7.5 10 7.5C9.04167 7.5 8.21875 7.15625 7.53125 6.46875C6.84375 5.78125 6.5 4.95833 6.5 4C6.5 3.04167 6.84375 2.21875 7.53125 1.53125C8.21875 0.84375 9.04167 0.5 10 0.5C10.9583 0.5 11.7812 0.84375 12.4688 1.53125C13.1562 2.21875 13.5 3.04167 13.5 4C13.5 4.95833 13.1562 5.78125 12.4688 6.46875ZM12.4062 8.5C13.4062 8.5 14.25 8.85417 14.9375 9.5625C15.6458 10.25 16 11.0938 16 12.0938V13C16 13.4167 15.8542 13.7708 15.5625 14.0625C15.2708 14.3542 14.9167 14.5 14.5 14.5H5.5C5.08333 14.5 4.72917 14.3542 4.4375 14.0625C4.14583 13.7708 4 13.4167 4 13V12.0938C4 11.0938 4.34375 10.25 5.03125 9.5625C5.73958 8.85417 6.59375 8.5 7.59375 8.5H7.875C8.5625 8.83333 9.27083 9 10 9C10.7292 9 11.4375 8.83333 12.125 8.5H12.4062ZM5.40625 8.09375C4.78125 8.42708 4.26042 8.89583 3.84375 9.5C3.42708 10.1042 3.16667 10.7708 3.0625 11.5H1C0.729167 11.5 0.489583 11.4062 0.28125 11.2188C0.09375 11.0104 0 10.7708 0 10.5V9.5C0 8.95833 0.197917 8.48958 0.59375 8.09375C0.989583 7.69792 1.45833 7.5 2 7.5H4C4.54167 7.5 5.01042 7.69792 5.40625 8.09375Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconGroup);\nexport default __webpack_public_path__ + \"static/media/icon-group.d2c04093.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconProfileTag(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 17,\n viewBox: \"0 0 20 17\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.7188 11.9062C19.9062 12.0938 20 12.3333 20 12.625C20 12.8958 19.8958 13.125 19.6875 13.3125L16.8125 16.2188C16.625 16.4062 16.3854 16.5 16.0938 16.5C15.8229 16.5 15.5938 16.4062 15.4062 16.2188L12.5625 13.375C12.1875 13 12 12.5312 12 11.9688V9.5C12 9.22917 12.0938 9 12.2812 8.8125C12.4688 8.60417 12.7083 8.5 13 8.5H15.4688C16.0312 8.5 16.5 8.69792 16.875 9.09375L19.7188 11.9062ZM13.4688 11.0312C13.6146 11.1771 13.7917 11.25 14 11.25C14.2083 11.25 14.3854 11.1771 14.5312 11.0312C14.6771 10.8854 14.75 10.7083 14.75 10.5C14.75 10.2917 14.6771 10.1146 14.5312 9.96875C14.3854 9.82292 14.2083 9.75 14 9.75C13.7917 9.75 13.6146 9.82292 13.4688 9.96875C13.3229 10.1146 13.25 10.2917 13.25 10.5C13.25 10.7083 13.3229 10.8854 13.4688 11.0312ZM9.8125 7.34375C9.04167 8.11458 8.10417 8.5 7 8.5C5.89583 8.5 4.94792 8.11458 4.15625 7.34375C3.38542 6.55208 3 5.60417 3 4.5C3 3.39583 3.38542 2.45833 4.15625 1.6875C4.94792 0.895833 5.89583 0.5 7 0.5C8.10417 0.5 9.04167 0.895833 9.8125 1.6875C10.6042 2.45833 11 3.39583 11 4.5C11 5.60417 10.6042 6.55208 9.8125 7.34375ZM11 11.9688C11 12.8021 11.2917 13.5104 11.875 14.0938L13.6875 15.9062C13.375 16.3021 12.9792 16.5 12.5 16.5H1.5C1.08333 16.5 0.729167 16.3542 0.4375 16.0625C0.145833 15.7708 0 15.4167 0 15V13.6875C0 12.5417 0.40625 11.5625 1.21875 10.75C2.05208 9.91667 3.04167 9.5 4.1875 9.5H4.71875C5.44792 9.83333 6.20833 10 7 10C7.79167 10 8.55208 9.83333 9.28125 9.5H9.8125C10.1667 9.5 10.5625 9.5625 11 9.6875V11.9688Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconProfileTag);\nexport default __webpack_public_path__ + \"static/media/icon-profile-tag.70659515.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconAlertTriangle(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 19,\n height: 17,\n viewBox: \"0 0 19 17\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8438 14.25C18.1146 14.75 18.1042 15.25 17.8125 15.75C17.5417 16.25 17.1146 16.5 16.5312 16.5H1.53125C0.947917 16.5 0.510417 16.25 0.21875 15.75C-0.0520833 15.25 -0.0520833 14.75 0.21875 14.25L7.71875 1.25C8.01042 0.75 8.44792 0.5 9.03125 0.5C9.61458 0.5 10.0521 0.75 10.3438 1.25L17.8438 14.25ZM10.0312 12C9.76042 11.7083 9.42708 11.5625 9.03125 11.5625C8.63542 11.5625 8.29167 11.7083 8 12C7.72917 12.2708 7.59375 12.6042 7.59375 13C7.59375 13.3958 7.72917 13.7396 8 14.0312C8.29167 14.3021 8.63542 14.4375 9.03125 14.4375C9.42708 14.4375 9.76042 14.3021 10.0312 14.0312C10.3229 13.7396 10.4688 13.3958 10.4688 13C10.4688 12.6042 10.3229 12.2708 10.0312 12ZM7.65625 6.40625L7.90625 10.6562C7.90625 10.8854 8.03125 11 8.28125 11H9.78125C10.0312 11 10.1562 10.8854 10.1562 10.6562L10.4062 6.40625C10.4062 6.28125 10.3646 6.1875 10.2812 6.125C10.2188 6.04167 10.1354 6 10.0312 6H8.03125C7.92708 6 7.83333 6.04167 7.75 6.125C7.6875 6.1875 7.65625 6.28125 7.65625 6.40625Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconAlertTriangle);\nexport default __webpack_public_path__ + \"static/media/icon-alert-triangle.ba2a72fd.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconCamera(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 15,\n viewBox: \"0 0 16 15\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 4V13C16 13.4167 15.8542 13.7708 15.5625 14.0625C15.2708 14.3542 14.9167 14.5 14.5 14.5H1.5C1.08333 14.5 0.729167 14.3542 0.4375 14.0625C0.145833 13.7708 0 13.4167 0 13V4C0 3.58333 0.145833 3.22917 0.4375 2.9375C0.729167 2.64583 1.08333 2.5 1.5 2.5H4.25L4.625 1.46875C4.75 1.17708 4.9375 0.947917 5.1875 0.78125C5.4375 0.59375 5.71875 0.5 6.03125 0.5H9.96875C10.2812 0.5 10.5625 0.59375 10.8125 0.78125C11.0625 0.947917 11.25 1.17708 11.375 1.46875L11.75 2.5H14.5C14.9167 2.5 15.2708 2.64583 15.5625 2.9375C15.8542 3.22917 16 3.58333 16 4ZM10.6562 11.1562C11.3854 10.4271 11.75 9.54167 11.75 8.5C11.75 7.45833 11.3854 6.57292 10.6562 5.84375C9.92708 5.11458 9.04167 4.75 8 4.75C6.95833 4.75 6.07292 5.11458 5.34375 5.84375C4.61458 6.57292 4.25 7.45833 4.25 8.5C4.25 9.54167 4.61458 10.4271 5.34375 11.1562C6.07292 11.8854 6.95833 12.25 8 12.25C9.04167 12.25 9.92708 11.8854 10.6562 11.1562ZM9.9375 6.5625C10.4792 7.10417 10.75 7.75 10.75 8.5C10.75 9.25 10.4792 9.89583 9.9375 10.4375C9.39583 10.9792 8.75 11.25 8 11.25C7.25 11.25 6.60417 10.9792 6.0625 10.4375C5.52083 9.89583 5.25 9.25 5.25 8.5C5.25 7.75 5.52083 7.10417 6.0625 6.5625C6.60417 6.02083 7.25 5.75 8 5.75C8.75 5.75 9.39583 6.02083 9.9375 6.5625Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconCamera);\nexport default __webpack_public_path__ + \"static/media/icon-camera.ec6dca8b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconHouse(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 17,\n viewBox: \"0 0 21 17\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.0312 12.5V7.5H12.0312V15.5C12.0312 15.7708 11.9271 16 11.7188 16.1875C11.5312 16.3958 11.3021 16.5 11.0312 16.5H3.03125C2.76042 16.5 2.52083 16.3958 2.3125 16.1875C2.125 16 2.03125 15.7708 2.03125 15.5V7.5H4.03125V12.5H10.0312ZM19.875 4.9375C20.0833 5.27083 20.0938 5.61458 19.9062 5.96875C19.7188 6.32292 19.4271 6.5 19.0312 6.5H1.03125C0.635417 6.5 0.34375 6.32292 0.15625 5.96875C-0.03125 5.61458 -0.0104167 5.27083 0.21875 4.9375L2.875 0.9375C3.0625 0.645833 3.33333 0.5 3.6875 0.5H16.375C16.7292 0.5 17 0.645833 17.1875 0.9375L19.875 4.9375ZM16.0312 16V7.5H18.0312V16C18.0312 16.1458 17.9792 16.2604 17.875 16.3438C17.7917 16.4479 17.6771 16.5 17.5312 16.5H16.5312C16.3854 16.5 16.2604 16.4479 16.1562 16.3438C16.0729 16.2604 16.0312 16.1458 16.0312 16Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconHouse);\nexport default __webpack_public_path__ + \"static/media/icon-house.48737cc0.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIconMail(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 13,\n viewBox: \"0 0 16 13\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.6875 4.46875C15.75 4.40625 15.8125 4.39583 15.875 4.4375C15.9583 4.47917 16 4.54167 16 4.625V11C16 11.4167 15.8542 11.7708 15.5625 12.0625C15.2708 12.3542 14.9167 12.5 14.5 12.5H1.5C1.08333 12.5 0.729167 12.3542 0.4375 12.0625C0.145833 11.7708 0 11.4167 0 11V4.625C0 4.54167 0.03125 4.48958 0.09375 4.46875C0.177083 4.42708 0.25 4.42708 0.3125 4.46875C1 4.98958 2.60417 6.16667 5.125 8C5.16667 8.04167 5.30208 8.15625 5.53125 8.34375C5.78125 8.53125 5.97917 8.67708 6.125 8.78125C6.27083 8.86458 6.45833 8.97917 6.6875 9.125C6.91667 9.25 7.13542 9.34375 7.34375 9.40625C7.57292 9.46875 7.79167 9.5 8 9.5C8.20833 9.5 8.41667 9.46875 8.625 9.40625C8.85417 9.34375 9.08333 9.25 9.3125 9.125C9.5625 8.97917 9.76042 8.85417 9.90625 8.75C10.0521 8.64583 10.2396 8.51042 10.4688 8.34375C10.6979 8.15625 10.8333 8.04167 10.875 8C13.3333 6.22917 14.9375 5.05208 15.6875 4.46875ZM8 8.5C7.83333 8.5 7.625 8.44792 7.375 8.34375C7.14583 8.21875 6.95833 8.11458 6.8125 8.03125C6.66667 7.92708 6.44792 7.77083 6.15625 7.5625C5.88542 7.33333 5.73958 7.21875 5.71875 7.21875C3.17708 5.36458 1.36458 4.02083 0.28125 3.1875C0.09375 3.04167 0 2.84375 0 2.59375V2C0 1.58333 0.145833 1.22917 0.4375 0.9375C0.729167 0.645833 1.08333 0.5 1.5 0.5H14.5C14.9167 0.5 15.2708 0.645833 15.5625 0.9375C15.8542 1.22917 16 1.58333 16 2V2.59375C16 2.84375 15.9062 3.04167 15.7188 3.1875C14.6979 3.97917 12.8854 5.32292 10.2812 7.21875C10.2604 7.21875 10.1042 7.33333 9.8125 7.5625C9.54167 7.77083 9.33333 7.92708 9.1875 8.03125C9.04167 8.11458 8.84375 8.21875 8.59375 8.34375C8.36458 8.44792 8.16667 8.5 8 8.5Z\",\n fill: \"currentColor\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconMail);\nexport default __webpack_public_path__ + \"static/media/icon-mail.4565b053.svg\";\nexport { ForwardRef as ReactComponent };","import {ReactComponent as IconSync} from \"../../images/algo-nav/icon-sync.svg\";\nimport {ReactComponent as IconUsers} from \"../../images/algo-nav/icon-profile.svg\";\nimport {ReactComponent as IconOrganizations} from \"../../images/algo-nav/icon-group.svg\";\nimport {ReactComponent as IconRoles} from \"../../images/algo-nav/icon-profile-tag.svg\";\nimport {ReactComponent as IconAlerts} from \"../../images/algo-nav/icon-alert-triangle.svg\";\nimport {ReactComponent as IconCameras} from \"../../images/algo-nav/icon-camera.svg\";\nimport {ReactComponent as IconFacilities} from \"../../images/algo-nav/icon-house.svg\";\nimport {ReactComponent as IconFeedback} from \"../../images/algo-nav/icon-mail.svg\";\nimport * as PRIVS from \"../../models/Privileges\";\n\n// this function handles building the hierarchy of literal routing strings \n// (not to be confused with the link label text)\nexport const navStringsPrivilegeFilter = (privileges: string[]) => {\n\n // navStringsArray is an array of arrays of routing strings\n // each nested array represents the routes for the given 'section' of nav\n let navStringsArray: string[][] = [];\n\n // build \"TOOLS\" section\n\n let toolsStrings: string[] = [];\n\n // check privs for \"Synchronization\" page\n if (privileges.includes(PRIVS.VIEW_SERVICE_STATUS))\n toolsStrings.push(\"/synchronization\");\n\n if (toolsStrings.length > 0)\n navStringsArray.push(toolsStrings);\n\n // check privs for \"USER ADMINISTRATION\" section\n\n let userAdminStrings: string[] = [];\n\n if (privileges.includes(PRIVS.VIEW_USER))\n userAdminStrings.push(\"/user\");\n\n // check privs to view \"Organizations\" page\n if (privileges.includes(PRIVS.VIEW_ORGANIZATION))\n userAdminStrings.push(\"/organization\");\n\n // check privs to view \"Roles\" page\n if (privileges.includes(PRIVS.VIEW_ROLE))\n userAdminStrings.push(\"/role\");\n\n // append all authorized \"USER ADMINISTRATION\" strings\n if (userAdminStrings.length > 0)\n navStringsArray.push(userAdminStrings);\n\n // check privs for \"SITE ADMINISTRATION\" section\n let siteAdminStrings: string[] = [];\n\n // check privs to view \"Alerts\" page (for Admin: \"alerts\" === \"messages\")\n if (privileges.includes(PRIVS.VIEW_MESSAGE))\n siteAdminStrings.push(\"/message\");\n\n // check privs to view \"Cameras\" page\n if (privileges.includes(PRIVS.EDIT_CAMERA))\n siteAdminStrings.push(\"/camera\");\n\n // check privs to view \"Facilities\" page\n //if User has ANY of the privs associated with Facilities, they may VIEW\n for (let priv of PRIVS.FACILITY_PRIVILEGES){\n if (privileges.includes(priv)){\n siteAdminStrings.push(\"/facility\");\n break;\n }\n }\n\n // check privs to view \"Feedback\" page\n if (privileges.includes(PRIVS.VIEW_FEEDBACK))\n siteAdminStrings.push(\"/feedback\");\n \n // append all authorized \"USER ADMINISTRATION\" strings\n if (siteAdminStrings.length > 0)\n navStringsArray.push(siteAdminStrings);\n\n return navStringsArray;\n};\n\nexport const getNavString = (navIndex: number[], navStrings: string[][]) => {\n\n let navSection: number = navIndex[0];\n let navLink: number = navIndex[1];\n\n if (!navStrings[navSection] || !navStrings[navSection][navLink])\n return \"/\";\n\n else \n return navStrings[navSection][navLink];\n};\n\nexport const navConfigPrivilegeFilter = (privileges: string[]) => {\n\n // the nav configuration is an array of objects representing nav sections\n let navConfigArray: any = [];\n\n // each nav section object has a text title and a list of its labeled buttons\n\n // TOOLS SECTION\n let toolsNavLinks = [];\n\n if (privileges.includes(PRIVS.VIEW_SERVICE_STATUS)) {\n toolsNavLinks.push({\n text: \"Sync Services\", \n icon: \n });\n }\n\n if (toolsNavLinks.length > 0){\n navConfigArray.push(\n {\n text: \"Tools\",\n navLinks: toolsNavLinks\n }\n )\n }\n \n // USER ADMINISTRATION SECTION\n let userAdminNavLinks: any = [];\n\n if (privileges.includes(PRIVS.VIEW_USER)) {\n userAdminNavLinks.push({\n text: \"Users\", \n icon: \n });\n }\n\n if (privileges.includes(PRIVS.VIEW_ORGANIZATION)) {\n userAdminNavLinks.push({\n text: \"Organizations\", \n icon: \n });\n }\n\n if (privileges.includes(PRIVS.VIEW_ROLE)) {\n userAdminNavLinks.push({\n text: \"Roles\", \n icon: \n });\n }\n\n if (userAdminNavLinks.length > 0){\n navConfigArray.push({\n text: \"User Administration\",\n navLinks: userAdminNavLinks\n });\n }\n\n // SITE ADMINISTRATION SECTION\n let siteAdminNavLinks: any = [];\n\n if (privileges.includes(PRIVS.VIEW_MESSAGE))\n siteAdminNavLinks.push({\n text: \"Alerts\",\n icon: \n });\n\n if (privileges.includes(PRIVS.EDIT_CAMERA))\n siteAdminNavLinks.push({\n text: \"Cameras\",\n icon: \n });\n\n if (\n privileges.includes(PRIVS.CREATE_FACILITY) || \n privileges.includes(PRIVS.UPDATE_FACILITY) ||\n privileges.includes(PRIVS.DELETE_FACILITY)\n )\n siteAdminNavLinks.push({\n text: \"Facilities\",\n icon: \n });\n\n if (privileges.includes(PRIVS.VIEW_FEEDBACK))\n siteAdminNavLinks.push({\n text: \"Feedback\",\n icon: \n });\n\n if (siteAdminNavLinks.length > 0){\n navConfigArray.push({\n text: \"Site Administration\",\n navLinks: siteAdminNavLinks\n })\n }\n \n return navConfigArray;\n};","// #region libraries\nimport * as React from \"react\";\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { withRouter, Route, Switch } from 'react-router-dom';\nimport { checkRouteAccess, checkForRedirect } from \"./helpers\";\nimport { useAuth } from \"react-oidc-context\";\n// #endregion\n// #region styles\nimport * as SC from \"./Styled\";\n// #endregion\n// #region types & interfaces\nimport { ITemplatePage, ITemplateErrorObject } from \"./types\";\n// #endregion\n// #region hooks\nimport { NavigationContext } from \"@caps-mobile/themed-nav\";\nimport { SidebarContext } from \"../../store/context/SidebarContext\"; \nimport { useHistory } from \"react-router-dom\";\nimport { useServiceWorker } from \"./useServiceWorker\";\nimport { useRefresher } from \"./useRefresher\";\n// #endregion\n// #region package components\nimport {ThemedNav} from \"@caps-mobile/themed-nav\";\n// #endregion\n// #region local components\nimport { CSSTransition } from 'react-transition-group';\nimport Header from '../base/layout/header/Header';\nimport Welcome from '../pages/Welcome';\nimport Redirect from '../pages/login-cycle/Redirect';\nimport NotFound from '../pages/NotFound';\nimport AccessDenied from '../pages/login-cycle/AccessDenied';\nimport Loading from '../pages/Loading';\nimport UserEditor from '../pages/user/UserEditor';\nimport UserList from '../pages/user/UserList';\nimport OrganizationEditor from '../pages/organization/OrganizationEditor';\nimport OrganizationList from '../pages/organization/OrganizationList';\nimport FeedbackList from '../pages/feedback/FeedbackList';\nimport FeedbackDetail from '../pages/feedback/FeedbackDetail';\nimport CameraDashboard from \"../pages/cameraDashboard/CameraDashboard\";\nimport \n CameraDeviceDetailsWrapper \nfrom \"../pages/cameraDetails/CameraDeviceDetailsWrapper\";\nimport MessageList from '../pages/messages/MessageList';\nimport MessageEditor from '../pages/messages/MessageEditor';\nimport RoleList from '../pages/roles/RoleList';\nimport RoleEditor from '../pages/roles/RoleEditor';\nimport FacilityList from \"../pages/facility/list/FacilityList\";\nimport FacilityEditor from \"../pages/facility/editor/FacilityEditor\";\nimport Synchronization from \"../pages/synchronization/Synchronization\";\nimport ErrorModal from '../base/modals/ErrorModal';\nimport SilentRenew from \"./authentication/silent-renew/SilentRenew\";\nimport SessionEnded from \"./authentication/session-ended/SessionEnded\";\n// #endregion\n// #region store\nimport { \n loadUserProfile, clearUserProfileError\n} from '../../store/profile/actions';\nimport { clearDatasourceError } from '../../store/datasource/actions';\nimport { clearUserEditorError } from '../../store/user/editor/actions';\nimport { clearUserDashboardError } from '../../store/user/dashboard/actions';\nimport { clearOrganizationEditorError } from '../../store/organization/editor/actions';\nimport { clearOrganizationDashboardError } from '../../store/organization/dashboard/actions';\nimport { clearFeedbackDashboardError } from '../../store/feedback/dashboard/actions';\nimport { clearFeedbackDetailError } from '../../store/feedback/detail/actions';\nimport { clearMessageDashboardError } from '../../store/message/dashboard/actions';\nimport { clearMessageEditorError } from '../../store/message/editor/actions';\nimport { clearRoleDashboardError } from '../../store/role/dashboard/actions';\nimport { clearRoleEditorError } from '../../store/role/editor/actions';\nimport { clearSynchronizationError } from '../../store/synchronization/actions';\nimport { AppState } from '../../store';\nimport { userManager } from \"./authentication/oidcConfig\";\n// #endregion\n// #region constants\nimport { PROFILE_REFRESH_INTERVAL } from \"../../utils/AppConstants\";\nimport * as PRIVS from '../../models/Privileges';\nimport * as CONST from \"./constants\";\nimport { IAAUserAuthorizationProfile } from \"@algo/network-manager/models/v3/admin\";\n// #endregion\n\n// #region CONNECT BOILERPLATE\nconst mapStateToProps = (state: AppState) => {\n return {\n datasource: state.datasource,\n profile: state.profile,\n organizationDashboard: state.organizationDashboard,\n organizationEditor: state.organizationEditor,\n userDashboard: state.userDashboard,\n userEditor: state.userEditor,\n feedbackDashboard: state.feedbackDashboard,\n feedbackDetail: state.feedbackDetail,\n cameraDetails: state.cameraDetails,\n messageDashboard: state.messageDashboard,\n messageEditor: state.messageEditor,\n roleDashboard: state.roleDashboard,\n roleEditor: state.roleEditor,\n synchronization: state.synchronization\n }\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators({\n getUserProfile: loadUserProfile,\n clearDatasourceError: clearDatasourceError,\n clearUserProfileError: clearUserProfileError,\n clearUserEditorError: clearUserEditorError,\n clearUserDashboardError: clearUserDashboardError,\n clearOrganizationEditorError: clearOrganizationEditorError,\n clearOrganizationDashboardError: clearOrganizationDashboardError,\n clearFeedbackDashboardError: clearFeedbackDashboardError,\n clearFeedbackDetailError: clearFeedbackDetailError,\n clearMessageDashboardError: clearMessageDashboardError,\n clearMessageEditorError: clearMessageEditorError,\n clearRoleDashboardError: clearRoleDashboardError,\n clearRoleEditorError: clearRoleEditorError,\n clearSynchronizationError: clearSynchronizationError\n }, dispatch);\n};\n\n// #endregion\n\nexport const TemplatePage: React.FC = (props) => {\n\n /**************************************************************************\n STATE\n **************************************************************************/\n // #region STATE\n const { profile, location, getUserProfile } = props;\n\n // privileges and navStrings are used to control which nav items are visible in the \n // nav menu based on which privileges the current userProfile has\n const [privileges, setPrivileges] = \n React.useState(\n profile.userProfile.privileges || \n []\n );\n\n const [navStrings, setNavStrings] = \n React.useState(\n CONST.navStringsPrivilegeFilter(privileges) || \n [[]]\n );\n\n // (currently unimplemented, was used to track React.OnCatch)\n const [ errorObject, setErrorObject ] = \n React.useState({\n hasError: false, error: null, info: null\n });\n\n // track whether the sidebar should be open or not\n const [ showSidebar, setShowSidebar ] = \n React.useState(shouldShowSidebar(profile.userProfile, navStrings));\n\n const SidebarContextValue = {\n showSidebar: showSidebar,\n setShowSidebar: (newValue: boolean) => setShowSidebar(newValue)\n };\n\n // tracks the currently selected page\n const [selectedNavIndex, setSelectedNavIndex] = \n React.useState([-1,0]);\n\n const NavigationContextValue = {\n selectedNavIndex: selectedNavIndex,\n setSelectedNavIndex: (newValue: number[]) => setSelectedNavIndex(newValue)\n };\n\n // get a handle for navigating\n const history = useHistory();\n\n // setup service worker\n const serviceWorker = useServiceWorker();\n\n // start a page refresher\n const pageRefresher = useRefresher(getUserProfile, PROFILE_REFRESH_INTERVAL);\n\n // #endregion STATE\n /**************************************************************************\n EFFECTS\n **************************************************************************/\n // #region EFFECTS\n \n // onMount\n React.useEffect(\n () => {\n if (!showSidebar && shouldShowSidebar(profile.userProfile, navStrings))\n setShowSidebar(true)\n }, [profile.userProfile, navStrings]\n )\n\n // onUpdate\n React.useEffect(\n () => {\n // check for redirect\n checkForRedirect(history.location, userManager, serviceWorker);\n\n return () => {\n // cleanup\n }\n },\n [history.location]\n );\n\n // check for navigation\n React.useEffect(\n () => {\n // do not navigate if current pathname is one of oidc's process pages\n const doNotNav = ['/callback', '/silent_renew', '/session_ended']\n\n if (history.location.pathname === CONST.getNavString(selectedNavIndex, navStrings)) return;\n else if (doNotNav.includes(history.location.pathname)) return;\n else if (history.location.pathname !== CONST.getNavString(selectedNavIndex, navStrings)){\n history.push(CONST.getNavString(selectedNavIndex, navStrings));\n }\n \n },\n [selectedNavIndex]\n )\n\n // if user profile updates we need to add or remove nav menu links according to privilege\n React.useEffect(\n () => {\n setPrivileges(profile.userProfile.privileges || []);\n setNavStrings(\n CONST.navStringsPrivilegeFilter(\n profile.userProfile.privileges || []\n ) || \n [[]]\n );\n return () => {}\n }, [profile.userProfile]\n );\n // #endregion\n\n // handle clearing a page error\n const dismissError: {[key: string]: () => any} = {\n \"datasource\": props.clearDatasourceError,\n \"userProfile\": props.clearUserProfileError,\n \"userEditor\": props.clearUserEditorError,\n \"userDashboard\": props.clearUserDashboardError,\n \"organizationDashboard\": props.clearOrganizationDashboardError,\n \"organizationEditor\": props.clearOrganizationEditorError,\n \"feedbackDashboard\": props.clearFeedbackDashboardError,\n \"feedbackEditor\": props.clearFeedbackDetailError,\n \"messageDashboard\": props.clearMessageDashboardError,\n \"messageEditor\": props.clearMessageEditorError,\n \"roleDashboard\": props.clearRoleDashboardError,\n \"roleEditor\": props.clearRoleEditorError,\n \"sync\": props.clearSynchronizationError\n };\n\n // handle creating a page error\n const injectErrorModal = () => {\n\n const potentialErrors = [\n props.datasource.error, props.profile.error, props.organizationDashboard.error,\n props.organizationEditor.error, props.userDashboard.error, props.userEditor.error,\n props.feedbackDashboard.error, props.feedbackDetail.error, props.messageDashboard.error,\n props.messageEditor.error, props.roleDashboard.error, props.roleEditor.error, \n props.synchronization.error\n ];\n\n potentialErrors.map(\n (error: any, mapIndex: number) => {\n if (error) \n return \n else return null;\n }\n );\n };\n\n const auth = useAuth();\n const user = auth.user;\n\n const defaultLanding = (!user || user.expired) \n ? Redirect \n : (\n profile.initialized \n ? AccessDenied \n : Loading\n );\n\n /**************************************************************************\n ERROR RENDER\n *************************************************************************/\n // #region ERROR RENDER\n if (errorObject.hasError){\n return (\n
    \n
    \n

    Something went wrong

    \n

    Please refresh the page. If problems persist, please contact the system administrator.

    \n
    \n \n
    \n
    \n
    \n );\n }\n // #endregion\n\n /**************************************************************************\n PRIMARY RENDER\n *************************************************************************/\n // #region PRIMARY RENDER\n try{\n\n return (\n \n \n
    setShowSidebar(!showSidebar)} setRootNavIndex={() => setSelectedNavIndex([-1,0])} />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {injectErrorModal()}\n \n \n \n \n \n \n \n \n );\n }catch(err){\n console.error(\"Template Error: \\n\", err);\n\n setErrorObject({\n hasError: true,\n error: err,\n info: null\n });\n \n return null;\n }\n //#endregion\n};\n\nexport default connect(\n mapStateToProps, \n mapDispatchToProps\n)(withRouter(TemplatePage));\n\n\nconst shouldShowSidebar = (userProfile: IAAUserAuthorizationProfile, navStrings: string[][]) => {\n return (\n userProfile && \n navStrings[0] && \n navStrings[0].length > 0\n );\n}","// libraries\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { BrowserRouter } from 'react-router-dom';\nimport {ThemeProvider} from \"styled-components\";\nimport { useAuth, hasAuthParams } from \"react-oidc-context\";\nimport { \n ThemeContext, getTheme, EThemeOptions \n} from \"@caps-mobile/algo-theme\";\nimport { ToastProvider } from \"@caps-mobile/toast\";\n// store\nimport store from './store';\n// components\nimport Template from \"./components/template/Template\";\n\nconst App: React.FC = () => {\n\n const [themeMode, setThemeMode] = \n React.useState(EThemeOptions.Light);\n\n const [themeObject, setThemeObject] =\n React.useState(getTheme(themeMode));\n\n // The point of this script is to capture the session storage'd user \n // and silently renew the access token.\n const [hasTriedSignin, setHasTriedSignin] = React.useState(false);\n const auth = useAuth();\n \n React.useEffect(() => {\n if (!hasAuthParams() && !auth.isAuthenticated && !auth.activeNavigator \n && !auth.isLoading && !hasTriedSignin\n ) {\n // console.log(\"signinSilent: ATTEMPTED \\nlocation.pathname: %s \\nauth.isAuthenticated: %s \\nauth.activeNavigator: %s \\nauth.isLoading: %s \\nhasTriedSignin: %s \\nhereContext.HEREScriptLoaded: %s \\nhereContext.HARPScriptLoaded: %s\", \n // location.pathname, auth.isAuthenticated, auth.activeNavigator, auth.isLoading, hasTriedSignin, hereContext.HEREScriptLoaded, hereContext.HARPScriptLoaded);\n auth.signinSilent();\n \n setHasTriedSignin(true);\n }\n // else {\n // console.log(\"signinSilent: NOT ATTEMPTED \\nlocation.pathname: %s \\nauth.isAuthenticated: %s \\nauth.activeNavigator: %s \\nauth.isLoading: %s \\nhasTriedSignin: %s \\nhereContext.HEREScriptLoaded: %s \\nhereContext.HARPScriptLoaded: %s\", \n // location.pathname, auth.isAuthenticated, auth.activeNavigator, auth.isLoading, hasTriedSignin, hereContext.HEREScriptLoaded, hereContext.HARPScriptLoaded);\n // }\n }, [auth, hasTriedSignin]);\n\n return (\n \n \n \n \n \n