{"version":3,"sources":["webpack:///./Frontend/src/Models/Models.ts","webpack:///./Frontend/src/Components/Common/index.ts","webpack:///./Frontend/src/Actions/Types.ts","webpack:///./Frontend/src/View/Products/Enums/App.ts","webpack:///./Frontend/src/Enums/Enums.ts","webpack:///./Frontend/src/Enums/DigitalShareAppType.ts","webpack:///./Frontend/src/Enums/RenderType.ts","webpack:///./Frontend/src/globalStyles/index.ts","webpack:///./Frontend/src/Models/IBrand.ts","webpack:///./Frontend/src/Enums/DigitalShareItemType.ts","webpack:///./Frontend/src/Enums/ScoutFeature.ts","webpack:///./Frontend/src/Common/CurrentFeatureFlags.ts","webpack:///./Frontend/src/View/Products/Constants/StyleConstants.ts","webpack:///./Frontend/src/Models/IRetailMatch.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/DigitalShareGenerator.tsx","webpack:///./Frontend/src/Models/IRootReducer.ts","webpack:///./Frontend/src/Actions/Actions.ts","webpack:///./Frontend/src/Reducers/Selectors/UserSelectors.ts","webpack:///./Frontend/src/Models/IUser.ts","webpack:///./Frontend/src/Util/RetailMatch/RetailMatchUtil.tsx","webpack:///./Frontend/src/Actions/UserActions.ts","webpack:///./Frontend/src/Models/IGCPBigQueryJob.ts","webpack:///./Frontend/src/View/Products/Selectors/AppSelectors.ts","webpack:///./Frontend/src/View/Products/Models/Maps/IPolygon.ts","webpack:///./Frontend/src/Models/ISafegraphLocation.ts","webpack:///./Frontend/src/View/Products/Reducers/RootReducer.ts","webpack:///./Frontend/src/View/Products/Selectors/MobilyticsSelectors.ts","webpack:///./Frontend/src/View/Products/Models/Models.ts","webpack:///./Frontend/src/Enums/RetailMatchGeographyOption.ts","webpack:///./Frontend/src/Components/Common/Loading/Loading.tsx","webpack:///./Frontend/src/Actions/AxiosActions.ts","webpack:///./Frontend/src/Models/IAnalysisItem.ts","webpack:///./Frontend/src/View/Products/Models/IMapMarker.ts","webpack:///./Frontend/src/View/Products/Models/Notification.ts","webpack:///./Frontend/src/globalStyles/breakpoints.ts","webpack:///./Frontend/src/globalStyles/colors/scoutColors.ts","webpack:///./Frontend/src/Reducers/Selectors/GPSInsightsSelectors.ts","webpack:///./Frontend/src/View/Products/Actions/MobilyticsActions.ts","webpack:///./Frontend/src/Components/Common/Icon/antDesignIcons.js","webpack:///./Frontend/src/View/Products/Pages/Apps/Mobilytics/SubmitMobilyticsLogic.ts","webpack:///./Frontend/src/Models/IStore.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Logic/SharedMethods.ts","webpack:///./Frontend/src/View/Products/Logic/PolygonLogic.ts","webpack:///./Frontend/src/View/Products/Models/Maps/Enums/PolygonType.ts","webpack:///./Frontend/src/View/Products/Enums/LinkType.ts","webpack:///./Frontend/src/View/Products/Enums/VoidGapFilters.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/RetailMatchIntroStyles.ts","webpack:///./Frontend/src/Actions/GPSInsightsActions.ts","webpack:///./Frontend/src/View/Products/Enums/AppView.ts","webpack:///./Frontend/src/View/Products/Enums/SubmitRetailMatch.ts","webpack:///./Frontend/src/Util/ScoutDigitalShareUtil.tsx","webpack:///./Frontend/src/Actions/RetailMatchActions.ts","webpack:///./Frontend/src/View/Products/Selectors/LoginSelectors.ts","webpack:///./Frontend/src/Models/Requests/ISubmitMobilyticsJobRequest.ts","webpack:///./Frontend/src/Contracts/index.ts","webpack:///./Frontend/src/Models/Requests/IGetBrandsSampleSetDataByGeoRequest.ts","webpack:///./Frontend/src/Enums/CompanyType.ts","webpack:///./Frontend/src/Models/OktaModels/IOktaMFAFactor.ts","webpack:///./Frontend/src/Util/ColorUtil.ts","webpack:///./Frontend/src/Enums/RetailMatchMetricLevel.ts","webpack:///./Frontend/src/View/Products/Types/MobilyticsActionTypes.ts","webpack:///./Frontend/src/Models/IMyReportsReport.ts","webpack:///./Frontend/src/View/Products/Models/IReportProgress.ts","webpack:///./Frontend/src/View/Products/Enums/MatchReportTypeEnum.ts","webpack:///./Frontend/src/View/Products/Types/VoidGapFilterTypes.ts","webpack:///./Frontend/src/Actions/VerbiageActions.ts","webpack:///./Frontend/src/Enums/AppArea.ts","webpack:///./Frontend/src/Components/Common/ReportStyles/Text.tsx","webpack:///./Frontend/src/Reducers/Selectors/RetailMatchSelectors.ts","webpack:///./Frontend/src/View/Products/Actions/CommonActions.ts","webpack:///./Frontend/src/View/Products/Actions/RetailMatchActions.ts","webpack:///./Frontend/src/Models/IGPSData.ts","webpack:///./Frontend/src/Enums/AnalysisStatus.ts","webpack:///./Frontend/src/Actions/ReportMapActions.ts","webpack:///./Frontend/src/Models/Requests/IGetBrandsSampleSetDataByClosestRequest.ts","webpack:///./Frontend/src/View/Products/Enums/NotificationType.ts","webpack:///./Frontend/src/Models/Requests/ISubmitRetailMatchJobRequest.ts","webpack:///./Frontend/src/Components/Apps/My Data/Logic/MyDataLogic.tsx","webpack:///./Frontend/src/Components/Common/SharedActions.ts","webpack:///./Frontend/src/Logic/CommonLogic.ts","webpack:///./Frontend/src/View/Products/Actions/AppActions.ts","webpack:///./Frontend/src/Logic/ReportLogic.ts","webpack:///./Frontend/src/View/Products/Selectors/MapSelectors.ts","webpack:///./Frontend/src/View/Products/Selectors/BrandSelectors.ts","webpack:///./Frontend/src/View/Products/Constants/RegularExpression.ts","webpack:///./Frontend/src/Enums/AnalysisSource.ts","webpack:///./Frontend/src/View/Products/Models/ILoginUserData.ts","webpack:///./Frontend/src/Components/Common/GenericIcon/GenericIcon.Helpers.ts","webpack:///./Frontend/src/View/Products/Models/Maps/ICustomPolygon.ts","webpack:///./Frontend/src/View/Products/Models/Requests/IVoidGapRequest.ts","webpack:///./Frontend/src/Actions/LoadScoutActions.ts","webpack:///./Frontend/src/Models/IStoreUpdateAuditResult.ts","webpack:///./Frontend/src/View/Products/Actions/UserActions.ts","webpack:///./Frontend/src/Components/Apps/Network Audit/constants.ts","webpack:///./Frontend/src/Models/IDigitalShareItem.ts","webpack:///./Frontend/src/View/Products/Logic/AppLogic.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Util/RetailMatchUtil.ts","webpack:///./Frontend/src/View/Products/Actions/BrandActions.ts","webpack:///./Frontend/src/View/Products/Actions/MapActions.ts","webpack:///./Frontend/src/View/Products/Actions/ReportActions.ts","webpack:///./Frontend/src/Util/ReportUtil.ts","webpack:///./Frontend/src/Models/IMapMarker.ts","webpack:///./Frontend/src/View/Products/Models/Requests/Notifications/UpdateNotificationRequest.ts","webpack:///./Frontend/src/Components/Common/Map/Styles/MapStyles.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/DigitalShareCommonStyles.tsx","webpack:///./Frontend/src/Enums/ReportTypeEnum.ts","webpack:///./Frontend/src/Models/IBrandSummaryData.ts","webpack:///./Frontend/src/Enums/Okta.ts","webpack:///./Frontend/src/Reducers/ReportsReducer.ts","webpack:///./Frontend/src/Models/IPolygon.ts","webpack:///./Frontend/src/Reducers/DigitalShareReducer.ts","webpack:///./Frontend/src/Reducers/GPSInsightsReducer.ts","webpack:///./Frontend/src/Reducers/LoadScoutReducer.ts","webpack:///./Frontend/src/Reducers/ReportMapReducer.ts","webpack:///./Frontend/src/Reducers/RetailMatchReducer.ts","webpack:///./Frontend/src/Reducers/UserReducer.ts","webpack:///./Frontend/src/View/Products/Reducers/AppReducer.ts","webpack:///./Frontend/src/View/Products/Models/ILinkObject.ts","webpack:///./Frontend/src/View/Products/Types/LoginActionTypes.ts","webpack:///./Frontend/src/Models/BrandMap.ts","webpack:///./Frontend/src/View/Products/Models/Maps/ICircle.ts","webpack:///./Frontend/src/View/Products/Models/Maps/IRectangle.ts","webpack:///./Frontend/src/Enums/RetailMatchTimeOption.ts","webpack:///./Frontend/src/View/Products/Reducers/SubmitMatchFormReducer.ts","webpack:///./Frontend/src/Logic/DashboardMessageLogic.ts","webpack:///./Frontend/src/Logic/UserLogic.ts","webpack:///./Frontend/src/Components/Common/Button/Button.tsx","webpack:///./Frontend/src/View/Products/Actions/NotificationActions.ts","webpack:///./Frontend/src/View/Products/Selectors/NotificationsSelectors.ts","webpack:///./Frontend/src/Components/Apps/GPSInsights/MobilyticsPolygonSelect.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchReportContainer.tsx","webpack:///./Frontend/src/View/Products/Models/MobilyticsQueryParam.ts","webpack:///./Frontend/src/View/Products/Actions/PlaceSearchActions.ts","webpack:///./Frontend/src/View/Products/Selectors/CommonSelectors.ts","webpack:///./Frontend/src/View/Products/Actions/Actions.ts","webpack:///./Frontend/src/Actions/ConfigurableReportActions.ts","webpack:///./Frontend/src/Models/IReportType.ts","webpack:///./Frontend/src/Enums/RetailMatchSelectionMethod.ts","webpack:///./Frontend/src/Enums/GPSMapEnum.ts","webpack:///./Frontend/src/Reducers/CompanySupportTeamReducer.ts","webpack:///./Frontend/src/Enums/DialogTrainingState.ts","webpack:///./Frontend/src/Reducers/TerritoryManagementReducer.ts","webpack:///./Frontend/src/Reducers/UserManagementReducer.ts","webpack:///./Frontend/src/Reducers/UserPreferencesReducer.ts","webpack:///./Frontend/src/Reducers/UserProfileReducer.ts","webpack:///./Frontend/src/View/Products/Types/UserActionTypes.ts","webpack:///./Frontend/src/View/Products/Types/BrandActionTypes.ts","webpack:///./Frontend/src/View/Products/Types/CategoryActionTypes.ts","webpack:///./Frontend/src/View/Products/Types/CommonActionTypes.ts","webpack:///./Frontend/src/View/Products/Reducers/LoginReducer.ts","webpack:///./Frontend/src/Models/CategoryMap.ts","webpack:///./Frontend/src/View/Products/Reducers/NotificationsReducer.ts","webpack:///./Frontend/src/View/Products/Types/NotificationActionTypes.ts","webpack:///./Frontend/src/View/Products/Enums/ReportProgressStage.ts","webpack:///./Frontend/src/View/Products/Types/ReportActionTypes.ts","webpack:///./Frontend/src/View/Products/Types/RetailMatchActionTypes.ts","webpack:///./Frontend/src/Reducers/FactorReducer.ts","webpack:///./Frontend/src/Logic/SessionLogic.ts","webpack:///./Frontend/src/Components/Common/BuxTooltip/BuxTooltip.tsx","webpack:///./Frontend/src/Util/MobilyticsUtil.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/Templates/TemplateStyles.ts","webpack:///./Frontend/src/Util/Debugging/ConsoleReplacement.ts","webpack:///./Frontend/src/Components/Common/ReportStyles/ReportWrappers.tsx","webpack:///./Frontend/src/Components/Common/ReportComponents/ReportStickyNav.tsx","webpack:///./Frontend/src/View/Products/Actions/LoginActions.ts","webpack:///./Frontend/src/View/Products/Pages/Home/Login/LinkConfig.tsx","webpack:///./Frontend/src/Components/Apps/RightNav/Mobilytics/Models/IMobilyticsScenarioFormProps.ts","webpack:///./Frontend/src/Components/Layout/Body.css?253f","webpack:///./Frontend/src/Components/Apps/GPSInsights/GPSInsightsReportContainer.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Styled/index.ts","webpack:///./Frontend/src/Enums/MapTypesEnum.ts","webpack:///./Frontend/src/Models/IBrandOverviewTableRecord.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchIntroTextHeader.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchLocationsAnalyzed.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/BrandLogo/BrandLogoSmall.tsx","webpack:///./Frontend/src/View/Products/API/MobilyticsApi.ts","webpack:///./Frontend/src/View/Products/Actions/SideNavActions.ts","webpack:///./Frontend/src/View/Products/Components/SubmittedReport/SubmittedReportLogic.tsx","webpack:///./Frontend/src/Actions/BookmarkActions.ts","webpack:///./Frontend/src/Contracts/ICompanySupportTeamAxios.ts","webpack:///./Frontend/src/Contracts/Axios/GPSInsightsAxios.ts","webpack:///./Frontend/src/Models/IMobilyticsScenario.ts","webpack:///./Frontend/src/Contracts/IUserPreferencesAxios.ts","webpack:///./Frontend/src/Contracts/IVisualization.ts","webpack:///./Frontend/src/Contracts/IReportMapAxios.ts","webpack:///./Frontend/src/Enums/ActiveApp.ts","webpack:///./Frontend/src/Actions/ReportsActions.ts","webpack:///./Frontend/src/Logic/NotificationLogic.ts","webpack:///./Frontend/src/Models/IProcessReportsResult.ts","webpack:///./Frontend/src/Models/IProcessJobsResult.ts","webpack:///./Frontend/src/Models/IAddress.ts","webpack:///./Frontend/src/Models/IStoreType.ts","webpack:///./Frontend/src/Models/OktaModels/IOktaMFAFactorLink.ts","webpack:///./Frontend/src/View/Products/Types/AppActionTypes.ts","webpack:///./Frontend/src/View/Products/Components/Map/MapLogic.tsx","webpack:///./Frontend/src/Enums/RetailMatchMetricTier.ts","webpack:///./Frontend/src/View/Products/Models/IMapPolygon.ts","webpack:///./Frontend/src/View/Products/Types/MapActionTypes.ts","webpack:///./Frontend/src/View/Products/Components/Notifications/NotificationsLogic.tsx","webpack:///./Frontend/src/View/Products/Components/Notifications/NotificationsStyled.tsx","webpack:///./Frontend/src/View/Products/Enums/ReportType.ts","webpack:///./Frontend/src/View/Products/Types/SideNavActionTypes.ts","webpack:///./Frontend/src/View/Products/Logic/MatchLogic.ts","webpack:///./Frontend/src/View/Products/Types/SubmitMatchFormTypes.ts","webpack:///./Frontend/src/View/Products/Types/VoidGapActionTypes.ts","webpack:///./Frontend/src/Actions/MyDataActions.ts","webpack:///./Frontend/src/Contracts/Axios/MyDataAxios.ts","webpack:///./Frontend/src/Common/Store.ts","webpack:///./Frontend/src/Contracts/Axios/index.ts","webpack:///./Frontend/src/Components/Apps/My Data/Components/MyDataColumns.tsx","webpack:///./Frontend/src/Models/IBadGeocode.ts","webpack:///./Frontend/src/Actions/UserPreferencesActions.ts","webpack:///./Frontend/src/Reducers/RootReducer.ts","webpack:///./Frontend/src/Reducers/BookmarkReducer.ts","webpack:///./Frontend/src/Reducers/LeftNavReducer.ts","webpack:///./Frontend/src/Reducers/MapSettingsReducer.ts","webpack:///./Frontend/src/Reducers/MobilyticsPlacesReducer.ts","webpack:///./Frontend/src/Reducers/SalesPerformanceReducer.ts","webpack:///./Frontend/src/Reducers/SessionReducer.ts","webpack:///./Frontend/src/Reducers/ToolboxReducer.ts","webpack:///./Frontend/src/Reducers/TwoByTwoReducer.ts","webpack:///./Frontend/src/Reducers/NotificationWorkflowReducer.ts","webpack:///./Frontend/src/Contracts/Axios/GPSServiceAxios.ts","webpack:///./Frontend/src/Components/Common/Charts/ChartContainer.ts","webpack:///./Frontend/src/Components/Apps/GPSInsights/DigitalShare/Templates/GPSInsightsDigitalShareTemplate.tsx","webpack:///./Frontend/src/Contracts/Axios/RetailMatchAxios.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/Templates/DigitalShareTemplate.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/DigitalShare/Templates/RetailMatchDigitalShareTemplate.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchKeyMetricsSharing.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/RetailMatchKeyMetricsStyles.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchIntroTextIndexBreakout.tsx","webpack:///./Frontend/src/Util/TemplateImageGenerator.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/Dialogue/DialogueStyles.ts","webpack:///./Frontend/src/Components/Common/Button/TextButton.tsx","webpack:///./Frontend/src/Actions/DigitalShareActions.ts","webpack:///./Frontend/src/Components/Common/Charts/ChartTitle.tsx","webpack:///./Frontend/src/Components/Common/ChartStyles/ChartWrapper.tsx","webpack:///./Frontend/src/Components/Common/GoogleMapsMarker/GoogleMapsMarker.tsx","webpack:///./Frontend/src/Components/Common/Input/Fields.tsx","webpack:///./Frontend/src/Components/Common/Map/ReportMap.tsx","webpack:///./Frontend/src/Components/Common/ReportComponents/ReportBackLink.tsx","webpack:///./Frontend/src/Components/Common/Text.tsx","webpack:///./Frontend/src/Components/Common/ReportStyles/Menu.tsx","webpack:///./Frontend/src/Components/Common/ReportStyles/Buttons.tsx","webpack:///./Frontend/src/Components/Common/ReportStyles/ReportStickyNav.tsx","webpack:///./Frontend/src/View/Products/Components/NavBar.tsx","webpack:///./Frontend/src/Actions/WindowActions.ts","webpack:///./Frontend/src/Components/Common/Layout/Navigation.tsx","webpack:///./Frontend/src/View/Products/Logic/NavLogic.ts","webpack:///./Frontend/src/View/Products/Components/Notifications/NotificationsModal.tsx","webpack:///./Frontend/src/View/Products/Components/SideNav.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/ItemMap.tsx","webpack:///./Frontend/src/Components/Common/EditInput.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Styled/Table.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Volume/GPSRelVolMetStyles.ts","webpack:///./Frontend/src/Util/MapLayers/MapLayers.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/Map/GoogleMapBrandMarker.js","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/Map/MapUtil.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchHeader/RetailMatchHeader.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchIntroduction.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/RetailGrid.tsx","webpack:///./Frontend/src/Logic/FileLogic.ts","webpack:///./Frontend/src/Components/Apps/User Settings/UserSettingsContainer.tsx","webpack:///./Frontend/src/View/Products/Sagas/RootSaga.ts","webpack:///./Frontend/src/View/Products/Actions/CategoryActions.ts","webpack:///./Frontend/src/View/Products/API/CommonApi.ts","webpack:///./Frontend/src/View/Products/Sagas/MobilyticsSagas.ts","webpack:///./Frontend/src/View/Products/Sagas/PlaceSearchSagas.ts","webpack:///./Frontend/src/View/Products/Types/PlaceSearchTypes.ts","webpack:///./Frontend/src/View/Products/Models/IPolygonQueryParams.ts","webpack:///./Frontend/src/View/Products/Util/GeocoderUtil.ts","webpack:///./Frontend/src/View/Products/Logic/MobilyticsLogic.ts","webpack:///./Frontend/src/View/Products/Util/LatLngUtil.ts","webpack:///./Frontend/src/View/Products/Models/Requests/Notifications/GetNotificationsRequest.ts","webpack:///./Frontend/src/View/Products/Models/Requests/Notifications/UpdateAllNotificationsActiveStatusRequest.ts","webpack:///./Frontend/src/View/Products/Models/Requests/Notifications/UpdateAllNotificationsReadStatusRequest.ts","webpack:///./Frontend/src/Models/IVennChart.ts","webpack:///./Frontend/src/Actions/CompanySupportTeamActions.ts","webpack:///./Frontend/src/Contracts/Axios/CompanySupportTeamAxios.ts","webpack:///./Frontend/src/Contracts/Axios/ConfigurableReportsAxios.ts","webpack:///./Frontend/src/Logic/ConfigurableReportLogic.ts","webpack:///./Frontend/src/Actions/FactorActions.ts","webpack:///./Frontend/src/Contracts/IAuthentication.ts","webpack:///./Frontend/src/Contracts/IHome.ts","webpack:///./Frontend/src/Contracts/IMyDataAxios.ts","webpack:///./Frontend/src/Contracts/ITwoByTwoAxios.ts","webpack:///./Frontend/src/Contracts/IGPSInsightsAxios.ts","webpack:///./Frontend/src/Contracts/IRetailMatchAxios.ts","webpack:///./Frontend/src/Enums/UserLoginStatus.ts","webpack:///./Frontend/src/Enums/TerritoryTypePermission.ts","webpack:///./Frontend/src/Enums/UserSettingsEnums.ts","webpack:///./Frontend/src/Enums/CommunityMatchActivityColumn.ts","webpack:///./Frontend/src/Enums/CommunityMatchContactColumn.ts","webpack:///./Frontend/src/Enums/GPSInsights.ts","webpack:///./Frontend/src/Enums/ChartsEnum.ts","webpack:///./Frontend/src/Contracts/Axios/ReportMapAxios.ts","webpack:///./Frontend/src/Util/BuxtonDeck.ts","webpack:///./Frontend/src/Enums/DataBucketTypeEnum.ts","webpack:///./Frontend/src/Models/IGeocodeResponse.ts","webpack:///./Frontend/src/Enums/GeoAccuracy.ts","webpack:///./Frontend/src/Models/OktaModels/IOktaMFAFactorProfile.ts","webpack:///./Frontend/src/Models/OktaModels/IOktaMFAFactorLinks.ts","webpack:///./Frontend/src/View/Products/Reducers/BrandsReducer.ts","webpack:///./Frontend/src/View/Products/Reducers/CategoriesReducer.ts","webpack:///./Frontend/src/View/Products/Reducers/CommonReducer.ts","webpack:///./Frontend/src/View/Products/Models/ILogin.ts","webpack:///./Frontend/src/View/Products/Reducers/MapReducer.ts","webpack:///./Frontend/src/Enums/RetailMatchIndexColor.ts","webpack:///./Frontend/src/Enums/RetailMatchDynamicTextEnum.ts","webpack:///./Frontend/src/View/Products/Reducers/MobilyticsReducer.ts","webpack:///./Frontend/src/View/Products/Reducers/ReportsReducer.ts","webpack:///./Frontend/src/View/Products/Reducers/RetailMatchReducer.ts","webpack:///./Frontend/src/View/Products/Reducers/SideNavReducer.ts","webpack:///./Frontend/src/View/Products/Reducers/VoidGapReducer.ts","webpack:///./Frontend/src/Contracts/Axios/AuthenticationAxios.ts","webpack:///./Frontend/src/Contracts/Axios/HomeAxios.ts","webpack:///./Frontend/src/Contracts/Axios/VisualizationAxios.ts","webpack:///./Frontend/src/Actions/SalesPerformanceActions.ts","webpack:///./Frontend/src/Actions/SessionActions.ts","webpack:///./Frontend/src/Actions/TerritoryManagementActions.ts","webpack:///./Frontend/src/Contracts/Axios/TerritoryManagementAxios.ts","webpack:///./Frontend/src/Contracts/ITerritoryManagementAxios.ts","webpack:///./Frontend/src/Actions/TwoByTwoActions.ts","webpack:///./Frontend/src/Contracts/Axios/TwoByTwoAxios.ts","webpack:///./Frontend/src/Actions/UserManagementActions.ts","webpack:///./Frontend/src/Contracts/Axios/UserManagementAxios.ts","webpack:///./Frontend/src/Contracts/IUserManagementAxios.ts","webpack:///./Frontend/src/Contracts/Axios/UserPreferencesAxios.ts","webpack:///./Frontend/src/Enums/LeftNavSection.ts","webpack:///./Frontend/src/Models/IStoreExploreData.ts","webpack:///./Frontend/src/Reducers/MyDataReducer.ts","webpack:///./Frontend/src/Reducers/TableauReducer.ts","webpack:///./Frontend/src/Actions/TableauActions.ts","webpack:///./Frontend/src/Actions/UserProfileActions.ts","webpack:///./Frontend/src/Contracts/Axios/UserProfileAxios.ts","webpack:///./Frontend/src/Contracts/IUserProfileAxios.ts","webpack:///./Frontend/src/Models/OktaModels/IOktaMFAFactorPushVerifyResult.ts","webpack:///./Frontend/src/Models/OktaModels/IOktaMFAFactorVerifyLinks.ts","webpack:///./Frontend/src/Util/FeatureFlags/FeatureFlags.prod.ts","webpack:///./Frontend/src/Contracts/IGPSServiceAxios.ts","webpack:///./Frontend/src/Components/Common/Charts/index.ts","webpack:///./Frontend/src/Components/Common/Charts/AMXYChart.tsx","webpack:///./Frontend/src/Components/Common/Charts/RechartBarLine.tsx","webpack:///./Frontend/src/Components/Common/Charts/IndexBar.tsx","webpack:///./Frontend/src/Components/Common/Charts/RechartPyramid.tsx","webpack:///./Frontend/src/Components/Common/Charts/NivoCalendar.tsx","webpack:///./Frontend/src/Actions/PrintActions.ts","webpack:///./Frontend/src/Contracts/Axios/PrintAxios.ts","webpack:///./Frontend/src/Enums/DigitalShareSectionEnum.ts","webpack:///./Frontend/src/Components/Apps/GPSInsights/DigitalShare/Templates/GPSTemplateStyles.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/DigitalShare/Templates/RetailMatchTemplateStyles.ts","webpack:///./Frontend/src/Util/ZipFileCreator.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/Dialogue/DigitalShareDialogue.tsx","webpack:///./Frontend/src/Components/Common/DigitalShare/Dialogue/DialogueOutputs.tsx","webpack:///./Frontend/src/Components/Common/DigitalShare/Dialogue/ProgressLogic.ts","webpack:///./Frontend/src/Util/DataUtil.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/ProgressScreen.tsx","webpack:///./Frontend/src/Components/Common/Charts/VennChart.tsx","webpack:///./Frontend/src/Components/Common/ChartStyles/VennChart.ts","webpack:///./Frontend/src/Components/Common/DigitalShare/ContentSections/PsychProfSumm.tsx","webpack:///./Frontend/src/Components/Common/Loading/Loading.css?9ca0","webpack:///./Frontend/src/Components/Common/Loading/Loading.css","webpack:///./Frontend/src/Reducers/Selectors/ReportMapSelectors.ts","webpack:///./Frontend/src/Components/Common/Map/GoogleMapDarkStyle.ts","webpack:///./Frontend/src/Components/Common/MessageHandlers/MessageListener.tsx","webpack:///./Frontend/src/Components/Common/MessageHandlers/ConfigurableReportingListener.ts","webpack:///./Frontend/src/Components/Common/PlaceholderCard.tsx","webpack:///./Frontend/src/Components/Common/PlaceholderCard.css?3885","webpack:///./Frontend/src/Components/Common/PlaceholderCard.css","webpack:///./Frontend/src/Components/Common/PolygonNameWithCircle.tsx","webpack:///./Frontend/src/Components/Common/ProgressBar.tsx","webpack:///./Frontend/src/Components/Common/ReportComponents/ReportChartGroup.tsx","webpack:///./Frontend/src/Components/Common/ReportComponents/ReportSharingMenu.tsx","webpack:///./Frontend/src/Components/Common/ReportStyles/index.ts","webpack:///./Frontend/src/Components/Common/ReportStyles/ReportHeader.tsx","webpack:///./Frontend/src/Components/Common/ReportStyles/Grid.ts","webpack:///./Frontend/src/Components/Common/Segments/SegCardStyles.tsx","webpack:///./Frontend/src/Components/Common/Tables.tsx","webpack:///./Frontend/src/Components/Common/UserAvatar.tsx","webpack:///./Frontend/src/Components/Common/Wrapper.tsx","webpack:///./Frontend/src/Components/Common/Menus/ActiveUsers.tsx","webpack:///./Frontend/src/Components/Common/User Dropdown/UserDropdown.tsx","webpack:///./Frontend/src/Logic/EnvLogic.ts","webpack:///./Frontend/src/Components/Layout/Body.css","webpack:///./Frontend/src/Components/Apps/GPSInsights/GPSHeader/GPSHeader.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Styled/Wrapper.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Styled/Cards.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Styled/Tip.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Styled/Buttons.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Styled/GeographyResult.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/GPSHeader/GPSHeaderDateBlock.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/GPSInsightsForm.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/ItemMap.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/GPSInsightsReport.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/HHCharacteristics/HHCharContainer.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/HHCharacteristics/IdealVisitorSegments.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/HHCharacteristics/HHCharacteristicsStyles.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/HHCharacteristics/GPSPsychProfileShare.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/HHCharacteristics/HHCharChartCharts.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Volume/GPSInsightsVolume.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Volume/GPSRelVolMet.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Volume/GPSRelVolMetOutput.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Volume/GPSVolumeMetrics.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Volume/GPSVolumeMetricsOutput.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Volume/GPSVolumeMetricsStyled.ts","webpack:///./Frontend/src/Components/Apps/GPSInsights/TradeArea/GPSTradeArea.tsx","webpack:///./Frontend/src/Components/Common/Charts/RechartTAA.tsx","webpack:///./Frontend/src/Components/Common/ChartStyles/TAAStyles.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/Common.ts","webpack:///./Frontend/src/Components/Common/Select.css?2ba1","webpack:///./Frontend/src/Components/Common/Select.css","webpack:///./Frontend/src/Reducers/Selectors/ChartSelectors.ts","webpack:///./Frontend/src/Components/Apps/GPSInsights/TradeArea/GPSMap.tsx","webpack:///./Frontend/src/Models/IMapLayers.ts","webpack:///./Frontend/src/Util/MapLayers/MapLayerOptions.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/TradeArea/GPSVisitOrig.tsx","webpack:///./Frontend/src/Logic/WebGLLogic.ts","webpack:///./Frontend/src/Components/Apps/GPSInsights/VisitorBehaviors/VisitorBehaviorsContainer.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/VisitorBehaviors/FrequentlyVisitedPlaces.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/VisitorBehaviors/FrequentlyVisitedPlacesMap.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/VisitorBehaviors/PolygonCircleWithNumber.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/VisitorBehaviors/VisitorLoyalty.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/VisitorBehaviors/VisitorLoyaltySharing.tsx","webpack:///./Frontend/src/Components/Apps/GPSInsights/GPSStickyNav.tsx","webpack:///./Frontend/src/Components/Layout/RechartsOverrides.css?861f","webpack:///./Frontend/src/Components/Layout/RechartsOverrides.css","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/RetailMatchChartIndexPill.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/Map/RetailMatchMapLegend.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/LegendItem.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/BrandLogo/BrandLogoBase.tsx","webpack:///./Frontend/src/Components/Common/GenericIcon/GenericIcon.tsx","webpack:///./Frontend/src/Components/Common/GenericIcon/GenericIcon.Styles.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/LocationsAnalyzedSharing.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/IndexValuesDescription.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchMultiBrand.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchBrandCard.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/RetailMatchBrandCardBottomRow.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/RetailMatchBrandCardWrapper.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/Buttons.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/IntroModals/RetailMatchIntroAddPhoto.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/IntroModals/RetailMatchIntroAddSiteDetails.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/IntroModals/RetailMatchIntroEditBrandLogo.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/IntroModals/RetailMatchIntroPhotoCarousel.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/PhotoCarouselLightbox.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchIntroText.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchEditAddressModal.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchMultiBrandIndexBreakout.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchBreakoutItem.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchBreakoutItemBar.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchBreakoutItemWord.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchReport.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchHouseholdComposition.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Styled/RetailMatchHouseholdCompositionStyles.ts","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchKeyMetrics.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchPsychProf.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchPsychProfShare.tsx","webpack:///./Frontend/src/Components/Apps/RetailMatch/Components/RetailMatchStickyNav.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/UserSettings.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/TerritoryManagement.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/UserManagement.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/UserPreferences.tsx","webpack:///./Frontend/src/Enums/SearchArea.ts","webpack:///./Frontend/src/Components/Apps/User Settings/Components/DefaultLoginApp.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/UserProfile.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/MultiFactorModal.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/MultiFactorModal.css?1b17","webpack:///./Frontend/src/Components/Apps/User Settings/Components/MultiFactorModal.css","webpack:///./Frontend/src/Components/Apps/User Settings/UserSettings.css?8060","webpack:///./Frontend/src/Components/Apps/User Settings/UserSettings.css","webpack:///./Frontend/src/Components/Apps/User Settings/Components/AccountTeam.tsx","webpack:///./Frontend/src/Components/Apps/User Settings/Components/TimeoutManagement.tsx","webpack:///./Frontend/src/Models/IUserPreferences.ts","webpack:///./Frontend/src/View/Products/Sagas/BrandSagas.ts","webpack:///./Frontend/src/View/Products/API/BrandApi.ts","webpack:///./Frontend/src/View/Products/Sagas/CategorySagas.ts","webpack:///./Frontend/src/View/Products/API/CategoryApi.ts","webpack:///./Frontend/src/View/Products/Sagas/CommonSagas.ts","webpack:///./Frontend/src/View/Products/Sagas/LoginSagas.ts","webpack:///./Frontend/src/View/Products/API/LoginApi.ts","webpack:///./Frontend/src/Models/ISafegraphLocationVisitData.ts","webpack:///./Frontend/src/View/Products/Util/StringUtil.ts","webpack:///./Frontend/src/View/Products/Sagas/NotificationsSagas.ts","webpack:///./Frontend/src/View/Products/API/NotificationsApi.ts","webpack:///./Frontend/src/View/Products/Sagas/ReportSagas.ts","webpack:///./Frontend/src/View/Products/API/ReportApi.ts","webpack:///./Frontend/src/View/Products/Sagas/RetailMatchSagas.ts","webpack:///./Frontend/src/View/Products/API/RetailMatchApi.ts","webpack:///./Frontend/src/View/Products/Sagas/UserSagas.ts","webpack:///./Frontend/src/View/Products/API/UserApi.ts"],"names":["LOAD_USER","LOAD_USER_FAILURE","SET_SHOW_ACTIVE_USERS","LOAD_TWO_BY_TWO","LOAD_TWO_BY_TWO_SUCCESS","LOAD_TWO_BY_TWO_FAILURE","EXPLORE_STORE","EXPLORE_STORE_SUCCESS","EXPLORE_STORE_FAILURE","LOAD_BOOKMARKS_SUCCESS","LOAD_BOOKMARKS_FAILURE","SET_ACTIVE_BOOKMARK","DELETE_BOOKMARK","DELETE_BOOKMARK_SUCCESS","DELETE_BOOKMARK_FAILURE","SET_LOADING_BOOKMARKS","SET_FOUND_BOOKMARKS","SET_SHOW_BOOKMARK_MODAL","SET_DEFAULT_BOOKMARK_SUCCESS","SET_DEFAULT_BOOKMARK_FAILURE","GET_LAST_SESSION","SET_LOADING_LAST_SESSION","SET_FOUND_LAST_SESSION","SET_SESSION","LOAD_LAST_SESSION","LOAD_SCOUT","SET_SCOUT_IS_SHOWING","SET_ACTIVE_APP","SET_SHOW_SPLASH_SCREEN","MY_DATA_LOADED","MY_DATA_SET_BREADCRUMBS","RESET_MY_DATA_TYPES","LOAD_MY_DATA_TYPES_SUCCESS","LOAD_MY_DATA_FAILURE","LOAD_MY_DATA_DATA_SUCCESS","SET_MY_DATA_LOADING","LOAD_MY_DATA_OTHER_SUCCESS","MY_DATA_LOAD_PUSHPIN_TYPES_SUCCESS","MY_DATA_LOAD_PUSHPIN_TYPES_FAILURE","MY_DATA_LOAD_STORE_TYPES_SUCCESS","MY_DATA_LOAD_STORE_TYPES_FAILURE","MY_DATA_LOAD_TERRITORY_TYPES_SUCCESS","MY_DATA_LOAD_TERRITORY_TYPES_FAILURE","MY_DATA_LOAD_RESULTS_POINTS_TYPES_SUCCESS","MY_DATA_LOAD_RESULTS_POINTS_TYPES_FAILURE","MY_DATA_LOAD_RESULTS_SHAPES_TYPES_SUCCESS","MY_DATA_LOAD_RESULTS_SHAPES_TYPES_FAILURE","MY_DATA_LOAD_AOI_POINTS_TYPES_SUCCESS","MY_DATA_LOAD_AOI_POINTS_TYPES_FAILURE","MY_DATA_LOAD_AOI_SHAPES_TYPES_SUCCESS","MY_DATA_LOAD_AOI_SHAPES_TYPES_FAILURE","MY_DATA_LOAD_TARGET_MARKET_LOCATIONS_SUCCESS","MY_DATA_LOAD_TARGET_MARKET_LOCATIONS_FAILURE","MY_DATA_LOAD_STORE_FILE_AUDIT_SUCCESS","MY_DATA_LOAD_STORE_FILE_AUDIT_FAIL","MY_DATA_LOAD_STORE_SET_BAD_GEOCODES","UPDATE_MY_DATA_COLUMNS","MY_DATA_TYPES_CHANGED","UPDATE_MY_DATA_TERRITORY_COLLABORATE","UPDATE_MY_DATA_PUSHPIN_COLLABORATE","UPDATE_MY_DATA_FILTERS","MY_DATA_REMOVE_FILTER","MY_DATA_REMOVE_ALL_FILTERS","MY_DATA_SET_ACTIVE_TYPE","MY_DATA_SET_CURRENT_PAGE","MY_DATA_SET_PAGE_SIZE","UPDATE_SORT_DIRECTION","RESET_SORT_DIRECTION","MY_DATA_SET_CURRENT_CLOUD_FOLDER","MY_DATA_BUILD_CURRENT_CLOUD_TYPE_DICT","MY_DATA_RESET_DELETE_CLOUD_FOLDER_MESSAGE","MY_DATA_DELETE_CLOUD_FOLDER_LOADING","MY_DATA_DELETE_CLOUD_FOLDER_SUCCESS","MY_DATA_DELETE_CLOUD_FOLDER_FAILURE","LOAD_MY_DATA_CLOUD_TYPES_SUCCESS","LOAD_MY_DATA_CLOUD_TYPES_FAILURE","LOAD_FROM_SCOUT_MY_DATA_AOI_POINT_TYPES_SUCCESS","LOAD_FROM_SCOUT_MY_DATA_AOI_SHAPE_TYPES_SUCCESS","LOAD_FROM_SCOUT_MY_DATA_RESULT_POINT_TYPES_SUCCESS","LOAD_FROM_SCOUT_MY_DATA_RESULT_SHAPE_TYPES_SUCCESS","MY_DATA_RESET_ADD_CLOUD_FOLDER_MESSAGE","MY_DATA_ADD_CLOUD_FOLDER_LOADING","MY_DATA_ADD_CLOUD_FOLDER_SUCCESS","MY_DATA_ADD_CLOUD_FOLDER_FAILURE","MY_DATA_RESET_UPDATE_CLOUD_FILE_MESSAGE","MY_DATA_UPDATE_CLOUD_FILE_LOADING","MY_DATA_UPDATE_CLOUD_FILE_SUCCESS","MY_DATA_UPDATE_CLOUD_FILE_FAILURE","MY_DATA_RESET_DELETE_CLOUD_FILE_MESSAGE","MY_DATA_DELETE_CLOUD_FILE_LOADING","MY_DATA_AOI_POINTS_DELETE_CLOUD_FILE_SUCCESS","MY_DATA_AOI_SHAPES_DELETE_CLOUD_FILE_SUCCESS","MY_DATA_RESULTS_POINTS_DELETE_CLOUD_FILE_SUCCESS","MY_DATA_RESULTS_SHAPES_DELETE_CLOUD_FILE_SUCCESS","MY_DATA_DELETE_CLOUD_FILE_FAILURE","GET_USER_PREFERENCES_SUCCESS","GET_USER_PREFERENCES_SUCCESS_SCOUT","GET_USER_PREFERENCES_FAILURE","UPDATE_USER_PREFERENCES_SUCCESS","UPDATE_USER_PREFERENCES_FAILURE","GET_ALL_COMMUNITY_SITES_SUCCESS","GET_ALL_COMMUNITY_SITES_FAILURE","GET_USER_FRANCHISEE_STORE_INFORMATION_SUCCESS","GET_USER_FRANCHISEE_STORE_INFORMATION_FAILURE","GET_USER_FRANCHISEE_TERRITORY_INFORMATION_SUCCESS","GET_USER_FRANCHISEE_TERRITORY_INFORMATION_FAILURE","REMOVE_STORE_FROM_FRANCHISEE_USER_SUCCESS","REMOVE_STORE_FROM_FRANCHISEE_USER_FAILURE","REMOVE_TERRITORY_FROM_FRANCHISEE_USER_SUCCESS","REMOVE_TERRITORY_FROM_FRANCHISEE_USER_FAILURE","USER_UPDATE_ACTIVE_STATUS_SUCCESS","USER_UPDATE_ACTIVE_STATUS_FAILURE","UPDATE_TERRITORY_TYPE_ADMIN_ONLY_SUCCESS","UPDATE_TERRITORY_TYPE_ADMIN_ONLY_FAILURE","GET_TERRITORY_TYPE_PERMISSIONS_SUCCESS","GET_TERRITORY_TYPE_PERMISSIONS_FAILURE","UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_SUCCESS","UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FAILURE","UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FOR_ALL_SUCCESS","UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FOR_ALL_FAILURE","GET_TERRITORY_TYPES_SUCCESS","GET_TERRITORY_TYPES_FAILURE","LAUNCH_USER_MANAGEMENT_FROM_SCOUT","LAUNCH_TERRITORY_MANAGEMENT_FROM_SCOUT","UPDATE_SAVE_PROFILE_LOADING","UPDATE_USER_PROFILE_SUCCESS","UPDATE_USER_PROFILE_FAILURE","UPDATE_SHARE_IMAGE_SUCCESS","UPDATE_SHARE_IMAGE_FAILURE","UPDATE_USER_SHARE_SETTINGS_SUCCESS","GET_USER_SHARE_SETTINGS_SUCCESS","GET_USER_SHARE_SETTINGS_FAILURE","RESET_PASSWORD_SUCCESS","RESET_PASSWORD_FAILURE","UPDATE_USER_AVATAR_SUCCESS","UPDATE_USER_AVATAR_FAILURE","DELETE_USER_AVATAR_SUCCESS","DELETE_USER_AVATAR_FAILURE","DELETE_SHARE_IMAGE_SUCCESS","DELETE_SHARE_IMAGE_FAILURE","USER_PROFILE_SET_MFA_FACTORS","USER_PROFILE_SET_SELECTED_MFA_FACTOR_ID","USER_PROFILE_SET_WAITING_FOR_MFA_RESPONSE","USER_PROFILE_SET_MFA_RESULT","USER_PROFILE_SET_SHOW_MFA_ENROLLMENT_MODAL","USER_PROFILE_SET_MFA_ENROLLMENT_MODAL_TEXT","USER_PROFILE_SET_MFA_ENROLLMENT_UPDATED_THIS_SESSION","GET_COMPANY_SUPPORT_TEAM_SUCCESS","GET_COMPANY_SUPPORT_TEAM_FAILURE","UPDATE_SESSION_TIMEOUT_LENGTH_SUCCESS","UPDATE_SESSION_TIMEOUT_LENGTH_FAILURE","SET_REPORTS","SET_LOADING_REPORTS","SET_FOUND_REPORTS","SET_REPORTS_COLLABORATING","SET_SELECTED_REPORT_ID","SET_SHOW_RECENT_REPORTS_MODAL","DOWNLOAD_REPORT_FILE","SET_REPORT_FILE","SET_SELECTED_REPORT_FILES","SET_SELECTED_REPORT_FILE","SET_SHOW_REPORT_FILE_MODAL","DELETE_REPORT","DELETE_REPORT_SUCCESS","SET_REPORTS_DATES","REPORT_FINISHED","RESET_REPORT_COUNTER","SET_INSIGHTS_COLLABORATING","PROCESS_JOBS_SUCCESS","GET_CONFIG_REPORTS_SUCCESS","SET_LOADING_CONFIG_REPORTS","SET_CR_MODAL_VISIBILITY","SET_CR_SELECTED_ITEMS","DELETE_CONFIG_REPORT_SUCCESS","ADD_RUNNING_CONFIG_REPORT_TO_LIST","SALES_PERFORMANCE_SET_DATA","SALES_PERFORMANCE_SET_LOADING","SET_GPS_INSIGHT_RESULTS","UPDATE_GPS_INSIGHT_JOB","RESET_GPS_INSIGHT_RESULTS","SET_LOADING_BRAND","GET_BRAND_SUCCESS","SET_LOADING_JOBS","GET_JOBS_SUCCESS","SET_LOADING_SINGLE_JOB","GET_SINGLE_JOB_SUCCESS","SET_LOADING_GPS_MOBILE_INSIGHTS_REPORT","ADD_RUNNING_INSIGHT_TO_LIST","ADD_FINISHED_INSIGHT_TO_LIST","REMOVE_FINISHED_INSIGHT_FROM_RUNNING_INSIGHTS","CLEAR_RUNNING_AND_FINISHED_INSIGHTS_LISTS","CLEAR_FINISHED_INSIGHTS_LISTS","SELECT_GPS_INSIGHT_FOR_REPORT_VIEW","SET_CURRENT_GPS_INSIGHT_VIEW","SET_GPS_INSIGHT_MODAL_VISIBLE","START_GPS_MOBILE_INSIGHTS_REPORT","SET_LOADING_SAVE_TO_SCOUT","SET_POLYGON_CENTROID","SAVE_TO_SCOUT_SUCCESS","SET_MOBILYTICS_SCENARIOS","SET_FVP_MARKERS","SET_SELECTED_FVP","GET_RETAIL_MATCH_RESULTS_SUCCESS","GET_RETAIL_MATCH_RESULTS_FAILURE","SET_RETAIL_MATCH_BENCHMARK_RECORD","SET_LOADING_RETAIL_MATCH_GEOGRAPHIES","GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS","GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE","GET_RETAIL_MATCH_BRAND_SUCCESS","GET_RETAIL_MATCH_BRAND_FAILURE","GET_RETAIL_MATCH_BRANDS_SUCCESS","GET_RETAIL_MATCH_BRANDS_FAILURE","SET_LOADING_BRANDS","GET_RETAIL_MATCH_CATEGORIES_SUCCESS","GET_RETAIL_MATCH_CATEGORIES_FAILURE","SET_LOADING_CATEGORIES","SET_RETAIL_MATCH_REPORT_MODAL_VISIBLE","START_RETAIL_MATCH_REPORT","SET_LOADING_RETAIL_MATCH_REPORT","SUBMIT_RETAIL_MATCH_REPORT_SUCCESS","SUBMIT_RETAIL_MATCH_REPORT_FAILURE","UPDATE_RETAIL_MATCH_JOB_SUCCESS","UPDATE_RETAIL_MATCH_JOB_FAILURE","ADD_RETAIL_MATCH_IMAGE_SUCCESS","ADD_RETAIL_MATCH_IMAGE_FAILURE","UPDATE_BRAND_LOGO_SUCCESS","SET_LOADING_UPDATE_RETAIL_MATCH_JOB","CLEAR_RETAIL_MATCH_RESULTS","SET_LOADING_BRANDS_SAMPLE_SET_DATA","GET_BRANDS_SAMPLE_SET_DATA_SUCCESS","SET_SELECTED_BRAND","SET_RETAIL_MATCH_OVERVIEW_MAP_MARKERS","SET_RETAIL_MATCH_MODAL_MARKER_CLUSTERER","UPDATE_RETAIL_MATCH_SITE_DETAILS_SUCCESS","GET_MOSAIC_SEGMENTS_SUCCESS","SET_LOADING_MOSAIC_SEGMENTS","CREATE_NEW_GOOGLE_MAP","CREATE_NEW_RETAIL_MATCH_OVERVIEW_MAP","CREATE_NEW_RETAIL_MATCH_MODAL_MAP","CLEAR_CURRENT_GOOGLE_MAP_REF","SET_MAP_CENTER","SET_PENDING_MAP_CENTER_EVENT","SET_MAP_ZOOM","SET_MAP_MARKERS","SET_MAP_STYLES","SET_MAP_STYLE_OPTIONS","SET_MAP_ANCHOR_WINDOW","GET_STORE_TRADE_AREA_BLOCK_GROUP_POLYGONS","SET_MAP_LOADING","SET_MAP_IS_READY","CLEAR_GOOGLE_MAP","SET_MAP_HEIGHT","SHOW_LEFT_NAV","HIDE_LEFT_NAV","TOGGLE_LEFT_NAV","UPDATE_MOBILYTICS_VISITORS_GROUPS","TOGGLE_MAP_LAYER_MOBILYTICS_VISITORS_ACTUALS","SET_LOADING_PLACES","SHOW_MAP_SETTINGS_MODAL","SET_DIGITAL_SHARE_DIALOG_TRAINING_STATE","OPEN_DIGITAL_SHARE_DIALOGUE_FROM_WRAPPER","START_FACTOR_REPORT","SET_FACTOR_SCENARIOS","SET_FACTOR_VISIBLE","SET_FACTOR_LOADING_SCENARIOS","GET_PDF_LAMBDA","SET_NOTIFICATION_WORKFLOW_URL","App","CompanyType","UserLoginStatus","TerritoryTypePermission","CommunityMatchActivityColumn","CommunityMatchContactColumn","ActiveApp","OktaGroups","GPSInsightsContainerView","HomeWorkIdentifier","LayerTypeEnum","MapStyleEnum","DropdownComparisonWeight","RenderType","DigitalShareAppType","DigitalShareItemType","DigitalShareAppImage","ScoutFeature","setFeatureFlags","requestedFeatureFlags","featureFlags","window","loadFeatureFlagsWithOverrides","baseFeatureFlags","getFeatureFlags","overrideFeatureFlags","buxtonLimeGreen","buxtonNavyBlue","topNavHeightPx","polygonTooBig","goodPolygon","fillColor","strokeColor","badPolygon","CHILD_HEIGHT","MAX_WAIT_FOR_SHARE_COMPONENTS_SECONDS","MAX_WAIT_FOR_PRINT_COMPONENTS_SECONDS","digitalShareRefs","Map","selectedOutputsMap","isOutputSelected","app","itemType","outputs","get","indexOf","mapSnapshots","registerRef","ref","refMap","set","digitalShareElements","digitalShareElementText","registerElement","itemText","element","elementMap","pendingRenders","setPendingRender","item","isPending","console","log","has","clearPendingRenders","clear","generationStatus","setGenerationStatus","isGenerating","DigitalShareGenerator","props","selectedOutputs","setSelectedOutputs","useState","templateImageGenerator","setTemplateImageGenerator","isGeneratingDigitalShare","setIsGeneratingDigitalShare","didDownloadImages","setDidDownloadImages","generationProgress","setGenerationProgress","succeeded","failed","total","percentComplete","setPercentComplete","progressText","setProgressText","progressStep","setProgressStep","ExtraProgressStep","Initializing","onImageGenerationProgress","step","updateProgress","text","getProgressDisplayDetails","DIGITAL_SHARE","useEffect","isComponentMounted","cleanupTimeout","generator","TemplateImageGenerator","start","performance","now","onChangeGenerating","wasError","error","images","generate","elapsed","length","Zipping","zipAndDownloadImages","map","r","name","type","dataUrl","err","cleanup","pending","hasPending","forEach","val","key","setTimeout","DownloadComplete","onClose","description","GenerationFailureReason","TimeoutExceeded","notification","message","duration","clearTimeout","isDialogueVisible","setIsDialogueVisible","elementArr","setElementArr","elements","temp","k","v","push","size","ProgressScreen","downloaded","isChoosingDigitalShare","onSubmit","RenderCollection","i","RenderContainer","digitalShareRender","PrintGenerator","getPrintOutputs","o","setIsGenerating","formRef","useRef","PRINT","BuildingPDF","dataUrls","newImage","Image","src","style","width","height","html","outerHTML","b64Pdf","PdfLambda","binaryString","atob","len","bytes","Uint8Array","charCodeAt","file","Blob","fileURL","URL","createObjectURL","open","onComplete","target","position","top","left","userSelector","createSelector","state","user","userShareSettingsSelector","shareSettings","loadingAllUsersSelector","loadingAllUsers","loading","allUsersSelector","allUsers","all","showActiveUsersSelector","showActiveUsers","getRetailMatchMetricTierLevel","value","tier","RetailMatchMetricTier","Tier4","Tier1","Tier2","Tier3","getRetailMatchSimilarityVerbiage","RetailMatchDynamicTextEnum","NotSimilar","SomewhatSimilar","Similar","VerySimilar","getRetailMatchComparableVerbiage","Low","SlightlyLower","Comparable","High","getRetailMatchAverageVerbiage","BelowAverage","Average","level","RetailMatchMetricLevel","Similarity","getBarWidth","index","getDateBackVerbiage","startDate","endDate","formattedStart","Date","formattedEnd","getFullYear","toLocaleDateString","getBenchmarkAddressOverride","jobResult","benchmarkRecord","addr","job","addressOverride","city","cityOverride","st","stateOverride","zip","zipcodeOverride","brandOverviewRecord","brandId","allOverviews","find","record","loadUser","dispatch","AuthenticationAxios","LoadUser","then","response","data","scout","intercomCallbacks","intercomBoot","getUserSuccess","catch","getUserFailure","getAllUsers","getAllUsersSuccess","getAllUsersFailure","trackLogin","uri","$","getSessionID","sessionId","addLoginDate","url","Promise","resolve","reject","create","withCredentials","id","isAxiosError","status","logout","post","setShowActiveUsers","types","hasFeature","feature","features","some","userFeature","enableTimeoutFeature","logic","FeatureFlagLogic","scoutUserManagementTimeout","currentAppSelector","appReducer","currentApp","currentAppViewSelector","appView","view","currentAppIsPastIntroSelector","appState","appsPastIntro","headerNavDisplay","rootReducer","combineReducers","sideNavReducer","mapReducer","reportsReducer","brandsReducer","categoriesReducer","retailMatchReducer","submitMatchFormReducer","mobilyticsReducer","voidGapReducer","loginReducer","notificationsReducer","mobilyticsReportOutput","factorReducer","matchReportOutput","reportMap","loadScout","digitalShare","commonReducer","userPreferencesStore","userManagement","territoryManagement","companySupportTeamStore","userProfile","customReportTitleSelector","customReportTitle","savedPolygonsSelector","savedPolygons","polygons","inProcessPolygonSelector","inProcessPolygon","poly","isDrawingPolygonSelector","isDrawingPolygon","isLoadingMobilyticsReportSelector","isLoadingMobilyticsReport","isSearchingForNewLocationSelector","isSearchingForNewLocation","mobilyticsSearchedLocationSelector","searchedLocation","locationDetailsSelector","locationDetailsParameters","isCreatingCustomLocationSelector","isCreatingCustomLocation","isViewingLocationDetailsSelector","isViewingLocationDetails","shouldShowEndOfReportScreenSelector","shouldShowEndOfReportScreen","isRedirectedFromCreateCustomLocationSelector","isRedirectedFromCreateCustomLocation","drawPolygonTypeSelector","drawPolygonType","scenarioFormStatesSelector","scenarioFormStates","mobilyticsSearchedLocationNameSelector","searchedLocationName","mobilyticsSearchedLocationIndexSelector","searchedLocationIndex","mostRecentlySubmittedMobilyticsReportSelector","mostRecentlySubmittedReport","report","nearbyLocationsSelector","nearbyLocations","locations","similarLocationsSelector","similarLocations","selectedSafegraphLocationSelector","selectedSafegraphLocation","location","firstScenarioSelector","createCustomLocationParametersSelector","createCustomLocationParameters","isLoadingLocationsSelector","isLoadingLocations","isLoading","RetailMatchGeographyOption","Loading","display","flexDirection","title","marginBottom","textAlign","Spin","ComponentLoading","Layout","Content","className","marginTop","authorizedAxios","requestType","requestUrl","requestParams","responseType","getBearerToken","bearerToken","method","headers","Authorization","params","requestError","actions","showSessionExpiredAlert","tokenError","lat","lng","icon","isSelected","infoWindowContent","infoWindowOpen","isCustomMarker","latlng","this","google","maps","LatLng","linkId","notificationType","createdDate","modifiedDate","isRead","isActive","deviceWidth","mobile","mobileM","mobileL","tablet","tabletL","tabletXl","desktop","sizeConstants","containerMaxWidth","mobileLRContainerPadding","device","upToDesktop","upToTabletL","upToTabletXl","colorOne","colorTwo","colorThree","colorFour","colorFive","colorSix","colorSeven","colorEight","colorNine","colorTen","colorOneLight","colorTwoLight","colorThreeLight","colorThreeVeryLight","colorFourLight","colorFiveLight","colorSixLight","colorSevenLight","colorEightLight","secondaryColorFive","secondaryColorSix","secondaryColorSeven","secondaryColorEight","colorTwoBright","colorTwoDark","altGrayTextColor","hoverLinkBlue","lightBorderGray","activePsychSort","activeSortDirection","inactiveSortDirection","anotherLightGray","CustomerBreakoutColors","P","S","T","N","gpsCurrentJobDataSelector","gpsCurrentJobPolygonSelector","polygon","gpsReportMapSelector","googleMap","mapZoom","currentAnchorWindow","buxtonDeck","mapStyleOptions","gpsTAAData","gpsData","filter","tradeAreaAnalysis","t","gpsConditionalOutputsSelector","hasFvpData","p","frequentlyVisitedPlaces","hasVisitorLoyaltyData","polygonsAreIdentical","hasTradeAreaAnalysis","gpsInsightForReportView","selectedGpsInsightForReportView","gpsPolygonNames","j","jobPolygon","gpsUserSelector","gpsMosaicSegmentsSelector","mosaicSegments","segments","gpsLoadingSaveToScoutSelector","loadingSaveToScout","gpsJobsSelector","jobs","gpsLoadingJobsSelector","loadingJobs","gpsRunningInsights","runningInsights","gpsFinishedInsights","finishedInsights","gpsShowVisitorBehaviors","showVisitorBehaviorsComponent","gpsCategoriesSelector","categories","gpsCategoriesLoadingSelector","loadingCategories","gpsFVPMarkersSelector","fvpMapMarkers","gpsFVPSelectedFVPSelector","selectedFVP","gpsPrintReadySelector","gpsCurrentBenchmarkIndex","selectedGpsInsightJobs","currentBenchmarkJobId","findIndex","jobId","gpsCurrentBenchmarkPolygon","currentBenchmarkIndex","gpsCurrentBenchmarkPolygonCentroid","getPolygonCentroid","linearRings","gpsBenchmarkItems","filterStoreData","isHome","point","homeLongitude","workLongitude","getGpsReportDataSelector","benchmarkCommonData","isGpsInsightModalVisible","currentJobData","selectedInsight","currentBenchmarkPolygon","benchmarkItems","gpsFVPDataSelector","mapMarkers","gpsVisitorBehaviorsContainerSelector","showVisitorBehaviors","fvpData","loadingMobilyticsReportSelector","loadingReport","setCustomReportTitle","customTitle","SET_CUSTOM_REPORT_TITLE","setIsLoading","SET_LOADING_MOBILYTICS_REPORT","setSearchedMobilyticsPlace","placeId","SET_SEARCHED_PLACE_MOBILYTICS_ACTION","address","points","setMostRecentlySubmittedMobilyticsReport","SET_MOST_RECENTLY_SUBMITTED_MOBILYTICS_REPORT","removeSearchedMobilyticsPlace","REMOVE_SEARCHED_PLACE_MOBILYTICS_ACTION","removePolygon","REMOVE_POLYGON_ACTION","submitMobilyticsReportInitiate","request","SUBMIT_MOBILYTICS_REPORT_INITIATE","submitMobilyticsReportSuccess","SUBMIT_MOBILYTICS_REPORT_SUCCESS","submitMobilyticsReportFailure","SUBMIT_MOBILYTICS_REPORT_FAILURE","setIsCreatingCustomLocation","isCreating","SET_IS_CREATING_CUSTOM_LOCATION_ACTION","setIsViewingLocationDetails","isViewing","SET_IS_VIEWING_LOCATION_DETAILS","setIsRedirectedFromCreateCustomLocation","isRedirected","SET_IS_REDIRECTED_FROM_CREATE_CUSTOM_LOCATION","setCreateCustomLocationParameters","SET_CREATE_CUSTOM_LOCATION_PARAMETERS_ACTION","setLocationDetails","SET_LOCATION_DETAILS_ACTION","onCustomLocationSelected","ON_CUSTOM_LOCATION_SELECTED_ACTION","onLocationSelectedForAnalysis","ON_LOCATION_SELECTED_FOR_ANALYSIS_ACTION","setIsDrawingPolygon","SET_IS_DRAWING_POLYGON","setDrawPolygonType","polygonType","SET_DRAW_POLYGON_TYPE","setSavedPolygons","SET_SAVED_POLYGONS","setInProcessPolygon","SET_IN_PROCESS_POLYGON","setScenarioFormStates","scenarios","setShouldShowEndOfReportScreen","shouldShowEndOfReport","SET_SHOULD_SHOW_END_OF_REPORT_SCREEN_ACTION","getNearbyLocations","GET_NEARBY_LOCATIONS_ACTION","getSimilarLocations","GET_SIMILAR_LOCATIONS_ACTION","setNearbyLocations","SET_NEARBY_LOCATIONS_ACTION","setSimilarLocations","SET_SIMILAR_LOCATIONS_ACTION","setSelectedSafegraphLocation","SET_SELECTED_SAFEGRAPH_LOCATION_ACTION","setIsSearchingForNewLocation","SET_IS_SEARCHING_FOR_NEW_LOCATION_ACTION","startMobilyticsFromSameMatchLocation","formState","START_MOBILYTICS_FROM_SAME_MATCH_LOCATION","setIsLoadingLocations","SET_IS_LOADING_LOCATIONS","datePickerFormat","timePickerFormat","earliestReportYearValue","daysAgoDataBegins","limitMilesOptions","isMobilyticsPlace","bucketType","models","DataBucketTypeEnum","MOBILYTICS_PLACE","MOBILYTICS_PLACE_GEOFENCE","TabSelection","HouseholdsFilter","ReportTime","removeTime","date","newDate","setHours","setMinutes","setSeconds","setMilliseconds","minDate","from","setFullYear","setMonth","setDate","maxDate","subtract","hours","minutes","seconds","toDate","initialDateValues","defaultScenarioFormState","startDateTime","endDateTime","allDayChecked","mileLimitChecked","milesLessGreater","miles","isCustomPolygon","getDisabledDates","min","max","valueNoTime","getReportNameErrorMessage","msg","getReportDatesErrorMessage","values","getReportTimesErrorMessage","dates","isDateDisabled","buildDateTime","time","hour","minute","second","cid","lid","uniqueID","comments","storeTypeID","forecastDate","serverVerified","totalUniqueHouseholds","totalHouseholdSpend","storeNumber","forecastComments","openDate","storeName","forecastValue","closeDate","ssid","actualSales","actualVolume","Address","address1","address2","address3","zip4","country","regionCode","budsCurrent","squareFeet","tradeAreaOverall","tradeAreaType","latitude","longitude","website","phone","fax","email","targetSales","employeeCount","managerCount","sales","salesMargin","modifiedDateString","workflow","dataset","googlePlaceID","bingPlaceID","commments","image","proformaSales","otherInformation","displayLabel","displayValue","files","formattedAddress","storeType","StoreType","friendlyOpenDate","orderIndex","model","buds","budsLabel","createdByUserID","geocodeResult","mergeRetailMatchData","selection1","nationalWeight","national","nat","weight","selection1PrimaryWeight","selection2PrimaryWeight","selection2","mergeSegRetailMatchData","seg","pct","mergeWeeklyData","selectionOne","Array","selectionTwo","nationalDataMap","n","dataMap","selection","visitWeight","visitorWeight","selection1SecondaryWeight","selection2SecondaryWeight","s","sort","a","b","firstDate","secondDate","diff","mergeGPSData","formattedData","selectionTwoMap","selection2Obj","reverseGeocode","geocoder","Geocoder","geocode","results","getBenchmarkShortAddress","benchmark","lon","shortAddress","formatShortAddressFromGeocoder","getBenchmarkLongAddress","longAddress","formatLongAddressFromGeocoder","getAddressComponentOfType","addressComponents","c","address_components","streetNumberComponent","streetNameComponent","long_name","toUpperCase","cityComponent","stateComponent","zipcodeComponent","getCityFromGeocoder","probableCityComponent","component","titleCase","string","splitStr","toLowerCase","split","first","charAt","sub","substring","join","testImageOnloadAsync","testImage","addEventListener","isClearbitLogoPath","path","includes","getValidLogoPath","originalPath","brandName","transformedPath","createGenericIcon","generateMobilyticsPlaceLogo","logoPath","resolveURL","canvas","document","createElement","context","getContext","resolveLogo","logo","crossOrigin","drawImage","toDataURL","createBrandMap","brands","mapKey","brandMap","brand","createCategoryMap","categoryMap","category","categoryName","subCategories","naicsCode","subcategoryName","MOBILYTICS_MAX_DEFAULT_CIRCLE_RADIUS","MOBILYTICS_MAX_DEFAULT_RECTANGLE_LAT_LON_DIFF","SQ_METERS_PER_SQ_MILE","MOBILYTICS_MAX_POLYGON_AREA_SQ_MILES","MOBILYTICS_MAX_POLYGON_AREA_SQ_METERS","getPolygonType","tryCustom","PolygonType","Custom","tryCircle","center","Circle","tryRectangle","northeast","Rectangle","Unknown","convertToChildType","googleLatLngsAreEqual","c1","c2","circlesAreEqual","radiusMeters","rectanglesAreEqual","r1","r2","southwest","customPolygonsAreEqual","p1","p2","polygonsAreEqual","poly1","poly2","getDefaultCircleRadiusByZoom","zoom","Math","pow","getDefaultRectangleLatLonDiffByZoom","defaultPolygon","mapCenter","guid","polygonBase","borderColor","borderSize","latLonDiff","polygonToPoints","circle","circleToPoints","rectangle","rectangleToPoints","customPolygonToPoints","closePointArrayPolygon","ne","sw","centerPoint","turf","radiusKM","steps","geometry","coordinates","coordinate","pointsToPolygon","turfCoords","areaFromPoints","area","polygonArea","getPolygonColors","polygonSelfIntersects","pointsCopy","lastIndex","firstPointCopy","circleFromQueryParams","radius","customPolygonFromPoints","isSgPolygon","finalPoints","y","x","getCentroid","custom","getCentroidFromPoints","turfPoints","centroid","turfPolygon","kinks","wktToFeature","wkt","geo","parse","featureIntersectsUserPolygon","userWKT","undefined","intersect","polygonIntersectsPolygon","newPolygon","userPolygon","polygonCompletelyInsidePolygon","pointIntersectsPolygon","trim","LinkType","LinkSvgType","VoidGapFiltersEnum","Header","HeaderFocus","HeaderFocusSharing","BreakoutContainer","BreakoutItem","BreakoutVerticalBreak","div","BreakoutItemHeader","BreakoutItemVerbiage","getRetailMatchIndexColor","BreakoutItemBarOuter","BreakoutItemBarInner","RetailMatchIntroBrandLogoWrapper","RetailMatchIntroBrandLogo","background","RetailMatchShareIntroBrandLogoWrapper","RetailMatchShareIntroBrandLogo","RetailMatchIntroBrandingContainer","RetailMatchCarouselImage","backgroundImage","selectedImage","SiteDetailsContainer","show","loadGPSInsightsSuccess","loadGPSInsightsFailure","setPolygonCentroid","getResults","getState","cleanMap","setCurrentGpsInsightView","Insight","checkAndRemoveRunningAndFinishedInsightLists","GPSInsightsAxios","GetResults","numVisitors","mapData","finally","setLoadingGpsMobileInsightsReport","setLoadingBrand","getBrand","term","GetBrand","getJobsSuccess","processJobs","finishedInsightsCopy","previousReports","mappedJobs","incomingReports","incomingMappedReports","mapGcpJobsToAnalysisItems","incoming","previous","AnalysisStatus","Complete","toString","CompleteWithErrors","Scout","TooFewRecords","jobsSuccessData","setLoadingJobs","getJobs","isCollaborating","setInsightsCollaborating","setReportsDates","gpsInsightsAxios","GetCompanyJobs","GetUserJobs","deleteJob","DeleteJob","reports","allReports","deleteJobSuccess","mobilyticsVisitorsReportDeleted","addRunningInsight","runningJobs","gpsInsights","addFinishedInsight","finishedJobs","removeFinishedInsightFromRunningInsights","selectGpsInsightForReportView","gpsInsightView","resetGpsInsightResults","clearFinishedInsights","deletedBatchID","startGpsMobileInsightsReport","setGpsInsightModalVisible","visible","submitGpsReport","SubmitGpsReport","success","interop","api","mobilyticsSubmission","closeClassicRightNav","clearGeographyStudyAreas","setLoadingSaveToScout","saveToScoutSuccess","setScenarios","saveToScout","SaveToScout","refreshMobilyticsVisitorsList","updatePolygonName","newName","newJob","updateJobTitle","newReportName","result","updateMobilyticsJob","setFvpMapMarkers","markers","setSelectedFVP","fvp","AppView","Step","FilterOption","CompareOption","GeographyOption","ClosestDistanceOption","HH_ATTR_STATIC_TEXT","GPSInsightsTemplateDisclaimer","DIGISHARE_CDN","encodeURIComponent","children","getDigitalShareOutputs","Mobilytics","polygonComparisons","captionAboveTitle","sectionTitle","disclaimer","hideItemTypeTitle","hideItemTitle","hideItemText","RetailMatch","itemTitle","getDigitalShareMapImage","mapElement","useCORS","scale","logging","digitalShareMapRender","img","getIsDigitalShare","renderType","DigitalShare","filterGpsOutputsAgainstAvailableReports","hasTradeArea","output","VisitorLoyalty","FrequentlyVisitedPlaces","VisitorTradeArea","retailMatchDigitalShareOutputs","sectionNumberMap","DigitalShareSectionEnum","BRAND_COMPARISON","KEY_METRICS","LOCATIONS_ANALYZED","PSYCHOGRAPHIC_PROFILE","HH_COMPOSITION","BrandComparison","imgUrl","KeyMetrics","LocationsAnalyzed","PsychographicProfile","PsychographicSummary","Marriage","Children","NumberOfPersons","HeadOfHouseholdAge","RaceAndEthnicity","HouseholdIncome","HouseholdEducationLevel","DwellingType","HomeOwnership","gpsDigitalShareOutputs","isBenchmark","TRADE_AREA","HH_CHARACTERISTICS","VOLUME","VISITOR_BEHAVIORS","VisitorMap","NewHomeOwner","NewMover","RelativeVolume","hideItem","VolumeByWeek","VolumeByDayOfWeek","VolumeByHourOfDay","VolumeByMetrics","FrequentlyVisitedPlacesMap","createDigitalShareItem","exclusions","delay","delayMs","setRetailMatchReportModalVisible","startRetailMatchReport","getRetailMatchResultsSuccess","setRetailMatchBenchmarkRecord","clearRetailMatchResults","setSelectedBrand","setModalMarkerClusterer","markerClusterer","getMaxIndex","formatResults","overview","storeScores","chartData","avgSampleVolumeIndex","round","coreCustomerCorrelationIndex","coreCustomerCountIndex","coreCustomerPerHouseholdIndex","score","vCntIdx","ccCntIdx","ccCorrIdx","ccPerHHCntIdx","submitRetailMatchResults","allBenchmarkRecords","store","sid","otherStores","siteLatitude","siteLongitude","benchmarkRecords","benchmarks","reverseGeocodeBenchmarks","concat","setMapCenter","reverseGeocodeResults","benchmarkShortAddress","reverseGeocodeCity","retailMatchAxios","RetailMatchAxios","setLoadingRetailMatchReport","setLoadingBrands","getRetailMatchBrandsSuccess","getRetailMatchBrandsFailure","getBrandsByNaicsCode","GetBrandsByNaicsCode","getBrandsByGeoAndCategories","GetBrandsByGeoAndCategory","getBrands","gpsServiceAxios","GPSServiceAxios","GetBrands","GetBrandById","getRetailMatchBrandFailure","setLoadingUpdateRetailMatchJob","updateJobFailure","updateJob","cb","UpdateJob","updateJobSuccess","updateSiteDetails","siteDetails","UpdateSiteDetails","updateSiteDetailsSuccess","addImageFailure","addImage","formData","FormData","append","AddImage","updateBrandLogo","UpdateBrandLogo","logoUrl","updateBrandLogoSuccess","setLoadingCategories","getCategories","GetCategories","getRetailMatchCategoriesFailure","setLoadingRetailMatchGeographies","getRetailMatchGeographies","option","GetGeographies","getRetailMatchGeographiesFailure","submitRetailMatchReport","SubmitRetailMatchReport","submitRetailMatchReportFailure","checkSiteIsInDMA","SiteIsInDMA","getBrandsSampleSetDataSuccess","setLoadingBrandsSampleSetData","getBrandsSampleSetData","GetBrandsSampleSetData","getSampleSetByGeo","GetSampleSetByGeo","loginSelector","firstName","lastName","initials","featureAccess","userID","fetchingLoginUserDataSelector","fetchingLoginUserData","currentHoverSelector","currentHover","lockedModalSelector","lockedModal","hexToRgb","hex","exec","parseInt","g","rgbToHex","slice","color","RetailMatchIndexColor","red","yellow","lightGreen","green","progress","verbiage","stageName","MatchReportTypeEnum","getTranslation","companyType","plural","word","AppArea","LOCATIONS","getLocationsWord","CUSTOMERS","getCustomersWord","SALES","getSalesWord","TERRITORIES","getTerritoryWord","COMPETITORS","getCompetitorWord","COTENANTS","getCotenantWord","RETAILER","HEALTHCARE","HOTEL","MARRIOTT","COMMUNITY","COMMERCIAL_REAL_ESTATE","ReportSectionHeader","ReportH1","ReportH2","ReportH3","ReportH4","ReportH5","ReportDateBlockHeaderText","BodyText","ReportBodyTextLarge","ReportP","ReportSectionNumber","ReportCategoryHeader","ReportCategoryText","getRetailMatchActiveApp","activeApp","getRetailMatchResult","getSelectedBrand","selectedBrand","getRetailBenchmarkMatchResult","getRetailMatchJobChartData","retailMatchActiveAppSelector","retailMatchLocationsAnalyzedMapDataSelector","currentMarkers","geographies","currentMapMarkers","retailMatchMultiBrandDataSelector","retailMatchOverviewMap","retailMatchOverviewMapMarkers","retailMatchJobOverviewSelector","retailMatchJobSelector","retailMatchJobResultSelector","retailMatchBenchmarkJobResultSelector","retailMatchLoadingUpdateJobSelector","loadingUpdateJob","retailMatchReportDataSelector","getRetailMatchReportDataReady","retailMatchLongAddressSelector","benchmarkAddressOverride","formatLongAddressFromRecord","rmMosaicSegmentsSelector","loadingRetailMatchReportSelector","getUSAWKT","GET_USA_WKT_INITIATE","setUSAWKT","GET_USA_WKT_SUCCESS","getUSAWKTFailure","GET_USA_WKT_FAILURE","getRedirectLinkInitiate","appName","GET_REDIRECT_LINK_INITIATE","getRedirectLinkFailure","GET_REDIRECT_LINK_FAILURE","setMostRecentlySubmittedRetailMatchReport","SET_MOST_RECENTLY_SUBMITTED_RETAIL_MATCH_REPORT","setLoadingMatchReport","SET_LOADING_MATCH_REPORT","getRetailMatchGeographiesInitiate","GET_RETAIL_MATCH_GEOGRAPHIES_INITIATE","submitMatchReportInitiate","SUBMIT_MATCH_REPORT_INITIATE","getRetailMatchGeographiesSuccess","geos","submitMatchReportSuccess","SUBMIT_MATCH_REPORT_SUCCESS","submitMatchReportFailure","SUBMIT_MATCH_REPORT_FAILURE","setSearchedMatchPlace","SET_SEARCHED_PLACE_MATCH_ACTION","setMatchReportType","reportType","SET_MATCH_REPORT_TYPE","startLastReportRunning","reportName","START_LAST_REPORT_RUNNING","ignoreRunningReport","IGNORE_RUNNING_REPORT","resetRetailMatch","ignore","RESET_RETAIL_MATCH_ACTION","restartRetailMatch","RESTART_RETAIL_MATCH_ACTION","setIncludeAllBuds","includeAll","SET_INCLUDE_ALL_BUDS_ACTION","siteIsInDMAInitiate","SITE_IS_IN_DMA_INITIATE","siteIsInDMASuccess","SITE_IS_IN_DMA_SUCCESS","siteIsInDMAFailure","SITE_IS_IN_DMA_FAILURE","setCheckingtSiteIsInDMA","SET_CHECKING_SITE_IS_IN_DMA","createNewGoogleMap","createNewRetailMatchOverviewMap","setRetailMatchOverMapMarkers","createNewRetailMatchModalMap","clearCurrentGoogleMapRef","setPendingMapCenterEvent","setMapZoom","setMapStyleOptions","styleOption","setMapStyles","setMapHeight","setMapMarkers","clearMapMarkers","marker","setMap","setMapAnchorWindow","anchorWindow","setShowLoadingMarker","setIsMapReady","isReady","getTradeAreaPolygonsFromBlockGroups","blockGroups","reportMapAxios","ReportMapAxios","blockGroupIds","bg","GetBlockgroupPolygons","NotificationType","_icons","_iconsByColor","_categories","_colors","_colorsHex","_lastChangeId","search","icons","hasOwnProperty","searchedIcons","setData","pageNum","pageSize","searchString","_getIconGroup","startIndex","startPage","maxPageDisplayCount","totalPages","ceil","actualStartPage","pageNumbers","currentIndex","arrayIndex","endIndex","iconsCategory","iconsColor","count","components","pop","getIcon","iconStore","_iconStore","_page","_pageSize","_category","_color","_lastPageNum","_pageNumbers","_colorsName","_maxPageDisplayCount","_searchString","_getCategory","_updateIcons","getIcons","getColors","getColorsHex","getLastChangeId","getLastPageNumber","getPageNumbers","getColorHex","gotoPage","getStoreColumns","storeData","otherInfoColumnTitles","newColumns","info","otherName","columnName","dataIndex","isChecked","render","otherValueDate","otherValueInteger","otherValueNumber","otherValueString","format","getOtherStoreColumnValue","storeColumns","useOutsideClick","callback","handleClick","e","current","contains","removeEventListener","useWindowResize","windowSize","setWindowSize","useLayoutEffect","resizeId","updateSize","newSize","innerWidth","screen","innerHeight","popupCenter","w","h","dualScreenLeft","screenLeft","screenX","dualScreenTop","screenTop","screenY","documentElement","clientWidth","clientHeight","systemZoom","availWidth","sortMergedChartData","convertToUsableNumber","customSort","sorting","Number","formatToUsableNumber","UYNSortOrder","Y","U","sortUYN","DwellingTypeSortOrder","sortDwellingType","educationSortOrder","sortEducation","str","cleanedStr","replace","formatUYN","formatMarriedSingle","dwellingFormat","formatDwelling","educationFormat","formatEducation","format24Hr","h24","formatDOW","d","formatWeek","dateString","dateObj","getMonth","getDate","getPrettyNumber","decimalPlaces","toFixed","toLocaleString","formatYValue","num","formatLabelWithEllipsis","substr","setLoadingMosaicSegments","getMosaicSegments","GetMosaicSegments","firstLetterCapitalizer","inputString","callbackString","shortenStr","determinePropensityText","timeoutPromise","ms","isMobileDevice","test","navigator","userAgent","StoreAddressData","fullAddress","between","inclusive","setCurrentApp","SET_CURRENT_APP","setAppView","SET_APP_VIEW","setAppPastIntro","SET_APP_PAST_INTRO","resetAppPastIntro","RESET_APP_PAST_INTRO","showHeaderNav","SHOW_HEADER_NAV","getAllReportsLink","Scout4","origin","getSingleReportLink","base","Match","getConfigReportingEnv","hostname","mapMarkersSelector","mapPolygonsSelector","mapCenterSelector","mapZoomSelector","mapLoadingSelector","showLoadingOverlay","mapSelector","loadingBrandsSelector","loadingBrands","brandsSelector","brandsWithoutShoppingCentersSelector","isShoppingCenter","brandSampleSetDataSelector","sampleSet","nonShoppingCenterBrands","loadingBrandSampleSetDataSelector","loadingSampleSet","brandSampleSetInfoSelector","sampleSetCorrelationId","correlationId","regularExpressions","UsaRegex","AnalysisSource","colors","stringToColor","shadeColor","percent","f","R","G","B","sourceText","nameArray","nameCharCode","rgbNameColor","hexNameColor","hexGrdColor","grd","createLinearGradient","addColorStop","lastThreeChars","lastThreeActualLastIndex","fillStyle","fillRect","image64","btoa","onload","textColor","font","textBaseline","fillText","AreaType","GeographyType","NumericComparison","GrowthType","GrowthPeriod","setScoutIsShowing","scoutIsShowing","setActiveApp","setShowSplashScreen","showSplashScreen","loadDefaultBookmark","DashboardMessageLogic","sendDashBoardMessage","targetElement","sendMessageShowScout","sendMessageScoutSearch","sendMessageShowDashboard","sendMessageShowReports","sendMessageShowRetailMatches","loadScoutIfNeeded","scoutContainer","getElementById","scoutAppItems","getElementsByClassName","SCOUT","BOOKMARKS","RETAIL_MATCHES","classList","remove","setLoadingAllUsers","SET_LOADING_ALL_USERS","getUser","GET_USER_INIT","getAllUsersInitiate","GET_ALL_USERS_INIT","GET_USER_SUCCESS","users","GET_ALL_USERS_SUCCESS","errMsg","GET_ALL_USERS_FAILURE","GET_USER_FAILURE","regionNames","colorizeBy","disabled","appFeatureLookup","RetailMatchReports","GpsInsights","MyReports","Reports","UserSettings","MobilyticsPro","Iq","IQ","Factor","Analyze","Persona","isAppOutsideOfScout","MAX_BRAND_COUNT_OPTIMIZATION_MODE","TOO_FEW_RECORD_EXPLANATION","pathPrefix","pathname","brandLinkURL","isSharing","overviewLinkURL","brandStores","stores","bid","getBrandSummaryData","overviewRecord","cvRollup","brandConsumerViewRollups","cv","tooFewRecords","rankTableSort","brandSummary","rank","rankDataSort","setLoadingBrandSampleSetLocations","SET_LOADING_BRAND_SAMPLE_SET_LOCATIONS","getBrandSampleSetLocationsByGeoInitiate","GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_INITIATE","getBrandSampleSetLocationsByClosestInitiate","GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_INITIATE","getAllBrandsInitiate","GET_ALL_BRANDS_INITIATE","getAllBrandsSuccess","GET_ALL_BRANDS_SUCCESS","getBrandSampleSetLocationsByGeoSuccess","GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_SUCCESS","getBrandSampleSetLocationsByClosestSuccess","GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_SUCCESS","getAllBrandsFailure","GET_ALL_BRANDS_FAILURE","getBrandSampleSetLocationsByGeoFailure","GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_FAILURE","getBrandSampleSetLocationsByClosestFailure","GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_FAILURE","resetBrandSampleSet","correlationIdBase","RESET_BRAND_SAMPLE_SET","SET_MAP_MARKERS_NEW","setShowLoadingOverlay","SET_LOADING_OVERLAY","setLoadingReports","setDeletingReport","deleting","SET_DELETING_REPORT","setReportProgress","SET_REPORT_PROGRESS","deleteReportInitiate","DELETE_REPORT_INITIATE","getReportsInitiate","GET_REPORTS_INITIATE","getRecentReportsInitiate","GET_RECENT_REPORTS_INITIATE","getReportsSuccess","GET_REPORTS_SUCCESS","getRecentReportsSuccess","GET_RECENT_REPORTS_SUCCESS","getRecentMatchReportsSuccess","GET_RECENT_MATCH_REPORTS_SUCCESS","getRecentMobilyticsReportsSuccess","GET_RECENT_MOBILYTICS_REPORTS_SUCCESS","setDeletingReportSuccess","SET_DELETING_REPORT_SUCCESS","getReportsFailure","GET_REPORTS_FAILURE","getRecentReportsFailure","GET_RECENT_REPORTS_FAILURE","mapGcpJobType","jobType","mapGcpJobStatusToAnalysisStatus","Running","Caching","Pending","getGcpFriendlyReportType","friendly","segmentFormatter","foundSegment","segmentKey","batches","createdByUserId","finishedDateTime","createdDateTime","source","Nexus","studyAreaCount","jobCount","overallJobType","uid","queryFromDateTime","queryToDateTime","ReportType","typeID","typeId","featureID","modifiedDateTime","iconName","content","Notification","ReportMapWrapper","ReportMapContainer","ReportMapLoading","ProgressScreenBackdrop","ProgressScreenContainer","ProgressScreenContent","ProgressScreenBackground","ProgressScreenTagline","ProgressScreenRightSectionContainer","ProgressScreenRightSection","ProgressBarContainer","ProgressBarBorder","ProgressBarTrack","ProgressBarProgress","ProgressBarPercentCaption","ProgressBarCaption","HideUpToTabletXtraLarge","ReportTypeEnum","defaultState","loadingReports","loadingConfigurableReports","showConfigurableReportsModal","crSelectedItems","selectedReportId","foundReports","collaboratingReports","selectedFile","showFileModal","selectedReportFiles","showRecentReportsModal","reportsStartDate","reportsEndDate","unviewedReportCount","uniqueReportTypes","configReportsLoadedAtLeastOnce","action","incomingStartDate","incomingEndDate","newAllReports","getUniqueReportTypes","Buxton","nonConfigurableReports","configReportsThatHaveBeenSeen","reduce","hasFourtyTwo","newConfigurableReports","mapConfigurableReportsToAnalysisItems","newCount","deletedReportId","allReportsCopy","removeReportById","reportId","uniqueTypes","setReportTypesFromReports","dialogTrainingState","DialogTrainingState","LoopNet","isPdfLambdaCreating","polygonCentroid","loadingBrand","currentGpsInsightView","All","collaborating","toggleMobilyticsFormIsVisible","initialJobIndex","fvpHasData","brandValue","jobsCopy","viewInScout","scoutIsLoaded","Object","assign","retailMatchModalMap","BuxtonDeck","pendingMapCenterEvent","defaultMapOptions","borderRadius","mapStyles","Light","showLoadingMarker","isMapReady","clearProps","close","retailMatchSubmitReportModalVisible","loadingGeographies","loadingMosaicSegments","loadingSampleSetData","brandSampleSetData","modalMarkerClusterer","brandsCopy","incomingBrand","companyTerritoryTypes","userMFAFactors","waitingForMFAResponse","saveProfileLoading","allUsersCopy","companyTerritoryTypesCopy","company","territoryTypes","isAdminOnly","TerritoryLogic","fnTerritoryTypeUpdated","userCopy","userName","fullName","shareImage","profileImage","u","appReducerState","Set","headerDisplay","contentHeight","add","delete","SET_FETCHING_LOGIN_USER_DATA","GET_LOGIN_USER_DATA","GET_LOGIN_USER_DATA_SUCCESS","GET_LOGIN_USER_DATA_FAILURE","SET_CURRENT_HOVER","SET_LOCKED_MODAL","RetailMatchTimeOption","INITIAL_STATE","currentStep","SquareFootage","maxEnabledStep","BrandOrCategory","dropDownOpen","minSqFeet","SQFT_OPTIONS","maxSqFeet","filterOption","Brands","selectedBrands","selectedCategory","compareOption","Neither","sampleSize","selectedGeoOption","DMA","selectedGeo","selectedTimeOption","TwelveMonths","reportNameError","allValid","resetCount","excludedMarkers","isTrulyDifferentBrandSet","aBrands","valueChangeReducers","FormActionType","SET_CURRENT_STEP","SET_DROPDOWN_OPEN","SET_MIN_SQ_FEET","SET_MAX_SQ_FEET","SET_FILTER_OPTION","SET_SELECTED_BRANDS","SET_SELECTED_CATEGORY","SET_COMPARE_OPTION","SET_SAMPLE_SIZE","SET_SELECTED_GEO_OPTION","SET_SELECTED_GEO","SET_SELECTED_TIME_OPTION","SET_REPORT_NAME","ADD_EXCLUDED_MAP_MARKERS","union","REMOVE_EXCLUDED_MAP_MARKERS","REPLACE_EXCLUDED_MAP_MARKERS","newState","RESET_EVERYTHING","setReportNameErrorMessage","maxPassedStep","Category","CompareDistanceOrGeography","Geography","National","Time","Closest","ReportName","setMaxEnabledState","getDomain","port","protocol","domain","contentWindow","postMessage","receiveDashBoardMessage","iframe","event","hide","performanceUnit","Intercom","intercomSettings","app_id","custom_launcher_selector","unreadCount","intercomUserPermission","userPermission","isFranchisee","isAdmin","intercomCompanyType","companyTypeString","user_id","oktaGroups","BUXTONCORP","oktaUserID","CID","persona_id","personaID","PermissionLevel","Expiration","expireDateTimeFriendly","MaxActiveUserCount","maxActiveUserCount","ButtonStyles","bgColor","hideTitle","Button","theRest","onClick","clickCallback","iconRight","setLoadingNotifications","SET_LOADING_NOTIFICATIONS","setNotificationsDrawerVisible","SET_NOTIFICATIONS_DRAWER_VISIBLE","setNotificationsFilterDates","SET_NOTIFICATION_FILTER_DATES","getNotificationsInitiate","range","GET_NOTIFICATIONS_INITIATE","setNotificationsByLinkIdViewedInitiate","SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_INITIATE","updateNotificationInitiate","UPDATE_NOTIFICATION_INITIATE","updateAllNotificationsReadStatusInitiate","allRead","UPDATE_ALL_NOTIFICATIONS_READ_STATUS_INITIATE","updateAllNotificationsActiveStatusInitiate","allActive","UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_INITIATE","setNotificationsByLinkIdViewedSuccess","SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_SUCCESS","getNotificationsSuccess","notifications","GET_NOTIFICATIONS_SUCCESS","updateNotificationSuccess","UPDATE_NOTIFICATION_SUCCESS","updateAllNotificationsReadStatusSuccess","UPDATE_ALL_NOTIFICATIONS_READ_STATUS_SUCCESS","updateAllNotificationsActiveStatusSuccess","UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_SUCCESS","setNotificationsByLinkIdViewedFailure","SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_FAILURE","getNotificationsFailure","GET_NOTIFICATIONS_FAILURE","updateNotificationFailure","UPDATE_NOTIFICATION_FAILURE","updateAllNotificationsReadStatusFailure","UPDATE_ALL_NOTIFICATIONS_READ_STATUS_FAILURE","updateAllNotificationsActiveStatusFailure","UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_FAILURE","notificationsFilterDatesSelector","notificationsDrawerVisibleSelector","drawerVisible","loadingNotificationsSelector","loadingNotifications","notificationsSelector","notificationsCountSelector","selectedPolygon","selectedIndex","PolygonNameWithCircle","circleColor","circleWidth","circleHeight","Select","defaultValue","onChange","Option","isSelect","useDispatch","match","useRouteMatch","useSelector","loadingRetailMatchReport","reportDataReady","userShareSettings","getUserShareSettings","isPrinting","setIsPrinting","setRenderType","DEFAULT","setIsChoosingDigitalShare","isDebuggingTemplate","setIsDebuggingTemplate","getBrandFromBrandId","newBenchmark","onPrintClick","showMulti","digitalShareOutputs","showTemplate","hideTemplate","multiBrand","sampleCount","backDateVerbiage","showEditAddressModal","StyledTable","columns","dataSource","pagination","ReportOuterWrapper","paddingTop","isScout","onShareClick","doPlaceSearch","sessionToken","DO_PLACE_SEARCH","places","AutocompleteSessionToken","doLatLngSearch","DO_LATLNG_SEARCH","doLoadLocations","DO_LOAD_LOCATIONS","usaWKTSelector","usaWKT","setLoadingConfigReports","addRunningConfigurableReport","setCrModalVisibility","showCrModalVisibility","setCrSelectedItems","selectedItems","cleanedSelectedItems","JSON","selectedItem","baseReportObj","territoryId","geographyId","customPolygon","radiusKm","radiusMiles","radiusMinutes","radiusMilesStr","param","spatialObject","transformedSpatialObject","fixGeoJsonGeometry","stringify","getDataFromRadiusString","Error","extractAndCleanJob","configReportsAxios","ConfigurableReportsAxios","getConfigurableReports","collaborate","GetConfigurableReports","startTimeAsUTC","toUTCString","endTimeAsUTC","filteredReports","reportTime","deleteConfigurableReport","reportIdAsString","String","DeleteConfigurableReport","RetailMatchSelectionMethod","companySupportTeam","territoryTypePermissions","territoryManagementStore","territoryManagementStoreTypePermissionsCopy","foundIt","canView","canEdit","getFranchiseeTerritories","obj","userManagementDefaultState","franchiseeStoreData","franchiseeTerritoryData","userManagementStore","franchiseeStoreDataCopy","storeID","splice","getFranchiseeStores","franchiseeTerritoryDataCopy","territoryID","userPreferences","communitySites","UserPreferencesLogic","defaultStore","currentUser","allMFAFactors","selectedMFAFactorID","mfaResult","showMfaEnrollmentModal","mfaEnrollmentModalText","mfaEnrollmentUpdatedThisSession","userProfileStore","GET_ALL_CATEGORIES_INITIATE","GET_ALL_CATEGORIES_SUCCESS","GET_ALL_CATEGORIES_FAILURE","loginReducerState","header","link","linkText","initialDates","getInitialNotificationFilterDates","notificationsReducerState","readLinkId","notificationsCopy","updatedNotifications","updatedNotification","filteredNotifications","ReportProgressStage","ReportProgressStageName","loadingScenarios","isFactorModalVisible","factorSubmission","toggleFactorFormIsVisible","SESSION_TIMEOUT_LENGTH_MS","startSession","timeoutLengthMs","onTimeout","debugLogging","session","IdleSessionTimeout","notificationShown","resetNotificationOnActivity","updateEventListeners","onTimeOut","onTimeLeftChange","timeLeft","warning","lougoutEndpoint","form","body","appendChild","submit","StyledInfo","FiInfo","BuxTooltip","Tooltip","placement","trigger","iconSize","allowClickThrough","stopPropagation","polyLengths","every","comparisonPolygon","polyLength","comparisonPoint","identicalX","identicalY","Template","BuxtonLogoWrapper","BuxtonLogo","BuxtonLogoAppName","SectionTitleCaption","ContentChildren","ContentLeft","SectionTitleWrapper","SectionTitle","Footer","FooterFlexContent","BrandLogo","Disclaimer","ContactWrapper","ContactInfo","ContactImage","Wrapper","MainContent","MainContentTitle","MainContentText","MainContentChild","_original","_stub","_debug","args","apply","debug","replaceConsole","restoreConsole","ReportInnerWrapper","ReportScrollableSection","ReportDataWrapper","ReportDataWrapperHead","ReportHeaderInnerContainer","ReportDataWrapperBody","ReportMapDataWrapperBody","ReportCardStyles","css","ReportCard","AnimatedReportCard","ColSegInfoWrapper","ColSegInfoSC","dotColor","ColSegInfo","containerId","stuckClass","stickyNavItems","StickyNav","StickyNavContent","StickyNavItem","activeClass","to","toComponent","spy","smooth","offset","setFetchingLoginUserData","getLoginUserData","getLoginUserDataSuccess","userData","getLoginUserDataFailure","setCurrentHover","setLockedModal","linkListConfig","requiredFeatures","externalLink","quickLinksIcon","hoveredIcon","hoverData","noAccessData","walkMe","shortTitle","exists","Internal","External","createEnvUrlString","MULTI","createEnvUrlStringForPersona","__esModule","default","module","options","exports","locals","memo","gpsInsightsReportContainerRoutePathMatch","RegExp","loadingMobilyticsReport","pathnameMatch","handleIsSharing","GPSInsightsForm","backgroundColor","tabIndex","GPSInsightsReport","benchmarkData","PlaceholderCard","iconType","MapTypesEnum","IntroSummaryDiv","whiteSpace","Popover","FiEdit3","marginLeft","cursor","fontSize","letterSpacing","FiAlertCircle","verticalAlign","Table","DynamicNAText","TableTitleSpan","span","TableTitleWrapper","addFullAddr","array","fullAddr","RetailMatchLocationsAnalyzed","brandLogo","selectedMarker","setSelectedMarker","refreshMapMarkers","m","getAnimation","setAnimation","benchmarkMarker","Marker","draggable","animation","Animation","DROP","getPosition","loadTradeAreaBlockGroups","brandMarker","createBrandMapMarker","imgSrc","markerId","infoWindow","InfoWindow","getMapInfoWindowContentString","addListener","tableRow","isBenchmarkSite","setIcon","BOUNCE","vCntIdxHasValue","tableData","mobileOnlyTableColumnsBeforeData","textWrap","desktopOnlyTableColumnsBeforeData","desktopOnlyTableColumnsAfterData","align","padding","handleViewLocation","anySizeTableColumns","sorter","RetailMatchChartIndexPill","anySizeSingleBenchmarkTableColumns","anySizeBenchmarkSetTableColumns","mobileSingleBenchmarkTableColumns","desktopSingleBenchmarkTableColumns","mobileBenchmarkSetTableColumns","desktopBenchmarkSetTableColumns","loadBlockGroupMapLayers","blockgroups","layerId","polygonLayer","MapLayers","deck","RetailMatchMap","createRetailMatchPolygonLayer","externalID","getVolumePercent","getProp","updateProp","addProp","siteTradeAreaBlockGroups","tradeAreaBlockGroups","storeTradeAreaBlockGroups","storeBg","panTo","targetSiteTitle","GoogleMapsMarker","benchmarkSetTitle","BrandLogoSmall","LocationsAnalyzedSharing","scrollableParentSelector","animateIn","animateOnce","lineHeight","formattedGeoValue","geoValues","geoType","dma","formatGeoValue","rowClassName","rowKey","onRow","tableLayout","scroll","animationDuration","zIndex","ReportMap","mapDomId","createMapAction","RetailMatchMapLegend","BrandLogoBase","getSafeGraphLocations","safegraphLocationIds","getNearestSafegraphLocationsByBrand","getNearestSafegraphLocationsByCategory","getLocationVisits","locationId","setSideNavOpen","SET_SIDE_NAV_OPEN","getPendingReportProgress","ReportProgress","PENDING","getSubmittedReportProgress","SUBMITTED","getCachingReportProgress","CACHING","getCompleteReportProgress","COMPLETE","getNextReportProgress","locationName","sp","nextProgress","nextVerbiage","nextStageName","TWO","THREE","RUNNING","FOUR","FIVE","SIX","SEVEN","np","getReportProgressTimerValue","numSeconds","reportIsPending","associatedNotifications","running","reportIsRunning","caching","reportIsCaching","complete","reportIsComplete","MatchReportPending","MobilyticsReportPending","MatchReportRunning","MobilyticsReportRunning","MatchReportCaching","MobilyticsReportCaching","MatchReportComplete","MatchReportError","MobilyticsReportComplete","MobilyticsReportError","getMostRecentReport","matchReport","mobilyticsReport","getAssociatedNotifications","setShowBookmarkModal","loadBookmarks","setLoadingBookmarks","bookmarks","loadBookmarksSuccess","setFoundBookmarks","loadBookmarksFailure","setDefaultBookmark","newDefaultBookmark","setDefaultBookmarkSuccess","deleteBookmark","deletedBookmark","deleteBookmarkSuccess","found","bookmark","jobID","Message","save","saveSharedReport","reportGuid","loadReports","setReportsCollaborating","setFoundReports","processReports","setReportIdAndFiles","batchId","setSelectedReportId","setSelectedReportFiles","collaborateWithCompany","viewKMLFileOnMap","kmlFileToggle","deleteReport","batchID","DEFAULT_NOTIFICATION_DURATION","deleteReportSuccess","resetReportCounter","mapBatchesToAnalysisItems","unviewedCompletedReportsCount","incomingReport","previousReport","reportsCopy","setSelectedFile","setShowReportFileModal","showReportFileModal","setShowRecentReportsModal","groupName","modifiedDateTimeFriendly","imagePath","hexColor","defaultCenter","defaultZoom","getUniqueIdForBrand","findMatchingBrand","brandSample","brandList","convertBrandToMarker","matchingBrand","MapMarker","zipcode","getMapMarkersFromBrandSampleSet","testLogoPromises","validSrc","createdLogo","sample","mapGoodBrandsToMarkers","getPointsFromPolygonType","SET_MAP_JS_API_LOADED","filterDates","modifiedTerm","end","dateTime","numHours","getMatchIcon","fill","opacity","viewBox","xmlns","fillRule","clipRule","getMobilyticsIcon","ErrorExclamation","getScoutIcon","read","StyledModalHeader","StyledModalFooter","NotificationsEmptyWrapper","StyledUl","ul","StyledList","List","NotificationIconWrapper","DateTimeText","TitleText","DeleteConfirmWrapper","includeInMin","includeInMax","MAX_SAFE_INTEGER","SET_VG_FILTERS","SET_VG_FILTER_VIEW","myDataLoaded","loaded","updateCheckedColumns","setBadGeocodes","clearBadGeocodes","fetchWithRetry","fetchFn","retries","timeout","race","_","loadMyDataTypes","myDataAjax","MyDataAxios","promises","GetStoreTypes","GetPushpinTypes","GetTerritoryTypes","UserActions","TargetMarket","GetTargetMarkets","spread","pushpins","territories","targetMarkets","loadMyDataTypesSuccess","updateSortOrder","column","columnToSort","myData","sortOrder","sortDirection","toSort","sortColumn","resetSortData","typesChanged","setActiveType","setBreadcrumbs","updateBreadcrumbs","newArea","importSuccessNotification","importedType","label","fullPath","typeData","filters","rowStart","rowEnd","destroy","setLoading","MY_DATA","hash","loadImportedType","setInterval","typeArray","parentPath","parentDirectoryFullPath","loadTypeData","clearInterval","importFailureNotification","errorMessage","submitImport","promise","SubmitImport","dataType","loadPushpinTypesSuccess","getCurrentUser","loadPushpinTypesFailure","messages","badGeocodes","needsGeocodeAttention","loadStoreTypesSuccess","loadStoreTypesFailure","loadTerritoryTypesSuccess","loadTerritoryTypesFailure","GetAreasOfInterestPointTypes","loadAOIPointsSuccess","updatePointAreasOfInterestUserFolder","loadAOIPointsFailure","GetResultsPointTypes","loadResultsPointsSuccess","updatePointResults","loadResultsPointsFailure","GetAreasOfInterestShapeTypes","loadAOIShapesSuccess","updateShapeAreasOfInterestUserFolder","loadAOIShapesFailure","GetResultsShapeTypes","loadResultsShapesSuccess","updateShapeResults","loadResultsShapesFailure","submitAudit","SubmitAudit","loadStoreFileAuditSuccess","loadStoreFileAuditFail","resetAddCloudFolderMessage","addCloudFolderSuccess","addCloudFolderFailure","buildCurrentCloudTypeDict","addCloudFolder","AddCloudFolder","parentFullPath","setCurrentCloudFolder","folderFullPath","deleteCloudFolderSuccess","deleteCloudFolderFailure","deleteCloudFolder","DeleteCloudFolder","parent","updateCloudFileLoading","resetUpdateCloudFileMessage","updateCloudFileSuccess","updateCloudFileFailure","updateCloudFile","UpdateCloudFile","getShapeResults","deleteCloudFileFailure","deleteCloudFile","DeleteCloudFile","deleteResultsPointsCloudFileSuccess","deleteResultsShapesCloudFileSuccess","deleteAOIPointsCloudFileSuccess","deleteAOIShapesCloudFileSuccess","loadMyDataDataSuccess","loadMyDataDataFailure","setCurrentPage","currentPage","setPageSize","currentPageSize","GetStoreData","mappedObject","activeData","dataSize","maxRows","activeArea","activeType","activeColumns","GetPushpinData","GetTerritoryData","GetResultsPointData","successOtherLoad","GetResultsShapeData","GetAreasOfInterestPointData","GetAreasOfInterestShapeData","GetTargetMarketData","pagedData","adjustedObject","keys","onHeaderCell","_headerCell","columnObj","filteredColumns","loadMyDataOtherSuccess","updateCloudFileSortOrder","removeAllFilters","removeFilter","updateFilters","updateCollaborateTerritories","bool","updateCollaboratePushpins","exportAll","baseUrl","fileType","rowIds","userId","developerId","blob","saveAs","exportSelectedRows","rowIDs","selectedRows","storeTypeId","pushpinTypeID","territoryTypeID","DeveloperId","TypeId","RowStart","RowEnd","SortColumn","SortDirection","setStore","newStore","salesTitleTranslated","verbs","pushpinColumns","territoryColumns","targetMarketColumns","getUserPreferences","userPreferencesAjax","UserPreferencesAxios","GetUserPreferences","preferences","getUserPreferencesSuccess","getUserPreferencesFailure","getAllCommunitySites","GetAllCommunitySites","sites","getAllCommunitySitesSuccess","getAllCommunitySitesFailure","updateUserPreferences","defaultLoginApp","UpdateUserPreferences","updateUserPreferencesSuccess","updateUserPreferencesFailure","getCompanyTerritoryTypes","GetCompanyTerritoryTypes","getCompanyTerritoryTypesSuccess","getCompanyTerritoryTypesFailure","twoByTwo","tableauReducer","salesPerformanceReducer","leftNav","mapSettings","toolbox","mobilyticsPlaces","notificationWorkflowReducer","allBookmarks","activeBookmark","loadingBookmarks","foundBookmarks","showBookmarkModal","nonNullBookmarks","bookmarksCopy","isDefault","updatedBookmark","isVisible","currentLeftNavSection","LeftNavSection","None","isMobilyticsVisitorsVisible","mobilyticsVisitorsGroups","placesLoading","performanceData","loadingLastSession","foundLastSession","lastSession","showMapSettingsModal","payload","StoreExploreData","floor","random","displayColorPicker","storeTypes","regions","dict","processTwoByTwoData","notificationWorkflowUrl","ChartContainer","chartHeight","handleFormatReportDate","handleFormatReportTime","Sidebar","arr","PolygonComparison","fontWeight","sign","milesLessOrGreater","margin","border","PolygonComparisonDates","VscCalendar","marginRight","AiOutlineClockCircle","alignItems","justifyContent","BsArrowUpShort","BsArrowDownShort","SidebarSupp","SidebarTitle","SupText","FaMapMarkerAlt","BsGraphUp","BiStoreAlt","SidebarMoreInfo","href","GetMosaicSegmentDetails","isInDMA","logoMap","transform","shallowEqual","userFullName","isSiteDetails","wordBreak","KeyMetricsSharingContainer","inSidebar","KeyMetricsSharingWrapperContainer","RetailMatchKeyMetricsSharing","jobOverview","locationAddress","RetailMatchKeyMetricsWrapper","IndexBarSharing","subTitle","scaleText","RetailMatchKeyMetricsDescription","maxWidth","getRetailMatchMetricVerbiage","TemplateImageGeneratorProgressStep","RenderTargetType","shareTypes","shareRefs","onProgress","maxWaitMs","startTime","succeededImages","failedImages","totalImages","canceled","renderJobs","RenderingOutputs","WaitingForComponents","_generate","querySelectorAll","imagePromises","imageResolve","onerror","fontEmbedCSS","getFontEmbedCSS","toPng","pixelRatio","cacheBust","_updateProgress","reason","Backdrop","Dialog","attrs","Title","CloseButton","TrainingOption","TextButton","selected","TrainingContainer","TrainingHeaderText","TrainingVideoContainer","TrainingDescription","LoadingIndicator","LoadingIndicatorBackdrop","LoadingIndicatorText","SelectAll","ThumbnailContainer","OutputContainer","OutputContent","OutputTile","OutputThumbnail","OutputCheckbox","OutputCheckboxSelectAll","setDialogTrainingState","openDigitalShareDialogue","getPdfLambdaAction","ChartTitle","titleText","tooltipText","ChartButtonWrapper","ChartBodyWrapper","ChartDot","ChartDotsWrap","ChartDots","styles","Search","input","ReportCheckbox","Checkbox","getMapDataSelector","listener","disableDefaultUI","gestureHandling","onMapReady","addListenerOnce","mapNode","getDiv","replaceWith","removeListener","setCenter","setZoom","Dark","setOptions","GoogleDarkMapStyle","prevProps","nextProps","createMapActionEqual","mapEqual","mapDomIdEqual","onMapReadyEqual","ReportBackLink","BackLink","FiArrowLeft","CollabToggleText","MenuWrapper","motion","LinkWrapper","MenuLink","Menu","isOpen","setIsMenuOpen","wrapperStyle","AnimatePresence","initial","wrapper","animate","exit","transition","right","menuWrapper","ReportActionButton","menu","buttonStyle","ReportButtonFilledHoverStyles","ReportButtonGhostHoverStyles","ReportButton","noPadding","ButtonWrap","StickyNavActive","StickyDropdown","Link","badgeOffset","NavBar","history","useHistory","loginUser","notificationCount","notificationsDrawerVisible","notificationFilterDates","navMenuOpen","setNavMenuOpen","iQUrl","setIqUrl","factorUrl","setFactorUrl","analyzeUrl","setAnalyzeUrl","personaUrl","setPersonaUrl","notificationsTimer","endpoints","endpoint","iq","factor","analyze","persona","getCurrentAppFriendly","navLinks","linkColor","isInternal","treatLinkAsInternal","outsideOfScout","Item","isOutSideOfScout","getExternalLink","showNotifications","Dropdown","overlay","boxShadow","Icon","Badge","fromNewUI","isInFullScreen","webkitIsFullScreen","mozFullScreen","msFullscreenElement","exitFullScreen","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","Element","ALLOW_KEYBOARD_INPUT","enterFullScreen","fullScreenElement","requestFullScreen","mozRequestFullScreen","webkitRequestFullScreen","NavDropdownItemStyle","Nav","nav","NavSection","NavigationDropdown","isMainNavItem","dropdownPosition","triggerWidth","triggerType","NavItem","NavItemBaseStyles","Counter","NavDropdown","React","Component","super","dropdownList","createRef","showMenu","preventDefault","setState","closeMenu","triggerClass","triggerPadding","triggerCustom","productPageApps","createExternalNavLink","linkData","linkIsProduct","currentAppIsProduct","NotificationsModal","searchTerm","setSearchTerm","setFilteredNotifications","confirmingNotification","setConfirmingNotification","filtered","getFilteredNotifications","cancelConfirmDelete","onReadStatusClick","foundNotification","UpdateNotificationRequest","onReadStatusAllClick","allNotificationsAreRead","allNotificationsAreUnread","allowDeleteAll","SideNav","onCloseCallback","bodyStyle","mask","maskClosable","closeable","Popconfirm","onConfirm","okText","cancelText","DatePicker","RangePicker","allowClear","dateStrings","dateRange","getFixedNotificationDates","onDateRangeChange","disabledDate","startOf","Input","placeholder","onSearchChange","bordered","locale","emptyText","getEmptyText","renderItem","getNotificationIcon","getNotificationCursor","onNotificationClick","getNotificationDateTimeValue","onDeleteClick","Drawer","closable","overflow","pointerEvents","minWidth","ItemMap","mapBounds","east","north","south","west","latArray","lngArray","mapHeight","mapWidth","defaultMapZoom","googleMapOptions","defaultMapCenter","polygonCoordinates","markerIcon","setGoogleMap","mapObj","isTerritory","fitBounds","setMarkerIcon","isStore","iconPath","anchor","scaledSize","setDefaultMapZoom","setDefaultMapCenter","getDefaultMapCenterTerritory","latSum","lngSum","getTerritoryMapData","latLngObj","Polygon","paths","GoogleMap","territoryType","withGoogleMap","okCancelIconCommonStyles","onCancel","isNameValid","maxLength","addonAfter","FiCheck","FiXCircle","EnhancedAntdTable","VolumeMetricsDefaultRowStyles","VolumeMetricsCell","VolumeMetricsTableHeader","VolumeMetricsTableRow","ContentWrap","StylishMan","IoMdMan","PeepsRowContainer","PeepsContainer","PeepsContainerSingle","BreakerBreaker","PeepsText","mapType","isVisits","createBasePolygon","stroked","filled","lineWidthScale","pickable","autoHighlight","createGpsPolygonLayer","basePolygon","PolygonLayer","getPolygon","getFillColor","getVolumeAlpha","createScatterplotLayer","scatterplotHomeColor","scatterplotWorkColor","scatterplotRadius","scatterplotLineWidth","scatterplotOpacity","createGetPositionCallback","ScatterplotLayer","radiusMinPixels","radiusMaxPixels","lineWidthMinPixels","lineWidthMaxPixels","getRadius","getLineWidth","getLineColor","createHeatmapLayer","homeGradient","workGradient","heatmapOpacity","heatmapRadius","heatmapIntensity","heatmapThreshold","colorRange","HeatmapLayer","radiusPixels","intensity","threshold","getWeight","createHexagonLayer","hexOpacity","hexRadius","hexUpperPercentile","hexLowerPercentile","hexCoverage","HexagonLayer","upperPercentile","lowerPercentile","coverage","getColorWeight","onHover","layer","object","setHexTooltip","el","innerHTML","GPSmap","homeLatitude","workLatitude","GoogleMapBrandMarker","OverlayView","constructor","markerSize","getHtml","getId","draw","addDomListener","getPanes","overlayImage","getProjection","fromLatLngToDivPixel","getMarkerSizeDimensions","minDimensions","dimensions","parentNode","removeChild","getDraggable","viewVideo","setViewVideo","printReady","setPrintReady","printReadyCountdown","videoPlayStop","video","play","pause","currentTime","renderPrintButton","PrintMultiBrand","ReportHeaderWrap","ReportHeaderInnerWrap","ReportHeaderContentContainer","AiOutlineQuestionCircle","Modal","footer","autoPlay","ReportSharingMenu","multiBrandOverview","FiPrinter","RetailMatchIntroduction","showAddSiteDetails","setShowAddSiteDetails","showAddSitePhotos","setShowAddSitePhotos","showCarouselModal","setShowCarouselModal","showEditLogo","setShowEditLogo","useParams","setVisible","RetailMatchIntroGrid","returnUrl","SiteDetailPhotoButtons","FiCamera","FiEdit2","backgroundSize","RetailMatchIntroPhotoCarousel","IntroGridContentBlockOne","RetailMatchIntroText","IntroGridBlockTwo","beforeUploadFileCheck","singleFile","extensionFromFileName","withRouter","connect","userFranchiseeStores","userFranchiseeTerritories","getUserFranchiseeStoreInformation","getUserFranchiseeTerritoryInformation","removeStoreFromFranchiseeUser","removeTerritoryFromFranchiseeUser","updateUserActiveStatus","activeStatus","getTerritoryTypePermissions","updateTerritoryTypeAdminOnlyProperty","updateTerritoryTypeUserPermissions","updateUserProfile","profileUpdateObj","shareSettingsUpdateObj","updateUserAvatar","avatarImg","deleteUserAvatar","avatarStr","updateShareImage","shareImg","deleteShareImage","imgStr","resetPassword","getCompanySupportTeam","updateTerritoryTypeUserPermissionsForAll","territoryPermissions","GetMFAFactors","IssueMFAChallenge","IssuePushMFAChallenge","setAllMFAFactors","factors","setSelectedFactorID","setWaitingForMFAResponse","waiting","SubmitMFAChallengeResponse","PollForPushResponse","setShowMfaEnrollmentModal","setMfaEnrollmentUpdatedThisSession","updated","updateSessionTimeoutLength","newTimeoutLength","maybeAllUsers","isSetup","watchReportSagas","watchBrandSagas","watchCategorySagas","watchRetailMatchSagas","watchMobilyticsSagas","watchLoginSagas","watchNotificationSagas","watchPlaceSearchSagas","watchUserSagas","watchCommonSagas","getAllCategoriesInitiate","getAllCategoriesSuccess","getAllCategoriesFailure","countryAbbrv","submitMobilyticsReportSaga","put","call","submitMobilyticsReport","startProgress","select","onLocationSelectedForAnalysisSaga","MAXIMUM_SCENARIOS","safegraphLocation","hasPolygon","details","singleSafegraphResponse","startingPoly","getPlaceDetails","addressZipcode","getAddressAndZipcodeFromGooglePlaceResult","safegraphResponse","getSafeGraphLocation","formatted_address","existingMarkers","foundBrand","getSafegraphObjectValue","property","gMapPoints","place_id","formattedAddr","formatSafegraphAddress","isValidLatForMobilytics","isValidLngForMobilytics","getGeocodeFromLatLng","place","getFirstGeocodeResult","SupportedGeocoderCountry","US","scenarioFormState","getNearbySafegraphLocations","ids","excludeBrand","nearbySafegraphLocations","nearbyLocation","getSimilarSafegraphLocations","similarRequest","similarSafegraphLocations","takeEvery","toTitleCase","doPlacesSearch","loadLocations","placesService","PlacesService","geocoderService","isWktEmpty","getCountryWKT","latLngName","getDetails","PlacesServiceStatus","OK","nearbySearch","rankBy","RankBy","DISTANCE","searchAutocompleteWithLatLng","autoCompleteService","AutocompleteService","getPlacePredictions","componentRestrictions","paramsRepresentCircle","paramsRepresentCustomPolygon","paramsRepresentMobilyticsPlace","safegraphLocationId","firstLocationIsPlace","firstLocationDetails","safegraphBrandId","sgLocations","sgLocation","scenario","currentScenarioFormStates","getCountryFromGeocodeResult","short_name","MobilyticsApi","getPolygonFromSafegraphPlace","routeComponent","MAX_MERCATOR_LATITUDE","MIN_MERCATOR_LATITUDE","MAX_MERCATOR_LONGITUDE","MIN_MERCATOR_LONGITUDE","isValidLat","isValidLng","isValidLatForMatch","isValidLngForMatch","isValidLatLngForMatch","isValidLatLngForMobilytics","active","CompanySupportTeamAxios","GetCompanySupportTeam","getCompanySupportTeamSuccess","getCompanySupportTeamFailure","getBaseUrl","attempts","ServiceToken","GetServiceToken","res","fetch","maxAttempts","PerformRequest","ok","json","statusText","newReport","dataStr","parts","cleanRing","ring","firstPoint","lastPoint","prevPoint","cleanedGeoJson","isArray","cleanGeoJsonObject","jsts","io","GeoJSONReader","isValid","buffer","GeoJSONWriter","write","startFactorReport","setFactorScenarioFormStates","setFactorVisible","setFactorLoadingScenarios","TerritoryDrawMode","GeographyTypeMeasurement","GeographyBorderThickness","PrintFileTypeOutput","PrintLegend","MatchView","MatchArea","CollaborateOptions","ColorOptions","UserSettingsMenuSelection","setPropsOnOverlay","_overlay","setProps","layers","_overlayProps","glOptions","preserveDrawingBuffer","layerFilter","viewport","HOUSEHOLD_ANALYSIS","propToAdd","GoogleMapsOverlay","destroyWebGlContext","propToUpdate","propToCheck","prop","removeProp","propToRemove","finalize","_deck","redraw","_dataBucketEnumID","GeoAccuracy","brandReducerState","categoriesReducerState","commonReducerState","mapReducerState","incomingMarkers","newMarker","mobilyticsReducerDefaultState","inProcessPolygonClone","reportsReducerState","deletingReport","recentReports","recentMatchReports","recentMobilyticsReports","reportProgress","retailMatchReducerState","retailMatchGeos","loadingRetailMatchGeos","searchedPlaceIndex","searchedPlaceName","searchedPlaceId","searchedPlaceLat","searchedPlaceLng","matchReportType","lastReportName","lastReportRunning","includeAllBuds","mostRecentSubmittedReport","siteIsInDMA","isCheckingSiteIsInDMA","searchedPlace","sideNavReducerState","defaultDefinition","areaType","geographyType","geographyKey","mileRadius","driveTime","voidGapReducerDefaultState","voidGapFilterMap","TenantCategory","MarketPresenceAndVoid","geographyDefinition","tradeAreaDefinition","showTenants","numberOfLocations","EqualTo","UnitsAndGrowth","minLocations","maxLocations","growthType","GrowthRate","growthPeriod","Last12Months","rate","voidGapFilterView","Default","setSalesPerformanceData","setLoadingSalesPerformanceData","getSalesPerformanceData","setLoadingLastSession","setFoundLastSession","setLastSession","getLastSession","currentAutoSaveID","LocalSettingsLogic","shareId","tma","TerritoryManagementAxios","GetTerritoryTypePermissions","getTerritoryTypePermissionsSuccess","getTerritoryTypePermissionsFailure","UpdateTerritoryTypeAdminOnlyProperty","updateTerritoryTypeAdminOnlyPropertySuccess","updateTerritoryTypeAdminOnlyPropertyFailure","UpdateTerritoryTypeUserPermissions","updateTerritoryTypeUserPermissionsSuccess","updateTerritoryTypeUserPermissionsFailure","UpdateTerritoryTypeUserPermissionsForAll","updateTerritoryTypeUserPermissionsForAllSuccess","updateTerritoryTypeUserPermissionsForAllFailure","territoryTypeId","loadTwoByTwo","TwoByTwoAxios","Get2x2","exploreStore","modelName","ExploreStore","userFranchiseeInfoAjax","UserManagementAxios","GetUserFranchiseeStoreInformation","storeInfo","getUserFranchiseeStoreInformationSuccess","getUserFranchiseeStoreInformationFailure","GetUserFranchiseeTerritoryInformation","territoryInfo","getUserFranchiseeTerritoryInformationSuccess","getUserFranchiseeTerritoryInformationFailure","RemoveStoreFromFranchiseeUser","removeStoreFromFranchiseeUserSuccess","removeStoreFromFranchiseeUserFailure","RemoveTerritoryFromFranchiseeUser","removeTerritoryFromFranchiseeUserSuccess","removeTerritoryFromFranchiseeUserFailure","updateUserActiveStatusAjax","UpdateUserActiveStatus","updatedUser","updateUserActiveStatusSuccess","userUpdateActiveStatusFailure","companyId","newSessionTimeoutLength","userManagementAxios","convertToHours","UpdateSessionTimeoutLength","updateSessionTimeoutLengthSuccess","updateSessionTimeoutLengthFailure","sessionTimeoutLengthMinutes","Store","lifecycleComments","segmentFeatures","countsBySegment","countsByHouseholdType","storeSales","storeSalesGrouped","storeSalesGroupedTopThree","salesBySegment","salesRank","totalHouseholds","averageCompanyHouseholds","other","typesChanging","aoiPoints","aoiShapes","resultsPoints","resultsShapes","tableLoading","collaborateTerritories","collaboratePushpins","cloudFolder","addCloudFolderMessage","currentCloudFolder","cloudFolders","cloudFiles","depth","isGlobal","isShapes","isResults","cloudFile","updateCloudFileMessage","selectedKeys","breadcrumbs","storeUpdateAuditResult","loadMyDataDataError","currentCloudTypeDict","createDict","fieldName","activeLocationCols","activeTerritoryCols","activePushpinCols","activeTargetMarketCols","activeOtherCols","recurseYou","parentFolder","InitialContainerState","views","TableauActionTypes","REQUEST_VIEWS","VIEWS_LOADED","viewsLoadedAction","viewsLoaded","requestViews","loadTableauViews","VisualizationAxios","GetViews","userProfileAjax","UserProfileAxios","UpdateUserProfile","UpdateShareSettings","updateSaveProfileLoading","responses","profileResponse","shareSettingsResponse","mfaEnrollUnenroll","modalText","setMfaEnrollmentModalText","setMFAResult","updateUserProfileSuccess","updateUserShareSettingsSuccess","updateUserProfileFailure","UpdateUserAvatar","updateUserAvatarSuccess","updateUserAvatarFailure","UpdateShareImage","updateShareImageSuccess","updateShareImageFailure","ResetPassword","resetPasswordSuccess","resetPasswordFailure","DeleteUserAvatar","deleteUserAvatarSuccess","deleteUserAvatarFailure","shareStr","DeleteShareImage","deleteShareImageSuccess","deleteShareImageFailure","oktaUserId","verifyResult","challengeResponse","GetShareSettings","getUserShareSettingsSuccess","getUserShareSettingsFailure","flag","_links","verify","IsReact","LeftNav","MobilyticsPlaces","RightNav","MobilyticsBenchmark","Toolbox","MapSettings","Interop","InfiniteLoopDetection","InfiniteLoopDetectionLogging","DieOnInfiniteLoopDetection","WorkplaceForMobilyticsVisitorsOnMap","AllowOverrideTradeAreaMapDelay","NewUI","VoidGap","Debug","ActionLogging","BlockedUIDetection","UseReduxDevTools","newRelativeVolume","Benchmarking","ThematicTile","scoutToFactorPolygons","AMXYChart","week","setChart","createChart","chartId","setIsVisits","chart","series","setSeries","targetDiv","am4core","useTheme","newChart","am4charts","XYChart","legend","Legend","xAxis","xAxes","DateAxis","xLabel","rotateXLabels","renderer","labels","template","rotation","horizontalCenter","verticalCenter","minGridDistance","grid","yAxis","yAxes","ValueAxis","yLabel","adapter","dataItem","newSeries","ColumnSeries","sequencedInterpolation","dataFields","valueY","dateX","primaryColor","stroke","tooltipPosition","XYCursor","scrollbarX","Scrollbar","PRIMARY","SECONDARY","validateData","RechartBarLine","initialYValue","bar1color","bar2color","xTickFormatter","yValueTickFormatter","bar1ValueAttr","bar2ValueAttr","verticalXAxis","makeXLabelsFitDemmit","xAxisHeight","ignoreXTickFormatterOnTooltip","disableAnimation","animationActive","NationalLine","nationalAverageLine","Line","dataKey","isAnimationActive","BarSelection2","selection2Name","Bar","formatYLabel","selection1Name","primaryWeightLabel","secondaryWeightLabel","ResponsiveContainer","ComposedChart","layout","barGap","CartesianGrid","vertical","horizontal","XAxis","tickFormatter","interval","tick","dy","textAnchor","axisLine","tickLine","YAxis","formatter","labelFormatter","IndexSubtitle","IndexBarValue","IndexBarValueSharing","barTotal","IndexPill","IndexPillSharing","pillValue","IndexBarWrapper","IndexBarWrapperSharing","IndexBarTotal","IndexBarScale","IndexBarScaleValueWrapper","IndexBarScaleValueTick","IndexBarInfoText","IndexTextValue","IndexText","IndexBar","scaleValues","barIndex","initiallyVisible","getIndexPillSubtitle","metric","RechartPyramid","root","maxValue","equalYMax","sel1Max","sel","sel2Max","formatTooltipText","SingleChart","side","barSize","barCategoryGap","syncId","baseValue","reversed","orientation","tickMargin","maxBarSize","entry","Cell","bCore","core","NivoCalendar","currentData","setCurrentData","dropdownValue","setDropdownValue","sel1Data","sel2Data","calendarProps","emptyColor","sel1Color","direction","monthBorderColor","dayBorderWidth","dayBorderColor","tooltip","day","calcFromDate","dateStr","calcToDate","CalendarType","ResponsiveCalendarCanvas","ResponsiveCalendar","InteractionArea","displayDropdown","sel1PrimaryName","sel1SecondaryName","customDropdownContent","calendar","ImageDataUrlsToPdf","filenameNoExtension","PrintAxios","PdfNewTab","product","allHtml","fileName","allImages","htmlPage","zipImages","filesToBeZipped","base64","generateAsync","downloadFile","filename","LOOP_NET_VIDEO_URL","LOOP_NET_VIDEO_DESCRIPTION","setOutputs","trainingRendered","setTrainingRendered","outputSections","setOutputSections","trainingState","sections","borderBottom","Crexi","FiArrowRight","controls","rel","DialogueOutputs","onOutputsChanged","isTrainingRendered","onSetTrainingState","toggleItem","newArray","paddingLeft","allChecked","toggleAllItems","checked","section","sectionChecked","sectionItems","getSectionChecked","Fragment","indexes","toggleAllSectionItems","googleMaps","endPhase","failedMessage","clamp","taglineUrl","VennChart","percent1","percent2","centralPercent","centralIcon","location1Name","location2Name","mobileDiams","desktopDiams","breakWord","CircleOuterWrap","mobileInitDiam","mobileExpDiam","desktopInitDiam","desktopExpDiam","CircleInnerWrap","CentralPercent","CircleLeft","PercentLineTotal","PercentLine","LineIndicator","PercentCounterCircle","PercentText","LocationName","CircleRight","calcCircleRadius","circleDiam","calcCircleOffsetIncrease","increasedCircleWidth","borderWidth","increasedOffset","calcCircleOffset","calcCircleRadiusIncrease","calcCircleWidth","calcLineIndicatorUpperBound","circDiam","calcClipPathTop","topLineIndicatorClipPath","lineIndicatorUpB","lineIndicatorWidth","bottomLineIndicatorClipPath","lineIndicatorPercent","topPercentLine","percentTopLinePercent","calcPercentLineZero","calcPercentLine100","calcShaveOff","calcPercentText100","percentTextFontSize","calcPercentTextZero","percentTextPadding","percentTextPercent","lineWidth","calcPercentLineTotalClipPath","percentLineWidth","calcRadiusStartPointForCounterCircle","startPoint","centralPercentTextFontSizeMobile","centralPercentTextFontSizeDesktop","transitionDelay","PsychProfSummWrap","PPSummRow","HuWeR","h3","OthH","h4","MiniH","h5","ImgWrap","NameDetWrap","VarNmWrap","VarValWrap","SweetStatsBruh","PsychProfSumm","topSegs","segDets","topSeg","segDet","SegImg","segmentDetails","det","varNm","varVal","idx","BsQuestionCircle","___CSS_LOADER_API_IMPORT___","elementType","stylers","featureType","MessageListener","reportState","handleMessage","channel","COLORS","darkGreen","ProgressBarOuter","initialBarWidth","ProgressBarInner","barColor","ProgressBar","ReportChartGroup","setBar1ValueAttr","setBar2ValueAttr","topSel1NatObj","setTopSel1NatObj","topSel1Sel2Obj","setTopSel1Sel2Obj","setTooltipText","setTitleText","initialLoadComplete","setInitialLoadComplete","sel1NatIndexValues","setSel1NatIndexValues","sel1Sel2IndexValues","setSel1Sel2IndexValues","visibleModal","setVisibleModal","customChart","calcAndSortIndexValues","findGreatestObj","formatTitleText","tooltipText2","greatestObj","act","greatestSel1Obj","greatestSel1ValueSort","returnValue","newIndexValues","mergedAct","numerator","denominator","indexValue","specificObj","sortStr","returnVal","specificValue","valName","whichSel1Value","higherLowerEqual","val1Name","val2Name","mergedObj","mergedObjVal1","isNaN","mergedObjVal2","compareValue1","compareValue2","returnString","titleTextReplacer","replacement","makeTheCardHeightMatchDemmit","customGroupingDropdowns","dropdownHandlers","ddHandler","FiZoomOut","FiZoomIn","sortedData","sortByValue","Chart","secondaryColor","shareText","unprocessedTextAboveChart","chartAnim","centered","FullHeightCol","Col","ShareLinkWrapper","ShareMenuImg","shareLink","setShareLink","generatingShareLink","setGeneratingShareLink","openShareDialog","generateShareLink","shareReportGuid","reportUri","getReportUri","copyLink","clipboard","writeText","hideButtonText","AiOutlineShareAlt","Row","gutter","FiMail","createShareableUrl","subject","FiLinkedin","redirectWindow","focus","FiTwitter","URLSearchParams","ColumnGridCommonStyles","ThreeColumnGrid","TwoColumnGrid","SegContainer","SegCell","SegCellTextL","SegCellTextSm","SegCellTextSmB","SegContentSecHeader","SegCardHead","SegCardRow","SegCardCol","SegCardSpacer","SegCardHeaderCol","SegCardHeaderRow","SegCardBreakoutContainer","SegCardBreakoutItem","SegCardBreakoutVerticalBreak","SegFooterSubText","SegHeadStyle","SegHeadFirstChildStyle","SegBodyStyle","SegDetails","SegLink","SegCirc","SegCircTextL","SegCircTextSm","SegCellTRAction","EmptyResultsCell","SegRow","SegBody","SegHead","SortSegCellWrapper","SortSegRow","SortSegHead","SortSegBodyStyle","SortSegBody","SortSegFooter","SortSegHeadActions","SortSegCardBreakoutContainer","AscDescIconStyles","AscIcon","FcGenericSortingAsc","DescIcon","FcGenericSortingDesc","ChevronDown","FiChevronDown","findSegIcon","cat","MdChildCare","FaRegMoneyBillAlt","RiCake2Line","BiHomeHeart","GrGroup","BiBuildingHouse","FlexTable","ResponsiveTable","table","UserAvatar","colorArray","avatar","Avatar","loginStatus","CollabToggleWrapper","usersToShow","itemLayout","Meta","textOverflow","UserDropdown","viewingUserName","setViewingUserName","isBuxtonCorpUser","group","isMultiAccountUser","MULTIACCOUNTUSERS","userIsInOktaGroup","hasIntercomConversation","IntercomConversation","avatarAndArrow","logoPathSmall","checkFullScreenForIntercom","IntercomLogic","logAction","urlPrefix","initialUserSettingsView","SETTINGS","windowActions","displayName","currentEnvByUrl","envs","currentEnv","editing","setEditing","setNewReportName","standardReportNameDisplay","GPSReportHeaderContainer","LogoVerticalBorder","GPSReportHeaderContentContainer","GPSHeaderDateBlock","jobIndex","DateVerticalBorder","GPSHeaderButtonWrap","getSaveToScoutTitle","GPSInsightsActions","FiLoader","FiZap","MapDropdownWrapper","MapDropdownFlexWrapper","MapBottomRightButtonWrapper","MapCenterBottomRightButtonWrapper","ListOuterWrapper","ListInnerWrapper","RangeWrapper","DateBlockWrapper","DateBlockContainer","DateBlock","VerticalBorderStyles","DateBlockHeaderWrap","GPSBenchmarkButtonWrap","SourceCard","Card","BrandCard","MapControlsCard","Tip","MapControlsShrinkButton","MapControlsExpandButton","MapCenterButton","GPSBenchmarkButton","GPSBenchmarkButtonEllipsis","GeographyResult","Info","GPSHeaderDateBlockP","setNewName","fromDateObj","toDateObj","lowercase","initCap","distanceFilterText","dateFormatter","timeFormatter","toLocaleTimeString","mobilyticsPlace","standardNameDisplay","MobileInsightStep","Source","getLoadingBrand","getCurrentBrand","setStep","setSource","setCategory","setGeographyType","brandSearchTerm","setBrandSearchTerm","handleStepChange","forwards","Brand","Benchmark","handleSelectSource","getNextDisabledState","hoverable","Polygons","Retail","Restaurant","Healthcare","enterButton","onSearch","trimmedTerm","handleSearchBrands","Blockgroup","ZipCode","County","State","containerElement","handleTimeRangeChange","mapReady","setMapReady","mutateSegData","segment","actualPercent","onMapReadyFailsafe","storePolygon","HHChar","storeProfileData","profile","benchmarkProfileData","IdealVisitorSegments","StyledCheck","PctNumWrapper","propensityToolTipText","filterOpen","setIsFilterMenuOpen","sort1Open","setIsSort1MenuOpen","sort2Open","setIsSort2MenuOpen","setFilters","profData","setProfData","modalContent","setModalContent","sortCol","setSortCol","sort1Option","setSort1Option","dir","sort2Option","setSort2Option","filterData","sortData","tempProfData","storeProf","benchmarkCheck","benchmarkProfile","benProfDat","profileData","sortOption","sortArr","sortText","profDataA","profDataB","reverse","segA","segB","onSortColChange","formatSortingText","sortObj","handleMenuClick","filterVal","ind","handleSortOptionClick","calcPctHH","psychProfileRef","psychSummaryRef","fmtStr","formatFilterText","SortSegCellWrapperWithActivePolygon","borderLeft","Radio","defaultChecked","seg1","seg2","maxHeight","FiExternalLink","GiAchillesHeel","getActivePolygonRule","BreakoutItemContainer","TableWrapper","CircleContainer","Img","DataContainer","gridRowStart","gridColumnStart","gridColumnEnd","BreakoutText","BreakoutHighlight","breakoutColor","SegmentValueText","setStoreProfileData","benchmarkMap","setBenchmarkMap","baseSegments","profileTwo","bMap","alignSelf","borderTop","borderRight","getChartText","visits","actualConsumerViewRollups","maritalStatus","nationalConsumerViewRollups","childrenPresent","numPersonsInHh","hohAge","hohEthnicGroup","hhIncome","hohEducationLevel","dwellingType","homeOwnership","newHomeOwner","newMover","SelectionTypesEnum","mergedCalendarData","setMergedCalendarData","dayCalendarData","setDayCalendarData","calendarSelectionOneData","setCalendarSelectionOneData","calendarSelectionTwoData","setCalendarSelectionTwoData","calendarDataReady","setCalendarDataReady","setSelectedPolygon","selectedPolygonIndex","setSelectedPolygonIndex","polygonIdentifiers","identifier","createCalendarData","calendarData","volumeByDay","convertDayData","SELECTION_ONE_PRIMARY","SELECTION_ONE_SECONDARY","volumeByWeek","GPSRelVolMet","region","storeEstVol","estimatedVolume","visitsCount","benchmarkEstVol","benchmarkVisitsCount","volumeByDOW","volumeByHour","convertData","VolumeByDay","GPSVolumeMetrics","calcPctOfOther","val1","val2","calcPctOfTotal","storePctOfTotal","regionId","dailyVolume","findAverageDailyVolume","benchPctOfTotal","loc1PctOfOther","loc2PctOfOther","setPeeps","rows","peepsInRow","pctTotalCompare","peeps","rowIdx","totalPeeps","relVolMetRef","loc1Vol","loc2Vol","loc1PctFinal","loc2PctFinal","shareStorePeeps","shareBenchPeeps","GPSRelVolMetOutput","location1Color","location2Color","loc1Peeps","loc2Peeps","loc1CalcPctOfLoc2","loc2CalcPctOfLoc1","storePeeps","benchPeeps","rh4Title","peepRow","getVolumeMetricsTableRows","rowText","visitorCount","visitCount","volumeMetricsRef","volumeMetricsElement","GPSVolumeMetricsOutput","getGPSVolumeMetricsOutputTableRows","DigitalShareTableRow","DigitalShareTableData","isDifferent","DigitalShareTable","DigitalShareTableHeader","tr","th","td","webGlCompatible","isWebGLCompatible","polygonNames","pol","visitOrigGeogType","setVisitOrigGeogType","mergedVisitOrigGPSData","setMergedVisitOrigGPSData","setPolyIdentifiers","polygonDataType","setPolygonDataType","originationData","setOriginationData","taaData","polygonIds","origData","visitorOrigination","mergedData","mergeVisitOrigGPSData","GPSMap","Alert","showIcon","VisitorOrigination","handlePolygonDataChange","GPSVisitOrig","storeVisitOrigData","benchmarkVisitOrigData","TAAWeightToggleEnum","TAAYAxisLabelEnum","LineSVG","version","strokeWidth","setChartData","xAxisKey","setXAxisKey","VISITORS","yAxisLabel","setYAxisLabel","cumulativeValues","setCumulativeValues","referenceY","setReferenceY","referenceX","setReferenceX","locationReference","setLocationReference","getPolygonNamesForSelectedGpsInsight","setCumulativeData","cd","cumulativeMap","getPolygonIdentifiers","visitAccumulator","visitorAccumulator","parseFloat","visitWeightCumulative","visitorWeightCumulative","visitorWeightCumulativeValues","visitWeightCumulativeValues","newData","visitWeight2","visitorWeight2","visitWeightCumulative2","visitorWeightCumulative2","splitString","indexStr","handleSetPercent","cValues","nextIndex","dataMax","tickCount","Label","angle","strokeDasharray","dot","TAAChartLegend","TAAChartLendItem","TAALegendItemDot","ReferenceLine","isFront","ReferenceDot","reference","rx","TAAOptionsContainer","TAAOptions","ry","VISITS","li","setCurrentBenchmarkIndex","layerType","setLayerType","Scatterplot","isMapControlsOpen","setIsMapControlsOpen","mapNeedsRecenter","setMapNeedsRecenter","setIsHome","isMapLoaded","setMapLoaded","homeColorObj","workColorObj","setScatterplotOpacity","setScatterplotRadius","setScatterplotLineWidth","setScatterplotHomeColor","setScatterplotWorkColor","setHeatmapOpacity","setHeatmapRadius","setHeatmapIntensity","setHeatmapThreshold","setHexRadius","setHexOpacity","setHexUpperPercentile","setHexLowerPercentile","setHexCoverage","shareTemplate","setShareTemplate","setRef","gpsMapLayers","infoWindowAnchor","MVCObject","isStopped","iw","querySelector","paddingBottom","paddingRight","node","createTextNode","replaceChild","iwd","closeButton","originalCloseButtonDisplay","drawLayers","_scatterplotLayer","Heatmap","Hexagon","setInfoWindowAndOpen","delay1Ms","delay2Ms","centerDelay1","centerDelay2","centerDelay1Initial","centerDelay2Initial","centerTimer","deckTimer","addInfoWindow","pixelOffset","Size","disableAutoPan","setContent","useCallback","HOME","WORK","extra","MapLayerOptions","handleScatterplotHomeColorChange","blue","handleScatterplotWorkColorChange","Slider","InputNumber","countyDropdowns","WebGLRenderingContext","TimeElement","TableOption","MapLegendItem","MapLegendWrapper","DropdownWrapper","dropdownStyle","googlePushpinImage","setSelectedCategory","selectedSubCategory","setSelectedSubCategory","selectedTimeElement","setSelectedTimeElement","Anytime","setPolygons","getMapMarkers","filteredSubCategories","getFilteredSubCategories","polys","getMapPolygons","timeElements","Before","After","rings","getFilteredPrimaryCategories","filteredPrimaryCategories","foundCategory","categoryId","subCatsInCategory","foundSubCat","getTopLocations","numLocations","fvps","getFvpTotal","getFvpPercentage","percentage","beforeVisitCount","afterVisitCount","filterInput","numMarkersToGet","locationIndex","storeId","runningTotal","getTableColumns","tableOption","polygonColor","numberToDisplay","defaultSortOrder","markersCopy","selectTopLocation","getShareTableColumns","fvpMap","One","Two","chartText","getHeaderAddressVerbiage","catName","showSearch","timeElement","displayObj","getTableDisplayStyle","getmapLegend","StyledInfoBox","FrequentlyVisitedPlacesMapWithGoogleMap","mapRef","polyCenters","setPolyCenters","polygonMapCenterPoints","bounds","LatLngBounds","gp","extend","getCenter","selectedMapMarker","fitMapBoundsToMarkers","getBoundsFittingAllItems","onTilesLoaded","mapPaneName","OVERLAY_LAYER","defaultPosition","closeBoxURL","FrequentlyVisitedPlacesMapWithGoogleMapMemo","markersEqual","polygonsEqual","vennActive","setVennActive","visitorLoyalty","loyaltyData","roundedValue","jobIds","BiMale","VisitorLoyaltySharing","afterAnimatedIn","getNavItems","standardOffset","navItems","defaultIconSize","LegendItem","GenericIcon","fallbackLogo","setFallbackLogo","helpers","Logo","getIndexBackgroundColor","segmentStoreScores","scores","highest","middle","lowest","numberOfSegments","segmentLength","getSegmentLength","getHighestSegmentOfScores","getLowestSegmentOfScores","getMiddleSegmentOfScores","renderTable","hasHeader","visibility","IndexValuesDescription","storesForBrand","benchmarkScores","benchmarkSegments","hasLogo","flexGrow","addEventListenersToMarker","newMarkers","topNBrands","float","useLocation","button","RetailMatchBrandCardWrapper","RetailMatchBrandCardBottomRow","photoUploadList","setPhotoUploadList","photosReadyForUpload","setPhotosReadyForUpload","setLoadingUpdateJob","Form","Upload","listType","multiple","fileList","beforeUpload","handleBeforeUpload","onRemove","htmlType","uploadPhoto","siteDetailsText","setSiteDetailsText","selectedImageIndex","setSelectedImageIndex","handleImageClick","LightboxBackdrop","Lightbox","LightboxImageContainer","LightboxImage","editAddressModalVisible","setEditAddressModalVisible","RetailMatchEditAddressModal","defaultAddress","defaultCity","defaultZipcode","setAddress","setCity","setZipcode","resetForm","submitUpdate","autoGenerateAddress","newAddress","newCity","newZipcode","newJobResult","newBenchmarkRecord","updateJobAndBenchmark","rgBenchmark","validateStatus","field","formItems","formValid","onOk","required","help","NA","topN","idealCustomerCount","metricLevel","idealCustomerRatio","idealCustomerSimilarity","tableDataCopy","setTableDataCopy","brandListRef","columnsCopy","onRowClick","row","currentDataSource","RetailMatchStickyNav","RetailMatchKeyMetrics","RetailMatchPsychProf","rollups","TextFocus","siteConsumerViewRollups","consumerViewRollups","siteProfileForBrand","siteProfile","brandProfile","brandProfiles","avgBrandHHCnt","segAvgBrandHHCnt","profRefData","setProfRefData","profRefDataRender","setProfRefDataRender","buttonText","setButtonText","showPropensityColumn","setShowPropensityColumn","getTopProfiles","numToGet","allProfiles","RetailMatchPsychProfShare","averageBrandHHCount","avgHHCnt","brandSegmentData","tempArray","convertProfArrayToProfRefArray","newSegments","filteredSegments","formatButtonText","inSegments","profRef","matchingBrandProfileSegment","profArray","prof","setActive","rowNum","totalSum","hhCnt","calcHH","hhPct","siteSegRef","sourceOfTruthIdx","brandSeg","siteSeg","onMouseEnter","onMouseLeave","TableHeaderContainer","TableContainer","TableCell","TradeAreaAddress","matchingSegment","SubMenu","defaultOpenKeys","ACCOUNT_INFORMATION","COMPANY_MANAGEMENT","setSelectedMenuItem","realKey","selectedMenuItem","getDefaultSelectedKey","USER_MANAGEMENT","TERRITORY_MANAGEMENT","ACCOUNT_TEAM","USER_PREFERENCES","USER_PROFILE","defaultSelectedMenuItem","accountInformationComponent","userManagementSubMenuComponent","territoryWord","AdminTools","InactivityTimeout","TIMEOUT_MANAGEMENT","Sider","theme","mode","defaultSelectedKeys","Switch","Route","exact","TimeoutManagement","TerritoryManagement","allNonAdminUsers","allAdminUsers","territoryTypeColumns","colorStrokeHex","colorFillHex","manageTerritoryType","toggleAllUsersPermissions","setLoadingTerritoryTypePermissions","permissionsCopy","permission","selectedTerritoryType","VIEW","allUsersCanView","EDIT","allUsersCanEdit","userCanView","userCanEdit","permissions","setSelectedTerritoryType","setModalVisible","handleModalCancelClick","handleModalOkClick","modalVisible","loadingTerritoryTypePermissions","territoryPermissionsOptionsChanged","permissionType","tTypeID","toggleTerritoryAdminMode","tTypeCopy","territorySearchInputChanged","territoryTypeCopy","allTerritoryTypes","setUserTerritoryPermissionsUsersInitialValues","usersWithTerritoryPermissions","permissionIndex","userIndex","newProps","userTypes","userType","manageTerritoryColumns","filterMultiple","onFilter","territoryModal","filterChange","territoryTypesTable","tType","IUserManagementModalSection","UserManagement","wordStore","wordStores","wordTerritory","wordTerritories","nameFilters","userLoginStatuses","ACTIVE","loginStatusString","IDLE","NOT_LOGGED_IN","userActiveStatusMenus","showingActiveStatusMenu","uniqueUserLoginStatuses","uniqueUserLoginStatusFilters","userManagementUserStoreColumns","confirmFranchiseeUserStoreUnassign","getItemMap","shape","userManagementUserTerritoryColumns","createdDateTimeFriendly","territory","confirmFranchiseeUserTerritoryUnassign","itemRequested","setUserManagementTableLoading","loadingUserManagementTable","getUserActionsMenu","getUserLoginStatusColor","manageUser","setSelectedUser","openUserManagementModal","viewUserAssignedTerritory","setSelectedTerritory","setUserManagementMapItemModalVisiblity","viewUserAssignedStore","setSelectedStore","selectedUser","setUserManagementModalVisiblity","setUserManagementModalSection","STORES","modalSection","handleAreYouSureCancel","setAreYouSureVisibility","handleAreYouSureOk","selectedStore","selectedTerritory","handleUserManagementMapItemModalOkClick","handleUserManagementMapItemModalCancelClick","userManagementModalVisible","userManagementItemMapModalVisible","areYouSureVisible","userSearchInputChanged","userManagementColumns","franchiseStoresCount","franchiseTerritoriesCount","modalColumns","modalData","userModal","areYouSureModal","modalEmptyVerbiage","modalEmptyIcon","userManagementMapItemModal","mapItem","UserPreferences","_defaultOpacity","getRgbaColor","colorIsValid","chosenColorRGBA","getActualRgbaColor","chosenActualColorRGBA","defaultColorChange","chosenColorHex","rgb","hexColorValue","opacityValue","userPreferencesCopy","defaultColor","defaultOpacity","setLoadingUserPreferences","defaultActualColorChange","chosenActualColorHex","defaultActualColor","defaultActualOpacity","defaultSizeChange","inputValue","allValues","inputIsValid","sizeValue","sizeIsValid","defaultSize","tempValue","defaultBorderThicknessChange","thickness","defaultBorderThicknessXThin","defaultBorderThicknessThin","defaultBorderThicknessMedium","defaultBorderThicknessThick","XTHIN","THIN","MEDIUM","THICK","defaultActualBorderThicknessChange","defaultActualBorderThicknessXThin","defaultActualBorderThicknessThin","defaultActualBorderThicknessMedium","defaultActualBorderThicknessThick","defaultSiteChange","defaultSite","setActivityColumnPickerVisiblity","activityColumnPickerVisible","setContactColumnPickerVisiblity","contactColumnPickerVisible","contactColumnDefaultsChange","NAME","contactColumnNameDefaultVisible","TITLE","contactColumnTitleDefaultVisible","OFFICE_PHONE","contactColumnOfficePhoneDefaultVisible","CELL_PHONE","contactColumnCellPhoneDefaultVisible","EMAIL_ADDRESS","contactColumnEmailAddressDefaultVisible","ADDED_BY","contactColumnAddedByDefaultVisible","ADDRESS","contactColumnAddressDefaultVisible","LINKEDIN","contactColumnLinkedinDefaultVisible","REGION","contactColumnRegionDefaultVisible","TIME_ZONE","contactColumnTimeZoneDefaultVisible","NOTES","contactColumnNotesDefaultVisible","activityColumnDefaultsChange","activityColumnNameDefaultVisible","DATE_CREATED","activityColumnDateCreatedDefaultVisible","ACTIVITY_RESULT","activityColumnActivityResultDefaultVisible","NEXT_STEP","activityColumnNextStepDefaultVisible","activityColumnNotesDefaultVisible","CREATED_BY","activityColumnCreatedByDefaultVisible","DUE_DATE","activityColumnDueDateDefaultVisible","RATING","activityColumnRatingDefaultVisible","defaultColorOptionChange","AUTO","autoColorByDefault","CUSTOM","defaultActualColorOptionChange","autoColorActualByDefault","defaultAddToStudyAreaChange","addToStudyAreaByDefault","activateActualDTChange","activateActualDTByDefault","defaultMeasurementTypeChange","measurementTypeIsMile","measurementTypeIsKilometer","MILE","KILOMETER","defaultUnitTypeChange","defaultToDriveTime","defaultToRing","DRIVE_TIME","RING","defaultTerritoryDrawModeChange","defaultTerritoryDrawModeIsFreeDraw","defaultTerritoryDrawModeIsGeography","FREE_DRAW","GEOGRAPHY","defaultMatchesAreaChange","defaultMatchAreaIsContacts","defaultMatchAreaIsMyActivity","defaultMatchAreaIsFiles","CONTACTS","MY_ACTIVITY","FILES","defaultMatchesViewChange","defaultMatchViewIsGrid","defaultMatchViewIsList","GRID","LIST","printActiveItemsLegendChanged","OFF","printDisplayActiveItemsLegend","ON","defaultSearchAreaChangeHandler","searchAreaDefaultInternet","searchAreaDefaultFiles","searchAreaDefaultLocations","searchAreaDefaultPushpins","searchAreaDefaultTerritories","SearchArea","INTERNET","PUSHPINS","printModeChanged","printFileTypeOutputIsPdf","printFileTypeOutputIsPng","PDF","PNG","toggleCollaboration","ALL","allCollaborateOptionsOn","collaborateAOIThematics","collaborateLocationFilters","collaborateReportHistory","collaborateViewReports","collaborateContactActivity","collaborateContacts","collaborateProspects","AOI_THEMATICS","LOCATION_FILTERS","REPORT_HISTORY","VIEW_REPORTS","CONTACT_ACTIVITY","PROSPECTS","atLeastOneCollaborateOptionOn","defaultAppChange","defaultApp","loadingUserPreferences","rgba","actualHex","nextPropsDefaultLoginApp","radioDefaultAppValues","fallbackAppName","defaultSearchArea","defaultPrintType","defaultActiveItemsLegendSetting","defaultMatchesView","defaultMatchesTab","defaultTerritoryMode","defaultUnitType","defaultMeasurementType","defaultColorType","defaultActualColorType","defaultCommunitySite","defaultBorderThickness","defaultActualBorderThickness","activityColumnMenu","contactColumnMenu","customColorPopover","SketchPicker","customActualColorPopover","actualDRRingDetails","Group","mapOptionsDetails","territoryOptionDetails","territoryWordPlural","territoryOptionsKey","territoryOptions","Territories","Collapse","Panel","mapOptions","actualDTRingSection","StoreExplore","mapActions","printOptions","searchOptions","communityOptions","onVisibleChange","radioDefaultAppsConfig","radioComps","entries","featureDisabled","UserProfile","emailAddress","currentPassword","newPassword","showUploadListObj","showPreviewIcon","showRemoveIcon","validateUserProfileForm","forms","uName","fName","lName","shareDisclaimer","checkIfEmailAndNotBuxtonco","firstNameIsValid","lastNameIsValid","phoneIsValid","multifactorEnabled","userHasMfa","userProfileIsValid","firstNameValid","lastNameValid","emailTest","emailValid","phoneTest","phoneValid","beforeLogoChange","isValidExtension","logoIsValidFileExtension","handleAvatarChange","originFileObj","avatarFileList","onShareLogoChange","shareReportLogoList","beginUserAvatarUpdate","initiateShareImageUpdate","saveUserUpdate","runBuxtonChecksOnProfile","endsWith","toggleAreYouSureRemoveUserAvatar","avatarRemoveAreYouSureModalVisible","toggleAreYouSureRemoveShareLogo","shareLogoRemoveAreYouSureModalVisible","removeUserAvatar","removeShareLogo","resetProfileForm","mfaChangeHandler","showMFADisableWarning","onMSADisableConfirm","onMSADisableCancel","onMFASuccess","onMfaEnrollmentModalOk","userShareSettingsCopy","usernameValid","showMFAEntryModal","showMFAEnrollmentModal","hasImageUploadFeature","UserSettingsUploadImage","hasMobilyticsPaidFeature","MobilyticsPaid","avatarUploadButton","shareLogoUploadButton","avatarUploadArea","aspect","quality","showUploadList","openFileDialogOnClick","shareLogoUploadArea","userAvatarTrashCan","shareLogoTrashCan","mfaModal","successCallback","mfaEnrollmentModal","hidden","mfaEnrollSwitch","checkedChildren","unCheckedChildren","finalSwitch","enforceMFA","columnGap","carousel","responseCode","setResponseCode","onMFAClick","factorId","selectedFactor","gotoSlide","factorType","goTo","onEnterPress","keyCode","click","onResponseCodeChange","factorButtons","friendlyName","justify","factorSelectionPage","mfaSubmitButton","mfaStatus","mfaStatusSpan","tip","carouselPages","onKeyUp","destroyOnClose","Carousel","dots","effect","page","gridStyle","AccountTeam","intercomButton","userActions","getSupportTeamMemberAvatar","teamMember","getSupportTeamMemberMailTo","buxtonSupport","member","isSupport","accountOwner","isAccountOwner","primaryContact","isPrimaryContact","accountOwnerCard","Grid","primaryContactCard","buxtonSupportCards","supportID","accountManagerSection","Divider","fontStyle","currentSessionTimeoutLength","setCurrentSessionTimeoutLength","isSettingNewSessionTimeoutLength","setIsSettingNewSessionTimeoutLength","isUsingPresetOptions","setIsUsingPresetOptions","radioValue","setRadioValue","newSessionMinute","setNewSessionMinute","newSessionHour","setNewSessionHour","isUpdatingValue","setIsUpdatingValue","radioButtons","presetOptions","customOptions","userTimeoutManagementComponent","totalLengthInMinutes","getAllBrandsSaga","getBrandSampleSetLocationsByGeoSaga","getBrandSampleSetLocationsByGeo","getBrandSampleSetLocationsByClosestSaga","getBrandSampleSetLocationsByClosest","getAllCategoriesSaga","getRedirectLinkSaga","getRedirectLink","newFeatureAccess","actionArgs","txt","setNotificationsByLinkIdViewedSaga","setViewedByLinkId","getNotificationsSaga","GetNotificationsRequest","getNotifications","getFixedNotifications","updateAllNotificationsReadStatusSaga","UpdateAllNotificationsReadStatusRequest","updateAllNotificationsReadStatus","updateAllNotificationsActiveStatusSaga","UpdateAllNotificationsActiveStatusRequest","updateAllNotificationsActiveStatus","updateNotificationSaga","updateNotification","getReportsSaga","getReports","deleteReportSaga","getRecentReportsSaga","getRecentReports","includeRetailMatch","includeMobilytics","getRetailMatchGeographiesSaga","submitMatchReportSaga","submitMatchReport","siteIsInDMASaga","takeLatest"],"mappings":"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kC,UAAW,cACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,YACPokC,UAAW,mBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,YACPokC,UAAW,mBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,YACPokC,UAAW,mBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,OACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,QACPokC,UAAW,gBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,MACPokC,UAAW,cACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,SACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,SACPokC,UAAW,WACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,SACPokC,UAAW,YACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO62E,EACPzyC,UAAW,cACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,cACPokC,UAAW,aACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,OACPokC,UAAW,OACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,UACPokC,UAAW,kBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,OACPokC,UAAW,aACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,qBACPokC,UAAW,mBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,SACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,WACPokC,UAAW,WACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,YACPokC,UAAW,YACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,UACPokC,UAAW,UACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,QACPokC,UAAW,QACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,MACPokC,UAAW,MACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,QACPokC,UAAW,QACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,eACPokC,UAAW,cACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,iBACPokC,UAAW,gBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,gBACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,eACPokC,UAAW,cACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,WACPokC,UAAW,WACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,iBACPokC,UAAW,gBACXr1C,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,KAOb,EAAAmC,eAAiB,CAC1B,CACI/2E,MAAO,OACPokC,UAAW,OACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,YACPokC,UAAW,mBACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,YACPokC,UAAW,mBACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,YACPokC,UAAW,mBACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,OACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,QACPokC,UAAW,gBACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,MACPokC,UAAW,cACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,SACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IAEN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI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ElB,CACI50E,MAAO,QACPokC,UAAW,WACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,cACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,aACPokC,UAAW,YACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,UACPokC,UAAW,UACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,OACPokC,UAAW,OACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,QACPokC,UAAW,QACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,WACPokC,UAAW,UACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,UACPokC,UAAW,UACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,aACPokC,UAAW,YACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,UACPokC,UAAW,WACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,kBACPokC,UAAW,gBACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,GAElB,CACI50E,MAAO,iBACPokC,UAAW,eACXnyC,MAAO,IACPlD,KAAM,IACN0vE,QAAQ,EACRp6B,WAAW,EACXswC,aAAcC,K,8ECpvBtB,Q,uxBCAA,iBACA,OACA,OACA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","file":"common.71b4225ad3aee4ff6432.js","sourcesContent":["export { IAction } from \"./IAction\";\nexport { IActionFrame } from \"./IActionFrame\";\nexport { IActualCustomerData } from \"./IActualCustomerData\";\nexport { IAddress } from \"./IAddress\";\nexport { IAllocateSummaryData } from \"./IAllocateSummaryData\";\nexport { IAllocateSummaryDataCollege } from \"./IAllocateSummaryDataCollege\";\nexport { IAllocateSummaryDataIncome } from \"./IAllocateSummaryDataIncome\";\nexport { IAllocateSummaryDataRace } from \"./IAllocateSummaryDataRace\";\nexport { IAPIInformation } from \"./IAPIInformation\";\nexport { IApplication } from \"./IApplication\";\nexport { IAssetFileGroup } from \"./IAssetFileGroup\";\nexport { IAssetMetaData } from \"./IAssetMetaData\";\nexport { IAttribute } from \"./IAttribute\";\nexport { IAttributeFilter } from \"./IAttributeFilter\";\nexport { IAuthCredentials } from \"./IAuthCredentials\";\nexport { IAnalysisItem } from \"./IAnalysisItem\";\nexport { IBasicCompany } from \"./IBasicCompany\";\nexport { IBatch } from \"./IBatch\";\nexport { IBinaryFile } from \"./IBinaryFile\";\nexport { IBingThematicTileListing } from \"./IBingThematicTileListing\";\nexport { IBlockGroupData } from \"./IBlockGroupData\";\nexport { IBookmark } from \"./IBookmark\";\nexport { IBookmarkAssociatedItem } from \"./IBookmarkAssociatedItem\";\nexport { IBookmarkBuxtonLayer } from \"./IBookmarkBuxtonLayer\";\nexport { IBookmarkDotCustomer } from \"./IBookmarkDotCustomer\";\nexport { IBookmarkDriveTime } from \"./IBookmarkDriveTime\";\nexport { IBookmarkRuler } from \"./IBookmarkRuler\";\nexport { IBookmarkType } from \"./IBookmarkType\";\nexport { IBox } from \"./IBox\";\nexport { IBrand } from \"./IBrand\";\nexport { IBrandSampleSet } from \"./IBrandSampleSet\";\nexport { IBusiness } from \"./IBusiness\";\nexport { IBusinessAggregateDistanceData } from \"./IBusinessAggregateDistanceData\";\nexport { IBusinessAnalysisData } from \"./IBusinessAnalysisData\";\nexport { IBusinessGroup } from \"./IBusinessGroup\";\nexport { IBusinessLocation } from \"./IBusinessLocation\";\nexport { IBusinessStoreDistanceData } from \"./IBusinessStoreDistanceData\";\nexport { IBuxtonActiveDirectoryUser } from \"./IBuxtonActiveDirectoryUser\";\nexport { IBuxtonEnum } from \"./IBuxtonEnum\";\nexport { IBuxtonToolsUser } from \"./IBuxtonToolsUser\";\nexport { IBuxtonUserClient } from \"./IBuxtonUserClient\";\nexport { ICacheData } from \"./ICacheData\";\nexport { ICanadaCoreCustomer } from \"./ICanadaCoreCustomer\";\nexport { IChart } from \"./IChart\";\nexport { IChartData } from \"./IChartData\";\nexport { ICheckBoxReportItem } from \"./ICheckBoxReportItem\";\nexport { ICircle } from \"./ICircle\";\nexport { IClientDataset } from \"./IClientDataset\";\nexport { ICloudFile } from \"./ICloudFile\";\nexport { ICloudFileDatabasePage } from \"./ICloudFileDatabasePage\";\nexport { ICloudFolder } from \"./ICloudFolder\";\nexport { ICloudIcon } from \"./ICloudIcon\";\nexport { IClusterPoint } from \"./IClusterPoint\";\nexport { IClusterType } from \"./IClusterType\";\nexport { IComboBoxReportItem } from \"./IComboBoxReportItem\";\nexport { ICommonGeographyGroup } from \"./ICommonGeographyGroup\";\nexport { ICommonGeographyType } from \"./ICommonGeographyType\";\nexport { ICommonPointGroup } from \"./ICommonPointGroup\";\nexport { ICommonPointType } from \"./ICommonPointType\";\nexport { ICommunityItem } from \"./ICommunityItem\";\nexport { ICommunityMapType } from \"./ICommunityMapType\";\nexport { ICompany } from \"./ICompany\";\nexport { ICompanyMetrics } from \"./ICompanyMetrics\";\nexport { ICompanyMigration } from \"./ICompanyMigration\";\nexport { ICompanyMigrationStatus } from \"./ICompanyMigrationStatus\";\nexport { ICompanyResult } from \"./ICompanyResult\";\nexport { IConsumer } from \"./IConsumer\";\nexport { IConsumerBase } from \"./IConsumerBase\";\nexport { ICoreCustomerData } from \"./ICoreCustomerData\";\nexport { ICountry } from \"./ICountry\";\nexport { ICreativeResult } from \"./ICreativeResult\";\nexport { ICustomerData } from \"./ICustomerData\";\nexport { ICustomerSegment } from \"./ICustomerSegment\";\nexport { ICustomerType } from \"./ICustomerType\";\nexport { ICustomerViewFilterSet } from \"./ICustomerViewFilterSet\";\nexport { IDashboardData } from \"./IDashboardData\";\nexport { IDashboardItem } from \"./IDashboardItem\";\nexport { IDashboardMessage } from \"./IDashboardMessage\";\nexport { IDatabasePage } from \"./IDatabasePage\";\nexport { IDatasetAccess } from \"./IDatasetAccess\";\nexport { IDatasetColumn } from \"./IDatasetColumn\";\nexport { IDatasetUser } from \"./IDatasetUser\";\nexport { IDbfReader } from \"./IDbfReader\";\nexport { IDemographicData } from \"./IDemographicData\";\nexport { IDemographicDataPoint } from \"./IDemographicDataPoint\";\nexport { IDemographicThematicCountry } from \"./IDemographicThematicCountry\";\nexport { IDemographicThematicGroup } from \"./IDemographicThematicGroup\";\nexport { IDidYouKnow } from \"./IDidYouKnow\";\nexport { IDisplayFieldReportItem } from \"./IDisplayFieldReportItem\";\nexport { IDistributionItem } from \"./IDistributionItem\";\nexport { IDotDensitySettings } from \"./IDotDensitySettings\";\nexport { IDotDensitySettingsCreatorInput } from \"./IDotDensitySettingsCreatorInput\";\nexport { IDotScopeType } from \"./IDotScopeType\";\nexport { IDriveTimePolygon } from \"./IDriveTimePolygon\";\nexport { IExportFile } from \"./IExportFile\";\nexport { IFeature } from \"./IFeature\";\nexport { IFeedback } from \"./IFeedback\";\nexport { IFile } from \"./IFile\";\nexport { IFileComment } from \"./IFileComment\";\nexport { IFileMetaData } from \"./IFileMetaData\";\nexport { IFileParseResult } from \"./IFileParseResult\";\nexport { IFileRow } from \"./IFileRow\";\nexport { IFilterItem } from \"./IFilterItem\";\nexport { IFolder } from \"./IFolder\";\nexport { IGenericPolygon } from \"./IGenericPolygon\";\nexport { IGeography } from \"./IGeography\";\nexport { IGeographyExploreData } from \"./IGeographyExploreData\";\nexport { IGeoIdentifier } from \"./IGeoIdentifier\";\nexport { IGoogleThematicTileListing } from \"./IGoogleThematicTileListing\";\nexport * from \"./IGPSData\";\nexport { IGraph } from \"./IGraph\";\nexport { IGraphNode } from \"./IGraphNode\";\nexport { IGridCell } from \"./IGridCell\";\nexport { IGridTree } from \"./IGridTree\";\nexport { IHeader } from \"./IHeader\";\nexport { IHealthcareRawDRGRow } from \"./IHealthcareRawDRGRow\";\nexport { IHealthcareRawPayerRow } from \"./IHealthcareRawPayerRow\";\nexport { IHealthcareRawVisitRow } from \"./IHealthcareRawVisitRow\";\nexport { IHealthcareThematicDRG } from \"./IHealthcareThematicDRG\";\nexport { IHealthcareThematicDRGInput } from \"./IHealthcareThematicDRGInput\";\nexport { IHealthcareThematicMDC } from \"./IHealthcareThematicMDC\";\nexport { IHealthcareThematicMDCInput } from \"./IHealthcareThematicMDCInput\";\nexport { IHealthcareThematicPayerRange } from \"./IHealthcareThematicPayerRange\";\nexport { IHealthcareThematicPayerSubtype } from \"./IHealthcareThematicPayerSubtype\";\nexport { IHealthcareThematicPayerSubtypeInput } from \"./IHealthcareThematicPayerSubtypeInput\";\nexport { IHealthcareThematicPayerSumSubtypeInput } from \"./IHealthcareThematicPayerSumSubtypeInput\";\nexport { IHealthcareThematicPayerType } from \"./IHealthcareThematicPayerType\";\nexport { IHealthcareThematicSpecialty } from \"./IHealthcareThematicSpecialty\";\nexport { IHealthcareThematicSpecialtyInput } from \"./IHealthcareThematicSpecialtyInput\";\nexport { IHelpMessages } from \"./IHelpMessages\";\nexport { IHiddenFieldReportItem } from \"./IHiddenFieldReportItem\";\nexport { IHospitalityCompetitiveSet } from \"./IHospitalityCompetitiveSet\";\nexport { IHospitalityPerfomance } from \"./IHospitalityPerfomance\";\nexport { IHospitalityType } from \"./IHospitalityType\";\nexport { IHospitaltiyTypeAggregates } from \"./IHospitaltiyTypeAggregates\";\nexport { IHotel } from \"./IHotel\";\nexport { IHotelGroup } from \"./IHotelGroup\";\nexport { IIconDetails } from \"./IIconDetails\";\nexport { IImpactAnalysisData } from \"./IImpactAnalysisData\";\nexport { IImpactedLocation } from \"./IImpactedLocation\";\nexport { IImpactEffect } from \"./IImpactEffect\";\nexport { IImportColumn } from \"./IImportColumn\";\nexport { IImportFileset } from \"./IImportFileset\";\nexport { IInfoWindowColumn } from \"./IInfoWindowColumn\";\nexport { IJavascriptErrorObject } from \"./IJavascriptErrorObject\";\nexport { IJob } from \"./IJob\";\nexport { IJobParam } from \"./IJobParam\";\nexport { IJobResult } from \"./IJobResult\";\nexport { ILatLon } from \"./ILatLon\";\nexport { ILayerGroup } from \"./ILayerGroup\";\nexport { ILayerGroupsAndTypes } from \"./ILayerGroupsAndTypes\";\nexport { ILayerTypeAndPoints } from \"./ILayerTypeAndPoints\";\nexport { ILegacyThematic } from \"./ILegacyThematic\";\nexport { ILegacyThematicHeaderCreatorInput } from \"./ILegacyThematicHeaderCreatorInput\";\nexport { ILegacyThematicPolygonDataLite } from \"./ILegacyThematicPolygonDataLite\";\nexport { ILine } from \"./ILine\";\nexport { ILocationFilters } from \"./ILocationFilters\";\nexport { ILocationForecastLight } from \"./ILocationForecastLight\";\nexport { ILoggingActionItem } from \"./ILoggingActionItem\";\nexport { ILoginMessage } from \"./ILoginMessage\";\nexport { ILogItem } from \"./ILogItem\";\nexport { IMachine } from \"./IMachine\";\nexport { IMapActions } from \"./IMapActions\";\nexport { IMapDataResult } from \"./IMapDataResult\";\nexport { IMapPoint } from \"./IMapPoint\";\nexport { IMapPolygon } from \"./IMapPolygon\";\nexport { IMapState } from \"./IMapState\";\nexport { IMapTileGoogle } from \"./IMapTileGoogle\";\nexport { IMapTypeAndItems } from \"./IMapTypeAndItems\";\nexport { IMarketingAd } from \"./IMarketingAd\";\nexport { IMarketingAdGroup } from \"./IMarketingAdGroup\";\nexport { IMarketingBreakout } from \"./IMarketingBreakout\";\nexport { IMarketingClick } from \"./IMarketingClick\";\nexport { IMarketingSlide } from \"./IMarketingSlide\";\nexport { IMarketPotentialData } from \"./IMarketPotentialData\";\nexport { IMessage } from \"./IMessage\";\nexport { IMessagePacket } from \"./IMessagePacket\";\nexport { IMetaData } from \"./IMetaData\";\nexport { IMetric } from \"./IMetric\";\nexport { IMetricCard } from \"./IMetricCard\";\nexport { IMetricJob } from \"./IMetricJob\";\nexport { IMigration } from \"./IMigration\";\nexport { IMigrationCanceled } from \"./IMigrationCanceled\";\nexport { IMigrationFinished } from \"./IMigrationFinished\";\nexport { IMigrationOutput } from \"./IMigrationOutput\";\nexport { IMigrationStarted } from \"./IMigrationStarted\";\nexport { IMilestone } from \"./IMilestone\";\nexport { IMilestoneStatusUpdate } from \"./IMilestoneStatusUpdate\";\nexport { IModule } from \"./IModule\";\nexport { IModuleMigration } from \"./IModuleMigration\";\nexport { IModuleParam } from \"./IModuleParam\";\nexport { IMosaicCoreCustomer } from \"./IMosaicCoreCustomer\";\nexport { IMosaicKeys } from \"./IMosaicKeys\";\nexport { IMosaicSegment } from \"./IMosaicSegment\";\nexport { IMultiPolygonLight } from \"./IMultiPolygonLight\";\nexport { IMultiAccountBasicCompany } from \"./IMultiAccountBasicCompany\";\nexport { IMyData } from \"./IMyData\";\nexport { IMyDataSubmitImport } from \"./IMyDataSubmitImport\";\nexport { IStoreUpdateAuditSubmit } from \"./IStoreUpdateAuditSubmit\";\nexport { IMyDataImportResult } from \"./IMyDataImportResult\";\nexport { IMyDataImportInformation } from \"./IMyDataImportInformation\";\nexport { IMyDataCloudFolder } from \"./IMyDataCloudFolder\";\nexport { IMyDataCloudFile } from \"./IMyDataCloudFile\";\nexport { IMyDataFilter } from \"./IMyDataFilter\";\nexport { IMyDataRGBA } from \"./IMyDataRGBA\";\nexport { IMyMarketData } from \"./IMyMarketData\";\nexport { INexusHubStatus } from \"./INexusHubStatus\";\nexport { INexusMachine } from \"./INexusMachine\";\nexport { INexusPacket } from \"./INexusPacket\";\nexport { INumberFieldReportItem } from \"./INumberFieldReportItem\";\nexport { IOpsDashboard } from \"./IOpsDashboard\";\nexport { IOtherInformation } from \"./IOtherInformation\";\nexport { IOutputMessage } from \"./IOutputMessage\";\nexport { IPersona } from \"./IPersona\";\nexport { IPlatformErrors } from \"./IPlatformErrors\";\nexport { IPOIAggregates } from \"./IPOIAggregates\";\nexport { IPOIData } from \"./IPOIData\";\nexport { IPoint } from \"./IPoint\";\nexport { IPointLayerBase } from \"./IPointLayerBase\";\nexport { IPointOfInterest } from \"./IPointOfInterest\";\nexport { IPolygon } from \"./IPolygon\";\nexport { IPolygonLight } from \"./IPolygonLight\";\nexport { IPolyline } from \"./IPolyline\";\nexport { IPreference } from \"./IPreference\";\nexport { IProfile } from \"./IProfile\";\nexport { IProfileData } from \"./IProfileData\";\nexport { IProfileStandards } from \"./IProfileStandards\";\nexport { IPushpin } from \"./IPushpin\";\nexport { IPushpinType } from \"./IPushpinType\";\nexport { IPushpinTypeAggregates } from \"./IPushpinTypeAggregates\";\nexport { IPushpinUsers } from \"./IPushpinUsers\";\nexport { IRegistryStatusType } from \"./IRegistryStatusType\";\nexport { IReleaseNotes } from \"./IReleaseNotes\";\nexport { IReport } from \"./IReport\";\nexport { IReportItem } from \"./IReportItem\";\nexport { IReportMapItem } from \"./IReportMapItem\";\nexport { IReportMigration } from \"./IReportMigration\";\nexport { IReportMigrationStatus } from \"./IReportMigrationStatus\";\nexport { IReportStringSet } from \"./IReportStringSet\";\nexport { IReportType } from \"./IReportType\";\nexport { IReportVisualizer } from \"./IReportVisualizer\";\nexport { IRing } from \"./IRing\";\nexport { IRingDemographicFilter } from \"./IRingDemographicFilter\";\nexport { IRoad } from \"./IRoad\";\nexport { IRole } from \"./IRole\";\nexport { IRootReducer } from \"./IRootReducer\";\nexport { IRowParseError } from \"./IRowParseError\";\nexport { IScoutAllocate } from \"./IScoutAllocate\";\nexport { IScoutAllocateDataset } from \"./IScoutAllocateDataset\";\nexport { IScoutAllocateGeography } from \"./IScoutAllocateGeography\";\nexport { IScoutAllocateGeographyGroup } from \"./IScoutAllocateGeographyGroup\";\nexport { IScoutAllocateReport } from \"./IScoutAllocateReport\";\nexport { IScoutAllocateVariable } from \"./IScoutAllocateVariable\";\nexport { IScoutAllocateVariableGroup } from \"./IScoutAllocateVariableGroup\";\nexport { IScoutAnalyticData } from \"./IScoutAnalyticData\";\nexport { ISegment, ISegmentDetails } from \"./ISegment\";\nexport { ISegmentThematicCountry } from \"./ISegmentThematicCountry\";\nexport { ISegmentThematicGroup } from \"./ISegmentThematicGroup\";\nexport { ISegmentThematicType } from \"./ISegmentThematicType\";\nexport { IServiceResult } from \"./IServiceResult\";\nexport { IShadedSettingsCreatorInput } from \"./IShadedSettingsCreatorInput\";\nexport { IShadedThematicSettings } from \"./IShadedThematicSettings\";\nexport { IShpReader } from \"./IShpReader\";\nexport { ISQSJobType } from \"./ISQSJobType\";\nexport { IStore } from \"./IStore\";\nexport { IStoreCustomer } from \"./IStoreCustomer\";\nexport { IStoreCustomerBase } from \"./IStoreCustomerBase\";\nexport { IStoreCustomerData } from \"./IStoreCustomerData\";\nexport { IStoreExploreData } from \"./IStoreExploreData\";\nexport { IStoreFilters } from \"./IStoreFilters\";\nexport { IStoreGeographyIdentifiers } from \"./IStoreGeographyIdentifiers\";\nexport { IStoreHours } from \"./IStoreHours\";\nexport { IStoreSales } from \"./IStoreSales\";\nexport { IStoreType } from \"./IStoreType\";\nexport { IStoreWorkflow } from \"./IStoreWorkflow\";\nexport { IStoreWorkflowComment } from \"./IStoreWorkflowComment\";\nexport { IStoreWorkflowGroup } from \"./IStoreWorkflowGroup\";\nexport { IStoreWorkflowInfo } from \"./IStoreWorkflowInfo\";\nexport { ISuperCell } from \"./ISuperCell\";\nexport { ITableauView } from \"./ITableauView\";\nexport { ITableau } from \"./ITableauView\";\nexport { ITargetMarketDeveloperType } from \"./ITargetMarketDeveloperType\";\nexport { ITargetMarketLocation } from \"./ITargetMarketLocation\";\nexport { ITargetMarketType } from \"./ITargetMarketDeveloperType\";\nexport { ITemplateType } from \"./ITemplateType\";\nexport { ITerritory } from \"./ITerritory\";\nexport { ITerritoryType } from \"./ITerritoryType\";\nexport { ITerritoryTypeAggregates } from \"./ITerritoryTypeAggregates\";\nexport { ITextFieldReportItem } from \"./ITextFieldReportItem\";\nexport { IThematicCategory } from \"./IThematicCategory\";\nexport { IThematicDataItem } from \"./IThematicDataItem\";\nexport { IThematicDatasetHeader } from \"./IThematicDatasetHeader\";\nexport { IThematicDatasetHeaderInput } from \"./IThematicDatasetHeaderInput\";\nexport { IThematicDataSettings } from \"./IThematicDataSettings\";\nexport { IThematicGroup } from \"./IThematicGroup\";\nexport { IThematicHeader } from \"./IThematicHeader\";\nexport { IThematicHeaderCreatorInput } from \"./IThematicHeaderCreatorInput\";\nexport { IThematicInstanceState } from \"./IThematicInstanceState\";\nexport { IThematicPolygon } from \"./IThematicPolygon\";\nexport { IThematicPolygonMultiField } from \"./IThematicPolygonMultiField\";\nexport { IThematicPolygonSingleField } from \"./IThematicPolygonSingleField\";\nexport { IThematicPolygonSOA } from \"./IThematicPolygonSOA\";\nexport { IThematicPolygonSOASingleField } from \"./IThematicPolygonSOASingleField\";\nexport { IThematicSession } from \"./IThematicSession\";\nexport { IThematicStatistics } from \"./IThematicStatistics\";\nexport { IThematicTileListing } from \"./IThematicTileListing\";\nexport { IThematicUserSettings } from \"./IThematicUserSettings\";\nexport { IThematicUserSettingsBackup } from \"./IThematicUserSettingsBackup\";\nexport { ITiers } from \"./ITiers\";\nexport { ITileServerStartupSettings } from \"./ITileServerStartupSettings\";\nexport { ITileServerState } from \"./ITileServerState\";\nexport { ITileServerSupportedData } from \"./ITileServerSupportedData\";\nexport { ITileServerSupportedDataItem } from \"./ITileServerSupportedDataItem\";\nexport { ITimelineItem } from \"./ITimelineItem\";\nexport { IToolsAnalyticData } from \"./IToolsAnalyticsData\";\nexport { ITreeReportItem } from \"./ITreeReportItem\";\nexport { ITrendLineVars } from \"./ITrendLineVars\";\nexport { ITwoByTwo } from \"./ITwoByTwo\";\nexport { IUser } from \"./IUser\";\nexport { IUserAction } from \"./IUserAction\";\nexport { IUserGroup } from \"./IUserGroup\";\nexport { IUserMetrics } from \"./IUserMetrics\";\nexport { IUserPreferences } from \"./IUserPreferences\";\nexport { IUtil } from \"./IUtil\";\nexport { IValidationResult } from \"./IValidationResult\";\nexport { IViewFilter } from \"./IViewFilter\";\nexport { IViewFilterMetaData } from \"./IViewFilterMetaData\";\nexport { IViewFilterSet } from \"./IViewFilterSet\";\nexport { IViewType } from \"./IViewType\";\nexport * from \"./IVennChart\";\nexport { IWKBReader } from \"./IWKBReader\";\nexport { IWordCloudItem } from \"./IWordCloudItem\";\nexport { ITerritoryTypePermission } from \"./ITerritoryTypePermission\";\nexport { IUserProfile } from \"./IUserProfile\";\nexport { IBuxtonSupportTeamMember } from \"./IBuxtonSupportTeamMember\";\nexport { ISalesPerformanceRecord } from \"./ISalesPerformanceRecord\";\nexport { ISalesPerformanceData } from \"./ISalesPerformanceData\";\nexport { IGCPBigQueryJob } from \"./IGCPBigQueryJob\";\nexport { IRGBColorObject } from \"./IColor\";\nexport * from \"./IRetailMatch\";\n","export * from \"./Button/Button\";\nexport * from \"./BuxTooltip/BuxTooltip\";\nexport * from \"./Charts\";\nexport * from \"./ChartStyles/ChartWrapper\";\nexport * from \"./DigitalShare/ContentSections/PsychProfSumm\";\nexport * from \"./GoogleMapsMarker/GoogleMapsMarker\";\nexport * from \"./Input/Fields\";\nexport * from \"./Loading/Loading\";\nexport * from \"./Map/ReportMap\";\nexport * from \"./MessageHandlers/MessageListener\";\nexport * from \"./PlaceholderCard\";\nexport * from \"./PolygonNameWithCircle\";\nexport * from \"./ProgressBar\";\nexport * from \"./ReportComponents/ReportBackLink\";\nexport * from \"./ReportComponents/ReportChartGroup\";\nexport * from \"./ReportComponents/ReportSharingMenu\";\nexport * from \"./ReportComponents/ReportStickyNav\";\nexport * from \"./ReportStyles/\";\nexport * from \"./Segments/SegCardStyles\";\nexport * from \"./SharedActions\";\nexport * from \"./Tables\";\nexport * from \"./Text\";\nexport * from \"./UserAvatar\";\nexport * from \"./Wrapper\";\n\n","//User\n\nexport const LOAD_USER = \"load-user\";\nexport const LOAD_USER_FAILURE = \"load-user-failure\";\nexport const SET_SHOW_ACTIVE_USERS = \"SET_SHOW_ACTIVE_USERS\";\n\n//Network Audit\nexport const LOAD_TWO_BY_TWO = \"load-twobytwo\";\nexport const LOAD_TWO_BY_TWO_SUCCESS = \"load-twobytwo-success\";\nexport const LOAD_TWO_BY_TWO_FAILURE = \"load-twobytwo-failure\";\nexport const EXPLORE_STORE = \"explore-store\";\nexport const EXPLORE_STORE_SUCCESS = \"explore-store-success\";\nexport const EXPLORE_STORE_FAILURE = \"explore-store-failure\";\n\n//Bookmarks\nexport const LOAD_BOOKMARKS_SUCCESS = \"load-bookmarks-success\";\nexport const LOAD_BOOKMARKS_FAILURE = \"load-bookmarks-failure\";\nexport const SET_ACTIVE_BOOKMARK = \"set-active-bookmark\";\nexport const DELETE_BOOKMARK = \"delete-bookmark\";\nexport const DELETE_BOOKMARK_SUCCESS = \"delete-bookmark-success\";\nexport const DELETE_BOOKMARK_FAILURE = \"delete-bookmark-failure\";\nexport const SET_LOADING_BOOKMARKS = \"set-loading-bookmarks\";\nexport const SET_FOUND_BOOKMARKS = \"set-found-bookmarks\";\nexport const SET_SHOW_BOOKMARK_MODAL = \"set-show-bookmark-modal\";\nexport const SET_DEFAULT_BOOKMARK_SUCCESS = \"set-default-bookmark-success\";\nexport const SET_DEFAULT_BOOKMARK_FAILURE = \"set-default-bookmark-failure\";\n\n//Sessions\nexport const GET_LAST_SESSION = \"get-last-session\";\nexport const SET_LOADING_LAST_SESSION = \"set-loading-last-session\";\nexport const SET_FOUND_LAST_SESSION = \"set-found-last-session\";\nexport const SET_SESSION = \"set-session\";\nexport const LOAD_LAST_SESSION = \"load-last-session\";\n\n//Load SCOUT\nexport const LOAD_SCOUT = \"load-scout\";\nexport const SET_SCOUT_IS_SHOWING = \"set-scout-is-showing\";\nexport const SET_ACTIVE_APP = \"set-active-app\";\nexport const SET_SHOW_SPLASH_SCREEN = \"set-show-splash-screen\";\n\n//My Data\nexport const MY_DATA_LOADED = \"mydata-loaded\";\n\nexport const MY_DATA_SET_BREADCRUMBS = \"mydata-set-breadcrumbs\";\n\nexport const RESET_MY_DATA_TYPES = \"reset-mydata-types\";\nexport const LOAD_MY_DATA_TYPES_SUCCESS = \"load-mydata-types-success\";\nexport const LOAD_MY_DATA_FAILURE = \"load-mydata-failure\";\nexport const LOAD_MY_DATA_DATA_SUCCESS = \"load-mydata-data-success\";\nexport const SET_MY_DATA_LOADING = \"set-mydata-loading\";\nexport const LOAD_MY_DATA_OTHER_SUCCESS = \"load-mydata-other-success\";\n\nexport const MY_DATA_LOAD_PUSHPIN_TYPES_SUCCESS\n = \"mydata-load-pushpin-types-success\";\nexport const MY_DATA_LOAD_PUSHPIN_TYPES_FAILURE\n = \"mydata-load-pushpin-types-failure\";\nexport const MY_DATA_LOAD_STORE_TYPES_SUCCESS\n = \"mydata-load-store-types-success\";\nexport const MY_DATA_LOAD_STORE_TYPES_FAILURE\n = \"mydata-load-store-types-failure\";\nexport const MY_DATA_LOAD_TERRITORY_TYPES_SUCCESS\n = \"mydata-load-territory-types-success\";\nexport const MY_DATA_LOAD_TERRITORY_TYPES_FAILURE\n = \"mydata-load-territory-types-failure\";\n/******aoi/results types******/\nexport const MY_DATA_LOAD_RESULTS_POINTS_TYPES_SUCCESS\n = \"mydata-load-results-points-types-success\";\nexport const MY_DATA_LOAD_RESULTS_POINTS_TYPES_FAILURE\n = \"mydata-load-results-points-types-failure\";\nexport const MY_DATA_LOAD_RESULTS_SHAPES_TYPES_SUCCESS\n = \"mydata-load-results-shapes-types-success\";\nexport const MY_DATA_LOAD_RESULTS_SHAPES_TYPES_FAILURE\n = \"mydata-load-results-shapes-types-failure\";\nexport const MY_DATA_LOAD_AOI_POINTS_TYPES_SUCCESS\n = \"mydata-load-aoi-points-types-success\";\nexport const MY_DATA_LOAD_AOI_POINTS_TYPES_FAILURE\n = \"mydata-load-aoi-points-types-failure\";\nexport const MY_DATA_LOAD_AOI_SHAPES_TYPES_SUCCESS\n = \"mydata-load-aoi-shapes-types-success\";\nexport const MY_DATA_LOAD_AOI_SHAPES_TYPES_FAILURE\n = \"mydata-load-aoi-shapes-types-failure\";\nexport const MY_DATA_LOAD_TARGET_MARKET_LOCATIONS_SUCCESS\n = \"mydata-load-target-market-locations-success\";\nexport const MY_DATA_LOAD_TARGET_MARKET_LOCATIONS_FAILURE\n = \"mydata-load-target-market-locations-failure\";\n\nexport const MY_DATA_LOAD_STORE_FILE_AUDIT_SUCCESS\n = \"MY_DATA_LOAD_STORE_FILE_AUDIT_SUCCESS\";\nexport const MY_DATA_LOAD_STORE_FILE_AUDIT_FAIL\n = \"MY_DATA_LOAD_STORE_FILE_AUDIT_FAIL\";\n\nexport const MY_DATA_LOAD_STORE_SET_BAD_GEOCODES\n = \"MY_DATA_LOAD_STORE_SET_BAD_GEOCODES\";\n\n/******columns******/\nexport const UPDATE_MY_DATA_COLUMNS = \"update-mydata-columns\";\nexport const MY_DATA_TYPES_CHANGED = \"mydata-types-changed\";\n/******collaborate******/\nexport const UPDATE_MY_DATA_TERRITORY_COLLABORATE\n = \"update-mydata-territory-collaborate\";\nexport const UPDATE_MY_DATA_PUSHPIN_COLLABORATE\n = \"update-mydata-pushpin-collaborate\";\n/******filters******/\nexport const UPDATE_MY_DATA_FILTERS = \"update-mydata-filters\";\nexport const MY_DATA_REMOVE_FILTER = \"mydata-remove-filter\";\nexport const MY_DATA_REMOVE_ALL_FILTERS = \"mydata-remove-all-filters\";\n/******sider active type******/\nexport const MY_DATA_SET_ACTIVE_TYPE = \"mydata-set-active-type\";\n\nexport const MY_DATA_SET_CURRENT_PAGE = \"mydata-set-current-page\";\nexport const MY_DATA_SET_PAGE_SIZE = \"mydata-set-page-size\";\n/******sort******/\nexport const UPDATE_SORT_DIRECTION = \"update-sort-direction\";\nexport const RESET_SORT_DIRECTION = \"reset-sort-direction\";\n/******set cloud folder******/\nexport const MY_DATA_SET_CURRENT_CLOUD_FOLDER\n = \"mydata-set-current-cloud-folder\";\nexport const MY_DATA_BUILD_CURRENT_CLOUD_TYPE_DICT\n = \"mydata-build-current-cloud-type-dict\";\n/******delete cloud folder******/\nexport const MY_DATA_RESET_DELETE_CLOUD_FOLDER_MESSAGE\n = \"mydata-reset-delete-cloud-folder-message\";\nexport const MY_DATA_DELETE_CLOUD_FOLDER_LOADING\n = \"mydata-delete-cloud-folder-loading\";\nexport const MY_DATA_DELETE_CLOUD_FOLDER_SUCCESS\n = \"mydata-delete-cloud-folder-success\";\nexport const MY_DATA_DELETE_CLOUD_FOLDER_FAILURE\n = \"mydata-delete-cloud-folder-failure\";\n/******load aoi/results types******/\nexport const LOAD_MY_DATA_CLOUD_TYPES_SUCCESS\n = \"load-mydata-cloud-types-success\";\nexport const LOAD_MY_DATA_CLOUD_TYPES_FAILURE\n = \"load-mydata-cloud-types-failure\";\nexport const LOAD_FROM_SCOUT_MY_DATA_AOI_POINT_TYPES_SUCCESS\n = \"load-from-scout-mydata-aoi-point-types-success\";\nexport const LOAD_FROM_SCOUT_MY_DATA_AOI_SHAPE_TYPES_SUCCESS\n = \"load-from-scout-mydata-aoi-shape-types-success\";\nexport const LOAD_FROM_SCOUT_MY_DATA_RESULT_POINT_TYPES_SUCCESS\n = \"load-from-scout-mydata-result-point-types-success\";\nexport const LOAD_FROM_SCOUT_MY_DATA_RESULT_SHAPE_TYPES_SUCCESS\n = \"load-from-scout-mydata-result-shape-types-success\";\n/******add cloud folder******/\nexport const MY_DATA_RESET_ADD_CLOUD_FOLDER_MESSAGE\n = \"mydata-reset-add-cloud-folder-message\";\nexport const MY_DATA_ADD_CLOUD_FOLDER_LOADING\n = \"mydata-add-cloud-folder-loading\";\nexport const MY_DATA_ADD_CLOUD_FOLDER_SUCCESS\n = \"mydata-add-cloud-folder-success\";\nexport const MY_DATA_ADD_CLOUD_FOLDER_FAILURE\n = \"mydata-add-cloud-folder-failure\";\n/******update cloud file******/\nexport const MY_DATA_RESET_UPDATE_CLOUD_FILE_MESSAGE\n = \"mydata-reset-update-cloud-file-message\";\nexport const MY_DATA_UPDATE_CLOUD_FILE_LOADING\n = \"mydata-update-cloud-file-loading\";\nexport const MY_DATA_UPDATE_CLOUD_FILE_SUCCESS\n = \"mydata-update-cloud-file-success\";\nexport const MY_DATA_UPDATE_CLOUD_FILE_FAILURE\n = \"mydata-update-cloud-file-failure\";\n/******delete cloud file******/\nexport const MY_DATA_RESET_DELETE_CLOUD_FILE_MESSAGE\n = \"mydata-reset-delete-cloud-file-message\";\nexport const MY_DATA_DELETE_CLOUD_FILE_LOADING\n = \"mydata-delete-cloud-file-loading\";\nexport const MY_DATA_AOI_POINTS_DELETE_CLOUD_FILE_SUCCESS\n = \"mydata-aoi-points-delete-cloud-file-success\";\nexport const MY_DATA_AOI_SHAPES_DELETE_CLOUD_FILE_SUCCESS\n = \"mydata-aoi-shapes-delete-cloud-file-success\";\nexport const MY_DATA_RESULTS_POINTS_DELETE_CLOUD_FILE_SUCCESS\n = \"mydata-results-points-delete-cloud-file-success\";\nexport const MY_DATA_RESULTS_SHAPES_DELETE_CLOUD_FILE_SUCCESS\n = \"mydata-results-shapes-delete-cloud-file-success\";\nexport const MY_DATA_DELETE_CLOUD_FILE_FAILURE\n = \"mydata-delete-cloud-file-failure\";\n\n// User Preferences\nexport const GET_USER_PREFERENCES_SUCCESS = \"get-user-preferences-success\";\nexport const GET_USER_PREFERENCES_SUCCESS_SCOUT = \"GET_USER_PREFERENCES_SUCCESS_SCOUT\";\nexport const GET_USER_PREFERENCES_FAILURE = \"get-user-preferences-failure\";\nexport const UPDATE_USER_PREFERENCES_SUCCESS\n = \"update-user-preferences-success\";\nexport const UPDATE_USER_PREFERENCES_FAILURE\n = \"update-user-preferences-failure\";\nexport const GET_ALL_COMMUNITY_SITES_SUCCESS\n = \"get-all-community-sites-success\";\nexport const GET_ALL_COMMUNITY_SITES_FAILURE\n = \"get-all-community-sites-failure\";\n\n// User Management\nexport const GET_USER_FRANCHISEE_STORE_INFORMATION_SUCCESS\n = \"get-user-franchisee-store-information-success\";\nexport const GET_USER_FRANCHISEE_STORE_INFORMATION_FAILURE\n = \"get-user-franchisee-store-information-failure\";\nexport const GET_USER_FRANCHISEE_TERRITORY_INFORMATION_SUCCESS\n = \"get-user-franchisee-territory-information-success\";\nexport const GET_USER_FRANCHISEE_TERRITORY_INFORMATION_FAILURE\n = \"get-user-franchisee-territory-information-failure\";\nexport const REMOVE_STORE_FROM_FRANCHISEE_USER_SUCCESS\n = \"remove-store-from-franchisee-user-success\";\nexport const REMOVE_STORE_FROM_FRANCHISEE_USER_FAILURE\n = \"remove-store-from-franchisee-user-failure\";\nexport const REMOVE_TERRITORY_FROM_FRANCHISEE_USER_SUCCESS\n = \"remove-territory-from-franchisee-user-success\";\nexport const REMOVE_TERRITORY_FROM_FRANCHISEE_USER_FAILURE\n = \"remove-territory-from-franchisee-user-failure\";\nexport const USER_UPDATE_ACTIVE_STATUS_SUCCESS\n = \"user-update-active-status-success\";\nexport const USER_UPDATE_ACTIVE_STATUS_FAILURE\n = \"user-update-active-status-failure\";\nexport const UPDATE_TERRITORY_TYPE_ADMIN_ONLY_SUCCESS\n = \"update-territory-type-admin-only-success\";\nexport const UPDATE_TERRITORY_TYPE_ADMIN_ONLY_FAILURE\n = \"update-territory-type-admin-only-failure\";\nexport const GET_TERRITORY_TYPE_PERMISSIONS_SUCCESS\n = \"get-territory-type-user-permissions-success\";\nexport const GET_TERRITORY_TYPE_PERMISSIONS_FAILURE\n = \"get-territory-type-user-permissions-failure\";\nexport const UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_SUCCESS\n = \"update-territory-type-user-permissions-success\";\nexport const UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FAILURE\n = \"update-territory-type-user-permissions-failure\";\nexport const UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FOR_ALL_SUCCESS\n = \"update-territory-type-user-permissions-for-all-success\";\nexport const UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FOR_ALL_FAILURE\n = \"update-territory-type-user-permissions-for-all-failure\";\nexport const GET_TERRITORY_TYPES_SUCCESS = \"get-territory-types-success\";\nexport const GET_TERRITORY_TYPES_FAILURE = \"get-territory-types-failure\";\nexport const LAUNCH_USER_MANAGEMENT_FROM_SCOUT\n = \"launch-user-management-from-scout\";\nexport const LAUNCH_TERRITORY_MANAGEMENT_FROM_SCOUT\n = \"launch-territory-management-from-scout\";\n\n// User Profile\nexport const UPDATE_SAVE_PROFILE_LOADING = \"update-save-profile-loading\";\nexport const UPDATE_USER_PROFILE_SUCCESS = \"update-user-profile-success\";\nexport const UPDATE_USER_PROFILE_FAILURE = \"update-user-profile-failure\";\nexport const UPDATE_SHARE_IMAGE_SUCCESS = \"UPDATE_SHARE_IMAGE_SUCCESS\";\nexport const UPDATE_SHARE_IMAGE_FAILURE = \"UPDATE_SHARE_IMAGE_FAILURE\";\nexport const UPDATE_USER_SHARE_SETTINGS_SUCCESS\n = \"update-user-share-settings-success\";\nexport const GET_USER_SHARE_SETTINGS_SUCCESS\n = \"get-user-share-settings-success\";\nexport const GET_USER_SHARE_SETTINGS_FAILURE\n = \"get-user-share-settings-failure\";\nexport const RESET_PASSWORD_SUCCESS = \"reset-password-success\";\nexport const RESET_PASSWORD_FAILURE = \"reset-password-failure\";\nexport const UPDATE_USER_AVATAR_SUCCESS = \"update-user-avatar-success\";\nexport const UPDATE_USER_AVATAR_FAILURE = \"update-user-avatar-failure\";\nexport const DELETE_USER_AVATAR_SUCCESS = \"delete-user-avatar-success\";\nexport const DELETE_USER_AVATAR_FAILURE = \"delete-user-avatar-failure\";\nexport const DELETE_SHARE_IMAGE_SUCCESS = \"DELETE_SHARE_IMAGE_SUCCESS\";\nexport const DELETE_SHARE_IMAGE_FAILURE = \"DELETE_SHARE_IMAGE_FAILURE\";\nexport const USER_PROFILE_SET_MFA_FACTORS = \"user-profile-set-mfa-factors\";\nexport const USER_PROFILE_SET_SELECTED_MFA_FACTOR_ID\n = \"user-profile-set-selected-mfa-factor-id\";\nexport const USER_PROFILE_SET_WAITING_FOR_MFA_RESPONSE\n = \"user-profile-set-waiting-for-mfa-response\";\nexport const USER_PROFILE_SET_MFA_RESULT = \"user-profile-set-mfa-result\";\nexport const USER_PROFILE_SET_SHOW_MFA_ENROLLMENT_MODAL\n = \"user-profile-set-show-mfa-enrollment-modal\";\nexport const USER_PROFILE_SET_MFA_ENROLLMENT_MODAL_TEXT\n = \"user-profile-set-mfa-enrollment-modal-text\";\nexport const USER_PROFILE_SET_MFA_ENROLLMENT_UPDATED_THIS_SESSION\n = \"user-profile-set-mfa-enrollment-updated-this-session\";\n\n// Account Team\nexport const GET_COMPANY_SUPPORT_TEAM_SUCCESS\n = \"get-company-support-team-success\";\nexport const GET_COMPANY_SUPPORT_TEAM_FAILURE\n = \"get-company-support-team-failure\";\n\n// Timeout Management\nexport const UPDATE_SESSION_TIMEOUT_LENGTH_SUCCESS\n = \"update-session-timeout-length-success\";\nexport const UPDATE_SESSION_TIMEOUT_LENGTH_FAILURE\n = \"update-session-timeout-length-failure\";\n\n//Reports\nexport const SET_REPORTS = \"set-reports\";\nexport const SET_LOADING_REPORTS = \"set-loading-reports\";\nexport const SET_FOUND_REPORTS = \"set-found-reports\";\nexport const SET_REPORTS_COLLABORATING = \"set-reports-collaborating\";\nexport const SET_SELECTED_REPORT_ID = \"set-selected-report-id\";\nexport const SET_SHOW_RECENT_REPORTS_MODAL = \"set-show-recent-reports-modal\";\nexport const DOWNLOAD_REPORT_FILE = \"download-report-file\";\nexport const SET_REPORT_FILE = \"set-report-file\";\nexport const SET_SELECTED_REPORT_FILES = \"set-selected-report-files\";\nexport const SET_SELECTED_REPORT_FILE = \"set-selected-report-file\";\nexport const SET_SHOW_REPORT_FILE_MODAL = \"set-show-report-file-modal\";\nexport const DELETE_REPORT = \"delete-report\";\nexport const DELETE_REPORT_SUCCESS = \"delete-report-success\";\nexport const SET_REPORTS_DATES = \"set-reports-dates\";\nexport const REPORT_FINISHED = \"report-finished\";\nexport const RESET_REPORT_COUNTER = \"reset-report-counter\";\nexport const SET_INSIGHTS_COLLABORATING = \"SET_INSIGHTS_COLLABORATING\";\nexport const PROCESS_JOBS_SUCCESS = \"PROCESS_JOBS_SUCCESS\";\nexport const GET_CONFIG_REPORTS_SUCCESS = \"GET_CONFIG_REPORTS_SUCCESS\";\nexport const SET_LOADING_CONFIG_REPORTS = \"SET_LOADING_CONFIG_REPORTS\";\nexport const SET_CR_MODAL_VISIBILITY = \"SET_SHOW_CR_MODAL_VISIBILITY\";\nexport const SET_CR_SELECTED_ITEMS = \"SET_CR_SELECTED_ITEMS\";\nexport const DELETE_CONFIG_REPORT_SUCCESS = \"DELETE_CONFIG_REPORT_SUCCESS\";\nexport const ADD_RUNNING_CONFIG_REPORT_TO_LIST = \"ADD_RUNNING_CONFIG_REPORT_TO_LIST\";\n\n// Sales Performance\nexport const SALES_PERFORMANCE_SET_DATA = \"sales-performance-set-data\";\nexport const SALES_PERFORMANCE_SET_LOADING = \"sales-performance-set-loading\";\n\n// GPS Insights\nexport const SET_GPS_INSIGHT_RESULTS = \"set-gps-insight-results\";\nexport const UPDATE_GPS_INSIGHT_JOB = \"update-gps-insight-job\";\nexport const RESET_GPS_INSIGHT_RESULTS = \"reset-gps-insight-results\";\n\nexport const SET_LOADING_BRAND = \"SET_LOADING_BRAND\";\nexport const GET_BRAND_SUCCESS = \"GET_BRAND_SUCCESS\";\n\nexport const SET_LOADING_JOBS = \"SET_LOADING_JOBS\";\nexport const GET_JOBS_SUCCESS = \"GET_JOBS_SUCCESS\";\n\nexport const SET_LOADING_SINGLE_JOB = \"SET_LOADING_SINGLE_JOB\";\nexport const GET_SINGLE_JOB_SUCCESS = \"GET_SINGLE_JOB_SUCCESS\";\n\nexport const SET_LOADING_GPS_MOBILE_INSIGHTS_REPORT\n = \"SET_LOADING_GPS_MOBILE_INSIGHTS_REPORT\";\n\nexport const ADD_RUNNING_INSIGHT_TO_LIST = \"ADD_RUNNING_INSIGHT_TO_LIST\";\nexport const ADD_FINISHED_INSIGHT_TO_LIST = \"ADD_FINISHED_INSIGHT_TO_LIST\";\nexport const REMOVE_FINISHED_INSIGHT_FROM_RUNNING_INSIGHTS\n = \"REMOVE_FINISHED_INSIGHTS_FROM_RUNNING_INSIGHT\";\nexport const CLEAR_RUNNING_AND_FINISHED_INSIGHTS_LISTS\n = \"CLEAR_RUNNING_AND_FINISHED_INSIGHTS_LISTS\";\nexport const CLEAR_FINISHED_INSIGHTS_LISTS = \"CLEAR_FINISHED_INSIGHTS_LISTS\";\nexport const SELECT_GPS_INSIGHT_FOR_REPORT_VIEW\n = \"SELECT_GPS_INSIGHT_FOR_REPORT_VIEW\";\nexport const SET_CURRENT_GPS_INSIGHT_VIEW = \"SET_CURRENT_GPS_INSIGHT_VIEW\";\nexport const SET_GPS_INSIGHT_MODAL_VISIBLE = \"SET_GPS_INSIGHT_MODAL_VISIBLE\";\nexport const START_GPS_MOBILE_INSIGHTS_REPORT\n = \"START_GPS_MOBILE_INSIGHTS_REPORT\";\n\nexport const SET_LOADING_SAVE_TO_SCOUT = \"SET_LOADING_SAVE_TO_SCOUT\";\nexport const SET_POLYGON_CENTROID = \"SET_POLYGON_CENTROID\";\n\nexport const SAVE_TO_SCOUT_SUCCESS = \"SAVE_TO_SCOUT_SUCCESS\";\n\nexport const SET_MOBILYTICS_SCENARIOS = \"SET_MOBILYTICS_SCENARIOS\";\n\nexport const SET_FVP_MARKERS = \"SET_FVP_MARKERS\";\nexport const SET_SELECTED_FVP = \"SET_SELECTED_FVP\";\n\n// Retail Match\nexport const GET_RETAIL_MATCH_RESULTS_SUCCESS\n = \"GET_RETAIL_MATCH_RESULTS_SUCCESS\";\nexport const GET_RETAIL_MATCH_RESULTS_FAILURE\n = \"GET_RETAIL_MATCH_RESULTS_FAILURE\";\nexport const SET_RETAIL_MATCH_BENCHMARK_RECORD\n = \"SET_RETAIL_MATCH_BENCHMARK_RECORD\";\nexport const SET_LOADING_RETAIL_MATCH_GEOGRAPHIES\n = \"SET_LOADING_RETAIL_MATCH_GEOGRAPHIES\";\nexport const GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS\n = \"GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS\";\nexport const GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE\n = \"GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE\";\nexport const GET_RETAIL_MATCH_BRAND_SUCCESS = \"GET_RETAIL_MATCH_BRAND_SUCCESS\";\nexport const GET_RETAIL_MATCH_BRAND_FAILURE = \"GET_RETAIL_MATCH_BRAND_FAILURE\";\nexport const GET_RETAIL_MATCH_BRANDS_SUCCESS\n = \"GET_RETAIL_MATCH_BRANDS_SUCCESS\";\nexport const GET_RETAIL_MATCH_BRANDS_FAILURE\n = \"GET_RETAIL_MATCH_BRANDS_FAILURE\";\nexport const SET_LOADING_BRANDS = \"SET_LOADING_BRANDS\";\nexport const GET_RETAIL_MATCH_CATEGORIES_SUCCESS\n = \"GET_RETAIL_MATCH_CATEGORIES_SUCCESS\";\nexport const GET_RETAIL_MATCH_CATEGORIES_FAILURE\n = \"GET_RETAIL_MATCH_CATEGORIES_FAILURE\";\nexport const SET_LOADING_CATEGORIES = \"SET_LOADING_CATEGORIES\";\nexport const SET_RETAIL_MATCH_REPORT_MODAL_VISIBLE\n = \"SET_RETAIL_MATCH_REPORT_MODAL_VISIBLE\";\nexport const START_RETAIL_MATCH_REPORT = \"START_RETAIL_MATCH_REPORT\";\nexport const SET_LOADING_RETAIL_MATCH_REPORT\n = \"SET_LOADING_RETAIL_MATCH_REPORT\";\nexport const SUBMIT_RETAIL_MATCH_REPORT_SUCCESS\n = \"SUBMIT_RETAIL_MATCH_REPORT_SUCCESS\";\nexport const SUBMIT_RETAIL_MATCH_REPORT_FAILURE\n = \"SUBMIT_RETAIL_MATCH_REPORT_FAILURE\";\nexport const UPDATE_RETAIL_MATCH_JOB_SUCCESS\n = \"UPDATE_RETAIL_MATCH_JOB_SUCCESS\";\nexport const UPDATE_RETAIL_MATCH_JOB_FAILURE\n = \"UPDATE_RETAIL_MATCH_JOB_FAILURE\";\nexport const ADD_RETAIL_MATCH_IMAGE_SUCCESS = \"ADD_RETAIL_MATCH_IMAGE_SUCCESS\";\nexport const ADD_RETAIL_MATCH_IMAGE_FAILURE = \"ADD_RETAIL_MATCH_IMAGE_FAILURE\";\nexport const UPDATE_BRAND_LOGO_SUCCESS = \"UPDATE_BRAND_LOGO_SUCCESS\";\nexport const SET_LOADING_UPDATE_RETAIL_MATCH_JOB\n = \"SET_LOADING_UPDATE_RETAIL_MATCH_JOB\";\nexport const CLEAR_RETAIL_MATCH_RESULTS = \"CLEAR_RETAIL_MATCH_RESULTS\";\nexport const SET_LOADING_BRANDS_SAMPLE_SET_DATA\n = \"SET_LOADING_BRANDS_SAMPLE_SET_DATA\";\nexport const GET_BRANDS_SAMPLE_SET_DATA_SUCCESS\n = \"GET_BRANDS_SAMPLE_SET_DATA_SUCCESS\";\nexport const SET_SELECTED_BRAND = \"SET_SELECTED_BRAND\";\nexport const SET_RETAIL_MATCH_OVERVIEW_MAP_MARKERS\n = \"SET_RETAIL_MATCH_OVERVIEW_MAP_MARKERS\";\nexport const SET_RETAIL_MATCH_MODAL_MARKER_CLUSTERER\n = \"SET_RETAIL_MATCH_MODAL_MARKER_CLUSTERER\";\nexport const UPDATE_RETAIL_MATCH_SITE_DETAILS_SUCCESS = \"UPDATE_RETAIL_MATCH_SITE_DETAILS_SUCCESS\";\n\nexport const GET_MOSAIC_SEGMENTS_SUCCESS = \"GET_MOSAIC_SEGMENTS_SUCCESS\";\nexport const SET_LOADING_MOSAIC_SEGMENTS = \"SET_LOADING_MOSAIC_SEGMENTS\";\n\n//map\nexport const CREATE_NEW_GOOGLE_MAP = \"CREATE_NEW_GOOGLE_MAP\";\nexport const CREATE_NEW_RETAIL_MATCH_OVERVIEW_MAP\n = \"CREATE_NEW_RETAIL_MATCH_OVERVIEW_MAP\";\nexport const CREATE_NEW_RETAIL_MATCH_MODAL_MAP\n = \"CREATE_NEW_RETAIL_MATCH_MODAL_MAP\";\nexport const CLEAR_CURRENT_GOOGLE_MAP_REF = \"CLEAR_CURRENT_GOOGLE_MAP_REF\";\nexport const SET_MAP_CENTER = \"SET_MAP_CENTER\";\nexport const SET_PENDING_MAP_CENTER_EVENT = \"SET_PENDING_MAP_CENTER_EVENT\";\nexport const SET_MAP_ZOOM = \"SET_MAP_ZOOM\";\nexport const SET_MAP_MARKERS = \"SET_MAP_MARKERS\";\nexport const SET_MAP_STYLES = \"SET_MAP_STYLES\";\nexport const SET_MAP_STYLE_OPTIONS = \"SET_MAP_STYLE_OPTIONS\";\nexport const SET_MAP_ANCHOR_WINDOW = \"SET_MAP_ANCHOR_WINDOW\";\nexport const GET_STORE_TRADE_AREA_BLOCK_GROUP_POLYGONS\n = \"GET_STORE_TRADE_AREA_BLOCK_GROUP_POLYGONS\";\nexport const SET_MAP_LOADING = \"SET_MAP_LOADING\";\nexport const SET_MAP_IS_READY = \"SET_MAP_IS_READY\";\nexport const CLEAR_GOOGLE_MAP = \"CLEAR_GOOGLE_MAP\";\nexport const SET_MAP_HEIGHT = \"SET_MAP_HEIGHT\";\n\n//leftnav\nexport const SHOW_LEFT_NAV = \"SHOW_LEFT_NAV\";\nexport const HIDE_LEFT_NAV = \"HIDE_LEFT_NAV\";\nexport const TOGGLE_LEFT_NAV = \"TOGGLE_LEFT_NAV\";\nexport const UPDATE_MOBILYTICS_VISITORS_GROUPS\n = \"UPDATE_MOBILYTICS_VISITORS_GROUPS\";\nexport const TOGGLE_MAP_LAYER_MOBILYTICS_VISITORS_ACTUALS\n = \"TOGGLE_MAP_LAYER_MOBILYTICS_VISITORS_ACTUALS\";\nexport const SET_LOADING_PLACES = \"SET_LOADING_PLACES\";\n\n//Toolbox\n\nexport const SHOW_MAP_SETTINGS_MODAL = \"SHOW_MAP_SETTINGS_MODAL\";\n\n//Digital Share\nexport const SET_DIGITAL_SHARE_DIALOG_TRAINING_STATE\n = \"SET_DIGITAL_SHARE_DIALOG_TRAINING_STATE\";\nexport const OPEN_DIGITAL_SHARE_DIALOGUE_FROM_WRAPPER\n = \"OPEN_DIGITAL_SHARE_DIALOGUE_FROM_WRAPPER\";\n\n// Factor\nexport const START_FACTOR_REPORT = \"START_FACTOR_REPORT\";\nexport const SET_FACTOR_SCENARIOS = \"SET_FACTOR_SCENARIOS\";\nexport const SET_FACTOR_VISIBLE = \"SET_FACTOR_VISIBLE\";\nexport const SET_FACTOR_LOADING_SCENARIOS = \"SET_FACTOR_LOADING_SCENARIOS\";\n\n// PDF Print\nexport const GET_PDF_LAMBDA = 'GET_PDF_LAMBDA';\n\n// Notification Workflow\nexport const SET_NOTIFICATION_WORKFLOW_URL = \"SET_NOTIFICATION_WORKFLOW_URL\";\n\n","export enum App {\n Scout,\n Match,\n Mobilytics,\n Healthcare,\n Brandalicious,\n MyReports, // List of Reports\n Reports, // A Report\n Explore,\n Factor,\n BuxtonUniversity,\n UserSettings,\n MobilyticsPro,\n Iq,\n Alert,\n Analyze,\n Persona,\n}\n","export { CompanyType } from \"./CompanyType\";\nexport { UserLoginStatus } from \"./UserLoginStatus\";\nexport { TerritoryTypePermission } from \"./TerritoryTypePermission\";\nexport * from \"./UserSettingsEnums\";\nexport { CommunityMatchActivityColumn } from \"./CommunityMatchActivityColumn\";\nexport { CommunityMatchContactColumn } from \"./CommunityMatchContactColumn\";\nexport { ActiveApp } from \"./ActiveApp\";\nexport { OktaGroups } from \"./Okta\";\nexport { GPSInsightsContainerView } from \"./GPSInsights\";\nexport { HomeWorkIdentifier, LayerTypeEnum, MapStyleEnum } from \"./GPSMapEnum\";\nexport { DropdownComparisonWeight } from \"./ChartsEnum\";\nexport { RenderType } from \"./RenderType\";\nexport { DigitalShareAppType } from \"./DigitalShareAppType\";\nexport { DigitalShareItemType } from \"./DigitalShareItemType\";\n","export enum DigitalShareAppType {\n Mobilytics = \"Mobilytics\",\n RetailMatch = \"Retail Match\",\n}\n\nexport enum DigitalShareAppImage {\n Mobilytics = \"/Images/Digital Share/BuxtonMobilytics.svg\",\n RetailMatch = \"/Images/Digital Share/BuxtonMatch.svg\",\n}\n","export enum RenderType {\n DEFAULT,\n DIGITAL_SHARE,\n PRINT,\n}\n","export * from \"./breakpoints\";\nexport * from \"./colors/scoutColors\";\n","import { IBrandCountsByGeo } from \"./IBrandCountsByGeo\";\n\nexport interface IBrand {\n brandId: string;\n brandName: string;\n naicsCode: string;\n logoPath: string;\n minSqft: number;\n maxSqft: number;\n countsByBUDS: IBrandCountsByGeo[];\n countsByCountry: IBrandCountsByGeo[];\n countsByCounty: IBrandCountsByGeo[];\n countsByDMA: IBrandCountsByGeo[];\n countsByRegion: IBrandCountsByGeo[];\n countsByState: IBrandCountsByGeo[];\n /** This is used as a sum of the count array depending on the selected geography choice.\n * Meaning - if they chose States (when creating the report, then it will be a sum of the values\n * in the countsByState array).\n */\n totalCountByGeography: number;\n isShoppingCenter: boolean;\n}\n","export enum DigitalShareItemType {\n //Common\n Children = \"Children\",\n Marriage = \"Marriage\",\n NumberOfPersons = \"# of Persons in Household\",\n HeadOfHouseholdAge = \"Head of Household Age\",\n RaceAndEthnicity = \"Race and Ethnicity\",\n HouseholdIncome = \"Household Income\",\n HouseholdEducationLevel = \"Household Education Level\",\n DwellingType = \"Dwelling Type\",\n HomeOwnership = \"Home Ownership\",\n PsychographicProfile = \"Psychographic Profiles\",\n PsychographicSummary = \"Psychographic Summary\",\n //Retail Match\n KeyMetrics = \"Key Metrics\",\n ImageGallery = \"Image Gallery\",\n LocationsAnalyzed = \"Locations Analyzed\",\n BrandComparison = \"Brand Comparison\",\n //GPS\n VisitorMap = \"Visitor Map\",\n VisitorTradeArea = \"Visitor Trade Area\",\n VisitorOrigination = \"Visitor Origination\",\n KeyProfileAttributes = \"Key Profile Attributes\",\n NewHomeOwner = \"New Homeowner\",\n NewMover = \"New Mover\",\n RelativeVolume = \"Relative Volume Metric\",\n VolumeByWeek = \"Visit Volume Trend by Week\",\n VolumeByDayOfWeek = \"Visit Volume by Day of Week\",\n VolumeByDay = \"Visit Volume by Day\",\n VolumeByMetrics = \"Volume Metrics\",\n FrequentlyVisitedPlaces = \"Frequently Visited Places\",\n FrequentlyVisitedPlacesMap = \"Frequently Visited Places Map\",\n VisitorLoyalty = \"Visitor Loyalty\",\n VisitorActivity = \"Visitor Activity\",\n VolumeByHourOfDay = \"Visit Volume by Hour of Day\",\n}\n","export enum ScoutFeature {\n StoreFilters = \"STOREFILTERS\",\n StoreTypeManagement = \"STORE_TYPE_MANAGEMENT\",\n ServiceThematics = \"SERVICE_THEMATICS\",\n Mobile = \"SCOUT4_MOBILE\",\n MyData = \"SCOUT4_DATAFORGE\",\n Scout4 = \"SCOUT4\",\n Visualization = \"SCOUT_VISUALIZATION\",\n ViewReportsOnMap = \"SCOUT_VIEW_REPORTS_ON_MAP\",\n Toolbox = \"SCOUT_TOOLBOX\",\n Territories = \"SCOUT_TERRITORIES\",\n StoreLifecycle = \"SCOUT_STORE_LIFE_CYCLE\",\n StoreExplore = \"SCOUT_STORE_EXPLORE\",\n SegmentationGuide = \"SCOUT_SEGMENTATION_GUIDE\",\n Results = \"SCOUT_RESULTS\",\n Reports = \"SCOUT_REPORTS_ALTERYX\",\n NationalProfiles = \"SCOUT_NATIONAL_PROFILES\",\n MyDataStoreImport = \"SCOUT_MY_DATA_STORE_IMPORT\",\n MobileSiteScore = \"SCOUT_MOBILE_SITE_SCORE\",\n ManageLocation = \"SCOUT_MANAGE_LOCATION\",\n HouseholdAnalysis = \"SCOUT_HOUSEHOLD_ANALYSIS\",\n HealthcareVisitsData = \"SCOUT_HEALTHCARE_VISITS_DATA\",\n HealthcareDrgData = \"SCOUT_HEALTHCARE_DRG_DATA\",\n HealthcareData = \"SCOUT_HEALTHCARE_DATA\",\n PotentialCustomerData = \"SCOUT_HAS_POTENTIAL_CUSTOMER_DATA\",\n ActualCustomerData = \"SCOUT_HAS_ACTUAL_CUSTOMER_DATA\",\n GeographyExplore = \"SCOUT_GEOGRAPHY_EXPLORE\",\n FileBrowser = \"SCOUT_FILE_BROWSER\",\n Favorites = \"SCOUT_FAVORITES\",\n Traffic = \"SCOUT_ENHANCED_TRAFFIC\",\n DemandAnalysis = \"SCOUT_DEMAND_ANALYSIS\",\n Competitors = \"SCOUT_COMPETITORS\",\n CompanyManagement = \"SCOUT_COMPANY_MANAGEMENT\",\n CommunityCollaborateProspects = \"SCOUT_COMMUNITY_COLLABORATE_PROSPECTS\",\n CommunityCollaborateContacts = \"SCOUT_COMMUNITY_COLLABORATE_CONTACTS\",\n CommunityCollaborateContactActivity = \"SCOUT_COMMUNITY_COLLABORATE_CONTACT_ACTIVITY\",\n CollaborateVisualization = \"SCOUT_COLLABORATE_VISUALIZATION\",\n CollaborateTerritories = \"SCOUT_COLLABORATE_TERRITORIES\",\n CollaborateReportHistory = \"SCOUT_COLLABORATE_REPORT_HISTORY\",\n CollaboratePushpins = \"SCOUT_COLLABORATE_PUSHPINS\",\n CollaborateLocationFilters = \"SCOUT_COLLABORATE_LOCATION_FILTERS\",\n CollaborateGpsInsights = \"SCOUT_COLLABORATE_GPS_INSIGHTS\",\n Collaborate = \"SCOUT_COLLABORATE\",\n Clusters = \"SCOUT_CLUSTERS\",\n BuxtonData = \"SCOUT_BUXTON_DATA\",\n BusinessAnalysis = \"SCOUT_BUSINESS_ANALYSIS\",\n BatchReports = \"SCOUT_BATCH_REPORTS\",\n AreasOfInterest = \"SCOUT_AREAS_OF_INTEREST\",\n AdminTools = \"SCOUT_ADMIN_TOOLS\",\n SalesPerformance = \"SALES_PERFORMANCE\",\n RetailMatch = \"RETAIL_MATCH\", // community only\n TwoByTwo = \"PLATFORM_2_BY_2\",\n MyMarket = \"MY_MARKET\",\n Intercom = \"SCOUT_INTERCOM\",\n IntercomConversation = \"INTERCOM_CONVERSATION\",\n GpsInsights = \"GPS_INSIGHTS\",\n RetailMatchReports = \"RETAIL_MATCH_REPORTS\",\n CollaborateRetailMatchReports = \"SCOUT_COLLABORATE_RETAIL_MATCH_REPORTS\",\n UserSettings = \"USER_SETTINGS\",\n /** The free version */\n MobilyticsPro = \"MOBILYTICS_PRO\",\n /** The paid version */\n MobilyticsPaid = \"MOBILYTICS_PAID\",\n UserSettingsUploadImage = \"USER_SETTINGS_UPLOAD_IMAGE\",\n /** Access to the Factor application. */\n Factor = \"FACTOR\",\n /** Access to the IQ application. */\n IQ = \"IQ\",\n /** Access the Planning Tab */\n Planning = \"PLANNING\",\n /** Access the Analyze application */\n Analyze = \"ANALYZE\",\n /** Access to Configurable Reports. */\n ConfigurableReporting = \"CONFIGURABLE_REPORTING\",\n /** Access to Inactivity Timeout Management */\n InactivityTimeout = \"INACTIVITY_TIMEOUT_MANAGEMENT\",\n /** Access to Target Market feature */\n TargetMarket = \"SCOUT_TARGET_MARKET\",\n /** Access to the Persona+ feature */\n Persona = \"BREAKFAST_WITH_BUXTON\",\n}\n","import { FeatureFlags } from \"../Util/FeatureFlags/FeatureFlags\";\nimport { getFeatureFlags } from \"../Util/FeatureFlags/FeatureFlags.prod\";\n\nexport let featureFlags: FeatureFlags;\n\nexport const setFeatureFlags = (requestedFeatureFlags: FeatureFlags) => {\n featureFlags = requestedFeatureFlags;\n\n // Make feature flags available to legacy code\n (window as any).featureFlags = featureFlags;\n};\n\nexport const loadFeatureFlagsWithOverrides = () => {\n const baseFeatureFlags = getFeatureFlags();\n if (\n (window as any).overrideFeatureFlags\n && typeof (window as any).overrideFeatureFlags === \"function\"\n ) {\n (window as any).overrideFeatureFlags(baseFeatureFlags);\n }\n\n setFeatureFlags(baseFeatureFlags);\n};\n","import { IPolygonColors } from \"../Models/Maps/IPolygonColors\";\n\n//Common\nexport const buxtonLimeGreen = \"#1CE180\";\nexport const buxtonNavyBlue = \"#2E3D49\";\n\nexport const topNavHeightPx = 56;\n\n//Mobilytics\nexport const polygonTooBig = \"#FF0000\";\n\nexport const goodPolygon: IPolygonColors = {\n fillColor: buxtonLimeGreen,\n strokeColor: buxtonNavyBlue\n};\n\nexport const badPolygon: IPolygonColors = {\n fillColor: polygonTooBig,\n strokeColor: polygonTooBig\n};","import { IGenericConsumerViewRollups } from \"./IGPSData\";\nimport { IBrand } from \"./IBrand\";\nimport { IBrandCategory } from \"./IBrandCategory\";\nimport { RenderType } from \"../Enums/RenderType\";\n\nexport interface IRetailMatchJobResult {\n chartData: IRetailMatchChartData;\n job: IRetailMatchJob;\n status: string;\n}\n\ninterface IStoreTradeAreaBlockGroup {\n id: string;\n tradeAreaBlockGroups: IRetailMatchTradeAreaBlockGroup[];\n}\n\ninterface IBrandConsumerViewRollup {\n id: string;\n consumerViewRollups: IGenericConsumerViewRollups;\n}\n\nexport interface IRetailMatchTradeAreaBlockGroup {\n id: string;\n val: number;\n}\nexport interface IRetailMatchChartData {\n brandProfiles: IProfileGroup[];\n overview: IRetailMatchOverview[];\n siteProfile: IProfileRecord[];\n storeScores: IStoreScoreRecord[];\n brandConsumerViewRollups: IBrandConsumerViewRollup[];\n nationalConsumerViewRollups: IGenericConsumerViewRollups;\n siteConsumerViewRollups: IGenericConsumerViewRollups;\n siteTradeAreaBlockGroups: IRetailMatchTradeAreaBlockGroup[];\n storeTradeAreaBlockGroups: IStoreTradeAreaBlockGroup[];\n benchmarkRecords: IStoreScoreRecord[];\n}\n\nexport interface IRetailMatchJob {\n brands: IBrand[];\n cacheUrl: any;\n categories: IBrandCategory[];\n cid: number;\n createdDateTime: string;\n datasetId: string;\n endDate: string;\n geoType: string;\n geoValues: string[];\n id: number;\n jobEndEpoch: number;\n jobId: string;\n jobStartEpoch: number;\n jobType: string;\n modifiedDateTime: string;\n projectId: string;\n sgFilter: true;\n siteLatitude: number;\n siteLongitude: number;\n startDate: string;\n status: string;\n tableId: string;\n title: string;\n totalBytesProcessed: number;\n tradeAreaLimit: boolean;\n siteDetails: string;\n uid: number;\n images: IRetailMatchJobImage[];\n addressOverride: string;\n cityOverride: string;\n stateOverride: string;\n zipcodeOverride: string;\n}\n\nexport interface IRetailMatchJobImage {\n id: number;\n isActive: boolean;\n url: string;\n}\n\nexport interface IRetailMatchUpdateBrandLogoResponse {\n jobId: string;\n brandId: string;\n logoUrl: string;\n}\n\nexport interface IRetailMatchOverview {\n jobId: string;\n brandId: string;\n brandName: string;\n sampleCount: number;\n brandCount: number;\n samplePercent: number;\n avgSampleVolumeIndex: number;\n coreCustomerCountIndex: number;\n coreCustomerPerHouseholdIndex: number;\n coreCustomerCorrelationIndex: number;\n averageIndex: number;\n rank: number;\n}\n\ninterface IBlockGroupTARecord {\n jobId: string;\n storeId: string;\n brandId: string;\n blockGroupId: string;\n isTradeArea: boolean;\n normalizedVisitPercent: number;\n coreCustomerCount: number;\n coreCustomerPercent: number;\n}\n\nexport interface IProfileRecord {\n seg: string;\n pct: number;\n core: \"P\" | \"S\" | \"N\" | \"T\";\n bCore?: \"P\" | \"S\" | \"N\" | \"T\";\n index: number;\n brandId?: string;\n}\n\nexport interface IProfileGroup {\n id: string;\n profile: IProfileRecord[];\n}\n\nexport interface IStoreTradeAreaBlockGroups {\n id: string;\n tradeAreaBlockGroups: IRetailMatchTradeAreaBlockGroup[];\n}\n\nexport interface IStoreScoreRecord {\n sid: string /*Store Id*/;\n bid: string /*Brand Id*/;\n bnm: string /*Brand Name*/;\n addr: string /*Address*/;\n city: string /*City*/;\n st: string /*State*/;\n zip: string /*Zip*/;\n buds: number /*BUDS*/;\n hhCnt: number /*Household Count*/;\n hhCntIdx: number /*Household Count Index*/;\n ccCnt: number /*Core Customer Count*/;\n ccCntIdx: number /*Core Customer Count Index*/;\n ccPerHHCnt: number /*Core Customer Per HH Count*/;\n ccPerHHCntIdx: number /*Core Customer Per HH Count Index*/;\n vCnt: number /*Volume Count*/;\n vCntIdx: number /*Volume Count Index*/;\n ccCorr: number /*Core Customer Correlation*/;\n ccCorrIdx: number /*Core Customer Correlation Index*/;\n lat: number;\n lon: number;\n fullAddr?: string /* Added later in Locations Analyzed */;\n}\n\nexport interface IRetailMatchChartSection {\n brand: IBrand;\n chartData: IRetailMatchChartData;\n locationAddress?: string;\n renderType: RenderType;\n}\n","import React, { FunctionComponent, useEffect, useRef, useState } from \"react\";\nimport { notification } from \"antd\";\nimport { PdfLambda } from \"../../../Actions/PrintActions\";\nimport { DigitalShareAppType } from \"../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../Enums/DigitalShareItemType\";\nimport { IDigitalShareItem } from \"../../../Models/IDigitalShareItem\";\nimport {\n digitalShareRender,\n getPrintOutputs,\n} from \"../../../Util/ScoutDigitalShareUtil\";\nimport {\n GenerationFailureReason,\n TemplateImageGenerator,\n TemplateImageGeneratorProgressStep,\n} from \"../../../Util/TemplateImageGenerator\";\nimport { zipAndDownloadImages } from \"../../../Util/ZipFileCreator\";\nimport DigitalShareDialog from \"./Dialogue/DigitalShareDialogue\";\nimport {\n ExtraProgressStep,\n getProgressDisplayDetails,\n IDigitalShareProgress,\n} from \"./Dialogue/ProgressLogic\";\nimport { RenderCollection, RenderContainer } from \"./DigitalShareCommonStyles\";\nimport { ProgressScreen } from \"./ProgressScreen\";\nimport { RenderType } from \"../../../Enums/Enums\";\n\nexport const CHILD_HEIGHT = 503;\nexport const MAX_WAIT_FOR_SHARE_COMPONENTS_SECONDS = 60;\nexport const MAX_WAIT_FOR_PRINT_COMPONENTS_SECONDS = 360;\n\ninterface IDigitalShareGenerator {\n onChangeGenerating: (isGenerating: boolean) => void;\n onClose: () => void;\n app: DigitalShareAppType;\n isChoosingDigitalShare: boolean;\n outputs: IDigitalShareItem[];\n}\n\nexport const digitalShareRefs: Map<\n string,\n Map>\n> = new Map>>();\n\nexport const selectedOutputsMap: Map = new Map<\n string,\n string[]\n>();\n\nexport const isOutputSelected = (app: string, itemType: string): boolean => {\n const outputs: string[] = selectedOutputsMap.get(app);\n\n if (outputs?.indexOf(itemType) > -1) {\n return true;\n }\n\n return false;\n};\nexport const mapSnapshots: Map = new Map();\n\nexport const registerRef = (\n app: string,\n itemType: string,\n ref: React.MutableRefObject\n) => {\n let refMap = digitalShareRefs.get(app);\n if (!refMap) {\n digitalShareRefs.set(\n app,\n new Map>()\n );\n refMap = digitalShareRefs.get(app);\n }\n refMap.set(itemType, ref);\n};\n\nconst digitalShareElements: Map>\n = new Map>();\nexport const digitalShareElementText: Map\n = new Map();\n\nexport const registerElement = (\n app: string,\n itemType: string,\n itemText: string | React.ReactElement,\n element: React.ReactElement\n): void => {\n let elementMap = digitalShareElements.get(app);\n\n if (!elementMap) {\n digitalShareElements.set(app, new Map());\n\n elementMap = digitalShareElements.get(app);\n }\n\n digitalShareElementText.set(itemType, itemText);\n elementMap.set(itemType, element);\n};\n\nexport const pendingRenders: Map> = new Map<\n string,\n Map\n>();\n\nexport const setPendingRender = (\n app: string,\n item: string,\n isPending: boolean\n) => {\n console.log(\"setPendingRender() to\", isPending);\n if (!pendingRenders.has(app)) {\n pendingRenders.set(app, new Map());\n }\n pendingRenders.get(app).set(item, isPending);\n};\n\nexport const clearPendingRenders = (app: string) => {\n if (pendingRenders.has(app)) {\n pendingRenders.get(app).clear();\n }\n};\n\nexport const generationStatus: Map = new Map<\n string,\n boolean\n>();\n\nexport const setGenerationStatus = (app: string, isGenerating: boolean) => {\n generationStatus.set(app, isGenerating);\n};\n\nconst getDefaultProgress = (): IDigitalShareProgress => ({\n succeeded: 0,\n failed: 0,\n total: 0,\n});\n\nexport const DigitalShareGenerator: FunctionComponent\n = (props: IDigitalShareGenerator) => {\n const [selectedOutputs, setSelectedOutputs] = useState<\n DigitalShareItemType[]\n >([]);\n const [templateImageGenerator, setTemplateImageGenerator]\n = useState(null);\n const [isGeneratingDigitalShare, setIsGeneratingDigitalShare]\n = useState(false);\n const [didDownloadImages, setDidDownloadImages] = useState(false);\n const [generationProgress, setGenerationProgress]\n = useState(getDefaultProgress());\n const [percentComplete, setPercentComplete] = useState(0);\n const [progressText, setProgressText] = useState(\"Initializing...\");\n const [progressStep, setProgressStep] = useState<\n TemplateImageGeneratorProgressStep | ExtraProgressStep\n >(ExtraProgressStep.Initializing);\n\n const onImageGenerationProgress = (\n succeeded: number,\n failed: number,\n total: number,\n step: TemplateImageGeneratorProgressStep\n ) => {\n setGenerationProgress({ succeeded, failed, total });\n setProgressStep(step);\n };\n\n const renderDigitalShare = (outputs: DigitalShareItemType[]) => {\n selectedOutputsMap.set(props.app, outputs);\n\n setSelectedOutputs(outputs);\n setIsGeneratingDigitalShare(true);\n };\n\n const updateProgress = () => {\n const { text, percentComplete } = getProgressDisplayDetails(\n selectedOutputs,\n progressStep,\n generationProgress,\n RenderType.DIGITAL_SHARE\n );\n setProgressText(text);\n setPercentComplete(percentComplete);\n };\n\n useEffect(() => {\n updateProgress();\n }, [generationProgress, progressStep]);\n\n useEffect(() => {\n let isComponentMounted = true;\n let cleanupTimeout = null;\n if (isGeneratingDigitalShare && !templateImageGenerator) {\n if (digitalShareRefs.has(props.app)) {\n digitalShareRefs.get(props.app).clear();\n } else {\n digitalShareRefs.set(\n props.app,\n new Map>()\n );\n }\n const generator = new TemplateImageGenerator(\n selectedOutputs,\n digitalShareRefs.get(props.app),\n onImageGenerationProgress\n );\n setTemplateImageGenerator(generator);\n updateProgress();\n const generate = async () => {\n const start = window.performance.now();\n\n // Basically, give child components the ability to check whether\n // exporting has been canceled.\n setGenerationStatus(props.app, true);\n\n // We were originally doing the rest of this function in a set timeout.\n // It seems that we don't need to wait at all if animations are disabled.\n // Any initialization that happens in hooks, etc, apparently happens\n // before the stack is cleared.\n props.onChangeGenerating(true);\n\n // Wait here so the progress screen images have a chance to load.\n // Without this, the generation process will block the UI thread, meaning\n // the progress screen will have missing images at first.\n // Note: Commenting out as it doesn't seem to be making a difference, and could\n // possibly interfere with error handling.\n // await delay(1000);\n let wasError = false;\n let error: any = null;\n try {\n const images = await generator.generate(\n 3000,\n 1000 * MAX_WAIT_FOR_SHARE_COMPONENTS_SECONDS\n );\n const elapsed = (window.performance.now() - start) / 1000.0;\n console.log(`Generating ${images.length} took ${elapsed} seconds`);\n\n if (!isComponentMounted) {\n return;\n }\n setProgressStep(ExtraProgressStep.Zipping);\n if (!isComponentMounted) {\n return;\n }\n await zipAndDownloadImages(\n `${props.app}Exports.zip`,\n images.map((r) => ({\n name: `${r.type}.png`,\n dataUrl: r.dataUrl,\n }))\n );\n } catch (err) {\n wasError = true;\n error = err;\n } finally {\n // By setting this, children will know they need to stop operations\n // if they are still running.\n // (They shouldn't be running anyway if the process finished\n // successfully.)\n setGenerationStatus(props.app, false);\n const cleanup = () => {\n if (!isComponentMounted) {\n return;\n }\n const pending = pendingRenders.get(props.app);\n let hasPending = false;\n if (pending) {\n pending.forEach((val: boolean, key: string) => {\n if (val) {\n hasPending = true;\n }\n });\n if (hasPending) {\n cleanupTimeout = setTimeout(cleanup, 100);\n return;\n }\n }\n\n // Reset pending renders\n clearPendingRenders(props.app);\n\n if (!isComponentMounted) {\n return;\n }\n // Let the client know we're done generating\n props.onChangeGenerating(false);\n\n if (!isComponentMounted) {\n return;\n }\n setProgressStep(ExtraProgressStep.DownloadComplete);\n if (!isComponentMounted) {\n return;\n }\n setDidDownloadImages(true);\n if (!isComponentMounted) {\n return;\n }\n setTemplateImageGenerator(null);\n if (!isComponentMounted) {\n return;\n }\n digitalShareElements.clear();\n props.onClose();\n\n if (wasError) {\n let description = \"There was a problem exporting your images.\";\n if (error === GenerationFailureReason.TimeoutExceeded) {\n description\n = \"It took too long to export your images. Please try closing some running programs on your device, or select fewer outputs at a time.\";\n } else if (typeof error === \"string\") {\n description = error;\n }\n notification.error({\n message: \"Error exporting images\",\n description,\n duration: null,\n });\n }\n };\n cleanup();\n }\n };\n\n generate();\n }\n return () => {\n isComponentMounted = false;\n clearTimeout(cleanupTimeout);\n };\n }, [isGeneratingDigitalShare, selectedOutputs]);\n\n const [isDialogueVisible, setIsDialogueVisible] = useState(true);\n const [elementArr, setElementArr] = useState([]);\n\n useEffect(() => {\n if (!isDialogueVisible) {\n props.onClose();\n }\n }, [isDialogueVisible]);\n\n useEffect(() => {\n const elements = digitalShareElements.get(props.app);\n const temp = [];\n if (elements) {\n for (const [k, v] of elements) {\n temp.push({\n key: k,\n element: v,\n });\n }\n setElementArr(temp);\n }\n }, [digitalShareElements.get(props.app)?.size]);\n\n return (\n <>\n {isGeneratingDigitalShare && (\n \n )}\n {props.isChoosingDigitalShare && (\n setIsDialogueVisible(false)}\n onSubmit={renderDigitalShare}\n outputs={props.outputs}\n />\n )}\n \n {isGeneratingDigitalShare\n && elementArr.map((v, i) => (\n \n {digitalShareRender(props.app, v.key, v.element)}\n \n ))}\n \n \n );\n };\n\ninterface IPrintGenerator {\n onChangeGenerating: (isGenerating: boolean) => void;\n onComplete: () => void;\n app: DigitalShareAppType;\n outputs: IDigitalShareItem[];\n jobId: string;\n}\n\nexport const PrintGenerator: FunctionComponent = (\n props: IPrintGenerator\n) => {\n const outputs = getPrintOutputs(props.app, props.outputs).map((o) => o.type);\n const [isGenerating, setIsGenerating] = useState(false);\n const [generationProgress, setGenerationProgress]\n = useState(getDefaultProgress());\n const [percentComplete, setPercentComplete] = useState(0);\n const [progressText, setProgressText] = useState(\"Initializing...\");\n const [progressStep, setProgressStep] = useState<\n TemplateImageGeneratorProgressStep | ExtraProgressStep\n >(ExtraProgressStep.Initializing);\n const [elementArr, setElementArr] = useState([]);\n const formRef = useRef(null);\n\n const onImageGenerationProgress = (\n succeeded: number,\n failed: number,\n total: number,\n step: TemplateImageGeneratorProgressStep\n ) => {\n setGenerationProgress({ succeeded, failed, total });\n setProgressStep(step);\n };\n\n const updateProgress = () => {\n const { text, percentComplete } = getProgressDisplayDetails(\n outputs,\n progressStep,\n generationProgress,\n RenderType.PRINT\n );\n setProgressText(text);\n setPercentComplete(percentComplete);\n };\n\n useEffect(() => {\n updateProgress();\n }, [generationProgress, progressStep]);\n\n useEffect(() => {\n let isComponentMounted = true;\n let cleanupTimeout = null;\n if (!isGenerating) {\n setIsGenerating(true);\n selectedOutputsMap.set(props.app, outputs);\n if (digitalShareRefs.has(props.app)) {\n digitalShareRefs.get(props.app).clear();\n } else {\n digitalShareRefs.set(\n props.app,\n new Map>()\n );\n }\n const generator = new TemplateImageGenerator(\n outputs,\n digitalShareRefs.get(props.app),\n onImageGenerationProgress\n );\n updateProgress();\n const generate = async () => {\n const start = window.performance.now();\n\n // Basically, give child components the ability to check whether\n // exporting has been canceled.\n setGenerationStatus(props.app, true);\n\n // We were originally doing the rest of this function in a set timeout.\n // It seems that we don't need to wait at all if animations are disabled.\n // Any initialization that happens in hooks, etc, apparently happens\n // before the stack is cleared.\n props.onChangeGenerating(true);\n\n // Wait here so the progress screen images have a chance to load.\n // Without this, the generation process will block the UI thread, meaning\n // the progress screen will have missing images at first.\n // Note: Commenting out as it doesn't seem to be making a difference, and could\n // possibly interfere with error handling.\n // await delay(1000);\n let wasError = false;\n let error: any = null;\n try {\n const images = await generator.generate(\n 3000,\n 1000 * MAX_WAIT_FOR_PRINT_COMPONENTS_SECONDS\n );\n const elapsed = (window.performance.now() - start) / 1000.0;\n console.log(`Generating ${images.length} took ${elapsed} seconds`);\n\n if (!isComponentMounted) {\n return;\n }\n setProgressStep(ExtraProgressStep.BuildingPDF);\n if (!isComponentMounted) {\n return;\n }\n\n let dataUrls = images.map((i) => {\n const newImage = new Image();\n newImage.src = i.dataUrl;\n // Resize the image to fit in the browser\n newImage.style.width = \"100%\";\n newImage.style.height = \"auto\";\n\n return {\n html: newImage.outerHTML,\n width: 1500,// This size exactly because of the template\n height: 835,\n };\n });\n\n // Use window.testPrintTimeoutFactor to induce a longer-running AJAX call\n // on the server side. Useful for testing error messages client-side and\n // load balancer request limits.\n // if (\n // (window as any).testPrintTimeoutFactor !== undefined\n // && typeof (window as any).testPrintTimeoutFactor === \"number\"\n // ) {\n // const factor = (window as any).testPrintTimeoutFactor;\n // let extraDataUrls = dataUrls;\n // for (let i = 0; i < factor; i++) {\n // extraDataUrls = [...extraDataUrls, ...dataUrls];\n // }\n // dataUrls = extraDataUrls;\n // }\n\n // const product = props.app.replace(\" \", \"\");\n\n const b64Pdf = await PdfLambda(dataUrls);\n\n if (!isComponentMounted) {\n return;\n }\n\n // window.open(url, \"_blank\");\n\n // Convert Base64 to Byte Array\n const binaryString: string = atob(b64Pdf);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; ++i) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n // Open pdf in new tab\n const file = new Blob([bytes], { type: \"application/pdf\" });\n const fileURL = URL.createObjectURL(file);\n window.open(fileURL);\n\n } catch (err) {\n wasError = true;\n error = err;\n } finally {\n // By setting this, children will know they need to stop operations\n // if they are still running.\n // (They shouldn't be running anyway if the process finished\n // successfully.)\n setGenerationStatus(props.app, false);\n const cleanup = () => {\n if (!isComponentMounted) {\n return;\n }\n const pending = pendingRenders.get(props.app);\n let hasPending = false;\n if (pending) {\n pending.forEach((val: boolean, key: string) => {\n if (val) {\n hasPending = true;\n }\n });\n if (hasPending) {\n cleanupTimeout = setTimeout(cleanup, 100);\n return;\n }\n }\n\n // Reset pending renders\n clearPendingRenders(props.app);\n\n digitalShareElements.clear();\n\n if (!isComponentMounted) {\n return;\n }\n setProgressStep(ExtraProgressStep.DownloadComplete);\n if (!isComponentMounted) {\n return;\n }\n // Let the client know we're done generating\n props.onChangeGenerating(false);\n\n if (!isComponentMounted) {\n return;\n }\n props.onComplete();\n\n if (wasError) {\n let description = \"There was a problem exporting your images.\";\n if (error === GenerationFailureReason.TimeoutExceeded) {\n description\n = \"It took too long to export your images. Please try closing some running programs on your device.\";\n } else if (typeof error === \"string\") {\n description = error;\n }\n notification.error({\n message: \"Error exporting images\",\n description,\n duration: null,\n });\n }\n };\n cleanup();\n }\n };\n\n generate();\n }\n return () => {\n isComponentMounted = false;\n clearTimeout(cleanupTimeout);\n };\n }, []);\n\n useEffect(() => {\n const elements = digitalShareElements.get(props.app);\n const temp = [];\n if (elements) {\n for (const [k, v] of elements) {\n temp.push({\n key: k,\n element: v,\n });\n }\n setElementArr(temp);\n }\n }, [digitalShareElements.get(props.app)?.size]);\n\n return (\n <>\n \n
\n {elementArr.map((v, i) => (\n \n {digitalShareRender(props.app, v.key, v.element)}\n \n ))}\n \n );\n};\n","import { IBookmarkReducerState } from \"../Reducers/BookmarkReducer\";\nimport { ICompanySupportTeamState } from \"../Reducers/CompanySupportTeamReducer\";\nimport { IDigitalShareReducer } from \"../Reducers/DigitalShareReducer\";\nimport { IGPSInsightsState } from \"../Reducers/GPSInsightsReducer\";\nimport { ILeftNavReducerState } from \"../Reducers/LeftNavReducer\";\nimport { ILoadScoutReducerState } from \"../Reducers/LoadScoutReducer\";\nimport { IMapSettingsReducerState } from \"../Reducers/MapSettingsReducer\";\nimport { IMobilyticsPlacesState } from \"../Reducers/MobilyticsPlacesReducer\";\nimport { IFactorState } from \"../Reducers/FactorReducer\";\nimport { IReportMapState } from \"../Reducers/ReportMapReducer\";\nimport { IReportReducerState } from \"../Reducers/ReportsReducer\";\nimport { IRetailMatchState } from \"../Reducers/RetailMatchReducer\";\nimport { ISalesPerformanceReducerState } from \"../Reducers/SalesPerformanceReducer\";\nimport { ISessionReducerState } from \"../Reducers/SessionReducer\";\nimport { ITerritoryManagementStore } from \"../Reducers/TerritoryManagementReducer\";\nimport { IToolboxReducerState } from \"../Reducers/ToolboxReducer\";\nimport { ITwoByTwoState } from \"../Reducers/TwoByTwoReducer\";\nimport { IUserManagementStore } from \"../Reducers/UserManagementReducer\";\nimport { IUserPreferencesStore } from \"../Reducers/UserPreferencesReducer\";\nimport { IUserProfileStore } from \"../Reducers/UserProfileReducer\";\nimport { IUserReducerState } from \"../Reducers/UserReducer\";\nimport { IAppReducerState } from \"../View/Products/Reducers/AppReducer\";\nimport { ILoginReducerState } from \"../View/Products/Reducers/LoginReducer\";\nimport { INotificationsReducerState } from \"../View/Products/Reducers/NotificationsReducer\";\nimport { IMyData, ITableau } from \"./Models\";\nimport { INotificationWorkflowReducerState } from \"../Reducers/NotificationWorkflowReducer\";\n\nexport interface IRootReducer {\n user: IUserReducerState;\n twoByTwo: ITwoByTwoState;\n mobilyticsReportOutput: IGPSInsightsState;\n factorReducer: IFactorState;\n matchReportOutput: IRetailMatchState;\n myData: IMyData;\n userPreferencesStore: IUserPreferencesStore;\n bookmarks: IBookmarkReducerState;\n loadScout: ILoadScoutReducerState;\n userManagement: IUserManagementStore;\n session: ISessionReducerState;\n tableauReducer: ITableau;\n reports: IReportReducerState;\n territoryManagement: ITerritoryManagementStore;\n userProfile: IUserProfileStore;\n companySupportTeamStore: ICompanySupportTeamState;\n salesPerformanceReducer: ISalesPerformanceReducerState;\n reportMap: IReportMapState;\n leftNav: ILeftNavReducerState;\n mapSettings: IMapSettingsReducerState;\n toolbox: IToolboxReducerState;\n mobilyticsPlaces: IMobilyticsPlacesState;\n digitalShare: IDigitalShareReducer;\n appReducer: IAppReducerState;\n loginReducer: ILoginReducerState;\n notificationsReducer: INotificationsReducerState;\n notificationWorkflowReducer: INotificationWorkflowReducerState;\n}\n","export * from \"./BookmarkActions\";\nexport * from \"./CompanySupportTeamActions\";\nexport * from \"./ConfigurableReportActions\";\nexport * from \"./FactorActions\";\nexport * from \"./GPSInsightsActions\";\nexport * from \"./LoadScoutActions\";\nexport * from \"./MyDataActions\";\nexport * from \"./ReportsActions\";\nexport * from \"./SalesPerformanceActions\";\nexport * from \"./SessionActions\";\nexport * from \"./TerritoryManagementActions\";\nexport * from \"./TwoByTwoActions\";\nexport * from \"./UserActions\";\nexport * from \"./UserManagementActions\";\nexport * from \"./UserPreferencesActions\";\nexport * from \"./UserProfileActions\";\n\n","import { createSelector } from \"reselect\";\nimport { IRootReducer } from \"../../Models/IRootReducer\";\nimport { IUser } from \"../../Models/IUser\";\nimport { IUserShareSettings } from \"../../Models/IUserShareSettings\";\n\nexport const userSelector = createSelector(\n (state: IRootReducer) => state.user?.user,\n (user: IUser) => user\n);\n\nexport const userShareSettingsSelector = createSelector(\n (state: IRootReducer) => state.user?.shareSettings,\n (shareSettings: IUserShareSettings) => shareSettings\n);\n\nexport const loadingAllUsersSelector = createSelector(\n (state: IRootReducer) => state.user?.loadingAllUsers,\n (loading: boolean) => loading\n);\n\nexport const allUsersSelector = createSelector(\n (state: IRootReducer) => state.user?.allUsers,\n (all: IUser[]) => all\n);\n\nexport const showActiveUsersSelector = createSelector(\n (state: IRootReducer) => state.user?.showActiveUsers,\n (showActiveUsers: boolean) => showActiveUsers\n);\n","import { UserLoginStatus } from \"../Enums/Enums\";\nimport {\n IApplication,\n IBatch,\n ICompany,\n IFeature,\n IReport,\n IRole,\n IUserGroup,\n IUserPreferences,\n} from \"./Models\";\n\nexport interface IUser {\n readonly userID: number;\n company: ICompany;\n preferences: IUserPreferences;\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n profileImage: string;\n userName: string;\n isActive: boolean;\n expireDateTime: Date;\n expireDateTimeFriendly: string;\n createdDateTime: Date;\n readonly createdByUserID: number;\n readonly isBuxtonUser: boolean;\n title: string;\n canEmail: boolean;\n readonly passwordHash: string;\n expirePasswordDateTime: Date;\n groups: IUserGroup[];\n oktaGroups: string[];\n oktaUserID: string;\n applications: IApplication[];\n readonly loginDates: Date[];\n franchiseStoresCount: number;\n franchiseTerritoriesCount: number;\n lastLoginFriendly: string;\n features: IFeature[];\n roles: IRole[];\n reports: IReport;\n batches: IBatch[];\n personaID: number;\n expireAuthTokenDate: any;\n expireSessionDate: any;\n loginStatus: UserLoginStatus;\n readonly totalLoginCount: number;\n readonly totalLoginCountCurrentYear: number;\n readonly totalLoginCountPreviousYear: number;\n readonly totalLoginCountTwoYearsAgo: number;\n readonly serverVerified: boolean;\n isAdmin: boolean;\n isFranchisee: boolean;\n isRegularUser: boolean;\n readonly maxSessionCount: number;\n readonly lastKnownIP: string;\n shouldLogActions: boolean;\n fullName: string;\n isSetup: boolean;\n identity: any /* interface */;\n authorizedGeographyWKT: string;\n /** Used when a user chooses to upload a \"Logo\" when they share a GPS report. */\n shareImage: string;\n}\n","import { RetailMatchDynamicTextEnum } from \"../../Enums/RetailMatchDynamicTextEnum\";\nimport { RetailMatchMetricLevel } from \"../../Enums/RetailMatchMetricLevel\";\nimport { RetailMatchMetricTier } from \"../../Enums/RetailMatchMetricTier\";\nimport {\n IRetailMatchJobResult,\n IRetailMatchOverview,\n IStoreScoreRecord,\n} from \"../../Models/Models\";\n\nexport function getRetailMatchMetricVerbiage(\n value: number,\n level: RetailMatchMetricLevel\n): string {\n switch (level) {\n case RetailMatchMetricLevel.Comparable:\n return getRetailMatchComparableVerbiage(value);\n\n case RetailMatchMetricLevel.Average:\n return getRetailMatchAverageVerbiage(value);\n\n case RetailMatchMetricLevel.Similarity:\n return getRetailMatchSimilarityVerbiage(value);\n\n default:\n return \"\";\n }\n}\n\nexport function getRetailMatchMetricTierLevel(\n value: number\n): RetailMatchMetricTier {\n let tier = RetailMatchMetricTier.Tier4;\n\n if (value <= 79) {\n tier = RetailMatchMetricTier.Tier1;\n } else if (value >= 80 && value <= 89) {\n tier = RetailMatchMetricTier.Tier2;\n } else if (value >= 90 && value <= 110) {\n tier = RetailMatchMetricTier.Tier3;\n }\n\n return tier;\n}\n\nexport function getRetailMatchSimilarityVerbiage(\n value: number\n): RetailMatchDynamicTextEnum {\n const tierLevel: RetailMatchMetricTier = getRetailMatchMetricTierLevel(value);\n\n switch (tierLevel) {\n case RetailMatchMetricTier.Tier1:\n return RetailMatchDynamicTextEnum.NotSimilar;\n\n case RetailMatchMetricTier.Tier2:\n return RetailMatchDynamicTextEnum.SomewhatSimilar;\n\n case RetailMatchMetricTier.Tier3:\n return RetailMatchDynamicTextEnum.Similar;\n\n default:\n return RetailMatchDynamicTextEnum.VerySimilar;\n }\n}\n\nexport function getRetailMatchComparableVerbiage(\n value: number\n): RetailMatchDynamicTextEnum {\n const tierLevel: RetailMatchMetricTier = getRetailMatchMetricTierLevel(value);\n\n switch (tierLevel) {\n case RetailMatchMetricTier.Tier1:\n return RetailMatchDynamicTextEnum.Low;\n\n case RetailMatchMetricTier.Tier2:\n return RetailMatchDynamicTextEnum.SlightlyLower;\n\n case RetailMatchMetricTier.Tier3:\n return RetailMatchDynamicTextEnum.Comparable;\n\n default:\n return RetailMatchDynamicTextEnum.High;\n }\n}\n\nexport function getRetailMatchAverageVerbiage(\n value: number\n): RetailMatchDynamicTextEnum {\n const tierLevel: RetailMatchMetricTier = getRetailMatchMetricTierLevel(value);\n\n switch (tierLevel) {\n case RetailMatchMetricTier.Tier1:\n return RetailMatchDynamicTextEnum.Low;\n\n case RetailMatchMetricTier.Tier2:\n return RetailMatchDynamicTextEnum.BelowAverage;\n\n case RetailMatchMetricTier.Tier3:\n return RetailMatchDynamicTextEnum.Average;\n\n default:\n return RetailMatchDynamicTextEnum.High;\n }\n}\n\nexport const getBarWidth = (index: number): number => {\n const tier: RetailMatchMetricTier = getRetailMatchMetricTierLevel(index);\n let value = 0;\n switch (tier) {\n case RetailMatchMetricTier.Tier1: {\n value = 15;\n break;\n }\n case RetailMatchMetricTier.Tier2: {\n value = 45;\n break;\n }\n case RetailMatchMetricTier.Tier3: {\n value = 65;\n break;\n }\n case RetailMatchMetricTier.Tier4: {\n value = 90;\n break;\n }\n }\n return value;\n};\n\nexport const getDateBackVerbiage = (\n startDate: string,\n endDate: string\n): string => {\n const formattedStart: Date = new Date(startDate);\n const formattedEnd: Date = new Date(endDate);\n let message = \"\";\n\n if (\n formattedStart.getFullYear() === 2019\n && formattedEnd.getFullYear() === 2019\n ) {\n message = \"in all of 2019\";\n } else {\n message = `between ${formattedStart.toLocaleDateString()} and ${formattedEnd.toLocaleDateString()}`;\n }\n\n return message;\n};\n\nexport const getBenchmarkAddressOverride = (\n jobResult: IRetailMatchJobResult,\n benchmarkRecord: IStoreScoreRecord\n): IStoreScoreRecord => {\n return {\n ...benchmarkRecord,\n addr: jobResult?.job.addressOverride || benchmarkRecord?.addr,\n city: jobResult?.job.cityOverride || benchmarkRecord?.city,\n st: jobResult?.job.stateOverride || benchmarkRecord?.st,\n zip: jobResult?.job.zipcodeOverride || benchmarkRecord?.zip,\n };\n};\n\nexport const brandOverviewRecord = (\n brandId: string,\n allOverviews: IRetailMatchOverview[]\n) => {\n return allOverviews.find((record) => {\n return record.brandId === brandId;\n });\n};\n","import axios, { AxiosError } from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\n\nimport { AuthenticationAxios } from \"../Contracts/Axios\";\nimport { ScoutFeature } from \"../Enums/ScoutFeature\";\nimport { intercomBoot, intercomCallbacks } from \"../Logic/UserLogic\";\nimport { IFeature, IServiceResult, IUser } from \"../Models/Models\";\nimport { getAllUsersFailure, getAllUsersSuccess, getUserFailure, getUserSuccess } from \"../View/Products/Actions/UserActions\";\nimport * as types from \"./Types\";\nimport { logout } from \"../Logic/SessionLogic\";\n\ndeclare let scout;\n\nexport const loadUser: ActionCreator> = () => {\n return (dispatch: Dispatch) => {\n const authenticationAxios = new AuthenticationAxios();\n const promise = authenticationAxios.LoadUser();\n\n promise\n .then((response: IServiceResult) => {\n const user: IUser = response.data;\n\n // Callbacks will only be set up for SCOUT, while the boot snippet should be applied to every app when loadUser is called\n if((window as any).scout) {\n intercomCallbacks(user);\n }\n intercomBoot(user);\n\n dispatch(getUserSuccess(user));\n })\n .catch((error: AxiosError) => {\n dispatch(getUserFailure(error.message));\n });\n };\n};\n\n//Thunk Action\nexport const getAllUsers: ActionCreator>\n = () => {\n return (dispatch: Dispatch) => {\n axios\n .get(\"/Users/Listing\")\n .then((response) => {\n const allUsers: IUser[] = response.data.data;\n dispatch(getAllUsersSuccess(allUsers));\n })\n .catch((error: AxiosError) => {\n dispatch(getAllUsersFailure(error.message));\n });\n };\n };\n\nexport const trackLogin = (): void => {\n const uri = $(\"#GetCurrentSessionUri\").text();\n\n getSessionID(uri)\n .then((sessionId) => {\n addLoginDate(sessionId);\n });\n};\n\nexport const getSessionID = (url: string): Promise => {\n return new Promise((resolve, reject) => {\n const oktaAxios = axios.create({ withCredentials: true });\n oktaAxios\n .get(url)\n .then((response) => {\n resolve(response.data.id || null);\n })\n .catch((error) => {\n // If 404 is returned, that means there are no active sessions for this Okta user and they need to be booted.\n if (axios.isAxiosError(error) && error.response?.status === 404) {\n logout(\"/Account/Logout\");\n }\n reject();\n });\n });\n};\n\nexport const addLoginDate = (sessionId: string) => {\n axios\n .post(\"/Users/AddLoginDate\", {\n sessionId: sessionId,\n })\n .catch((error) => {\n console.error(error);\n });\n};\n\nexport const setShowActiveUsers = (data: boolean) => ({\n type: types.SET_SHOW_ACTIVE_USERS,\n data: data,\n});\n\nexport const hasFeature = (user: IUser | null, feature: ScoutFeature): boolean => {\n return !user\n ? false\n : user.features?.some((userFeature: IFeature) => userFeature?.name === feature);\n};\n\nexport const enableTimeoutFeature = () => {\n return scout.logic.FeatureFlagLogic.featureFlags.scoutUserManagementTimeout;\n};\n","import { ISafegraphLocation } from \"./ISafegraphLocation\";\nimport { IPolygon } from \"./Models\";\n\nexport interface IGCPBigQueryJob {\n id: number;\n projectId: string;\n datasetId: string;\n tableId: string;\n jobId: string;\n jobType: string;\n status: string;\n title: string;\n totalBytesProcessed: number;\n jobStartEpoch: number;\n jobEndEpoch: number;\n jobPolygon: IPolygon;\n cid: number;\n uid: number;\n cacheUrl: string;\n createdDateTime: Date;\n modifiedDateTime: Date;\n queryFromDateTime: Date;\n queryToDateTime: Date;\n viewInScout: boolean;\n milesLessOrGreater: string;\n miles: number;\n mobilyticsPlace: ISafegraphLocation;\n}\n","import { createSelector } from \"reselect\";\n\nimport { App } from \"../Enums/App\";\nimport { AppView } from \"../Enums/AppView\";\nimport { IRootReducer } from \"../Reducers/RootReducer\";\nimport { IAppReducerState } from '../Reducers/AppReducer';\nimport { IHeaderNavDisplay } from \"../Models/IHeaderNavDisplay\";\n\nexport const currentAppSelector = createSelector(\n (state: IRootReducer) => state.appReducer.currentApp,\n (app: App) => app\n);\n\nexport const currentAppViewSelector = createSelector(\n (state: IRootReducer) => state.appReducer.appView,\n (view: AppView) => view\n);\n\nexport const currentAppIsPastIntroSelector = createSelector(\n (state: IRootReducer) => state.appReducer,\n (appState: IAppReducerState) => appState.appsPastIntro.has(appState.currentApp),\n);\n\nexport const headerNavDisplay = createSelector(\n (state: IRootReducer) => state.appReducer.headerNavDisplay,\n (headerNavDisplay: IHeaderNavDisplay) => headerNavDisplay,\n);\n","import { PolygonType } from \"./Enums/PolygonType\";\n\nexport interface IPolygon {\n\tpolygonType: PolygonType;\n\tid: string;\n\tname: string;\n\tisSelected: boolean;\n\tborderSize: number;\n\tborderColor: string;\n}\n","import { IPoint } from \"./IPoint\";\n\nexport interface ISafegraphLocation {\n locationId: string;\n brandId: string;\n brandName: string;\n naicsCode: string;\n categoryName: string;\n subCategoryName: string;\n address: string;\n city: string;\n state: string;\n zipcode: string;\n dmaId: number;\n regionCd: string;\n latitude: number;\n longitude: number;\n placeKey: string;\n sgVintage: Date;\n polygon: IPoint[];\n distanceMiles: number;\n}\n\nexport interface ISafegraphMapData {\n uniqueID: string;\n brandId: string;\n name: string;\n latitude: number;\n longitude: number;\n spatialObject: IPoint[];\n address: {\n address1: string;\n country: string;\n state: string;\n city: string;\n zip: string;\n zip4: string;\n };\n type: string;\n}\n\nexport interface ISafegraphBrandMapValue {\n ID: string;\n type: string;\n mapData: ISafegraphMapData[];\n logoPath: string;\n name: string;\n}\n","import { combineReducers } from \"redux\";\nimport { companySupportTeamStore, ICompanySupportTeamState } from \"../../../Reducers/CompanySupportTeamReducer\";\nimport { digitalShare, IDigitalShareReducer } from \"../../../Reducers/DigitalShareReducer\";\nimport { IGPSInsightsState, mobilyticsReportOutput } from \"../../../Reducers/GPSInsightsReducer\";\nimport { ILoadScoutReducerState, loadScout } from \"../../../Reducers/LoadScoutReducer\";\nimport { IReportMapState, reportMap } from \"../../../Reducers/ReportMapReducer\";\nimport { IRetailMatchState, matchReportOutput } from \"../../../Reducers/RetailMatchReducer\";\nimport { ITerritoryManagementStore, territoryManagement } from \"../../../Reducers/TerritoryManagementReducer\";\nimport { IUserManagementStore, userManagement } from \"../../../Reducers/UserManagementReducer\";\nimport { IUserPreferencesStore, userPreferencesStore } from \"../../../Reducers/UserPreferencesReducer\";\nimport { IUserProfileStore, userProfile } from \"../../../Reducers/UserProfileReducer\";\nimport { IUserReducerState as ILegacyUserReducerState, user } from \"../../../Reducers/UserReducer\";\nimport { appReducer, IAppReducerState } from \"./AppReducer\";\nimport { brandsReducer, IBrandsReducerState } from \"./BrandsReducer\";\nimport { categoriesReducer, ICategoriesReducerState } from \"./CategoriesReducer\";\nimport { commonReducer, ICommonReducerState } from \"./CommonReducer\";\nimport { ILoginReducerState, loginReducer } from \"./LoginReducer\";\nimport { IMapReducerState, mapReducer } from \"./MapReducer\";\nimport { IMobilyticsReducerState, mobilyticsReducer } from \"./MobilyticsReducer\";\nimport { INotificationsReducerState, notificationsReducer } from \"./NotificationsReducer\";\nimport { IReportsReducerState, reportsReducer } from \"./ReportsReducer\";\nimport { IRetailMatchReducerState, retailMatchReducer } from \"./RetailMatchReducer\";\nimport { ISideNavReducerState, sideNavReducer } from \"./SideNavReducer\";\nimport { ISubmitMatchFormState, submitMatchFormReducer } from \"./SubmitMatchFormReducer\";\nimport { IVoidGapReducerState, voidGapReducer } from \"./VoidGapReducer\";\nimport { IFactorState, factorReducer } from \"../../../Reducers/FactorReducer\";\n\nexport interface IRootReducer {\n sideNavReducer: ISideNavReducerState;\n mapReducer: IMapReducerState;\n appReducer: IAppReducerState;\n reportsReducer: IReportsReducerState;\n brandsReducer: IBrandsReducerState;\n categoriesReducer: ICategoriesReducerState;\n retailMatchReducer: IRetailMatchReducerState;\n submitMatchFormReducer: ISubmitMatchFormState;\n mobilyticsReducer: IMobilyticsReducerState;\n voidGapReducer: IVoidGapReducerState;\n loginReducer: ILoginReducerState;\n notificationsReducer: INotificationsReducerState;\n mobilyticsReportOutput: IGPSInsightsState;\n factorReducer: IFactorState;\n matchReportOutput: IRetailMatchState;\n reportMap: IReportMapState;\n loadScout: ILoadScoutReducerState;\n digitalShare: IDigitalShareReducer;\n //Legacy user reducer\n user: ILegacyUserReducerState;\n userPreferencesStore: IUserPreferencesStore;\n userManagement: IUserManagementStore;\n territoryManagement: ITerritoryManagementStore;\n companySupportTeamStore: ICompanySupportTeamState;\n userProfile: IUserProfileStore;\n commonReducer: ICommonReducerState;\n}\n\nexport const rootReducer = combineReducers({\n sideNavReducer,\n mapReducer,\n appReducer,\n reportsReducer,\n brandsReducer,\n categoriesReducer,\n retailMatchReducer,\n submitMatchFormReducer,\n mobilyticsReducer,\n voidGapReducer,\n loginReducer,\n notificationsReducer,\n mobilyticsReportOutput,\n factorReducer,\n matchReportOutput,\n reportMap,\n loadScout,\n digitalShare,\n commonReducer,\n //Legacy user/user settings reducers\n user,\n userPreferencesStore,\n userManagement,\n territoryManagement,\n companySupportTeamStore,\n userProfile,\n});\n","import { createSelector } from \"reselect\";\n\nimport { IGCPBigQueryJob } from \"../../../Models/IGCPBigQueryJob\";\nimport { ISafegraphLocation } from \"../../../Models/ISafegraphLocation\";\nimport { PolygonType } from \"../Models/Maps/Enums/PolygonType\";\nimport { IPolygon } from \"../Models/Maps/IPolygon\";\nimport { IMobilyticsScenarioFormState } from \"../Pages/Apps/Mobilytics/SubmitMobilyticsLogic\";\nimport { IRootReducer } from \"../Reducers/RootReducer\";\nimport { CreateCustomLocationParameters, LocationDetailsParameters } from \"../Types/MobilyticsActionTypes\";\n\nexport const customReportTitleSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.customReportTitle,\n (customReportTitle: string) => customReportTitle\n);\n\nexport const savedPolygonsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.savedPolygons,\n (polygons: IPolygon[]) => polygons\n);\n\nexport const inProcessPolygonSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.inProcessPolygon,\n (poly: IPolygon) => poly\n);\n\nexport const isDrawingPolygonSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.isDrawingPolygon,\n (isDrawingPolygon: boolean) => isDrawingPolygon\n);\n\nexport const isLoadingMobilyticsReportSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.isLoadingMobilyticsReport,\n (isLoadingMobilyticsReport: boolean) => isLoadingMobilyticsReport\n);\n\nexport const isSearchingForNewLocationSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.isSearchingForNewLocation,\n (isSearchingForNewLocation: boolean) => isSearchingForNewLocation\n);\n\nexport const mobilyticsSearchedLocationSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.searchedLocation,\n (searchedLocation: string) => searchedLocation\n);\n\nexport const locationDetailsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.locationDetailsParameters,\n (locationDetailsParameters: LocationDetailsParameters) => locationDetailsParameters\n);\n\nexport const isCreatingCustomLocationSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.isCreatingCustomLocation,\n (isCreatingCustomLocation: boolean) => isCreatingCustomLocation\n);\n\nexport const isViewingLocationDetailsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.isViewingLocationDetails,\n (isViewingLocationDetails: boolean) => isViewingLocationDetails\n);\n\nexport const shouldShowEndOfReportScreenSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.shouldShowEndOfReportScreen,\n (shouldShowEndOfReportScreen: boolean) => shouldShowEndOfReportScreen\n);\n\nexport const isRedirectedFromCreateCustomLocationSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.isRedirectedFromCreateCustomLocation,\n (isRedirectedFromCreateCustomLocation: boolean) => isRedirectedFromCreateCustomLocation\n);\n\nexport const drawPolygonTypeSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.drawPolygonType,\n (drawPolygonType: PolygonType) => drawPolygonType\n);\n\nexport const scenarioFormStatesSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.scenarioFormStates,\n (scenarioFormStates: IMobilyticsScenarioFormState[]) => scenarioFormStates\n);\n\nexport const mobilyticsSearchedLocationNameSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.searchedLocationName,\n (searchedLocationName: string) => searchedLocationName,\n);\n\nexport const mobilyticsSearchedLocationIndexSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.searchedLocationIndex,\n (searchedLocationIndex: number) => searchedLocationIndex,\n);\n\nexport const mostRecentlySubmittedMobilyticsReportSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.mostRecentlySubmittedReport,\n (report: IGCPBigQueryJob[]) => report,\n);\n\nexport const nearbyLocationsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.nearbyLocations,\n (locations: ISafegraphLocation[]) => locations,\n);\n\nexport const similarLocationsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.similarLocations,\n (locations: ISafegraphLocation[]) => locations,\n);\n\nexport const selectedSafegraphLocationSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.selectedSafegraphLocation,\n (location: ISafegraphLocation) => location,\n);\n\nexport const firstScenarioSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.scenarioFormStates,\n (scenarioFormStates: IMobilyticsScenarioFormState[]) => scenarioFormStates[0]\n);\n\nexport const createCustomLocationParametersSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.createCustomLocationParameters,\n (createCustomLocationParameters: CreateCustomLocationParameters) => createCustomLocationParameters\n);\n\nexport const isLoadingLocationsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReducer.isLoadingLocations,\n (isLoading: boolean) => isLoading\n);","export * from \"./ILogin\";\nexport * from \"./ILoginUserData\";\nexport * from \"./ILinkObject\";\nexport * from \"./IMapMarker\";\nexport * from \"./ITableView\";\nexport * from \"./IMapMarker\";\n","export enum RetailMatchGeographyOption {\n CensusRegion = 3, // USA\n DMA = 6,\n State = 7,\n Region = 9, // Canada\n National = 100,\n}\n","import * as React from \"react\";\n\nimport { Spin, Layout } from \"antd\";\n\nimport \"./Loading.css\";\nimport { topNavHeightPx } from \"../../../View/Products/Constants/StyleConstants\";\n\ninterface ILoadingProps {\n title?: string;\n style?: React.CSSProperties;\n}\n\nexport const Loading: React.FunctionComponent = (props) => {\n return (\n
\n
\n {props.title && (\n
\n {props.title}\n
\n )}\n \n
\n
\n );\n};\n\ninterface IComponentLoadingProps {\n title: string;\n}\n\nexport const ComponentLoading: React.FunctionComponent\n = (props: IComponentLoadingProps) => {\n return (\n \n \n
\n \n
\n
\n \n );\n };\n","import Axios, { AxiosError, AxiosResponse, Method, ResponseType } from \"axios\";\n\nexport const authorizedAxios = (\n requestType: Method,\n requestUrl: string,\n requestParams?: {},\n data?: {},\n responseType?: ResponseType\n): Promise => {\n return new Promise((resolve, reject) => {\n getBearerToken()\n .then((bearerToken: string) => {\n Axios({\n method: requestType,\n url: requestUrl,\n data: data,\n headers: { Authorization: \"Bearer \" + bearerToken },\n params: requestParams,\n responseType: responseType || \"json\",\n })\n .then((response: AxiosResponse) => {\n resolve(response.data);\n })\n .catch((requestError: AxiosError) => {\n if (requestError.response?.status === 401) {\n (window as any).scout.actions.showSessionExpiredAlert();\n }\n reject(requestError);\n });\n })\n .catch((tokenError: AxiosError) => {\n reject(tokenError);\n });\n });\n};\n\nexport const getBearerToken = (): Promise => {\n return new Promise((resolve, reject) => {\n Axios.get(`/Token/AccessToken`)\n .then(\n (response: AxiosResponse) => {\n resolve(response.data.data);\n },\n (error: AxiosError) => {\n if (error.response?.status === 401) {\n (window as any).scout.actions.showSessionExpiredAlert();\n }\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n reject(error.message);\n });\n });\n};\n","import { AnalysisSource } from \"../Enums/AnalysisSource\";\nimport { AnalysisStatus } from \"../Enums/AnalysisStatus\";\nimport { IReportType } from \"./IReportType\";\n\nexport interface IAnalysisItem {\n id: number;\n jobId: string;\n createdByUserId: number;\n cid: number;\n startDateTime: Date;\n endDateTime: Date;\n createdDateTime: Date;\n source: AnalysisSource;\n studyAreaCount: number;\n status: AnalysisStatus;\n name: string;\n type: IReportType;\n}\n","export interface IMapMarker {\n id: string;\n lat: number;\n lng: number;\n icon: string;\n isSelected: boolean;\n loading: boolean;\n height: number;\n width: number;\n /** GB - this will allow us to also have a really custom\n * info window in addition to just a simple string\n */\n infoWindowContent: JSX.Element | string;\n infoWindowOpen: boolean;\n name: string;\n isCustomMarker: boolean;\n brandId: string;\n latlng: google.maps.LatLng;\n}\n\nexport class MapMarker implements IMapMarker {\n constructor(\n id: string,\n lat: number,\n lng: number,\n icon: string,\n isSelected: boolean,\n loading: boolean,\n height: number,\n width: number,\n infoWindowContent: JSX.Element | string,\n infoWindowOpen: boolean,\n name: string,\n isCustomMarker = true,\n brandId: string = null,\n ) {\n this.id = id;\n this.lat = lat;\n this.lng = lng;\n this.icon = icon;\n this.isSelected = isSelected;\n this.loading = loading;\n this.height = height;\n this.width = width;\n this.infoWindowContent = infoWindowContent;\n this.infoWindowOpen = infoWindowOpen;\n this.name = name;\n this.isCustomMarker = isCustomMarker;\n this.brandId = brandId;\n this.latlng = new google.maps.LatLng(lat, lng);\n }\n //TODO: GB - make get / set methods on this instead of making everything public\n public id = \"\";\n public lat = 0;\n public lng = 0;\n public icon = \"\";\n public isSelected = false;\n public loading = false;\n //TODO: GB - need a \"smart\" default height / width\n public height = 0;\n public width = 0;\n public infoWindowContent: null | string | JSX.Element = null;\n public infoWindowOpen = false;\n public name = \"\";\n public isCustomMarker = true;\n public brandId = null;\n public latlng = null;\n}\n","import { NotificationType } from \"../Enums/NotificationType\";\n\nexport interface INotification {\n id: number;\n /**\n * GB:\n *\n * A string because some links will be strings. It would be impossible to make this a number\n * and make it work for all use cases.\n */\n linkId: string;\n notificationType: NotificationType;\n title: string;\n description: string;\n createdDate: Date;\n modifiedDate: Date;\n isRead: boolean;\n isActive: boolean;\n}\n\nexport class Notification implements INotification {\n public id = 0;\n public linkId = \"\";\n public notificationType: NotificationType = null;\n public title = \"\";\n public description = \"\";\n public createdDate: Date = new Date();\n public modifiedDate: Date = new Date();\n public isRead = false;\n public isActive = true;\n}","export const deviceWidth = {\n mobile: 376,\n mobileM: 481,\n mobileL: 551,\n tablet: 769,\n tabletL: 991,\n tabletXl: 1024,\n desktop: 1081,\n};\n\nexport const sizeConstants = {\n containerMaxWidth: 1300,\n mobileLRContainerPadding: 15,\n};\n\nexport const device = {\n mobile: `@media (min-width: ${deviceWidth.mobile}px)`,\n mobileM: `@media (min-width: ${deviceWidth.mobileM}px)`,\n mobileL: `@media (min-width: ${deviceWidth.mobileL}px)`,\n tablet: `@media (min-width: ${deviceWidth.tablet}px)`,\n tabletL: `@media (min-width: ${deviceWidth.tabletL}px)`,\n upToDesktop: `@media (max-width: ${deviceWidth.desktop}px)`,\n upToTabletL: `@media (max-width: ${deviceWidth.tabletL}px)`,\n upToTabletXl: `@media (max-width: ${deviceWidth.tabletXl}px)`,\n desktop: `@media (min-width: ${deviceWidth.desktop}px)`,\n containerMaxWidth: `@media (min-width: ${\n sizeConstants.containerMaxWidth + sizeConstants.mobileLRContainerPadding * 2\n }px)`,\n};\n","export const colorOne = \"#000000\"; // black\nexport const colorTwo = \"#1c816b\"; // green\nexport const colorThree = \"#B01D1D\"; // Red\nexport const colorFour = \"#828ff1\"; // lavender\nexport const colorFive = \"#efbf55\"; // yellow\nexport const colorSix = \"#9383b8\"; // darker lavender\nexport const colorSeven = \"#df8c55\"; // orange\nexport const colorEight = \"#95c9d5\"; // mint?\nexport const colorNine = \"#2e3d49\"; //charcoal?\nexport const colorTen = \"#e4e4e4\";\n\nexport const colorOneLight = `${colorOne}10`; // black\nexport const colorTwoLight = `${colorTwo}20`; // green\nexport const colorThreeLight = `${colorThree}99`; // Slightly lighter red\nexport const colorThreeVeryLight = `${colorThree}10`; // Very light red\nexport const colorFourLight = \"#7A9EFA10\"; // light lavendar\nexport const colorFiveLight = `${colorFive}20`; // lightest yellow\nexport const colorSixLight = `${colorSix}20`;\nexport const colorSevenLight = `${colorSeven}20`; // orange\nexport const colorEightLight = \"#ecf2f5\"; // light mint?\n\nexport const secondaryColorFive = \"#ffe3a8\"; // lighter yellow\nexport const secondaryColorSix = \"#403658\"; // darker darker lavender\nexport const secondaryColorSeven = \"#FFBB8E\";\nexport const secondaryColorEight = \"#95c9d5\"; // darker mint?\n\nexport const colorTwoBright = \"#1ce180\"; //new bright green\nexport const colorTwoDark = \"#2b8b49\"; //new dark green\n\nexport const altGrayTextColor = \"#2c2c2c\";\nexport const hoverLinkBlue = \"#0091ff\";\nexport const lightBorderGray = \"#e4e4e4\";\nexport const activePsychSort = \"#2e3d49\";\nexport const activeSortDirection = \"#1ce180\";\nexport const inactiveSortDirection = \"#b4b4b4\";\nexport const anotherLightGray = \"#f5f5f5\";\n\nexport const CustomerBreakoutColors: {\n P: string;\n S: string;\n T: string;\n N: string;\n} = {\n P: \"#fd504d\",\n S: \"#5e73ff\",\n T: \"#c4c4c4\",\n N: \"#c4c4c4\",\n};\n","import { createSelector } from \"reselect\";\nimport { getPolygonCentroid } from \"../../Components/Common/SharedActions\";\nimport { MapStyleEnum } from \"../../Enums/GPSMapEnum\";\nimport { IBrandCategory } from \"../../Models/IBrandCategory\";\nimport { IBuxtonDeck } from \"../../Models/IBuxtonDeck\";\nimport { IMapMarker } from \"../../Models/IMapMarker\";\nimport { IRootReducer } from \"../../Models/IRootReducer\";\nimport {\n IChartTAAData,\n IFrequentlyVisitedPlace,\n IGCPBigQueryJob,\n IGPSBenchmarkCommonData,\n IGPSData,\n IMobileInsightsMapData,\n IPolygon,\n ISegment,\n IUser\n} from \"../../Models/Models\";\nimport { polygonsAreIdentical } from \"../../Util/MobilyticsUtil\";\n\nexport const gpsCurrentJobDataSelector = (state: IRootReducer): IGPSData[] =>\n state.mobilyticsReportOutput.data;\n\nexport const gpsCurrentJobPolygonSelector = (state: IRootReducer): IPolygon[] =>\n state.mobilyticsReportOutput.polygon;\n\nconst gpsCurrentBenchmarkCommonDataSelector = (\n state: IRootReducer\n): IGPSBenchmarkCommonData => state.mobilyticsReportOutput.benchmarkCommonData;\n\nconst getIsGpsInsightModalVisible = (state: IRootReducer): boolean =>\n state.mobilyticsReportOutput.isGpsInsightModalVisible;\n\nconst getGoogleMap = (state: IRootReducer): google.maps.Map =>\n state.reportMap.googleMap;\n\nconst getMapZoom = (state: IRootReducer): number => state.reportMap.mapZoom;\n\nconst getCurrentAnchorWindow = (state: IRootReducer): google.maps.InfoWindow =>\n state.reportMap.currentAnchorWindow;\n\nconst getBuxtonDeck = (state: IRootReducer): IBuxtonDeck =>\n state.reportMap.buxtonDeck;\n\nconst getMapStyleOptions = (state: IRootReducer): MapStyleEnum =>\n state.reportMap.mapStyleOptions;\n\ninterface GpsReportMapSelector {\n googleMap: google.maps.Map;\n mapZoom: number;\n currentAnchorWindow: google.maps.InfoWindow;\n buxtonDeck: IBuxtonDeck;\n mapStyleOptions: MapStyleEnum;\n}\n\nexport const gpsReportMapSelector = createSelector(\n [\n getGoogleMap,\n getMapZoom,\n getCurrentAnchorWindow,\n getBuxtonDeck,\n getMapStyleOptions,\n ],\n (\n googleMap,\n mapZoom,\n currentAnchorWindow,\n buxtonDeck,\n mapStyleOptions\n ): GpsReportMapSelector => ({\n googleMap,\n mapZoom,\n currentAnchorWindow,\n buxtonDeck,\n mapStyleOptions,\n })\n);\n\nexport const gpsTAAData = createSelector(\n [gpsCurrentJobDataSelector],\n (gpsData: IGPSData[]): IChartTAAData[][] =>\n gpsData\n .filter((v: IGPSData) => v.tradeAreaAnalysis !== null)\n .map((t) => t.tradeAreaAnalysis)\n);\n\nexport const gpsConditionalOutputsSelector = createSelector(\n [gpsCurrentJobDataSelector, gpsCurrentJobPolygonSelector],\n (\n gpsData,\n polygon\n ): {\n hasFvpData: boolean;\n hasVisitorLoyaltyData: boolean;\n hasTradeAreaAnalysis: boolean;\n } => {\n const hasFvpData\n = gpsData\n && gpsData.filter((p) => p.frequentlyVisitedPlaces.length > 0).length > 0;\n const hasVisitorLoyaltyData\n = polygon && polygon.length === 2 && !polygonsAreIdentical(polygon);\n const hasTradeAreaAnalysis\n = gpsData\n && gpsData.filter((v: IGPSData) => v.tradeAreaAnalysis !== null).length > 0;\n\n return {\n hasFvpData,\n hasVisitorLoyaltyData,\n hasTradeAreaAnalysis,\n };\n }\n);\n\nexport const gpsInsightForReportView = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.selectedGpsInsightForReportView,\n (selectedGpsInsightForReportView: IGCPBigQueryJob[]) =>\n selectedGpsInsightForReportView\n);\n\nexport const gpsPolygonNames = createSelector(\n [gpsInsightForReportView],\n (selectedGpsInsightForReportView: IGCPBigQueryJob[]) =>\n selectedGpsInsightForReportView.map((j) => j.jobPolygon.name)\n);\n\nexport const gpsUserSelector = createSelector(\n (state: IRootReducer) => state.user.user,\n (user: IUser) => user\n);\n\nexport const gpsMosaicSegmentsSelector = createSelector(\n (state: IRootReducer) => state.matchReportOutput.mosaicSegments,\n (segments: ISegment[]) => segments\n);\n\nexport const gpsLoadingSaveToScoutSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.loadingSaveToScout,\n (loadingSaveToScout: boolean) => loadingSaveToScout\n);\n\nexport const gpsJobsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.jobs,\n (jobs: IGCPBigQueryJob[]) => jobs\n);\n\nexport const gpsLoadingJobsSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.loadingJobs,\n (loading: boolean) => loading\n);\n\nexport const gpsRunningInsights = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.runningInsights,\n (gpsRunningInsights: string[]) => gpsRunningInsights\n);\n\nexport const gpsFinishedInsights = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.finishedInsights,\n (gpsFinishedInsights: string[]) => gpsFinishedInsights\n);\n\nexport const gpsShowVisitorBehaviors = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.showVisitorBehaviorsComponent,\n (showVisitorBehaviorsComponent: boolean) => showVisitorBehaviorsComponent\n);\n\nexport const gpsCategoriesSelector = createSelector(\n (state: IRootReducer) => state.matchReportOutput.categories,\n (categories: IBrandCategory[]) => categories\n);\n\nexport const gpsCategoriesLoadingSelector = createSelector(\n (state: IRootReducer) => state.matchReportOutput.loadingCategories,\n (loadingCategories: boolean) => loadingCategories\n);\n\nexport const gpsFVPMarkersSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.fvpMapMarkers,\n (fvpMapMarkers: IMapMarker[]) => fvpMapMarkers\n);\n\nexport const gpsFVPSelectedFVPSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.selectedFVP,\n (selectedFVP: IFrequentlyVisitedPlace) => selectedFVP\n);\n\nexport const gpsPrintReadySelector = createSelector(\n (state: IRootReducer) => state.reportMap.buxtonDeck,\n (buxtonDeck: IBuxtonDeck) => (buxtonDeck ? true : false)\n);\n\nexport const gpsCurrentBenchmarkIndex = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.selectedGpsInsightJobs,\n (state: IRootReducer) => state.mobilyticsReportOutput.currentBenchmarkJobId,\n (\n selectedGpsInsightJobs: IGCPBigQueryJob[],\n currentBenchmarkJobId: string\n ) => {\n let index = selectedGpsInsightJobs.findIndex(\n (j) => j.jobId === currentBenchmarkJobId\n );\n if (index === -1) {\n index = 0;\n }\n return index;\n }\n);\n\nexport const gpsCurrentBenchmarkPolygon = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.selectedGpsInsightJobs,\n gpsCurrentBenchmarkIndex,\n (jobs: IGCPBigQueryJob[], currentBenchmarkIndex: number) =>\n jobs && jobs.length > currentBenchmarkIndex\n ? jobs[currentBenchmarkIndex].jobPolygon\n : null\n);\n\nexport const gpsCurrentBenchmarkPolygonCentroid = createSelector(\n gpsCurrentBenchmarkPolygon,\n (polygon: IPolygon) => {\n return getPolygonCentroid(polygon.linearRings[0]);\n }\n);\n\nexport const gpsBenchmarkItems = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.selectedGpsInsightJobs,\n (state: IRootReducer) => state.mobilyticsReportOutput.currentBenchmarkJobId,\n (selectedGpsInsightJobs: IGCPBigQueryJob[], currentBenchmarkJobId: string) =>\n selectedGpsInsightJobs.map((j) => ({\n jobId: j.jobId,\n name: j.jobPolygon.name,\n isSelected: j.jobId === currentBenchmarkJobId,\n }))\n);\n\nexport const filterStoreData = (\n data: IMobileInsightsMapData[],\n isHome: boolean\n) => {\n if (data) {\n if (isHome) {\n return data.filter((point) => point.homeLongitude !== 0);\n } else {\n return data.filter((point) => point.workLongitude !== 0);\n }\n } else {\n return data;\n }\n};\n\nexport const getGpsReportDataSelector = createSelector(\n [\n gpsCurrentJobDataSelector,\n gpsInsightForReportView,\n gpsCurrentBenchmarkCommonDataSelector,\n getIsGpsInsightModalVisible,\n gpsCurrentJobPolygonSelector,\n gpsCurrentBenchmarkPolygon,\n gpsBenchmarkItems,\n ],\n (\n currentJobData,\n selectedInsight,\n benchmarkCommonData,\n isGpsInsightModalVisible,\n polygons,\n currentBenchmarkPolygon,\n benchmarkItems\n ) => ({\n currentJobData,\n selectedInsight,\n benchmarkCommonData,\n isGpsInsightModalVisible,\n polygons,\n currentBenchmarkPolygon,\n benchmarkItems,\n })\n);\n\ninterface FrequentlyVisitedPlacesStore {\n jobs: IGCPBigQueryJob[];\n loadingJobs: boolean;\n categories: IBrandCategory[];\n loadingCategories: boolean;\n mapMarkers: IMapMarker[];\n selectedFVP: IFrequentlyVisitedPlace | null;\n}\n\nexport const gpsFVPDataSelector = createSelector(\n [\n gpsInsightForReportView,\n gpsLoadingJobsSelector,\n gpsCategoriesSelector,\n gpsCategoriesLoadingSelector,\n gpsFVPMarkersSelector,\n gpsFVPSelectedFVPSelector,\n ],\n (\n jobs,\n loadingJobs,\n categories,\n loadingCategories,\n mapMarkers,\n selectedFVP\n ): FrequentlyVisitedPlacesStore => ({\n jobs,\n loadingJobs,\n categories,\n loadingCategories,\n mapMarkers,\n selectedFVP,\n })\n);\n\ninterface VisitorBehaviorsSelector {\n fvpData: IFrequentlyVisitedPlace[][];\n showVisitorBehaviors: boolean;\n polygons: IPolygon[];\n}\n\nexport const gpsVisitorBehaviorsContainerSelector = createSelector(\n [\n gpsCurrentJobDataSelector,\n gpsShowVisitorBehaviors,\n gpsCurrentJobPolygonSelector,\n ],\n (data, showVisitorBehaviors, polygons): VisitorBehaviorsSelector => ({\n fvpData: data\n .filter((p: IGPSData) => p.frequentlyVisitedPlaces.length > 0)\n .map((t) => t.frequentlyVisitedPlaces),\n showVisitorBehaviors,\n polygons,\n })\n);\n\nexport const loadingMobilyticsReportSelector = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.loadingReport,\n (loadingReport: boolean) => loadingReport\n);","import * as types from \"../Types/MobilyticsActionTypes\";\nimport { IGCPBigQueryJob } from \"../../../Models/IGCPBigQueryJob\";\nimport { ISubmitMobilyticsJobRequest } from \"../../../Models/Requests/ISubmitMobilyticsJobRequest\";\nimport { PolygonType } from \"../Models/Maps/Enums/PolygonType\";\nimport { IPolygon } from \"../Models/Maps/IPolygon\";\nimport { IMobilyticsScenarioFormState } from \"../Pages/Apps/Mobilytics/SubmitMobilyticsLogic\";\nimport { ISafegraphLocation } from \"../../../Models/ISafegraphLocation\";\n\nexport const setCustomReportTitle = (customTitle: string): types.SetCustomReportTitle => ({\n type: types.SET_CUSTOM_REPORT_TITLE,\n data: customTitle\n});\n\nexport const setIsLoading = (\n loading: boolean\n): types.SetLoadingMobilyticsReportAction => ({\n type: types.SET_LOADING_MOBILYTICS_REPORT,\n data: loading,\n});\n\nexport const setSearchedMobilyticsPlace = (\n placeId: string,\n name: string,\n): types.SetSearchedPlaceMobilyticsAction => ({\n type: types.SET_SEARCHED_PLACE_MOBILYTICS_ACTION,\n data: {\n name,\n placeId,\n lat: -1,\n lng: -1,\n address: null,\n points: [],\n },\n});\n\nexport const setMostRecentlySubmittedMobilyticsReport = (\n report: IGCPBigQueryJob[],\n): types.SetMostRecentlySubmittedMobilyticsReportAction => ({\n type: types.SET_MOST_RECENTLY_SUBMITTED_MOBILYTICS_REPORT,\n data: report\n});\n\nexport const removeSearchedMobilyticsPlace = (): types.RemoveSearchedPlaceMoblyitcsAction => ({\n type: types.REMOVE_SEARCHED_PLACE_MOBILYTICS_ACTION\n});\n\nexport const removePolygon = (id: string): types.RemovePolygonAction => ({\n type: types.REMOVE_POLYGON_ACTION,\n data: id\n});\n\nexport const submitMobilyticsReportInitiate = (\n request: ISubmitMobilyticsJobRequest\n): types.SubmitMobilyticsReportInitiateAction => ({\n type: types.SUBMIT_MOBILYTICS_REPORT_INITIATE,\n data: request,\n});\n\nexport const submitMobilyticsReportSuccess = (report: IGCPBigQueryJob[]): types.SubmitMobilyticsReportSuccessAction => ({\n type: types.SUBMIT_MOBILYTICS_REPORT_SUCCESS,\n data: report,\n});\n\nexport const submitMobilyticsReportFailure = (\n message: string\n): types.SubmitMobilyticsReportFailureAction => ({\n type: types.SUBMIT_MOBILYTICS_REPORT_FAILURE,\n data: message,\n});\n\nexport const setIsCreatingCustomLocation = (\n isCreating: boolean\n): types.SetIsCreatingCustomLocationAction => ({\n type: types.SET_IS_CREATING_CUSTOM_LOCATION_ACTION,\n data: isCreating\n});\n\nexport const setIsViewingLocationDetails = (\n isViewing: boolean\n): types.SetIsViewingLocationDetailsAction => ({\n type: types.SET_IS_VIEWING_LOCATION_DETAILS,\n data: isViewing\n});\n\nexport const setIsRedirectedFromCreateCustomLocation = (\n isRedirected: boolean\n): types.SetIsCreatingCustomLocationAction => ({\n type: types.SET_IS_REDIRECTED_FROM_CREATE_CUSTOM_LOCATION,\n data: isRedirected\n});\n\nexport const setCreateCustomLocationParameters = (\n data: types.CreateCustomLocationParameters\n): types.SetCreateCustomLocationParametersAction => ({\n type: types.SET_CREATE_CUSTOM_LOCATION_PARAMETERS_ACTION,\n data\n});\n\nexport const setLocationDetails = (\n data: types.LocationDetailsParameters\n): types.SetLocationDetailsAction => ({\n type: types.SET_LOCATION_DETAILS_ACTION,\n data\n});\n\nexport const onCustomLocationSelected = (\n data: types.PlaceParameters\n): types.OnCustomLocationSelectedAction => ({\n type: types.ON_CUSTOM_LOCATION_SELECTED_ACTION,\n data\n});\n\nexport const onLocationSelectedForAnalysis = (\n data: types.PlaceParameters\n): types.OnCustomLocationSelectedAction => ({\n type: types.ON_LOCATION_SELECTED_FOR_ANALYSIS_ACTION,\n data\n});\n\nexport const setIsDrawingPolygon = (isDrawingPolygon: boolean): types.SetIsDrawingPolygonAction => ({\n type: types.SET_IS_DRAWING_POLYGON,\n data: isDrawingPolygon,\n});\n\nexport const setDrawPolygonType = (polygonType: PolygonType): types.SetDrawPolygonAction => ({\n type: types.SET_DRAW_POLYGON_TYPE,\n data: polygonType,\n});\n\nexport const setSavedPolygons = (polygons: IPolygon[]): types.SetSavedPolygonsAction => ({\n type: types.SET_SAVED_POLYGONS,\n data: polygons,\n});\n\nexport const setInProcessPolygon = (polygon: IPolygon): types.SetInProcessPolygonAction => ({\n type: types.SET_IN_PROCESS_POLYGON,\n data: polygon,\n});\n\nexport const setScenarioFormStates = (scenarios: IMobilyticsScenarioFormState[]): types.SetMobilyticsScenariosAction => ({\n type: types.SET_MOBILYTICS_SCENARIOS,\n data: scenarios,\n});\n\nexport const setShouldShowEndOfReportScreen = (shouldShowEndOfReport: boolean): types.SetShouldShowEndOfReportScreenAction => ({\n type: types.SET_SHOULD_SHOW_END_OF_REPORT_SCREEN_ACTION,\n data: shouldShowEndOfReport,\n});\n\nexport const getNearbyLocations = (): types.GetNearbyLocationsAction => ({\n type: types.GET_NEARBY_LOCATIONS_ACTION\n});\n\nexport const getSimilarLocations = (): types.GetSimilarLocationsAction => ({\n type: types.GET_SIMILAR_LOCATIONS_ACTION\n});\n\nexport const setNearbyLocations = (locations: ISafegraphLocation[]): types.SetNearbyLocationsAction => ({\n type: types.SET_NEARBY_LOCATIONS_ACTION,\n data: locations,\n});\n\nexport const setSimilarLocations = (locations: ISafegraphLocation[]): types.SetSimilarLocationsAction => ({\n type: types.SET_SIMILAR_LOCATIONS_ACTION,\n data: locations,\n});\n\nexport const setSelectedSafegraphLocation = (location: ISafegraphLocation): types.SetSelectedSafegraphLocationAction => ({\n type: types.SET_SELECTED_SAFEGRAPH_LOCATION_ACTION,\n data: location,\n});\n\nexport const setIsSearchingForNewLocation = (isSearchingForNewLocation: boolean): types.SetIsSearchingForNewLocationAction => ({\n type: types.SET_IS_SEARCHING_FOR_NEW_LOCATION_ACTION,\n data: isSearchingForNewLocation,\n});\n\nexport const startMobilyticsFromSameMatchLocation = (formState: IMobilyticsScenarioFormState): types.StartMobilyticsFromSameMatchLocation => ({\n type: types.START_MOBILYTICS_FROM_SAME_MATCH_LOCATION,\n data: formState,\n});\n\nexport const setIsLoadingLocations = (isLoading: boolean): types.SetIsLoadingLocationsAction => ({\n type: types.SET_IS_LOADING_LOCATIONS,\n data: isLoading\n});","export { default as DeleteOutline } from \"@ant-design/icons/lib/outline/DeleteOutline\";\n\nexport { default as WarningOutline } from \"@ant-design/icons/lib/outline/WarningOutline\";\n\nexport { default as CloseOutline } from \"@ant-design/icons/lib/outline/CloseOutline\";\n\nexport { default as PlusCircleOutline } from \"@ant-design/icons/lib/outline/PlusCircleOutline\";\n\nexport { default as FolderOutline } from \"@ant-design/icons/lib/outline/FolderOutline\";\n\nexport { default as FolderOpenOutline } from \"@ant-design/icons/lib/outline/FolderOpenOutline\";\n\nexport { default as DownOutline } from \"@ant-design/icons/lib/outline/DownOutline\";\n\nexport { default as EditOutline } from \"@ant-design/icons/lib/outline/EditOutline\";\n\nexport { default as EllipsisOutline } from \"@ant-design/icons/lib/outline/EllipsisOutline\";\n\nexport { default as InboxOutline } from \"@ant-design/icons/lib/outline/InboxOutline\";\n\nexport { default as CheckOutline } from \"@ant-design/icons/lib/outline/CheckOutline\";\n\nexport { default as ArrowLeftOutline } from \"@ant-design/icons/lib/outline/ArrowLeftOutline\";\n\nexport { default as ArrowRightOutline } from \"@ant-design/icons/lib/outline/ArrowRightOutline\";\n\nexport { default as LoadingOutline } from \"@ant-design/icons/lib/outline/LoadingOutline\";\n\nexport { default as QuestionCircleOutline } from \"@ant-design/icons/lib/outline/QuestionCircleOutline\";\n\nexport { default as PlusOutline } from \"@ant-design/icons/lib/outline/PlusOutline\";\n\nexport { default as LeftOutline } from \"@ant-design/icons/lib/outline/LeftOutline\";\n\nexport { default as RightOutline } from \"@ant-design/icons/lib/outline/RightOutline\";\n\nexport { default as CaretUpFill } from \"@ant-design/icons/lib/fill/CaretUpFill\";\n\nexport { default as CaretDownFill } from \"@ant-design/icons/lib/fill/CaretDownFill\";\n\nexport { default as EyeOutline } from \"@ant-design/icons/lib/outline/EyeOutline\";\n\nexport { default as FilterFill } from \"@ant-design/icons/lib/fill/FilterFill\";\n\nexport { default as CloseCircleFill } from \"@ant-design/icons/lib/fill/CloseCircleFill\";\n\nexport { default as CalendarOutline } from \"@ant-design/icons/lib/outline/CalendarOutline\";\n\nexport { default as PhoneOutline } from \"@ant-design/icons/lib/outline/PhoneOutline\";\n\nexport { default as CloseCircleTwoTone } from \"@ant-design/icons/lib/twotone/CloseCircleTwoTone\";\n\nexport { default as MenuOutline } from \"@ant-design/icons/lib/outline/MenuOutline\";\n\n/** notifications */\nexport { default as CloseCircleOutline } from \"@ant-design/icons/lib/outline/CloseCircleOutline\";\nexport { default as ExclamationCircleOutline } from \"@ant-design/icons/lib/outline/ExclamationCircleOutline\";\nexport { default as InfoCircleOutline } from \"@ant-design/icons/lib/outline/InfoCircleOutline\";\nexport { default as CheckCircleOutline } from \"@ant-design/icons/lib/outline/CheckCircleOutline\";\nexport { default as BellOutline } from \"@ant-design/icons/lib/outline/BellOutline\";\nexport { default as MoreOutline } from \"@ant-design/icons/lib/outline/MoreOutline\";\nexport { default as SettingOutline } from \"@ant-design/icons/lib/outline/SettingOutline\";\n","import moment, { Moment } from \"moment\";\nimport { IPolygon } from \"../../../Models/Maps/IPolygon\";\n\nexport type ReportRange = [Date, Date];\nexport const datePickerFormat = \"MM-DD-YYYY\";\nexport const timePickerFormat = \"h:mm A\";\nexport const earliestReportYearValue = 2019;\nexport const daysAgoDataBegins = 2;\nexport const limitMilesOptions = [\"Greater than\", \"Less than\"];\n\nexport const isMobilyticsPlace = (bucketType: number) => {\n return (\n bucketType\n === (window as any).scout.models.DataBucketTypeEnum.MOBILYTICS_PLACE\n || bucketType\n === (window as any).scout.models.DataBucketTypeEnum.MOBILYTICS_PLACE_GEOFENCE\n );\n};\n\nexport interface IMobilyticsScenarioFormState {\n id: string;\n title: string;\n startDateTime: Date;\n endDateTime: Date;\n allDayChecked: boolean;\n mileLimitChecked: boolean;\n milesLessGreater: string;\n miles: number;\n polygon: IPolygon;\n isCustomPolygon: boolean;\n address?: string;\n brandId?: string;\n lat?: number;\n lng?: number;\n locationId?: string;\n placeId: string;\n}\n\nexport interface IMobilyticsScenarioFormProps\n extends IMobilyticsScenarioFormState {\n index: number;\n loading: boolean;\n fillColorHex: string;\n fillOpacity: number;\n canDuplicate: boolean;\n multipleScenarios?: boolean;\n logo: string;\n updateDates: (\n scenarioIndex: number,\n dates: [Moment, Moment],\n dateStrings: [string, string]\n ) => void;\n updateStartTime: (\n scenarioIndex: number,\n time: Moment,\n timeString: string\n ) => void;\n updateEndTime: (\n scenarioIndex: number,\n time: Moment,\n timeString: string\n ) => void;\n toggleAllDayChecked: (scenarioIndex: number) => void;\n toggleMileLimitChecked: (scenarioIndex: number) => void;\n onLessGreaterChange: (scenarioIndex: number, value: string) => void;\n onMilesChange: (\n scenarioIndex: number,\n value: string\n ) => void;\n onDuplicateClick: (index: number) => void;\n onRemoveClick: (index: number) => void;\n onEditTitleSubmit: (index: number, title: string) => void;\n}\n\nexport enum TabSelection {\n Browse = \"Browse\",\n Selected = \"Selected\",\n}\n\nexport enum HouseholdsFilter {\n LessThan = \"Less than\",\n MoreThan = \"More than\",\n}\n\nexport enum ReportTime {\n Start,\n End,\n}\n\nconst removeTime = (date: Date) => {\n const newDate = new Date(date);\n newDate.setHours(0);\n newDate.setMinutes(0);\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n\n return newDate;\n};\n\nexport const minDate = () => {\n let from = new Date();\n from.setFullYear(earliestReportYearValue);\n from.setMonth(0);\n from.setDate(1);\n from = removeTime(from);\n\n return from;\n};\n\nexport const maxDate = () => {\n return moment()\n .subtract(daysAgoDataBegins, 'days')\n .hours(17)\n .minutes(0)\n .seconds(0)\n .toDate();\n};\n\nconst defaultStartDate = () => {\n return moment(maxDate())\n .subtract(1, 'years')\n .hours(8)\n .toDate();\n};\n\nconst defaultEndDate = () => {\n return maxDate();\n};\n\nexport const initialDateValues = (): ReportRange => {\n const from = defaultStartDate();\n const to = defaultEndDate();\n\n return [from, to];\n};\n\nexport const defaultScenarioFormState: IMobilyticsScenarioFormState = {\n id: \"\",\n title: \"Default Title\",\n startDateTime: initialDateValues()[0],\n endDateTime: initialDateValues()[1],\n allDayChecked: true,\n mileLimitChecked: false,\n milesLessGreater: \"GREATER\",\n miles: 30,\n polygon: null,\n isCustomPolygon: false,\n placeId: null\n};\n\nexport const getDisabledDates = (value: moment.Moment) => {\n const min = minDate();\n const max = maxDate();\n const valueNoTime = removeTime(value.toDate());\n\n return valueNoTime < min || valueNoTime > max;\n};\n\nexport const getReportNameErrorMessage = (name: string) => {\n let msg = \"\";\n if (!name || name.length === 0) {\n msg = \"Report Name cannot be empty\";\n }\n return msg;\n};\n\nexport const getReportDatesErrorMessage = (values: ReportRange) => {\n if (!values) {\n return \"Date range cannot be blank.\";\n } else if (values[0].getFullYear() < earliestReportYearValue) {\n return `From Date cannot be less than year ${earliestReportYearValue}.`;\n } else if (values[1] > new Date()) {\n return \"To Date cannot be in the future.\";\n } else {\n return \"\";\n }\n};\n\nexport const getReportTimesErrorMessage = (dates: ReportRange): string => {\n if (dates[0] === null) {\n return \"Start time cannot be blank.\";\n } else if (dates[1] === null) {\n return \"End time cannot be blank.\";\n } else {\n return \"\";\n }\n};\n\nexport const isDateDisabled = (date: Moment): boolean => {\n return date < moment(minDate()) || date > moment(maxDate());\n}\n\nexport const buildDateTime = (date: Moment, time: Moment) => {\n const tempDate = moment(date);\n return tempDate\n .hours(time.hour())\n .minutes(time.minute())\n .seconds(time.second())\n .toDate();\n};\n","import { Address } from \"./IAddress\";\nimport {\n IAddress,\n IFile,\n IOtherInformation,\n IStoreHours,\n IStoreSales,\n IStoreWorkflow,\n} from \"./Models\";\nimport { IStoreType, StoreType } from \"./IStoreType\";\nimport { IGeocodeResponse } from \"./IGeocodeResponse\";\n\nexport interface IStore {\n displayLabel: string;\n lid: number;\n storeTypeID: number;\n storeNumber: string;\n storeName: string;\n openDate: string;\n closeDate: any;\n ssid: number;\n iconPath: string;\n actualSales: number;\n actualVolume: number;\n squareFeet: number;\n tradeAreaOverall: number;\n tradeAreaType: string;\n website: string;\n phone: string;\n fax: string;\n email: string;\n targetSales: number;\n employeeCount: number;\n managerCount: number;\n salesMargin: number;\n readonly modifiedDate: Date;\n readonly modifiedDateString: string;\n workflow: IStoreWorkflow;\n readonly googlePlaceID: string;\n readonly bingPlaceID: string;\n comments: string;\n proformaSales: number;\n regionCode: any;\n budsCurrent: number;\n buds: number;\n budsLabel: string;\n createdByUserID: number;\n hours: IStoreHours;\n image: string;\n otherInformation: Array /* List */;\n sales: Array /* List */;\n files: Array /* List */;\n forecastValue: number;\n forecastComments: string;\n forecastDate: Date;\n serverVerified: boolean;\n totalUniqueHouseholds: number;\n totalHouseholdSpend: number;\n id: number;\n uniqueID: string;\n name: string;\n isActive: boolean;\n type: string;\n readonly cid: number;\n latitude: number;\n longitude: number;\n displayValue: number | null /* nullable */;\n address: IAddress;\n typeID: number;\n model?: any;\n formattedAddress: string;\n storeType: IStoreType;\n geocodeResult: IGeocodeResponse;\n}\n\nexport class Store implements IStore {\n public id = 0;\n public cid = 0;\n public lid = 0;\n public uniqueID = null;\n public name = \"\";\n public comments = \"\";\n public storeTypeID = 0;\n public typeID: 0;\n public forecastDate = new Date();\n public serverVerified = null;\n public totalUniqueHouseholds = 0;\n public totalHouseholdSpend = 0;\n public storeNumber = \"\";\n public isActive = true;\n public forecastComments = \"\";\n public openDate = null;\n public storeName = \"\";\n public forecastValue = 0;\n public closeDate = null;\n public ssid = 0;\n public actualSales = 0;\n public actualVolume = 0;\n public address: IAddress = new Address();\n public address1 = \"\";\n public address2 = \"\";\n public address3 = \"\";\n public city = \"\";\n public state = \"\";\n public zip = \"\";\n public zip4 = \"\";\n public country = \"\";\n public regionCode = null;\n public budsCurrent = null;\n public squareFeet = 0;\n public tradeAreaOverall = null;\n public tradeAreaType = null;\n public latitude = 0;\n public longitude = 0;\n public website = null;\n public phone = null;\n public fax = null;\n public email = null;\n public targetSales = 0;\n public employeeCount = 0;\n public managerCount = 0;\n public sales = [];\n public salesMargin = 0;\n public modifiedDate = new Date();\n public modifiedDateString = \"\";\n public workflow = null;\n public dataset = null;\n public googlePlaceID = \"\";\n public bingPlaceID = \"\";\n public commments = null;\n public image = null;\n public iconPath: \"\";\n public proformaSales = 0;\n public hours = null;\n public otherInformation = [];\n public displayLabel = \"\";\n public displayValue = null;\n public files = [];\n public formattedAddress = \"\";\n public storeType = new StoreType();\n public friendlyOpenDate = \"\";\n public orderIndex = 0;\n public model = null;\n public type = \"Store\";\n public buds = null;\n public budsLabel = \"\";\n public createdByUserID = null;\n public geocodeResult = null;\n}\n","import { forceCopyProperties } from \"@amcharts/amcharts4/.internal/core/utils/Object\";\nimport { BrandMap } from \"../../../../Models/BrandMap\";\nimport { CategoryMap } from \"../../../../Models/CategoryMap\";\nimport { IBrandCategory } from \"../../../../Models/IBrandCategory\";\nimport {\n IChartMergedDatapoint,\n IChartCompare,\n IChartGenericDatapoint,\n IStoreScoreRecord,\n IProfileRecord,\n IGPSChartMergedDatapoint,\n IBrand,\n} from \"../../../../Models/Models\";\nimport { createGenericIcon } from \"../../../../Components/Common/GenericIcon/GenericIcon.Helpers\";\nimport Moment from \"moment\";\n\nexport const mergeRetailMatchData = (\n data: IChartCompare\n): IChartMergedDatapoint[] => {\n return (data.selection1 as IChartGenericDatapoint[])?.map(\n (item: IChartGenericDatapoint, i: number) => {\n return {\n id: item.id,\n nationalWeight: data.national\n ? data.national.find(\n (nat: IChartGenericDatapoint) => nat.id === item.id\n )?.weight\n : null,\n selection1PrimaryWeight: item.weight,\n selection2PrimaryWeight: data.selection2\n ? (data.selection2 as IChartGenericDatapoint[]).find(\n (selection2: IChartGenericDatapoint) => selection2.id === item.id\n )?.weight\n : null,\n };\n }\n );\n};\n\nexport const mergeSegRetailMatchData = (\n data: IChartCompare\n): IChartMergedDatapoint[] => {\n return (data.selection1 as IProfileRecord[]).map(\n (item: IProfileRecord, i: number) => {\n return {\n id: item.seg,\n selection1PrimaryWeight: item.pct,\n };\n }\n );\n};\n\nexport const mergeWeeklyData = (\n data: IChartCompare\n): IChartMergedDatapoint[] => {\n const selectionOne: IGPSChartMergedDatapoint[]\n = (data.selection1 as Array)?.length > 0\n ? Array.from(data.selection1 as Array)\n : [];\n\n const selectionTwo: IGPSChartMergedDatapoint[]\n = (data.selection2 as Array)?.length > 0\n ? Array.from(data.selection2 as Array)\n : [];\n\n const nationalDataMap: Map\n = (data.selection2 as Array)?.length > 0\n ? new Map(Array.from(data.national, (n) => [n.id, n.weight]))\n : new Map();\n\n const dataMap: Map = new Map();\n\n for (const selection of selectionOne) {\n const { id, visitWeight, visitorWeight, weight } = selection;\n dataMap.set(selection.id, {\n id: selection.id,\n nationalWeight: nationalDataMap.has(id) ? nationalDataMap.get(id) : 0,\n selection1PrimaryWeight: visitorWeight\n ? visitorWeight\n : weight\n ? weight\n : 0,\n selection1SecondaryWeight: visitWeight ? visitWeight : 0,\n selection2PrimaryWeight: 0,\n selection2SecondaryWeight: 0,\n });\n }\n\n if (selectionTwo?.length > 0) {\n for (const selection of selectionTwo) {\n const { id, visitWeight, visitorWeight, weight } = selection;\n\n const s = dataMap.get(selection.id);\n const selection2PrimaryWeight = visitorWeight\n ? visitorWeight\n : weight\n ? weight\n : 0;\n const selection2SecondaryWeight = visitWeight;\n\n if (s) {\n s.selection2PrimaryWeight\n = selection2PrimaryWeight >= 0 ? selection2PrimaryWeight : 0;\n s.selection2SecondaryWeight\n = selection2SecondaryWeight >= 0 ? selection2SecondaryWeight : 0;\n } else {\n dataMap.set(id, {\n id: id,\n nationalWeight: nationalDataMap.has(id) ? nationalDataMap.get(id) : 0,\n selection1PrimaryWeight: 0,\n selection1SecondaryWeight: 0,\n selection2PrimaryWeight:\n selection2PrimaryWeight >= 0 ? selection2PrimaryWeight : 0,\n selection2SecondaryWeight:\n selection2SecondaryWeight >= 0 ? selection2SecondaryWeight : 0,\n });\n }\n }\n }\n\n const arrayifiedDataMap = Array.from(dataMap.values());\n\n /* BUG 14789 */\n return arrayifiedDataMap.sort((a: IChartMergedDatapoint, b: IChartMergedDatapoint) => {\n const firstDate = a.id;// a.id, b.id example: \"2020-01-27T00:00:00\"\n const secondDate = b.id;\n\n return Moment(firstDate).diff(Moment(secondDate));// Moment.diff(Moment) returns the difference in milliseconds\n });\n};\n\nexport const mergeGPSData = (data: IChartCompare): IChartMergedDatapoint[] => {\n const formattedData: IChartMergedDatapoint[] = [];\n const selectionOne = Array.from(\n data.selection1 as Array\n );\n const selectionTwoMap: Map = new Map();\n\n (data.selection2 as Array)?.forEach((s) =>\n selectionTwoMap.set(s.id, s)\n );\n\n for (const selection of selectionOne) {\n const selection2Obj: IGPSChartMergedDatapoint = selectionTwoMap.get(\n selection.id\n );\n let selection2PrimaryWeight = 0;\n let selection2SecondaryWeight = 0;\n\n if (selection2Obj) {\n selection2PrimaryWeight = selection2Obj.visitorWeight\n ? selection2Obj.visitorWeight\n : selection2Obj.weight;\n selection2SecondaryWeight = selection2Obj.visitWeight;\n }\n\n formattedData.push({\n id: selection.id,\n nationalWeight: data.national\n ? data.national.find((nat) => nat.id === selection.id).weight\n : null,\n selection1PrimaryWeight: selection.visitorWeight\n ? selection.visitorWeight\n : selection.weight,\n selection1SecondaryWeight: selection.visitWeight,\n selection2PrimaryWeight: selection2PrimaryWeight,\n selection2SecondaryWeight: selection2SecondaryWeight,\n });\n }\n return formattedData;\n};\n\nexport const reverseGeocode = (\n lat: number,\n lng: number\n): Promise => {\n const geocoder: google.maps.Geocoder = new google.maps.Geocoder();\n\n return new Promise((resolve, reject) => {\n geocoder.geocode(\n { location: { lat, lng } },\n (results: google.maps.GeocoderResult[]) => {\n if (results && results[0]) {\n resolve(results);\n } else {\n reject();\n }\n }\n );\n });\n};\n\nexport const getBenchmarkShortAddress = async (\n benchmark: IStoreScoreRecord\n): Promise => {\n const { lat, lon: lng }: IStoreScoreRecord = benchmark;\n const geocoder: google.maps.Geocoder = new google.maps.Geocoder();\n\n return new Promise((resolve, reject) => {\n reverseGeocode(lat, lng)\n .then((results) => {\n const shortAddress: string = formatShortAddressFromGeocoder(results);\n resolve(shortAddress);\n })\n .catch((error) => {\n reject();\n });\n });\n};\n\nexport const getBenchmarkLongAddress = (\n benchmark: IStoreScoreRecord\n): Promise => {\n const { lat, lon: lng }: IStoreScoreRecord = benchmark;\n const geocoder: google.maps.Geocoder = new google.maps.Geocoder();\n\n return new Promise((resolve, reject) => {\n reverseGeocode(lat, lng)\n .then((results) => {\n const longAddress = formatLongAddressFromGeocoder(results);\n resolve(longAddress);\n })\n .catch((error) => {\n reject();\n });\n });\n};\n\nconst getAddressComponentOfType = (\n addressComponents: google.maps.GeocoderAddressComponent[],\n type: string\n): google.maps.GeocoderAddressComponent => {\n return addressComponents.find((c) => {\n return c.types.find((t) => t === type);\n });\n};\n\nexport const formatShortAddressFromGeocoder = (\n results: google.maps.GeocoderResult[]\n): string => {\n const addressComponents: google.maps.GeocoderAddressComponent[]\n = results[0].address_components;\n\n const streetNumberComponent = getAddressComponentOfType(\n addressComponents,\n \"street_number\"\n );\n const streetNameComponent = getAddressComponentOfType(\n addressComponents,\n \"route\"\n );\n\n return addressComponents\n ? `${\n streetNumberComponent?.long_name\n } ${streetNameComponent?.long_name.toUpperCase()}`\n : \"\";\n};\n\nexport const formatLongAddressFromGeocoder = (\n results: google.maps.GeocoderResult[]\n): string => {\n const addressComponents: google.maps.GeocoderAddressComponent[]\n = results[0].address_components;\n\n const streetNumberComponent = getAddressComponentOfType(\n addressComponents,\n \"street_number\"\n );\n const streetNameComponent = getAddressComponentOfType(\n addressComponents,\n \"route\"\n );\n const cityComponent = getAddressComponentOfType(\n addressComponents,\n \"locality\"\n );\n const stateComponent = getAddressComponentOfType(\n addressComponents,\n \"administrative_area_level_1\"\n );\n const zipcodeComponent = getAddressComponentOfType(\n addressComponents,\n \"postal_code\"\n );\n\n return addressComponents\n ? `${streetNumberComponent?.long_name} ${streetNameComponent?.long_name}, ${cityComponent?.long_name}, ${stateComponent?.long_name} ${zipcodeComponent?.long_name}`\n : \"\";\n};\n\nexport const getCityFromGeocoder = (\n results: google.maps.GeocoderResult[]\n): string => {\n const addr: google.maps.GeocoderAddressComponent[]\n = results[0].address_components;\n const probableCityComponent = addr.find((component) => {\n const isCity = component.types.indexOf(\"locality\") > -1;\n return isCity;\n });\n\n return probableCityComponent?.long_name || null;\n};\n\nexport function formatLongAddressFromRecord(record: IStoreScoreRecord): string {\n const addr: string = record && record.addr;\n const { city, st, zip } = record;\n\n return addr ? `${addr}, ${city}, ${st} ${zip}` : \"\";\n}\n\n/**\n * Converts the first letter of each word in a string with spaces to an uppercase.\n * @param string\n */\nexport const titleCase = (string: string): string => {\n if (!string) {\n return \"\";\n }\n const splitStr = string.toLowerCase().split(\" \");\n\n const substringStartsWithPeriod = (substring: string): boolean =>\n substring.charCodeAt(0) == 46;\n\n for (let i = 0; i < splitStr.length; i++) {\n // You do not need to check if i is larger than splitStr length, as your for does that for you\n // Assign it back to the array\n const first = splitStr[i].charAt(0).toUpperCase();\n let sub = splitStr[i].substring(1);\n\n if (substringStartsWithPeriod(sub)) {\n sub = sub.charAt(0) + sub.charAt(1).toUpperCase() + sub.substring(2);\n }\n\n splitStr[i] = first + sub;\n }\n // Directly return the joined string\n return splitStr.join(\" \");\n};\n\nexport const testImageOnloadAsync = (src: string): Promise => {\n const imagePromise: Promise = new Promise((resolve) => {\n if (!src || src === \"\") {\n resolve(false);\n } else {\n const testImage = new Image();\n\n testImage.addEventListener(\"load\", () => {\n resolve(true);\n });\n\n testImage.addEventListener(\"error\", () => {\n resolve(false);\n });\n\n testImage.src = src;\n }\n });\n\n return imagePromise;\n};\n\nexport const isClearbitLogoPath = (path: string): boolean => {\n return path.includes('clearbit');\n};\n\nexport const getValidLogoPath = async (originalPath: string, brandName: string): Promise => {\n let transformedPath: string;\n const validSrc = await testImageOnloadAsync(originalPath);\n if (!validSrc) {\n transformedPath = await createGenericIcon(brandName);\n } else {\n transformedPath = originalPath;\n }\n return transformedPath;\n};\n\nexport const generateMobilyticsPlaceLogo = (\n logoPath: string\n): Promise => {\n return new Promise((resolveURL: (path: string) => void) => {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n\n canvas.width = 60;\n canvas.height = 60;\n\n const logoOnload = () => {\n return new Promise((resolveLogo: (loaded: boolean) => void) => {\n const logo = new Image();\n logo.crossOrigin = \"anonymous\";\n logo.src = logoPath;\n\n logo.addEventListener(\"load\", function () {\n context.drawImage(logo, 11, 11, 38, 38);\n resolveLogo(true);\n });\n\n logo.addEventListener(\"error\", () => {\n resolveLogo(false);\n });\n });\n };\n\n logoOnload().then(() => {\n const poly = new Image();\n\n poly.src = \"/Images/NEW_UI/left_nav/buxton_data/Polygon_Icon.svg\";\n\n poly.addEventListener(\"load\", function () {\n context.drawImage(poly, 32, 0);\n\n resolveURL(canvas.toDataURL());\n });\n });\n });\n};\n\nexport const createBrandMap = (brands: IBrand[], mapKey: string): BrandMap => {\n const brandMap: BrandMap = new Map();\n\n for (const brand of brands) {\n if (!brandMap.has(brand[mapKey])) {\n const b = new Map();\n\n brandMap.set(brand[mapKey], b.set(brand.brandName, brand));\n } else {\n brandMap.get(brand[mapKey]).set(brand.brandName, brand);\n }\n }\n\n return brandMap;\n};\n\nexport const createCategoryMap = (\n categories: IBrandCategory[],\n brandMap: BrandMap,\n mapKey: string\n): CategoryMap => {\n const categoryMap: CategoryMap = new Map();\n\n for (const category of categories) {\n if (!categoryMap.get(category[mapKey])) {\n categoryMap.set(category[mapKey], {\n categoryName: category.categoryName,\n subCategories: [],\n });\n\n if (brandMap.has(category.naicsCode)) {\n categoryMap.get(category[mapKey]).subCategories.push({\n categoryName: category.subcategoryName,\n naicsCode: category.naicsCode,\n brands: brandMap.get(category.naicsCode),\n });\n }\n } else if (brandMap.has(category.naicsCode)) {\n categoryMap.get(category[mapKey]).subCategories.push({\n categoryName: category.subcategoryName,\n naicsCode: category.naicsCode,\n brands: brandMap.get(category.naicsCode),\n });\n }\n }\n\n //if there are no brands on the category (because there were no matching brands in the map) add them manually\n\n return categoryMap;\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport booleanIntersects from '@turf/boolean-intersects';\nimport * as turf from '@turf/turf';\nimport memoize from \"memoizee\";\nimport { v4 as uuid } from \"uuid\";\nimport { parse } from \"wkt\";\n\nimport { ILatLon } from \"../../../Models/ILatLon\";\nimport { IPointBase } from '../../../Models/IPoint';\nimport { badPolygon, goodPolygon } from \"../Constants/StyleConstants\";\nimport { PolygonType } from \"../Models/Maps/Enums/PolygonType\";\nimport { ICircle } from \"../Models/Maps/ICircle\";\nimport { ICustomPolygon } from \"../Models/Maps/ICustomPolygon\";\nimport { IPolygon } from \"../Models/Maps/IPolygon\";\nimport { IPolygonColors } from \"../Models/Maps/IPolygonColors\";\nimport { IRectangle } from \"../Models/Maps/IRectangle\";\nimport booleanWithin from '@turf/boolean-within';\n\nexport const MOBILYTICS_MAX_DEFAULT_CIRCLE_RADIUS = 200_000;\nexport const MOBILYTICS_MAX_DEFAULT_RECTANGLE_LAT_LON_DIFF = 3;\n\nexport const SQ_METERS_PER_SQ_MILE = 2_589_975.2356;\nexport const MOBILYTICS_MAX_POLYGON_AREA_SQ_MILES = 3;\nexport const MOBILYTICS_MAX_POLYGON_AREA_SQ_METERS = MOBILYTICS_MAX_POLYGON_AREA_SQ_MILES * SQ_METERS_PER_SQ_MILE;\n\nexport const getPolygonType = (polygon: IPolygon): PolygonType => {\n\n const tryCustom = polygon as ICustomPolygon;\n if (tryCustom?.points) {\n return PolygonType.Custom;\n }\n\n const tryCircle = polygon as ICircle;\n if (tryCircle?.center) {\n return PolygonType.Circle;\n }\n\n const tryRectangle = polygon as IRectangle;\n if (tryRectangle?.northeast) {\n return PolygonType.Rectangle;\n }\n\n return PolygonType.Unknown;\n};\n\nexport const convertToChildType = (polygon: IPolygon): T => {\n return polygon as T;\n};\n\nexport const googleLatLngsAreEqual = (c1: google.maps.LatLng, c2: google.maps.LatLng): boolean => {\n return c1 && c2 && c1?.lat() === c2?.lat() && c1?.lng() === c2?.lng();\n};\n\nexport const circlesAreEqual = (c1: ICircle, c2: ICircle): boolean => {\n return (\n c1\n\t\t&& c2\n\t\t&& c1?.radiusMeters === c2?.radiusMeters\n\t\t&& googleLatLngsAreEqual(c1?.center, c2?.center)\n );\n};\n\nexport const rectanglesAreEqual = (r1: IRectangle, r2: IRectangle): boolean => {\n return (\n r1\n\t\t&& r2\n\t\t&& googleLatLngsAreEqual(r1?.northeast, r2?.northeast)\n\t\t&& googleLatLngsAreEqual(r1?.southwest, r2?.southwest)\n );\n};\n\nexport const customPolygonsAreEqual = (p1: ICustomPolygon, p2: ICustomPolygon): boolean => {\n if (!p1 || !p2 || p1?.points?.length !== p1?.points?.length) {\n return false;\n }\n\n for (let i = 0; i < p1.points.length; i++) {\n if (!googleLatLngsAreEqual(p1.points[i], p2.points[i])) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const polygonsAreEqual = (type: PolygonType, p1: IPolygon, p2: IPolygon): boolean => {\n switch (type) {\n case PolygonType.Rectangle: {\n const r1 = p1 as IRectangle;\n const r2 = p2 as IRectangle;\n return rectanglesAreEqual(r1, r2);\n }\n case PolygonType.Circle: {\n const c1 = p1 as ICircle;\n const c2 = p2 as ICircle;\n return circlesAreEqual(c1, c2);\n }\n case PolygonType.Custom: {\n const poly1 = p1 as ICustomPolygon;\n const poly2 = p2 as ICustomPolygon;\n return customPolygonsAreEqual(poly1, poly2);\n }\n default:\n return false;\n }\n};\n\nexport const getDefaultCircleRadiusByZoom = (zoom: number): number => {\n //BJ - This formula pretty closely matches what I manually determined to be reasonable sizes at each zoom level\n return Math.min(5 * Math.pow(2, 22 - (zoom + 6)), MOBILYTICS_MAX_DEFAULT_CIRCLE_RADIUS);\n};\n\nexport const getDefaultRectangleLatLonDiffByZoom = (zoom: number): number => {\n //BJ - This formula pretty closely matches what I manually determined to be reasonable sizes at each zoom level\n return Math.min(3.05176E-05 * Math.pow(2, 22 - (zoom + 6)), MOBILYTICS_MAX_DEFAULT_RECTANGLE_LAT_LON_DIFF);\n};\n\nexport const defaultPolygon = (\n type: PolygonType,\n mapCenter: google.maps.LatLng,\n zoom: number\n): ICircle | IRectangle | ICustomPolygon => {\n const guid = uuid();\n\n const polygonBase: IPolygon = {\n polygonType: type,\n id: guid,\n name: guid,\n borderColor: \"black\",\n borderSize: 2,\n isSelected: true,\n };\n const latLonDiff: number = getDefaultRectangleLatLonDiffByZoom(zoom);\n\n switch (type) {\n case PolygonType.Rectangle: {\n const rectangle: IRectangle = {\n ...polygonBase,\n northeast: new google.maps.LatLng(mapCenter.lat() - latLonDiff, mapCenter.lng() + latLonDiff),\n southwest: new google.maps.LatLng(mapCenter.lat() + latLonDiff, mapCenter.lng() - latLonDiff),\n };\n return rectangle;\n }\n case PolygonType.Circle: {\n const circle: ICircle = {\n ...polygonBase,\n center: new google.maps.LatLng(mapCenter.lat(), mapCenter.lng()),\n radiusMeters: getDefaultCircleRadiusByZoom(zoom),\n };\n return circle;\n }\n case PolygonType.Custom: {\n const points = [\n new google.maps.LatLng(mapCenter.lat() + latLonDiff, mapCenter.lng()),\n new google.maps.LatLng(mapCenter.lat() - latLonDiff, mapCenter.lng() - latLonDiff),\n new google.maps.LatLng(mapCenter.lat() - latLonDiff, mapCenter.lng() + latLonDiff),\n new google.maps.LatLng(mapCenter.lat() + latLonDiff, mapCenter.lng()),\n ];\n const custom: ICustomPolygon = {\n ...polygonBase,\n points,\n };\n return custom;\n }\n }\n};\n\nexport const polygonToPoints = (polygon: IPolygon):ILatLon[] => {\n switch (getPolygonType(polygon)) {\n case PolygonType.Circle: {\n const circle = polygon as ICircle;\n return circleToPoints(circle);\n }\n case PolygonType.Rectangle: {\n const rectangle = polygon as IRectangle;\n return rectangleToPoints(rectangle);\n }\n case PolygonType.Custom: {\n const poly = polygon as ICustomPolygon;\n return customPolygonToPoints(poly);\n }\n default: {\n console.error(\"Invalid polygon type\");\n return [];\n }\n }\n};\n\nexport const customPolygonToPoints = (polygon: ICustomPolygon): ILatLon[] => {\n if (polygon?.points) {\n const points = polygon.points.map((point: google.maps.LatLng) => {\n const ll: ILatLon = {\n latitude: point.lat(),\n longitude: point.lng()\n };\n\n return ll;\n });\n\n return closePointArrayPolygon(points);\n }\n\n return [];\n};\n\nexport const rectangleToPoints = (rectangle: IRectangle): ILatLon[] => {\n if (rectangle?.northeast && rectangle?.southwest) {\n\n const ne: ILatLon = {\n latitude: rectangle.northeast.lat(),\n longitude: rectangle.northeast.lng()\n };\n const sw: ILatLon = {\n latitude: rectangle.southwest.lat(),\n longitude: rectangle.southwest.lng()\n };\n const se: ILatLon = {\n latitude: sw.latitude,\n longitude: ne.longitude\n };\n const nw: ILatLon = {\n latitude: ne.latitude,\n longitude: sw.longitude\n };\n\n return [\n ne,\n se,\n sw,\n nw,\n ne\n ];\n }\n\n return [];\n};\n\nexport const circleToPoints = (circle: ICircle): ILatLon[] => {\n if (circle?.center && circle?.radiusMeters > 0) {\n const center = [circle.center.lng(), circle.center.lat()];\n const centerPoint = turf.point(center);\n const radiusKM = circle.radiusMeters / 1000;\n const steps = 32;\n const polygon = turf.circle(centerPoint, radiusKM, steps, \"kilometers\");\n\n return polygon.geometry.coordinates[0].map((coordinate) => {\n const point: ILatLon = {\n latitude: coordinate[1],\n longitude: coordinate[0],\n };\n\n return point;\n });\n }\n\n return [];\n};\n\nexport const pointsToPolygon = (points: ILatLon[]) => {\n const turfCoords: number[][] = points.map((point) => {\n return [point.longitude, point.latitude];\n });\n\n const poly = turf.polygon([turfCoords]);\n return poly;\n};\n\nexport const areaFromPoints = (points: ILatLon[]): number => {\n if (points?.length < 4) {\n return 0;\n }\n\n const poly = pointsToPolygon(points);\n return turf.area(poly);\n};\n\nexport const polygonTooBig = (polygon: IPolygon): boolean => {\n return polygonArea(polygon) > MOBILYTICS_MAX_POLYGON_AREA_SQ_METERS;\n};\n\nexport const polygonArea = (polygon: IPolygon): number => {\n let points: ILatLon[];\n\n switch (polygon.polygonType) {\n case PolygonType.Rectangle: {\n const rectangle = convertToChildType(polygon);\n points = rectangleToPoints(rectangle);\n break;\n }\n case PolygonType.Circle: {\n const circle = convertToChildType(polygon);\n points = circleToPoints(circle);\n break;\n }\n case PolygonType.Custom: {\n const poly = convertToChildType(polygon);\n points = customPolygonToPoints(poly);\n break;\n }\n default: {\n points = [];\n }\n }\n\n return areaFromPoints(points);\n};\n\nexport const getPolygonColors = (polygon: IPolygon): IPolygonColors => {\n return polygonTooBig(polygon) || polygonSelfIntersects(polygon)\n ? { ...badPolygon }\n : { ...goodPolygon };\n};\n\nexport const closePointArrayPolygon = (points: ILatLon[]): ILatLon[] => {\n\n const pointsCopy: ILatLon[] = [...points];\n const lastIndex: number = pointsCopy.length - 1;\n\n if (pointsCopy[0].latitude !== pointsCopy[lastIndex].latitude\n || pointsCopy[0].longitude !== pointsCopy[lastIndex].longitude) {\n const firstPointCopy = {...pointsCopy[0]};\n pointsCopy.push(firstPointCopy);\n }\n\n return pointsCopy;\n};\n\nexport const circleFromQueryParams = (latitude: number, longitude: number, radius: number): ICircle => {\n const guid = uuid();\n return {\n polygonType: PolygonType.Circle,\n id: guid,\n name: guid,\n isSelected: false,\n borderColor: \"#FFFFFF\",\n borderSize: 1,\n center: new google.maps.LatLng(latitude, longitude),\n radiusMeters: radius\n };\n};\n\nexport const customPolygonFromPoints = (points: IPointBase[], isSgPolygon?: boolean): ICustomPolygon => {\n const finalPoints: google.maps.LatLng[] = points.map((point: IPointBase) => {\n return new google.maps.LatLng(point.y, point.x);\n });\n\n const guid = uuid();\n\n return {\n polygonType: PolygonType.Custom,\n id: guid,\n name: guid,\n isSelected: false,\n borderColor: \"#FFFFFF\",\n borderSize: 1,\n points: finalPoints,\n isSgPolygon,\n };\n};\n\nexport const getCentroid = (polygon: IPolygon): google.maps.LatLng => {\n let points: ILatLon[] = [];\n switch (getPolygonType(polygon)) {\n case PolygonType.Circle: {\n const circle = polygon as ICircle;\n return circle.center;\n }\n case PolygonType.Rectangle: {\n const rectangle = polygon as IRectangle;\n points = rectangleToPoints(rectangle);\n break;\n }\n case PolygonType.Custom:{\n const custom = polygon as ICustomPolygon;\n points = customPolygonToPoints(custom);\n break;\n }\n default: {\n console.error(\"Invalid polygon type\");\n }\n }\n\n return getCentroidFromPoints(points);\n};\n\nexport const getCentroidFromPoints = (points: ILatLon[]): google.maps.LatLng => {\n\n const turfPoints: number[][] = points.map((point) => {\n return [point.longitude, point.latitude];\n });\n\n const polygon = turf.polygon([turfPoints]);\n const centroid = turf.centroid(polygon);\n const lat: number = centroid.geometry.coordinates[1];\n const lon: number = centroid.geometry.coordinates[0];\n\n return new google.maps.LatLng(lat, lon);\n};\n\nexport const polygonSelfIntersects = (polygon: IPolygon): boolean => {\n\n const points: ILatLon[] = polygonToPoints(polygon);\n const turfPoints: number[][] = points.map((point) => {\n return [point.longitude, point.latitude];\n });\n const turfPolygon = turf.polygon([turfPoints]);\n const kinks = turf.kinks(turfPolygon);\n\n return kinks.features.length > 0;\n};\n\n/** NOTE: GB\n * Everything below this line is a port from \"scout.logic.polygonlogic.js\".\n *\n * I've left the functions mostly unchanged, minus a few tweaks to get things to compile here.\n * I'm not sure yet which functions will need to be exported, and which will not, so for\n * now I've left them all as non-exported. This will need some pretty heavy review\n */\n\nconst closeGeoJSONPolygon = (geoJSON) => {\n if (geoJSON.type === \"Polygon\") {\n closeSinglePolygon(geoJSON.coordinates);\n } else if (geoJSON.type === \"MultiPolygon\") {\n closeMultiPolygon(geoJSON.coordinates);\n }\n};\n\nconst closeSinglePolygon = (coordinateWrapperArray) => {\n const coordinates = coordinateWrapperArray[0];\n const firstCoordinate = coordinates[0];\n const lastCoordinate = coordinates[coordinates.length - 1];\n\n if (!(firstCoordinate[0] === lastCoordinate[0] && firstCoordinate[1] === lastCoordinate[1])) {\n const firstCoordinateCopy = [...firstCoordinate];\n coordinates.push(firstCoordinateCopy);\n }\n};\n\nconst closeMultiPolygon = (coordinates):void => {\n for (const polyCoordinates of coordinates) {\n closeSinglePolygon(polyCoordinates);\n }\n};\n\nconst wktToFeatureBase = (wkt: string) => {\n const geo = parse(wkt);\n const feature = turf.feature(geo);\n\n return feature;\n};\n\nexport const wktToFeature = memoize(wktToFeatureBase);\n\nexport const featureIntersectsUserPolygon = (feature: any, userWKT: string): boolean => {\n const userFeature = wktToFeature(userWKT);\n return turf.intersect(feature, userFeature) !== undefined;\n};\n\nexport const polygonIntersectsPolygon = (polygon: IPolygon, wkt: string): boolean => {\n const points = polygonToPoints(polygon);\n const newPolygon = pointsToPolygon(points);\n const userPolygon = wktToFeature(wkt);\n\n const intersect = booleanIntersects(newPolygon, userPolygon);\n return intersect;\n};\n\nexport const polygonCompletelyInsidePolygon = (polygon: IPolygon, wkt: string): boolean => {\n const points = polygonToPoints(polygon);\n const newPolygon = pointsToPolygon(points);\n const userPolygon = wktToFeature(wkt);\n\n const intersect = booleanWithin(newPolygon, userPolygon);\n return intersect;\n};\n\nexport const pointIntersectsPolygon = (lat: number, lon: number, wkt: string): boolean => {\n if (!wkt || wkt.trim() === \"\") {\n return false;\n }\n\n const point = turf.point([lon, lat]);\n const userPolygon = wktToFeature(wkt);\n\n const intersect = booleanPointInPolygon(point, userPolygon);\n return intersect;\n};","export enum PolygonType {\n Unknown,\n\tCircle,\n\tRectangle,\n\tCustom,\n}\n","export enum LinkType {\n Internal,\n External,\n SCOUT,\n MULTI\n};\n\nexport enum LinkSvgType {\n Locked,\n Unlocked,\n Description,\n};\n","export enum VoidGapFiltersEnum {\n Default = 'Default',\n TenantCategory = 'Tenant Category', \n MarketPresenceAndVoid = 'Market Presence and Void',\n SquareFootage = 'Square Footage', \n UnitsAndGrowth = 'Units and Growth'\n}","import styled from \"styled-components\";\nimport { device } from \"../../../../globalStyles/breakpoints\";\n\nimport { getRetailMatchIndexColor } from \"../../../../Util/ColorUtil\";\nimport { lightBorderGray } from \"../../../../globalStyles/colors/scoutColors\";\nimport { getBarWidth } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\n\ninterface RetailMatchCarouselImageProps {\n backgroundImage: string;\n selectedImage?: boolean;\n}\n\nexport const Header = styled(\"div\")`\n display: flex;\n flex-direction: column;\n align-items: center;\n color: #000;\n line-height: 35px;\n margin-bottom: 53px;\n`;\n\nexport const HeaderFocus = styled(\"div\")`\n font-size: 25px;\n font-weight: 800;\n text-align: center;\n`;\n\nexport const HeaderFocusSharing = styled(HeaderFocus)`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n`;\n\nexport const BreakoutContainer = styled(\"div\")`\n display: flex;\n justify-content: space-around;\n color: #000;\n margin: 0 auto 61px;\n max-width: 700px;\n align-items: center;\n\n ${device.desktop} {\n justify-content: space-between;\n }\n`;\n\nexport const BreakoutItem = styled(\"div\")`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const BreakoutVerticalBreak = styled.div`\n border-right: 1px solid ${lightBorderGray};\n width: 1px;\n height: 71px;\n margin: 0 7px;\n`;\n\nexport const BreakoutItemHeader = styled(\"div\")`\n margin-bottom: 8px;\n text-align: center;\n`;\n\nexport const BreakoutItemVerbiage = styled(\"div\")`\n color: ${(props: { value: number }) => getRetailMatchIndexColor(props.value)};\n text-align: center;\n font-size: 28px;\n margin-bottom: 8px;\n max-width: 195px;\n`;\n\nexport const BreakoutItemBarOuter = styled(\"div\")`\n height: 8px;\n width: 130px;\n border-radius: 4px;\n background-color: #ededed;\n`;\n\nexport const BreakoutItemBarInner = styled(\"div\")`\n height: 100%;\n width: ${(props: { value: number }) => getBarWidth(props.value)}%;\n border-radius: inherit;\n background-color: ${(props: { value: number }) =>\n getRetailMatchIndexColor(props.value)};\n`;\n\nexport const RetailMatchIntroBrandLogoWrapper = styled.div`\n background-color: #ffffff;\n border-radius: 50%;\n height: 176px;\n width: 176px;\n`;\n\ninterface RetailMatchIntroBrandLogoProps {\n background: string;\n}\n\nexport const RetailMatchIntroBrandLogo = styled.div`\n background-image: url(${(props: RetailMatchIntroBrandLogoProps) =>\n props.background});\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n margin: 30px auto;\n width: 115px;\n height: 115px;\n`;\n\nexport const RetailMatchShareIntroBrandLogoWrapper = styled.div`\n background-color: #ffffff;\n border-radius: 50%;\n height: 126px;\n width: 126px;\n`;\n\ninterface RetailMatchShareIntroBrandLogoProps {\n background: string;\n}\n\nexport const RetailMatchShareIntroBrandLogo = styled.div`\n background-image: url(${(props: RetailMatchShareIntroBrandLogoProps) =>\n props.background});\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n margin: 20px auto;\n width: 85px;\n height: 85px;\n`;\n\nexport const RetailMatchIntroBrandingContainer = styled.div`\n width: 100%;\n height: 459px;\n border-radius: 4px;\n background-position: 50 % 50 %;\n background-color: #e7e8ed;\n background-size: cover;\n margin-bottom: 26px;\n border: 1px solid #c4c4c4;\n display: flex;\n flex-direction: column;\n justify-content: space - around;\n align-items: center;\n text-align: center;\n padding: 45px;\n > h3 {\n padding: 0px 32px;\n font-size: 33px;\n line-height: 40px;\n display: inline-block;\n max-width: 487px;\n margin-bottom: 0;\n }\n\n ${device.desktop} {\n height: 316px;\n padding: 40px 20px 20px;\n > h3 {\n font-size: 20px;\n line-height: 24px;\n }\n }\n`;\n\nexport const RetailMatchCarouselImage = styled.div`\n height: 99px;\n border-radius: 4px;\n background-image: url(${({\n backgroundImage,\n }: RetailMatchCarouselImageProps) => backgroundImage});\n background-position: 50 % 50 %;\n background-size: cover;\n box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.26);\n opacity: ${({ selectedImage = true }) => (selectedImage ? 1 : 0.3)};\n\n ${device.desktop} {\n height: 68px;\n }\n`;\n\ninterface SiteDetailsContainerProps {\n show: boolean;\n}\n\nexport const SiteDetailsContainer = styled.div`\n display: ${({ show }: SiteDetailsContainerProps) =>\n show ? \"block\" : \"none\"};\n margin-bottom: 36px;\n font-size: 15px;\n word-break: break-word;\n`;\n","import { Dispatch } from \"redux\";\nimport { notification } from \"antd\";\nimport { AxiosError } from \"axios\";\nimport { GPSInsightsAxios } from \"../Contracts/Axios/GPSInsightsAxios\";\nimport {\n IFrequentlyVisitedPlace,\n IGPSGetJobResultParsed,\n IRootReducer,\n} from \"../Models/Models\";\nimport { IBrand, IAnalysisItem } from \"../Models/Models\";\nimport { IGCPBigQueryJob } from \"../Models/IGCPBigQueryJob\";\nimport { GPSInsightsContainerView } from \"../Enums/Enums\";\nimport { setInsightsCollaborating, setReportsDates } from \"./ReportsActions\";\nimport { ISubmitMobilyticsJobRequest } from \"../Models/Requests/ISubmitMobilyticsJobRequest\";\nimport { IGetJobsRequest } from \"../Models/Requests/IGetJobsRequest\";\nimport {\n SET_GPS_INSIGHT_RESULTS,\n RESET_GPS_INSIGHT_RESULTS,\n GET_BRAND_SUCCESS,\n SET_LOADING_BRAND,\n GET_JOBS_SUCCESS,\n SET_LOADING_JOBS,\n ADD_RUNNING_INSIGHT_TO_LIST,\n ADD_FINISHED_INSIGHT_TO_LIST,\n REMOVE_FINISHED_INSIGHT_FROM_RUNNING_INSIGHTS,\n CLEAR_RUNNING_AND_FINISHED_INSIGHTS_LISTS,\n SELECT_GPS_INSIGHT_FOR_REPORT_VIEW,\n SET_CURRENT_GPS_INSIGHT_VIEW,\n CLEAR_FINISHED_INSIGHTS_LISTS,\n DELETE_REPORT_SUCCESS,\n START_GPS_MOBILE_INSIGHTS_REPORT,\n SET_LOADING_GPS_MOBILE_INSIGHTS_REPORT,\n SET_GPS_INSIGHT_MODAL_VISIBLE,\n SET_LOADING_SAVE_TO_SCOUT,\n SAVE_TO_SCOUT_SUCCESS,\n SET_POLYGON_CENTROID,\n SET_MOBILYTICS_SCENARIOS,\n SET_FVP_MARKERS,\n SET_SELECTED_FVP,\n UPDATE_GPS_INSIGHT_JOB,\n PROCESS_JOBS_SUCCESS,\n} from \"./Types\";\nimport { cleanMap } from \"./ReportMapActions\";\nimport { IApiResult } from \"../Models/IApiResult\";\nimport { IMobilyticsScenarioLite } from \"../Models/IMobilyticsScenarioLite\";\nimport { IMapMarker } from \"../Models/IMapMarker\";\nimport { mapGcpJobsToAnalysisItems } from \"../Util/ReportUtil\";\nimport { AnalysisStatus } from \"../Enums/AnalysisStatus\";\nimport { IProcessJobsResult } from \"../Models/IProcessJobsResult\";\nimport { currentAppSelector } from \"../View/Products/Selectors/AppSelectors\";\nimport { App } from \"../View/Products/Enums/App\";\n\nexport const loadGPSInsightsSuccess = (data: IGPSGetJobResultParsed) => ({\n type: SET_GPS_INSIGHT_RESULTS,\n data: data,\n});\n\nconst loadGPSInsightsFailure = () => ({\n type: SET_GPS_INSIGHT_RESULTS,\n data: null,\n});\n\nexport const setPolygonCentroid = (centroid: { x: number; y: number }) => ({\n type: SET_POLYGON_CENTROID,\n data: centroid,\n});\n\nexport const getResults = (jobId: string) => {\n return (dispatch: Dispatch, getState: () => IRootReducer) => {\n dispatch(cleanMap());\n dispatch({ type: RESET_GPS_INSIGHT_RESULTS });\n setCurrentGpsInsightView(GPSInsightsContainerView.Insight);\n checkAndRemoveRunningAndFinishedInsightLists();\n\n const gpsInsightsAxios = new GPSInsightsAxios();\n const promise = gpsInsightsAxios.GetResults(jobId);\n promise\n .then((response: IGPSGetJobResultParsed) => {\n dispatch(loadGPSInsightsSuccess(response));\n\n for (let i = 0; i < response.data.length; i++) {\n const jobId = response.job[i].jobId;\n const numVisitors = response.data[i].mapData.length;\n console.log(`${jobId}: ${numVisitors} visitor records`);\n }\n })\n .catch((error: AxiosError) => {\n notification.open({\n type: \"error\",\n message: `There was a problem while retrieving the requested insight. ${error.message}.`,\n });\n dispatch(loadGPSInsightsFailure);\n })\n .finally(() => {\n dispatch(setLoadingGpsMobileInsightsReport(false));\n });\n };\n};\n\nconst getBrandSuccess = (data: IBrand) => ({\n type: GET_BRAND_SUCCESS,\n data: data,\n});\n\nconst setLoadingBrand = (loading: boolean) => ({\n type: SET_LOADING_BRAND,\n data: loading,\n});\n\nexport const getBrand = (term: string) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBrand(true));\n\n const gpsInsightsAxios = new GPSInsightsAxios();\n gpsInsightsAxios\n .GetBrand(term)\n .then((response: IBrand) => {\n dispatch(getBrandSuccess(response));\n })\n .catch((error: string) => {\n notification.error({\n message: \"Error\",\n description: error,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingBrand(false));\n });\n };\n};\n\nconst getJobsSuccess = (data: IGCPBigQueryJob[]) => ({\n type: GET_JOBS_SUCCESS,\n data: data,\n});\n\nconst processJobs = (data: IGCPBigQueryJob[]) => {\n return (dispatch: Dispatch, getState) => {\n const state = getState();\n const currentApp = currentAppSelector(state);\n const finishedInsightsCopy: string[] = [...state.mobilyticsReportOutput.finishedInsights];\n /** copy of current reports */\n const previousReports: IAnalysisItem[] = [...state.mobilyticsReportOutput.mappedJobs];\n // TODO: GB\n /** Shouldn't have to do this logical OR check.\n * But for some reason the server call is returning a 204 - i.e. no content *\n */\n const incomingReports: IGCPBigQueryJob[] =\n data || [];\n const incomingMappedReports: IAnalysisItem[]\n = mapGcpJobsToAnalysisItems(incomingReports);\n\n // loop over the incoming jobs\n for (const incoming of incomingMappedReports) {\n // incomingMappedReports.forEach((incoming: IAnalysisItem) => {\n // loop over the previous jobs\n // for (const previous of previousReports) {\n const previous = previousReports.find(p => p.id === incoming.id);\n if (previous) {\n // previousReports.forEach((previous: IAnalysisItem) => {\n if (incoming.id === previous.id) {\n // check status changes\n if (\n incoming.status === AnalysisStatus.Complete &&\n previous.status !== AnalysisStatus.Complete\n ) {\n if (!finishedInsightsCopy.includes(incoming.id.toString())) {\n finishedInsightsCopy.push(incoming.id.toString());\n }\n } else if (\n incoming.status === AnalysisStatus.CompleteWithErrors &&\n previous.status !== AnalysisStatus.CompleteWithErrors\n ) {\n if (currentApp !== App.Scout) {\n notification.error({\n message: `${incoming.name} had an error. If you continue to experience problems, please contact SCOUT Support.`,\n duration: null, // user must close\n });\n }\n } else if (\n incoming.status === AnalysisStatus.TooFewRecords &&\n previous.status !== AnalysisStatus.TooFewRecords\n ) {\n if (currentApp !== App.Scout) {\n notification.error({\n message: `${incoming.name} returned too few records. Please increase the polygon size and/or timeframe and try again.`,\n duration: null, // user must close\n });\n }\n }\n }\n }\n }\n\n const jobsSuccessData: IProcessJobsResult = {\n jobs: incomingReports,\n mappedJobs: incomingMappedReports,\n finishedInsights: finishedInsightsCopy,\n };\n dispatch({\n type: PROCESS_JOBS_SUCCESS,\n data: jobsSuccessData\n });\n }\n}\n\nconst setLoadingJobs = (loading: boolean) => ({\n type: SET_LOADING_JOBS,\n data: loading,\n});\n\nexport const getJobs = (isCollaborating: boolean, request: IGetJobsRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBrand(true));\n dispatch(setLoadingJobs(true));\n dispatch(setInsightsCollaborating(isCollaborating));\n dispatch(setReportsDates(request.startDate, request.endDate));\n\n const gpsInsightsAxios = new GPSInsightsAxios();\n\n if (isCollaborating) {\n gpsInsightsAxios\n .GetCompanyJobs(request)\n .then((response: IGCPBigQueryJob[]) => {\n dispatch(getJobsSuccess(response));\n dispatch(processJobs(response));\n })\n .catch((error: string) => {\n notification.error({\n message: \"Error\",\n description: error,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingJobs(false));\n dispatch(setLoadingBrand(false));\n });\n } else {\n gpsInsightsAxios\n .GetUserJobs(request)\n .then((response: IGCPBigQueryJob[]) => {\n dispatch(getJobsSuccess(response));\n dispatch(processJobs(response));\n })\n .catch((error: string) => {\n notification.error({\n message: \"Error\",\n description: error,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingJobs(false));\n dispatch(setLoadingBrand(false));\n });\n }\n };\n};\n\nexport const deleteJob = (jobId: string) => {\n return (dispatch: Dispatch, getState) => {\n dispatch(setLoadingJobs(true));\n\n const gpsInsightsAxios = new GPSInsightsAxios();\n gpsInsightsAxios\n .DeleteJob(jobId)\n .then((response: string) => {\n const job: IGCPBigQueryJob = getState().reports.allReports.find(\n (job: IGCPBigQueryJob) => {\n return job.jobId === response;\n }\n );\n const report: IAnalysisItem = getState().reports.allReports.find(\n (report: IAnalysisItem) => {\n return report.id === job.id;\n }\n );\n dispatch(deleteJobSuccess(report.id));\n setTimeout(function () {\n (window as any).scout.actions.mobilyticsVisitorsReportDeleted(\n job.jobId\n );\n }, 1);\n })\n .catch((error: string) => {\n notification.error({\n message:\n \"Failed to delete report. If you continue to see this message, please contact SCOUT Support.\",\n duration: null,\n });\n })\n .finally(() => {\n dispatch(setLoadingJobs(false));\n });\n };\n};\n\nexport const addRunningInsight = (jobId: string) => {\n return (dispatch: Dispatch, getState) => {\n const runningJobs = getState().gpsInsights.runningInsights;\n runningJobs.push(jobId);\n\n dispatch({\n type: ADD_RUNNING_INSIGHT_TO_LIST,\n data: runningJobs,\n });\n };\n};\n\nexport const addFinishedInsight = (jobId: string) => {\n return (dispatch: Dispatch, getState) => {\n const finishedJobs: string[] = [...getState().gpsInsights.finishedInsights];\n finishedJobs.push(jobId);\n removeFinishedInsightFromRunningInsights(jobId);\n\n dispatch({ type: ADD_FINISHED_INSIGHT_TO_LIST, data: finishedJobs });\n };\n};\n\nexport const removeFinishedInsightFromRunningInsights = (jobId: string) => {\n return (dispatch: Dispatch, getState) => {\n const runningJobs: string[] = [\n ...getState().gpsInsights.runningInsights,\n ].filter((job: string) => job !== jobId);\n\n dispatch({\n type: REMOVE_FINISHED_INSIGHT_FROM_RUNNING_INSIGHTS,\n data: runningJobs,\n });\n };\n};\n\nexport const checkAndRemoveRunningAndFinishedInsightLists = () => {\n return (dispatch: Dispatch, getState) => {\n const finishedInsights = getState().gpsInsights.finishedInsights;\n if (finishedInsights?.length > 0)\n dispatch({ type: CLEAR_RUNNING_AND_FINISHED_INSIGHTS_LISTS });\n };\n};\n\nexport const selectGpsInsightForReportView = (job: IGCPBigQueryJob[]) => {\n return (dispatch: Dispatch) => {\n dispatch({\n type: SELECT_GPS_INSIGHT_FOR_REPORT_VIEW,\n data: job,\n });\n };\n};\n\nexport const setCurrentGpsInsightView = (\n gpsInsightView: GPSInsightsContainerView\n) => {\n return (dispatch: Dispatch) => {\n dispatch({ type: SET_CURRENT_GPS_INSIGHT_VIEW, data: gpsInsightView });\n };\n};\n\nexport const resetGpsInsightResults = () => {\n return (dispatch: Dispatch) => {\n dispatch({ type: RESET_GPS_INSIGHT_RESULTS });\n };\n};\n\nexport const clearFinishedInsights = () => ({\n type: CLEAR_FINISHED_INSIGHTS_LISTS,\n});\n\nconst deleteJobSuccess = (deletedBatchID: number) => ({\n type: DELETE_REPORT_SUCCESS,\n data: deletedBatchID,\n});\n\nexport const startGpsMobileInsightsReport = () => ({\n type: START_GPS_MOBILE_INSIGHTS_REPORT,\n data: null,\n});\n\nexport const setLoadingGpsMobileInsightsReport = (loading: boolean) => ({\n type: SET_LOADING_GPS_MOBILE_INSIGHTS_REPORT,\n data: loading,\n});\n\nexport const setGpsInsightModalVisible = (visible: boolean) => ({\n type: SET_GPS_INSIGHT_MODAL_VISIBLE,\n data: visible,\n});\n\nexport const submitGpsReport = (request: ISubmitMobilyticsJobRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingGpsMobileInsightsReport(true));\n\n const gpsInsightsAxios = new GPSInsightsAxios();\n gpsInsightsAxios\n .SubmitGpsReport(request)\n .then((response: IApiResult) => {\n if (response.success) {\n dispatch(addRunningInsight(response.data.jobId));\n notification.success({\n message: \"Submitted\",\n description: `Your Mobilytics Report is processing now. Check the reports section for status updates.`,\n });\n } else {\n notification.error({\n message: \"Error\",\n description: response.message,\n duration: null, // user must close\n });\n }\n })\n .catch((error: string) => {\n notification.error({\n message: \"Error\",\n description: error,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingGpsMobileInsightsReport(false));\n dispatch(setGpsInsightModalVisible(false));\n (\n window as any\n ).scout.interop.api.mobilyticsSubmission.closeClassicRightNav();\n (\n window as any\n ).scout.interop.api.mobilyticsSubmission.clearGeographyStudyAreas();\n });\n };\n};\n\nexport const setLoadingSaveToScout = (loading: boolean) => ({\n type: SET_LOADING_SAVE_TO_SCOUT,\n data: loading,\n});\n\nexport const saveToScoutSuccess = (jobId: string) => ({\n type: SAVE_TO_SCOUT_SUCCESS,\n data: jobId,\n});\n\nexport const setScenarios = (scenarios: IMobilyticsScenarioLite[]) => ({\n type: SET_MOBILYTICS_SCENARIOS,\n data: scenarios,\n});\n\nexport const saveToScout = (job: IGCPBigQueryJob) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingSaveToScout(true));\n\n const gpsInsightsAxios = new GPSInsightsAxios();\n gpsInsightsAxios\n .SaveToScout(job.jobId)\n .then((response: boolean) => {\n dispatch(saveToScoutSuccess(job.jobId));\n notification.success({\n message: \"Saved\",\n description:\n \"Actual visitors and potential visitors from this Mobilytics analysis are now available to view on the SCOUT map. You can find it in the Mobilytics Visitors section, accessible from the left nav bar.\",\n });\n (window as any).scout.actions.refreshMobilyticsVisitorsList();\n })\n .finally(() => {\n dispatch(setLoadingSaveToScout(false));\n });\n };\n};\n\nexport const updatePolygonName = (jobId: string, newName: string) => {\n return new Promise((resolve, reject) => {\n const gpsInsightsAxios = new GPSInsightsAxios();\n gpsInsightsAxios\n .updatePolygonName(jobId, newName)\n .then((newJob: IGCPBigQueryJob) => {\n resolve(newJob);\n })\n .catch((error) => {\n reject(error);\n });\n });\n};\n\nexport const updateJobTitle = (jobId: string, newReportName: string) => {\n return new Promise((resolve, reject) => {\n const gpsInsightsAxios = new GPSInsightsAxios();\n gpsInsightsAxios\n .updateJobTitle(jobId, newReportName)\n .then((result) => {\n resolve(result);\n })\n .catch((error) => {\n reject(error);\n });\n });\n};\n\nexport const updateMobilyticsJob = (job: IGCPBigQueryJob) => ({\n type: UPDATE_GPS_INSIGHT_JOB,\n data: job,\n});\n\nexport const setFvpMapMarkers = (markers: IMapMarker[]) => ({\n type: SET_FVP_MARKERS,\n data: markers,\n});\n\nexport const setSelectedFVP = (fvp: IFrequentlyVisitedPlace) => ({\n type: SET_SELECTED_FVP,\n data: fvp,\n});","export enum AppView {\n Map,\n Table,\n VoidGap\n}\n","export enum Step {\n SquareFootage = 0,\n BrandOrCategory = 1,\n CompareDistanceOrGeography = 2,\n Time = 3,\n ReportName = 4,\n}\n\nexport enum TabSelection {\n Retail = \"Retail\",\n Healthcare = \"Healthcare\",\n}\n\nexport enum FilterOption {\n Brands = \"Brands\",\n Category = \"Category\",\n}\n\nexport enum CompareOption {\n Neither,\n Closest,\n Geography,\n}\n\nexport enum GeographyOption {\n DMA = \"DMAS\",\n State = \"STATE\",\n CensusRegion = \"REGION\",\n National = \"COUNTRY\"\n}\n\nexport enum ClosestDistanceOption {\n Ten = 10,\n Fifty = 50,\n Hundred = 100,\n}\n","import React from \"react\";\nimport { DigitalShareAppType } from \"../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../Enums/DigitalShareItemType\";\nimport { DigitalShareSectionEnum } from \"../Enums/DigitalShareSectionEnum\";\nimport {\n createDigitalShareItem,\n IDigitalShareItem,\n} from \"../Models/IDigitalShareItem\";\nimport GPSInsightsDigitalShareTemplate from \"../Components/Apps/GPSInsights/DigitalShare/Templates/GPSInsightsDigitalShareTemplate\";\n\nimport RetailMatchDigitalShareTemplate from \"../Components/Apps/RetailMatch/DigitalShare/Templates/RetailMatchDigitalShareTemplate\";\nimport html2canvas from \"html2canvas\";\nimport { RenderType } from \"../Enums/RenderType\";\nimport { featureFlags } from \"../Common/CurrentFeatureFlags\";\n\nexport const HH_ATTR_STATIC_TEXT\n = \"Based on actual household attributes (not census data) which is updated every four (4) weeks.\";\nexport const GPSInsightsTemplateDisclaimer\n = \"Disclaimer: lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \";\nconst DIGISHARE_CDN = `/Images/${encodeURIComponent(\"Digital Share\")}`;\n\nexport const digitalShareRender = (\n app: DigitalShareAppType,\n itemType: DigitalShareItemType,\n children: React.ReactNode\n): React.ReactElement => {\n const digitalShareOutputs: IDigitalShareItem[] = getDigitalShareOutputs(app);\n const item: IDigitalShareItem = digitalShareOutputs.find(\n (o) => o.type === itemType\n );\n if (item == undefined) {\n return;\n }\n\n if (app === DigitalShareAppType.Mobilytics) {\n return (\n \n {children}\n \n );\n } else if (app === DigitalShareAppType.RetailMatch) {\n return (\n \n {children}\n \n );\n }\n};\n\nexport const getDigitalShareMapImage = async (\n mapElement: HTMLElement,\n width = 860,\n height = 504\n): Promise => {\n const canvas = await html2canvas(mapElement, {\n // This ensures that the library is able to fetch images from a different domain, like\n // the google map tiles. Without it, the google map won't load.\n useCORS: true,\n\n // This is the device pixel ratio. If not explicitly set to 1, it will use whatever\n // the current device/monitor's pixel ratio is, which will likely be 1.5 or 2 for high-\n // density pixel displays like Apple Retina displays, or high-resolution monitors\n // set to display apps and text at 150% (or anything non-100%) in Windows display settings.\n scale: 1,\n\n // Need full size here, otherwise it will be blurry.\n // Alternately, we could provide exact size as used on img tag below, but\n // it won't contain the entire contents of what was showing on the page.\n // width: parseInt(mapElement.style.width),\n // height: parseInt(mapElement.style.height),\n\n // Leaving logging enabled causes major lag.\n logging: false,\n });\n\n const dataUrl = canvas.toDataURL();\n\n // Resize here since it will use the browser's native image scaling methods.\n return ;\n};\n\nexport const digitalShareMapRender = async (\n app: DigitalShareAppType,\n itemType: DigitalShareItemType,\n mapElement: HTMLElement,\n ref: React.MutableRefObject\n): Promise => {\n if (app === DigitalShareAppType.Mobilytics) {\n const digitalShareOutputs = getDigitalShareOutputs(app);\n const item = digitalShareOutputs.find((o) => o.type === itemType);\n\n const img = await getDigitalShareMapImage(mapElement);\n\n return (\n
\n \n {img}\n \n
\n );\n }\n};\n\nexport const getIsDigitalShare = (renderType: RenderType): boolean => {\n return featureFlags.DigitalShare && renderType === RenderType.DIGITAL_SHARE;\n};\n\nexport const filterGpsOutputsAgainstAvailableReports = (\n outputs: IDigitalShareItem[],\n hasVisitorLoyaltyData: boolean,\n hasFvpData: boolean,\n hasTradeArea: boolean\n): IDigitalShareItem[] => {\n if (!hasVisitorLoyaltyData) {\n outputs = outputs.filter(\n (output) => output.type !== DigitalShareItemType.VisitorLoyalty\n );\n }\n\n if (!hasFvpData) {\n outputs = outputs.filter(\n (output) => output.type !== DigitalShareItemType.FrequentlyVisitedPlaces\n );\n }\n\n if (!hasTradeArea) {\n outputs = outputs.filter(\n (output) => output.type !== DigitalShareItemType.VisitorTradeArea\n );\n }\n\n return outputs;\n};\n\n/* \n GPS Sections\n Trade Area\n - visitor map\n - visitor trade area\n - visitor origination\n Household Characteristics\n - psych profile\n - psych summary\n - key profile attributes\n - marriage\n - children\n - number of persons\n - head of household age\n - race\n - household income \n - education \n - dwelling\n - home ownership \n - new home owner \n - new mover \n Volume\n - relative volume metric\n - visit volume trend by week\n - visit volume by day of week\n - visit volume by day\n - volume by hour of day\n Visitor Behaviors\n - FVP\n - visitor loyalty\n - visitor activity \n*/\n\nexport const retailMatchDigitalShareOutputs = () => {\n const sectionNumberMap = new Map();\n\n sectionNumberMap.set(DigitalShareSectionEnum.BRAND_COMPARISON, \"01\");\n sectionNumberMap.set(DigitalShareSectionEnum.KEY_METRICS, \"02\");\n sectionNumberMap.set(DigitalShareSectionEnum.LOCATIONS_ANALYZED, \"03\");\n sectionNumberMap.set(DigitalShareSectionEnum.PSYCHOGRAPHIC_PROFILE, \"04\");\n sectionNumberMap.set(DigitalShareSectionEnum.HH_COMPOSITION, \"005\");\n\n const outputs = [\n {\n type: DigitalShareItemType.BrandComparison,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/Brand_Comparison.PNG`,\n sectionTitle: DigitalShareSectionEnum.BRAND_COMPARISON,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.BrandComparison,\n hideItemTitle: true,\n hideItemText: true,\n },\n {\n type: DigitalShareItemType.KeyMetrics,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/KeyMetrics.png`,\n sectionTitle: DigitalShareSectionEnum.KEY_METRICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.KeyMetrics,\n hideItemTitle: true,\n hideItemText: true,\n },\n {\n type: DigitalShareItemType.LocationsAnalyzed,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/LocationsAnalyzed.png`,\n sectionTitle: DigitalShareSectionEnum.KEY_METRICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.LocationsAnalyzed,\n hideItemTitle: true,\n hideItemText: true,\n },\n {\n type: DigitalShareItemType.PsychographicProfile,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Psych-Profile.jpg`,\n sectionTitle: DigitalShareSectionEnum.KEY_METRICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.PsychographicProfile,\n hideItemTitle: true,\n hideItemText: true,\n },\n {\n type: DigitalShareItemType.PsychographicSummary,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Psych-Summary.jpg`,\n sectionTitle: DigitalShareSectionEnum.KEY_METRICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.PsychographicSummary,\n hideItemTitle: true,\n hideItemText: true,\n },\n {\n type: DigitalShareItemType.Marriage,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Marriage.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.Marriage,\n },\n {\n type: DigitalShareItemType.Children,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Children.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.Children,\n },\n {\n type: DigitalShareItemType.NumberOfPersons,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Number-of-Persons.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.NumberOfPersons,\n },\n {\n type: DigitalShareItemType.HeadOfHouseholdAge,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-HH-Age.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HeadOfHouseholdAge,\n },\n {\n type: DigitalShareItemType.RaceAndEthnicity,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Race.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.RaceAndEthnicity,\n },\n {\n type: DigitalShareItemType.HouseholdIncome,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Income.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HouseholdIncome,\n },\n {\n type: DigitalShareItemType.HouseholdEducationLevel,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Education.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HouseholdEducationLevel,\n },\n {\n type: DigitalShareItemType.DwellingType,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Dwelling.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.DwellingType,\n },\n {\n type: DigitalShareItemType.HomeOwnership,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Home-Ownership.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_COMPOSITION,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HomeOwnership,\n },\n ];\n\n outputs.forEach(\n (o) => (o.captionAboveTitle = sectionNumberMap.get(o.sectionTitle))\n );\n\n return outputs;\n};\n\nexport const gpsDigitalShareOutputs = (\n isBenchmark: boolean\n): IDigitalShareItem[] => {\n const sectionNumberMap = new Map();\n\n sectionNumberMap.set(DigitalShareSectionEnum.TRADE_AREA, \"01\");\n sectionNumberMap.set(DigitalShareSectionEnum.HH_CHARACTERISTICS, \"02\");\n sectionNumberMap.set(DigitalShareSectionEnum.VOLUME, \"03\");\n sectionNumberMap.set(DigitalShareSectionEnum.VISITOR_BEHAVIORS, \"04\");\n\n const outputs: IDigitalShareItem[] = [\n {\n type: DigitalShareItemType.VisitorMap,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport--Visitor-Map.jpg`,\n sectionTitle: DigitalShareSectionEnum.TRADE_AREA,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.VisitorMap,\n },\n {\n type: DigitalShareItemType.VisitorTradeArea,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Trade-Area-01.jpg`,\n sectionTitle: DigitalShareSectionEnum.TRADE_AREA,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.VisitorTradeArea,\n },\n // {\n // type: DigitalShareItemType.VisitorOrigination,\n // isSelected: false,\n // imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Origination-01.jpg`,\n // sectionTitle: DigitalShareSectionEnum.TRADE_AREA,\n // captionAboveTitle: \"\",\n // itemTitle: DigitalShareItemType.VisitorOrigination,\n // },\n {\n type: DigitalShareItemType.PsychographicProfile,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Psych-Profile.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.PsychographicProfile,\n hideItemTitle: true,\n hideItemText: true,\n },\n {\n type: DigitalShareItemType.PsychographicSummary,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Psych-Summary.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.PsychographicSummary,\n hideItemTitle: true,\n hideItemText: true,\n },\n // {\n // type: DigitalShareItemType.KeyProfileAttributes,\n // isSelected: false,\n // imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Key-Profile.jpg`,\n // sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n // captionAboveTitle: \"\",\n // itemTitle: DigitalShareItemType.KeyProfileAttributes,\n // },\n {\n type: DigitalShareItemType.Marriage,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Marriage.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.Marriage,\n },\n {\n type: DigitalShareItemType.Children,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Children.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.Children,\n },\n {\n type: DigitalShareItemType.NumberOfPersons,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Number-of-Persons.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.NumberOfPersons,\n },\n {\n type: DigitalShareItemType.HeadOfHouseholdAge,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-HH-Age.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HeadOfHouseholdAge,\n },\n {\n type: DigitalShareItemType.RaceAndEthnicity,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Race.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.RaceAndEthnicity,\n },\n {\n type: DigitalShareItemType.HouseholdIncome,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Income.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HouseholdIncome,\n },\n {\n type: DigitalShareItemType.HouseholdEducationLevel,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Education.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HouseholdEducationLevel,\n },\n {\n type: DigitalShareItemType.DwellingType,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Dwelling.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.DwellingType,\n },\n {\n type: DigitalShareItemType.HomeOwnership,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Home-Ownership.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.HomeOwnership,\n },\n {\n type: DigitalShareItemType.NewHomeOwner,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-New-Homeowner.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.NewHomeOwner,\n },\n {\n type: DigitalShareItemType.NewMover,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-New-Mover.jpg`,\n sectionTitle: DigitalShareSectionEnum.HH_CHARACTERISTICS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.NewMover,\n },\n {\n type: DigitalShareItemType.RelativeVolume,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Volume-Metric.jpg`,\n sectionTitle: DigitalShareSectionEnum.VOLUME,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.RelativeVolume,\n hideItem: isBenchmark,\n },\n {\n type: DigitalShareItemType.VolumeByWeek,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Volume-Trend.jpg`,\n sectionTitle: DigitalShareSectionEnum.VOLUME,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.VolumeByWeek,\n },\n {\n type: DigitalShareItemType.VolumeByDayOfWeek,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Day-of-Week.jpg`,\n sectionTitle: DigitalShareSectionEnum.VOLUME,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.VolumeByDayOfWeek,\n },\n // {\n // type: DigitalShareItemType.VolumeByDay,\n // isSelected: false,\n // imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-By-Day.jpg`,\n // sectionTitle: DigitalShareSectionEnum.VOLUME,\n // captionAboveTitle: \"\",\n // itemTitle: DigitalShareItemType.VolumeByDay,\n // },\n {\n type: DigitalShareItemType.VolumeByHourOfDay,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Hour-of-Day.jpg`,\n sectionTitle: DigitalShareSectionEnum.VOLUME,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.VolumeByHourOfDay,\n },\n {\n type: DigitalShareItemType.VolumeByMetrics,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/Volume-Metrics-Table.png`,\n sectionTitle: DigitalShareSectionEnum.VOLUME,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.VolumeByMetrics,\n },\n {\n type: DigitalShareItemType.FrequentlyVisitedPlaces,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Freq-Visited-Places.jpg`,\n sectionTitle: DigitalShareSectionEnum.VISITOR_BEHAVIORS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.FrequentlyVisitedPlaces,\n },\n {\n type: DigitalShareItemType.FrequentlyVisitedPlacesMap,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Freq-Visited-Places.jpg`,\n sectionTitle: DigitalShareSectionEnum.VISITOR_BEHAVIORS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.FrequentlyVisitedPlacesMap,\n },\n {\n type: DigitalShareItemType.VisitorLoyalty,\n isSelected: false,\n imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Loyalty.jpg`,\n sectionTitle: DigitalShareSectionEnum.VISITOR_BEHAVIORS,\n captionAboveTitle: \"\",\n itemTitle: DigitalShareItemType.VisitorLoyalty,\n },\n // {\n // type: DigitalShareItemType.VisitorActivity,\n // isSelected: false,\n // imgUrl: `${DIGISHARE_CDN}/MobilyticsExport-Activity.jpg`,\n // sectionTitle: DigitalShareSectionEnum.VISITOR_BEHAVIORS,\n // captionAboveTitle: \"\",\n // itemTitle: DigitalShareItemType.VisitorActivity,\n // },\n ];\n\n outputs.forEach(\n (o) => (o.captionAboveTitle = sectionNumberMap.get(o.sectionTitle))\n );\n\n return outputs.filter((o) => !o.hideItem);\n};\n\nexport const getDigitalShareOutputs = (app: string): IDigitalShareItem[] => {\n let outputs = [];\n\n switch (app) {\n case DigitalShareAppType.Mobilytics:\n outputs = gpsDigitalShareOutputs(false);\n break;\n\n case DigitalShareAppType.RetailMatch:\n outputs = retailMatchDigitalShareOutputs();\n break;\n\n default:\n break;\n }\n\n return Array.from(\n outputs,\n ({\n type,\n isSelected,\n imgUrl,\n sectionTitle,\n itemTitle,\n captionAboveTitle,\n hideItemTitle,\n hideItemText,\n }) =>\n createDigitalShareItem(\n type,\n isSelected,\n imgUrl,\n sectionTitle,\n captionAboveTitle,\n itemTitle,\n hideItemTitle,\n hideItemText\n )\n );\n};\n\nexport const getPrintOutputs = (\n app: DigitalShareAppType,\n outputs: IDigitalShareItem[]\n): IDigitalShareItem[] => {\n /* BEGIN TEMPORARY EXCLUSIONS FOR PRINT \n Print automatically renders everything, so we have to explicitly exclude components\n that aren't supported yet\n */\n const exclusions = {\n Mobilytics: [\n // DigitalShareItemType.FrequentlyVisitedPlaces,\n // DigitalShareItemType.RelativeVolume,\n // DigitalShareItemType.KeyProfileAttributes,\n // DigitalShareItemType.PsychographicProfile,\n // DigitalShareItemType.PsychographicSummary,\n ],\n \"Retail Match\": [\n // DigitalShareItemType.LocationsAnalyzed,\n // DigitalShareItemType.PsychographicProfile,\n // DigitalShareItemType.PsychographicSummary,\n ],\n };\n\n //Please leave this here for testing\n // const exclusionsBrad = {\n // \"Mobilytics\": [\n // DigitalShareItemType.VisitorTradeArea,\n // DigitalShareItemType.VisitorOrigination,\n // DigitalShareItemType.KeyProfileAttributes,\n // DigitalShareItemType.NewHomeOwner,\n // DigitalShareItemType.NewMover,\n // DigitalShareItemType.RelativeVolume,\n // DigitalShareItemType.VolumeByWeek,\n // DigitalShareItemType.VolumeByDayOfWeek,\n // DigitalShareItemType.VolumeByDay,\n // DigitalShareItemType.FrequentlyVisitedPlaces,\n // DigitalShareItemType.VisitorLoyalty,\n // DigitalShareItemType.VisitorActivity,\n // DigitalShareItemType.VolumeByHourOfDay,\n // DigitalShareItemType.Children,\n // DigitalShareItemType.Marriage,\n // DigitalShareItemType.NumberOfPersons,\n // DigitalShareItemType.HeadOfHouseholdAge,\n // DigitalShareItemType.RaceAndEthnicity,\n // DigitalShareItemType.HouseholdIncome,\n // DigitalShareItemType.HouseholdEducationLevel,\n // DigitalShareItemType.DwellingType,\n // DigitalShareItemType.HomeOwnership,\n // DigitalShareItemType.PsychographicProfile,\n // DigitalShareItemType.PsychographicSummary,\n // ],\n // \"Retail Match\": [\n // DigitalShareItemType.LocationsAnalyzed,\n // DigitalShareItemType.PsychographicProfile,\n // DigitalShareItemType.PsychographicSummary\n // ]\n // };\n outputs = outputs.filter((o) => exclusions[app].indexOf(o.type) === -1);\n /* END TEMPORARY EXCLUSIONS FOR PRINT */\n\n return Array.from(\n outputs,\n ({\n type,\n isSelected,\n imgUrl,\n sectionTitle,\n itemTitle,\n captionAboveTitle,\n }) =>\n createDigitalShareItem(\n type,\n isSelected,\n imgUrl,\n sectionTitle,\n captionAboveTitle,\n itemTitle\n )\n );\n};\n\nexport const delay = async (delayMs: number) => {\n return new Promise((resolve: () => void, reject: () => void) => {\n setTimeout(() => {\n resolve();\n }, delayMs);\n });\n};\n","import { AxiosError } from \"axios\";\nimport { Dispatch } from \"redux\";\nimport { notification } from \"antd\";\n\nimport {\n IRetailMatchJobResult,\n IBrand,\n IRetailMatchJob,\n IRetailMatchJobImage,\n IStoreScoreRecord,\n IRetailMatchUpdateBrandLogoResponse,\n} from \"../Models/Models\";\nimport { RetailMatchAxios } from \"../Contracts/Axios/RetailMatchAxios\";\nimport { IBrandCategory } from \"../Models/IBrandCategory\";\nimport { IRetailMatchGeography } from \"../Models/IRetailMatchGeography\";\nimport { RetailMatchGeographyOption } from \"../Enums/RetailMatchGeographyOption\";\nimport { ISubmitRetailMatchJobRequest } from \"../Models/Requests/ISubmitRetailMatchJobRequest\";\nimport { IAddRetailMatchImageRequest } from \"../Models/Requests/IAddRetailMatchImageRequest\";\nimport { IGetBrandsByGeographyAndCategoriesRequest } from \"../Models/Requests/IGetBrandsByGeographyAndCategoriesRequest\";\n\nimport {\n reverseGeocode,\n formatShortAddressFromGeocoder,\n getCityFromGeocoder,\n titleCase,\n getValidLogoPath,\n createBrandMap,\n createCategoryMap,\n} from \"../Components/Apps/RetailMatch/Logic/SharedMethods\";\nimport {\n SET_RETAIL_MATCH_REPORT_MODAL_VISIBLE,\n START_RETAIL_MATCH_REPORT,\n GET_RETAIL_MATCH_RESULTS_SUCCESS,\n GET_RETAIL_MATCH_RESULTS_FAILURE,\n SET_RETAIL_MATCH_BENCHMARK_RECORD,\n SET_LOADING_BRANDS,\n GET_RETAIL_MATCH_BRANDS_SUCCESS,\n GET_RETAIL_MATCH_BRANDS_FAILURE,\n GET_RETAIL_MATCH_BRAND_SUCCESS,\n GET_RETAIL_MATCH_BRAND_FAILURE,\n SET_LOADING_UPDATE_RETAIL_MATCH_JOB,\n UPDATE_RETAIL_MATCH_JOB_SUCCESS,\n UPDATE_RETAIL_MATCH_JOB_FAILURE,\n ADD_RETAIL_MATCH_IMAGE_SUCCESS,\n ADD_RETAIL_MATCH_IMAGE_FAILURE,\n GET_RETAIL_MATCH_CATEGORIES_SUCCESS,\n GET_RETAIL_MATCH_CATEGORIES_FAILURE,\n SET_LOADING_CATEGORIES,\n GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS,\n GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE,\n SET_LOADING_RETAIL_MATCH_GEOGRAPHIES,\n SET_LOADING_RETAIL_MATCH_REPORT,\n SUBMIT_RETAIL_MATCH_REPORT_SUCCESS,\n SUBMIT_RETAIL_MATCH_REPORT_FAILURE,\n CLEAR_RETAIL_MATCH_RESULTS,\n GET_BRANDS_SAMPLE_SET_DATA_SUCCESS,\n SET_LOADING_BRANDS_SAMPLE_SET_DATA,\n UPDATE_BRAND_LOGO_SUCCESS,\n SET_SELECTED_BRAND,\n SET_RETAIL_MATCH_MODAL_MARKER_CLUSTERER,\n UPDATE_RETAIL_MATCH_SITE_DETAILS_SUCCESS,\n} from \"./Types\";\nimport { addRunningInsight } from \"./GPSInsightsActions\";\nimport { setMapCenter } from \"./ReportMapActions\";\nimport { IGetBrandsSampleSetDataByClosestRequest } from \"../Models/Requests/IGetBrandsSampleSetDataByClosestRequest\";\nimport { IBrandSampleSet } from \"../Models/IBrandSampleSet\";\nimport { createGenericIcon } from \"../Components/Common/GenericIcon/GenericIcon.Helpers\";\nimport { IGetBrandsSampleSetDataByGeoRequest } from \"../Models/Requests/IGetBrandsSampleSetDataByGeoRequest\";\nimport { GPSServiceAxios } from \"../Contracts/Axios/GPSServiceAxios\";\nimport { IRetailMatchUpdateBrandLogoRequest } from \"../Models/Requests/IRetailMatchUpdateBrandLogoRequest\";\n\nexport const setRetailMatchReportModalVisible = (visible: boolean) => ({\n type: SET_RETAIL_MATCH_REPORT_MODAL_VISIBLE,\n data: visible,\n});\n\nexport const startRetailMatchReport = () => ({\n type: START_RETAIL_MATCH_REPORT,\n data: null,\n});\n\nexport const getRetailMatchResultsSuccess = (data: IRetailMatchJobResult) => ({\n type: GET_RETAIL_MATCH_RESULTS_SUCCESS,\n data: data,\n});\n\nconst getRetailMatchResultsFailure = (message: string) => ({\n type: GET_RETAIL_MATCH_RESULTS_FAILURE,\n data: message,\n});\n\nexport const setRetailMatchBenchmarkRecord = (\n benchmark: IStoreScoreRecord\n) => ({\n type: SET_RETAIL_MATCH_BENCHMARK_RECORD,\n data: benchmark,\n});\n\nexport const clearRetailMatchResults = () => ({\n type: CLEAR_RETAIL_MATCH_RESULTS,\n});\n\nexport const setSelectedBrand = (brand: IBrand) => ({\n type: SET_SELECTED_BRAND,\n data: brand,\n});\n\nexport const setModalMarkerClusterer = (markerClusterer: MarkerClusterer) => ({\n type: SET_RETAIL_MATCH_MODAL_MARKER_CLUSTERER,\n data: markerClusterer,\n});\n\nconst getMaxIndex = (index: number): number => Math.max(0, index);\n\nexport const formatResults = (\n response: IRetailMatchJobResult\n): IRetailMatchJobResult => {\n const { overview, storeScores } = response.chartData;\n\n //index values need to be rounded for the UI\n for (const o of overview) {\n o.avgSampleVolumeIndex = getMaxIndex(Math.round(o.avgSampleVolumeIndex));\n o.coreCustomerCorrelationIndex = getMaxIndex(\n Math.round(o.coreCustomerCorrelationIndex)\n );\n o.coreCustomerCountIndex = getMaxIndex(\n Math.round(o.coreCustomerCountIndex)\n );\n o.coreCustomerPerHouseholdIndex = getMaxIndex(\n Math.round(o.coreCustomerPerHouseholdIndex)\n );\n }\n\n for (const score of storeScores) {\n //keep rounding\n score.vCntIdx = getMaxIndex(Math.round(score.vCntIdx));\n score.ccCntIdx = getMaxIndex(Math.round(score.ccCntIdx));\n score.ccCorrIdx = getMaxIndex(Math.round(score.ccCorrIdx));\n score.ccPerHHCntIdx = getMaxIndex(Math.round(score.ccPerHHCntIdx));\n\n score.addr = titleCase(score.addr);\n score.city = titleCase(score.city);\n }\n\n storeScores.sort((a, b) => b.ccCntIdx - a.ccCntIdx);\n\n return response;\n};\n\nexport const submitRetailMatchResults = async (\n data: IRetailMatchJobResult,\n dispatch: any\n) => {\n data = formatResults(data);\n\n const allBenchmarkRecords = data.chartData.storeScores.filter((store) => {\n return store.sid === \"-1\";\n });\n const otherStores = data.chartData.storeScores.filter((store) => {\n return !(\n store.lat === data.job.siteLatitude\n && store.lon === data.job.siteLongitude\n );\n });\n\n data.chartData.benchmarkRecords = allBenchmarkRecords;\n data.chartData.storeScores = otherStores;\n\n const benchmarks = await reverseGeocodeBenchmarks(data, dispatch);\n\n /** For each brand, create a logo if the supplied image is bad */\n for (const brand of data.job.brands) {\n const transformedPath = brand.logoPath?.concat(\"?size=176\");\n brand.logoPath = await getValidLogoPath(transformedPath, brand.brandName);\n }\n\n const benchmark = benchmarks[0];\n\n dispatch(setRetailMatchBenchmarkRecord(benchmark));\n dispatch(setMapCenter(new google.maps.LatLng(benchmark.lat, benchmark.lon)));\n dispatch(getRetailMatchResultsSuccess(data));\n};\n\nexport const reverseGeocodeBenchmarks = async (\n data: IRetailMatchJobResult,\n dispatch: any\n): Promise => {\n const { chartData, job } = data;\n\n const benchmark\n = chartData.benchmarkRecords?.length > 0\n ? chartData.benchmarkRecords[0]\n : data.chartData.benchmarkRecords[0];\n\n if (benchmark) {\n const reverseGeocodeResults = await reverseGeocode(\n benchmark.lat,\n benchmark.lon\n );\n const benchmarkShortAddress = formatShortAddressFromGeocoder(\n reverseGeocodeResults\n );\n const reverseGeocodeCity = getCityFromGeocoder(\n reverseGeocodeResults\n )?.toUpperCase();\n\n benchmark.addr = titleCase(benchmarkShortAddress);\n if (!benchmark.city || benchmark.city === \"\") {\n benchmark.city = titleCase(reverseGeocodeCity);\n }\n\n //Set new address on all benchmarkRecords\n for (const b of chartData.benchmarkRecords) {\n b.addr = benchmark.addr;\n b.city = benchmark.city;\n b.st = benchmark.st;\n b.zip = benchmark.zip;\n }\n }\n\n return chartData.benchmarkRecords;\n};\n\nexport const getResults = (jobId: string) => {\n return async (dispatch: Dispatch) => {\n const retailMatchAxios: RetailMatchAxios = new RetailMatchAxios();\n\n dispatch(setLoadingRetailMatchReport(true));\n\n try {\n const response: IRetailMatchJobResult = await retailMatchAxios.GetResults(\n jobId\n );\n submitRetailMatchResults(response, dispatch);\n } catch (error) {\n dispatch(setRetailMatchBenchmarkRecord(null));\n dispatch(setLoadingRetailMatchReport(false));\n dispatch(getRetailMatchResultsFailure(error.message));\n\n notification.error({\n message: \"Error getting Match Analysis Results\",\n description: `There was a problem while retrieving the requested Match Analysis: ${error.message}.`,\n duration: null, // user must close\n });\n } finally {\n dispatch(setLoadingRetailMatchReport(false));\n }\n };\n};\n\nexport const setLoadingBrands = (loading: boolean) => ({\n type: SET_LOADING_BRANDS,\n data: loading,\n});\n\nconst getRetailMatchBrandsSuccess = (data: IBrand[]) => ({\n type: GET_RETAIL_MATCH_BRANDS_SUCCESS,\n data: data,\n});\n\nconst getRetailMatchBrandsFailure = (error: AxiosError) => ({\n type: GET_RETAIL_MATCH_BRANDS_FAILURE,\n data: error.message,\n});\n\nexport const getBrandsByNaicsCode = (naicsCode: string) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBrands(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.GetBrandsByNaicsCode(naicsCode);\n\n promise\n .then((response: IBrand[]) => {\n dispatch(getRetailMatchBrandsSuccess(response));\n })\n .catch((error: AxiosError) => {\n dispatch(getRetailMatchBrandsFailure(error));\n notification.error({\n message: \"Error getting Brand\",\n description: error.message,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingBrands(false));\n });\n };\n};\n\nexport const getBrandsByGeoAndCategories = (\n request: IGetBrandsByGeographyAndCategoriesRequest\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBrands(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.GetBrandsByGeoAndCategory(request);\n\n promise\n .then((response: IBrand[]) => {\n dispatch(getRetailMatchBrandsSuccess(response));\n })\n .catch((error: AxiosError) => {\n dispatch(getRetailMatchBrandsFailure(error));\n notification.error({\n message: \"Error getting Brands\",\n description: error.message,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingBrands(false));\n });\n };\n};\n\nexport const getBrands = () => {\n return async (dispatch: Dispatch) => {\n dispatch(setLoadingBrands(true));\n\n try {\n const gpsServiceAxios = new GPSServiceAxios();\n const response: IBrand[] = await gpsServiceAxios.GetBrands();\n\n dispatch(getRetailMatchBrandsSuccess(response));\n } catch (error) {\n dispatch(getRetailMatchBrandsFailure(error as AxiosError));\n notification.error({\n message: \"Error getting Brands\",\n description: (error as AxiosError).message,\n duration: null, // user must close\n });\n } finally {\n dispatch(setLoadingBrands(false));\n }\n };\n};\n\nconst getRetailMatchBrandSuccess = (data: IBrand) => ({\n type: GET_RETAIL_MATCH_BRAND_SUCCESS,\n data: data,\n});\n\nconst getRetailMatchBrandFailure = (error: AxiosError) => ({\n type: GET_RETAIL_MATCH_BRAND_FAILURE,\n data: error.message,\n});\n\nexport const getBrand = (brandId: string) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBrands(true));\n\n const gpsServiceAxios = new GPSServiceAxios();\n const promise = gpsServiceAxios.GetBrandById(brandId);\n\n promise\n .then((response: IBrand) => {\n dispatch(getRetailMatchBrandSuccess(response));\n })\n .catch((error: AxiosError) => {\n dispatch(getRetailMatchBrandFailure(error));\n })\n .finally(() => {\n dispatch(setLoadingBrands(false));\n });\n };\n};\n\nexport const setLoadingUpdateRetailMatchJob = (loading: boolean) => ({\n type: SET_LOADING_UPDATE_RETAIL_MATCH_JOB,\n data: loading,\n});\n\nconst updateJobSuccess = (job: Partial) => ({\n type: UPDATE_RETAIL_MATCH_JOB_SUCCESS,\n data: job,\n});\n\nconst updateJobFailure = (error: AxiosError) => ({\n type: UPDATE_RETAIL_MATCH_JOB_FAILURE,\n data: error.message,\n});\n\nconst updateSiteDetailsSuccess = (siteDetails: string) => ({\n type: UPDATE_RETAIL_MATCH_SITE_DETAILS_SUCCESS,\n data: siteDetails,\n});\n\nexport const updateJob = (job: Partial, cb: () => void) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingUpdateRetailMatchJob(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.UpdateJob(job);\n\n promise\n .then(() => {\n dispatch(updateJobSuccess(job));\n cb();\n })\n .catch((error: AxiosError) => {\n dispatch(updateJobFailure(error));\n })\n .finally(() => {\n dispatch(setLoadingUpdateRetailMatchJob(false));\n });\n };\n};\n\nexport const updateSiteDetails = (jobId: string, siteDetails: string, cb: () => void) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingUpdateRetailMatchJob(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.UpdateSiteDetails(jobId, siteDetails);\n\n promise\n .then(() => {\n dispatch(updateSiteDetailsSuccess(siteDetails));\n cb();\n })\n .catch((error: AxiosError) => {\n dispatch(updateJobFailure(error));\n })\n .finally(() => {\n dispatch(setLoadingUpdateRetailMatchJob(false));\n });\n };\n};\n\nconst addImageSuccess = (image: IRetailMatchJobImage) => ({\n type: ADD_RETAIL_MATCH_IMAGE_SUCCESS,\n data: image,\n});\n\nconst addImageFailure = (error: AxiosError) => ({\n type: ADD_RETAIL_MATCH_IMAGE_FAILURE,\n data: error.message,\n});\n\nconst updateBrandLogoSuccess = (data: IRetailMatchUpdateBrandLogoResponse) => ({\n type: UPDATE_BRAND_LOGO_SUCCESS,\n data,\n});\n\nconst imageUpdateSuccessMessage = \"Your Image has been successfully updated.\";\n\nexport const addImage = (\n request: IAddRetailMatchImageRequest,\n cb: () => void\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingUpdateRetailMatchJob(true));\n\n const formData = new FormData();\n formData.append(\"jobId\", request.jobId);\n formData.append(\"image\", request.image);\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.AddImage(formData);\n\n promise\n .then((response: IRetailMatchJobImage) => {\n cb();\n dispatch(addImageSuccess(response));\n notification.success({\n message: \"Updated\",\n description: imageUpdateSuccessMessage,\n });\n })\n .catch((error: AxiosError) => {\n notification.open({\n type: \"error\",\n message: `There was a problem while retrieving the requested Match Analysis: ${error.message}.`,\n });\n dispatch(addImageFailure(error));\n })\n .finally(() => {\n dispatch(setLoadingUpdateRetailMatchJob(false));\n });\n };\n};\n\nexport const updateBrandLogo = (\n request: IRetailMatchUpdateBrandLogoRequest,\n cb: () => void\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingUpdateRetailMatchJob(true));\n\n const formData = new FormData();\n formData.append(\"jobId\", request.jobId);\n formData.append(\"brandId\", request.brandId);\n formData.append(\"image\", request.image);\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.UpdateBrandLogo(formData);\n\n promise\n .then((response: string) => {\n cb();\n const data: IRetailMatchUpdateBrandLogoResponse = {\n jobId: request.jobId,\n brandId: request.brandId,\n logoUrl: response,\n };\n dispatch(updateBrandLogoSuccess(data));\n notification.success({\n message: \"Updated\",\n description: imageUpdateSuccessMessage,\n });\n })\n .catch((error: AxiosError) => {\n notification.open({\n type: \"error\",\n message: `There was a problem while retrieving the requested Match Analysis: ${error.message}.`,\n });\n dispatch(addImageFailure(error));\n })\n .finally(() => {\n dispatch(setLoadingUpdateRetailMatchJob(false));\n });\n };\n};\n\nconst getRetailMatchCategoriesSuccess = (data: IBrandCategory[]) => ({\n type: GET_RETAIL_MATCH_CATEGORIES_SUCCESS,\n data: data,\n});\n\nconst getRetailMatchCategoriesFailure = (error: AxiosError) => ({\n type: GET_RETAIL_MATCH_CATEGORIES_FAILURE,\n data: error.message,\n});\n\nconst setLoadingCategories = (loading: boolean) => ({\n type: SET_LOADING_CATEGORIES,\n data: loading,\n});\n\nexport const getCategories = () => {\n return async (dispatch: Dispatch) => {\n dispatch(setLoadingCategories(true));\n\n try {\n const gpsServiceAxios = new GPSServiceAxios();\n const response = await gpsServiceAxios.GetCategories();\n dispatch(getRetailMatchCategoriesSuccess(response));\n } catch (error) {\n dispatch(getRetailMatchCategoriesFailure(error as AxiosError));\n notification.error({\n message: \"Error getting Categories\",\n description: (error as AxiosError).message,\n duration: null, // user must close\n });\n } finally {\n dispatch(setLoadingCategories(false));\n }\n };\n};\n\nconst getRetailMatchGeographiesSuccess = (data: IRetailMatchGeography[]) => ({\n type: GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS,\n data: data,\n});\n\nconst getRetailMatchGeographiesFailure = (error: AxiosError) => ({\n type: GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE,\n data: error.message,\n});\n\nconst setLoadingRetailMatchGeographies = (loading: boolean) => ({\n type: SET_LOADING_RETAIL_MATCH_GEOGRAPHIES,\n data: loading,\n});\n\nexport const getRetailMatchGeographies = (\n option: RetailMatchGeographyOption\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingRetailMatchGeographies(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.GetGeographies(option);\n\n promise\n .then((response: IRetailMatchGeography[]) => {\n dispatch(getRetailMatchGeographiesSuccess(response));\n })\n .catch((error: AxiosError) => {\n dispatch(getRetailMatchGeographiesFailure(error));\n notification.error({\n message: \"Error getting Geographies\",\n description: error.message,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingRetailMatchGeographies(false));\n });\n };\n};\n\nexport const setLoadingRetailMatchReport = (loading: boolean) => ({\n type: SET_LOADING_RETAIL_MATCH_REPORT,\n data: loading,\n});\n\nconst submitRetailMatchReportSuccess = () => ({\n type: SUBMIT_RETAIL_MATCH_REPORT_SUCCESS,\n data: null,\n});\n\nconst submitRetailMatchReportFailure = (error: AxiosError) => ({\n type: SUBMIT_RETAIL_MATCH_REPORT_FAILURE,\n data: error.message,\n});\n\nexport const submitRetailMatchReport = (\n request: ISubmitRetailMatchJobRequest\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingRetailMatchReport(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.SubmitRetailMatchReport(request);\n\n promise\n .then((response: IRetailMatchJob) => {\n notification.success({\n message: \"Submitted!\",\n description:\n \"Your Match Analysis is processing now. Check the reports section for status updates.\",\n });\n dispatch(submitRetailMatchReportSuccess());\n addRunningInsight(response.jobId);\n })\n .catch((error: AxiosError) => {\n dispatch(submitRetailMatchReportFailure(error));\n notification.error({\n message: \"Error submitting report\",\n description: error.message,\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingRetailMatchReport(false));\n dispatch(setRetailMatchReportModalVisible(false));\n });\n };\n};\n\nexport const checkSiteIsInDMA = (\n latitude: number,\n longitude: number\n): Promise => {\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.SiteIsInDMA(latitude, longitude);\n\n return promise;\n};\n\nconst getBrandsSampleSetDataSuccess = (data: IBrandSampleSet[]) => ({\n type: GET_BRANDS_SAMPLE_SET_DATA_SUCCESS,\n data: data,\n});\n\nexport const setLoadingBrandsSampleSetData = (loading: boolean) => ({\n type: SET_LOADING_BRANDS_SAMPLE_SET_DATA,\n data: loading,\n});\n\nexport const getBrandsSampleSetData = (\n request: IGetBrandsSampleSetDataByClosestRequest\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBrandsSampleSetData(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.GetBrandsSampleSetData(request);\n\n promise\n .then((response) => {\n dispatch(getBrandsSampleSetDataSuccess(response));\n })\n .catch((error: AxiosError) => {\n notification.error({\n description: \"Error\",\n message:\n \"Failed to get Brand Sample Set Data. Please contact SCOUT Support.\",\n duration: null, // user must close\n });\n });\n };\n};\n\nexport const getSampleSetByGeo = (\n request: IGetBrandsSampleSetDataByGeoRequest\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBrandsSampleSetData(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n const promise = retailMatchAxios.GetSampleSetByGeo(request);\n\n promise\n .then((response) => {\n dispatch(getBrandsSampleSetDataSuccess(response));\n })\n .catch((error: AxiosError) => {\n notification.error({\n description: \"Error\",\n message:\n \"Failed to get Brand Sample Set Data. Please contact SCOUT Support.\",\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingBrandsSampleSetData(false));\n });\n };\n};\n","import { createSelector } from \"reselect\";\n\nimport { ILoginUserData, ICurrentHover, ILockedModal } from \"../Models/Models\";\nimport { IRootReducer } from \"../Reducers/RootReducer\";\n\nexport const loginSelector = createSelector(\n (state: IRootReducer) => (\n {\n firstName: state.loginReducer.firstName,\n lastName: state.loginReducer.lastName,\n initials: state.loginReducer.initials,\n featureAccess: state.loginReducer.featureAccess,\n userID: state.loginReducer.userID,\n }\n ),\n (data: ILoginUserData) => data\n);\n\nexport const fetchingLoginUserDataSelector = createSelector(\n (state: IRootReducer) => state.loginReducer.fetchingLoginUserData,\n (loading: boolean) => loading\n);\n\nexport const currentHoverSelector = createSelector(\n (state: IRootReducer) => state.loginReducer.currentHover,\n (currentHover: ICurrentHover) => currentHover\n);\n\nexport const lockedModalSelector = createSelector(\n (state: IRootReducer) => state.loginReducer.lockedModal,\n (lockedModal: ILockedModal) => lockedModal\n);\n","import { IMobilyticsScenario } from \"../IMobilyticsScenario\";\n\nexport interface ISubmitMobilyticsJobRequest {\n scenarios: IMobilyticsScenario[];\n}\n","export * from \"./IAuthentication\";\nexport * from \"./IHome\";\nexport * from \"./IMyDataAxios\";\nexport * from \"./IUserPreferencesAxios\";\nexport * from \"./IVisualization\";\nexport * from \"./ITwoByTwoAxios\";\nexport * from \"./IGPSInsightsAxios\";\nexport * from \"./IRetailMatchAxios\";\nexport * from \"./ICompanySupportTeamAxios\";\nexport * from \"./IReportMapAxios\";\n","import { RetailMatchSelectionMethod } from \"../../Enums/RetailMatchSelectionMethod\";\n\nexport interface IGetBrandsSampleSetDataByGeoRequest {\n ids: string[];\n siteLatitude: number;\n siteLongitude: number;\n geoType: string;\n geoValues: string[];\n sampleSetSize: number;\n selectionMethod: RetailMatchSelectionMethod;\n includeAllBuds: boolean;\n}\n","export enum CompanyType {\n GROCER = 1,\n RETAILER = 2,\n RESTAURANT = 3,\n OTHER = 4,\n POSTAL = 5,\n BUSINESS_SERVICE = 6,\n CONVIENCE_STORE = 7,\n COMMUNITY = 8,\n HEALTHCARE = 9,\n COMMERCIAL_REAL_ESTATE = 11,\n HOTEL = 12,\n MARRIOTT = 100,\n NOT_SPECIFIED = 255,\n}\n","import { IOktaMFAFactorProfile } from \"./IOktaMFAFactorProfile\";\nimport { IOktaMFAFactorLinks } from \"./IOktaMFAFactorLinks\";\n\nexport interface IOktaMFAFactor {\n id: string;\n factorType: string;\n provider: string;\n vendorName: string;\n status: string;\n created: Date;\n lastUpdated: Date;\n profile: IOktaMFAFactorProfile;\n _links: IOktaMFAFactorLinks;\n}\n","import { RetailMatchIndexColor } from \"../Enums/RetailMatchIndexColor\";\nimport { IRGBColorObject } from \"../Models/Models\";\nimport { getRetailMatchMetricTierLevel } from \"./RetailMatch/RetailMatchUtil\";\nimport { RetailMatchMetricTier } from \"../Enums/RetailMatchMetricTier\";\n\nexport const hexToRgb = (hex: string): IRGBColorObject | null => {\n const result: RegExpExecArray\n = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n};\n\nexport const rgbToHex = (r: number, g: number, b: number): string =>\n `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n\nexport const getRetailMatchIndexColor = (index: number): string => {\n let color: string = RetailMatchIndexColor.red;\n const tierLevel: RetailMatchMetricTier = getRetailMatchMetricTierLevel(index);\n\n switch (tierLevel) {\n case RetailMatchMetricTier.Tier1: {\n color = RetailMatchIndexColor.red;\n break;\n }\n case RetailMatchMetricTier.Tier2: {\n color = RetailMatchIndexColor.yellow;\n break;\n }\n case RetailMatchMetricTier.Tier3: {\n color = RetailMatchIndexColor.lightGreen;\n break;\n }\n case RetailMatchMetricTier.Tier4: {\n color = RetailMatchIndexColor.green;\n break;\n }\n }\n\n return color;\n};\n","export enum RetailMatchMetricLevel {\n Average,\n Comparable,\n Similarity,\n}\n","import { IBaseAction } from \"../Actions/BaseAction\";\nimport { PolygonType } from \"../Models/Maps/Enums/PolygonType\";\nimport { IPolygon } from \"../Models/Maps/IPolygon\";\nimport { ISubmitMobilyticsJobRequest } from \"../../../Models/Requests/ISubmitMobilyticsJobRequest\";\nimport { IGCPBigQueryJob } from \"../../../Models/IGCPBigQueryJob\";\nimport { IMobilyticsScenarioFormState } from \"../Pages/Apps/Mobilytics/SubmitMobilyticsLogic\";\nimport { IPointBase } from \"../../../Models/IPoint\";\nimport { ISafegraphLocation } from \"../../../Models/ISafegraphLocation\";\n\nexport type SearchedPlaceInfo = {\n name: string;\n placeId: string;\n lat: number;\n lng: number;\n address: string;\n points?: [];\n};\n\nexport type ISafegraphLocationRequest = {\n latitude: number;\n longitude: number;\n brandName: string;\n address: string;\n zipcode: string;\n}\n\nexport type INearestLocationsSafegraphRequest = {\n ids: number[];\n latitude: number;\n longitude: number;\n}\n\nexport type CreateCustomLocationParameters = {\n address: string;\n lat?: number;\n lng?: number;\n placeId?: string;\n}\n\nexport type LocationDetailsParameters = {\n name: string;\n placeId: string;\n lat: number;\n lng: number;\n}\n\nexport type PlaceParameters = {\n placeId: string;\n hasPolygon?: boolean;\n sessionToken: google.maps.places.AutocompleteSessionToken;\n safegraphLocation?: ISafegraphLocation;\n}\n\nexport type SetIsDrawingPolygonAction = IBaseAction;\nexport type SetDrawPolygonAction = IBaseAction;\nexport type SetSavedPolygonsAction = IBaseAction;\nexport type SetInProcessPolygonAction = IBaseAction;\nexport type SetLoadingMobilyticsReportAction = IBaseAction;\nexport type SetSearchedPlaceMobilyticsAction = IBaseAction;\nexport type SetIsCreatingCustomLocationAction = IBaseAction;\nexport type SetIsViewingLocationDetailsAction = IBaseAction;\nexport type OnCustomLocationSelectedAction = IBaseAction;\nexport type OnLocationSelectedForAnalysisAction = IBaseAction;\nexport type SetIsRedirectedFromCreateCustomLocation = IBaseAction;\nexport type SetCreateCustomLocationParametersAction = IBaseAction;\nexport type SetLocationDetailsAction = IBaseAction;\nexport type SetIsSearchingForNewLocationAction = IBaseAction;\nexport type RemoveSearchedPlaceMoblyitcsAction = IBaseAction;\nexport type RemovePolygonAction = IBaseAction;\nexport type SubmitMobilyticsReportInitiateAction = IBaseAction;\nexport type SubmitMobilyticsReportSuccessAction = IBaseAction;\nexport type SubmitMobilyticsReportFailureAction = IBaseAction;\nexport type SetMobilyticsScenariosAction = IBaseAction;\nexport type SetShouldShowEndOfReportScreenAction = IBaseAction;\nexport type SetMostRecentlySubmittedMobilyticsReportAction = IBaseAction;\nexport type GetNearbyLocationsAction = IBaseAction;\nexport type GetSimilarLocationsAction = IBaseAction;\nexport type SetNearbyLocationsAction = IBaseAction;\nexport type SetSimilarLocationsAction = IBaseAction;\nexport type SetSelectedSafegraphLocationAction = IBaseAction;\nexport type StartMobilyticsFromSameMatchLocation = IBaseAction;\nexport type SetCustomReportTitle = IBaseAction;\nexport type SetIsLoadingLocationsAction = IBaseAction;\n\nexport type MobilyticsActionType =\n | SetIsDrawingPolygonAction\n | SetDrawPolygonAction\n | SetSavedPolygonsAction\n | SetInProcessPolygonAction\n | SetLoadingMobilyticsReportAction\n | SetIsCreatingCustomLocationAction\n | SetIsViewingLocationDetailsAction\n | OnCustomLocationSelectedAction\n | OnLocationSelectedForAnalysisAction\n | SetIsRedirectedFromCreateCustomLocation\n | SetCreateCustomLocationParametersAction\n | SetLocationDetailsAction\n | SetSearchedPlaceMobilyticsAction\n | RemoveSearchedPlaceMoblyitcsAction\n | RemovePolygonAction\n | SubmitMobilyticsReportInitiateAction\n | SubmitMobilyticsReportSuccessAction\n | SubmitMobilyticsReportFailureAction\n | SetMobilyticsScenariosAction\n | SetShouldShowEndOfReportScreenAction\n | SetMostRecentlySubmittedMobilyticsReportAction\n | SetIsSearchingForNewLocationAction\n | GetNearbyLocationsAction\n | GetSimilarLocationsAction\n | SetNearbyLocationsAction\n | SetSimilarLocationsAction\n | SetSelectedSafegraphLocationAction\n | StartMobilyticsFromSameMatchLocation\n | SetCustomReportTitle\n | SetIsLoadingLocationsAction;\n\nexport const SET_IS_DRAWING_POLYGON = \"SET_IS_DRAWING_POLYGON\";\nexport const SET_DRAW_POLYGON_TYPE = \"SET_DRAW_POLYGON_TYPE\";\nexport const SET_SAVED_POLYGONS = \"SET_SAVED_POLYGONS\";\nexport const SET_IN_PROCESS_POLYGON = \"SET_IN_PROCESS_POLYGON\";\nexport const SET_SEARCHED_PLACE_MOBILYTICS_ACTION = \"SET_SEARCHED_PLACE_MOBILYTICS_ACTION\";\nexport const REMOVE_SEARCHED_PLACE_MOBILYTICS_ACTION = \"REMOVE_SEARCHED_PLACE_MOBILYTICS_ACTION\";\nexport const REMOVE_POLYGON_ACTION = \"REMOVE_POLYGON_ACTION\";\nexport const SET_IS_CREATING_CUSTOM_LOCATION_ACTION = \"SET_IS_CREATING_CUSTOM_LOCATION_ACTION\";\nexport const SET_IS_VIEWING_LOCATION_DETAILS = \"SET_IS_VIEWING_LOCATION_DETAILS\";\nexport const ON_CUSTOM_LOCATION_SELECTED_ACTION = \"ON_CUSTOM_LOCATION_SELECTED_ACTION\";\nexport const ON_LOCATION_SELECTED_FOR_ANALYSIS_ACTION = \"ON_LOCATION_SELECTED_FOR_ANALYSIS_ACTION\";\nexport const SET_IS_REDIRECTED_FROM_CREATE_CUSTOM_LOCATION = \"SET_IS_REDIRECTED_FROM_CREATE_CUSTOM_LOCATION\";\nexport const SET_CREATE_CUSTOM_LOCATION_PARAMETERS_ACTION = \"SET_CREATE_CUSTOM_LOCATION_PARAMETERS_ACTION\";\nexport const SET_LOCATION_DETAILS_ACTION = \"SET_LOCATION_DETAILS_ACTION\";\nexport const GET_NEARBY_LOCATIONS_ACTION = \"GET_NEARBY_LOCATIONS_ACTION\";\nexport const GET_SIMILAR_LOCATIONS_ACTION = \"GET_SIMILAR_LOCATIONS_ACTION\";\nexport const SET_NEARBY_LOCATIONS_ACTION = \"SET_NEARBY_LOCATIONS_ACTION\";\nexport const SET_SIMILAR_LOCATIONS_ACTION = \"SET_SIMILAR_LOCATIONS_ACTION\";\nexport const SET_SELECTED_SAFEGRAPH_LOCATION_ACTION = \"SET_SELECTED_SAFEGRAPH_LOCATION_ACTION\";\nexport const SET_IS_SEARCHING_FOR_NEW_LOCATION_ACTION = \"SET_IS_SEARCHING_FOR_NEW_LOCATION_ACTION\";\nexport const SUBMIT_MOBILYTICS_REPORT_INITIATE = \"SUBMIT_MOBILYTICS_REPORT_INITIATE\";\nexport const SUBMIT_MOBILYTICS_REPORT_SUCCESS = \"SUBMIT_MOBILYTICS_REPORT_SUCCESS\";\nexport const SUBMIT_MOBILYTICS_REPORT_FAILURE = \"SUBMIT_MOBILYTICS_REPORT_FAILURE\";\nexport const SET_LOADING_MOBILYTICS_REPORT = \"SET_LOADING_MOBILYTICS_REPORT\";\nexport const SET_MOBILYTICS_SCENARIOS = \"SET_MOBILYTICS_SCENARIOS\";\nexport const SET_SHOULD_SHOW_END_OF_REPORT_SCREEN_ACTION = \"SET_SHOULD_SHOW_END_OF_REPORT_SCREEN_ACTION\";\nexport const SET_MOST_RECENTLY_SUBMITTED_MOBILYTICS_REPORT = \"SET_MOST_RECENTLY_SUBMITTED_MOBILYTICS_REPORT\";\nexport const START_MOBILYTICS_FROM_SAME_MATCH_LOCATION = \"START_MOBILYTICS_FROM_SAME_MATCH_LOCATION\";\nexport const SET_CUSTOM_REPORT_TITLE = \"SET_CUSTOM_REPORT_TITLE\";\nexport const SET_IS_LOADING_LOCATIONS = \"SET_IS_LOADING_LOCATIONS\";\n","import { ReportType } from \"../View/Products/Enums/ReportType\";\r\n\r\nexport interface IMyReportsReport {\r\n jobId: string;\r\n jobType: ReportType;\r\n //TODO - convert \"status\" to an enum\r\n status: string;\r\n title: string;\r\n createdDateTime: Date;\r\n startDate: Date;\r\n endDate: Date;\r\n }","import { ReportProgressStage } from \"../Enums/ReportProgressStage\";\n\nexport interface IReportProgress {\n progress: ReportProgressStage;\n verbiage: JSX.Element;\n stageName?: string;\n}\n\nexport class ReportProgress implements IReportProgress {\n /**\n *\n */\n constructor(progress: ReportProgressStage, verbiage: JSX.Element, stageName?: string) {\n this.progress = progress;\n this.verbiage = verbiage;\n this.stageName = stageName;\n }\n public progress: ReportProgressStage;\n public verbiage: JSX.Element;\n public stageName: string;\n}","export enum MatchReportTypeEnum {\n DEFAULT,\n MATCH, \n VOIDGAP\n}","import { IBrandCategory } from \"../../../Models/IBrandCategory\";\nimport { MarketPresenceOptions, SquareFootageOptions, UnitsAndGrowthOptions } from \"../Models/Requests/IVoidGapRequest\";\n\nexport type VoidGapFilterUnion = string[] | MarketPresenceOptions | SquareFootageOptions | UnitsAndGrowthOptions;\n\nexport type VoidGapFilterMap = {[key: string] : VoidGapFilterUnion};","import { CompanyType } from \"../Enums/Enums\";\nimport { AppArea } from \"../Enums/AppArea\";\n\nexport const getTranslation = (\n companyType: CompanyType,\n area: AppArea,\n plural: boolean\n) => {\n let word = \"\";\n switch (area) {\n case AppArea.LOCATIONS: {\n word = getLocationsWord(companyType, plural);\n break;\n }\n case AppArea.CUSTOMERS: {\n word = getCustomersWord(companyType, plural);\n break;\n }\n case AppArea.SALES: {\n word = getSalesWord(companyType, plural);\n break;\n }\n case AppArea.TERRITORIES: {\n word = getTerritoryWord(companyType, plural);\n break;\n }\n case AppArea.COMPETITORS: {\n word = getCompetitorWord(companyType, plural);\n break;\n }\n case AppArea.COTENANTS: {\n word = getCotenantWord(companyType, plural);\n break;\n }\n }\n return word;\n};\n\nconst getTerritoryWord = (\n companyType: CompanyType,\n plural: boolean\n): string => {\n let word = \"\";\n\n switch (companyType) {\n case CompanyType.RETAILER: {\n word = plural ? \"Territories\" : \"Territory\";\n break;\n }\n case CompanyType.HEALTHCARE: {\n word = plural ? \"Territories\" : \"Territory\";\n break;\n }\n case CompanyType.HOTEL: {\n word = plural ? \"Custom Polygons\" : \"Custom Polygon\";\n break;\n }\n case CompanyType.MARRIOTT: {\n word = plural ? \"Territories\" : \"Territory\";\n break;\n }\n case CompanyType.COMMUNITY: {\n word = plural ? \"Territories\" : \"Territory\";\n break;\n }\n case CompanyType.COMMERCIAL_REAL_ESTATE: {\n word = plural ? \"Custom Polygons\" : \"Custom Polygon\";\n break;\n }\n }\n\n return word;\n};\n\nconst getCompetitorWord = (\n companyType: CompanyType,\n plural: boolean\n): string => {\n let word = \"\";\n\n switch (companyType) {\n case CompanyType.RETAILER: {\n word = plural ? \"Competitors\" : \"Competitor\";\n break;\n }\n case CompanyType.HEALTHCARE: {\n word = plural ? \"Competitors\" : \"Competitor\";\n break;\n }\n case CompanyType.HOTEL: {\n word = plural ? \"Competitors\" : \"Competitor\";\n break;\n }\n case CompanyType.MARRIOTT: {\n word = plural ? \"Competitors\" : \"Competitor\";\n break;\n }\n case CompanyType.COMMUNITY: {\n word = plural ? \"Competitors\" : \"Competitor\";\n break;\n }\n case CompanyType.COMMERCIAL_REAL_ESTATE: {\n word = plural ? \"Leads\" : \"Lead\";\n break;\n }\n }\n\n return word;\n};\n\nconst getCotenantWord = (companyType: CompanyType, plural: boolean): string => {\n let word = \"\";\n\n switch (companyType) {\n case CompanyType.RETAILER: {\n word = plural ? \"Cotenants\" : \"Cotenant\";\n break;\n }\n case CompanyType.HEALTHCARE: {\n word = plural ? \"Cotenants\" : \"Cotenant\";\n break;\n }\n case CompanyType.HOTEL: {\n word = plural ? \"Cotenants\" : \"Cotenant\";\n break;\n }\n case CompanyType.MARRIOTT: {\n word = plural ? \"Cotenants\" : \"Cotenant\";\n break;\n }\n case CompanyType.COMMUNITY: {\n word = plural ? \"Cotenants\" : \"Cotenant\";\n break;\n }\n case CompanyType.COMMERCIAL_REAL_ESTATE: {\n word = plural ? \"Partners\" : \"Partner\";\n break;\n }\n }\n\n return word;\n};\n\nconst getLocationsWord = (\n companyType: CompanyType,\n plural: boolean\n): string => {\n let word = \"\";\n switch (companyType) {\n case CompanyType.RETAILER: {\n word = plural ? \"Stores\" : \"Store\";\n break;\n }\n case CompanyType.HEALTHCARE: {\n word = plural ? \"Facilities\" : \"Facility\";\n break;\n }\n case CompanyType.HOTEL: {\n word = plural ? \"Hotels\" : \"Hotel\";\n break;\n }\n case CompanyType.MARRIOTT: {\n word = plural ? \"Hotels\" : \"Hotel\";\n break;\n }\n case CompanyType.COMMUNITY: {\n word = plural ? \"Sites\" : \"Site\";\n break;\n }\n case CompanyType.COMMERCIAL_REAL_ESTATE: {\n word = plural ? \"Properties\" : \"Property\";\n break;\n }\n }\n return word;\n};\n\nconst getCustomersWord = (\n companyType: CompanyType,\n plural: boolean\n): string => {\n let word = \"\";\n switch (companyType) {\n case CompanyType.COMMERCIAL_REAL_ESTATE:\n case CompanyType.RETAILER: {\n word = plural ? \"Customers\" : \"Customer\";\n break;\n }\n case CompanyType.HEALTHCARE: {\n word = plural ? \"Patients\" : \"Patient\";\n break;\n }\n case CompanyType.HOTEL: {\n word = plural ? \"Customers\" : \"Customer\";\n break;\n }\n case CompanyType.MARRIOTT: {\n word = plural ? \"Customers\" : \"Customer\";\n break;\n }\n case CompanyType.COMMUNITY: {\n word = plural ? \"Profiles\" : \"Profile\";\n break;\n }\n }\n return word;\n};\n\nexport const getSalesWord = (companyType: CompanyType, plural: boolean): string => {\n let word = \"\";\n switch (companyType) {\n case CompanyType.COMMERCIAL_REAL_ESTATE:\n case CompanyType.RETAILER: {\n word = plural ? \"Sales\" : \"Sale\";\n break;\n }\n case CompanyType.HEALTHCARE: {\n word = plural ? \"Visits\" : \"Visit\";\n break;\n }\n case CompanyType.HOTEL: {\n word = plural ? \"Sales\" : \"Sale\";\n break;\n }\n case CompanyType.MARRIOTT: {\n word = plural ? \"Sales\" : \"Sale\";\n break;\n }\n case CompanyType.COMMUNITY: {\n word = plural ? \"Sales\" : \"Sale\";\n break;\n }\n }\n return word;\n};\n","export enum AppArea {\n LOCATIONS,\n CUSTOMERS,\n SALES,\n TERRITORIES,\n COMPETITORS,\n COTENANTS,\n}\n","import styled from \"styled-components\";\nimport { colorTwoBright } from \"../../../globalStyles/colors/scoutColors\";\n\nexport const ReportSectionHeader = styled(\"div\")`\n width: 100%;\n margin-bottom: 40px;\n`;\n\nexport const ReportH1 = styled(\"h1\")`\n font-size: 45px;\n line-height: 55px;\n letter-spacing: 0;\n font-weight: 800;\n color: ${colorTwoBright};\n margin-bottom: 0;\n`;\n\nexport const ReportH2 = styled(\"h2\")`\n font-size: 36px;\n margin: 0.5rem 0;\n color: rgba(0, 0, 0, 0.95);\n font-weight: bold;\n margin: 0 0 10px;\n`;\n\nexport const ReportH3 = styled(\"h3\")`\n font-size: 20px;\n line-height: 30px;\n margin: 20px 0 0;\n font-weight: 800;\n margin: 0 0 10px;\n padding: 0;\n`;\n\nexport const ReportH4 = styled(\"h4\")`\n font-family: Manrope;\n font-size: 20px;\n font-weight: 900;\n font-stretch: normal;\n font-style: normal;\n line-height: 0.95;\n letter-spacing: normal;\n color: #000000;\n margin: 0 0 10px;\n padding: 2px 2px 2px 0;\n display: inline-block;\n`;\n\nexport const ReportH5 = styled(\"h5\")`\n font-family: Manrope;\n font-size: 15px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #000000;\n margin: 0 0 8px;\n padding: 2px 2px 2px 0;\n display: inline-block;\n`;\n\nexport const ReportDateBlockHeaderText = styled(\"span\")`\n font-size: 14px;\n margin: 2px 0 0 8px;\n color: rgba(0, 0, 0, 0.85);\n font-weight: 500;\n display: inline-block;\n`;\n\nexport const BodyText = styled(\"p\")`\n font-family: Manrope, sans-serif;\n font-size: 14px;\n line-height: 20px;\n color: #333;\n`;\n\nexport const ReportBodyTextLarge = styled(BodyText)`\n font-size: 18px;\n line-height: 28px;\n`;\n\nexport const ReportP = styled(\"p\")`\n line-height: 20px;\n`;\n\nexport const ReportSectionNumber = styled(\"h4\")`\n font-size: 18px;\n line-height: 29px;\n letter-spacing: 0;\n color: ${colorTwoBright};\n margin: 0;\n padding: 0;\n`;\n\nexport const ReportCategoryHeader = styled(\"div\")`\n font-size: 13px;\n font-weight: bold;\n margin-bottom: 5px;\n`;\n\nexport const ReportCategoryText = styled(\"div\")`\n font-size: 13px;\n`;\n","import { createSelector } from \"reselect\";\n\nimport {\n IBrand,\n IRetailMatchChartData,\n IRetailMatchJob,\n IRetailMatchJobResult,\n ISegment,\n IStoreScoreRecord,\n} from \"../../Models/Models\";\nimport { IRootReducer } from \"../../Models/IRootReducer\";\nimport { formatLongAddressFromRecord } from \"../../Components/Apps/RetailMatch/Logic/SharedMethods\";\nimport { getBenchmarkAddressOverride } from \"../../Util/RetailMatch/RetailMatchUtil\";\nimport { IBuxtonDeck } from \"../../Models/IBuxtonDeck\";\nimport { IRetailMatchGeography } from \"../../Models/IRetailMatchGeography\";\nimport { ActiveApp } from \"../../Enums/ActiveApp\";\n\nexport const getRetailMatchActiveApp = (state: IRootReducer): ActiveApp =>\n state.loadScout.activeApp;\n\nexport const getRetailMatchResult = (\n state: IRootReducer\n): IRetailMatchJobResult => state.matchReportOutput.jobResult;\n\nexport const getSelectedBrand = (state: IRootReducer): IBrand =>\n state.matchReportOutput.selectedBrand;\n\nexport const getRetailBenchmarkMatchResult = (state: IRootReducer): IStoreScoreRecord =>\n state.matchReportOutput.benchmarkRecord;\n\nexport const getRetailMatchJobChartData = (\n state: IRootReducer\n): IRetailMatchChartData => state.matchReportOutput.jobResult.chartData;\n\nconst getRetailMatchOverviewMap = (state: IRootReducer): google.maps.Map =>\n state.reportMap.retailMatchOverviewMap;\n\nconst getRetailMatchOverviewMapMarkers = (\n state: IRootReducer\n): google.maps.Marker[] => state.reportMap.retailMatchOverviewMapMarkers;\n\nconst getRetailMatchLocationsAnalyzedMap = (\n state: IRootReducer\n): google.maps.Map => state.reportMap.googleMap;\n\nconst getRetailMatchLocationsAnalyzedMapMarkers = (\n state: IRootReducer\n): google.maps.Marker[] => state.reportMap.currentMarkers;\n\nconst getRetailMatchLocationsAnalyzedMapCenter = (\n state: IRootReducer\n): google.maps.LatLng => state.reportMap.mapCenter;\n\nconst getBuxtonDeck = (state: IRootReducer): IBuxtonDeck =>\n state.reportMap.buxtonDeck;\n\nconst getRetailMatchGeographies = (\n state: IRootReducer\n): IRetailMatchGeography[] => state.matchReportOutput.geographies;\n\nexport const retailMatchActiveAppSelector = createSelector(\n [getRetailMatchActiveApp],\n (activeApp) => activeApp\n);\n\nexport const retailMatchLocationsAnalyzedMapDataSelector = createSelector(\n [\n getRetailMatchLocationsAnalyzedMap,\n getRetailMatchLocationsAnalyzedMapMarkers,\n getRetailMatchLocationsAnalyzedMapCenter,\n getBuxtonDeck,\n getRetailMatchGeographies,\n ],\n (\n googleMap,\n currentMapMarkers,\n mapCenter,\n buxtonDeck,\n geographies\n ): {\n googleMap: google.maps.Map;\n currentMapMarkers: google.maps.Marker[];\n mapCenter: google.maps.LatLng;\n buxtonDeck: IBuxtonDeck;\n geographies: IRetailMatchGeography[];\n } => ({\n googleMap,\n currentMapMarkers,\n mapCenter,\n buxtonDeck,\n geographies,\n })\n);\n\nexport const retailMatchMultiBrandDataSelector = createSelector(\n [\n getRetailMatchOverviewMap,\n getRetailMatchOverviewMapMarkers,\n getSelectedBrand,\n ],\n (\n map,\n markers,\n brand\n ): {\n map: google.maps.Map;\n markers: google.maps.Marker[];\n brand: IBrand;\n } => ({\n map,\n markers,\n brand,\n })\n);\n\nexport const retailMatchJobOverviewSelector = createSelector(\n [getRetailMatchJobChartData],\n (chartData: IRetailMatchChartData) => chartData.overview\n);\n\nexport const retailMatchJobSelector = createSelector(\n (state: IRootReducer) => state.matchReportOutput.jobResult.job,\n (job: IRetailMatchJob) => job\n);\n\nexport const retailMatchJobResultSelector = createSelector(\n getRetailMatchResult,\n (result: IRetailMatchJobResult) => result\n);\n\nexport const retailMatchBenchmarkJobResultSelector = createSelector(\n getRetailBenchmarkMatchResult,\n (benchmarkRecord: IStoreScoreRecord) => benchmarkRecord\n);\n\nexport const retailMatchLoadingUpdateJobSelector = createSelector(\n (state: IRootReducer) => state.matchReportOutput.loadingUpdateJob,\n (loadingUpdateJob: boolean) => loadingUpdateJob\n);\n\nexport const retailMatchReportDataSelector = createSelector(\n [getRetailMatchResult, getRetailBenchmarkMatchResult, getSelectedBrand],\n (jobResult, benchmarkRecord, selectedBrand) => ({\n jobResult,\n benchmarkRecord,\n selectedBrand,\n })\n);\n\nexport const getRetailMatchReportDataReady = createSelector(\n [getRetailMatchResult, getRetailBenchmarkMatchResult],\n (jobResult, benchmarkRecord): boolean =>\n jobResult !== null\n && jobResult.chartData !== null\n && jobResult.job !== null\n && benchmarkRecord !== null\n);\n\nexport const retailMatchLongAddressSelector = createSelector(\n [retailMatchReportDataSelector],\n ({ jobResult, benchmarkRecord }): string => {\n const benchmarkAddressOverride: IStoreScoreRecord\n = getBenchmarkAddressOverride(jobResult, benchmarkRecord);\n return formatLongAddressFromRecord(benchmarkAddressOverride);\n }\n);\n\nexport const rmMosaicSegmentsSelector = createSelector(\n (state: IRootReducer) => state.matchReportOutput.mosaicSegments,\n (segments: ISegment[]) => segments\n);\n\nexport const loadingRetailMatchReportSelector = createSelector(\n (state: IRootReducer) => state.matchReportOutput.loadingReport,\n (loadingReport: boolean) => loadingReport\n);\n","import { App } from \"../Enums/App\";\nimport {\n GetUSAWKTFailureAction,\n GetUSAWKTInitiateAction,\n GetUSAWKTSuccessAction,\n GetRedirectLinkInitiateAction,\n GetRedirectLinkFailureAction,\n GET_USA_WKT_FAILURE,\n GET_USA_WKT_INITIATE,\n GET_USA_WKT_SUCCESS,\n GET_REDIRECT_LINK_INITIATE,\n GET_REDIRECT_LINK_FAILURE,\n} from \"../Types/CommonActionTypes\";\n\nexport const getUSAWKT = (): GetUSAWKTInitiateAction => ({\n type: GET_USA_WKT_INITIATE,\n});\n\nexport const setUSAWKT = (wkt: string): GetUSAWKTSuccessAction => ({\n type: GET_USA_WKT_SUCCESS,\n data: wkt,\n});\n\nexport const getUSAWKTFailure = (error: string): GetUSAWKTFailureAction => ({\n type: GET_USA_WKT_FAILURE,\n data: error,\n});\n\nexport const getRedirectLinkInitiate = (appName: string): GetRedirectLinkInitiateAction => ({\n type: GET_REDIRECT_LINK_INITIATE,\n data: appName,\n});\n\nexport const getRedirectLinkFailure = (error: string): GetRedirectLinkFailureAction => ({\n type: GET_REDIRECT_LINK_FAILURE,\n data: error,\n});","import { AxiosError } from \"axios\";\nimport { RetailMatchGeographyOption } from \"../../../Enums/RetailMatchGeographyOption\";\nimport { ILatLon } from \"../../../Models/ILatLon\";\nimport { IRetailMatchJob } from \"../../../Models/IRetailMatch\";\nimport { IRetailMatchGeography } from \"../../../Models/IRetailMatchGeography\";\nimport { ISubmitRetailMatchJobRequest } from \"../../../Models/Requests/ISubmitRetailMatchJobRequest\";\nimport { MatchReportTypeEnum } from \"../Enums/MatchReportTypeEnum\";\nimport * as types from \"../Types/RetailMatchActionTypes\";\n\n/** misc */\nexport const setLoadingRetailMatchGeographies = (\n loading: boolean,\n): types.SetLoadingRetailMatchGeographiesAction => ({\n type: types.SET_LOADING_RETAIL_MATCH_GEOGRAPHIES,\n data: loading,\n});\nexport const setMostRecentlySubmittedRetailMatchReport = (\n report: IRetailMatchJob | null,\n): types.SetMostRecentlySubmittedMobilyticsReportAction => ({\n type: types.SET_MOST_RECENTLY_SUBMITTED_RETAIL_MATCH_REPORT,\n data: report,\n});\n\nexport const setLoadingMatchReport = (\n loading: boolean,\n): types.SetLoadingMatchReportAction => ({\n type: types.SET_LOADING_MATCH_REPORT,\n data: loading,\n});\n\n/** initiate */\nexport const getRetailMatchGeographiesInitiate = (\n option: RetailMatchGeographyOption,\n): types.GetRetailMatchGeographiesInitiateAction => ({\n type: types.GET_RETAIL_MATCH_GEOGRAPHIES_INITIATE,\n data: option,\n});\n\nexport const submitMatchReportInitiate = (\n request: ISubmitRetailMatchJobRequest,\n): types.SubmitMatchReportIniitiateAction => ({\n type: types.SUBMIT_MATCH_REPORT_INITIATE,\n data: request,\n});\n\n/** success */\nexport const getRetailMatchGeographiesSuccess = (\n geos: IRetailMatchGeography[],\n): types.GetRetailMatchGeographiesSuccessAction => ({\n type: types.GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS,\n data: geos,\n});\n\nexport const submitMatchReportSuccess = (job: IRetailMatchJob): types.SubmitMatchReportSuccessAction => ({\n type: types.SUBMIT_MATCH_REPORT_SUCCESS,\n data: job,\n});\n\n/** failure */\nexport const getRetailMatchGeographiesFailure = (\n error: AxiosError,\n): types.GetRetailMatchGeographiesFailureAction => ({\n type: types.GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE,\n data: error.message,\n});\n\nexport const submitMatchReportFailure = (\n error: AxiosError,\n): types.SubmitMatchReportFailureAction => ({\n type: types.SUBMIT_MATCH_REPORT_FAILURE,\n data: error.message,\n});\n\nexport const setSearchedMatchPlace = (\n name: string,\n placeId: string,\n lat: number,\n lng: number,\n): types.SetSearchedPlaceMatchAction => ({\n type: types.SET_SEARCHED_PLACE_MATCH_ACTION,\n data: {\n name,\n placeId,\n lat,\n lng,\n },\n});\n\nexport const setMatchReportType = (\n reportType: MatchReportTypeEnum,\n): types.SetRetailMatchReportTypeAction => ({\n type: types.SET_MATCH_REPORT_TYPE,\n data: reportType,\n});\n\nexport const startLastReportRunning = (\n reportName: string,\n): types.StartLastReportRunningAction => ({\n type: types.START_LAST_REPORT_RUNNING,\n data: reportName,\n});\n\nexport const ignoreRunningReport = (\n reportName: string,\n) : types.IgnoreRunningReportAction => ({\n type: types.IGNORE_RUNNING_REPORT,\n data: reportName,\n});\n\nexport const resetRetailMatch = (\n ignore: number,\n) : types.ResetRetailMatchAction => ({\n type: types.RESET_RETAIL_MATCH_ACTION,\n data: ignore,\n});\n\nexport const restartRetailMatch = () : types.RestartRetailMatch => ({\n type: types.RESTART_RETAIL_MATCH_ACTION, \n data: null\n});\n\nexport const setIncludeAllBuds = (\n includeAll: boolean,\n): types.SetIncludeAllBudsAction => ({\n type: types.SET_INCLUDE_ALL_BUDS_ACTION,\n data: includeAll,\n});\n\nexport const siteIsInDMAInitiate = (data: ILatLon): types.SiteIsInDMAInitiateAction => ({\n type: types.SITE_IS_IN_DMA_INITIATE,\n data: data,\n});\n\nexport const siteIsInDMASuccess = (data: boolean): types.SiteIsInDMASuccessAction => ({\n type: types.SITE_IS_IN_DMA_SUCCESS,\n data: data,\n});\n\nexport const siteIsInDMAFailure = (data: string): types.SiteIsInDMAFailureAction => ({\n type: types.SITE_IS_IN_DMA_FAILURE,\n data: data,\n});\n\nexport const setCheckingtSiteIsInDMA = (data: boolean): types.CheckingSiteIsInDMAAction => ({\n type: types.SET_CHECKING_SITE_IS_IN_DMA,\n data: data,\n});","import internal from \"stream\";\nimport { IBrand } from \"./IBrand\";\nimport { IGCPBigQueryJob, IPolygon, IProfileRecord } from \"./Models\";\n\nexport interface IGPSData {\n actualConsumerViewRollups: IPrimarySecondaryConsumerViewRollups;\n estimatedVolume: IEstimatedVolumeCount;\n buds: number;\n region: string;\n visitsCount: number;\n mapData: IMobileInsightsMapData[];\n nationalConsumerViewRollups: IGenericConsumerViewRollups;\n profile: IGPSProfile[];\n visitorOrigination: IChartVisitorOrigData;\n tradeAreaAnalysis: IChartTAAData[];\n volumeByDOW: IChartVisitVisitorDatapoint[];\n volumeByHour: IChartGenericDatapoint[];\n volumeBySegment: IChartVisitVisitorDatapoint[];\n volumeByWeek: IChartVisitVisitorDatapoint[];\n volumeByDay: IChartVisitVisitorDatapoint[];\n frequentlyVisitedPlaces: IFrequentlyVisitedPlace[];\n}\n\nexport interface IFrequentlyVisitedPlace {\n address: string;\n afterDevCount: number;\n afterVisitCount: number;\n beforeDevCount: number;\n beforeVisitCount: number;\n brand: IBrand | null;\n categoryId: string;\n city: string;\n devCount: number;\n jobId: string;\n latitude: number;\n longitude: number;\n name: string;\n source: string;\n state: string;\n storeId: string;\n visitCount: number;\n zipcode: string;\n percentage: number;\n}\nexport interface IGPSProfile {\n actualCount: number;\n actualPercent: number;\n baseCount: number;\n basePercent: number;\n core: \"P\" | \"S\" | \"N\" | \"T\";\n index: number;\n segment: string;\n}\n\nexport interface IEstimatedVolumeCount {\n visitors: number;\n visits: number;\n visitsCount: number;\n}\n\nexport interface IChartGenericDatapoint {\n id: string;\n weight: number;\n}\n\nexport interface IGPSIndexDatapoint {\n id: string;\n indexValue: number;\n}\n\nexport interface IChartVisitVisitorDatapoint {\n id: string;\n visitWeight: number;\n visitorWeight: number;\n}\n\nexport interface IGPSChartMergedDatapoint {\n id: string;\n visitWeight?: number;\n visitorWeight?: number;\n weight?: number;\n}\n\nexport interface IChartMergedDatapoint {\n id: string;\n selection1PrimaryWeight?: number;\n selection1SecondaryWeight?: number;\n selection2PrimaryWeight?: number;\n selection2SecondaryWeight?: number;\n nationalWeight?: number;\n}\n\nexport interface IPrimarySecondaryConsumerViewRollups {\n childrenPresent: IChartVisitVisitorDatapoint[];\n dwellingType: IChartVisitVisitorDatapoint[];\n hhIncome: IChartVisitVisitorDatapoint[];\n hohAge: IChartVisitVisitorDatapoint[];\n hohEducationLevel: IChartVisitVisitorDatapoint[];\n homeOwnership: IChartVisitVisitorDatapoint[];\n lengthOfResidence: IChartVisitVisitorDatapoint[];\n maritalStatus: IChartVisitVisitorDatapoint[];\n newHomeOwner: IChartVisitVisitorDatapoint[];\n newMover: IChartVisitVisitorDatapoint[];\n numPersonsInHh: IChartVisitVisitorDatapoint[];\n hohEthnicGroup: IChartVisitVisitorDatapoint[];\n}\n\nexport interface IGenericConsumerViewRollups {\n childrenPresent: IChartGenericDatapoint[];\n dwellingType: IChartGenericDatapoint[];\n hhIncome: IChartGenericDatapoint[];\n hohAge: IChartGenericDatapoint[];\n hohEducationLevel: IChartGenericDatapoint[];\n homeOwnership: IChartGenericDatapoint[];\n lengthOfResidence: IChartGenericDatapoint[];\n maritalStatus: IChartGenericDatapoint[];\n newHomeOwner: IChartGenericDatapoint[];\n newMover: IChartGenericDatapoint[];\n numPersonsInHh: IChartGenericDatapoint[];\n hohEthnicGroup: IChartGenericDatapoint[];\n}\n\nexport interface IChartCompare {\n selection1:\n | IChartVisitVisitorDatapoint[]\n | IChartGenericDatapoint[]\n | IProfileRecord[]\n | IGPSProfile[]\n | IChartVisitorOrigData;\n selection2?:\n | IChartVisitVisitorDatapoint[]\n | IChartGenericDatapoint[]\n | IProfileRecord[]\n | IGPSProfile[]\n | IChartVisitorOrigData;\n national: IChartGenericDatapoint[];\n}\n\nexport interface IMobileInsightsMapData {\n homeLatitude: number;\n homeLongitude: number;\n visitWeight: number;\n visitorWeight: number;\n workLatitude: number;\n workLongitude: number;\n}\n\nexport interface IGPSGetJobResult {\n job: IGCPBigQueryJob[];\n chartData: IGPSData[];\n status: string;\n benchmarkCommonData: IGPSBenchmarkCommonData;\n}\n\nexport interface IGPSVisitorLoyalty {\n jobIds: string[];\n value: number;\n}\n\nexport interface IGPSBenchmarkCommonData {\n visitorLoyalty: IGPSVisitorLoyalty[];\n}\n\nexport interface IGPSGetJobResultParsed {\n polygon: IPolygon[];\n data: IGPSData[];\n job: IGCPBigQueryJob[];\n benchmarkCommonData: IGPSBenchmarkCommonData;\n}\n\nexport interface IGPSAMChartData {\n week: IChartVisitVisitorDatapoint[];\n dow: IChartVisitVisitorDatapoint[];\n hour: IChartGenericDatapoint[];\n}\n\nexport interface IChartCalendarDatapoint {\n day: string;\n value: number;\n}\n\nexport interface IChartVisitorOrigData {\n county: IGPSChartMergedDatapoint[];\n dma: IGPSChartMergedDatapoint[];\n state: IGPSChartMergedDatapoint[];\n zipcode: IGPSChartMergedDatapoint[];\n}\n\nexport interface IChartVisitorOrigData {\n county: IGPSChartMergedDatapoint[];\n dma: IGPSChartMergedDatapoint[];\n state: IGPSChartMergedDatapoint[];\n zipcode: IGPSChartMergedDatapoint[];\n}\n\nexport interface IChartTAAData {\n id: string;\n visitWeight: string;\n visitorWeight: string;\n}\n","export enum AnalysisStatus {\n Complete,\n CompleteWithErrors,\n Pending,\n Running,\n Caching,\n TooFewRecords,\n}\n","import { notification } from \"antd\";\nimport { CSSObject } from \"styled-components\";\n\nimport { ReportMapAxios } from \"../Contracts/Axios/ReportMapAxios\";\nimport { IReportMapAxios } from \"../Contracts\";\nimport { IPolygon } from \"../Models/IPolygon\";\nimport { IRetailMatchTradeAreaBlockGroup } from \"../Models/Models\";\nimport {\n SET_MAP_CENTER,\n SET_MAP_LOADING,\n CLEAR_CURRENT_GOOGLE_MAP_REF,\n SET_MAP_MARKERS,\n CREATE_NEW_GOOGLE_MAP,\n SET_MAP_ZOOM,\n CLEAR_GOOGLE_MAP,\n SET_MAP_ANCHOR_WINDOW,\n SET_MAP_STYLE_OPTIONS,\n SET_MAP_HEIGHT,\n SET_PENDING_MAP_CENTER_EVENT,\n SET_MAP_IS_READY,\n CREATE_NEW_RETAIL_MATCH_OVERVIEW_MAP,\n CREATE_NEW_RETAIL_MATCH_MODAL_MAP,\n SET_RETAIL_MATCH_OVERVIEW_MAP_MARKERS,\n SET_MAP_STYLES,\n} from \"./Types\";\nimport { MapStyleEnum } from \"../Enums/Enums\";\n\nexport const createNewGoogleMap = (map) => ({\n type: CREATE_NEW_GOOGLE_MAP,\n data: map,\n});\n\nexport const createNewRetailMatchOverviewMap = (map) => ({\n type: CREATE_NEW_RETAIL_MATCH_OVERVIEW_MAP,\n data: map,\n});\n\nexport const setRetailMatchOverMapMarkers = (\n markers: google.maps.Marker[]\n) => ({\n type: SET_RETAIL_MATCH_OVERVIEW_MAP_MARKERS,\n data: markers,\n});\n\nexport const createNewRetailMatchModalMap = (map) => ({\n type: CREATE_NEW_RETAIL_MATCH_MODAL_MAP,\n data: map,\n});\n\nexport const clearCurrentGoogleMapRef = () => ({\n type: CLEAR_CURRENT_GOOGLE_MAP_REF,\n data: null,\n});\n\nexport const setMapCenter = (center: google.maps.LatLng) => ({\n type: SET_MAP_CENTER,\n data: center,\n});\n\n// Calling this with `true` is equivalent to telling the map to re-center using\n// the currently stored lat/lng.\n//\n// This is distinct from `setMapCenter`, which only updates the stored lat/lng\n// to be used on the next centering.\n//\n// This allows us to work within the declarative flow of React/Redux instead of\n// mixing state with imperative Google Map calls.\n//\n// NOTE: Due to hooks, `setMapCenter` may in some instances cause the map\n// to re-center when new coordinates are passed in.\n//\n// NOTE 2: We're not using this at the moment for the GPS Trade Area map\n// because it causes the Deck GL dots to render in slightly wrong positions at first.\nexport const setPendingMapCenterEvent = (pending: boolean) => ({\n type: SET_PENDING_MAP_CENTER_EVENT,\n data: pending,\n});\n\nexport const setMapZoom = (zoom: number) => ({\n type: SET_MAP_ZOOM,\n data: zoom,\n});\n\nexport const setMapStyleOptions = (styleOption: MapStyleEnum) => ({\n type: SET_MAP_STYLE_OPTIONS,\n data: styleOption,\n});\n\nexport const setMapStyles = (style: CSSObject) => ({\n type: SET_MAP_STYLES,\n data: style,\n});\n\nexport const setMapHeight = (height: string) => ({\n type: SET_MAP_HEIGHT,\n data: height,\n});\n\nexport const setMapMarkers = (markers: google.maps.Marker[]) => ({\n type: SET_MAP_MARKERS,\n data: markers,\n});\n\nexport const clearMapMarkers = (markers: google.maps.Marker[]) => {\n markers.forEach((marker) => marker.setMap(null));\n\n return { type: SET_MAP_MARKERS, data: markers };\n};\n\nexport const setMapAnchorWindow = (anchorWindow: google.maps.InfoWindow) => ({\n type: SET_MAP_ANCHOR_WINDOW,\n data: anchorWindow,\n});\n\nexport const setShowLoadingMarker = (loading: boolean) => ({\n type: SET_MAP_LOADING,\n data: loading,\n});\n\nexport const setIsMapReady = (isReady: boolean) => ({\n type: SET_MAP_IS_READY,\n data: isReady,\n});\n\nexport const cleanMap = () => ({\n type: CLEAR_GOOGLE_MAP,\n});\n\nexport const getTradeAreaPolygonsFromBlockGroups = async (\n blockGroups: IRetailMatchTradeAreaBlockGroup[]\n) => {\n const reportMapAxios: IReportMapAxios = new ReportMapAxios();\n const blockGroupIds: string[] = blockGroups.map((bg) => bg.id);\n\n try {\n const response: IPolygon[] = await reportMapAxios.GetBlockgroupPolygons(\n blockGroupIds\n );\n return response;\n } catch (error) {\n notification.error({\n message: \"Error\",\n description: error.message,\n duration: null, // user must close\n });\n return null;\n }\n};\n","import { RetailMatchSelectionMethod } from \"../../Enums/RetailMatchSelectionMethod\";\n\nexport interface IGetBrandsSampleSetDataByClosestRequest {\n ids: string[];\n siteLatitude: number;\n siteLongitude: number;\n sampleCountByBrand: number;\n selectionMethod: RetailMatchSelectionMethod;\n includeAllBuds: boolean;\n}\n","/**\n * GB:\n *\n * This must mirror the corresponding C# enum.\n * See further notes in the C# file NotificationType.cs\n */\n\nexport enum NotificationType {\n\n MatchReportPending = 1,\n MatchReportRunning,\n MatchReportCaching,\n MatchReportComplete,\n MatchReportError,\n\n MobilyticsReportPending,\n MobilyticsReportRunning,\n MobilyticsReportCaching,\n MobilyticsReportComplete,\n MobilyticsReportError,\n}","import { RetailMatchTimeOption } from \"../../Enums/RetailMatchTimeOption\";\n\nexport interface ISubmitRetailMatchJobRequest {\n title: string;\n brands: string[];\n categories: string[];\n geoType: string;\n geoValues: string[];\n timeOption: RetailMatchTimeOption;\n siteLatitude: number;\n siteLongitude: number;\n sgFilter: boolean;\n tradeAreaLimit: boolean;\n sampleSize: number;\n includeAllBuds: boolean;\n excludedLocations: string[];\n}\n","import { IStore } from \"../../../../Models/IStore\";\nimport { IOtherInformation } from \"../../../../Models/Models\";\nimport { storeColumns } from \"../Components/MyDataColumns\";\nimport moment from \"moment\";\nimport React from \"react\";\nimport { CompanyType } from \"../../../../Enums/CompanyType\";\n\nexport class MyDataLogicIconStore {\n private _icons = [];\n private _iconsByColor = [];\n private _categories = [\n \"education\",\n \"food\",\n \"hotel\",\n \"office\",\n \"shapes\",\n \"shopping\",\n \"travel\",\n ];\n /*\n Red : #D90029\n Blue : #1B8DDF\n Green: #068D4B\n Yellow: #FFCD00\n Purple: #872F9E\n Black: #393939\n */\n private _colors = [\"black\", \"blue\", \"green\", \"purple\", \"red\", \"yellow\"];\n private _colorsHex = [\n \"#393939\",\n \"#1B8DDF\",\n \"#068D4B\",\n \"#872F9E\",\n \"#D90029\",\n \"#FFCD00\",\n ];\n\n private _lastChangeId = 0;\n\n private _getIconGroup(category, color, search) {\n let icons = null;\n if (this._icons.hasOwnProperty(category)) {\n if (this._icons[category].hasOwnProperty(color)) {\n icons = this._icons[category][color];\n }\n } else if (category === null) {\n if (this._iconsByColor.hasOwnProperty(color)) {\n icons = this._iconsByColor[color];\n }\n }\n\n if (icons && search) {\n const searchedIcons = [];\n search = search.toLowerCase();\n for (let i = 0; i < icons.length; i++) {\n const name = icons[i].name.toLowerCase();\n if (name.indexOf(search) > -1) {\n searchedIcons.push(icons[i]);\n }\n }\n\n return searchedIcons;\n }\n\n return icons;\n }\n private _fnUpdateIcons(data) {\n this.setData(data);\n\n // var payload = new Radio.Payload();\n // payload.channel = Radio.Channels.BROADCAST;\n // payload.data = null;\n // payload.type = \"cloud-icon-listing-changed\";\n // Radio.broadcast(payload);\n }\n\n //Radio.tuneIn(_fnUpdateIcons, \"cloud-icon-listing-loaded\", Common.Constants.Channels.SERVER);\n\n public getIcons(category, color, pageNum, pageSize, searchString) {\n const icons = this._getIconGroup(category, color, searchString);\n if (icons) {\n if (icons.length > pageSize) {\n const startIndex = (pageNum - 1) * pageSize;\n return icons.slice(startIndex, startIndex + pageSize);\n }\n\n return icons;\n }\n\n return [];\n }\n public getPageNumbers(\n category,\n color,\n startPage,\n pageSize,\n maxPageDisplayCount,\n search\n ) {\n const icons = this._getIconGroup(category, color, search);\n if (icons) {\n const totalPages = Math.ceil(icons.length / pageSize);\n const actualStartPage = startPage > totalPages ? totalPages : startPage;\n const pageNumbers = [];\n let currentIndex = 0;\n\n let arrayIndex = 0;\n\n for (let i = 1; i <= totalPages; i++) {\n pageNumbers.push(i);\n if (i === actualStartPage) {\n currentIndex = arrayIndex;\n }\n\n arrayIndex++;\n }\n\n if (maxPageDisplayCount === undefined || maxPageDisplayCount === null) {\n return pageNumbers;\n }\n\n if (pageNumbers.length <= maxPageDisplayCount) {\n return pageNumbers;\n }\n\n let startIndex = currentIndex - 1;\n if (startIndex < 0) {\n startIndex = 0;\n }\n\n let endIndex = startIndex + maxPageDisplayCount;\n if (endIndex > pageNumbers.length) {\n endIndex = pageNumbers.length;\n }\n\n while (endIndex - startIndex < maxPageDisplayCount && startIndex > 0) {\n --startIndex;\n }\n\n return pageNumbers.slice(startIndex, endIndex);\n }\n\n return [];\n }\n public getIconCount() {\n return 0;\n }\n public setData(icons) {\n this._icons = icons;\n this._iconsByColor = [];\n for (const category in this._icons) {\n if (this._icons.hasOwnProperty(category)) {\n const iconsCategory = this._icons[category];\n for (const color in iconsCategory) {\n if (iconsCategory.hasOwnProperty(color)) {\n const iconsColor = iconsCategory[color];\n if (!this._iconsByColor.hasOwnProperty(color)) {\n this._iconsByColor[color] = [];\n }\n for (let i = 0; i < iconsColor.length; i++) {\n this._iconsByColor[color].push(iconsColor[i]);\n }\n }\n }\n }\n }\n ++this._lastChangeId;\n }\n public getLastPageNumber(category, color, pageSize, search) {\n const icons = this._getIconGroup(category, color, search);\n if (icons) {\n const count = icons.length / pageSize;\n return Math.ceil(+count);\n }\n\n return 0;\n }\n // public init() {\n // // Common.Context.getCloudIcons();\n // };\n public getCategories() {\n return this._categories;\n }\n public getColors() {\n return this._colors;\n }\n public getColorsHex() {\n return this._colorsHex;\n }\n public getLastChangeId() {\n return this._lastChangeId;\n }\n public getColorHex(color) {\n const index = this._colors.indexOf(color);\n if (index > -1) {\n return this._colorsHex[index];\n }\n\n return null;\n }\n public getIcon(category, color, name) {\n const icons = this._getIconGroup(category, color, null);\n if (icons && icons.length) {\n for (let i = 0; i < icons.length; i++) {\n if (icons[i].name === name) {\n return icons[i];\n }\n }\n }\n\n return null;\n }\n public getIconByUrl(url) {\n const components = url.split(\"/\");\n const namePart = components.pop();\n const nameComponents = namePart.split(\".\");\n const name = nameComponents[0];\n const color = components.pop();\n const category = components.pop();\n return this.getIcon(category, color, name);\n }\n}\n\nexport class MyDataLogicIconPager {\n private _iconStore: MyDataLogicIconStore = null;\n private _page = 1;\n private _pageSize = 100000;\n private _icons = [];\n private _categories = [];\n private _colors = [];\n private _category = null;\n private _color = null;\n private _lastPageNum = 0;\n private _pageNumbers = [];\n private _colorsName = [];\n private _colorsHex = [];\n private _lastChangeId = null;\n private _maxPageDisplayCount = undefined;\n private _searchString = null;\n\n public constructor(iconStore) {\n this._iconStore = iconStore;\n\n this._categories = [\"All\"].concat(this._iconStore.getCategories());\n //_categories.unshift('All');\n this._category = this._categories[0]; //--all\n //_category = _categories[5];//--shapes\n this._colorsName = this._iconStore.getColors();\n this._colorsHex = this._iconStore.getColorsHex();\n this._colors = [];\n\n for (let i = 0; i < this._colorsName.length; i++) {\n this._colors.push({\n name: this._colorsName[i],\n hex: this._colorsHex[i],\n });\n }\n\n this._color = this._colors[0];\n }\n\n private _getCategory = function () {\n if (this._category === \"All\") {\n return null;\n }\n\n return this._category;\n };\n private _updateIcons = function () {\n this._icons = this._iconStore.getIcons(\n this._getCategory(),\n this._color.name,\n this._page,\n this._pageSize,\n this._searchString\n );\n };\n public getIcons() {\n return new Promise((resolve, reject) => {\n const id = this._iconStore.getLastChangeId();\n if (id !== this._lastChangeId) {\n this._updateIcons();\n }\n resolve(this._icons);\n });\n }\n public getIconsOld() {\n const id = this._iconStore.getLastChangeId();\n if (id !== this._lastChangeId) {\n this._updateIcons();\n }\n return this._icons;\n }\n public setCategory(category) {\n this._category = category;\n this._page = 1;\n this._updateIcons();\n }\n public setColor(color) {\n this._color = color;\n this._updateIcons();\n }\n public setPageSize(pageSize) {\n this._pageSize = pageSize;\n this._updateIcons();\n }\n public gotoFirstPage() {\n this._page = 1;\n this._updateIcons();\n }\n public gotoPage(pageNum) {\n if (\n pageNum >= 1\n && pageNum\n <= this._iconStore.getLastPageNumber(\n this._getCategory(),\n this._color.name,\n this._pageSize,\n this._searchString\n )\n ) {\n this._page = pageNum;\n this._updateIcons();\n }\n }\n public gotoLastPage() {\n this._page = this._iconStore.getLastPageNumber(\n this._getCategory(),\n this._color.name,\n this._pageSize,\n this._searchString\n );\n this._updateIcons();\n }\n public getPageNumbers() {\n return this._iconStore.getPageNumbers(\n this._getCategory(),\n this._color.name,\n this._page,\n this._pageSize,\n this._maxPageDisplayCount,\n this._searchString\n );\n }\n public getCategories() {\n return this._categories;\n }\n public getColors() {\n return this._colors;\n }\n public getColorsHex() {\n return this._iconStore.getColorsHex();\n }\n public needsPaging() {\n return (\n this._iconStore.getLastPageNumber(\n this._getCategory(),\n this._color.name,\n this._pageSize,\n this._searchString\n ) > 1\n );\n }\n public getCurrentCategory() {\n return this._category;\n }\n public getCurrentColor() {\n return this._color;\n }\n public getCurrentColorHex() {\n return this._iconStore.getColorHex(this._color.name);\n }\n public getCurrentPageNumber() {\n return this._page;\n }\n public setMaxPageDisplayCount(count) {\n this._maxPageDisplayCount = count;\n }\n public getIcon(name) {\n return this._iconStore.getIcon(this._getCategory(), this._color.name, name);\n }\n public setSearchString(searchString) {\n this._searchString = searchString;\n this._updateIcons();\n }\n public gotoNextPage() {\n this.gotoPage(this._page + 1);\n }\n public gotoPreviousPage() {\n this.gotoPage(this._page - 1);\n }\n}\n\nconst getOtherStoreColumnValue = (info: IOtherInformation) => {\n const {\n otherValueDate,\n otherValueInteger,\n otherValueNumber,\n otherValueString,\n } = info;\n\n return otherValueDate\n ? moment(otherValueDate).format(\"M/D/YYYY hh:mm\")\n : otherValueInteger\n ? otherValueInteger\n : otherValueNumber\n ? otherValueNumber\n : otherValueString\n ? otherValueString\n : null;\n};\n\nexport const getStoreColumns = (storeData: IStore[], companyType: CompanyType): any[] => {\n const otherInfoColumnTitles: string[] = [];\n const newColumns: any[] = [];\n\n storeData = storeData.filter(\n (store: IStore) => store.otherInformation.length > 0\n );\n\n storeData.forEach((store: IStore) =>\n store.otherInformation.forEach((info: IOtherInformation) =>\n otherInfoColumnTitles.indexOf(info.otherName) == -1\n ? otherInfoColumnTitles.push(info.otherName)\n : null\n )\n );\n\n if (otherInfoColumnTitles.length > 0) {\n otherInfoColumnTitles.forEach((columnName: string) => {\n newColumns.push({\n title: columnName,\n width: 200,\n dataIndex: null,\n isChecked: true,\n render: (store: IStore) => {\n return store.otherInformation.map((info: IOtherInformation) => {\n if (info.otherName === columnName) {\n return {getOtherStoreColumnValue(info)} ;\n }\n });\n },\n });\n });\n }\n\n const storeCols = storeColumns(companyType);\n\n return [...storeCols].concat(newColumns);\n};\n","import { useLayoutEffect, useState, useEffect, Dispatch } from \"react\";\nimport { AxiosError } from \"axios\";\n\nimport { ISegment } from \"../../Models/Models\";\nimport { IChartMergedDatapoint } from \"../../Models/Models\";\nimport {\n SET_LOADING_MOSAIC_SEGMENTS,\n GET_MOSAIC_SEGMENTS_SUCCESS,\n} from \"../../Actions/Types\";\nimport { RetailMatchAxios } from \"../../Contracts/Axios/RetailMatchAxios\";\nimport { ICoordinate } from \"../../Models/ICoordinate\";\nimport { notification } from \"antd\";\n\nexport const useOutsideClick = (ref, callback: () => void) => {\n const handleClick = (e) => {\n if (ref.current && !ref.current.contains(e.target)) {\n callback();\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"click\", handleClick);\n\n return () => {\n document.removeEventListener(\"click\", handleClick);\n };\n });\n};\n\nexport const useWindowResize = (): {\n width: number;\n height: number;\n} => {\n /** state */\n const [windowSize, setWindowSize] = useState({ width: 0, height: 0 });\n /** effects */\n useLayoutEffect(() => {\n let resizeId;\n const doneResizing = ():void => {\n clearTimeout(resizeId);\n resizeId = setTimeout(updateSize, 500);\n };\n const updateSize = ():void => {\n const currentWidth: number = window.innerWidth > 0\n ? window.innerWidth\n : screen.width;\n const currentHeight: number = window.innerHeight > 0\n ? window.innerHeight\n : screen.height;\n\n const newSize = {\n width: currentWidth,\n height: currentHeight,\n };\n setWindowSize(newSize);\n (window as any).windowSize = newSize;\n };\n\n window.addEventListener(\"resize\", doneResizing);\n updateSize();\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n\n return windowSize;\n};\n\nexport const popupCenter = (url = \"\", title = \"\", w = 700, h = 700): Window => {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft\n = window.screenLeft != undefined ? window.screenLeft : window.screenX;\n const dualScreenTop\n = window.screenTop != undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const left = (width - w) / 2 / systemZoom + dualScreenLeft;\n const top = (height - h) / 2 / systemZoom + dualScreenTop;\n\n const newWindow = window.open(\n url,\n title,\n \"scrollbars=yes, location=0, personalbar=0, titlebar=0, menubar=0, toolbar=0, width=\"\n + w / systemZoom\n + \", height=\"\n + h / systemZoom\n + \", top=\"\n + top\n + \", left=\"\n + left\n );\n\n return newWindow;\n};\n\n// ███████╗ ██████╗ ██████╗ ████████╗\n// ██╔════╝██╔═══██╗██╔══██╗╚══██╔══╝\n// ███████╗██║ ██║██████╔╝ ██║\n// ╚════██║██║ ██║██╔══██╗ ██║\n// ███████║╚██████╔╝██║ ██║ ██║\n// ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝\n\nexport const sortMergedChartData = (\n chartData: IChartMergedDatapoint[],\n convertToUsableNumber = false,\n customSort?: (a, b) => 1 | -1 | 0\n): IChartMergedDatapoint[] => {\n return sorting(chartData, convertToUsableNumber, customSort);\n};\n\nconst sorting = (\n chartData: IChartMergedDatapoint[],\n convertToUsableNumber = false,\n customSort?: (a, b) => 1 | -1 | 0\n): any => {\n // sort numeric\n if (convertToUsableNumber) {\n chartData?.sort((a, b) =>\n Number(formatToUsableNumber(a.id)) > Number(formatToUsableNumber(b.id))\n ? 1\n : Number(formatToUsableNumber(b.id))\n > Number(formatToUsableNumber(a.id))\n ? -1\n : 0\n );\n // custom sort\n } else if (customSort) {\n chartData?.sort(customSort);\n // sort alphabetic\n } else {\n chartData?.sort((a, b) => (a.id > b.id ? 1 : b.id > a.id ? -1 : 0));\n }\n return chartData;\n};\n\nconst UYNSortOrder = {\n Y: 0,\n N: 1,\n U: 2,\n};\n\nexport const sortUYN = (a, b) => {\n return UYNSortOrder[a.id] > UYNSortOrder[b.id] ? 1 : -1;\n};\n\nconst DwellingTypeSortOrder = {\n \"Multi Family Dwelling Unit\": 1,\n \"Single Family Dwelling Unit\": 0,\n};\n\nexport const sortDwellingType = (a, b) => {\n return DwellingTypeSortOrder[a.id] > DwellingTypeSortOrder[b.id] ? 1 : -1;\n};\n\nconst educationSortOrder = {\n \"Less Than High School Diploma\": 0,\n \"High School Diploma\": 1,\n \"Some College\": 2,\n \"Bachelor Degree\": 3,\n \"Graduate Degree\": 4,\n};\n\nexport const sortEducation = (a, b) => {\n return educationSortOrder[a.id] > educationSortOrder[b.id] ? 1 : -1;\n};\n\n// ███████╗ ██████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗\n// ██╔════╝██╔═══██╗██╔══██╗████╗ ████║██╔══██╗╚══██╔══╝\n// █████╗ ██║ ██║██████╔╝██╔████╔██║███████║ ██║\n// ██╔══╝ ██║ ██║██╔══██╗██║╚██╔╝██║██╔══██║ ██║\n// ██║ ╚██████╔╝██║ ██║██║ ╚═╝ ██║██║ ██║ ██║\n// ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝\n\nconst formatToUsableNumber = (str: string): string => {\n const cleanedStr = str.replace(/([K])|\\+|\\$/g, \"\");\n const n = cleanedStr.indexOf(\" \");\n return cleanedStr.substring(0, n != -1 ? n : cleanedStr.length);\n};\n\nexport const formatUYN = (id: string): string => {\n return id === \"Y\" ? `Yes` : id === \"N\" ? `No` : `Unknown`;\n};\n\nexport const formatMarriedSingle = (id: string): string => {\n return id === \"Married\" ? `Yes` : id === \"Single\" ? `No` : `Unknown`;\n};\n\nconst dwellingFormat = {\n \"Multi Family Dwelling Unit\": \"Multi Family\",\n \"Single Family Dwelling Unit\": \"Single Family\",\n};\n\nexport const formatDwelling = (id: string): string => {\n const returnVal = dwellingFormat[id];\n return returnVal;\n};\n\nconst educationFormat = {\n \"Less Than High School Diploma\": \"< HS Diploma\",\n \"High School Diploma\": \"HS Diploma\",\n \"Some College\": \"Some College\",\n \"Bachelor Degree\": \"Bachelor Degree\",\n \"Graduate Degree\": \"Graduate Degree\",\n};\n\nexport const formatEducation = (id: string): string => {\n const returnVal = educationFormat[id];\n return returnVal;\n};\n\nexport const format24Hr = (h24: string): string => {\n const h = Number(h24) % 12;\n return `${h === 0 ? 12 : h}${Number(h24) >= 12 ? \"pm\" : \"am\"}`;\n};\n\nexport const formatDOW = (d: string): string => {\n const dow = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thurs\", \"Fri\", \"Sat\"];\n return dow[Number(d)];\n};\n\nexport const formatWeek = (dateString: string): string => {\n const dateObj = new Date(dateString);\n return `${\n Number(dateObj.getMonth()) + 1\n }/${dateObj.getDate()}/${dateObj.getFullYear()}`;\n};\n/** GB: NOTE!\n * Parameter initialization like the below will only work if the parameter is EXACTLY\n * undefined. If null is passed in, the parameter initializer will not take effect.\n * This check allows this function to not blow things up, but of course the bigger issue is\n * the component that ends up calling this with null.\n */\nexport const getPrettyNumber = (value = 0, decimalPlaces: number): string => {\n if (value == null) value = 0;\n return Number(value.toFixed(decimalPlaces)).toLocaleString();\n};\n\nexport const formatYValue = (num: number): string => {\n return `${Math.round(Number(num) * 10000) / 100}%`;\n};\n\nexport const formatLabelWithEllipsis = (str: string, length = 20): string => {\n return str.length >= length ? `${str.substr(0, length - 1)}...` : str;\n};\n\nexport const getPolygonCentroid = (points): ICoordinate => {\n const centroid: ICoordinate = {\n latitude: 0,\n longitude: 0,\n };\n\n for (const point of points) {\n centroid.latitude += point.y;\n centroid.longitude += point.x;\n }\n\n centroid.latitude /= points.length;\n centroid.longitude /= points.length;\n\n return centroid;\n};\n\nconst setLoadingMosaicSegments = (loading: boolean) => ({\n type: SET_LOADING_MOSAIC_SEGMENTS,\n data: loading,\n});\n\nconst getMosaicSegmentsSuccess = (data: ISegment[]) => ({\n type: GET_MOSAIC_SEGMENTS_SUCCESS,\n data: data,\n});\n\nexport const getMosaicSegments = () => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingMosaicSegments(true));\n\n const retailMatchAxios = new RetailMatchAxios();\n retailMatchAxios\n .GetMosaicSegments()\n .then((response: ISegment[]) => {\n dispatch(getMosaicSegmentsSuccess(response));\n })\n .catch((error: AxiosError) => {\n notification.error({\n description: \"Error\",\n message:\n \"Failed to get mosaic segment information. Please contact SCOUT Support.\",\n duration: null, // user must close\n });\n })\n .finally(() => {\n dispatch(setLoadingMosaicSegments(false));\n });\n };\n};\n\nexport const firstLetterCapitalizer = (inputString: string): string => {\n const regexPattern = /(\\b[a-z](?!\\s))/g;\n\n inputString = inputString.toLowerCase();\n inputString = inputString.replace(regexPattern, (callbackString: string) =>\n callbackString.toUpperCase()\n );\n\n return inputString;\n};\n\nexport const shortenStr = (str: string, n: number): string => {\n return str?.length > n ? str.substr(0, n - 1) + \"...\" : str;\n};\n\nexport const determinePropensityText = (str: \"P\" | \"S\" | \"N\" | \"T\"): string => {\n switch (str) {\n case \"P\":\n return \"Very High\";\n case \"S\":\n return \"High\";\n default:\n return \"Average\";\n }\n};\n","import { IStore } from \"../Models/Models\";\n\nexport const timeoutPromise = (ms: number) => {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n};\n\nexport const isMobileDevice = (): boolean => {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n};\n\nexport const StoreAddressData = (store: IStore): string => {\n let fullAddress = \"\";\n\n if (store.storeNumber && store.storeNumber.trim() !== \"\") {\n fullAddress += store.storeNumber;\n }\n\n if (store.storeName && store.storeName.trim() !== \"\") {\n fullAddress += \" - \";\n fullAddress += store.storeName;\n }\n\n if (store.address.address1 && store.address.address1.trim() !== \"\") {\n fullAddress += \" - \";\n fullAddress += store.address.address1;\n }\n\n if (store.address.city && store.address.city.trim() !== \"\") {\n fullAddress += \" \";\n fullAddress += store.address.city;\n }\n\n if (store.address.state && store.address.state.trim() !== \"\") {\n fullAddress += \" \";\n fullAddress += store.address.state;\n }\n\n if (store.address.zip && store.address.zip.trim() !== \"\") {\n fullAddress += \" \";\n fullAddress += store.address.zip;\n }\n\n return fullAddress;\n};\n\nexport const between = (value: number, min: number, max: number, inclusive = true): boolean => {\n if (inclusive) {\n return value >= min && value <= max;\n }\n\n return value > min && value < max;\n};","import { App } from \"../Enums/App\";\nimport { AppView } from \"../Enums/AppView\";\nimport {\n SetAppPastIntroAction,\n SetAppViewAction,\n SetCurrentAppAction,\n ShowHeaderNav,\n ResetAppPastIntroAction,\n SET_APP_VIEW,\n SET_CURRENT_APP,\n SET_APP_PAST_INTRO,\n SHOW_HEADER_NAV,\n RESET_APP_PAST_INTRO,\n} from \"../Types/AppActionTypes\";\n\nexport const setCurrentApp = (app: App): SetCurrentAppAction => ({\n type: SET_CURRENT_APP,\n data: app,\n});\n\nexport const setAppView = (view: AppView): SetAppViewAction => ({\n type: SET_APP_VIEW,\n data: view,\n});\n\nexport const setAppPastIntro = (app: App): SetAppPastIntroAction => ({\n type: SET_APP_PAST_INTRO,\n data: app,\n});\n\nexport const resetAppPastIntro = (app: App): ResetAppPastIntroAction => ({\n type: RESET_APP_PAST_INTRO,\n data: app,\n});\n\nexport const showHeaderNav = (show: boolean): ShowHeaderNav => ({\n type: SHOW_HEADER_NAV,\n data: show,\n});\n","import { hasFeature } from \"../Actions/UserActions\";\nimport { ScoutFeature } from \"../Enums/ScoutFeature\";\nimport { IUser } from \"../Models/IUser\";\nimport { App } from \"../View/Products/Enums/App\";\n\nexport const getAllReportsLink = (user: IUser): string => {\n return hasFeature(user, ScoutFeature.Scout4)\n ? `${window.location.origin}/Home/Scout#/reports`\n : `${window.location.origin}/Products#/MyReports`;\n};\n\nexport const getSingleReportLink = (user: IUser, reportType: App, jobId: string): string => {\n const base = hasFeature(user, ScoutFeature.Scout4)\n ? `${window.location.origin}/Home/Scout#`\n : `${window.location.origin}/Products#/Reports`;\n\n let type: string;\n\n if (hasFeature(user, ScoutFeature.Scout4)) {\n type = reportType === App.Match ? \"retailMatch\" : \"gps/insight\";\n } else {\n type = reportType === App.Match ? \"match\" : \"mobilytics\";\n }\n\n return `${base}/${type}/${jobId}`;\n};\n\nexport const getConfigReportingEnv = (): string | null => {\n const hostname = window.location.hostname;\n switch (hostname) {\n case \"localhost\":\n return \"?env=dev\";\n case \"platform-qat.buxtonco.com\":\n return \"?env=qat\";\n case \"platform-uat.buxtonco.com\":\n return \"?env=uat\";\n default:\n return \"\";\n }\n};","import { createSelector } from \"reselect\";\n\nimport { IMapMarker } from \"../Models/IMapMarker\";\nimport { IMapPolygon } from \"../Models/IMapPolygon\";\nimport { IRootReducer } from \"../Reducers/RootReducer\";\n\nexport const mapMarkersSelector = createSelector(\n (state: IRootReducer) => state.mapReducer.markers,\n (markers: IMapMarker[]) => markers\n);\n\nexport const mapPolygonsSelector = createSelector(\n (state: IRootReducer) => state.mapReducer.polygons,\n (polygons: IMapPolygon[]) => polygons\n);\n\nexport const mapCenterSelector = createSelector(\n (state: IRootReducer) => state.mapReducer.center,\n (center: google.maps.LatLng) => center\n);\n\nexport const mapZoomSelector = createSelector(\n (state: IRootReducer) => state.mapReducer.zoom,\n (zoom: number) => zoom\n);\n\nexport const mapLoadingSelector = createSelector(\n (state: IRootReducer) => state.mapReducer.showLoadingOverlay,\n (showLoadingOverlay: boolean) => showLoadingOverlay\n);\n\nexport const mapSelector = createSelector(\n [\n mapMarkersSelector,\n mapPolygonsSelector,\n mapCenterSelector,\n mapZoomSelector,\n ],\n (\n markers,\n polygons,\n center,\n zoom,\n ) => ({\n markers,\n polygons,\n center,\n zoom,\n })\n);\n","import { createSelector } from \"reselect\";\n\nimport { IBrandSampleSet } from \"../../../Models/IBrandSampleSet\";\nimport { IBrand } from \"../../../Models/Models\";\nimport { App } from \"../Enums/App\";\nimport { IRootReducer } from \"../Reducers/RootReducer\";\nimport { currentAppSelector } from \"./AppSelectors\";\n\nexport type BrandSampleSetInfo = {\n size: number;\n correlationId: number;\n};\n\nexport const loadingBrandsSelector = createSelector(\n (state: IRootReducer) => state.brandsReducer.loadingBrands,\n (loading: boolean) => loading,\n);\n\nexport const brandsSelector = createSelector(\n (state: IRootReducer) => state.brandsReducer.brands,\n (brands: IBrand[]) => brands,\n);\n\nexport const brandsWithoutShoppingCentersSelector = createSelector(\n (state: IRootReducer) => state.brandsReducer.brands,\n brandsSelector,\n (brands: IBrand[]) => brands.filter(brand => !brand.isShoppingCenter),\n);\n\nexport const brandSampleSetDataSelector = createSelector(\n (state: IRootReducer) => state.brandsReducer.sampleSet,\n currentAppSelector,\n brandsWithoutShoppingCentersSelector,\n (sampleSet: IBrandSampleSet[], app: App, nonShoppingCenterBrands: IBrand[]) => {\n if (app === App.Match) {\n return sampleSet.filter(location => nonShoppingCenterBrands.some(brand => brand.brandId === location.brandId));\n } else {\n return sampleSet;\n }\n }\n);\n\nexport const loadingBrandSampleSetDataSelector = createSelector(\n (state: IRootReducer) => state.brandsReducer.loadingSampleSet,\n (loading: boolean) => loading,\n);\n\nexport const brandSampleSetInfoSelector = createSelector(\n (state: IRootReducer) => state.brandsReducer.sampleSet,\n (state: IRootReducer) => state.brandsReducer.sampleSetCorrelationId,\n (sampleSet: IBrandSampleSet[], correlationId: number): BrandSampleSetInfo => ({\n size: sampleSet.length,\n correlationId,\n }),\n);\n","export const regularExpressions = {\n UsaRegex: / USA$|, USA$/gmi, //Regular Expression that has the last occurrence of the word \"USA\" or \", USA\" \n}","export enum AnalysisSource {\n Nexus,\n Insight,\n RetailMatch,\n Buxton\n}\n","import { ScoutFeature } from \"../../../Enums/ScoutFeature\";\n\nexport interface ILoginUserData {\n firstName: string;\n lastName: string;\n initials: string;\n featureAccess: ScoutFeature[];\n userID: number;\n}\n","import { rgbToHex } from \"../../../Util/ColorUtil\";\n\nexport const colors = [\n \"#F44336\",\n \"#C62828\",\n \"#AD1457\",\n \"#FF1744\",\n \"#E91E63\",\n \"#9C27B0\",\n \"#7B1FA2\",\n \"#6A1B9A\",\n \"#4A148C\",\n \"#AA00FF\",\n \"#00B0FF\",\n \"#283593\",\n \"#3D59FE\",\n \"#1B237D\",\n \"#607D8B\",\n \"#19BC9C\",\n \"#26A69A\",\n \"#4FC3F7\",\n \"#66BB6A\",\n \"#004D40\",\n \"#00796B\",\n \"#2E7D32\",\n \"#1C5E20\",\n \"#F7DB69\",\n \"#E0C341\",\n \"#FFCB28\",\n \"#FFA000\",\n \"#FF5722\",\n \"#EF6C03\",\n \"#E64919\",\n];\n\nexport const stringToColor = (val: number): number[] => {\n //--val = 2033\n const r = (val * 1) % 255, //--192\n g = (val * 12) % 255, //--171\n b = (val * 25) % 255; //--150\n return [r, g, b]; //--[192, 171, 150]\n};\n\nexport const shadeColor = (color: string, percent: number): string => {\n const f = parseInt(color.slice(1), 16),\n t = percent < 0 ? 0 : 255,\n p = percent < 0 ? percent * -1 : percent,\n R = f >> 16,\n G = (f >> 8) & 0x00ff,\n B = f & 0x0000ff;\n return (\n \"#\"\n + (\n 0x1000000\n + (Math.round((t - R) * p) + R) * 0x10000\n + (Math.round((t - G) * p) + G) * 0x100\n + (Math.round((t - B) * p) + B)\n )\n .toString(16)\n .slice(1)\n );\n};\n\nexport const createGenericIcon = (sourceText: string): Promise => {\n return new Promise((resolve) => {\n const nameArray = sourceText.split(\"\"); //--[\"W\", \"a\", \"l\", \"m\"........etc]\n let nameCharCode = 0;\n for (let i = 0; i < nameArray.length; i++) {\n nameCharCode += sourceText.charCodeAt(i); //--number - ex. 87\n }\n\n const rgbNameColor = stringToColor(nameCharCode); //--[192, 171, 150]\n const hexNameColor = rgbToHex(\n rgbNameColor[0],\n rgbNameColor[1],\n rgbNameColor[2]\n ); //--\"#c0ab96\"\n\n const canvas = document.createElement(\"canvas\"); //--html element - - has fill, stroke, etc\n const context = canvas.getContext(\"2d\"); //--CanvasRenderingContext2D { ... }\n\n canvas.height = 176;\n canvas.width = 176;\n\n //Gradient\n const hexGrdColor = shadeColor(hexNameColor, 0.5); //--hexGrdColor = \"#e0d5cb\", hexNameColor = \"c0ab96\"\n const grd = context.createLinearGradient(0, 0, 17, 0);\n\n grd.addColorStop(0, hexNameColor);\n grd.addColorStop(1, hexGrdColor);\n\n const lastThreeChars = sourceText.replace(/ /g, \"\").slice(-3);\n const lastThreeActualLastIndex = lastThreeChars?.length - 1;\n const hex\n = colors[\n (lastThreeChars[Math.min(0, lastThreeActualLastIndex)].charCodeAt(0)\n + lastThreeChars[Math.min(1, lastThreeActualLastIndex)].charCodeAt(0)\n + lastThreeChars[Math.min(2, lastThreeActualLastIndex)].charCodeAt(0))\n % 30\n ]; //hexGrdColor;//grd;\n context.fillStyle = hex;\n context.fillRect(0, 0, 100, 100);\n\n const svgXml\n = `\n \n \n \n \n \n \n \n \n \n \n `;\n const svg64 = btoa(svgXml);\n const b64Start = \"data:image/svg+xml;base64,\";\n const image64 = b64Start + svg64;\n\n const img = document.createElement(\"img\");\n img.src = image64;\n img.onload = () => {\n context.drawImage(img, 0, 0);\n\n const light = \"#FFF\";\n let textColor = \"\";\n textColor = light;\n\n context.font = \"70px sans-serif\";\n context.fillStyle = textColor;\n context.textAlign = \"center\";\n context.textBaseline = \"middle\";\n context.fillText(sourceText[0], canvas.width / 2, canvas.height / 2);\n\n resolve(canvas.toDataURL());\n };\n });\n};\n","import { IPolygon } from \"./IPolygon\";\n\nexport interface ICustomPolygon extends IPolygon {\n\tpoints: google.maps.LatLng[];\n\tisSgPolygon?: boolean;\n}\n","export enum AreaType {\n None = 'None',\n DriveTime = 'Drive Time',\n MileRadius = 'Mile Radius',\n Geography = 'Geography'\n}\n\nexport enum GeographyType {\n National = 'National',\n Region = 'Region',\n State = 'State',\n DMA = 'DMA',\n ZipCode = 'Zip Code'\n}\n\nexport interface GeographyDefinition {\n areaType: AreaType;\n geographyType: GeographyType;\n geographyKey: string;\n mileRadius: number;\n driveTime: number;\n}\n\nexport enum NumericComparison\n{\n EqualTo = \"Equal To\",\n AtLeast = \"At Least\",\n LessThan = \"Less Than\"\n}\n\nexport interface NumericConstraint\n{\n value: T;\n comparison: NumericComparison;\n}\n\nexport interface MarketPresenceOptions {\n geographyDefinition: GeographyDefinition;\n tradeAreaDefinition: GeographyDefinition;\n showTenants: boolean;\n numberOfLocations: [NumericComparison, number];\n}\n\nexport interface VoidGapOptions {\n geography: GeographyDefinition;\n numberOfLocations: NumericConstraint;\n}\n\nexport interface SquareFootageOptions {\n min: number;\n max: number;\n}\n\nexport enum GrowthType {\n GrowthRate = 'Growth Rate',\n LocationGrowth = 'Location Growth'\n}\n\nexport enum GrowthPeriod {\n Last12Months = 'Last 12 Months'\n}\n\nexport interface UnitsAndGrowthOptions {\n minLocations: number;\n maxLocations: number;\n growthType: GrowthType;\n growthPeriod: GrowthPeriod;\n rate: number; \n}\n\nexport interface LatLon {\n latitude: number;\n longitude: number;\n}\n\nexport interface ViewportBounds {\n southWest: LatLon;\n northEast: LatLon;\n zoom: number;\n}\n\nexport interface IVoidGapRequest {\n tenantSubcategories: string[];\n marketPresence: MarketPresenceOptions;\n voidGap: VoidGapOptions;\n squareFootage: SquareFootageOptions;\n unitsAndGrowth: UnitsAndGrowthOptions;\n viewportBounds: ViewportBounds;\n}","import * as types from \"./Types\";\nimport { IDashboardMessage } from \"../Models/Models\";\nimport * as DashboardMessageLogic from \"../Logic/DashboardMessageLogic\";\nimport { ActiveApp } from \"../Enums/Enums\";\n\ndeclare let scout;\n\nexport const loadScout = (data = true) => ({\n type: types.LOAD_SCOUT,\n data: data,\n});\n\nexport const setScoutIsShowing = (scoutIsShowing: boolean) => ({\n type: types.SET_SCOUT_IS_SHOWING,\n data: scoutIsShowing,\n});\n\nexport const setActiveApp = (activeApp: ActiveApp) => ({\n type: types.SET_ACTIVE_APP,\n data: activeApp,\n});\n\nexport const setShowSplashScreen = (showSplashScreen: boolean) => ({\n type: types.SET_SHOW_SPLASH_SCREEN,\n data: showSplashScreen,\n});\n\nexport const loadDefaultBookmark = () => {\n const message: IDashboardMessage = {\n targetElement: \"dashboardMessageReceiverDefaultBookmark\",\n message: {\n text: \"LOAD_DEFAULT_BOOKMARK\",\n data: true,\n },\n };\n\n DashboardMessageLogic.sendDashBoardMessage(message);\n};\n\nexport const sendMessageShowScout = () => {\n const message: IDashboardMessage = {\n targetElement: \"dashboardMessageReceiverTopNav\",\n message: {\n text: \"SHOW_SCOUT\",\n data: null,\n },\n };\n\n DashboardMessageLogic.sendDashBoardMessage(message);\n};\n\nexport const sendMessageScoutSearch = () => {\n const message: IDashboardMessage = {\n targetElement: \"dashboardMessageReceiverTopNav\",\n message: {\n text: \"SEARCH\",\n data: null,\n },\n };\n\n DashboardMessageLogic.sendDashBoardMessage(message);\n};\n\nexport const sendMessageShowDashboard = () => {\n const message: IDashboardMessage = {\n targetElement: \"dashboardMessageReceiverTopNav\",\n message: {\n text: \"SHOW_DASHBOARD\",\n data: null,\n },\n };\n\n DashboardMessageLogic.sendDashBoardMessage(message);\n};\n\nexport const sendMessageShowReports = () => {\n const message: IDashboardMessage = {\n targetElement: \"dashboardMessageReceiverTopNav\",\n message: {\n text: \"SHOW_REPORTS\",\n data: null,\n },\n };\n\n DashboardMessageLogic.sendDashBoardMessage(message);\n};\n\nexport const sendMessageShowRetailMatches = () => {\n const message: IDashboardMessage = {\n targetElement: \"dashboardMessageReceiverTopNav\",\n message: {\n text: \"SHOW_MATCHES\",\n data: null,\n },\n };\n\n DashboardMessageLogic.sendDashBoardMessage(message);\n};\n\nexport const loadScoutIfNeeded = (activeApp: ActiveApp): void => {\n const scoutContainer = document.getElementById(\"experimental-scout\");\n const scoutAppItems = scoutContainer.getElementsByClassName(\"sct-workspace\");\n\n if (\n activeApp === ActiveApp.SCOUT\n || activeApp === ActiveApp.BOOKMARKS\n || activeApp === ActiveApp.RETAIL_MATCHES\n ) {\n scoutContainer.style.display = null;\n for (let i = 0; i < scoutAppItems.length; i++) {\n scoutAppItems[i].classList.remove(\"visible\");\n }\n\n // if (!scout.appIsReady) {\n // scout.actions.initialize();\n // }\n }\n};\n","import { Store } from \"./IStore\";\n\nexport interface IStoreUpdateAuditResult {\n importedStoreNumbersAreUnique: boolean;\n existingStoreNumbersAreUnique: boolean;\n importRecordCountBelowLimit: boolean;\n importedStoreNumbersAreNotNull: boolean;\n success: boolean;\n importedStoreCount: number;\n storesToBeAdded: Store[];\n storesToBeUpdated: Store[];\n storesToBeRemoved: Store[];\n}\n","import { IUser } from \"../../../Models/Models\";\nimport { GetLoginUserDataFailureAction } from \"../Types/LoginActionTypes\";\nimport {\n GetAllUsersFailureAction,\n GetAllUsersInitAction,\n GetAllUsersSuccessAction,\n GetUserInitAction,\n GetUserSuccessAction,\n GET_ALL_USERS_FAILURE,\n GET_ALL_USERS_INIT,\n GET_ALL_USERS_SUCCESS,\n GET_USER_FAILURE,\n GET_USER_INIT,\n GET_USER_SUCCESS,\n SetLoadingAllUsersAction,\n SetShowActiveUsersAction,\n SET_LOADING_ALL_USERS,\n SET_SHOW_ACTIVE_USERS\n} from \"../Types/UserActionTypes\";\n\n/** misc */\n\nexport const setShowActiveUsers = (showActiveUsers: boolean): SetShowActiveUsersAction => ({\n type: SET_SHOW_ACTIVE_USERS,\n data: showActiveUsers,\n});\n\nexport const setLoadingAllUsers = (loading: boolean): SetLoadingAllUsersAction => ({\n type: SET_LOADING_ALL_USERS,\n data: loading,\n});\n\n/** initiate */\n\nexport const getUser = (): GetUserInitAction => ({\n type: GET_USER_INIT,\n data: null,\n});\n\nexport const getAllUsersInitiate = (): GetAllUsersInitAction => ({\n type: GET_ALL_USERS_INIT,\n data: null,\n});\n\n/** success */\n\nexport const getUserSuccess = (user: IUser): GetUserSuccessAction => ({\n type: GET_USER_SUCCESS,\n data: user,\n});\n\nexport const getAllUsersSuccess = (users: IUser[]): GetAllUsersSuccessAction => ({\n type: GET_ALL_USERS_SUCCESS,\n data: users,\n});\n\n/** failure */\n\nexport const getAllUsersFailure = (errMsg: string): GetAllUsersFailureAction => ({\n type: GET_ALL_USERS_FAILURE,\n data: errMsg,\n});\n\nexport const getUserFailure = (errMsg: string): GetLoginUserDataFailureAction => ({\n type: GET_USER_FAILURE,\n data: errMsg,\n});","export interface IColorizeBy {\n name: string;\n id: string;\n disabled: boolean;\n orderIndex: number;\n}\n\nexport const regionNames:{[key: string]: string} = {};\n//USA\nregionNames[\"ENC\"] = \"East North Central\";\nregionNames[\"ESC\"] = \"East South Central\";\nregionNames[\"MA\"] = \"Mid Atlantic\";\nregionNames[\"NE\"] = \"New England\";\nregionNames[\"SA\"] = \"South Atlantic\";\nregionNames[\"WM\"] = \"West Mountain\";\nregionNames[\"WNC\"] = \"West North Central\";\nregionNames[\"WP\"] = \"West Pacific\";\nregionNames[\"WSC\"] = \"West South Central\";\n//CAN\nregionNames[\"ATL\"] = \"Atlantic Canada\";\nregionNames[\"BCL\"] = \"British Columbia\";\nregionNames[\"ONT\"] = \"Ontario\";\nregionNames[\"PRA\"] = \"Prairies\";\nregionNames[\"QBC\"] = \"Quebec\";\nregionNames[\"TER\"] = \"Territories\";\n\nexport const colorizeBy: IColorizeBy[] = [\n {\n name: \"Single Color\",\n id: \"Single Color\",\n disabled: false,\n orderIndex: 1,\n },\n {\n name: \"Quadrant\",\n id: \"Quadrant\",\n disabled: false,\n orderIndex: 2,\n },\n {\n name: \"Model\",\n id: \"Model\",\n disabled: false,\n orderIndex: 3,\n },\n {\n name: \"Locations\",\n id: \"Locations\",\n disabled: true,\n orderIndex: 4,\n },\n {\n name: \"BUDS\",\n id: \"BUDS\",\n disabled: true,\n orderIndex: 5,\n },\n {\n name: \"Region\",\n id: \"Region\",\n disabled: true,\n orderIndex: 6,\n },\n];\n","import { DigitalShareItemType } from \"../Enums/DigitalShareItemType\";\n\nexport interface IDigitalShareItem {\n imgUrl: string;\n isSelected: boolean;\n type: DigitalShareItemType;\n sectionTitle: string;\n captionAboveTitle: string;\n itemTitle: string;\n hideItemTitle?: boolean;\n hideItemText?: boolean;\n hideItem?: boolean;\n}\n\nexport const createDigitalShareItem = (\n type: DigitalShareItemType,\n isSelected: boolean,\n imgUrl: string,\n sectionTitle: string,\n captionAboveTitle: string,\n itemTitle: string,\n hideItemTitle = false,\n hideItemText = false,\n hideItem = false\n): IDigitalShareItem => {\n return {\n imgUrl,\n isSelected,\n type,\n sectionTitle,\n captionAboveTitle,\n itemTitle,\n hideItemTitle,\n hideItemText,\n hideItem,\n };\n};\n","import { ScoutFeature } from \"../../../Enums/ScoutFeature\";\nimport { App } from \"../Enums/App\";\n\nexport const appFeatureLookup = new Map()\n .set(App.Scout, [ScoutFeature.Scout4])\n .set(App.Match, [ScoutFeature.RetailMatchReports])\n .set(App.Mobilytics, [ScoutFeature.GpsInsights])\n .set(App.MyReports, [])\n .set(App.Reports, [])\n .set(App.UserSettings, [ScoutFeature.UserSettings])\n .set(App.MobilyticsPro, [ScoutFeature.MobilyticsPro])\n .set(App.Iq, [ScoutFeature.IQ])\n .set(App.Factor, [ScoutFeature.Factor])\n .set(App.Analyze, [ScoutFeature.Analyze])\n .set(App.Persona, [ScoutFeature.Persona])\n;\n\nexport const isAppOutsideOfScout = (app: App): boolean => {\n return app === App.Iq || app === App.Factor || app === App.Analyze || app === App.Persona;\n};\n","import { IBrand } from \"../../../../Models/IBrand\";\nimport { IBrandOverviewTableRecord } from \"../../../../Models/IBrandOverviewTableRecord\";\nimport { IBrandSummaryData } from \"../../../../Models/IBrandSummaryData\";\nimport {\n IRetailMatchJobResult,\n IStoreScoreRecord\n} from \"../../../../Models/IRetailMatch\";\n\nexport const MAX_BRAND_COUNT_OPTIMIZATION_MODE = 100;\nexport const TOO_FEW_RECORD_EXPLANATION\n = \"Not enough consumer information was available for this brand's sample set to provide a detailed analysis.\";\n\nexport const pathPrefix = (pathname: string): string => {\n const arr = pathname.split(\"/\");\n return arr[1] === \"retailMatch\"\n ? \"/retailMatch\"\n : \"/Reports/match\";\n};\n\nexport const brandLinkURL = (pathname: string, isSharing: boolean, jobId: string, brandId: string): string => {\n return isSharing \n ? `/${brandId}` \n : `${pathPrefix(pathname)}/${jobId}/${brandId}`;\n};\n\nexport const overviewLinkURL = (pathname: string, isSharing: boolean, jobId: string): string => {\n return isSharing \n ? `/` \n : `${pathPrefix(pathname)}/${jobId}`;\n};\n\nexport const brandStores = (stores: IStoreScoreRecord[], brandId: string): IStoreScoreRecord[] => {\n return stores.filter((store) => {\n return store.bid === brandId;\n });\n};\n\nexport const getBrandSummaryData = (\n brand: IBrand,\n jobResult: IRetailMatchJobResult\n): IBrandSummaryData => {\n const brandOverviewRecord = jobResult.chartData.overview.find(\n (overviewRecord) => overviewRecord.brandId === brand.brandId\n );\n\n const cvRollup = jobResult.chartData.brandConsumerViewRollups?.find(\n (cv) => cv.id === brandOverviewRecord?.brandId\n );\n\n return {\n overview: brandOverviewRecord,\n brand: brand,\n tooFewRecords: cvRollup ? false : true,\n };\n};\n\nexport const rankTableSort = (a: IBrandOverviewTableRecord, b: IBrandOverviewTableRecord): number => {\n const aRank = a.brandSummary.overview?.rank || 99;\n const bRank = b.brandSummary.overview?.rank || 99;\n return aRank - bRank;\n};\n\nexport const rankDataSort = (a: IBrandSummaryData, b: IBrandSummaryData): number => {\n const aRank = a.overview?.rank || 99;\n const bRank = b.overview?.rank || 99;\n return aRank - bRank;\n};\n","import { AxiosError } from \"axios\";\nimport { IBrand } from \"../../../Models/IBrand\";\nimport { IBrandSampleSet } from \"../../../Models/IBrandSampleSet\";\nimport { IGetBrandsSampleSetDataByClosestRequest } from \"../../../Models/Requests/IGetBrandsSampleSetDataByClosestRequest\";\nimport { IGetBrandsSampleSetDataByGeoRequest } from \"../../../Models/Requests/IGetBrandsSampleSetDataByGeoRequest\";\nimport {\n GetAllBrandsFailureAction,\n GetAllBrandsInitiateAction,\n GetAllBrandsSuccessAction,\n GetBrandSampleSetLocationsByClosestFailureAction,\n GetBrandSampleSetLocationsByClosestInitiateAction,\n GetBrandSampleSetLocationsByClosestSuccessAction,\n GetBrandSampleSetLocationsByGeoFailureAction,\n GetBrandSampleSetLocationsByGeoInitiateAction,\n GetBrandSampleSetLocationsByGeoSuccessAction,\n GET_ALL_BRANDS_FAILURE,\n GET_ALL_BRANDS_INITIATE,\n GET_ALL_BRANDS_SUCCESS,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_FAILURE,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_INITIATE,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_SUCCESS,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_FAILURE,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_INITIATE,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_SUCCESS,\n SetLoadingBrandsAction,\n SetLoadingBrandSampleSetLocationsAction,\n SET_LOADING_BRANDS,\n SET_LOADING_BRAND_SAMPLE_SET_LOCATIONS,\n ResetBrandSampleSetAction,\n RESET_BRAND_SAMPLE_SET,\n} from \"../Types/BrandActionTypes\";\n\n/** misc */\nexport const setLoadingBrands = (loading: boolean): SetLoadingBrandsAction => ({\n type: SET_LOADING_BRANDS,\n data: loading,\n});\n\nexport const setLoadingBrandSampleSetLocations = (\n loading: boolean\n): SetLoadingBrandSampleSetLocationsAction => ({\n type: SET_LOADING_BRAND_SAMPLE_SET_LOCATIONS,\n data: loading,\n});\n\n/** initiate */\n\nexport const getBrandSampleSetLocationsByGeoInitiate = (\n request: IGetBrandsSampleSetDataByGeoRequest,\n correlationId: number,\n): GetBrandSampleSetLocationsByGeoInitiateAction => ({\n type: GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_INITIATE,\n data: request,\n correlationId,\n});\n\nexport const getBrandSampleSetLocationsByClosestInitiate = (\n request: IGetBrandsSampleSetDataByClosestRequest,\n correlationId: number,\n): GetBrandSampleSetLocationsByClosestInitiateAction => ({\n type: GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_INITIATE,\n data: request,\n correlationId,\n});\n\nexport const getAllBrandsInitiate = (): GetAllBrandsInitiateAction => ({\n type: GET_ALL_BRANDS_INITIATE,\n data: null,\n});\n\n/** success */\n\nexport const getAllBrandsSuccess = (brands: IBrand[]): GetAllBrandsSuccessAction => ({\n type: GET_ALL_BRANDS_SUCCESS,\n data: brands,\n});\n\nexport const getBrandSampleSetLocationsByGeoSuccess = (\n sampleSet: IBrandSampleSet[],\n correlationId: number,\n): GetBrandSampleSetLocationsByGeoSuccessAction => ({\n type: GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_SUCCESS,\n data: sampleSet,\n correlationId,\n});\n\nexport const getBrandSampleSetLocationsByClosestSuccess = (\n sampleSet: IBrandSampleSet[],\n correlationId: number,\n): GetBrandSampleSetLocationsByClosestSuccessAction => ({\n type: GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_SUCCESS,\n data: sampleSet,\n correlationId,\n});\n\n/** failure */\n\nexport const getAllBrandsFailure = (error: AxiosError): GetAllBrandsFailureAction => ({\n type: GET_ALL_BRANDS_FAILURE,\n data: error.message,\n});\n\nexport const getBrandSampleSetLocationsByGeoFailure = (\n error: AxiosError,\n correlationId: number,\n): GetBrandSampleSetLocationsByGeoFailureAction => ({\n type: GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_FAILURE,\n data: error.message,\n correlationId,\n});\n\nexport const getBrandSampleSetLocationsByClosestFailure = (\n error: AxiosError,\n correlationId: number,\n): GetBrandSampleSetLocationsByClosestFailureAction => ({\n type: GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_FAILURE,\n data: error.message,\n correlationId,\n});\n\nexport const resetBrandSampleSet = (\n correlationIdBase,\n): ResetBrandSampleSetAction => ({\n type: RESET_BRAND_SAMPLE_SET,\n data: correlationIdBase,\n});","import { SET_MAP_ZOOM } from \"../../../Actions/Types\";\nimport { IMapMarker } from \"../Models/IMapMarker\";\nimport {\n SetLoadingOverlay,\n SetMapCenterAction,\n SetMapMarkersAction,\n SetMapZoomAction,\n SET_LOADING_OVERLAY,\n SET_MAP_CENTER,\n SET_MAP_MARKERS_NEW,\n} from \"../Types/MapActionTypes\";\n\n/** misc */\nexport const setMapMarkers = (markers: IMapMarker[]): SetMapMarkersAction => ({\n type: SET_MAP_MARKERS_NEW,\n data: markers,\n});\n\nexport const setShowLoadingOverlay = (loading: boolean): SetLoadingOverlay => ({\n type: SET_LOADING_OVERLAY,\n data: loading,\n});\n\nexport const setMapCenter = (center: google.maps.LatLng): SetMapCenterAction => ({\n type: SET_MAP_CENTER,\n data: center,\n});\n\nexport const setMapZoom = (zoom: number): SetMapZoomAction => ({\n type: SET_MAP_ZOOM,\n data: zoom,\n});\n","import { AxiosError } from \"axios\";\nimport { IGCPBigQueryJob } from \"../../../Models/IGCPBigQueryJob\";\nimport { IMyReportsReport } from \"../../../Models/IMyReportsReport\";\nimport { App } from \"../Enums/App\";\nimport { IReportProgress } from \"../Models/IReportProgress\";\nimport { IGetJobsRequest } from \"../Models/Requests/IGetJobsRequest\";\nimport {\n DeleteReportInitiateAction,\n DELETE_REPORT_INITIATE,\n GetRecentReportsSuccessAction,\n GetRecentMatchReportsSuccessAction,\n GetRecentMobilyticsReportsSuccessAction,\n GetRecentReportsFailureAction,\n GetRecentReportsInitiateAction,\n GetReportsFailureAction,\n GetReportsInitiateAction,\n GetReportsSuccessAction,\n GET_RECENT_REPORTS_SUCCESS,\n GET_RECENT_MATCH_REPORTS_SUCCESS,\n GET_RECENT_MOBILYTICS_REPORTS_SUCCESS,\n GET_RECENT_REPORTS_FAILURE,\n GET_RECENT_REPORTS_INITIATE,\n GET_REPORTS_FAILURE,\n GET_REPORTS_INITIATE,\n GET_REPORTS_SUCCESS,\n SetDeletingReportAction,\n SetDeletingReportSuccessAcction,\n SetLoadingReportsAction,\n SetReportProgress,\n SET_DELETING_REPORT,\n SET_DELETING_REPORT_SUCCESS,\n SET_LOADING_REPORTS,\n SET_REPORT_PROGRESS\n} from \"../Types/ReportActionTypes\";\n\n/** misc */\nexport const setLoadingReports = (loading: boolean): SetLoadingReportsAction => ({\n type: SET_LOADING_REPORTS,\n data: loading,\n});\nexport const setDeletingReport = (deleting: boolean): SetDeletingReportAction => ({\n type: SET_DELETING_REPORT,\n data: deleting,\n});\nexport const setReportProgress = (progress: IReportProgress): SetReportProgress => ({\n type: SET_REPORT_PROGRESS,\n data: progress,\n});\n/** initiate */\nexport const deleteReportInitiate = (\n jobId: string,\n): DeleteReportInitiateAction => ({\n type: DELETE_REPORT_INITIATE,\n data: jobId,\n});\nexport const getReportsInitiate = (\n request: IGetJobsRequest,\n): GetReportsInitiateAction => ({\n type: GET_REPORTS_INITIATE,\n data: request,\n});\nexport const getRecentReportsInitiate = (\n app: App,\n): GetRecentReportsInitiateAction => ({\n type: GET_RECENT_REPORTS_INITIATE,\n data: app,\n});\n/** success */\nexport const getReportsSuccess = (\n reports: IMyReportsReport[],\n): GetReportsSuccessAction => ({\n type: GET_REPORTS_SUCCESS,\n data: reports,\n});\nexport const getRecentReportsSuccess = (\n reports: IGCPBigQueryJob[],\n): GetRecentReportsSuccessAction => ({\n type: GET_RECENT_REPORTS_SUCCESS,\n data: reports,\n});\nexport const getRecentMatchReportsSuccess = (\n reports: IGCPBigQueryJob[],\n): GetRecentMatchReportsSuccessAction => ({\n type: GET_RECENT_MATCH_REPORTS_SUCCESS,\n data: reports,\n});\nexport const getRecentMobilyticsReportsSuccess = (\n reports: IGCPBigQueryJob[],\n): GetRecentMobilyticsReportsSuccessAction => ({\n type: GET_RECENT_MOBILYTICS_REPORTS_SUCCESS,\n data: reports,\n});\nexport const setDeletingReportSuccess = (\n jobId: string,\n): SetDeletingReportSuccessAcction => ({\n type: SET_DELETING_REPORT_SUCCESS,\n data: jobId,\n});\n/** failure */\nexport const getReportsFailure = (error: AxiosError): GetReportsFailureAction => ({\n type: GET_REPORTS_FAILURE,\n data: error.message,\n});\nexport const getRecentReportsFailure = (error: AxiosError): GetRecentReportsFailureAction => ({\n type: GET_RECENT_REPORTS_FAILURE,\n data: error.message,\n});\n","import { IConfigurableReport } from \"../Contracts/IConfigurableReport\";\nimport { AnalysisSource } from \"../Enums/AnalysisSource\";\nimport { AnalysisStatus } from \"../Enums/AnalysisStatus\";\nimport { ReportType } from \"../Models/IReportType\";\nimport {\n IAnalysisItem,\n IBatch,\n IGCPBigQueryJob,\n ISegment,\n} from \"../Models/Models\";\n\nexport const segmentFormatter = (\n name: string,\n segments: ISegment[]\n): string => {\n const foundSegment: ISegment = segments.find((seg: ISegment) => {\n return seg.segmentKey === name;\n });\n return foundSegment\n ? `${foundSegment.segmentKey}: ${foundSegment.name}`\n : /** this shouldn't be hit, but covering it just in case */\n \"n/a\";\n};\n\nexport function mapBatchesToAnalysisItems(batches: IBatch[]): IAnalysisItem[] {\n return batches.map((report: IBatch) => {\n return {\n id: report.id,\n createdByUserId: report.createdByUserID,\n cid: report.cid,\n startDateTime: report.startDateTime,\n endDateTime: report.finishedDateTime,\n createdDateTime: report.createdDateTime,\n source: AnalysisSource.Nexus,\n studyAreaCount: report.jobCount,\n status: report.status,\n name: report.name,\n type: report.overallJobType,\n } as IAnalysisItem;\n });\n}\n\nexport function mapGcpJobsToAnalysisItems(\n jobs: IGCPBigQueryJob[]\n): IAnalysisItem[] {\n return jobs.map((job: IGCPBigQueryJob) => {\n return {\n id: job.id,\n jobId: job.jobId,\n createdByUserId: job.uid,\n cid: job.cid,\n startDateTime: job.queryFromDateTime,\n endDateTime: job.queryToDateTime,\n createdDateTime: new Date(job.createdDateTime.toString()),\n source: mapGcpJobType(job.jobType),\n studyAreaCount: 1,\n status: mapGcpJobStatusToAnalysisStatus(job),\n name: job.title,\n type: new ReportType(getGcpFriendlyReportType(job.jobType)),\n } as IAnalysisItem;\n });\n}\n\nexport function mapConfigurableReportsToAnalysisItems(\n reports: IConfigurableReport[]\n): IAnalysisItem[] {\n return reports.map((report: IConfigurableReport) => {\n return {\n id: report.id,\n jobId: report.jobId,\n createdByUserId: report.createdByUserId,\n cid: report.cid,\n startDateTime: new Date(report.startDateTime),\n endDateTime: new Date(report.startDateTime),\n createdDateTime: new Date(report.startDateTime),\n source: report.source,\n studyAreaCount: report.studyAreaCount,\n status: report.status,\n name: report.name,\n type: {\n typeID: report.reportType.typeId,\n name: `${report.reportType.name}${report.studyAreaCount > 1 ? \" (Comparison)\" : \"\"}`,\n featureID: null,\n description: \"Configurable Report Type\",\n modifiedDateTime: null,\n iconName: \"\",\n },\n } as IAnalysisItem;\n });\n}\n\nexport function mapGcpJobType(jobType: string): AnalysisSource {\n let type: AnalysisSource = AnalysisSource.Insight;\n switch (jobType.toLowerCase()) {\n case \"retail_match\": {\n type = AnalysisSource.RetailMatch;\n break;\n }\n }\n return type;\n}\n\nexport function mapGcpJobStatusToAnalysisStatus(\n job: IGCPBigQueryJob\n): AnalysisStatus {\n let status: AnalysisStatus;\n\n switch (job.status) {\n case \"RUNNING\": {\n status = AnalysisStatus.Running;\n break;\n }\n case \"CACHING\": {\n status = AnalysisStatus.Caching;\n break;\n }\n case \"DONE\": {\n status = AnalysisStatus.Complete;\n break;\n }\n case \"TOO_FEW_RECORDS\": {\n status = AnalysisStatus.TooFewRecords;\n break;\n }\n case \"ERROR\": {\n status = AnalysisStatus.CompleteWithErrors;\n break;\n }\n default:\n status = AnalysisStatus.Pending;\n break;\n }\n return status;\n}\nexport function getGcpFriendlyReportType(jobType: string): string {\n let friendly = \"n/a\";\n switch (jobType.toLowerCase()) {\n case \"retail_match\": {\n friendly = \"Match Analysis\";\n break;\n }\n case \"mobilytics\": {\n friendly = \"Mobilytics\";\n break;\n }\n }\n return friendly;\n}\n","export interface IMapMarker {\n id: string;\n lat: number;\n lng: number;\n icon?: string;\n isSelected?: boolean;\n height?: number;\n width?: number;\n /** GB - this will allow us to also have a really custom\n * info window in addition to just a simple string\n */\n content?: JSX.Element | string;\n name: string;\n rank: number;\n}\n\nexport class MapMarker implements IMapMarker {\n public id: string;\n public lat: number;\n public lng: number;\n public icon: string = null;\n public isSelected = false;\n public height = 25;\n public width = 25;\n public content: JSX.Element | string = \"\";\n public name = \"\";\n public rank = 0;\n\n constructor(id: string, lat: number, lng: number) {\n this.id = id;\n this.lat = lat;\n this.lng = lng;\n }\n}\n","import { INotification, Notification } from \"../../Notification\";\n\nexport interface IUpdateNotificationRequest {\n notification: INotification;\n}\n\nexport class UpdateNotificationRequest implements IUpdateNotificationRequest {\n /**\n *\n */\n constructor(notification: INotification) {\n this.notification = notification;\n }\n public notification: INotification = new Notification();\n}","import styled from \"styled-components\";\n\nexport const ReportMapWrapper = styled.div`\n position: relative;\n height: 700px;\n`;\n\nexport const ReportMapContainer = styled.div`\n .gm-style {\n font: 400 11px \"Manrope\", Arial, sans-serif;\n }\n`;\n\nexport const ReportMapLoading = styled.div`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(234, 236, 240, 0.9);\n`;\n","import styled from \"styled-components\";\nimport { DigitalShareAppType } from \"../../../Enums/Enums\";\nimport { device } from \"../../../globalStyles\";\n\nexport const ProgressScreenBackdrop = styled(\"div\")`\n width: 100vw;\n height: 100vh;\n position: fixed;\n background-color: #000;\n opacity: 0.3;\n z-index: 999999;\n top: 0;\n left: 0;\n`;\n\nexport const ProgressScreenContainer = styled(\"div\")`\n width: calc(100vw - 70px);\n height: calc(100vh - 70px);\n position: fixed;\n z-index: 9999999;\n top: 35px;\n left: 35px;\n overflow: hidden;\n\n background-color: #2e3d49;\n border-radius: 5px;\n animation: fadeIn;\n animation-duration: 0.5s;\n`;\n\nexport const ProgressScreenContent = styled(\"div\")`\n width: 100%;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n\n display: flex;\n flex-direction: row;\n justify-content: center;\n`;\n\nexport const ProgressScreenBackground = styled(\"div\")`\n width: 50%;\n height: 100%;\n position: absolute;\n right: 0;\n top: 0;\n background-color: #fff;\n`;\n\nexport interface ProgressScreenTaglineProps {\n app: DigitalShareAppType;\n}\n\nconst getMediaMaxWidth = (app: DigitalShareAppType) => {\n if (app === DigitalShareAppType.RetailMatch) {\n return \"1360px\";\n }\n return \"1480px\";\n};\n\nexport const ProgressScreenTagline = styled(\"div\")`\n height: 100%;\n flex-grow: 0;\n max-width: 500px;\n margin-right: 70px;\n padding-top: 180px;\n\n ${device.upToTabletL} {\n visibility: hidden;\n }\n`;\n\nexport const ProgressScreenRightSectionContainer = styled(\"div\")`\n width: 740px;\n flex-grow: 0;\n position: relative;\n margin-left: 100px;\n\n ${device.upToTabletL} {\n margin-left: 0;\n }\n`;\n\nexport const ProgressScreenRightSection = styled(\"div\")`\n width: 740px;\n height: 1000px;\n position: absolute;\n left: -200px;\n top: 0;\n bottom: 0;\n margin: auto;\n margin-left: 40px;\n background-color: #fff;\n opacity: 1;\n z-index: 9999999;\n text-align: center;\n border-radius: 50% 0 0 50%;\n flex-grow: 0;\n`;\n\nexport const ProgressBarContainer = styled(\"div\")`\n max-width: 600px;\n height: 330px;\n position: absolute;\n right: 40px;\n top: 0;\n bottom: 0;\n margin: auto;\n\n ${device.upToTabletL} {\n right: 100px;\n }\n`;\n\nexport const ProgressBarBorder = styled(\"div\")`\n max-width: 600px;\n height: 60px;\n border: 2px solid #e5e5e5;\n text-align: left;\n right: 0;\n top: 0;\n bottom: 0;\n margin: auto;\n display: flex;\n justify-content: space-around;\n\n & .progress-screen-checkmark {\n flex-grow: 0;\n flex-shrink: 0;\n width: 34px;\n margin: 0 14px;\n }\n`;\n\nexport const ProgressBarTrack = styled(\"div\")`\n width: 518px;\n height: 26px;\n position: relative;\n border: 2px solid #e5e5e5;\n text-align: left;\n margin: 15px;\n`;\n\ninterface ProgressBarProgressProps {\n percentComplete: number;\n}\n\nexport const ProgressBarProgress = styled(\"div\")`\n width: ${(props: ProgressBarProgressProps) => props.percentComplete}%;\n height: 100%;\n display: inline-block;\n background-color: #1ce180;\n position: relative;\n left: 0;\n`;\n\nexport const ProgressBarPercentCaption = styled(\"div\")`\n text-align: center;\n position: relative;\n margin-bottom: 16px;\n font-family: \"Manrope-ExtraBold\";\n color: #515151;\n font-size: 108px;\n letter-spacing: -3px;\n\n ${device.upToTabletL} {\n font-size: 40px;\n }\n`;\n\nexport const ProgressBarCaption = styled(\"div\")`\n text-align: center;\n position: relative;\n margin-top: 28px;\n font-family: \"Manrope-Regular\";\n color: #6c7279;\n font-size: 26px;\n`;\n\n// export const RenderContainer = styled(\"div\")`\n// flex-grow: 0;\n// flex-shrink: 0;\n// width: 1500px;\n// height: 835px;\n// `;\n\nexport const RenderContainer = styled(\"div\")`\n flex-grow: 0;\n flex-shrink: 0;\n`;\n\nexport const RenderCollection = styled(\"div\")`\n width: 1500px;\n display: flex;\n flex-direction: column;\n`;\n\nexport const HideUpToTabletXtraLarge = styled(\"div\")`\n ${device.upToTabletXl} {\n display: none;\n }\n`;\n","export enum ReportTypeEnum {\n Mobilytics = \"mobilytics\",\n RetailMatch = \"retailmatch\",\n}\n","import { IBrand } from \"./IBrand\";\nimport { IRetailMatchOverview } from \"./IRetailMatch\";\n\nexport interface IBrandSummaryData {\n overview: IRetailMatchOverview;\n brand: IBrand;\n tooFewRecords: boolean;\n}\n","export enum OktaGroups {\n BUXTONCORP = \"BuxtonCorp\",\n MULTIACCOUNTUSERS = \"MultiAccountUsers\",\n BuxtonSales = \"BuxtonSales\",\n};","import * as types from \"../Actions/Types\";\nimport { IConfigurableReport } from \"../Contracts/IConfigurableReport\";\nimport { AnalysisSource } from \"../Enums/AnalysisSource\";\nimport { AnalysisStatus } from \"../Enums/AnalysisStatus\";\nimport { IAnalysisItem } from \"../Models/IAnalysisItem\";\nimport { IProcessReportsResult } from \"../Models/IProcessReportsResult\";\nimport { ReportType } from \"../Models/IReportType\";\nimport { IFile, IGCPBigQueryJob, IReportType } from \"../Models/Models\";\nimport {\n mapConfigurableReportsToAnalysisItems,\n mapGcpJobsToAnalysisItems,\n} from \"../Util/ReportUtil\";\n\nexport interface IReportReducerState {\n allReports: IAnalysisItem[];\n loadingReports: boolean;\n loadingConfigurableReports: boolean;\n showConfigurableReportsModal: boolean;\n crSelectedItems: null | string;\n selectedReportId: number;\n foundReports: boolean;\n collaboratingReports: boolean;\n selectedFile: IFile;\n showFileModal: boolean;\n selectedReportFiles: IFile[];\n showRecentReportsModal: boolean;\n reportsStartDate: Date;\n reportsEndDate: Date;\n unviewedReportCount: number;\n uniqueReportTypes: string[];\n configReportsLoadedAtLeastOnce: boolean;\n}\n\nexport const defaultState: IReportReducerState = {\n allReports: [],\n loadingReports: true,\n loadingConfigurableReports: false,\n showConfigurableReportsModal: false,\n crSelectedItems: null,\n selectedReportId: null,\n foundReports: true,\n collaboratingReports: false,\n selectedFile: null,\n showFileModal: false,\n selectedReportFiles: [],\n showRecentReportsModal: false,\n reportsStartDate: new Date(new Date().setMonth(new Date().getMonth() - 1)),\n reportsEndDate: new Date(),\n unviewedReportCount: 0,\n uniqueReportTypes: [],\n configReportsLoadedAtLeastOnce: false,\n};\n\nexport const reports = (\n state: IReportReducerState = { ...defaultState },\n action\n): IReportReducerState => {\n switch (action.type) {\n /** misc */\n case types.SET_REPORTS_DATES: {\n const incomingStartDate: Date = action.data.startDate;\n const incomingEndDate: Date = action.data.endDate;\n return {\n ...state,\n reportsStartDate: incomingStartDate,\n reportsEndDate: incomingEndDate,\n };\n }\n case types.SET_LOADING_REPORTS: {\n return {\n ...state,\n loadingReports: action.data,\n };\n }\n case types.SET_FOUND_REPORTS: {\n return {\n ...state,\n foundReports: action.data,\n };\n }\n case types.SET_REPORTS_COLLABORATING: {\n return {\n ...state,\n collaboratingReports: action.data,\n };\n }\n case types.SET_SELECTED_REPORT_ID: {\n return {\n ...state,\n selectedReportId: action.data,\n };\n }\n case types.SET_REPORT_FILE: {\n return {\n ...state,\n selectedFile: action.data,\n };\n }\n case types.SET_SELECTED_REPORT_FILES: {\n return {\n ...state,\n selectedReportFiles: action.data,\n };\n }\n case types.SET_SHOW_REPORT_FILE_MODAL: {\n return {\n ...state,\n showFileModal: action.data,\n };\n }\n case types.SET_SHOW_RECENT_REPORTS_MODAL: {\n return {\n ...state,\n showRecentReportsModal: action.data,\n };\n }\n case types.RESET_REPORT_COUNTER: {\n return {\n ...state,\n unviewedReportCount: 0,\n };\n }\n /** success */\n case types.SET_REPORTS: {\n return {\n ...state,\n ...action.data as IProcessReportsResult,\n };\n }\n case types.GET_JOBS_SUCCESS: {\n // Filter out all reports that are sourced from Insights or RetailMatch\n const nonGcpReports: IAnalysisItem[] = [...state.allReports].filter(\n (report: IAnalysisItem) => {\n return report.source !== AnalysisSource.Insight && report.source !== AnalysisSource.RetailMatch;\n }\n );\n\n // Map the GCP jobs to analysis items\n const newReports: IAnalysisItem[] = mapGcpJobsToAnalysisItems(\n action.data as IGCPBigQueryJob[]\n );\n\n // Append the new reports to the existing reports\n const newAllReports = [...nonGcpReports, ...newReports];\n\n return {\n ...state,\n allReports: newAllReports,\n uniqueReportTypes: getUniqueReportTypes(newAllReports),\n };\n }\n case types.ADD_RUNNING_CONFIG_REPORT_TO_LIST: {\n // this adds a temporary report creating report that will trigger\n // loading the actual reports\n return {\n ...state,\n allReports: [\n ...state.allReports,\n {\n id: 42,\n jobId: \"42\",\n createdByUserId: 42,\n cid: 42,\n startDateTime: new Date(),\n endDateTime: new Date(),\n createdDateTime: new Date(),\n source: AnalysisSource.Buxton,\n studyAreaCount: 42,\n status: AnalysisStatus.Pending,\n name: \"Report Creating...\",\n type: new ReportType(\"Buxton\"),\n },\n ],\n };\n }\n case types.SET_CR_MODAL_VISIBILITY: {\n return {\n ...state,\n showConfigurableReportsModal: action.data,\n };\n }\n case types.SET_CR_SELECTED_ITEMS: {\n return {\n ...state,\n crSelectedItems: action.data,\n };\n }\n case types.GET_CONFIG_REPORTS_SUCCESS: {\n // Filter out all Buxton-sourced reports\n const nonConfigurableReports: IAnalysisItem[] = [...state.allReports].filter(\n (report: IAnalysisItem) => {\n return report.source !== AnalysisSource.Buxton;\n }\n );\n\n const existingConfigReports = state.allReports\n .filter(report => report.source === AnalysisSource.Buxton\n && report.status === AnalysisStatus.Complete\n );\n\n const configReportsThatHaveBeenSeen = existingConfigReports\n .reduce((a, e) => {\n a[e.id] = e.status;\n return a;\n }, {});\n\n const hasFourtyTwo = state.allReports.filter(report => report.id === 42).length > 0;\n\n // Map the configurable reports to analysis items\n const newConfigurableReports: IAnalysisItem[] = mapConfigurableReportsToAnalysisItems(\n action.data as IConfigurableReport[]\n );\n\n let newCount = hasFourtyTwo\n\n ? newConfigurableReports.filter(\n report => (\n // yes, this should be equality with undefined\n configReportsThatHaveBeenSeen[report.id] === undefined\n && report.status === AnalysisStatus.Complete\n ),\n ).length\n\n : newConfigurableReports.filter(\n report => (\n !!configReportsThatHaveBeenSeen[report.id]\n && report.status === AnalysisStatus.Complete),\n ).length;\n\n\n // if they haven't been loaded, they aren't new \n if (!state.configReportsLoadedAtLeastOnce) {\n newCount = 0;\n }\n\n // Append the new reports to the existing reports\n // This will also filter out any temporary reports added above\n const newAllReports = [...nonConfigurableReports, ...newConfigurableReports];\n\n return {\n ...state,\n allReports: newAllReports,\n uniqueReportTypes: getUniqueReportTypes(newAllReports),\n unviewedReportCount: state.unviewedReportCount + newCount,\n configReportsLoadedAtLeastOnce: true,\n };\n }\n case types.SET_LOADING_CONFIG_REPORTS: {\n return {\n ...state,\n loadingConfigurableReports: action.data,\n };\n }\n case types.DELETE_CONFIG_REPORT_SUCCESS:\n case types.DELETE_REPORT_SUCCESS: {\n const deletedReportId: number = action.data;\n const allReportsCopy: IAnalysisItem[] = removeReportById(state.allReports, deletedReportId);\n\n return {\n ...state,\n allReports: allReportsCopy,\n uniqueReportTypes: getUniqueReportTypes(allReportsCopy),\n };\n }\n default: {\n return state;\n }\n }\n};\n\nconst removeReportById = (allReports: IAnalysisItem[], reportId: number): IAnalysisItem[] => {\n // Make copy of reports, and then return the filtered copy\n return [...allReports].filter((report: IAnalysisItem) => {\n return report.id !== reportId;\n });\n};\n\n/** helper */\nexport const getUniqueReportTypes = (allReports: IAnalysisItem[]): string[] => {\n const uniqueReportTypes: string[] = [];\n const uniqueTypes: IReportType[] = [];\n for (const report of allReports) {\n if (!uniqueReportTypes.includes(report.type.name)) {\n uniqueReportTypes.push(report.type.name);\n uniqueTypes.push(report.type);\n }\n }\n // Delay execution so we don't fire another redux action from a reducer\n // TODO: Move this interop call out of the reducer completely.\n // Side effects should not happen in reducers, especially if the side\n // effect is essentially triggering another action.\n setTimeout(() => {\n (window as any).scout.interop.api.reports.setReportTypesFromReports(\n uniqueTypes\n );\n });\n\n return uniqueReportTypes;\n};\n","import { IPoint } from \"./Models\";\n\nexport interface IPolygon {\n name: string;\n disableBoundingRectangle: boolean;\n preCalculatedArea: number;\n points: Array /* List */;\n linearRings: IPoint[][] /* List */;\n meanPoint: IPoint;\n firstPoint: IPoint;\n minimumPoint: IPoint;\n maximumPoint: IPoint;\n boundingRectangle: IPolygon;\n boxSize: number;\n needsSimplification: boolean;\n suggestedSimplificationTolerace: number;\n suggestedGridSpacing: number;\n isValid: boolean;\n isVeryLarge: boolean;\n isDFWSized: boolean;\n isComplex: boolean;\n isVerySmall: boolean;\n}\n","import {\n GET_PDF_LAMBDA,\n OPEN_DIGITAL_SHARE_DIALOGUE_FROM_WRAPPER,\n SET_DIGITAL_SHARE_DIALOG_TRAINING_STATE,\n} from \"../Actions/Types\";\nimport { DialogTrainingState } from \"../Enums/DialogTrainingState\";\n\nexport interface IDigitalShareReducer {\n dialogTrainingState: DialogTrainingState;\n isChoosingDigitalShare: boolean;\n isPdfLambdaCreating: boolean;\n}\n\nexport const defaultState: IDigitalShareReducer = {\n dialogTrainingState: DialogTrainingState.LoopNet,\n isChoosingDigitalShare: false,\n isPdfLambdaCreating: false,\n};\n\nexport const digitalShare = (\n state: IDigitalShareReducer = { ...defaultState },\n action\n): IDigitalShareReducer => {\n switch (action.type) {\n /** misc */\n case SET_DIGITAL_SHARE_DIALOG_TRAINING_STATE: {\n return {\n ...state,\n dialogTrainingState: action.data as DialogTrainingState,\n };\n }\n\n case OPEN_DIGITAL_SHARE_DIALOGUE_FROM_WRAPPER: {\n return {\n ...state,\n isChoosingDigitalShare: action.data as boolean,\n };\n }\n\n case GET_PDF_LAMBDA: {\n return {\n ...state,\n isPdfLambdaCreating: true,\n };\n }\n default:\n return state;\n }\n};\n","import {\n IGPSData,\n IPolygon,\n IAnalysisItem,\n IGPSBenchmarkCommonData,\n IBrand,\n IGCPBigQueryJob,\n IFrequentlyVisitedPlace,\n} from \"../Models/Models\";\nimport { GPSInsightsContainerView } from \"../Enums/Enums\";\nimport {\n SET_LOADING_GPS_MOBILE_INSIGHTS_REPORT,\n START_GPS_MOBILE_INSIGHTS_REPORT,\n SET_GPS_INSIGHT_MODAL_VISIBLE,\n SET_LOADING_BRAND,\n SET_LOADING_JOBS,\n GET_BRAND_SUCCESS,\n SET_GPS_INSIGHT_RESULTS,\n RESET_GPS_INSIGHT_RESULTS,\n SET_INSIGHTS_COLLABORATING,\n SAVE_TO_SCOUT_SUCCESS,\n SET_LOADING_SAVE_TO_SCOUT,\n SET_CURRENT_GPS_INSIGHT_VIEW,\n CLEAR_FINISHED_INSIGHTS_LISTS,\n CLEAR_RUNNING_AND_FINISHED_INSIGHTS_LISTS,\n REMOVE_FINISHED_INSIGHT_FROM_RUNNING_INSIGHTS,\n ADD_FINISHED_INSIGHT_TO_LIST,\n ADD_RUNNING_INSIGHT_TO_LIST,\n SET_POLYGON_CENTROID,\n SET_MOBILYTICS_SCENARIOS,\n SET_FVP_MARKERS,\n SET_SELECTED_FVP,\n UPDATE_GPS_INSIGHT_JOB,\n PROCESS_JOBS_SUCCESS,\n} from \"../Actions/Types\";\nimport { IMobilyticsScenarioLite } from \"../Models/IMobilyticsScenarioLite\";\nimport { IMapMarker } from \"../Models/IMapMarker\";\nimport { IProcessJobsResult } from \"../Models/IProcessJobsResult\";\n\ndeclare const scout;\n\nexport interface IGPSInsightsState {\n data: IGPSData[];\n polygon: IPolygon[];\n benchmarkCommonData: IGPSBenchmarkCommonData;\n polygonCentroid: { x: number; y: number };\n loadingBrand: boolean;\n brand: IBrand | null;\n jobs: IGCPBigQueryJob[];\n mappedJobs: IAnalysisItem[];\n runningInsights: string[];\n finishedInsights: string[];\n loadingJobs: boolean;\n selectedGpsInsightForReportView: IGCPBigQueryJob[];\n selectedGpsInsightJobs: IGCPBigQueryJob[];\n currentBenchmarkJobId: string;\n currentGpsInsightView: GPSInsightsContainerView;\n isGpsInsightModalVisible: boolean;\n collaborating: boolean;\n loadingReport: boolean;\n loadingSaveToScout: boolean;\n scenarios: IMobilyticsScenarioLite[];\n fvpMapMarkers: IMapMarker[];\n selectedFVP: IFrequentlyVisitedPlace | null;\n showVisitorBehaviorsComponent: boolean;\n}\n\nexport const defaultState: IGPSInsightsState = {\n data: null,\n polygon: null,\n benchmarkCommonData: null,\n polygonCentroid: { x: 0, y: 0 },\n loadingBrand: false,\n brand: null,\n jobs: [],\n mappedJobs: [],\n runningInsights: [],\n finishedInsights: [],\n loadingJobs: false,\n selectedGpsInsightForReportView: null,\n selectedGpsInsightJobs: [],\n currentBenchmarkJobId: null,\n currentGpsInsightView: GPSInsightsContainerView.All,\n isGpsInsightModalVisible: false,\n collaborating: false,\n loadingReport: false,\n loadingSaveToScout: false,\n scenarios: [],\n fvpMapMarkers: [],\n selectedFVP: null,\n showVisitorBehaviorsComponent: false,\n};\n\nexport const mobilyticsReportOutput = (\n state: IGPSInsightsState = { ...defaultState },\n action\n): IGPSInsightsState => {\n switch (action.type) {\n /** misc */\n case SET_FVP_MARKERS: {\n return {\n ...state,\n fvpMapMarkers: action.data as IMapMarker[],\n };\n }\n case SET_SELECTED_FVP: {\n return {\n ...state,\n selectedFVP: action.data as IFrequentlyVisitedPlace | null,\n };\n }\n case SET_LOADING_GPS_MOBILE_INSIGHTS_REPORT: {\n return {\n ...state,\n loadingReport: action.data as boolean,\n };\n }\n case START_GPS_MOBILE_INSIGHTS_REPORT: {\n scout.interop.api.mobilyticsSubmission.toggleMobilyticsFormIsVisible(\n true\n );\n return {\n ...state,\n isGpsInsightModalVisible: true,\n };\n }\n case SET_GPS_INSIGHT_MODAL_VISIBLE: {\n scout.interop.api.mobilyticsSubmission.toggleMobilyticsFormIsVisible(\n action.data as boolean\n );\n return {\n ...state,\n isGpsInsightModalVisible: action.data as boolean,\n };\n }\n case SET_LOADING_BRAND: {\n return {\n ...state,\n loadingBrand: action.data as boolean,\n };\n }\n case SET_LOADING_JOBS: {\n return {\n ...state,\n loadingJobs: action.data as boolean,\n };\n }\n case SET_INSIGHTS_COLLABORATING: {\n return {\n ...state,\n collaborating: action.data,\n };\n }\n /** success */\n case PROCESS_JOBS_SUCCESS: {\n const data = action.data as IProcessJobsResult;\n return {\n ...state,\n ...data\n };\n }\n\n case RESET_GPS_INSIGHT_RESULTS: {\n return {\n ...state,\n data: null,\n polygon: null,\n selectedGpsInsightForReportView: null,\n };\n }\n case SET_GPS_INSIGHT_RESULTS: {\n const initialJobIndex = 0;\n const gpsData: IGPSData[] = action.data.data as IGPSData[];\n /** GB using \"some\" here because I'm not sure if we'd ever have a scenario where\n * one polygon could have FVP data and the other could not. But if that were\n * to happen, this will handle it.\n */\n const fvpHasData: boolean = gpsData.some(\n (d) => d.frequentlyVisitedPlaces.length > 0\n );\n const currentBenchmarkJobId\n = action.data.job.length > initialJobIndex\n ? action.data.job[initialJobIndex].jobId\n : null;\n return {\n ...state,\n data: gpsData,\n showVisitorBehaviorsComponent: fvpHasData,\n selectedGpsInsightForReportView: action.data.job,\n benchmarkCommonData: action.data.benchmarkCommonData,\n polygon: action.data.job.map((j) => j.jobPolygon),\n selectedGpsInsightJobs: action.data.job,\n currentBenchmarkJobId,\n };\n }\n case GET_BRAND_SUCCESS: {\n /**\n * If no data was found matching the term, an empty string is sent down.\n * Otherwise, a match was found.\n */\n const brandValue: IBrand | null = action.data === \"\" ? null : action.data;\n return {\n ...state,\n brand: brandValue,\n };\n }\n case ADD_RUNNING_INSIGHT_TO_LIST:\n return {\n ...state,\n runningInsights: action.data as string[],\n };\n\n case ADD_FINISHED_INSIGHT_TO_LIST:\n return {\n ...state,\n finishedInsights: action.data as string[],\n };\n\n case REMOVE_FINISHED_INSIGHT_FROM_RUNNING_INSIGHTS:\n return {\n ...state,\n runningInsights: action.data as string[],\n };\n\n case CLEAR_RUNNING_AND_FINISHED_INSIGHTS_LISTS:\n return {\n ...state,\n runningInsights: [],\n finishedInsights: [],\n };\n\n case CLEAR_FINISHED_INSIGHTS_LISTS: {\n return {\n ...state,\n finishedInsights: [],\n };\n }\n\n case SET_CURRENT_GPS_INSIGHT_VIEW:\n return {\n ...state,\n currentGpsInsightView: action.data as GPSInsightsContainerView,\n };\n\n case SET_LOADING_SAVE_TO_SCOUT:\n return {\n ...state,\n loadingSaveToScout: action.data as boolean,\n };\n\n case SAVE_TO_SCOUT_SUCCESS: {\n if (\n state.selectedGpsInsightForReportView[0].jobId\n === (action.data as string)\n ) {\n const jobsCopy: IGCPBigQueryJob[] = [\n ...state.selectedGpsInsightForReportView,\n ].map((j: IGCPBigQueryJob) => {\n return {\n ...j,\n viewInScout: true,\n };\n });\n return {\n ...state,\n selectedGpsInsightForReportView: jobsCopy,\n };\n }\n\n return {\n ...state,\n };\n }\n\n case SET_POLYGON_CENTROID:\n return {\n ...state,\n polygonCentroid: action.data as { x: number; y: number },\n };\n\n case SET_MOBILYTICS_SCENARIOS:\n return {\n ...state,\n scenarios: action.data,\n };\n\n // case DELETE_JOB_SUCCESS: {\n // notification.success({\n // message: \"Report Deleted\",\n // duration: 2, // seconds\n // });\n\n // const deletedJobId: number = action.data;\n // const allReportsCopy: IAnalysisItem[] = [...state.allReports].filter(\n // (report: IAnalysisItem) => {\n // return report.id !== deletedReportId;\n // }\n // );\n\n // return {\n // ...state,\n // allReports: allReportsCopy,\n // };\n // }\n // /** Failure */\n // case DELETE_JOB_FAILURE: {\n // notification.error({\n // message:\n // \"Failed to delete report. If you continue to see this message, please contact SCOUT Support.\",\n // duration: null,\n // });\n // return {\n // ...state,\n // };\n // }\n\n case UPDATE_GPS_INSIGHT_JOB: {\n const jobsCopy = [...state.selectedGpsInsightJobs];\n for (let i = 0; i < jobsCopy.length; i++) {\n if (jobsCopy[i].jobId === action.data.jobId) {\n jobsCopy[i] = action.data;\n break;\n }\n }\n\n return {\n ...state,\n selectedGpsInsightForReportView: [...jobsCopy],\n selectedGpsInsightJobs: [...jobsCopy],\n };\n }\n\n default:\n return state;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { ActiveApp } from \"../Enums/Enums\";\n\nexport interface ILoadScoutReducerState {\n scoutIsLoaded: boolean;\n scoutIsShowing: boolean;\n showSplashScreen: boolean;\n activeApp: ActiveApp;\n}\n\nconst defaultState: ILoadScoutReducerState = {\n scoutIsLoaded: false,\n scoutIsShowing: false,\n showSplashScreen: true,\n activeApp: ActiveApp.SCOUT,\n};\n\nexport const loadScout = (\n state: ILoadScoutReducerState = { ...defaultState },\n action\n) => {\n switch (action.type) {\n case types.LOAD_SCOUT:\n return Object.assign({}, state, {\n scoutIsLoaded: action.data,\n });\n\n case types.SET_SCOUT_IS_SHOWING:\n return Object.assign({}, state, {\n scoutIsShowing: action.data,\n });\n\n case types.SET_ACTIVE_APP:\n return Object.assign({}, state, {\n activeApp: action.data,\n });\n\n case types.SET_SHOW_SPLASH_SCREEN:\n return Object.assign({}, state, {\n showSplashScreen: action.data,\n });\n\n default:\n return state;\n }\n};\n","import {\n SET_MAP_CENTER,\n SET_MAP_LOADING,\n SET_MAP_MARKERS,\n CREATE_NEW_GOOGLE_MAP,\n CLEAR_GOOGLE_MAP,\n SET_MAP_ANCHOR_WINDOW,\n SET_MAP_STYLE_OPTIONS,\n SET_MAP_HEIGHT,\n SET_MAP_ZOOM,\n SET_PENDING_MAP_CENTER_EVENT,\n SET_MAP_IS_READY,\n CREATE_NEW_RETAIL_MATCH_OVERVIEW_MAP,\n CREATE_NEW_RETAIL_MATCH_MODAL_MAP,\n SET_RETAIL_MATCH_OVERVIEW_MAP_MARKERS,\n SET_MAP_STYLES,\n} from \"../Actions/Types\";\nimport { IBuxtonDeck } from \"../Models/IBuxtonDeck\";\nimport { BuxtonDeck } from \"../Util/BuxtonDeck\";\nimport { MapStyleEnum } from \"../Enums/Enums\";\nimport { CSSObject } from \"styled-components\";\n\ninterface DefaultMapOptions {\n style: CSSObject;\n zoom: number;\n center: google.maps.LatLng;\n}\nexport interface IReportMapState {\n googleMap: google.maps.Map;\n retailMatchOverviewMap: google.maps.Map;\n retailMatchModalMap: google.maps.Map;\n buxtonDeck: IBuxtonDeck;\n mapZoom: number;\n mapStyles: CSSObject;\n defaultMapOptions: DefaultMapOptions;\n mapStyleOptions: MapStyleEnum;\n mapCenter: google.maps.LatLng;\n pendingMapCenterEvent: boolean;\n showLoadingMarker: boolean;\n currentMarkers: google.maps.Marker[];\n currentAnchorWindow: google.maps.InfoWindow;\n isMapReady: boolean;\n retailMatchOverviewMapMarkers: google.maps.Marker[];\n}\n\nexport const defaultState: IReportMapState = {\n googleMap: null,\n retailMatchOverviewMap: null,\n retailMatchModalMap: null,\n buxtonDeck: new BuxtonDeck(),\n mapZoom: 11,\n mapCenter: new google.maps.LatLng(36.7079, -96.9209),\n pendingMapCenterEvent: false,\n defaultMapOptions: {\n style: {\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"12px\",\n marginTop: \"20px\",\n },\n zoom: 11,\n center: new google.maps.LatLng(36.7079, -96.9209),\n },\n mapStyles: {\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"12px\",\n marginTop: \"20px\",\n },\n mapStyleOptions: MapStyleEnum.Light,\n currentMarkers: [],\n currentAnchorWindow: null,\n showLoadingMarker: false,\n isMapReady: false,\n retailMatchOverviewMapMarkers: [],\n};\n\nexport const reportMap = (\n state: IReportMapState = { ...defaultState },\n action\n): IReportMapState => {\n switch (action.type) {\n case CREATE_NEW_GOOGLE_MAP:\n return {\n ...state,\n googleMap: action.data,\n };\n\n case CREATE_NEW_RETAIL_MATCH_OVERVIEW_MAP:\n return {\n ...state,\n retailMatchOverviewMap: action.data,\n };\n\n case CREATE_NEW_RETAIL_MATCH_MODAL_MAP:\n return {\n ...state,\n retailMatchModalMap: action.data,\n };\n\n case SET_MAP_CENTER:\n return {\n ...state,\n mapCenter: action.data as google.maps.LatLng,\n };\n\n case SET_PENDING_MAP_CENTER_EVENT:\n return {\n ...state,\n pendingMapCenterEvent: action.data as boolean,\n };\n\n case SET_MAP_MARKERS:\n return {\n ...state,\n currentMarkers: action.data as google.maps.Marker[],\n };\n\n case SET_MAP_ANCHOR_WINDOW:\n return {\n ...state,\n currentAnchorWindow: action.data as google.maps.InfoWindow,\n };\n\n case SET_MAP_LOADING:\n return {\n ...state,\n showLoadingMarker: action.data as boolean,\n };\n\n case SET_MAP_STYLE_OPTIONS:\n return {\n ...state,\n mapStyleOptions: action.data as MapStyleEnum,\n };\n\n case SET_MAP_STYLES:\n return {\n ...state,\n mapStyles: {\n ...state.mapStyles,\n ...action.data,\n },\n };\n\n case SET_MAP_HEIGHT:\n return {\n ...state,\n mapStyles: {\n ...state.mapStyles,\n height: action.data as string,\n },\n };\n\n case SET_MAP_ZOOM:\n return {\n ...state,\n mapZoom: action.data as number,\n };\n\n case CLEAR_GOOGLE_MAP:\n state.currentMarkers.forEach((marker) => marker.setMap(null));\n state.buxtonDeck.clearProps();\n\n if (state.currentAnchorWindow) {\n state.currentAnchorWindow.close();\n }\n\n return {\n ...state,\n mapStyleOptions: MapStyleEnum.Light,\n mapStyles: state.defaultMapOptions.style,\n mapZoom: state.defaultMapOptions.zoom,\n mapCenter: state.defaultMapOptions.center,\n currentMarkers: [],\n currentAnchorWindow: null,\n };\n\n case SET_MAP_IS_READY:\n return {\n ...state,\n isMapReady: action.data as boolean,\n };\n\n case SET_RETAIL_MATCH_OVERVIEW_MAP_MARKERS:\n return {\n ...state,\n retailMatchOverviewMapMarkers: action.data as google.maps.Marker[],\n };\n\n default:\n return state;\n }\n};\n","import {\n IRetailMatchJobResult,\n IBrand,\n IRetailMatchJobImage,\n IStoreScoreRecord,\n ISegment,\n} from \"../Models/Models\";\nimport { IBrandCategory } from \"../Models/IBrandCategory\";\nimport { IRetailMatchGeography } from \"../Models/IRetailMatchGeography\";\nimport {\n START_RETAIL_MATCH_REPORT,\n SET_RETAIL_MATCH_REPORT_MODAL_VISIBLE,\n SET_LOADING_RETAIL_MATCH_REPORT,\n SET_LOADING_UPDATE_RETAIL_MATCH_JOB,\n SET_LOADING_BRANDS,\n SET_LOADING_BRAND,\n SET_LOADING_CATEGORIES,\n SET_LOADING_RETAIL_MATCH_GEOGRAPHIES,\n GET_RETAIL_MATCH_RESULTS_SUCCESS,\n SET_RETAIL_MATCH_BENCHMARK_RECORD,\n GET_RETAIL_MATCH_BRANDS_SUCCESS,\n GET_RETAIL_MATCH_CATEGORIES_SUCCESS,\n GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS,\n SUBMIT_RETAIL_MATCH_REPORT_SUCCESS,\n UPDATE_RETAIL_MATCH_JOB_SUCCESS,\n ADD_RETAIL_MATCH_IMAGE_SUCCESS,\n GET_RETAIL_MATCH_BRAND_SUCCESS,\n GET_RETAIL_MATCH_RESULTS_FAILURE,\n GET_RETAIL_MATCH_BRAND_FAILURE,\n GET_RETAIL_MATCH_BRANDS_FAILURE,\n GET_RETAIL_MATCH_CATEGORIES_FAILURE,\n GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE,\n SUBMIT_RETAIL_MATCH_REPORT_FAILURE,\n CLEAR_RETAIL_MATCH_RESULTS,\n SET_LOADING_MOSAIC_SEGMENTS,\n GET_MOSAIC_SEGMENTS_SUCCESS,\n SET_LOADING_BRANDS_SAMPLE_SET_DATA,\n GET_BRANDS_SAMPLE_SET_DATA_SUCCESS,\n UPDATE_BRAND_LOGO_SUCCESS,\n SET_SELECTED_BRAND,\n SET_RETAIL_MATCH_MODAL_MARKER_CLUSTERER,\n UPDATE_RETAIL_MATCH_SITE_DETAILS_SUCCESS,\n} from \"../Actions/Types\";\nimport { IBrandSampleSet } from \"../Models/IBrandSampleSet\";\n\nexport interface IRetailMatchState {\n brands: IBrand[];\n categories: IBrandCategory[];\n geographies: IRetailMatchGeography[];\n jobResult: IRetailMatchJobResult;\n benchmarkRecord: IStoreScoreRecord;\n loadingReport: boolean;\n loadingUpdateJob: boolean;\n loadingBrand: boolean;\n loadingBrands: boolean;\n loadingCategories: boolean;\n retailMatchSubmitReportModalVisible: boolean;\n loadingGeographies: boolean;\n mosaicSegments: ISegment[];\n loadingMosaicSegments: boolean;\n loadingSampleSetData: boolean;\n brandSampleSetData: IBrandSampleSet[];\n selectedBrand: IBrand;\n modalMarkerClusterer: MarkerClusterer;\n}\n\nconst defaultState: IRetailMatchState = {\n brands: [],\n categories: [],\n geographies: [],\n jobResult: null,\n benchmarkRecord: null,\n loadingReport: false,\n loadingUpdateJob: false,\n loadingBrand: false,\n loadingBrands: false,\n loadingCategories: false,\n retailMatchSubmitReportModalVisible: false,\n loadingGeographies: false,\n mosaicSegments: [],\n loadingMosaicSegments: false,\n loadingSampleSetData: false,\n brandSampleSetData: [],\n selectedBrand: null,\n modalMarkerClusterer: null,\n};\n\nexport const matchReportOutput = (\n state: IRetailMatchState = { ...defaultState },\n action\n): IRetailMatchState => {\n switch (action.type) {\n /** misc */\n case SET_LOADING_BRANDS_SAMPLE_SET_DATA: {\n return {\n ...state,\n loadingSampleSetData: action.data as boolean,\n };\n }\n case SET_LOADING_MOSAIC_SEGMENTS: {\n return {\n ...state,\n loadingMosaicSegments: action.data as boolean,\n };\n }\n case START_RETAIL_MATCH_REPORT: {\n return {\n ...state,\n retailMatchSubmitReportModalVisible: true,\n };\n }\n case SET_RETAIL_MATCH_REPORT_MODAL_VISIBLE: {\n return {\n ...state,\n retailMatchSubmitReportModalVisible: action.data as boolean,\n };\n }\n case SET_LOADING_RETAIL_MATCH_REPORT: {\n return {\n ...state,\n loadingReport: action.data as boolean,\n };\n }\n case SET_LOADING_UPDATE_RETAIL_MATCH_JOB: {\n return {\n ...state,\n loadingUpdateJob: action.data as boolean,\n };\n }\n case SET_LOADING_BRANDS: {\n return {\n ...state,\n loadingBrands: action.data as boolean,\n };\n }\n case SET_LOADING_BRAND: {\n return {\n ...state,\n loadingBrand: action.data as boolean,\n };\n }\n case SET_LOADING_CATEGORIES: {\n return {\n ...state,\n loadingCategories: action.data as boolean,\n };\n }\n case SET_LOADING_RETAIL_MATCH_GEOGRAPHIES: {\n return {\n ...state,\n loadingGeographies: action.data as boolean,\n };\n }\n /** success */\n case GET_BRANDS_SAMPLE_SET_DATA_SUCCESS: {\n return {\n ...state,\n brandSampleSetData: action.data as IBrandSampleSet[],\n };\n }\n case GET_MOSAIC_SEGMENTS_SUCCESS: {\n return {\n ...state,\n mosaicSegments: action.data as ISegment[],\n };\n }\n case GET_RETAIL_MATCH_RESULTS_SUCCESS: {\n return {\n ...state,\n jobResult: action.data as IRetailMatchJobResult,\n };\n }\n\n case SET_RETAIL_MATCH_BENCHMARK_RECORD: {\n return {\n ...state,\n benchmarkRecord: action.data as IStoreScoreRecord,\n };\n }\n\n case GET_RETAIL_MATCH_BRANDS_SUCCESS: {\n return {\n ...state,\n brands: action.data as IBrand[],\n };\n }\n case GET_RETAIL_MATCH_CATEGORIES_SUCCESS: {\n return {\n ...state,\n categories: action.data as IBrandCategory[],\n };\n }\n case GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS: {\n return {\n ...state,\n geographies: action.data as IRetailMatchGeography[],\n };\n }\n case SUBMIT_RETAIL_MATCH_REPORT_SUCCESS: {\n return {\n ...state,\n };\n }\n case UPDATE_RETAIL_MATCH_JOB_SUCCESS: {\n return {\n ...state,\n jobResult: {\n ...state.jobResult,\n job: {\n ...state.jobResult.job,\n siteDetails: action.data.siteDetails,\n },\n },\n };\n }\n\n case ADD_RETAIL_MATCH_IMAGE_SUCCESS: {\n return {\n ...state,\n jobResult: {\n ...state.jobResult,\n job: {\n ...state.jobResult.job,\n images: [\n ...state.jobResult.job.images,\n action.data as IRetailMatchJobImage,\n ],\n },\n },\n };\n }\n\n case UPDATE_BRAND_LOGO_SUCCESS: {\n const brandsCopy = [...state.jobResult.job.brands];\n for (const brand of brandsCopy) {\n if (brand.brandId === action.data.brandId) {\n brand.logoPath = action.data.logoUrl;\n break;\n }\n }\n\n return {\n ...state,\n jobResult: {\n ...state.jobResult,\n job: {\n ...state.jobResult.job,\n brands: brandsCopy,\n },\n },\n };\n }\n\n case GET_RETAIL_MATCH_BRAND_SUCCESS: {\n const incomingBrand: IBrand = action.data as IBrand;\n /** copy the data, and remove the \"old\" brand data */\n const brandsCopy: IBrand[] = [...state.brands].filter((b: IBrand) => {\n return b.brandId !== incomingBrand.brandId;\n });\n /** add the brand back in with the \"new\" data */\n brandsCopy.push(incomingBrand);\n return {\n ...state,\n brands: brandsCopy,\n };\n }\n /** failure */\n case GET_RETAIL_MATCH_RESULTS_FAILURE: {\n return {\n ...state,\n };\n }\n case GET_RETAIL_MATCH_BRAND_FAILURE: {\n return {\n ...state,\n };\n }\n case GET_RETAIL_MATCH_BRANDS_FAILURE: {\n return {\n ...state,\n };\n }\n case GET_RETAIL_MATCH_CATEGORIES_FAILURE: {\n return {\n ...state,\n };\n }\n case GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE: {\n return {\n ...state,\n };\n }\n case SUBMIT_RETAIL_MATCH_REPORT_FAILURE: {\n return {\n ...state,\n };\n }\n case CLEAR_RETAIL_MATCH_RESULTS:\n return {\n ...state,\n jobResult: null,\n benchmarkRecord: null,\n };\n\n case SET_SELECTED_BRAND: {\n return {\n ...state,\n selectedBrand: action.data as IBrand,\n };\n }\n\n case SET_RETAIL_MATCH_MODAL_MARKER_CLUSTERER: {\n return {\n ...state,\n modalMarkerClusterer: action.data as MarkerClusterer,\n };\n }\n case UPDATE_RETAIL_MATCH_SITE_DETAILS_SUCCESS: {\n return {\n ...state,\n jobResult: {\n ...state.jobResult,\n job: {\n ...state.jobResult.job,\n siteDetails: action.data,\n },\n },\n };\n }\n default:\n return state;\n }\n};\n","import { DELETE_SHARE_IMAGE_SUCCESS, DELETE_USER_AVATAR_SUCCESS, GET_TERRITORY_TYPES_SUCCESS, GET_USER_SHARE_SETTINGS_SUCCESS, UPDATE_SAVE_PROFILE_LOADING, UPDATE_SHARE_IMAGE_SUCCESS, UPDATE_TERRITORY_TYPE_ADMIN_ONLY_SUCCESS, UPDATE_USER_AVATAR_SUCCESS, UPDATE_USER_PROFILE_SUCCESS, UPDATE_USER_SHARE_SETTINGS_SUCCESS, USER_UPDATE_ACTIVE_STATUS_FAILURE, USER_UPDATE_ACTIVE_STATUS_SUCCESS } from \"../Actions/Types\";\n\nimport { IUserShareSettings } from \"../Models/IUserShareSettings\";\nimport { ITerritoryType, IUser } from \"../Models/Models\";\nimport { IOktaMFAFactor } from \"../Models/OktaModels/IOktaMFAFactor\";\nimport { GET_ALL_USERS_SUCCESS,\n GET_USER_SUCCESS,\n SET_LOADING_ALL_USERS,\n SET_SHOW_ACTIVE_USERS\n} from \"../View/Products/Types/UserActionTypes\";\n\nexport interface IUserReducerState {\n user: IUser;\n allUsers: IUser[];\n companyTerritoryTypes: ITerritoryType[];\n userMFAFactors: IOktaMFAFactor[];\n waitingForMFAResponse: boolean;\n saveProfileLoading: boolean;\n shareSettings: IUserShareSettings;\n showActiveUsers: boolean;\n loadingAllUsers: boolean;\n}\n\nexport const defaultState: IUserReducerState = {\n user: null,\n allUsers: null,\n companyTerritoryTypes: [],\n userMFAFactors: null,\n waitingForMFAResponse: false,\n saveProfileLoading: false,\n shareSettings: null,\n showActiveUsers: false,\n loadingAllUsers: false,\n};\n\nexport const user = (\n state: IUserReducerState = { ...defaultState },\n action\n): IUserReducerState => {\n switch (action.type) {\n /** misc */\n case SET_SHOW_ACTIVE_USERS: {\n return {\n ...state,\n showActiveUsers: action.data as boolean,\n };\n }\n case SET_LOADING_ALL_USERS: {\n return {\n ...state,\n loadingAllUsers: action.data as boolean,\n };\n }\n case GET_USER_SUCCESS: {\n return {\n ...state,\n user: action.data as IUser\n };\n }\n case GET_ALL_USERS_SUCCESS: {\n return {\n ...state,\n allUsers: action.data as IUser[] || []\n };\n }\n case USER_UPDATE_ACTIVE_STATUS_SUCCESS: {\n const allUsersCopy: IUser[] = [...state.allUsers];\n for (let i = 0; i < allUsersCopy.length; i++) {\n if (allUsersCopy[i].userID === action.response.data.userID) {\n allUsersCopy[i].isActive = action.response.data.isActive;\n break;\n }\n }\n\n return Object.assign({}, state, {\n allUsers: allUsersCopy,\n });\n }\n case UPDATE_TERRITORY_TYPE_ADMIN_ONLY_SUCCESS: {\n const companyTerritoryTypesCopy: Array = [\n ...state.user.company.territoryTypes.types,\n ];\n for (let i = 0; i < companyTerritoryTypesCopy.length; i++) {\n if (companyTerritoryTypesCopy[i].typeID === action.response.data) {\n companyTerritoryTypesCopy[i].isAdminOnly\n = !companyTerritoryTypesCopy[i].isAdminOnly;\n // update SCOUT\n (window as any).scout.logic.TerritoryLogic.fnTerritoryTypeUpdated(\n companyTerritoryTypesCopy[i]\n );\n break;\n }\n }\n\n return {\n ...state,\n companyTerritoryTypes: companyTerritoryTypesCopy,\n };\n }\n case UPDATE_SAVE_PROFILE_LOADING: {\n return {\n ...state,\n saveProfileLoading: action.data,\n };\n }\n /**\n * this is a \"maybe\" success\n * the server call will probably succeed, but there some validation that would still mean that nothing was updated\n */\n case UPDATE_USER_PROFILE_SUCCESS: {\n // update the 'allUsers' array\n const allUsersCopy: IUser[] = [...state.allUsers];\n for (let i = 0; i < allUsersCopy.length; i++) {\n if (allUsersCopy[i].userID === action.response.data.userID) {\n allUsersCopy[i] = action.response.data;\n break;\n }\n }\n\n // update the logged in user\n const userCopy: IUser = { ...state.user };\n userCopy.userName = action.response.data.userName;\n userCopy.firstName = action.response.data.firstName;\n userCopy.lastName = action.response.data.lastName;\n userCopy.email = action.response.data.email;\n userCopy.phone = action.response.data.phone;\n userCopy.fullName = action.response.data.fullName;\n userCopy.shareImage = action.response.data.shareImage;\n\n return {\n ...state,\n user: userCopy,\n allUsers: allUsersCopy\n };\n }\n\n case UPDATE_USER_AVATAR_SUCCESS: {\n\n const userCopy: IUser = { ...state.user };\n userCopy.profileImage = action.response.data;\n\n const allUsersCopy: IUser[] = state.allUsers\n .map(u => u.userID === userCopy.userID\n ? userCopy\n : u);\n\n return {\n ...state,\n user: userCopy,\n allUsers: allUsersCopy\n };\n }\n\n case UPDATE_SHARE_IMAGE_SUCCESS: {\n\n const userCopy: IUser = { ...state.user };\n userCopy.shareImage = action.response.data;\n\n const allUsersCopy: IUser[] = state.allUsers\n .map(u => u.userID === userCopy.userID\n ? userCopy\n : u);\n\n return {\n ...state,\n user: userCopy,\n allUsers: allUsersCopy\n };\n }\n\n case DELETE_USER_AVATAR_SUCCESS: {\n const userCopy: IUser = { ...state.user };\n userCopy.profileImage = null;\n\n const allUsersCopy: IUser[] = [...state.allUsers];\n\n for (let i = 0; i < allUsersCopy.length; i++) {\n if (allUsersCopy[i].userID === userCopy.userID) {\n allUsersCopy[i].profileImage = null;\n break;\n }\n }\n\n return {\n ...state,\n user: userCopy,\n allUsers: allUsersCopy\n };\n }\n\n case DELETE_SHARE_IMAGE_SUCCESS: {\n const userCopy: IUser = { ...state.user };\n userCopy.shareImage = null;\n\n const allUsersCopy: IUser[] = [...state.allUsers];\n\n for (let i = 0; i < allUsersCopy.length; i++) {\n if (allUsersCopy[i].userID === userCopy.userID) {\n allUsersCopy[i].shareImage = null;\n break;\n }\n }\n\n return {\n ...state,\n user: userCopy,\n allUsers: allUsersCopy\n };\n }\n\n case GET_TERRITORY_TYPES_SUCCESS: {\n const userCopy: IUser = { ...state.user };\n userCopy.company.territoryTypes.types = action.response.data;\n\n return {\n ...state,\n user: userCopy\n };\n }\n\n case GET_USER_SHARE_SETTINGS_SUCCESS: {\n return {\n ...state,\n shareSettings: action.data.data as IUserShareSettings,\n };\n }\n\n case UPDATE_USER_SHARE_SETTINGS_SUCCESS: {\n return {\n ...state,\n shareSettings: action.data.data as IUserShareSettings,\n };\n }\n // FAILURE\n case USER_UPDATE_ACTIVE_STATUS_FAILURE:\n default:\n return state;\n }\n};\n","import { Set } from 'immutable';\nimport { App } from \"../Enums/App\";\nimport { AppView } from \"../Enums/AppView\";\nimport { IHeaderNavDisplay } from \"../Models/IHeaderNavDisplay\";\nimport { topNavHeightPx } from \"../Constants/StyleConstants\";\nimport {\n AppActionType,\n SET_APP_VIEW,\n SET_CURRENT_APP,\n SET_APP_PAST_INTRO,\n RESET_APP_PAST_INTRO,\n SHOW_HEADER_NAV,\n} from \"../Types/AppActionTypes\";\n\nexport interface IAppReducerState {\n currentApp: App;\n appView: AppView;\n appsPastIntro: Set;\n headerNavDisplay: IHeaderNavDisplay;\n}\n\nexport const appReducerState: IAppReducerState = {\n currentApp: null,\n appView: AppView.Map,\n appsPastIntro: Set([App.Scout]),\n headerNavDisplay: {\n headerDisplay: \"none\",\n contentHeight: \"100vh\",\n },\n};\n\nexport const appReducer = (\n state: IAppReducerState = { ...appReducerState },\n action: AppActionType\n): IAppReducerState => {\n switch (action.type) {\n /** misc */\n case SET_CURRENT_APP: {\n return {\n ...state,\n currentApp: action.data as App,\n };\n }\n case SET_APP_VIEW: {\n return {\n ...state,\n appView: action.data as AppView,\n };\n }\n case SET_APP_PAST_INTRO: {\n return {\n ...state,\n appsPastIntro: state.appsPastIntro.add(action.data as App),\n };\n }\n case RESET_APP_PAST_INTRO: {\n return {\n ...state,\n appView: AppView.Map,\n appsPastIntro: state.appsPastIntro.delete(action.data as App),\n };\n }\n case SHOW_HEADER_NAV: {\n return {\n ...state,\n headerNavDisplay: {\n headerDisplay: action.data ? \"initial\" : \"none\",\n contentHeight: action.data ? `calc(100vh - ${topNavHeightPx}px)` : \"100vh\",\n }\n };\n }\n default: {\n return state;\n }\n }\n};\n","import { ScoutFeature } from \"../../../Enums/ScoutFeature\";\nimport { App } from \"../Enums/App\";\nimport { LinkType } from \"../Enums/LinkType\";\nimport { IHoverData } from \"./IHoverData\";\nimport { INoAccessData } from \"./INoAccessData\";\n\nexport interface ILinkObject {\n type: LinkType;/* Type of link(external, internal, or SCOUT) */\n requiredFeatures: ScoutFeature[];/* string to match off from the GET user data call > response data > features > name */\n title: string;/* Text shown below icon */\n shortTitle: string;\n link: string;/* Link to */\n externalLink: string;\n icon: string;/* Icon image link */\n quickLinksIcon: string;\n hoveredIcon: string;/* Hovered icon image link */\n hoverData: IHoverData;/* Configs for right panel image and text */\n noAccessData: INoAccessData;/* Configs for popup modal */\n app: App;\n exists?: boolean;\n}","import { ILoginUserData, ICurrentHover, ILockedModal } from \"../Models/Models\";\nimport { IBaseAction } from \"../Actions/BaseAction\";\n\n/** user */\nexport type SetFetchingLoginUserDataAction = IBaseAction;\nexport type GetLoginUserDataAction = IBaseAction;\nexport type GetLoginUserDataSuccessAction = IBaseAction;\nexport type GetLoginUserDataFailureAction = IBaseAction;\n/* hover */\nexport type SetCurrentHoverAction = IBaseAction;\nexport type SetLockedModalAction = IBaseAction;\n\nexport type LoginActionType =\n SetFetchingLoginUserDataAction |\n GetLoginUserDataAction |\n GetLoginUserDataSuccessAction |\n GetLoginUserDataFailureAction |\n SetCurrentHoverAction |\n SetLockedModalAction;\n\n/** user */\nexport const SET_FETCHING_LOGIN_USER_DATA = \"SET_FETCHING_LOGIN_USER_DATA\";\nexport const GET_LOGIN_USER_DATA = \"GET_LOGIN_USER_DATA\";\nexport const GET_LOGIN_USER_DATA_SUCCESS = \"GET_LOGIN_USER_DATA_SUCCESS\";\nexport const GET_LOGIN_USER_DATA_FAILURE = \"GET_LOGIN_USER_DATA_FAILURE\";\n/* hover */\nexport const SET_CURRENT_HOVER = \"SET_CURRENT_HOVER\";\nexport const SET_LOCKED_MODAL = \"SET_LOCKED_MODAL\";\n","import { IBrand } from \"./IBrand\";\n\nexport type BrandMap = Map>;\n","import { IPolygon } from \"./IPolygon\";\n\nexport interface ICircle extends IPolygon {\n\tcenter: google.maps.LatLng;\n radiusMeters: number;\n}\n","import { IPolygon } from \"./IPolygon\";\n\nexport interface IRectangle extends IPolygon {\n\tnortheast: google.maps.LatLng;\n\tsouthwest: google.maps.LatLng;\n}\n","export enum RetailMatchTimeOption {\n TwentyNineteen,\n ThreeMonths,\n SixMonths,\n TwelveMonths,\n}\n","import { Set } from 'immutable';\r\n\r\nimport { RetailMatchGeographyOption } from \"../../../Enums/RetailMatchGeographyOption\";\r\nimport { RetailMatchTimeOption } from \"../../../Enums/RetailMatchTimeOption\";\r\nimport { IBrand } from \"../../../Models/IBrand\";\r\nimport { IBrandCategory } from \"../../../Models/IBrandCategory\";\r\nimport { IRetailMatchGeography } from \"../../../Models/IRetailMatchGeography\";\r\nimport { ClosestDistanceOption, CompareOption, FilterOption, Step } from \"../Enums/SubmitRetailMatch\";\r\nimport { SQFT_OPTIONS } from \"../Logic/MatchLogic\";\r\nimport { SubmitMatchFormAction, FormActionType } from \"../Types/SubmitMatchFormTypes\";\r\n\r\nexport interface ISubmitMatchFormState {\r\n currentStep: Step;\r\n maxEnabledStep: Step;\r\n dropDownOpen: boolean;\r\n\r\n minSqFeet: number;\r\n maxSqFeet: number;\r\n\r\n filterOption: FilterOption;\r\n selectedBrands: IBrand[];\r\n selectedCategory: IBrandCategory;\r\n\r\n compareOption: CompareOption;\r\n sampleSize: ClosestDistanceOption;\r\n selectedGeoOption: RetailMatchGeographyOption;\r\n selectedGeo: IRetailMatchGeography;\r\n\r\n selectedTimeOption: RetailMatchTimeOption;\r\n\r\n reportName: string;\r\n reportNameError: string;\r\n\r\n allValid: boolean;\r\n resetCount: number;\r\n\r\n excludedMarkers: Set;\r\n};\r\n\r\nexport const INITIAL_STATE : ISubmitMatchFormState = {\r\n currentStep: Step.SquareFootage,\r\n maxEnabledStep: Step.BrandOrCategory,\r\n dropDownOpen: false,\r\n\r\n minSqFeet: SQFT_OPTIONS[0].value,\r\n maxSqFeet: SQFT_OPTIONS[SQFT_OPTIONS.length - 1].value,\r\n\r\n filterOption: FilterOption.Brands,\r\n selectedBrands: [],\r\n selectedCategory: null,\r\n\r\n compareOption: CompareOption.Neither,\r\n sampleSize: null,\r\n selectedGeoOption: RetailMatchGeographyOption.DMA,\r\n selectedGeo: null,\r\n\r\n selectedTimeOption: RetailMatchTimeOption.TwelveMonths,\r\n\r\n reportName: null,\r\n reportNameError: null,\r\n\r\n allValid: false,\r\n resetCount: 0,\r\n\r\n excludedMarkers: Set(),\r\n};\r\n\r\nconst isTrulyDifferentBrandSet = (a: IBrand[], b: IBrand[]) => {\r\n if (a.length !== b.length) return true;\r\n const aBrands = Set(a.map(brand => brand.brandId));\r\n return b.filter(brand => !aBrands.has(brand.brandId)).length > 0;\r\n};\r\n\r\nconst valueChangeReducers = {\r\n [FormActionType.SET_CURRENT_STEP]: (state, data) => ({ ...state, currentStep: data }),\r\n [FormActionType.SET_DROPDOWN_OPEN]: (state, data) => ({ ...state, dropDownOpen: data }),\r\n [FormActionType.SET_MIN_SQ_FEET]: (state, data) => ({ ...state, minSqFeet: data }),\r\n [FormActionType.SET_MAX_SQ_FEET]: (state, data) => ({ ...state, maxSqFeet: data }),\r\n [FormActionType.SET_FILTER_OPTION]: (state, data) => ({ ...state, filterOption: data }),\r\n [FormActionType.SET_SELECTED_BRANDS]: (state, data) => ({\r\n ...state,\r\n // if list of selected brands is just same set, don't change\r\n // causing map to reload\r\n selectedBrands: isTrulyDifferentBrandSet(data, state.selectedBrands)\r\n ? data\r\n : state.selectedBrands,\r\n }),\r\n [FormActionType.SET_SELECTED_CATEGORY]: (state, data) => ({ ...state, selectedCategory: data }),\r\n [FormActionType.SET_COMPARE_OPTION]: (state, data) => ({ ...state, compareOption: data }),\r\n [FormActionType.SET_SAMPLE_SIZE]: (state, data) => ({ ...state, sampleSize: data }),\r\n [FormActionType.SET_SELECTED_GEO_OPTION]: (state, data) => ({\r\n ...state,\r\n selectedGeoOption: data,\r\n // if the geo option changes, reset the selected geo\r\n selectedGeo: data === state.selectedGeoOption ? state.selectedGeoOption : null,\r\n }),\r\n [FormActionType.SET_SELECTED_GEO]: (state, data) => ({ ...state, selectedGeo: data }),\r\n [FormActionType.SET_SELECTED_TIME_OPTION]: (state, data) => ({ ...state, selectedTimeOption: data }),\r\n [FormActionType.SET_REPORT_NAME]: (state, data) => ({ ...state, reportName: data }),\r\n [FormActionType.ADD_EXCLUDED_MAP_MARKERS]: (state, data) => ({ ...state, excludedMarkers: state.excludedMarkers.union(data) }),\r\n [FormActionType.REMOVE_EXCLUDED_MAP_MARKERS]: (state, data) => ({ ...state, excludedMarkers: state.excludedMarkers.subtract(data) }),\r\n [FormActionType.REPLACE_EXCLUDED_MAP_MARKERS]: (state, data) => {\r\n const newState = Set(data);\r\n return ({ ...state, excludedMarkers: newState });\r\n },\r\n [FormActionType.RESET_EVERYTHING]: (state, data) => data > state.resetCount ? ({ ...INITIAL_STATE, resetCount: data}) : state,\r\n};\r\n\r\nconst setReportNameErrorMessage = (state: ISubmitMatchFormState): ISubmitMatchFormState => {\r\n if (!state.reportName || state.reportName.length === 0) {\r\n return {...state, reportNameError:\"Report Name cannot be empty\" };\r\n } else if (state.reportName.trim().length === 0) {\r\n return {...state, reportNameError: \"Report Name cannot be blank\" };\r\n }\r\n\r\n return {...state, reportNameError: null};\r\n};\r\n\r\nconst setMaxEnabledState = (s: ISubmitMatchFormState): ISubmitMatchFormState => {\r\n // find out if all what steps are passed\r\n let maxPassedStep = Step.BrandOrCategory;\r\n\r\n // pass brand or category?\r\n if (maxPassedStep === Step.BrandOrCategory && (\r\n (s.filterOption === FilterOption.Brands && s.selectedBrands.length > 0)\r\n || (s.filterOption === FilterOption.Category && s.selectedCategory)\r\n )) maxPassedStep = Step.CompareDistanceOrGeography;\r\n\r\n // pass compare distance?\r\n if (maxPassedStep === Step.CompareDistanceOrGeography) {\r\n if (s.compareOption === CompareOption.Geography) {\r\n if (s.selectedGeoOption === RetailMatchGeographyOption.National) {\r\n maxPassedStep = Step.Time;\r\n } else if (s.selectedGeo !== null) {\r\n maxPassedStep = Step.Time;\r\n }\r\n } else if (s.compareOption === CompareOption.Closest && s.sampleSize !== null) {\r\n maxPassedStep = Step.Time;\r\n }\r\n }\r\n\r\n // pass time?\r\n if (maxPassedStep === Step.Time && s.selectedTimeOption !== null) {\r\n maxPassedStep = Step.ReportName;\r\n }\r\n\r\n return {\r\n ...s,\r\n maxEnabledStep: maxPassedStep,\r\n currentStep: s.currentStep > maxPassedStep ? maxPassedStep : s.currentStep,\r\n allValid: maxPassedStep === Step.ReportName && s.reportName && !s.reportNameError,\r\n };\r\n};\r\n\r\nexport const submitMatchFormReducer = (\r\n state: ISubmitMatchFormState = INITIAL_STATE,\r\n action: SubmitMatchFormAction,\r\n) : ISubmitMatchFormState => {\r\n // change the value\r\n if (!valueChangeReducers[action.type]) return state;\r\n let s = valueChangeReducers[action.type](state, action.data) as ISubmitMatchFormState;\r\n\r\n // check for errors\r\n switch(action.type) {\r\n case FormActionType.SET_REPORT_NAME: {\r\n s = setReportNameErrorMessage(s);\r\n break;\r\n }\r\n }\r\n\r\n // set max enabled state\r\n return setMaxEnabledState(s);\r\n};\r\n","import { IDashboardMessage } from \"../Models/Models\";\n\nconst getDomain = (): string => {\n const { hostname, port, protocol } = window.location;\n return hostname === 'localhost'\n ? `${protocol}//${hostname}:${port}`\n : `https://${hostname}`;\n};\n\nexport const sendDashBoardMessage = (message: IDashboardMessage): void => {\n const domain = getDomain();\n const messageWindow = (document.getElementById(message.targetElement) as HTMLIFrameElement).contentWindow;\n \n messageWindow.postMessage(message, domain);\n};\n\nexport const receiveDashBoardMessage = (element: string): void => {\n const iframe = document.getElementById(element) as HTMLIFrameElement;\n if (iframe) {\n const listener = iframe.contentWindow;\n\n listener.addEventListener(\n \"message\",\n (event) => {\n const domain = getDomain();\n if (event.origin !== domain) {\n return;\n }\n\n const message = event.data.message;\n if (message && message.text === \"TWO_BY_TWO\") {\n $(\"#experimental-scout\").hide();\n const name = message.data.name.replace(/ /g, \"!\");\n location.assign(`#/network/:${message.data.sid}:${name}`);\n }\n },\n false\n );\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { hasFeature } from \"../Actions/UserActions\";\nimport { CompanyType } from \"../Enums/CompanyType\";\nimport { OktaGroups } from \"../Enums/Enums\";\nimport { ScoutFeature } from \"../Enums/ScoutFeature\";\nimport { ICompany, IUser } from \"../Models/Models\";\n\ndeclare const scout;\n\nexport const performanceUnit = (company: ICompany): \"Visits\" | \"Sales\" => {\n /*\n GROCER = 1,\n RETAILER = 2,\n RESTAURANT = 3,\n OTHER = 4,\n POSTAL = 5,\n BUSINESS_SERVICE = 6,\n CONVIENCE_STORE = 7,\n COMMUNITY = 8,\n HEALTHCARE = 9,\n HOSPITALITY = 100,\n NOT_SPECIFIED = 255\n */\n\n switch (company.companyType) {\n case 9:\n return \"Visits\";\n default:\n return \"Sales\";\n }\n};\n\nexport const intercomCallbacks = (user: IUser): void => {\n if (hasFeature(user, ScoutFeature.Intercom)) {\n (window as any).intercomSettings = {\n app_id: $(\"#IntercomAppID\").text(),\n custom_launcher_selector: \".buxton-intercom\",\n };\n\n (window as any).Intercom(\"onShow\", () => {\n $(\".buxton-intercom-content-close\").show();\n $(\".buxton-intercom-content-open\").hide();\n });\n (window as any).Intercom(\"onHide\", () => {\n $(\".buxton-intercom-content-close\").hide();\n $(\".buxton-intercom-content-open\").show();\n });\n\n (window as any).Intercom(\"onUnreadCountChange\", (unreadCount) => {\n if (unreadCount > 0) {\n $(\"#intercom-counter\").show();\n $(\"#intercom-counter\").text(unreadCount);\n } else {\n $(\"#intercom-counter\").hide();\n }\n });\n }\n};\n\nconst intercomUserPermission = (user: IUser) => {\n let userPermission = \"\";\n if (user.isFranchisee) {\n userPermission = \"Franchisee\";\n } else if (user.isAdmin) {\n userPermission = \"Administrator\";\n } else if (!user.isAdmin && !user.isFranchisee) {\n userPermission = \"Standard\";\n }\n return userPermission;\n};\n\nconst intercomCompanyType = (companyType: CompanyType) => {\n let companyTypeString = \"\";\n switch (companyType) {\n case CompanyType.RETAILER:\n companyTypeString = \"Retail\";\n break;\n case CompanyType.HEALTHCARE:\n companyTypeString = \"Health Care\";\n break;\n case CompanyType.COMMUNITY:\n companyTypeString = \"Community\";\n break;\n case CompanyType.HOTEL:\n companyTypeString = \"Hotel\";\n break;\n case CompanyType.MARRIOTT:\n companyTypeString = \"Marriott\";\n break;\n }\n return companyTypeString;\n};\n\nexport const intercomBoot = (user: IUser): void => {\n if (hasFeature(user, ScoutFeature.Intercom)) {\n (window as any).Intercom(\"boot\", {\n app_id: $(\"#IntercomAppID\").text(),\n name: user.fullName,\n email: user.email,\n user_id:\n scout.user.current.oktaGroups.indexOf(OktaGroups.BUXTONCORP) > -1\n ? user.oktaUserID\n : user.userID,\n CID: user.company.cid,\n persona_id: user.personaID,\n PermissionLevel: intercomUserPermission(user),\n company: {\n id: user.company.cid,\n name: user.company.name,\n CompanyType: intercomCompanyType(user.company.companyType),\n Expiration: user.company.expireDateTimeFriendly,\n MaxActiveUserCount: user.company.maxActiveUserCount,\n },\n });\n }\n};","import React, { FunctionComponent } from \"react\";\nimport styled from \"styled-components\";\n\nexport interface IButtonProps {\n disabled?: boolean;\n title: string;\n menu?: boolean;\n color?: string;\n bgColor?: string;\n icon?: JSX.Element;\n iconRight?: JSX.Element;\n hideTitle?: boolean;\n id?: string;\n width?: string;\n flex?: number;\n style?: any;\n clickCallback?: (\n event: React.MouseEvent\n ) => void;\n}\n\nconst ButtonStyles = styled(\"button\")`\n line-height: 1.499;\n position: relative;\n display: inline-block;\n font-weight: 400;\n white-space: nowrap;\n text-align: center;\n border: 1px solid #d9d9d9;\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n user-select: none;\n touch-action: manipulation;\n align-items: center;\n height: 32px;\n padding: 0 15px;\n font-size: 14px;\n border-radius: 4px;\n background-color: ${(props: IButtonProps) =>\n props.bgColor ? props.bgColor : \"white\"};\n color: ${(props: IButtonProps) =>\n props.color ? props.color : \"rgba(0, 0, 0, 0.65)\"};\n margin: 10px 0;\n > svg {\n margin-right: ${(props: IButtonProps) => (props.hideTitle ? \"0\" : \"6px\")};\n }\n\n &:disabled {\n background: #dcddde;\n color: #84868a;\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 1) {\n animation-name: none !important;\n }\n`;\n\nexport const Button: FunctionComponent = (\n props: IButtonProps\n) => {\n const { ...theRest } = props;\n return (\n (props.disabled ? null : props.clickCallback(event))}\n id={props.id}\n >\n {props.icon}\n {props.hideTitle ? null : props.title}\n {props.iconRight ? props.iconRight : null}\n \n );\n};\n","import { AxiosError } from \"axios\";\n\nimport * as types from \"../Types/NotificationActionTypes\";\nimport { INotification } from \"../Models/Notification\";\nimport { IUpdateNotificationRequest } from \"../Models/Requests/Notifications/UpdateNotificationRequest\";\n\n/** misc */\nexport const setLoadingNotifications = (loading: boolean): types.SetLoadingNotificationsAction => ({\n type: types.SET_LOADING_NOTIFICATIONS,\n data: loading\n});\n\nexport const setNotificationsDrawerVisible = (visible: boolean): types.SetNotificationsDrawerVisible => ({\n type: types.SET_NOTIFICATIONS_DRAWER_VISIBLE,\n data: visible\n});\n\nexport const setNotificationsFilterDates = (dates: [Date, Date]): types.SetNotificationFilterDates => ({\n type: types.SET_NOTIFICATION_FILTER_DATES,\n data: dates\n});\n\n/** initiate */\nexport const getNotificationsInitiate = (range: [Date, Date]): types.GetNotificationsInitiate => ({\n type: types.GET_NOTIFICATIONS_INITIATE,\n data: range\n});\n\nexport const setNotificationsByLinkIdViewedInitiate = (linkId: string): types.SetNotificationsByLinkIdViewedInitiate => ({\n type: types.SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_INITIATE,\n data: linkId\n});\n\nexport const updateNotificationInitiate = (request: IUpdateNotificationRequest): types.UpdateNotificationInitiate => ({\n type: types.UPDATE_NOTIFICATION_INITIATE,\n data: request\n});\n\nexport const updateAllNotificationsReadStatusInitiate = (allRead: boolean): types.UpdateAllNotificationsReadStatusInitiate => ({\n type: types.UPDATE_ALL_NOTIFICATIONS_READ_STATUS_INITIATE,\n data: allRead\n});\n\nexport const updateAllNotificationsActiveStatusInitiate = (allActive: boolean): types.UpdateAllNotificationsActiveStatusInitiate => ({\n type: types.UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_INITIATE,\n data: allActive\n});\n/** success */\nexport const setNotificationsByLinkIdViewedSuccess = (linkId: string): types.SetNotificationsByLinkIdViewedSuccess => ({\n type: types.SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_SUCCESS,\n data: linkId\n});\n\nexport const getNotificationsSuccess = (notifications: INotification[]): types.GetNotificationsSuccess => ({\n type: types.GET_NOTIFICATIONS_SUCCESS,\n data: notifications\n});\n\nexport const updateNotificationSuccess = (notification: INotification): types.UpdateNotificationSuccess => ({\n type: types.UPDATE_NOTIFICATION_SUCCESS,\n data: notification\n});\n\nexport const updateAllNotificationsReadStatusSuccess = (allRead: boolean): types.UpdateAllNotificationsReadStatusSuccess => ({\n type: types.UPDATE_ALL_NOTIFICATIONS_READ_STATUS_SUCCESS,\n data: allRead\n});\n\nexport const updateAllNotificationsActiveStatusSuccess = (allActive: boolean): types.UpdateAllNotificationsActiveStatusSuccess => ({\n type: types.UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_SUCCESS,\n data: allActive\n});\n/** failure */\nexport const setNotificationsByLinkIdViewedFailure = (errMsg: string): types.SetNotificationsByLinkIdViewedFailure => ({\n type: types.SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_FAILURE,\n data: errMsg\n});\n\nexport const getNotificationsFailure = (errMsg: string): types.GetNotificationsFailure => ({\n type: types.GET_NOTIFICATIONS_FAILURE,\n data: errMsg\n});\n\nexport const updateNotificationFailure = (errMsg: string): types.UpdateNotificationFailure => ({\n type: types.UPDATE_NOTIFICATION_FAILURE,\n data: errMsg\n});\n\nexport const updateAllNotificationsReadStatusFailure = (errMsg: string): types.UpdateAllNotificationsReadStatusFailure => ({\n type: types.UPDATE_ALL_NOTIFICATIONS_READ_STATUS_FAILURE,\n data: errMsg\n});\n\nexport const updateAllNotificationsActiveStatusFailure = (errMsg: string): types.UpdateAllNotificationsActiveStatusFailure => ({\n type: types.UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_FAILURE,\n data: errMsg\n});\n","import { createSelector } from \"reselect\";\n\nimport { INotification } from \"../Models/Notification\";\nimport { IRootReducer } from \"../Reducers/RootReducer\";\n\nexport const notificationsFilterDatesSelector = createSelector(\n (state: IRootReducer) => {\n return {\n startDate: state.notificationsReducer.startDate,\n endDate: state.notificationsReducer.endDate\n };\n },\n ({startDate, endDate}): [Date, Date] => ([\n startDate,\n endDate\n ])\n);\n\nexport const notificationsDrawerVisibleSelector = createSelector(\n (state: IRootReducer) => state.notificationsReducer.drawerVisible,\n (visible: boolean) => visible\n);\n\nexport const loadingNotificationsSelector = createSelector(\n (state: IRootReducer) => state.notificationsReducer.loadingNotifications,\n (loading: boolean) => loading\n);\n\nexport const notificationsSelector = createSelector(\n (state: IRootReducer) => state.notificationsReducer.notifications,\n (notifications: INotification[]) => notifications\n);\n\nexport const notificationsCountSelector = createSelector(\n (state: IRootReducer) => state.notificationsReducer.notifications,\n (notifications: INotification[]) => {\n return notifications.filter((notification: INotification) => {\n return !notification.isRead;\n }).length;\n }\n);\n","import { Select } from \"antd\";\nimport React from \"react\";\nimport { IMobilyticsBenchmarkItem } from \"../../../Models/IMobilyticsBenchmarkItem\";\nimport { formatLabelWithEllipsis, PolygonNameWithCircle } from \"../../Common\";\n\ninterface IMobilyticsPolygonSelectProps {\n benchmarkItems: IMobilyticsBenchmarkItem[];\n selectedIndex: number;\n onChange: (value: string) => void;\n}\n\nconst MobilyticsPolygonSelect = (props: IMobilyticsPolygonSelectProps) => {\n const selectedPolygon = props.benchmarkItems[props.selectedIndex];\n\n return (\n \n {props.benchmarkItems.map((polygon, index) => {\n return (\n \n \n {formatLabelWithEllipsis(polygon.name, 12)}\n \n \n );\n })}\n \n }\n isSelect={true}\n />\n );\n};\n\nexport default MobilyticsPolygonSelect;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useRouteMatch } from \"react-router-dom\";\nimport { getUserShareSettings } from \"../../../../Actions/Actions\";\nimport { setActiveApp } from \"../../../../Actions/LoadScoutActions\";\nimport {\n clearRetailMatchResults,\n getResults,\n getRetailMatchGeographies,\n setLoadingRetailMatchReport,\n setRetailMatchBenchmarkRecord,\n setSelectedBrand\n} from \"../../../../Actions/RetailMatchActions\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { ActiveApp } from \"../../../../Enums/Enums\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { RetailMatchGeographyOption } from \"../../../../Enums/RetailMatchGeographyOption\";\nimport { IBrandOverviewTableRecord } from \"../../../../Models/IBrandOverviewTableRecord\";\nimport { IDigitalShareItem } from \"../../../../Models/IDigitalShareItem\";\nimport { IUserShareSettings } from \"../../../../Models/IUserShareSettings\";\nimport {\n getRetailMatchReportDataReady,\n loadingRetailMatchReportSelector,\n retailMatchActiveAppSelector,\n retailMatchReportDataSelector\n} from \"../../../../Reducers/Selectors/RetailMatchSelectors\";\nimport { userShareSettingsSelector } from \"../../../../Reducers/Selectors/UserSelectors\";\nimport {\n GPSInsightsTemplateDisclaimer,\n retailMatchDigitalShareOutputs\n} from \"../../../../Util/ScoutDigitalShareUtil\";\nimport { topNavHeightPx } from \"../../../../View/Products/Constants/StyleConstants\";\nimport {\n ComponentLoading,\n getMosaicSegments,\n ReportOuterWrapper\n} from \"../../../Common/\";\nimport {\n DigitalShareGenerator,\n PrintGenerator\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport \"../../../Layout/RechartsOverrides.css\";\nimport RetailMatchDigitalShareTemplate from \"../DigitalShare/Templates/RetailMatchDigitalShareTemplate\";\nimport RetailMatchIntroTextHeader from \"./RetailMatchIntroTextHeader\";\nimport { StyledTable } from \"./RetailMatchLocationsAnalyzed\";\nimport RetailMatchMultiBrand from \"./RetailMatchMultiBrand\";\nimport RetailMatchReport from \"./RetailMatchReport\";\n\ninterface IRetailMatchReportContainerProps {\n isSharing?: boolean;\n jobId: string;\n brandId?: string;\n isScout: boolean;\n}\n\nexport interface IRetailMatchReportContainerRouteParams {\n jobId: string;\n brandId?: string;\n}\n\nexport interface IRetailMatchReportContainerShareRouteParams {\n brandId?: string;\n}\n\nconst RetailMatchReportContainer = (props: IRetailMatchReportContainerProps): JSX.Element => {\n /** misc */\n const dispatch = useDispatch();\n\n const {\n isSharing,\n jobId,\n } = props;\n\n //If we are sharing, we have to handle brandId differently\n const match = useRouteMatch(`/:brandId`);\n const brandId = isSharing\n ? match?.params?.brandId\n : props.brandId;\n\n /** store */\n const { jobResult, benchmarkRecord } = useSelector(retailMatchReportDataSelector);\n const loadingRetailMatchReport = useSelector(loadingRetailMatchReportSelector);\n const reportDataReady: boolean = useSelector(getRetailMatchReportDataReady);\n const userShareSettings: IUserShareSettings = useSelector(userShareSettingsSelector);\n const activeApp = useSelector(retailMatchActiveAppSelector);\n\n /** effects */\n useEffect(() => {\n /*\n Kicking this call off here because the Match report body needs it,\n yet it can take several seconds to complete, so I want it loading\n while we're having to wait on the rest of the report anyway\n */\n dispatch(getRetailMatchGeographies(RetailMatchGeographyOption.DMA));\n\n if (!userShareSettings) {\n dispatch(getUserShareSettings());\n }\n\n if (!isSharing) {\n if (activeApp !== ActiveApp.RETAIL_MATCHES) {\n dispatch(setActiveApp(ActiveApp.RETAIL_MATCHES));\n }\n }\n\n dispatch(getMosaicSegments());\n\n return () => {\n dispatch(clearRetailMatchResults());\n };\n }, []);\n\n useEffect(() => {\n if (!props.isSharing) {\n dispatch(setLoadingRetailMatchReport(true));\n dispatch(getResults(jobId));\n }\n }, [jobId]);\n\n const [isPrinting, setIsPrinting] = useState(false);\n const [renderType, setRenderType] = useState(RenderType.DEFAULT);\n const [isChoosingDigitalShare, setIsChoosingDigitalShare]\n = useState(false);\n const [isDebuggingTemplate, setIsDebuggingTemplate] = useState(false);\n\n useEffect(() => {\n const brand = getBrandFromBrandId();\n dispatch(setSelectedBrand(brand));\n }, [brandId, jobResult]);\n\n useEffect(() => {\n const newBenchmark = jobResult?.chartData?.benchmarkRecords?.find(\n (benchmark) => benchmark.bid === brandId\n );\n if (newBenchmark) {\n dispatch(setRetailMatchBenchmarkRecord(newBenchmark));\n }\n }, [brandId]);\n\n const onChangeGenerating = (isGenerating: boolean) => {\n setRenderType(\n isGenerating ? RenderType.DIGITAL_SHARE : RenderType.DEFAULT\n );\n };\n\n const onPrintClick = () => {\n setIsPrinting(true);\n };\n\n const getBrandFromBrandId = () => {\n return (\n jobResult?.job?.brands?.find((brand) => {\n return brandId === brand.brandId;\n }) || jobResult?.job?.brands[0]\n );\n };\n\n const brand = getBrandFromBrandId();\n\n const showMulti = jobResult?.job?.brands?.length > 1 && !brandId;\n\n const digitalShareOutputs: IDigitalShareItem[] = showMulti\n ? retailMatchDigitalShareOutputs().filter(\n (o) => o.type === DigitalShareItemType.BrandComparison\n )\n : retailMatchDigitalShareOutputs().filter(\n (o) => o.type !== DigitalShareItemType.BrandComparison\n );\n\n (window as any).showTemplate = () => {\n setIsDebuggingTemplate(true);\n };\n (window as any).hideTemplate = () => {\n setIsDebuggingTemplate(false);\n };\n\n const fakeData: IBrandOverviewTableRecord[] = [];\n\n return (\n <>\n {\n reportDataReady && !loadingRetailMatchReport\n ? <>\n {isDebuggingTemplate && (\n \n
\n \n \n
\n \n )}\n \n {\n /*\n BJ 3/26/2021: I feel like this is hacky. We were getting lots of crazy JS errors around scroll animations.\n This is because those scroll elements freak out when a child element is removed from the DOM,\n and then re-rendered. To alleviate that, I had to keep both versions technically on the DOM,\n but just set display: none of we wanted it gone. It looks like the errors are replaced with warnings,\n Which at least doesn't flood our logs. If someone could make this cleaner, I will literally buy you a meal.\n */\n }\n
\n setIsChoosingDigitalShare(true)}\n />\n
\n
\n setIsChoosingDigitalShare(true)}\n brand={brand}\n jobResult={jobResult}\n />\n
\n \n {featureFlags.DigitalShare && isChoosingDigitalShare && (\n setIsChoosingDigitalShare(false)}\n onChangeGenerating={onChangeGenerating}\n app={DigitalShareAppType.RetailMatch}\n isChoosingDigitalShare={isChoosingDigitalShare}\n outputs={digitalShareOutputs}\n />\n )}\n\n {featureFlags.DigitalShare && isPrinting && (\n setIsPrinting(false)}\n onChangeGenerating={onChangeGenerating}\n app={DigitalShareAppType.RetailMatch}\n outputs={digitalShareOutputs}\n jobId={jobId}\n />\n )}\n \n : \n }\n \n );\n};\n\nexport default RetailMatchReportContainer;\n","import { ICircleQueryParams } from \"./ICircleQueryParams\";\nimport { IMobilyticsPlaceQueryParams } from \"./IMobilyticsPlaceQueryParams\";\nimport { IPolygonQueryParams } from \"./IPolygonQueryParams\";\n\nexport type MobilyticsQueryParam = ICircleQueryParams | IPolygonQueryParams | IMobilyticsPlaceQueryParams;","import { App } from \"../Enums/App\";\r\nimport { MobilyticsQueryParam } from \"../Models/MobilyticsQueryParam\";\r\nimport {\r\n DoPlaceSearchAction,\r\n DoLatLngSearchAction,\r\n DO_PLACE_SEARCH,\r\n DO_LATLNG_SEARCH,\r\n DO_LOAD_LOCATIONS,\r\n} from \"../Types/PlaceSearchTypes\";\r\n\r\nexport const doPlaceSearch = (app: App, placeId: string, sessionToken: google.maps.places.AutocompleteSessionToken = null): DoPlaceSearchAction => ({\r\n type: DO_PLACE_SEARCH,\r\n data: {\r\n app,\r\n sessionToken: sessionToken || new google.maps.places.AutocompleteSessionToken(),\r\n placeId,\r\n },\r\n});\r\n\r\nexport const doLatLngSearch = (lat: number, lng: number) : DoLatLngSearchAction => ({\r\n type: DO_LATLNG_SEARCH,\r\n data: {\r\n lat,\r\n lng,\r\n }\r\n});\r\n\r\nexport const doLoadLocations = (locations: MobilyticsQueryParam[]) => ({\r\n type: DO_LOAD_LOCATIONS,\r\n data: {\r\n locations\r\n }\r\n});","import { createSelector } from \"reselect\";\nimport { IRootReducer } from \"../Reducers/RootReducer\";\n\nexport const usaWKTSelector = createSelector(\n (state: IRootReducer) => state.commonReducer.usaWKT,\n (usaWKT: string) => usaWKT\n);","export * from \"./AppActions\";\nexport * from \"./LoginActions\";\nexport * from \"./MapActions\";\nexport * from \"./MobilyticsActions\";\nexport * from \"./PlaceSearchActions\";\n","import { notification } from \"antd\";\nimport { Dispatch } from \"redux\";\n\nimport { ConfigurableReportsAxios } from \"../Contracts/Axios/ConfigurableReportsAxios\";\nimport { IConfigurableReport } from \"../Contracts/IConfigurableReport\";\nimport { fixGeoJsonGeometry, getDataFromRadiusString } from \"../Logic/ConfigurableReportLogic\";\nimport { IAnalysisItem } from \"../Models/IAnalysisItem\";\nimport {\n ADD_RUNNING_CONFIG_REPORT_TO_LIST,\n DELETE_CONFIG_REPORT_SUCCESS,\n GET_CONFIG_REPORTS_SUCCESS,\n SET_CR_MODAL_VISIBILITY,\n SET_CR_SELECTED_ITEMS,\n SET_LOADING_CONFIG_REPORTS,\n} from \"./Types\";\n\nexport interface IScoutReportJob {\n title: string;\n latitude?: number;\n longitude?: number;\n params: Array<{\n key: string;\n value: any;\n }>;\n}\n\nexport interface IDemReportRequest {\n templateId: string;\n reportName: string;\n revision?: number;\n point?: {\n x: number;\n y: number;\n };\n radiusMiles?: number;\n radiusKm?: number;\n radiusMinutes?: number;\n customPolygon?: string;\n territoryId?: number;\n geographyId?: number;\n}\n\nexport interface ICleanedJobArea {\n title: string;\n point?: {\n x: number;\n y: number;\n };\n radiusMiles?: number;\n radiusKm?: number;\n radiusMinutes?: number;\n customPolygon?: string;\n territoryId?: number;\n geographyId?: number;\n}\n\nconst setLoadingConfigReports = (loading: boolean) => ({\n type: SET_LOADING_CONFIG_REPORTS,\n data: loading,\n});\n\nconst getConfigReportsSuccess = (data: any) => ({\n type: GET_CONFIG_REPORTS_SUCCESS,\n data: data,\n});\n\nconst deleteConfigReportSuccess = (reportId: number) => ({\n type: DELETE_CONFIG_REPORT_SUCCESS,\n data: reportId,\n});\n\nexport const addRunningConfigurableReport = () => {\n return (dispatch: Dispatch): void => {\n dispatch({ type: ADD_RUNNING_CONFIG_REPORT_TO_LIST });\n };\n};\n\nexport const setCrModalVisibility = (showCrModalVisibility: boolean): Record => ({\n type: SET_CR_MODAL_VISIBILITY,\n data: showCrModalVisibility,\n});\n\n// Extracts the relevant data from the Scout report job and returns a cleaned object\nconst extractAndCleanJob = (job: IScoutReportJob): ICleanedJobArea => {\n // Start with a base object containing only the parameters we care about.\n let baseReportObj: ICleanedJobArea = {\n title: job.title,\n territoryId: null,\n geographyId: null,\n customPolygon: null,\n radiusKm: null,\n radiusMiles: null,\n radiusMinutes: null,\n point: null,\n };\n \n // Find the values we need from the report parameters.\n const radiusMilesStr = job.params.find(param => param.key === \"RADII_MILES\")?.value;\n const reportType = job.params.find(param => param.key === \"TYPE\")?.value;\n const spatialObject = job.params.find(param => param.key === \"SPATIALOBJECT\")?.value;\n \n // Process the spatialObject, if present, by cleaning/fixing its geometry.\n let transformedSpatialObject = spatialObject;\n if (spatialObject) {\n try {\n transformedSpatialObject = fixGeoJsonGeometry(spatialObject);\n } catch (error) {\n // Report an error and return early if the GeoJSON is invalid.\n notification.error({\n message: \"Invalid GeoJSON\",\n description: error.message,\n duration: 3,\n });\n return;\n }\n }\n \n // Depending on the report type, update baseReport with the appropriate data.\n switch (reportType) {\n case \"DRIVETIME\":\n // For drivetime, we use the (cleaned) GeoJSON as a custom polygon.\n baseReportObj.customPolygon = JSON.stringify(transformedSpatialObject);\n break;\n // This is actually an enum value correlating to circle/ring radius, but it's over in the angular side...\n case 6:\n baseReportObj = {\n ...baseReportObj,\n // For ring radius, extract location data (like radius and point) from the radius string.\n ...getDataFromRadiusString(radiusMilesStr),\n };\n break;\n case \"POLYGON\":\n // When the report type is POLYGON, extract the geography ID.\n baseReportObj.geographyId = job.params.find(param => param.key === \"ID\")?.value;\n break;\n case \"CUSTOM_TERRITORY\":\n // For custom territories, extract the territory ID.\n baseReportObj.territoryId = job.params.find(param => param.key === \"ID\")?.value;\n break;\n default:\n // If the type isn't explicitly handled, attempt to infer:\n // - Use the cleaned GeoJSON as customPolygon if available, or\n // - Use the radiusMiles string data.\n if (transformedSpatialObject) {\n baseReportObj.customPolygon = JSON.stringify(transformedSpatialObject);\n } else if (radiusMilesStr) {\n baseReportObj = {\n ...baseReportObj,\n ...getDataFromRadiusString(radiusMilesStr),\n };\n } else {\n throw new Error(\"Invalid Demographic Report Configuration\");\n }\n }\n \n return baseReportObj;\n};\n\n// Assigns the selected report items to the state for use in the Configurable Reports Creation modal\nexport const setCrSelectedItems = (selectedItems: null | string): Record => {\n // Parse the string received from the Angular side, and extract the relevant data\n const cleanedSelectedItems = selectedItems ? JSON.parse(selectedItems).map((selectedItem) => extractAndCleanJob(selectedItem)) : null;\n return {\n type: SET_CR_SELECTED_ITEMS,\n data: JSON.stringify(cleanedSelectedItems),\n };\n};\n\nconst configReportsAxios = new ConfigurableReportsAxios();\n\n// Used to populate the reports list with the user's configurable reports\nexport const getConfigurableReports = (startDate: Date, endDate: Date, collaborate?: boolean) => {\n return (dispatch: Dispatch): void => {\n dispatch(setLoadingConfigReports(true));\n configReportsAxios.GetConfigurableReports(collaborate).then((response: IConfigurableReport[]) => {\n // Ensure startDate and endDate are valid Date objects\n if (!startDate || !endDate) {\n throw new Error(\"Invalid start or end date\");\n }\n \n const startTimeAsUTC = new Date(new Date(startDate.setHours(0, 0, 0, 0)).toUTCString());\n const endTimeAsUTC = new Date(new Date(endDate.setHours(23, 59, 59, 999)).toUTCString());\n // Filter out reports that are not within the date range\n const filteredReports = response.filter((report) => {\n const reportTime = new Date(report.startDateTime + \"Z\");\n return reportTime >= startTimeAsUTC && reportTime <= endTimeAsUTC;\n });\n\n dispatch(getConfigReportsSuccess(filteredReports));\n }).catch((error: string) => {\n notification.error({\n message: \"There was an error fetching configurable reports\",\n description: error,\n duration: null,\n });\n }).finally(() => {\n dispatch(setLoadingConfigReports(false));\n });\n };\n};\n\nexport const deleteConfigurableReport = (report: IAnalysisItem) => {\n return (dispatch: Dispatch): void => {\n dispatch(setLoadingConfigReports(true));\n const reportIdAsString = String(report.id);\n configReportsAxios.DeleteConfigurableReport(reportIdAsString).then((success) => {\n if (!success) {\n notification.error({\n message: \"There was an error deleting your report\",\n description: \"\",\n duration: null,\n });\n } else {\n notification.success({\n message: \"Success\",\n description: \"Configurable Report deleted successfully\",\n duration: 3,\n });\n dispatch(deleteConfigReportSuccess(report.id));\n }\n }).catch((error: string) => {\n notification.error({\n message: \"There was an error deleting your report\",\n description: error,\n duration: null,\n });\n }).finally(() => {\n dispatch(setLoadingConfigReports(false));\n });;\n };\n};\n","export interface IReportType {\n typeID: number;\n featureID: number | null;\n name: string;\n description: string;\n modifiedDateTime: Date;\n iconName: string; // actually the path to the icon\n}\nexport class ReportType implements IReportType {\n /**\n *\n */\n constructor(name: string) {\n this.name = name;\n }\n public typeID = 0;\n public featureID = 0;\n public name = \"\";\n public description = \"\";\n public modifiedDateTime: Date = new Date();\n public iconName = \"\";\n}\n","export enum RetailMatchSelectionMethod {\n BRANDS = 1,\n CATEGORIES = 2,\n}\n","export enum HomeWorkIdentifier {\n HOME,\n WORK,\n}\n\nexport enum LayerTypeEnum {\n Scatterplot = \"Households\",\n Heatmap = \"Heatmap\",\n Hexagon = \"Hexagon\",\n}\n\nexport enum MapStyleEnum {\n Light = \"Light\",\n Dark = \"Dark\",\n}\n","import * as types from \"../Actions/Types\";\nimport { IBuxtonSupportTeamMember } from \"../Models/Models\";\n\nexport interface ICompanySupportTeamState {\n companySupportTeam: Array;\n}\n\nconst defaultState: ICompanySupportTeamState = {\n companySupportTeam: [],\n};\n\nexport const companySupportTeamStore = (\n store: ICompanySupportTeamState = { ...defaultState },\n action\n) => {\n switch (action.type) {\n case types.GET_COMPANY_SUPPORT_TEAM_SUCCESS:\n return Object.assign({}, store, {\n companySupportTeam: action.data || [],\n });\n\n // FAILURE\n case types.GET_COMPANY_SUPPORT_TEAM_FAILURE:\n console.log(action);\n\n default:\n return store;\n }\n};\n","export enum DialogTrainingState {\n LoopNet,\n Crexi,\n None,\n}\n","import * as types from \"../Actions/Types\";\nimport { ITerritoryTypePermission } from \"../Models/Models\";\n\nexport interface ITerritoryManagementStore {\n territoryTypePermissions: Array;\n}\nconst defaultState: ITerritoryManagementStore = {\n territoryTypePermissions: [],\n};\n\nexport const territoryManagement = (\n territoryManagementStore: ITerritoryManagementStore = { ...defaultState },\n action\n): ITerritoryManagementStore => {\n switch (action.type) {\n case types.GET_TERRITORY_TYPE_PERMISSIONS_SUCCESS: {\n return {\n ...territoryManagementStore,\n territoryTypePermissions: action.response.data,\n };\n }\n\n case types.UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_SUCCESS: {\n const territoryManagementStoreTypePermissionsCopy: ITerritoryTypePermission[]\n = [...territoryManagementStore.territoryTypePermissions];\n let foundIt = false;\n for (\n let i = 0;\n i < territoryManagementStoreTypePermissionsCopy.length;\n i++\n ) {\n if (\n territoryManagementStoreTypePermissionsCopy[i].userID\n === action.response.data.userID\n ) {\n foundIt = true;\n territoryManagementStoreTypePermissionsCopy[i].canView\n = action.response.data.canView;\n territoryManagementStoreTypePermissionsCopy[i].canEdit\n = action.response.data.canEdit;\n\n // update SCOUT\n const context = (window as any).scout.context;\n context.getFranchiseeTerritories(action.response.data.userID);\n break;\n }\n }\n\n if (!foundIt) {\n const obj: ITerritoryTypePermission = {\n typeID: action.response.data.typeID,\n canView: action.response.data.canView,\n canEdit: action.response.data.canEdit,\n userID: action.response.data.userID,\n };\n territoryManagementStoreTypePermissionsCopy.push(obj);\n }\n\n return {\n ...territoryManagementStore,\n territoryTypePermissions: territoryManagementStoreTypePermissionsCopy,\n };\n }\n\n case types.UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FOR_ALL_SUCCESS: {\n return {\n ...territoryManagementStore,\n territoryTypePermissions: action.response.data,\n };\n }\n\n // FAILURE\n case types.UPDATE_TERRITORY_TYPE_ADMIN_ONLY_FAILURE: // success handled in the user reducer\n case types.UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FAILURE:\n case types.GET_TERRITORY_TYPE_PERMISSIONS_FAILURE: {\n console.log(action);\n }\n\n default:\n return territoryManagementStore;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { IStore } from \"../Models/IStore\";\nimport { ITerritory, IUser } from \"../Models/Models\";\n\nexport interface IUserManagementStore {\n franchiseeStoreData: Array;\n franchiseeTerritoryData: Array;\n}\nconst userManagementDefaultState: IUserManagementStore = {\n franchiseeStoreData: [],\n franchiseeTerritoryData: [],\n};\n\nexport const userManagement = (\n userManagementStore: IUserManagementStore = { ...userManagementDefaultState },\n action\n): IUserManagementStore => {\n switch (action.type) {\n case types.GET_USER_FRANCHISEE_STORE_INFORMATION_SUCCESS:\n // common.radio.broadcast\n return Object.assign({}, userManagementStore, {\n franchiseeStoreData: action.response.data,\n });\n\n case types.GET_USER_FRANCHISEE_TERRITORY_INFORMATION_SUCCESS:\n return Object.assign({}, userManagementStore, {\n franchiseeTerritoryData: action.response.data,\n });\n\n case types.REMOVE_STORE_FROM_FRANCHISEE_USER_SUCCESS:\n const franchiseeStoreDataCopy = [\n ...userManagementStore.franchiseeStoreData,\n ];\n for (let i = 0; i < franchiseeStoreDataCopy.length; i++) {\n if (franchiseeStoreDataCopy[i].id === action.response.storeID) {\n franchiseeStoreDataCopy.splice(i, 1);\n // update SCOUT\n const scoutContext = (window as any).scout.context;\n scoutContext.getFranchiseeStores(action.response.userID);\n break;\n }\n }\n\n return Object.assign({}, userManagementStore, {\n franchiseeStoreData: franchiseeStoreDataCopy,\n });\n\n case types.REMOVE_TERRITORY_FROM_FRANCHISEE_USER_SUCCESS:\n const franchiseeTerritoryDataCopy = [\n ...userManagementStore.franchiseeTerritoryData,\n ];\n for (let i = 0; i < franchiseeTerritoryDataCopy.length; i++) {\n if (franchiseeTerritoryDataCopy[i].id === action.response.territoryID) {\n franchiseeTerritoryDataCopy.splice(i, 1);\n // update SCOUT\n const scoutContext = (window as any).scout.context;\n scoutContext.getFranchiseeTerritories(action.response.userID);\n break;\n }\n }\n\n return Object.assign({}, userManagementStore, {\n franchiseeTerritoryData: franchiseeTerritoryDataCopy,\n });\n\n // FAILURE\n case types.GET_USER_FRANCHISEE_STORE_INFORMATION_FAILURE:\n case types.GET_USER_FRANCHISEE_TERRITORY_INFORMATION_FAILURE:\n case types.REMOVE_STORE_FROM_FRANCHISEE_USER_FAILURE:\n case types.REMOVE_TERRITORY_FROM_FRANCHISEE_USER_FAILURE:\n case types.GET_TERRITORY_TYPES_FAILURE:\n console.log(action);\n\n default:\n return userManagementStore;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { IStore, IUserPreferences } from \"../Models/Models\";\nimport { GET_USER_PREFERENCES_SUCCESS_SCOUT } from \"../Actions/Types\";\n\nexport interface IUserPreferencesStore {\n userPreferences: IUserPreferences;\n communitySites: Array;\n}\nexport const defaultState: IUserPreferencesStore = {\n userPreferences: null,\n communitySites: [],\n};\n\nexport const userPreferencesStore = (\n userPreferencesStore: IUserPreferencesStore = { ...defaultState },\n action\n) => {\n switch (action.type) {\n case types.GET_USER_PREFERENCES_SUCCESS: {\n return Object.assign({}, userPreferencesStore, {\n userPreferences: action.response.data,\n });\n }\n\n case GET_USER_PREFERENCES_SUCCESS_SCOUT: {\n return {\n ...userPreferencesStore,\n userPreferences: action.data,\n };\n }\n\n case types.UPDATE_USER_PREFERENCES_SUCCESS: {\n // update SCOUT\n (window as any).scout.logic.UserPreferencesLogic.userPreferences\n = action.response.data;\n\n return Object.assign({}, userPreferencesStore, {\n userPreferences: action.response.data,\n });\n }\n\n case types.GET_ALL_COMMUNITY_SITES_SUCCESS:\n return Object.assign({}, userPreferencesStore, {\n communitySites: action.response.data || [],\n });\n\n case types.GET_USER_PREFERENCES_FAILURE:\n case types.UPDATE_USER_PREFERENCES_FAILURE:\n case types.GET_ALL_COMMUNITY_SITES_FAILURE:\n console.log(action);\n return userPreferencesStore;\n\n default:\n return userPreferencesStore;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { IUser } from \"../Models/Models\";\nimport { IOktaMFAFactor } from \"../Models/OktaModels/IOktaMFAFactor\";\n\nexport interface IUserProfileStore {\n currentUser: IUser;\n allMFAFactors: IOktaMFAFactor[];\n selectedMFAFactorID: string;\n waitingForMFAResponse: boolean;\n mfaResult: string;\n showMfaEnrollmentModal: boolean;\n mfaEnrollmentModalText: string;\n mfaEnrollmentUpdatedThisSession: boolean;\n}\n\nconst defaultStore: IUserProfileStore = {\n currentUser: null,\n allMFAFactors: null,\n selectedMFAFactorID: \"\",\n waitingForMFAResponse: false,\n mfaResult: \"\",\n showMfaEnrollmentModal: false,\n mfaEnrollmentModalText: \"\",\n mfaEnrollmentUpdatedThisSession: false,\n};\n\nexport const userProfile = (\n userProfileStore: IUserProfileStore = defaultStore,\n action\n) => {\n switch (action.type) {\n // FAILURE\n case types.UPDATE_USER_PROFILE_FAILURE: // success handled in user reducer\n case types.UPDATE_USER_AVATAR_FAILURE:\n case types.DELETE_USER_AVATAR_FAILURE:\n console.log(action);\n return userProfileStore;\n\n case types.USER_PROFILE_SET_MFA_FACTORS:\n return Object.assign({}, userProfileStore, {\n allMFAFactors: action.data,\n });\n\n case types.USER_PROFILE_SET_SELECTED_MFA_FACTOR_ID:\n return Object.assign({}, userProfileStore, {\n selectedMFAFactorID: action.data,\n });\n\n case types.USER_PROFILE_SET_WAITING_FOR_MFA_RESPONSE:\n return Object.assign({}, userProfileStore, {\n waitingForMFAResponse: action.data,\n });\n\n case types.USER_PROFILE_SET_MFA_RESULT:\n return Object.assign({}, userProfileStore, {\n mfaResult: action.data,\n });\n\n case types.USER_PROFILE_SET_SHOW_MFA_ENROLLMENT_MODAL:\n return Object.assign({}, userProfileStore, {\n showMfaEnrollmentModal: action.data,\n });\n\n case types.USER_PROFILE_SET_MFA_ENROLLMENT_MODAL_TEXT:\n return Object.assign({}, userProfileStore, {\n mfaEnrollmentModalText: action.data,\n });\n\n case types.USER_PROFILE_SET_MFA_ENROLLMENT_UPDATED_THIS_SESSION:\n return Object.assign({}, userProfileStore, {\n mfaEnrollmentUpdatedThisSession: action.data,\n });\n\n default:\n return userProfileStore;\n }\n};\n","import { IUser } from \"../../../Models/IUser\";\nimport { IBaseAction } from \"../Actions/BaseAction\";\n\nexport type GetUserInitAction = IBaseAction;\nexport type GetUserSuccessAction = IBaseAction;\nexport type GetUserFailureAction = IBaseAction;\nexport type SetShowActiveUsersAction = IBaseAction;\nexport type GetAllUsersInitAction = IBaseAction;\nexport type GetAllUsersSuccessAction = IBaseAction;\nexport type GetAllUsersFailureAction = IBaseAction;\nexport type SetLoadingAllUsersAction = IBaseAction;\n\nexport type UserActionType =\n GetUserInitAction\n | GetUserSuccessAction\n | GetUserFailureAction\n | SetShowActiveUsersAction\n | GetAllUsersInitAction\n | GetAllUsersSuccessAction\n | GetAllUsersFailureAction\n | SetLoadingAllUsersAction;\n\nexport const GET_USER_INIT = \"GET_USER_INIT\";\nexport const GET_USER_SUCCESS = \"GET_USER_SUCCESS\";\nexport const GET_USER_FAILURE = \"GET_USER_FAILURE\";\nexport const SET_SHOW_ACTIVE_USERS = \"SET_SHOW_ACTIVE_USERS\";\nexport const GET_ALL_USERS_INIT = \"GET_ALL_USERS_INIT\";\nexport const GET_ALL_USERS_SUCCESS = \"GET_ALL_USERS_SUCCESS\";\nexport const GET_ALL_USERS_FAILURE = \"GET_ALL_USERS_FAILURE\";\nexport const SET_LOADING_ALL_USERS = \"SET_LOADING_ALL_USERS\";","import { IBrand } from \"../../../Models/IBrand\";\nimport { IBrandSampleSet } from \"../../../Models/IBrandSampleSet\";\nimport { IGetBrandsSampleSetDataByClosestRequest } from \"../../../Models/Requests/IGetBrandsSampleSetDataByClosestRequest\";\nimport { IGetBrandsSampleSetDataByGeoRequest } from \"../../../Models/Requests/IGetBrandsSampleSetDataByGeoRequest\";\nimport { IBaseAction } from \"../Actions/BaseAction\";\n\nexport interface ICorrelatedBaseAction extends IBaseAction {\n correlationId: number;\n};\n\nexport type GetAllBrandsInitiateAction = IBaseAction;\nexport type GetAllBrandsSuccessAction = IBaseAction;\nexport type GetAllBrandsFailureAction = IBaseAction;\nexport type SetLoadingBrandsAction = IBaseAction;\nexport type SetLoadingBrandSampleSetLocationsAction = IBaseAction;\nexport type GetBrandSampleSetLocationsByGeoInitiateAction = ICorrelatedBaseAction;\nexport type GetBrandSampleSetLocationsByGeoSuccessAction = ICorrelatedBaseAction;\nexport type GetBrandSampleSetLocationsByGeoFailureAction = ICorrelatedBaseAction;\nexport type GetBrandSampleSetLocationsByClosestInitiateAction = ICorrelatedBaseAction;\nexport type GetBrandSampleSetLocationsByClosestSuccessAction = ICorrelatedBaseAction;\nexport type GetBrandSampleSetLocationsByClosestFailureAction = ICorrelatedBaseAction;\nexport type ResetBrandSampleSetAction = IBaseAction;\n\nexport type BrandActionType =\n GetAllBrandsInitiateAction |\n GetAllBrandsSuccessAction |\n GetAllBrandsFailureAction |\n SetLoadingBrandsAction |\n SetLoadingBrandSampleSetLocationsAction |\n GetBrandSampleSetLocationsByGeoInitiateAction |\n GetBrandSampleSetLocationsByGeoSuccessAction |\n GetBrandSampleSetLocationsByGeoFailureAction |\n GetBrandSampleSetLocationsByClosestInitiateAction |\n GetBrandSampleSetLocationsByClosestSuccessAction |\n GetBrandSampleSetLocationsByClosestFailureAction |\n ResetBrandSampleSetAction\n;\n\n/** brands */\nexport const GET_ALL_BRANDS_INITIATE = \"GET_ALL_BRANDS_INITIATE\";\nexport const GET_ALL_BRANDS_SUCCESS = \"GET_ALL_BRANDS_SUCCESS\";\nexport const GET_ALL_BRANDS_FAILURE = \"GET_ALL_BRANDS_FAILURE\";\nexport const SET_LOADING_BRANDS = \"SET_LOADING_BRANDS\";\n\n/** sample set */\nexport const SET_LOADING_BRAND_SAMPLE_SET_LOCATIONS = \"SET_LOADING_BRAND_SAMPLE_SET_LOCATIONS\";\n\n/** sample set by geo */\nexport const GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_INITIATE = \"GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_INITIATE\";\nexport const GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_SUCCESS = \"GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_SUCCESS\";\nexport const GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_FAILURE = \"GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_FAILURE\";\n\n/** sample set by geo */\nexport const GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_INITIATE = \"GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_INITIATE\";\nexport const GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_SUCCESS = \"GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_SUCCESS\";\nexport const GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_FAILURE = \"GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_FAILURE\";\n\n/** reset */\nexport const RESET_BRAND_SAMPLE_SET = \"RESET_BRAND_SAMPLE_SET\";\n","import { IBrandCategory } from \"../../../Models/IBrandCategory\";\nimport { IBaseAction } from \"../Actions/BaseAction\";\n\nexport type GetAllCategoriesInitiateAction = IBaseAction;\nexport type GetAllCategoriesSuccessAction = IBaseAction;\nexport type GetAllCategoriesFailureAction = IBaseAction;\nexport type SetLoadingCategoriesAction = IBaseAction;\n\nexport type CategoryActionType = \n GetAllCategoriesInitiateAction |\n GetAllCategoriesSuccessAction | \n GetAllCategoriesFailureAction |\n SetLoadingCategoriesAction;\n\nexport const GET_ALL_CATEGORIES_INITIATE = \"GET_ALL_CATEGORIES_INITIATE\";\nexport const GET_ALL_CATEGORIES_SUCCESS = \"GET_ALL_CATEGORIES_SUCCESS\";\nexport const GET_ALL_CATEGORIES_FAILURE = \"GET_ALL_CATEGORIES_FAILURE\";\nexport const SET_LOADING_CATEGORIES = \"SET_LOADING_CATEGORIES\";\n","import { IBaseAction } from \"../Actions/BaseAction\";\n\nexport type GetUSAWKTInitiateAction = IBaseAction;\nexport type GetUSAWKTSuccessAction = IBaseAction;\nexport type GetUSAWKTFailureAction = IBaseAction;\n\nexport type GetRedirectLinkInitiateAction = IBaseAction;\nexport type GetRedirectLinkFailureAction = IBaseAction;\n\nexport type CommonActionType =\n GetUSAWKTInitiateAction\n | GetUSAWKTSuccessAction\n | GetUSAWKTFailureAction\n ;\n\nexport const GET_USA_WKT_INITIATE = \"GET_USA_WKT_INITIATE\";\nexport const GET_USA_WKT_SUCCESS = \"GET_USA_WKT_SUCCESS\";\nexport const GET_USA_WKT_FAILURE = \"GET_USA_WKT_FAILURE\";\nexport const GET_REDIRECT_LINK_INITIATE = \"GET_REDIRECT_LINK_INITIATE\";\nexport const GET_REDIRECT_LINK_FAILURE = \"GET_REDIRECT_LINK_FAILURE\";","import { notification } from \"antd\";\nimport { ILoginUserData, ICurrentHover, ILockedModal } from \"../Models/Models\";\nimport {\n GET_LOGIN_USER_DATA_FAILURE,\n GET_LOGIN_USER_DATA_SUCCESS,\n LoginActionType,\n SET_FETCHING_LOGIN_USER_DATA,\n SET_CURRENT_HOVER,\n SET_LOCKED_MODAL,\n} from \"../Types/LoginActionTypes\";\n\nexport interface ILoginReducerState {\n firstName: string;\n lastName: string;\n initials: string;\n featureAccess: string[];\n fetchingLoginUserData: boolean;\n userID: number;\n currentHover: ICurrentHover;\n lockedModal: ILockedModal;\n}\nexport const loginReducerState: ILoginReducerState = {\n firstName: \"\",\n lastName: \"\",\n initials: \"\",\n featureAccess: null,\n fetchingLoginUserData: false,\n userID: -1,\n currentHover: {\n app: null,\n title: \"\",\n image: \"\",\n header: \"\",\n description: \"\",\n },\n lockedModal: {\n visible: false,\n title: \"\",\n description: \"\",\n link: \"\",\n linkText: \"\",\n }\n};\n\nexport const loginReducer = (state = { ...loginReducerState }, action: LoginActionType): ILoginReducerState => {\n switch (action.type) {\n /** misc */\n case SET_FETCHING_LOGIN_USER_DATA: {\n return {\n ...state,\n fetchingLoginUserData: action.data as boolean,\n };\n }\n /** success */\n case GET_LOGIN_USER_DATA_SUCCESS: {\n const data = action.data as ILoginUserData;\n return {\n ...state,\n firstName: data.firstName,\n lastName: data.lastName,\n initials: data.initials,\n featureAccess: data.featureAccess as string[],\n userID: data.userID\n };\n }\n /** failure */\n case GET_LOGIN_USER_DATA_FAILURE: {\n notification.error({\n message: \"Error getting Login User Data\",\n description: action.data,\n });\n return {\n ...state,\n };\n }\n /* hover */\n case SET_CURRENT_HOVER: {\n return {\n ...state,\n currentHover: action.data as ICurrentHover,\n };\n }\n case SET_LOCKED_MODAL: {\n return {\n ...state,\n lockedModal: action.data as ILockedModal,\n };\n }\n default: {\n return state;\n }\n }\n};\n","import { BrandMap } from \"./BrandMap\";\nimport { IBrand } from \"./IBrand\";\n\nexport type CategoryMap = Map;\n\nexport type CategoryMapItem = {\n categoryName: string;\n subCategories: {\n categoryName: string;\n naicsCode: string;\n brands: Map;\n }[];\n};\n","import { notification } from \"antd\";\nimport { getInitialNotificationFilterDates } from \"../Components/Notifications/NotificationsLogic\";\nimport { NotificationType } from \"../Enums/NotificationType\";\n\nimport { INotification } from \"../Models/Notification\";\nimport {\n GET_NOTIFICATIONS_FAILURE,\n GET_NOTIFICATIONS_SUCCESS,\n NotificationActionType,\n SET_LOADING_NOTIFICATIONS,\n SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_FAILURE,\n SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_SUCCESS,\n SET_NOTIFICATIONS_DRAWER_VISIBLE,\n SET_NOTIFICATION_FILTER_DATES,\n UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_FAILURE,\n UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_SUCCESS,\n UPDATE_ALL_NOTIFICATIONS_READ_STATUS_FAILURE,\n UPDATE_ALL_NOTIFICATIONS_READ_STATUS_SUCCESS,\n UPDATE_NOTIFICATION_FAILURE,\n UPDATE_NOTIFICATION_SUCCESS,\n} from \"../Types/NotificationActionTypes\";\n\nexport interface INotificationsReducerState {\n notifications: INotification[];\n loadingNotifications: boolean;\n drawerVisible: boolean;\n startDate: Date;\n endDate: Date;\n}\n\nconst initialDates: [Date, Date] = getInitialNotificationFilterDates();\n\nexport const notificationsReducerState: INotificationsReducerState = {\n notifications: [],\n loadingNotifications: false,\n drawerVisible: false,\n startDate: initialDates[0],\n endDate: initialDates[1],\n};\n\nexport const notificationsReducer = (\n state: INotificationsReducerState = { ...notificationsReducerState },\n action: NotificationActionType\n): INotificationsReducerState => {\n switch (action.type) {\n /** misc */\n case SET_LOADING_NOTIFICATIONS: {\n return {\n ...state,\n loadingNotifications: action.data as boolean,\n };\n }\n case SET_NOTIFICATIONS_DRAWER_VISIBLE: {\n return {\n ...state,\n drawerVisible: action.data as boolean,\n };\n }\n case SET_NOTIFICATION_FILTER_DATES: {\n const dates = action.data as [Date, Date];\n return {\n ...state,\n startDate: dates[0],\n endDate: dates[1]\n };\n }\n /** success */\n case SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_SUCCESS: {\n const readLinkId = action.data as string;\n const notificationsCopy: INotification[] = [...state.notifications];\n for (const n of notificationsCopy){\n if (n.linkId === readLinkId){\n n.isRead = true;\n break;\n }\n }\n return {\n ...state,\n notifications: notificationsCopy\n };\n }\n case GET_NOTIFICATIONS_SUCCESS: {\n return {\n ...state,\n notifications: action.data as INotification[],\n };\n }\n case UPDATE_ALL_NOTIFICATIONS_READ_STATUS_SUCCESS: {\n const allRead = action.data as boolean;\n const updatedNotifications: INotification[] = state.notifications.map((n: INotification) => {\n return {\n ...n,\n isRead: allRead\n };\n });\n return {\n ...state,\n notifications: updatedNotifications,\n };\n }\n case UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_SUCCESS: {\n const allActive = action.data as boolean;\n const updatedNotifications: INotification[] = state.notifications.map((n: INotification) => {\n return {\n ...n,\n isActive: allActive\n };\n });\n return {\n ...state,\n notifications: updatedNotifications,\n };\n }\n case UPDATE_NOTIFICATION_SUCCESS: {\n const updatedNotification = action.data as INotification;\n /** simply copy the array */\n const notificationsCopy = state.notifications.map((n: INotification) => {\n return {\n ...n\n };\n });\n if (!updatedNotification.isActive) {\n /** if they deleted the notification, remove it from the array */\n const filteredNotifications = notificationsCopy.filter((n: INotification) => {\n return n.id !== updatedNotification.id;\n });\n return {\n ...state,\n notifications: filteredNotifications\n };\n }\n /** something else was updated other than it's active status, so it still needs to show in the array */\n for (const notification of notificationsCopy) {\n if (notification.id === updatedNotification.id){\n notification.createdDate = updatedNotification.createdDate;\n notification.modifiedDate = updatedNotification.modifiedDate;\n notification.description = updatedNotification.description;\n notification.isActive = updatedNotification.isActive;\n notification.isRead = updatedNotification.isRead;\n notification.linkId = updatedNotification.linkId;\n notification.notificationType = updatedNotification.notificationType;\n notification.title = updatedNotification.title;\n break;\n }\n }\n\n return {\n ...state,\n notifications: notificationsCopy\n };\n }\n /** failure */\n case SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_FAILURE:\n case UPDATE_NOTIFICATION_FAILURE:\n case UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_FAILURE:\n case UPDATE_ALL_NOTIFICATIONS_READ_STATUS_FAILURE:\n case GET_NOTIFICATIONS_FAILURE:\n default: {\n return state;\n }\n }\n};\n\nconst getMockNotifications = ():INotification[] =>{\n return [\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MatchReportComplete,\n title: \"Match Report 1\",\n description: \"Your report is complete!\",\n createdDate: new Date(new Date().setMinutes(-1)),\n modifiedDate: new Date(new Date().setMinutes(-1)),\n isRead: false,\n isActive: true,\n },\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MatchReportComplete,\n title: \"Match Report 2\",\n description: \"Your report is complete!\",\n createdDate: new Date(new Date().setMinutes(-60)),\n modifiedDate: new Date(new Date().setMinutes(-60)),\n isRead: false,\n isActive: true,\n },\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MobilyticsReportComplete,\n title: \"Mobilytics Report 1\",\n description: \"Your report is complete!\",\n createdDate: new Date(new Date().setMinutes(-120)),\n modifiedDate: new Date(new Date().setMinutes(-120)),\n isRead: true,\n isActive: true,\n },\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MatchReportError,\n title: \"Match Report 1\",\n description: \"Your report has an error :(\",\n createdDate: new Date(new Date().setHours(-24)),\n modifiedDate: new Date(new Date().setHours(-24)),\n isRead: false,\n isActive: true,\n },\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MobilyticsReportError,\n title: \"Mobilytics Report 22\",\n description: \"Your report has an error :(\",\n createdDate: new Date(new Date().setHours(-500)),\n modifiedDate: new Date(new Date().setHours(-500)),\n isRead: true,\n isActive: true,\n },\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MobilyticsReportCaching,\n title: \"Mobilytics Report 23\",\n description: \"Caching report\",\n createdDate: new Date(new Date().setHours(-5)),\n modifiedDate: new Date(new Date().setHours(-5)),\n isRead: true,\n isActive: true,\n },\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MobilyticsReportRunning,\n title: \"Mobilytics Report 24\",\n description: \"Running Report\",\n createdDate: new Date(new Date().setHours(-2)),\n modifiedDate: new Date(new Date().setHours(-2)),\n isRead: true,\n isActive: true,\n },\n {\n id: Math.random(),\n linkId: \"\",\n notificationType: NotificationType.MobilyticsReportPending,\n title: \"Mobilytics Report 25\",\n description: \"Pending Report\",\n createdDate: new Date(new Date().setHours(-1)),\n modifiedDate: new Date(new Date().setHours(-1)),\n isRead: true,\n isActive: true,\n },\n ];\n};\n","import { IBaseAction } from \"../Actions/BaseAction\";\nimport { INotification } from \"../Models/Notification\";\nimport { IUpdateNotificationRequest } from \"../Models/Requests/Notifications/UpdateNotificationRequest\";\n\nexport type GetNotificationsInitiate = IBaseAction<[Date, Date]>;\nexport type GetNotificationsSuccess = IBaseAction;\nexport type GetNotificationsFailure = IBaseAction;\nexport type SetLoadingNotificationsAction = IBaseAction;\nexport type UpdateNotificationsInitiate = IBaseAction;\nexport type UpdateNotificationsSuccess = IBaseAction;\nexport type UpdateNotificationsFailure = IBaseAction;\nexport type SetNotificationsDrawerVisible = IBaseAction;\nexport type SetNotificationFilterDates = IBaseAction<[Date, Date]>;\n/** all */\nexport type UpdateAllNotificationsReadStatusInitiate = IBaseAction;\nexport type UpdateAllNotificationsReadStatusSuccess = IBaseAction;\nexport type UpdateAllNotificationsReadStatusFailure = IBaseAction;\nexport type UpdateAllNotificationsActiveStatusInitiate = IBaseAction;\nexport type UpdateAllNotificationsActiveStatusSuccess = IBaseAction;\nexport type UpdateAllNotificationsActiveStatusFailure = IBaseAction;\n/** single */\nexport type UpdateNotificationInitiate = IBaseAction;\nexport type UpdateNotificationSuccess= IBaseAction;\nexport type UpdateNotificationFailure = IBaseAction;\n/** a user clicks on a notification */\nexport type SetNotificationsByLinkIdViewedInitiate = IBaseAction;\nexport type SetNotificationsByLinkIdViewedSuccess = IBaseAction;\nexport type SetNotificationsByLinkIdViewedFailure = IBaseAction;\n\nexport type NotificationActionType =\n GetNotificationsInitiate |\n GetNotificationsSuccess |\n GetNotificationsFailure |\n SetLoadingNotificationsAction |\n UpdateNotificationsInitiate |\n UpdateNotificationsSuccess |\n UpdateNotificationsFailure |\n SetNotificationsDrawerVisible |\n UpdateAllNotificationsReadStatusInitiate |\n UpdateAllNotificationsReadStatusSuccess |\n UpdateAllNotificationsReadStatusFailure |\n UpdateAllNotificationsActiveStatusInitiate |\n UpdateAllNotificationsActiveStatusSuccess |\n UpdateAllNotificationsActiveStatusFailure |\n UpdateNotificationInitiate |\n UpdateNotificationSuccess |\n UpdateNotificationFailure |\n SetNotificationFilterDates |\n SetNotificationsByLinkIdViewedInitiate |\n SetNotificationsByLinkIdViewedSuccess |\n SetNotificationsByLinkIdViewedFailure\n;\n\nexport const GET_NOTIFICATIONS_INITIATE = \"GET_NOTIFICATIONS_INITIATE\";\nexport const GET_NOTIFICATIONS_SUCCESS = \"GET_NOTIFICATIONS_SUCCESS\";\nexport const GET_NOTIFICATIONS_FAILURE = \"GET_NOTIFICATIONS_FAILURE\";\nexport const SET_LOADING_NOTIFICATIONS = \"SET_LOADING_NOTIFICATIONS\";\nexport const SET_NOTIFICATION_FILTER_DATES = \"SET_NOTIFICATION_FILTER_DATES\";\n/** all */\nexport const UPDATE_ALL_NOTIFICATIONS_READ_STATUS_INITIATE = \"UPDATE_ALL_NOTIFICATIONS_READ_STATUS_INITIATE\";\nexport const UPDATE_ALL_NOTIFICATIONS_READ_STATUS_SUCCESS = \"UPDATE_ALL_NOTIFICATIONS_READ_STATUS_SUCCESS\";\nexport const UPDATE_ALL_NOTIFICATIONS_READ_STATUS_FAILURE = \"UPDATE_ALL_NOTIFICATIONS_READ_STATUS_FAILURE\";\nexport const UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_INITIATE = \"UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_INITIATE\";\nexport const UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_SUCCESS = \"UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_SUCCESS\";\nexport const UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_FAILURE = \"UPDATE_ALL_NOTIFICATIONS_ACTIVE_STATUS_FAILURE\";\n/** single */\nexport const UPDATE_NOTIFICATION_INITIATE = \"UPDATE_NOTIFICATION_INITIATE\";\nexport const UPDATE_NOTIFICATION_SUCCESS = \"UPDATE_NOTIFICATION_SUCCESS\";\nexport const UPDATE_NOTIFICATION_FAILURE = \"UPDATE_NOTIFICATION_FAILURE\";\nexport const SET_NOTIFICATIONS_DRAWER_VISIBLE = \"SET_NOTIFICATIONS_DRAWER_VISIBLE\";\n/** a user clicks on a notification */\nexport const SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_INITIATE = \"SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_INITIATE\";\nexport const SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_SUCCESS = \"SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_SUCCESS\";\nexport const SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_FAILURE = \"SET_NOTIFICATIONS_BY_LINK_ID_VIEWED_FAILURE\";","export enum ReportProgressStage {\n PENDING = 0,\n SUBMITTED = 3,\n TWO = 10,\n THREE = 22,\n FOUR = 38,\n FIVE = 53,\n SIX = 67,\n SEVEN = 74,\n CACHING = 90,\n COMPLETE = 100\n}\n\nexport enum ReportProgressStageName {\n PENDING = 'pending',\n SUBMITTED = 'submitted',\n RUNNING = 'running',\n CACHING = 'caching',\n COMPLETE = 'complete'\n}","import { IMyReportsReport } from \"../../../Models/IMyReportsReport\";\nimport { IGCPBigQueryJob } from \"../../../Models/Models\";\nimport { IBaseAction } from \"../Actions/BaseAction\";\nimport { App } from \"../Enums/App\";\nimport { IReportProgress } from \"../Models/IReportProgress\";\nimport { IGetJobsRequest } from \"../Models/Requests/IGetJobsRequest\";\n\nexport type SetLoadingReportsAction = IBaseAction;\nexport type GetReportsInitiateAction = IBaseAction;\nexport type GetReportsSuccessAction = IBaseAction;\nexport type GetReportsFailureAction = IBaseAction;\nexport type GetRecentReportsInitiateAction = IBaseAction;\nexport type GetRecentReportsSuccessAction = IBaseAction;\nexport type GetRecentMatchReportsSuccessAction = IBaseAction;\nexport type GetRecentMobilyticsReportsSuccessAction = IBaseAction;\nexport type GetRecentReportsFailureAction = IBaseAction;\nexport type SetReportProgress = IBaseAction;\nexport type SetDeletingReportAction = IBaseAction;\nexport type DeleteReportInitiateAction = IBaseAction;\nexport type SetDeletingReportSuccessAcction = IBaseAction;\n\nexport type ReportActionType =\n SetLoadingReportsAction |\n GetReportsInitiateAction |\n GetReportsSuccessAction |\n GetReportsFailureAction |\n GetRecentReportsInitiateAction |\n GetRecentReportsSuccessAction |\n GetRecentMatchReportsSuccessAction |\n GetRecentMobilyticsReportsSuccessAction |\n GetRecentReportsFailureAction |\n SetReportProgress |\n SetDeletingReportAction |\n SetDeletingReportSuccessAcction |\n DeleteReportInitiateAction;\n\nexport const SET_LOADING_REPORTS = \"SET_LOADING_REPORTS\";\nexport const SET_DELETING_REPORT = \"SET_DELETING_REPORT\";\nexport const GET_REPORTS_INITIATE = \"GET_REPORTS_INITIATE\";\nexport const GET_REPORTS_SUCCESS = \"GET_REPORTS_SUCCESS\";\nexport const GET_REPORTS_FAILURE = \"GET_REPORTS_FAILURE\";\nexport const GET_RECENT_REPORTS_INITIATE = \"GET_RECENT_REPORTS_INITIATE\";\nexport const GET_RECENT_REPORTS_SUCCESS = \"GET_RECENT_REPORTS_SUCCESS\";\nexport const GET_RECENT_MATCH_REPORTS_SUCCESS = \"GET_RECENT_MATCH_REPORTS_SUCCESS\";\nexport const GET_RECENT_MOBILYTICS_REPORTS_SUCCESS = \"GET_RECENT_MOBILYTICS_REPORTS_SUCCESS\";\nexport const GET_RECENT_REPORTS_FAILURE = \"GET_RECENT_REPORTS_FAILURE\";\nexport const SET_REPORT_PROGRESS = \"SET_REPORT_PROGRESS\";\nexport const SET_DELETING_REPORT_SUCCESS = \"SET_DELETING_REPORT_SUCCESS\";\nexport const DELETE_REPORT_INITIATE = \"DELETE_REPORT_INITIATE\";\n","import { RetailMatchGeographyOption } from \"../../../Enums/RetailMatchGeographyOption\";\nimport { ILatLon } from \"../../../Models/ILatLon\";\nimport { IRetailMatchJob } from \"../../../Models/IRetailMatch\";\nimport { IRetailMatchGeography } from \"../../../Models/IRetailMatchGeography\";\nimport { ISubmitRetailMatchJobRequest } from \"../../../Models/Requests/ISubmitRetailMatchJobRequest\";\nimport { IBaseAction } from \"../Actions/BaseAction\";\nimport { MatchReportTypeEnum } from \"../Enums/MatchReportTypeEnum\";\n\nexport type SearchedPlaceInfo = {\n name: string;\n placeId: string;\n lat: number;\n lng: number;\n};\n\nexport type GetRetailMatchGeographiesInitiateAction = IBaseAction;\nexport type GetRetailMatchGeographiesSuccessAction = IBaseAction;\nexport type GetRetailMatchGeographiesFailureAction = IBaseAction;\nexport type SetLoadingRetailMatchGeographiesAction = IBaseAction;\nexport type SetSearchedPlaceMatchAction = IBaseAction;\nexport type SetRetailMatchReportTypeAction = IBaseAction;\n\nexport type SubmitMatchReportIniitiateAction = IBaseAction;\nexport type SubmitMatchReportSuccessAction = IBaseAction;\nexport type SubmitMatchReportFailureAction = IBaseAction;\nexport type SetLoadingMatchReportAction = IBaseAction;\nexport type StartLastReportRunningAction = IBaseAction;\nexport type IgnoreRunningReportAction = IBaseAction;\nexport type ResetRetailMatchAction = IBaseAction;\nexport type RestartRetailMatch = IBaseAction;\nexport type SetIncludeAllBudsAction = IBaseAction;\nexport type SetMostRecentlySubmittedMobilyticsReportAction = IBaseAction;\nexport type SiteIsInDMAInitiateAction = IBaseAction;\nexport type SiteIsInDMASuccessAction = IBaseAction;\nexport type SiteIsInDMAFailureAction = IBaseAction;\nexport type CheckingSiteIsInDMAAction = IBaseAction;\n\nexport type RetailMatchActionType =\n GetRetailMatchGeographiesInitiateAction\n | GetRetailMatchGeographiesSuccessAction\n | GetRetailMatchGeographiesFailureAction\n | SetLoadingRetailMatchGeographiesAction\n | SubmitMatchReportIniitiateAction\n | SubmitMatchReportSuccessAction\n | SubmitMatchReportFailureAction\n | SetLoadingMatchReportAction\n | SetSearchedPlaceMatchAction\n | SetRetailMatchReportTypeAction\n | StartLastReportRunningAction\n | IgnoreRunningReportAction\n | ResetRetailMatchAction\n | RestartRetailMatch\n | SetIncludeAllBudsAction\n | SetMostRecentlySubmittedMobilyticsReportAction\n | SiteIsInDMAInitiateAction\n | SiteIsInDMASuccessAction\n | SiteIsInDMAFailureAction\n | CheckingSiteIsInDMAAction;\n\nexport const GET_RETAIL_MATCH_GEOGRAPHIES_INITIATE\n = \"GET_RETAIL_MATCH_GEOGRAPHIES_INITIATE\";\nexport const GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS\n = \"GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS\";\nexport const GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE\n = \"GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE\";\nexport const SET_LOADING_RETAIL_MATCH_GEOGRAPHIES\n = \"SET_LOADING_RETAIL_MATCH_GEOGRAPHIES\";\n\nexport const SUBMIT_MATCH_REPORT_INITIATE = \"SUBMIT_MATCH_REPORT_INITIATE\";\nexport const SUBMIT_MATCH_REPORT_SUCCESS = \"SUBMIT_MATCH_REPORT_SUCCESS\";\nexport const SUBMIT_MATCH_REPORT_FAILURE = \"SUBMIT_MATCH_REPORT_FAILURE\";\nexport const SET_LOADING_MATCH_REPORT = \"SET_LOADING_MATCH_REPORT\";\nexport const SET_SEARCHED_PLACE_MATCH_ACTION = \"SET_SEARCHED_PLACE_MATCH_ACTION\";\nexport const SET_MATCH_REPORT_TYPE = 'SET_MATCH_REPORT_TYPE';\nexport const START_LAST_REPORT_RUNNING = 'START_LAST_REPORT_RUNNING';\nexport const IGNORE_RUNNING_REPORT = 'IGNORE_RUNNING_REPORT';\nexport const RESET_RETAIL_MATCH_ACTION = 'RESET_RETAIL_MATCH_ACTION';\nexport const RESTART_RETAIL_MATCH_ACTION = 'RESTART_RETAIL_MATCH_ACTION';\nexport const SET_INCLUDE_ALL_BUDS_ACTION = 'SET_INCLUDE_ALL_BUDS_ACTION';\nexport const SET_MOST_RECENTLY_SUBMITTED_RETAIL_MATCH_REPORT = 'SET_MOST_RECENTLY_SUBMITTED_RETAIL_MATCH_REPORT';\nexport const SITE_IS_IN_DMA_INITIATE = \"SITE_IS_IN_DMA_INITIATE\";\nexport const SITE_IS_IN_DMA_SUCCESS = \"SITE_IS_IN_DMA_SUCCESS\";\nexport const SITE_IS_IN_DMA_FAILURE = \"SITE_IS_IN_DMA_FAILURE\";\nexport const SET_CHECKING_SITE_IS_IN_DMA = \"SET_CHECKING_SITE_IS_IN_DMA\";","import {\n START_FACTOR_REPORT,\n SET_FACTOR_SCENARIOS,\n SET_FACTOR_VISIBLE,\n SET_FACTOR_LOADING_SCENARIOS,\n} from \"../Actions/Types\";\nimport { IMobilyticsScenarioLite } from \"../Models/IMobilyticsScenarioLite\";\n\ndeclare const scout;\n\nexport interface IFactorState {\n loadingScenarios: boolean;\n isFactorModalVisible: boolean;\n scenarios: IMobilyticsScenarioLite[];// TODO\n}\n\nexport const defaultState: IFactorState = {\n loadingScenarios: true,\n isFactorModalVisible: false,\n scenarios: [],\n};\n\nexport const factorReducer = (\n state: IFactorState = { ...defaultState },\n action\n): IFactorState => {\n switch (action.type) {\n /** misc */\n case START_FACTOR_REPORT: {\n scout.interop.api.factorSubmission.toggleFactorFormIsVisible(\n true\n );\n return {\n ...state,\n isFactorModalVisible: true,\n };\n }\n case SET_FACTOR_SCENARIOS: {\n return {\n ...state,\n scenarios: action.data,\n loadingScenarios: false,\n };\n }\n case SET_FACTOR_VISIBLE: {\n return {\n ...state,\n isFactorModalVisible: action.data,\n };\n }\n case SET_FACTOR_LOADING_SCENARIOS: {\n return {\n ...state,\n loadingScenarios: action.data,\n };\n }\n\n default:\n return state;\n }\n};\n","import { IdleSessionTimeout } from \"idle-session-timeout\";\nimport {notification} from \"antd\";\n\nexport const SESSION_TIMEOUT_LENGTH_MS\n = 12 //hours\n * 60 //minutes\n * 60 //seconds\n * 1000; //ms\n\n/**\n * Starts a timer for the current session that will count down while the user is idle.\n * The timer is reset by the following actions: page load, mouse move, mouse down, mouse up,\n * key press, DOM Mouse Scroll, mouse wheel, MS Pointer Move, click, scroll, touch start, touch move, touch end\n * @param timeoutLengthMs - the amount of time the session should last\n * @param onTimeout - callback that should execute when the session expires. Typically, this should be some kind of logout action.\n * @param debugLogging - Optional - enable logging\n */\nexport const startSession = (\n timeoutLengthMs: number,\n onTimeout: () => void,\n debugLogging?: boolean,\n): void => {\n let session = new IdleSessionTimeout(timeoutLengthMs);\n let notificationShown = false;\n\n //Define a function to explicitly handle user activity\n const resetNotificationOnActivity = () => {\n if (notificationShown) {\n if (debugLogging) {\n console.log('User activity detected, resetting notification flag.');\n }\n notificationShown = false;\n }\n };\n\n // Common function to add or remove event listeners\n const updateEventListeners = (action) => {\n const eventTypes = ['mousemove', 'click', 'mousedown', 'mouseup', 'keypress', 'contextmenu', 'touchstart', 'touchmove', 'touchend', 'scroll', 'mousewheel'];\n eventTypes.forEach(event => {\n document[`${action}EventListener`](event, resetNotificationOnActivity);\n });\n };\n\n // Add event listeners to detect user activity\n updateEventListeners('add');\n\n session.onTimeOut = () => {\n // Remove event listeners when the session ends\n updateEventListeners('remove');\n onTimeout();\n };\n \n if (debugLogging) {\n console.log(`Starting session, ${timeoutLengthMs} ms`);\n }\n\n // Handling for session initially longer than 5 minutes\n if (timeoutLengthMs > 300000) {\n session.onTimeLeftChange = (timeLeft: number) => {\n if (debugLogging) {\n console.log(`Time left in session: ${timeLeft} ms`);\n }\n\n // Show the notification only if we're within the last 5 minutes and it hasn't been shown yet\n if (timeLeft <= 300000 && !notificationShown) {\n notification.warning({\n message: 'Session Expiring Soon',\n description: 'Your session will expire in 5 minutes due to inactivity.',\n duration: 10, // How long the notification stays open.\n });\n notificationShown = true;\n }\n };\n } else {\n // Handling for session initially less than 5 minutes\n session.onTimeLeftChange = (timeLeft: number) => {\n if (debugLogging) {\n console.log(`Time left in session: ${timeLeft} ms`);\n }\n\n // Show the notification only if we're within the last 45 seconds and it hasn't been shown yet\n if (timeLeft <= 45000 && !notificationShown) {\n notification.warning({\n message: 'Session Expiring Very Soon',\n description: 'Your session will expire in less than 45 seconds due to inactivity.',\n duration: 10, // Adjust duration as needed\n });\n notificationShown = true;\n }\n };\n }\n\n session.start();\n};\n\n/**\n * Logs the user out of their current session by creating a form that posts to the specified URL,\n * and then submitting.\n * @param lougoutEndpoint - the endpoint to which the form posts.\n */\nexport const logout = (\n lougoutEndpoint: string\n): void => {\n const form = document.createElement(\"form\") as HTMLFormElement;\n form.method = \"POST\";\n form.action = lougoutEndpoint;\n document.body.appendChild(form);\n form.submit();\n};","import React, { ReactNode } from \"react\";\nimport { Tooltip } from \"antd\";\nimport { TooltipPlacement, TooltipTrigger } from \"antd/lib/tooltip\";\nimport styled from \"styled-components\";\nimport { FiInfo } from \"@react-icons/all-files/fi/FiInfo\";\n\ninterface IBuxTooltipProps {\n placement?: TooltipPlacement;\n content: string | ReactNode | JSX.Element;\n trigger: TooltipTrigger;\n style?: React.CSSProperties;\n allowClickThrough?: boolean;\n iconSize?: number;\n}\n\nconst StyledInfo = styled(FiInfo)`\n stroke: #434a54;\n fill: transparent;\n margin-left: 5px;\n transition: fill 0.3s, stroke 0.3s;\n > circle {\n stroke: #434a54;\n }\n &:hover {\n stroke: white;\n fill: #434a54;\n > circle {\n stroke: #434a54;\n }\n }\n`;\n\nexport const BuxTooltip = (props: IBuxTooltipProps) => {\n return (\n \n event.stopPropagation()\n }\n />\n \n );\n};\n","import { IPolygon } from \"../Models/IPolygon\";\n\nexport const isMobilyticsPlace = (bucketType: number) => {\n return (\n bucketType\n === (window as any).scout.models.DataBucketTypeEnum.MOBILYTICS_PLACE\n || bucketType\n === (window as any).scout.models.DataBucketTypeEnum.MOBILYTICS_PLACE_GEOFENCE\n );\n};\n\nexport const polygonsAreIdentical = (polygons: IPolygon[]): boolean => {\n if (!polygons || polygons?.length === 0) {\n return false;\n }\n\n const polyLengths = polygons.map((polygon) => polygon.linearRings[0].length);\n const allSameLength: boolean = polyLengths.every(\n (length) => (length = polyLengths[0])\n );\n\n if (!allSameLength) {\n return false;\n }\n\n const comparisonPolygon: IPolygon = polygons[0];\n const polyLength: number = polyLengths[0];\n\n for (let i = 0; i < polyLength; i++) {\n const comparisonPoint = comparisonPolygon.linearRings[0][i];\n\n const identicalX = polygons.every((polygon) => {\n const pointInThisPoly = polygon.linearRings[0][i];\n return pointInThisPoly.x === comparisonPoint.x;\n });\n const identicalY = polygons.every((polygon) => {\n const pointInThisPoly = polygon.linearRings[0][i];\n return pointInThisPoly.y === comparisonPoint.y;\n });\n\n if (!(identicalX && identicalY)) {\n return false;\n }\n }\n\n return true;\n};\n","import styled from \"styled-components\";\n\nexport const Template = styled(\"div\")`\n width: 1500px;\n height: 835px;\n background-color: white;\n display: grid;\n grid-template-rows: 90px 645px 100px;\n margin: 0;\n`;\n\nexport const Header = styled(\"div\")`\n background-color: #1ce180;\n color: white;\n font-size: 40px;\n font-family: Manrope-Bold;\n line-height: 36px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: 0px 171px 0px 153px;\n`;\nexport const BuxtonLogoWrapper = styled(\"div\")`\n display: flex;\n align-items: center;\n`;\nexport const BuxtonLogo = styled(\"div\")`\n color: #2d3b49;\n padding-right: 20px;\n`;\nexport const BuxtonLogoAppName = styled(\"div\")`\n padding-left: 20px;\n font-size: 36px;\n border-left: 1px solid rgba(255, 255, 255, 0.3);\n`;\n\nexport const SectionTitleCaption = styled(\"div\")`\n font-size: 18px;\n`;\n\nexport const Content = styled.div`\n padding: 21px 171px 23px 153px;\n`;\n\nexport const ContentChildren = styled(\"div\")``;\n\nexport const ContentLeft = styled(\"div\")``;\n\nexport const SectionTitleWrapper = styled(\"div\")``;\nexport const SectionTitle = styled(\"div\")``;\n\nexport const Footer = styled(\"div\")`\n background-color: #f7f9fb;\n align-items: center;\n margin-top: 32px;\n height: 69px;\n padding-left: 171px;\n padding-right: 171px;\n`;\n\nexport const FooterFlexContent = styled(\"div\")`\n display: flex;\n`;\n\nexport const BrandLogo = styled(\"div\")`\n flex-grow: 0;\n flex-shrink: 0;\n text-align: center;\n width: 270px;\n height: 69px;\n margin-right: 15px;\n margin-left: 4px;\n\n & img {\n max-width: 100%;\n max-height: 100%;\n height: auto;\n }\n`;\n\nexport const Disclaimer = styled(\"div\")`\n height: 62px;\n flex-basis: 530px;\n flex-grow: 1;\n flex-shrink: 0;\n max-width: 610px;\n margin: 1px 0 1px 2px;\n font-size: 11px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #000000;\n`;\n\nexport const ContactWrapper = styled.div`\n display: flex;\n flex-direction: row;\n margin: 0 195px 0 0;\n width: 338px;\n justify-content: flex-end;\n`;\n\nexport const ContactInfo = styled.div`\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n flex-shrink: 1;\n height: 50px;\n justify-content: space-evenly;\n align-items: flex-end;\n\n & .contact-info-name {\n font-weight: 900;\n white-space: nowrap;\n }\n\n & .contact-info-phone {\n font-size: 12px;\n white-space: nowrap;\n }\n\n & .contact-info-email {\n font-size: 12px;\n white-space: nowrap;\n }\n`;\n\nexport const ContactImage = styled.div`\n width: 55px;\n height: 55px;\n margin: 0 0 0 6px;\n border: 1px solid black;\n flex-grow: 0;\n flex-shrink: 0;\n\n & img {\n max-width: 100%;\n max-height: 100%;\n }\n`;\n\nexport const Wrapper = styled(\"div\")`\n display: flex;\n height: 100%;\n`;\n\nexport const MainContent = styled(\"div\")`\n display: flex;\n flex-direction: column;\n flex: 1;\n margin-left: 43px;\n`;\n\nexport const MainContentTitle = styled(\"div\")`\n font-size: 20px;\n font-weight: bold;\n color: #000000;\n margin-bottom: 5px;\n`;\n\nexport const MainContentText = styled(\"div\")`\n font-size: 15px;\n color: #000000;\n margin-bottom: 10px;\n`;\n\nexport const MainContentChild = styled(\"div\")`\n flex: 1;\n`;\n","/**\n * This module provides functionality to make the `console` object\n * unavailable to all running Javascript. This is useful when\n * we want to suppress third-party log messages.\n *\n * It also provides a bypass for our own code to log to the console\n * even while others can't.\n *\n * Usage:\n * ```\n * replaceConsole();\n * // third-party operation with lots of console logs runs here\n * debug.log(\"Logging from our own code...\");\n * // third-party operation with lots of console logs runs here\n * restoreConsole();\n * ```\n *\n * Note: if using with promises/async functions, timing can be\n * tricky. For example, make sure you're putting\n * `restoreConsole()` calls in both `.then()` and `.catch()` or\n * `catch() {}` blocks -- otherwise, if something unexpected\n * happens, the console may be disabled for the rest of\n * the session.\n */\n\n// Save the original console, so we can both call into it,\n// and restore it later.\nconst _original = (window as any).console;\n\n// The \"replacement\" console that will be swapped in & out.\nconst _stub = {};\n\n// The \"bypass\" console that will be available to our code only.\nconst _debug = {};\n\n// Build the replacement and bypass consoles.\nfor (const method in (window as any).console) {\n // We don't want the replacement console methods to do anything.\n // In the future, we could aggregate these messages and provide\n // a method to display them later if desired.\n _stub[method] = () => {\n // no-op\n };\n\n // The bypass console will just pass through all calls\n // to the original.\n _debug[method] = (...args) => {\n _original[method].apply(_original, args);\n };\n}\n\n/**\n * A replacement console that will always be available to our code only.\n */\nexport const debug = _debug as Console;\n\n/**\n * Replace all `console` methods with an empty/no-op function.\n * This affects any Javascript running anywhere on the page, including\n * our legacy code.\n */\nexport const replaceConsole = () => {\n (window as any).console = _stub;\n _original.log(\"replaced console\");\n};\n\n/**\n * Restore the `console` methods to their original versions.\n * This affects any Javascript running anywhere on the page, including\n * our legacy code.\n */\nexport const restoreConsole = () => {\n (window as any).console = _original;\n _original.log(\"restored console\");\n};\n","import React, { FunctionComponent } from \"react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport styled, { css } from \"styled-components\";\nimport { device, sizeConstants } from \"../../../globalStyles\";\nimport { topNavHeightPx } from \"../../../View/Products/Constants/StyleConstants\";\n\ninterface IColSegInfo {\n dotColor: string;\n title: string | JSX.Element;\n text: string;\n}\n\ninterface IColSegInfoSC {\n dotColor: string;\n}\n\nexport const ReportOuterWrapper = styled(\"section\")`\n height: 100%;\n overflow: auto;\n background-color: #f7f9fb;\n font-size: 13px;\n color: black;\n position: relative;\n padding-top: ${topNavHeightPx}px;\n`;\n\nexport const ReportInnerWrapper = styled(\"div\")`\n width: 100%;\n margin: 0 auto;\n`;\n\nexport const ReportScrollableSection = styled.div`\n margin: 0 auto;\n padding: ${sizeConstants.mobileLRContainerPadding}px;\n max-width: ${sizeConstants.containerMaxWidth}px;\n\n ${device.desktop} {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n ${device.containerMaxWidth} {\n padding: ${sizeConstants.mobileLRContainerPadding}px 0;\n }\n`;\n\nexport const ReportDataWrapper = styled.div`\n width: 100%;\n\n &:last-child:nth-child(2n-1) {\n grid-column: span 2;\n }\n\n ${device.desktop} {\n &:last-child:nth-child(2n-1) {\n grid-column: span 1;\n }\n }\n`;\n\nexport const ReportDataWrapperHead = styled(\"div\")`\n width: 100%;\n padding: 12px 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const ReportHeaderInnerContainer = styled(\"div\")`\n width: 100%;\n display: flex;\n align-items: center;\n margin-top: 30px;\n`;\n\nexport const ReportDataWrapperBody = styled(ScrollAnimation)`\n border-radius: 12px;\n margin-bottom: 64px;\n padding: 36px 36px 36px 24px;\n position: relative;\n background-color: white;\n`;\n\nexport const ReportMapDataWrapperBody = styled(ReportDataWrapperBody)`\n padding: 36px;\n`;\n\nconst ReportCardStyles = css`\n width: 100%;\n border-radius: 12px;\n background-color: #fff;\n margin: 15px 0 15px;\n padding: 25px;\n`;\n\nexport const ReportCard = styled.div`\n ${ReportCardStyles}\n`;\n\nexport const AnimatedReportCard = styled(ScrollAnimation)`\n ${ReportCardStyles}\n`;\n\nexport const ColSegInfoWrapper = styled.div`\n display: flex;\n justify-content: space-around;\n width: 100%;\n border-radius: 4px;\n border: solid 1px #e4e4e4;\n padding: 20px 0;\n margin-top: 40px;\n`;\n\nconst ColSegInfoSC = styled.div`\n width: 25%;\n text-align: center;\n margin: 40px 0;\n > div {\n margin-bottom: 3px;\n }\n .color-dot {\n background-color: ${(props: IColSegInfoSC) => props.dotColor};\n width: 2vw;\n height: 2vw;\n min-height: 21px;\n max-height: 26px;\n min-width: 21px;\n max-width: 26px;\n border-radius: 50%;\n margin: 0 auto;\n ${device.desktop} {\n margin: 0 7px 0 0;\n }\n }\n .title {\n font-size: 13px;\n line-height: 18px;\n font-weight: 800;\n ${device.desktop} {\n font-size: 17px;\n }\n > span {\n display: block;\n ${device.desktop} {\n display: inline;\n }\n }\n }\n p {\n font-size: 11px;\n line-height: normal;\n margin-bottom: 0;\n ${device.desktop} {\n font-size: 13px;\n }\n }\n ${device.desktop} {\n > div {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n`;\n\nexport const ColSegInfo: FunctionComponent = (\n props: IColSegInfo\n) => {\n return (\n \n
\n
\n
{props.title}
\n
\n

{props.text}

\n
\n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { IStickyNavItem } from \"../../../Models/IStickyNavItem\";\nimport {\n StickyNav,\n StickyNavContent,\n StickyNavItem,\n} from \"../ReportStyles/ReportStickyNav\";\n\ninterface IReportStickyNavProps {\n id: string;\n containerId: string;\n stuckClass: string;\n stickyNavItems: IStickyNavItem[];\n}\n\nconst ReportStickyNav: FunctionComponent = ({\n id,\n containerId,\n stuckClass,\n stickyNavItems,\n}: IReportStickyNavProps) => {\n return (\n <>\n \n \n {stickyNavItems.map((item: IStickyNavItem, i) => {\n return (\n \n {item.title}\n \n );\n })}\n \n \n \n );\n};\n\nexport default ReportStickyNav;\n","import { AxiosError } from \"axios\";\nimport { ILoginUserData, ICurrentHover, ILockedModal } from \"../Models/Models\";\nimport {\n GetLoginUserDataAction,\n GetLoginUserDataFailureAction,\n GetLoginUserDataSuccessAction,\n GET_LOGIN_USER_DATA,\n GET_LOGIN_USER_DATA_FAILURE,\n GET_LOGIN_USER_DATA_SUCCESS,\n SetFetchingLoginUserDataAction,\n SET_FETCHING_LOGIN_USER_DATA,\n SetCurrentHoverAction,\n SetLockedModalAction,\n SET_CURRENT_HOVER,\n SET_LOCKED_MODAL,\n} from \"../Types/LoginActionTypes\";\n\n/** misc */\nexport const setFetchingLoginUserData = (loading: boolean): SetFetchingLoginUserDataAction => ({\n type: SET_FETCHING_LOGIN_USER_DATA,\n data: loading,\n});\n\nexport const getLoginUserData = (): GetLoginUserDataAction => ({\n type: GET_LOGIN_USER_DATA,\n data: null,\n});\n\n/** success */\nexport const getLoginUserDataSuccess = (userData: ILoginUserData): GetLoginUserDataSuccessAction => ({\n type: GET_LOGIN_USER_DATA_SUCCESS,\n data: userData,\n});\n\n/** failure */\nexport const getLoginUserDataFailure = (error: AxiosError): GetLoginUserDataFailureAction => ({\n type: GET_LOGIN_USER_DATA_FAILURE,\n data: error.message,\n});\n\n/* hover */\nexport const setCurrentHover = (currentHover: ICurrentHover): SetCurrentHoverAction => ({\n type: SET_CURRENT_HOVER,\n data: currentHover,\n});\n\nexport const setLockedModal = (lockedModal: ILockedModal): SetLockedModalAction => ({\n type: SET_LOCKED_MODAL,\n data: lockedModal,\n});\n","/*\n Config files for the links on the product selection page\n*/\n\nimport { ScoutFeature } from \"../../../../../Enums/ScoutFeature\";\nimport { App } from \"../../../Enums/App\";\nimport { LinkType } from \"../../../Enums/LinkType\";\nimport { appFeatureLookup } from \"../../../Logic/AppLogic\";\nimport { ILinkObject } from \"../../../Models/ILinkObject\";\nimport { createEnvUrlString, createEnvUrlStringForPersona } from \"../../../../../Logic/EnvLogic\";\n\nexport const linkListConfig = (featureAccess: string[]): ILinkObject[] => ([\n {\n type: LinkType.SCOUT,\n requiredFeatures: appFeatureLookup.get(App.Scout),\n title: \"SCOUT\",\n link: \"Home/Scout\",\n externalLink: `${window.location.origin}/Home/Scout`,\n icon: \"/Images/products/Scout.svg\",\n quickLinksIcon: \"/Images/products/ScoutIcon.svg\",\n hoveredIcon: \"/Images/products/Scout_Hover.svg\",\n hoverData: {\n image: \"/Images/products/Scout.svg\",\n header: \"\",\n description: \"Visualize and analyze market dynamics and performance drivers.\",\n },\n noAccessData: {\n icon: \"/Images/products/Scout_Lock.svg\",\n hoveredIcon: \"/Images/products/Scout_Hover_Lock.svg\",\n walkMe: true,\n description: \"No access to SCOUT.\",\n link: \"https://www.buxtonco.com/\",\n linkText: \"Create Account\"\n },\n app: App.Scout,\n shortTitle: \"SCOUT\",\n exists: true,\n },\n {\n type: LinkType.Internal,\n requiredFeatures: appFeatureLookup.get(App.Match),\n title: \"match\",\n link: \"Match\",\n externalLink: `${window.location.origin}/Products#/Match`,\n icon: \"/Images/products/Match.svg\",\n quickLinksIcon: \"/Images/products/MatchIcon.svg\",\n hoveredIcon: \"/Images/products/Match_Hover.svg\",\n hoverData: {\n image: \"/Images/products/Match.svg\",\n header: \"\",\n description: \"Identify and attract best fit brands to any location.\",\n },\n noAccessData: {\n icon: \"/Images/products/Match_Lock.svg\",\n hoveredIcon: \"/Images/products/Match_Hover_Lock.svg\",\n walkMe: true,\n description: \"No access to Match.\",\n link: \"https://www.buxtonco.com/\",\n linkText: \"Create Account\"\n },\n app: App.Match,\n shortTitle: \"Match\",\n exists: true,\n },\n {\n type: LinkType.External,\n requiredFeatures: appFeatureLookup.get(App.Mobilytics),\n title: \"mobilytics\",\n link: \"Mobilytics\",\n externalLink: `${window.location.origin}/Products#/Mobilytics`,\n icon: \"/Images/products/Mobilytics.svg\",\n quickLinksIcon: \"/Images/products/MobilyticsIcon.svg\",\n hoveredIcon: \"/Images/products/Mobilytics_Hover.svg\",\n hoverData: {\n image: \"/Images/products/Mobilytics.svg\",\n header: \"\",\n description: \"Analyze mobile foot traffic data with extreme precision.\",\n },\n noAccessData: {\n icon: \"/Images/products/Mobilytics_Lock.svg\",\n hoveredIcon: \"/Images/products/Mobilytics_Hover_Lock.svg\",\n walkMe: true,\n description: \"No access to Mobilytics\",\n link: \"https://www.buxtonco.com/\",\n linkText: \"Create Account\"\n },\n app: App.Mobilytics,\n shortTitle: \"Mobilytics\",\n exists: true,\n },\n {\n type: LinkType.External,\n requiredFeatures: appFeatureLookup.get(App.Factor),\n title: \"factor\",\n link: `https://factor${createEnvUrlString()}.buxtonco.com`,\n externalLink: `https://factor${createEnvUrlString()}.buxtonco.com`,\n icon: \"/Images/products/Factor.svg\",\n quickLinksIcon: \"/Images/products/Factor.svg\",\n hoveredIcon: \"/Images/products/Factor_Hover.svg\",\n hoverData: {\n image: \"/Images/products/Factor.svg\",\n header: \"\",\n description: \"Analyze site selection factors and discover market expansion opportunities.\",\n },\n noAccessData: {\n icon: \"/Images/products/Factor_Lock.svg\",\n hoveredIcon: \"/Images/products/Factor_Hover_Lock.svg\",\n walkMe: true,\n description: \"No access to Factor.\",\n link: \"https://www.buxtonco.com/\",\n linkText: \"Create Account\"\n },\n app: App.Factor,\n shortTitle: \"Factor\",\n exists: true,\n },\n {\n type: LinkType.External,\n requiredFeatures: appFeatureLookup.get(App.Iq),\n title: \"IQ\",\n link: `https://iq${createEnvUrlString()}.buxtonco.com`,\n externalLink: `https://iq${createEnvUrlString()}.buxtonco.com`,\n icon: \"/Images/products/IQ.svg\",\n quickLinksIcon: \"/Images/products/IQ.svg\",\n hoveredIcon: \"/Images/products/IQ.svg\",\n hoverData: {\n image: \"/Images/products/IQ.svg\",\n header: \"\",\n description: \"Query your data and Buxton’s data for answers on demand.\",\n },\n noAccessData: {\n icon: \"/Images/products/IQ.svg\",\n hoveredIcon: \"/Images/products/IQ.svg\",\n walkMe: true,\n description: \"No access to IQ.\",\n link: \"https://www.buxtonco.com/\",\n linkText: \"Create Account\"\n },\n app: App.Iq,\n shortTitle: \"IQ\",\n exists: true,\n },\n {\n type: LinkType.MULTI,\n requiredFeatures: appFeatureLookup.get(App.MyReports),\n title: \"my reports\",\n link: \"MyReports\",\n externalLink: featureAccess.indexOf(ScoutFeature.Scout4) > -1\n ? `${window.location.origin}/Home/Scout#/reports`\n : `${window.location.origin}/Products#/MyReports`,\n icon: \"/Images/products/MyReport.svg\",\n quickLinksIcon: \"/Images/products/MyReport.svg\",\n hoveredIcon: \"/Images/products/MyReport_Hover.svg\",\n hoverData: {\n image: \"/Images/products/MyReport.svg\",\n header: \"\",\n description: \"Access all of your reports with ease.\",\n },\n noAccessData: {\n icon: \"/Images/products/MyReport_Lock.svg\",\n hoveredIcon: \"/Images/products/MyReport_Hover_Lock.svg\",\n walkMe: true,\n description: \"No access to My Reports.\",\n link: \"https://www.buxtonco.com/\",\n linkText: \"Create Account\"\n },\n app: App.MyReports,\n shortTitle: \"My Reports\",\n exists: true,\n },\n {\n type: LinkType.External,\n requiredFeatures: appFeatureLookup.get(App.Persona),\n title: \"personas+\",\n link: `https://go${createEnvUrlStringForPersona()}.buxtonco.com`,\n externalLink: `https://go${createEnvUrlStringForPersona()}.buxtonco.com`,\n icon: \"/Images/products/Persona.svg\",\n quickLinksIcon: \"/Images/products/Persona.svg\",\n hoveredIcon: \"/Images/products/Persona_Hover.svg\",\n hoverData: {\n image: \"/Images/products/Persona.svg\",\n header: \"\",\n description: \"Leverage AI-powered personas to transform your marketing strategy with deep audience insights and tracking. Access detailed behavioral profiles and trends, preference patterns, and engagement opportunities of customers and visitors.\",\n },\n noAccessData: {\n icon: \"/Images/products/Persona_Lock.svg\",\n hoveredIcon: \"/Images/products/Persona_Hover_Lock.svg\",\n walkMe: true,\n description: \"No access to Persona+\",\n link: \"https://www.buxtonco.com/\",\n linkText: \"Create Account\",\n },\n app: App.Persona,\n shortTitle: \"Personas+\",\n exists: false,\n },\n]);\n","import { IMobilyticsScenarioFormState } from \"./IMobilyticsScenarioFormState\";\nimport { Moment } from \"moment\";\n\nexport interface IMobilyticsScenarioFormProps\n extends IMobilyticsScenarioFormState {\n index: number;\n loading: boolean;\n fillColorHex: string;\n fillOpacity: number;\n canDuplicate: boolean;\n multipleScenarios?: boolean;\n logo: string;\n updateDates: (\n scenarioIndex: number,\n dates: [Moment, Moment],\n dateStrings: [string, string]\n ) => void;\n updateStartTime: (\n scenarioIndex: number,\n time: Moment,\n timeString: string\n ) => void;\n updateEndTime: (\n scenarioIndex: number,\n time: Moment,\n timeString: string\n ) => void;\n toggleAllDayChecked: (scenarioIndex: number) => void;\n toggleMileLimitChecked: (scenarioIndex: number) => void;\n onLessGreaterChange: (scenarioIndex: number, value: string) => void;\n onMilesChange: (\n scenarioIndex: number,\n value: string\n ) => void;\n onDuplicateClick: (index: number) => void;\n onRemoveClick: (index: number) => void;\n onEditTitleSubmit: (index: number, title: string) => void;\n isCustomPolygon: boolean;\n}\n","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!./Body.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { getUserShareSettings } from \"../../../Actions/Actions\";\nimport {\n getResults,\n loadGPSInsightsSuccess,\n setLoadingGpsMobileInsightsReport,\n} from \"../../../Actions/GPSInsightsActions\";\nimport { setIsMapReady } from \"../../../Actions/ReportMapActions\";\nimport { getCategories } from \"../../../Actions/RetailMatchActions\";\nimport { featureFlags } from \"../../../Common/CurrentFeatureFlags\";\nimport { DigitalShareAppType } from \"../../../Enums/DigitalShareAppType\";\nimport { RenderType } from \"../../../Enums/RenderType\";\nimport { IDigitalShareItem } from \"../../../Models/IDigitalShareItem\";\nimport { IUserShareSettings } from \"../../../Models/IUserShareSettings\";\nimport { IGPSGetJobResultParsed, IUser } from \"../../../Models/Models\";\nimport {\n getGpsReportDataSelector,\n gpsConditionalOutputsSelector,\n gpsLoadingSaveToScoutSelector,\n loadingMobilyticsReportSelector,\n} from \"../../../Reducers/Selectors/GPSInsightsSelectors\";\nimport { userShareSettingsSelector } from \"../../../Reducers/Selectors/UserSelectors\";\nimport {\n filterGpsOutputsAgainstAvailableReports,\n gpsDigitalShareOutputs,\n GPSInsightsTemplateDisclaimer,\n} from \"../../../Util/ScoutDigitalShareUtil\";\nimport { topNavHeightPx } from \"../../../View/Products/Constants/StyleConstants\";\nimport {\n ComponentLoading,\n getMosaicSegments,\n PlaceholderCard,\n ReportOuterWrapper,\n} from \"../../Common/\";\nimport { RenderContainer } from \"../../Common/DigitalShare/DigitalShareCommonStyles\";\nimport {\n DigitalShareGenerator,\n PrintGenerator,\n} from \"../../Common/DigitalShare/DigitalShareGenerator\";\nimport \"../../Layout/Body.css\";\nimport GPSInsightsDigitalShareTemplate from \"./DigitalShare/Templates/GPSInsightsDigitalShareTemplate\";\nimport GPSHeader from \"./GPSHeader/GPSHeader\";\nimport { GPSInsightsForm } from \"./GPSInsightsForm\";\nimport { GPSInsightsReport } from \"./GPSInsightsReport\";\nimport GPSStickyNav from \"./GPSStickyNav\";\n\ninterface IGPSInsightsContainerProps {\n isSharing?: boolean;\n pathname: string;\n jobId: string;\n user: IUser;\n isScout: boolean;\n}\n\nconst GPSInsightsReportContainer: FunctionComponent\n = (props: IGPSInsightsContainerProps) => {\n /** misc */\n\n // We're using props here since they are memoized.\n // useLocation() and useParams() pull from the global location data and will\n // force the component to re-render every time, even if they haven't changed.\n const { isSharing, pathname, jobId } = props;\n const dispatch = useDispatch();\n\n const gpsInsightsReportContainerRoutePathMatch = new RegExp(/job_./);\n const loadingSaveToScout: boolean = useSelector(gpsLoadingSaveToScoutSelector);\n //const user: IUser = useSelector(gpsUserSelector);\n const user = props.user;\n const userShareSettings: IUserShareSettings = useSelector(userShareSettingsSelector);\n const loadingMobilyticsReport = useSelector(loadingMobilyticsReportSelector);\n\n // Booleans used for determining what outputs to hide in DS share dialogue\n const { hasFvpData, hasVisitorLoyaltyData, hasTradeAreaAnalysis } = useSelector(gpsConditionalOutputsSelector);\n\n const {\n currentJobData,\n polygons,\n isGpsInsightModalVisible,\n selectedInsight,\n benchmarkCommonData,\n currentBenchmarkPolygon,\n benchmarkItems,\n } = useSelector(getGpsReportDataSelector);\n\n useEffect(() => {\n dispatch(setIsMapReady(false));\n if (!userShareSettings) {\n dispatch(getUserShareSettings());\n }\n dispatch(getMosaicSegments());\n dispatch(getCategories());\n // Reset the GPS Insights data on unmount -- otherwise, data will still be left\n // and it will try to render the full component next time a report is visited, and\n // cause errors due to other state being uninitialized.\n return () => {\n const emptyData: IGPSGetJobResultParsed = {\n polygon: [],\n data: [],\n job: [],\n benchmarkCommonData: null,\n };\n dispatch(loadGPSInsightsSuccess(emptyData));\n };\n }, []);\n\n useEffect(() => {\n if (!props.isSharing) {\n dispatch(setLoadingGpsMobileInsightsReport(true));\n dispatch(getResults(jobId));\n }\n }, [jobId]);\n\n const [isPrinting, setIsPrinting] = useState(false);\n const [renderType, setRenderType] = useState(RenderType.DEFAULT);\n const [isChoosingDigitalShare, setIsChoosingDigitalShare]\n = useState(false);\n const [isDebuggingTemplate, setIsDebuggingTemplate] = useState(false);\n\n const onChangeGenerating = (isGenerating: boolean) => {\n setRenderType(\n isGenerating ? RenderType.DIGITAL_SHARE : RenderType.DEFAULT\n );\n };\n\n const handleIsSharing = (): boolean => {\n const pathnameMatch = pathname.match(gpsInsightsReportContainerRoutePathMatch);\n const share = isSharing\n ? true\n : pathnameMatch !== null && user !== null;\n\n return share;\n };\n\n const onPrintClick = () => {\n setIsPrinting(true);\n };\n\n let digitalShareOutputs: IDigitalShareItem[] = gpsDigitalShareOutputs(\n polygons?.length < 2\n );\n\n // Filter outputs against available report data\n digitalShareOutputs = filterGpsOutputsAgainstAvailableReports(\n digitalShareOutputs,\n hasVisitorLoyaltyData,\n hasFvpData,\n hasTradeAreaAnalysis\n );\n\n (window as any).showTemplate = () => {\n setIsDebuggingTemplate(true);\n };\n (window as any).hideTemplate = () => {\n setIsDebuggingTemplate(false);\n };\n\n return (\n <>\n {\n handleIsSharing()\n // Handle both null and empty array\n ? currentJobData\n && currentJobData.length > 0\n && polygons\n && selectedInsight.length > 0\n && !loadingMobilyticsReport\n ? <>\n {isGpsInsightModalVisible && }\n {isDebuggingTemplate && (\n \n \n <>\n \n \n )}\n \n setIsChoosingDigitalShare(true)}\n />\n \n 1 ? currentJobData[1] : null\n }\n benchmarkCommonData={benchmarkCommonData}\n selectedGpsInsightForReportView={selectedInsight}\n benchmarkItems={benchmarkItems}\n currentBenchmarkPolygon={currentBenchmarkPolygon}\n renderType={renderType}\n />\n \n\n {featureFlags.DigitalShare && isChoosingDigitalShare && (\n setIsChoosingDigitalShare(false)}\n onChangeGenerating={onChangeGenerating}\n app={DigitalShareAppType.Mobilytics}\n isChoosingDigitalShare={isChoosingDigitalShare}\n outputs={digitalShareOutputs}\n />\n )}\n\n {featureFlags.DigitalShare && isPrinting && (\n setIsPrinting(false)}\n onChangeGenerating={onChangeGenerating}\n app={DigitalShareAppType.Mobilytics}\n outputs={digitalShareOutputs}\n jobId={selectedInsight[0].jobId}\n />\n )}\n \n : \n\n : \n }\n \n );\n };\n\nexport default React.memo(GPSInsightsReportContainer);\n","export * from \"./Wrapper\";\nexport * from \"./Cards\";\nexport * from \"./Tip\";\nexport * from \"./Buttons\";\nexport * from \"./GeographyResult\";\nexport * from \"./Table\";\n","export enum MapTypesEnum {\n GPSmap,\n RetailMatchMap,\n}\n","import { IBrandSummaryData } from \"./IBrandSummaryData\";\n\nexport interface IBrandOverviewTableRecord {\n key: string;\n brandSummary: IBrandSummaryData;\n rank: number;\n idealCustomerCount: React.ReactNode;\n idealCustomerRatio: React.ReactNode;\n idealCustomerSimilarity: React.ReactNode;\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Popover, Tooltip } from \"antd\";\nimport { FiAlertCircle } from \"@react-icons/all-files/fi/FiAlertCircle\";\nimport { FiEdit3 } from \"@react-icons/all-files/fi/FiEdit3\";\nimport { IBrand } from \"../../../../Models/IBrand\";\nimport { Header, HeaderFocus } from \"../Styled/RetailMatchIntroStyles\";\n\ninterface RetailMatchIntroTextHeaderProps {\n address: string;\n isSharing: boolean;\n multiBrand: boolean;\n sampleCount: number;\n brandName: string;\n brand: IBrand;\n backDateVerbiage: string;\n showEditAddressModal: () => void;\n marginBottom?: string;\n}\n\nconst IntroSummaryDiv = styled.div`\n font-size: 13px;\n text-align: center;\n`;\n\nconst RetailMatchIntroTextHeader = ({\n address,\n isSharing,\n showEditAddressModal,\n multiBrand,\n sampleCount,\n brandName,\n brand,\n backDateVerbiage,\n marginBottom,\n}: RetailMatchIntroTextHeaderProps) => {\n const style = marginBottom ? { marginBottom } : null;\n return (\n // Create the HTML, via Typescript, for the retail match report text header. This is the\n // section containing the physical address, the edit address button, and similar brand text.\n
\n \n {/*\n * BUG 12370:\n * https://dev.azure.com/buxtonco/BUXTON_ANALYTICS_PLATFORM/_workitems/edit/12370\n * There is a very odd bug regarding the difference between the site itself and the\n * generated PDF if someone wants to print the report. The PDF will wrap the\n * zipcode overlapping with other text and it gets hard to read. Not wrapping the\n * text makes the site unable to display without the values going off screen.\n * The compromise between the two parts, after much testing, was to hardcode the\n * width to the current size of the parent container, which is 670, and force the\n * span to behave as a block element. It appears that the PDF generator doesn't\n * respect auto scaling from the parent containers, for whatever reason, hence the\n * hardcoded value.\n * Credit to Hunter Gemmer for help with this fix.\n */}\n \n {address}\n \n {!isSharing && (\n \n \n \n )}\n \n
COMPARED TO
\n {!multiBrand && brand && (\n \n {sampleCount.toLocaleString()} Existing Similar {brandName} Locations\n \n )}\n \n {multiBrand && \"Existing similar locations of the following brands \"}\n based on analysis of consumer mobile device signals {backDateVerbiage}.\n \n \n {multiBrand && !isSharing && (\n <>\n {\n \"Click a brand in the table below to view a detailed analysis for that brand.\"\n }\n \n \n \n \n )}\n \n
\n );\n};\n\nexport default React.memo(RetailMatchIntroTextHeader);\n","import React, { FunctionComponent, useEffect, useRef, useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { Table } from \"antd\";\n\nimport {\n IStoreScoreRecord,\n IRetailMatchTradeAreaBlockGroup,\n IRetailMatchJobResult,\n IRetailMatchOverview,\n IRetailMatchChartData,\n} from \"../../../../Models/IRetailMatch\";\nimport { getRetailMatchIndexColor } from \"../../../../Util/ColorUtil\";\nimport { RetailMatchChartIndexPill } from \"../Styled/RetailMatchChartIndexPill\";\nimport {\n ReportSectionHeader,\n ReportH4,\n ReportSectionNumber,\n useWindowResize,\n AnimatedReportCard,\n ReportH1,\n Button,\n ReportScrollableSection,\n ReportMap,\n GoogleMapsMarker,\n BuxTooltip,\n} from \"../../../Common/\";\nimport {\n getTradeAreaPolygonsFromBlockGroups,\n setMapCenter,\n setMapMarkers,\n createNewGoogleMap,\n cleanMap\n} from \"../../../../Actions/ReportMapActions\";\nimport { deviceWidth, device } from \"../../../../globalStyles\";\nimport { MapLayers } from \"../../../../Util/MapLayers/MapLayers\";\nimport { MapTypesEnum } from \"../../../../Enums/MapTypesEnum\";\nimport { RetailMatchMapLegend } from \"./Map/RetailMatchMapLegend\";\nimport { BrandLogoSmall } from \"./BrandLogo/BrandLogoSmall\";\nimport { createBrandMapMarker } from \"./Map/GoogleMapBrandMarker\";\nimport { titleCase } from \"../Logic/SharedMethods\";\nimport { IPolygon } from \"../../../../Models/IPolygon\";\nimport { ReportMapWrapper } from \"../../../Common/Map/Styles/MapStyles\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { LocationsAnalyzedSharing } from \"./LocationsAnalyzedSharing\";\nimport { IBrand } from \"../../../../Models/IBrand\";\nimport { brandOverviewRecord } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport { getMapInfoWindowContentString } from \"./Map/MapUtil\";\nimport { brandStores } from \"../Util/RetailMatchUtil\";\nimport { retailMatchLocationsAnalyzedMapDataSelector } from \"../../../../Reducers/Selectors/RetailMatchSelectors\";\n\ninterface RetailMatchLocationsAnalyzedProps {\n jobResult: IRetailMatchJobResult;\n brand: IBrand;\n benchmarkRecord: IStoreScoreRecord;\n renderType: RenderType;\n app: DigitalShareAppType;\n}\n\n//https://loading.io/icon/4j5ilt\nconst loadingIcon\n = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAvCAYAAABzJ5OsAAAD2UlEQVRoQ+2YQWhTWRSG/2OkVhdtgwuVyYuRQYNQxwrSQhdWkChFcfpA3NYiKrixLsTZTcWFMC6msxEFxboWfV0oRYNgXRQaRFsqSApiyHtSXUhMFrZTTI+c1/fGUCy97742TjF31ZRzzv3uf//ce24Iq3jQKmZHDf5H7V5N+ZryGgr8PLYZjMePEdCsIZJSCs3NTRx1nHtKwYD6UWnF46eJ+YZqYe045lNdjnNTJV/ZNoOx2BUQ/aFSNEwME/1l5vMXVWoow0uxQcO4TsBxBqJgniSAGGCViRaLcWsQbQdQYOa7puOcUa0XCN4vOmgYzMzjRLRbdaLF4hh4Q8CvXbYdmCVwgrcDonYRQGNYeAJKDDRUDd4yjKcEdDAg1tmhuwA/n4Fh07b3B62jpbwVj/cS898AngHYF3TSing3n4nOm/l8f9A6evCJRILK5bdinU0HDjyP1NdHgk5cnpkpf3jyZK9YjyORbWYulwtaQwteJrEMY4CA7r3Xrg3/cuRIR9CJ3z14MPz87Fmx3h3Ttk8EzZd4ffh59cdEucPZ7OTa9euVvf9lenryYTIp8UWORFp0VA8F76rveb+usbGYymQ+qCxAwNOtrZtmi8VGBnpM2x7QUT00fKV9ZAEdQ0PZDbFY62Iwnx0nM9zZmfTAte3i19e2TSWgFYv1E9E5+d+WgwfHWq5epbpo9L8LbLZQGB+7cIGnHj9ukRgmumTm8326ii8rvLsDsdh+AgZAtFU+p0ZGMrILona6vd3dDTnPwdxnOs7TsODLYpuFEFY83kfMf25sb39UH42umykU/v04MnKIgP7fbfv8ckCvjPJEtwEkPJUzBIjiowDavAlzzNzzv1LeV9uFloZtzRoGs+tvdxCN8dwc+Y3ccu1C6C+sf1l5DdbrCpW/55BRAnZKIwZgoMu2e8LYKBS8ZRgnCLjtghNNgTm5JAxRlpi3yAJ+2Dlvzd+wLwE0Be4uibLeQj9xJLKn6jesbxc5/qQ9XlLxBQF+XtV7G0/1t3UNDaXOiQkGUfBHCXNxaNcumi2VGqraVfo9zW+XLz/b1t2t3c/b9++PvujtbatuP++9pIJ2kwut9WV6OvswmUxW9SUlD3DXMq9eyZEXagw1N5fEOlV7wwr85lRqvO3WrdC/HoyePDn+Pp3evaLwViLRROWyXP9NIGpyO8hUKpTqkjyVTs/XYP4EQI7OHjOXk7+XHMqXVGXbu2TVEAHM/I/pOL0qJdThv/1ioFJXOybIyaMMLzRyRLq2WanBnAvyLAwEv1LMunVr8LrKhc2rKR9WQd38mvK6yoXNW9XKfwUU75E/M/OAiwAAAABJRU5ErkJggg==\";\nconst defaultGoogleMarker\n = \"https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi2.png\";\n\nexport const StyledTable = styled(Table)`\n margin-bottom: 40px;\n .ant-table {\n font-size: 13px;\n }\n .ant-table-thead,\n .ant-table-tbody {\n > tr {\n > th,\n > td {\n padding: 13px 3px;\n color: black;\n background-color: #fafafa;\n vertical-align: middle;\n &:first-child {\n padding-left: 16px;\n }\n &:last-child {\n padding-right: 16px;\n }\n }\n > th {\n font-weight: 400;\n .ant-table-column-sorter {\n .ant-table-column-sorter-inner {\n margin-left: 0;\n }\n }\n }\n }\n }\n`;\n\nconst DynamicNAText = styled.div`\n &.na {\n color: #00000085;\n }\n`;\n\nconst TableTitleSpan = styled.span`\n margin-left: 14px;\n font-size: 20px;\n`;\n\nconst TableTitleWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n > div {\n color: #6d7278;\n ${device.desktop} {\n display: none;\n }\n }\n`;\n\nconst addFullAddr = (array: IStoreScoreRecord[]): IStoreScoreRecord[] => {\n array.forEach((item: IStoreScoreRecord) => {\n item.fullAddr = titleCase(\n `${item.addr} ${item.city}, ${item.st} ${item.zip}`\n );\n });\n return array;\n};\n\nexport const RetailMatchLocationsAnalyzed: FunctionComponent\n = (props: RetailMatchLocationsAnalyzedProps) => {\n const { jobResult, brand, benchmarkRecord } = props;\n const chartData: IRetailMatchChartData = jobResult.chartData;\n let storeScores: IStoreScoreRecord[] = [...chartData.storeScores];\n\n storeScores = addFullAddr(storeScores);\n storeScores = brandStores(storeScores, brand.brandId);\n\n const brandLogo: string = brand.logoPath;\n const brandName: string = brand.brandName;\n\n const windowSize = useWindowResize();\n const dispatch = useDispatch();\n const ref = useRef();\n\n const {\n googleMap,\n currentMapMarkers,\n buxtonDeck,\n geographies\n } = useSelector(retailMatchLocationsAnalyzedMapDataSelector);\n const [selectedMarker, setSelectedMarker] = useState();\n\n const overviewRecord: IRetailMatchOverview = brandOverviewRecord(\n props.brand.brandId,\n props.jobResult.chartData.overview\n );\n\n /** effects */\n useEffect(() => {\n return () => {\n setSelectedMarker(null);\n };\n }, []);\n\n useEffect(() => {\n if (googleMap !== null && googleMap !== undefined) {\n refreshMapMarkers();\n currentMapMarkers.forEach((m) => {\n if (m.getAnimation() !== null) {\n m.setAnimation(null);\n }\n });\n }\n }, [brand, googleMap]);\n\n useEffect(() => {\n if (storeScores) {\n refreshMapMarkers();\n }\n }, [\n benchmarkRecord.addr,\n benchmarkRecord.city,\n benchmarkRecord.st,\n benchmarkRecord.zip,\n brandLogo\n ]);\n\n const refreshMapMarkers = ():void => {\n dispatch(cleanMap());\n const mapMarkers: google.maps.Marker[] = [];\n /** remove current map markers */\n for (const marker of currentMapMarkers) {\n marker.setMap(null);\n }\n\n //create benchmark marker\n const benchmarkMarker = new google.maps.Marker({\n map: googleMap,\n draggable: false,\n animation: google.maps.Animation.DROP,\n position: { lat: benchmarkRecord.lat, lng: benchmarkRecord.lon },\n });\n\n dispatch(setMapCenter(benchmarkMarker.getPosition()));\n loadTradeAreaBlockGroups(\"-1\");\n\n //create sample site map markers\n for (let i = 0; i < storeScores.length; i++) {\n const store = storeScores[i];\n\n const brandMarker = createBrandMapMarker({\n map: googleMap,\n latlng: { lat: store.lat, lng: store.lon },\n imgSrc: brandLogo,\n animation: google.maps.Animation.DROP,\n markerId: `rm-brand-marker-${i}`,\n });\n\n mapMarkers.push(brandMarker);\n }\n\n //add benchmark marker to markers\n mapMarkers.push(benchmarkMarker);\n dispatch(setMapMarkers(mapMarkers));\n\n //assign click event actions to all markers\n for (let i = 0; i < mapMarkers.length; i++) {\n let infoWindow: google.maps.InfoWindow;\n\n if (i < mapMarkers.length - 1) {\n //If the marker is one of the brand stores\n infoWindow = new google.maps.InfoWindow({\n content: getMapInfoWindowContentString(\n storeScores[i].addr,\n storeScores[i].city,\n storeScores[i].st\n ),\n });\n } else {\n //If it's the benchmark site\n infoWindow = new google.maps.InfoWindow({\n content: getMapInfoWindowContentString(\n benchmarkRecord.addr,\n benchmarkRecord.city,\n benchmarkRecord.st\n ),\n });\n }\n\n mapMarkers[i].addListener(\"mouseover\", () =>\n infoWindow.open(googleMap, mapMarkers[i])\n );\n mapMarkers[i].addListener(\"mouseout\", () => infoWindow.close());\n\n mapMarkers[i].addListener(\"click\", () => {\n const tableRow: IStoreScoreRecord = storeScores[i];\n const isBenchmarkSite = !tableRow;\n const sid: string = isBenchmarkSite\n ? \"-1\"\n : tableRow.sid;\n\n setSelectedMarker(mapMarkers[i]);\n mapMarkers[i].setIcon(loadingIcon);\n loadTradeAreaBlockGroups(sid).then(() =>\n isBenchmarkSite\n ? mapMarkers[i].setIcon(defaultGoogleMarker)\n : mapMarkers[i].setIcon(brandLogo)\n );\n\n mapMarkers.forEach((m) => {\n if (m.getAnimation() !== null) {\n m.setAnimation(null);\n }\n });\n\n if (mapMarkers[i].getAnimation() !== null) {\n mapMarkers[i].setAnimation(null);\n } else {\n mapMarkers[i].setAnimation(google.maps.Animation.BOUNCE);\n }\n });\n }\n };\n\n const vCntIdxHasValue = (tableData: IStoreScoreRecord[]): boolean => {\n return tableData?.some((store: IStoreScoreRecord) => store.vCntIdx !== 0);\n };\n\n const mobileOnlyTableColumnsBeforeData: any[] = [\n {\n title: \"Address\",\n dataIndex: \"fullAddr\",\n width: \"147px\",\n textWrap: \"word-break\",\n },\n ];\n\n const desktopOnlyTableColumnsBeforeData: any[] = [\n {\n title: \"Address\",\n dataIndex: \"addr\",\n width: \"118px\",\n textWrap: \"word-break\",\n },\n {\n title: \"City\",\n dataIndex: \"city\",\n width: \"105px\",\n textWrap: \"word-break\",\n },\n {\n title: \"State\",\n dataIndex: \"st\",\n width: \"40px\",\n },\n {\n title: \"Zip\",\n dataIndex: \"zip\",\n width: \"80px\",\n },\n ];\n\n const desktopOnlyTableColumnsAfterData = [\n {\n title: \"View\",\n dataIndex: \"view\",\n width: \"80px\",\n align: \"center\",\n render: (text: string, store: IStoreScoreRecord, index: number) => (\n handleViewLocation(store)}\n title=\"Map View\"\n >\n ),\n },\n ];\n\n const anySizeTableColumns: any[] = [\n {\n title: \"Ideal Customer Count\",\n dataIndex: \"ccCntIdx\",\n width: \"90px\",\n align: \"center\",\n sorter: (a: IStoreScoreRecord, b: IStoreScoreRecord) =>\n a != null && b != null && b.ccCntIdx < a.ccCntIdx ? 1 : -1,\n render: (ccCntIdx: number) => (\n
\n \n {ccCntIdx}\n \n
\n ),\n },\n {\n title: \"Ideal Customer Ratio\",\n dataIndex: \"ccPerHHCntIdx\",\n width: \"90px\",\n align: \"center\",\n sorter: (a: IStoreScoreRecord, b: IStoreScoreRecord) =>\n a != null && b != null && b.ccPerHHCntIdx < a.ccPerHHCntIdx ? 1 : -1,\n render: (ccPerHHCntIdx: number) => (\n
\n \n {ccPerHHCntIdx}\n \n
\n ),\n },\n {\n title: \"Household Similarity\",\n dataIndex: \"ccCorrIdx\",\n width: \"88px\",\n align: \"center\",\n sorter: (a: IStoreScoreRecord, b: IStoreScoreRecord) =>\n a != null && b != null && b.ccCorrIdx < a.ccCorrIdx ? 1 : -1,\n render: (ccCorrIdx: number) => (\n
\n \n {ccCorrIdx}\n \n
\n ),\n },\n ];\n\n const anySizeSingleBenchmarkTableColumns: any[] = [\n {\n title: (\n \n Mobile Device Volume{\" \"}\n {vCntIdxHasValue([benchmarkRecord]) && (\n \n )}\n \n ),\n dataIndex: \"vCntIdx\",\n width: \"87px\",\n align: \"center\",\n // ERY (10/29/2020): this isn't in design and the other sorting functions are, so I think this is on purpose, but I'm leaving it as is for now.\n // sorter: (a: IStoreScoreRecord, b: IStoreScoreRecord) =>\n // a != null && b != null && b.vCntIdx < a.vCntIdx ? 1 : -1,\n render: (vCntIdx: number) => (\n \n {vCntIdx === 0 ? \"N/A\" : vCntIdx}\n \n ),\n },\n ];\n\n const anySizeBenchmarkSetTableColumns: any[] = [\n {\n title: (\n \n Mobile Device Volume{\" \"}\n {vCntIdxHasValue(storeScores) && (\n \n )}\n \n ),\n dataIndex: \"vCntIdx\",\n width: \"88px\",\n align: \"center\",\n // ERY (10/29/2020): this isn't in design and the other sorting functions are, so I think this is on purpose, but I'm leaving it as is for now.\n sorter: (a: IStoreScoreRecord, b: IStoreScoreRecord) =>\n a != null && b != null && b.vCntIdx < a.vCntIdx ? 1 : -1,\n render: (vCntIdx: number) => (\n \n {vCntIdx === 0 ? \"N/A\" : vCntIdx}\n \n ),\n },\n ];\n\n // To avoid reusing table columns across sets...concat them\n const mobileSingleBenchmarkTableColumns = mobileOnlyTableColumnsBeforeData\n .concat(anySizeTableColumns)\n .concat(anySizeSingleBenchmarkTableColumns);\n const desktopSingleBenchmarkTableColumns = desktopOnlyTableColumnsBeforeData\n .concat(anySizeTableColumns)\n .concat(anySizeSingleBenchmarkTableColumns)\n .concat(desktopOnlyTableColumnsAfterData);\n const mobileBenchmarkSetTableColumns = mobileOnlyTableColumnsBeforeData\n .concat(anySizeTableColumns)\n .concat(anySizeBenchmarkSetTableColumns);\n const desktopBenchmarkSetTableColumns = desktopOnlyTableColumnsBeforeData\n .concat(anySizeTableColumns)\n .concat(anySizeBenchmarkSetTableColumns)\n .concat(desktopOnlyTableColumnsAfterData);\n\n const loadBlockGroupMapLayers = (\n blockgroups: IRetailMatchTradeAreaBlockGroup[],\n polygons: IPolygon[],\n isBenchmark: boolean\n ) => {\n const getVolumePercent = (externalID: string): number => {\n const bgMatch: IRetailMatchTradeAreaBlockGroup = blockgroups.find(\n (bg) => bg.id == externalID\n );\n\n return bgMatch.val * 100;\n };\n\n const getVolumeAlpha = (externalID: string): number =>\n getVolumePercent(externalID) * 255;\n\n const mapLayers = new MapLayers(\n buxtonDeck.deck,\n MapTypesEnum.RetailMatchMap\n );\n const layerId: string = isBenchmark ? \"benchmark\" : \"selectedMarker\";\n const polygonLayer = mapLayers.createRetailMatchPolygonLayer(\n polygons,\n `deck-retail-match-polygon-layer-${layerId}`,\n getVolumeAlpha\n );\n\n if (buxtonDeck.getProp(polygonLayer)) {\n buxtonDeck.updateProp(polygonLayer);\n } else {\n buxtonDeck.addProp(polygonLayer, googleMap);\n }\n };\n\n const loadTradeAreaBlockGroups = async (sid: string) => {\n let blockgroups: IRetailMatchTradeAreaBlockGroup[] = null;\n\n if (sid === benchmarkRecord.sid) {\n blockgroups = props.jobResult.chartData.siteTradeAreaBlockGroups;\n } else {\n const { tradeAreaBlockGroups }\n = props.jobResult.chartData.storeTradeAreaBlockGroups.find(\n (storeBg) => storeBg.id === sid\n );\n blockgroups = tradeAreaBlockGroups;\n }\n\n const polygons = await getTradeAreaPolygonsFromBlockGroups(blockgroups);\n loadBlockGroupMapLayers(\n blockgroups,\n polygons,\n sid === benchmarkRecord.sid\n );\n };\n\n const handleViewLocation = (store: IStoreScoreRecord): void => {\n const marker: google.maps.Marker = currentMapMarkers.find(\n (marker) =>\n marker.getPosition().lat() === store.lat\n && marker.getPosition().lng() === store.lon\n );\n setSelectedMarker(marker);\n\n new google.maps.event.trigger(marker, \"click\");\n googleMap.panTo({ lat: store.lat, lng: store.lon });\n };\n\n const handleResetSelection = (): void => {\n selectedMarker.setAnimation(null);\n setSelectedMarker(null);\n buxtonDeck.clearProps();\n loadTradeAreaBlockGroups(\"-1\");\n dispatch(\n setMapCenter(\n new google.maps.LatLng(benchmarkRecord.lat, benchmarkRecord.lon)\n )\n );\n };\n\n const formatGeoValue = (): string => {\n let formattedGeoValue = props.jobResult?.job?.geoValues[0] || \"\";\n\n if (formattedGeoValue === \"USA\") {\n formattedGeoValue = \"the U.S.\";\n } else if (props.jobResult?.job?.geoType === \"dma_id\") {\n const dma = geographies?.find((geo) => {\n return geo?.id?.toString() === formattedGeoValue;\n });\n\n formattedGeoValue = `the ${dma?.name} DMA`;\n }\n return formattedGeoValue;\n };\n\n const targetSiteTitle = (\n \n \n \n Your Target Site\n \n
Touch Row To View on Map
\n
\n );\n\n const benchmarkSetTitle = (\n \n \n \n \n {overviewRecord?.brandName} Benchmark Set\n \n \n
Touch Row To View on Map
\n
\n );\n\n if (featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, DigitalShareItemType.LocationsAnalyzed)) {\n registerRef(props.app, DigitalShareItemType.LocationsAnalyzed, ref);\n\n registerElement(\n props.app,\n DigitalShareItemType.LocationsAnalyzed,\n \"\",\n \n );\n }\n\n return (\n \n \n 02\n Locations Analyzed\n \n \n Which locations were selected for comparison?\n \n {overviewRecord?.sampleCount || 0} similar {brandName} locations in{\" \"}\n {formatGeoValue()} were selected to compare against{\" \"}\n {props.benchmarkRecord.addr} based on urban density{\" \"}\n and proximity.\n

\n {benchmarkRecord\n && (windowSize.width < deviceWidth.desktop\n ? (\n store.sid}\n dataSource={addFullAddr([benchmarkRecord])}\n rowKey={(job: IStoreScoreRecord) => job.sid}\n pagination={false}\n title={() => targetSiteTitle}\n onRow={(store: IStoreScoreRecord) => {\n return {\n onClick: () => {\n handleViewLocation(store);\n },\n };\n }}\n />\n )\n : (\n store.sid}\n dataSource={addFullAddr([benchmarkRecord])}\n rowKey={(job: IStoreScoreRecord) => job.sid}\n pagination={false}\n title={() => targetSiteTitle}\n />\n ))}\n {storeScores\n && (windowSize.width < deviceWidth.desktop\n ? (\n store.sid}\n dataSource={storeScores}\n rowKey={(job: IStoreScoreRecord) => job.sid}\n title={() => benchmarkSetTitle}\n scroll={{ y: 340 }}\n pagination={false}\n onRow={(store: IStoreScoreRecord) => {\n return {\n onClick: () => {\n handleViewLocation(store);\n },\n };\n }}\n />\n )\n : (\n store.sid}\n dataSource={storeScores}\n rowKey={(job: IStoreScoreRecord) => job.sid}\n title={() => benchmarkSetTitle}\n scroll={{ y: 340 }}\n pagination={false}\n />\n ))}\n Click on location icons to see trade areas.\n \n This map shows the target site and its estimated trade area along\n with benchmark locations and their mobile device-based actual trade\n areas.\n

\n \n handleResetSelection()}\n style={{\n display: \"initial\",\n marginTop: 0,\n position: \"absolute\",\n top: \"18px\",\n left: \"24px\",\n animation: \"zoomInLeft\",\n animationDuration: \"0.5s\",\n borderRadius: \"20px\",\n width: \"156px\",\n zIndex: 1,\n fontSize: \"13px\",\n color: \"black\",\n }}\n />\n \n \n \n \n
\n );\n };\n","import React, { FunctionComponent } from \"react\";\nimport { BrandLogoBase } from \"./BrandLogoBase\";\n\ninterface BrandLogoSmallProps {\n brandLogo: string;\n brandName: string;\n}\n\nexport const BrandLogoSmall: FunctionComponent = (\n props: BrandLogoSmallProps\n) => {\n return (\n \n \n \n );\n};\n","import { authorizedAxios } from \"../../../Actions/AxiosActions\";\nimport { ISafegraphLocation } from \"../../../Models/ISafegraphLocation\";\nimport { ISafegraphLocationVisitData } from \"../../../Models/ISafegraphLocationVisitData\";\nimport { IServiceResult } from \"../../../Models/IServiceResult\";\nimport { ISubmitMobilyticsJobRequest } from \"../../../Models/Requests/ISubmitMobilyticsJobRequest\";\nimport { ISafegraphLocationRequest } from \"../Types/MobilyticsActionTypes\";\n\ninterface ISafegraphLocationsByIdRequest {\n safegraphLocationIds: string[];\n}\n\ninterface IGetLocationVisitsRequest {\n locationId: string;\n brandId: string;\n}\n\nexport interface ISafegraphGetNearestLocationsRequest {\n ids: string[];\n latitude: number;\n longitude: number;\n excludeBrand: string;\n}\n\nexport async function submitMobilyticsReport(\n request: ISubmitMobilyticsJobRequest\n) {\n return await authorizedAxios(\"POST\", \"/services/gps/Mobilytics/submit\", null, request);\n}\n\nexport async function getSafeGraphLocation(request: ISafegraphLocationRequest): Promise> {\n return await authorizedAxios>(\"POST\", \"/Safegraph/GetLocationFromPoint\", null, request);\n}\n\nexport const getSafeGraphLocations = async (safegraphLocationIds: string[]): Promise => {\n const request: ISafegraphLocationsByIdRequest = {\n safegraphLocationIds\n };\n\n const response = await authorizedAxios>(\"POST\", \"/Safegraph/BySafegraphLocationId\", null, request);\n return response.data;\n};\n\nexport const getNearestSafegraphLocationsByBrand = async (request: ISafegraphGetNearestLocationsRequest): Promise => {\n const response = await authorizedAxios>(\"POST\", \"/Safegraph/NearestByBrand\", null, request);\n return response.data;\n};\n\nexport const getNearestSafegraphLocationsByCategory = async (request: ISafegraphGetNearestLocationsRequest): Promise => {\n const response = await authorizedAxios>(\"POST\", \"/Safegraph/NearestByCategory\", null, request);\n return response.data;\n};\n\nexport const getLocationVisits = async (locationId: string, brandId: string): Promise => {\n const request: IGetLocationVisitsRequest = {\n locationId,\n brandId,\n };\n const response = await authorizedAxios>(\"POST\", \"/Safegraph/GetLocationVisits\", null, request);\n return response.data;\n};","import {\n SetSideNavOpenAction,\n SET_SIDE_NAV_OPEN\n} from \"../Types/SideNavActionTypes\";\n\nexport const setSideNavOpen = (open: boolean): SetSideNavOpenAction => ({\n type: SET_SIDE_NAV_OPEN,\n data: open,\n});\n","import React from \"react\";\n\nimport { IGCPBigQueryJob } from \"../../../../Models/IGCPBigQueryJob\";\nimport { IRetailMatchJob } from \"../../../../Models/IRetailMatch\";\nimport { App } from \"../../Enums/App\";\nimport { NotificationType } from \"../../Enums/NotificationType\";\nimport { ReportProgressStage, ReportProgressStageName } from \"../../Enums/ReportProgressStage\";\nimport { IReportProgress, ReportProgress } from \"../../Models/IReportProgress\";\nimport { INotification } from \"../../Models/Notification\";\nimport { regularExpressions } from '../../Constants/RegularExpression';\n\nexport const getPendingReportProgress = (): IReportProgress => {\n return new ReportProgress(\n ReportProgressStage.PENDING,\n (\n Pending\n ), ReportProgressStageName.PENDING);\n};\n\nexport const getSubmittedReportProgress = (): IReportProgress => {\n return new ReportProgress(\n ReportProgressStage.SUBMITTED,\n (\n Submitted\n ), ReportProgressStageName.SUBMITTED);\n};\n\nexport const getCachingReportProgress = (): IReportProgress => {\n return new ReportProgress(\n ReportProgressStage.CACHING,\n (\n Caching\n ), ReportProgressStageName.CACHING);\n};\n\nexport const getCompleteReportProgress = (): IReportProgress => {\n return new ReportProgress(\n ReportProgressStage.COMPLETE,\n (\n Complete\n ), ReportProgressStageName.COMPLETE);\n};\n\nexport const getNextReportProgress = (progress: number, locationName: string): IReportProgress => {\n /** set the initial progress, override it if ok */\n const sp = getPendingReportProgress();\n let nextProgress = sp.progress;\n let nextVerbiage = sp.verbiage;\n let nextStageName = sp.stageName;\n\n switch (progress){\n case ReportProgressStage.PENDING: {\n const p = getSubmittedReportProgress();\n nextProgress = p.progress;\n nextVerbiage = p.verbiage;\n nextStageName = p.stageName;\n break;\n }\n case ReportProgressStage.SUBMITTED: {\n nextProgress = ReportProgressStage.TWO;\n nextVerbiage = (\n Identifying and quantifying mobile device signals observed at selected brand(s) locations\n );\n nextStageName = ReportProgressStageName.SUBMITTED;\n break;\n }\n case ReportProgressStage.TWO: {\n nextProgress = ReportProgressStage.THREE;\n nextVerbiage = (\n Identifying home locations of mobile devices and calculating location trade areas\n );\n nextStageName = ReportProgressStageName.RUNNING;\n break;\n }\n case ReportProgressStage.THREE: {\n nextProgress = ReportProgressStage.FOUR;\n nextVerbiage = (\n Appending household level attributes to develop customer profiles\n );\n nextStageName = ReportProgressStageName.RUNNING;\n break;\n }\n case ReportProgressStage.FOUR: {\n nextProgress = ReportProgressStage.FIVE;\n nextVerbiage = (\n Assessing trade area household compositions for selected brand(s) locations\n );\n nextStageName = ReportProgressStageName.RUNNING;\n break;\n }\n case ReportProgressStage.FIVE: {\n nextProgress = ReportProgressStage.SIX;\n nextVerbiage = (\n Assessing trade area household composition for analysis {locationName?.replace(regularExpressions.UsaRegex, \"\")}\n );\n nextStageName = ReportProgressStageName.RUNNING;\n break;\n }\n case ReportProgressStage.SIX: {\n nextProgress = ReportProgressStage.SEVEN;\n nextVerbiage = (\n Comparing analysis trade area to brand trade areas to generate key metrics\n );\n nextStageName = ReportProgressStageName.RUNNING;\n break;\n }\n case ReportProgressStage.SEVEN: {\n nextProgress = ReportProgressStage.CACHING;\n nextVerbiage = (\n Caching\n );\n nextStageName = ReportProgressStageName.CACHING;\n break;\n }\n case ReportProgressStage.CACHING: {\n const np = getCachingReportProgress();\n nextProgress = np.progress;\n nextVerbiage = np.verbiage;\n nextStageName = np.stageName;\n break;\n }\n case ReportProgressStage.COMPLETE: {\n const np = getCompleteReportProgress();\n nextProgress = np.progress;\n nextVerbiage = np.verbiage;\n nextStageName = np.stageName;\n break;\n }\n }\n return new ReportProgress(nextProgress, nextVerbiage, nextStageName);\n};\n\nexport const getReportProgressTimerValue = (progress: number): number => {\n /** based on the progress passed in, will return the value for the timer function - IN MILLISECONDS */\n let numSeconds = 5;\n switch (progress){\n case ReportProgressStage.PENDING:\n case ReportProgressStage.SUBMITTED:\n case ReportProgressStage.TWO:\n case ReportProgressStage.THREE:\n case ReportProgressStage.COMPLETE: {\n numSeconds = 5;\n break;\n }\n case ReportProgressStage.FOUR:\n case ReportProgressStage.SIX:\n case ReportProgressStage.SEVEN: {\n numSeconds = 6;\n break;\n }\n case ReportProgressStage.FIVE: {\n numSeconds = 9;\n break;\n }\n case ReportProgressStage.CACHING: {\n numSeconds = 10;\n break;\n }\n }\n return numSeconds * 1000;// example - converts 5 to 5000 (5 seconds, or 5000 milliseconds)\n};\n\nexport const reportIsPending = (\n associatedNotifications: INotification[],\n app: App\n): boolean => {\n\n const running: boolean = reportIsRunning(associatedNotifications, app);\n const caching: boolean = reportIsCaching(associatedNotifications, app);\n const complete: boolean = reportIsComplete(associatedNotifications, app);\n if (running || caching || complete) {\n return false;\n }\n\n return associatedNotifications.find((n: INotification) => {\n switch (app){\n case App.Match: {\n return n.notificationType === NotificationType.MatchReportPending;\n }\n case App.Mobilytics: {\n return n.notificationType === NotificationType.MobilyticsReportPending;\n }\n }\n }) !== undefined;\n};\n\nexport const reportIsRunning = (\n associatedNotifications: INotification[],\n app: App\n): boolean => {\n\n const caching: boolean = reportIsCaching(associatedNotifications, app);\n const complete: boolean = reportIsComplete(associatedNotifications, app);\n if (caching || complete) {\n return false;\n }\n\n return associatedNotifications.find((n: INotification) => {\n switch (app){\n case App.Match: {\n return n.notificationType === NotificationType.MatchReportRunning;\n }\n case App.Mobilytics: {\n return n.notificationType === NotificationType.MobilyticsReportRunning;\n }\n }\n }) !== undefined;\n};\n\nexport const reportIsCaching = (\n associatedNotifications: INotification[],\n app: App\n): boolean => {\n\n const complete: boolean = reportIsComplete(associatedNotifications, app);\n if (complete) {\n return false;\n }\n\n return associatedNotifications.find((n: INotification) => {\n switch (app){\n case App.Match: {\n return n.notificationType === NotificationType.MatchReportCaching;\n }\n case App.Mobilytics: {\n return n.notificationType === NotificationType.MobilyticsReportCaching;\n }\n }\n }) !== undefined;\n};\n\nexport const reportIsComplete = (\n associatedNotifications: INotification[],\n app: App\n): boolean => {\n return associatedNotifications.find((n: INotification) => {\n switch (app){\n case App.Match: {\n return n.notificationType === NotificationType.MatchReportComplete\n || n.notificationType === NotificationType.MatchReportError;\n }\n case App.Mobilytics: {\n return n.notificationType === NotificationType.MobilyticsReportComplete\n || n.notificationType === NotificationType.MobilyticsReportError;\n }\n }\n }) !== undefined;\n};\n\nexport const getMostRecentReport = (\n app: App,\n matchReport: IRetailMatchJob,\n mobilyticsReport: IGCPBigQueryJob[]\n): IRetailMatchJob | IGCPBigQueryJob => {\n let report = null;\n switch (app){\n case App.Match: {\n report = matchReport;\n break;\n }\n case App.Mobilytics: {\n /** Mobilytics reports can have more than one job (i.e. Benchmark Reports).\n * For this use case, all we need is the first one to check against.\n */\n report = mobilyticsReport[0];\n break;\n }\n }\n return report;\n};\n\nexport const getAssociatedNotifications = (\n report: IGCPBigQueryJob | IRetailMatchJob,\n notifications: INotification[]\n): INotification[] => {\n return notifications.filter((n: INotification) => {\n return n.linkId === report?.jobId;\n });\n};\n","import axios, { AxiosResponse, AxiosError } from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { IBookmark, IUser } from \"../Models/Models\";\nimport * as types from \"./Types\";\n\nexport const setShowBookmarkModal = (setShowBookmarkModal: boolean) => ({\n type: types.SET_SHOW_BOOKMARK_MODAL,\n data: setShowBookmarkModal,\n});\n\nexport const loadBookmarks: ActionCreator> = (\n data\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBookmarks(true));\n\n axios\n .get(\"/Users/Bookmarks\")\n .then((response) => {\n const bookmarks: IBookmark[] = response.data.data;\n dispatch(loadBookmarksSuccess(response.data.data));\n dispatch(setLoadingBookmarks(false));\n if (bookmarks && bookmarks[0]) {\n dispatch(setFoundBookmarks(true));\n } else {\n dispatch(setFoundBookmarks(false));\n }\n })\n .catch((error) => {\n dispatch(loadBookmarksFailure(error));\n dispatch(setLoadingBookmarks(false));\n dispatch(setFoundBookmarks(false));\n });\n };\n};\n\nexport const setDefaultBookmark: ActionCreator<\n ThunkAction\n> = (newDefaultBookmark: IBookmark) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBookmarks(true));\n\n axios\n .post(\"/Bookmark/Default\", newDefaultBookmark )\n .then((response: AxiosResponse) => {\n dispatch(setDefaultBookmarkSuccess(response.data.data));\n dispatch(setLoadingBookmarks(false));\n })\n .catch((error: AxiosError) => {\n console.log(\"Failed to set new default bookmark\");\n dispatch(setLoadingBookmarks(false));\n });\n };\n};\n\nexport const deleteBookmark: ActionCreator> = (\n deletedBookmark: IBookmark\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingBookmarks(true));\n\n axios\n .delete(`/Bookmark/${deletedBookmark.id}`)\n .then((response: AxiosResponse) => {\n dispatch(deleteBookmarkSuccess(response.data.data));\n dispatch(setLoadingBookmarks(false));\n // calling loadBookmarks to refresh the bookmarks list\n dispatch(loadBookmarks());\n })\n .catch((error: AxiosError) => {\n console.log(\"Failed to delete bookmark\");\n dispatch(setLoadingBookmarks(false));\n });\n };\n};\n\n// SUCCESS\nconst loadBookmarksSuccess = (data: IUser) => ({\n type: types.LOAD_BOOKMARKS_SUCCESS,\n data: data,\n});\n\nconst setActiveBookmark = (data: IBookmark) => ({\n type: types.SET_ACTIVE_BOOKMARK,\n data: data,\n});\n\nconst setLoadingBookmarks = (loading: boolean) => ({\n type: types.SET_LOADING_BOOKMARKS,\n data: loading,\n});\n\nconst setFoundBookmarks = (found: boolean) => ({\n type: types.SET_FOUND_BOOKMARKS,\n data: found,\n});\n\nconst deleteBookmarkSuccess = (bookmark: IBookmark) => ({\n type: types.DELETE_BOOKMARK_SUCCESS,\n data: bookmark,\n});\n\nconst setDefaultBookmarkSuccess = (bookmark: IBookmark) => ({\n type: types.SET_DEFAULT_BOOKMARK_SUCCESS,\n data: bookmark,\n});\n\n// FAILURE\nconst loadBookmarksFailure = (data: IUser) => ({\n type: types.LOAD_BOOKMARKS_FAILURE,\n data: data,\n});\n","import { IBuxtonSupportTeamMember, IServiceResult } from \"../Models/Models\";\n\nexport interface ICompanySupportTeamAxios {\n GetCompanySupportTeam(): Promise<\n IServiceResult>\n >;\n}\n","import { notification } from \"antd\";\nimport axios, { AxiosError } from \"axios\";\nimport { authorizedAxios } from \"../../Actions/AxiosActions\";\nimport { IBrand } from \"../../Models/IBrand\";\nimport { IGCPBigQueryJob } from \"../../Models/IGCPBigQueryJob\";\nimport { IGPSGetJobResult, IGPSGetJobResultParsed } from \"../../Models/Models\";\nimport { IGetJobsRequest } from \"../../Models/Requests/IGetJobsRequest\";\nimport { ISubmitMobilyticsJobRequest } from \"../../Models/Requests/ISubmitMobilyticsJobRequest\";\nimport { IGPSInsightsAxios } from \"../index\";\n\nexport class GPSInsightsAxios implements IGPSInsightsAxios {\n public GetUserJobs(request: IGetJobsRequest): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"POST\", \"/services/gps/Job/byUser\", null, request)\n .then(\n (response: IGCPBigQueryJob[]) => {\n resolve(response);\n },\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n console.log(`Error getting jobs: ${error.message}`);\n });\n });\n }\n\n public GetCompanyJobs(request: IGetJobsRequest): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"POST\", \"/services/gps/Job/byCompany\", null, request)\n .then(\n (response: IGCPBigQueryJob[]) => {\n resolve(response);\n },\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n console.log(`Error getting jobs: ${error.message}`);\n });\n });\n }\n\n public GetJob(jobId: string): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"GET\", `/services/gps/Mobilytics/${jobId}`)\n .then(\n (response: IGCPBigQueryJob) => {\n resolve(response);\n },\n\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n console.log(`Error getting job: ${error.message}`);\n });\n });\n }\n\n public DeleteJob(jobId: string): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"POST\", `/services/gps/Job/delete/${jobId}`)\n .then(\n (response: string) => {\n resolve(response);\n },\n\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n console.log(`Error deleting job: ${error.message}`);\n });\n });\n }\n\n public GetBrand(term: string): Promise {\n return new Promise((resolve, reject) => {\n axios\n .get(`/services/gps/Brand/name/${term}`)\n .then(\n (response) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n console.log(`Error getting brand: ${error.message}`);\n });\n });\n }\n\n public GetResults = (jobID: string): Promise => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"GET\", `/services/gps/Mobilytics/${jobID}/results`)\n .then(\n (response: IGPSGetJobResult) => {\n const polygons = [response.job[0].jobPolygon];\n if (response.job.length > 1) {\n polygons.push(response.job[1].jobPolygon);\n }\n const result: IGPSGetJobResultParsed = {\n polygon: polygons,\n data: response.chartData,\n job: response.job,\n benchmarkCommonData: response.benchmarkCommonData,\n };\n resolve(result);\n },\n (error: AxiosError) => {\n reject(error);\n }\n )\n .catch((error: AxiosError) => {\n console.log(`Error getting results: ${error.message}`);\n });\n });\n };\n\n public SubmitGpsReport = (\n request: ISubmitMobilyticsJobRequest\n ): Promise => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"POST\", \"/services/gps/Mobilytics/submit\", {}, request)\n .then(\n (response: any) => {\n resolve(response);\n },\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n notification.error({\n message: \"Error\",\n description: error.response.data.Message,\n duration: null, // user must close\n });\n });\n });\n };\n\n public updatePolygonName = (\n jobId: string,\n newName: string\n ): Promise => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"POST\",\n `/services/gps/Mobilytics/UpdatePolygonName`,\n {},\n { jobId, newName }\n )\n .then(\n (response: IGCPBigQueryJob) => {\n resolve(response);\n },\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n notification.error({\n message: \"Error\",\n description: error.response.data.Message,\n duration: null, // user must close\n });\n });\n });\n };\n public updateJobTitle = (\n jobId: string,\n newReportName: string\n ): Promise => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"PUT\",\n `/services/gps/Job/UpdateJobTitle/${jobId}`,\n {},\n { jobId, newReportName }\n )\n .then(\n (response: IGCPBigQueryJob) => {\n resolve(response);\n },\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n notification.error({\n message: \"Error\",\n description: error.response.data.Message,\n duration: null, // user must close\n });\n });\n });\n };\n public SaveToScout = (jobId: string): Promise => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"POST\",\n `/services/gps/Mobilytics/savetoscout`,\n {},\n {\n jobId: jobId,\n save: true,\n }\n )\n .then(\n (response: any) => {\n resolve(response);\n },\n (error: AxiosError) => {\n reject(error.message);\n }\n )\n .catch((error: AxiosError) => {\n notification.error({\n message: \"Error\",\n description: error.response.data.Message,\n duration: null, // user must close\n });\n });\n });\n };\n}\n\n/******************** Share Report ********************/\nexport const saveSharedReport = (\n jobId: string,\n callback: (shareReportGuid: string) => void\n) => {\n authorizedAxios(\n \"POST\",\n `/services/gps/share/SaveSharedReport/${jobId}`\n )\n .then((reportGuid: string) => {\n callback(reportGuid);\n })\n .catch((error) => {\n console.log(`Error: ${error}`);\n });\n};\n","import { IPointBase } from \"./IPoint\";\n\nexport interface IMobilyticsScenario {\n address?: string;\n placeId: string;\n title: string;\n points: IPointBase[];\n polygonName: string;\n dateFrom: Date;\n dateTo: Date;\n hourFrom: number;\n hourTo: number;\n minuteFrom: number;\n minuteTo: number;\n milesLessOrGreater: string;\n miles: number;\n locationId: string;\n brandId: string;\n}","import {\n IServiceResult,\n ITerritoryType,\n IUserPreferences,\n} from \"../Models/Models\";\n\nexport interface IUserPreferencesAxios {\n GetUserPreferences(): Promise>;\n UpdateUserPreferences(\n userPreferences: IUserPreferences\n ): Promise>;\n GetCompanyTerritoryTypes(): Promise>>;\n}\n","import { IServiceResult, ITableauView } from \"../Models/Models\";\n\nexport interface IVisualization {\n GetViews(): Promise>;\n}\n","import { IPolygon } from \"../Models/Models\";\n\nexport interface IReportMapAxios {\n GetBlockgroupPolygons(blockGroupIds: string[]): Promise;\n}\n","export enum ActiveApp {\n SCOUT,\n MY_DATA,\n SETTINGS,\n RETAIL_MATCHES,\n BOOKMARKS,\n REPORTS,\n SALES_PERFORMANCE,\n NETWORK_AUDIT,\n VISUALIZATIONS,\n GPS_INSIGHTS,\n COMMUNITY_MATCHES,\n PLANNING,\n}\n","import { notification } from \"antd\";\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { AnalysisSource } from \"../Enums/AnalysisSource\";\nimport { AnalysisStatus } from \"../Enums/AnalysisStatus\";\nimport { DEFAULT_NOTIFICATION_DURATION } from \"../Logic/NotificationLogic\";\nimport { IProcessReportsResult } from \"../Models/IProcessReportsResult\";\n\nimport { IAnalysisItem, IBatch, IFile, IRootReducer } from \"../Models/Models\";\nimport { getUniqueReportTypes } from \"../Reducers/ReportsReducer\";\nimport { mapBatchesToAnalysisItems } from \"../Util/ReportUtil\";\nimport * as types from \"./Types\";\n\nexport const loadReports: ActionCreator> = (\n isCollaborating: boolean,\n startDate: Date,\n endDate: Date\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingReports(true));\n dispatch(setReportsCollaborating(isCollaborating));\n (window as any).scout?.interop.api.reports.setReportsCollaborating(\n isCollaborating\n );\n dispatch(setReportsDates(startDate, endDate));\n\n axios.post(\"/Batches/History\", {\n isCollaborating: isCollaborating,\n startDate: startDate,\n endDate: endDate,\n }).then((response) => {\n const batches: IBatch[] = response.data.data;\n\n if (batches && batches.length > 0) {\n dispatch(setFoundReports(true));\n } else {\n dispatch(setFoundReports(false));\n }\n dispatch(setLoadingReports(false));\n dispatch(processReports(batches));\n }).catch((error) => {\n dispatch(setLoadingReports(false));\n });\n };\n};\n\nexport const setReportIdAndFiles: ActionCreator<\n ThunkAction\n> = (batchId: number) => {\n return (dispatch: Dispatch) => {\n dispatch(setSelectedReportId(batchId));\n dispatch(setSelectedReportFiles([]));\n\n axios\n .get(\"/Batches/Files\", {\n params: {\n batchId: batchId,\n collaborateWithCompany: true,\n },\n })\n .then((response) => {\n const files: IFile[] = response.data.data;\n dispatch(setSelectedReportFiles(files));\n })\n .catch((error) => {\n console.error(\"Report Actions: setReportIdAndFiles()\", error);\n dispatch(setSelectedReportFiles(null));\n });\n };\n};\n\nexport const viewKMLFileOnMap = (file: IFile, path: string): void => {\n (window as any).scout.actions.kmlFileToggle(file, path);\n};\n\nexport const deleteReport: ActionCreator> = (report: IBatch) => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingReports(true));\n\n axios.post(\"/Batches/DeleteBatch\", report).then((response: AxiosResponse) => {\n if (response.data.result) {\n const batchID: number = response.data.data;\n notification.success({\n message: \"Report Deleted\",\n duration: DEFAULT_NOTIFICATION_DURATION, // seconds\n });\n dispatch(deleteReportSuccess(batchID));\n dispatch(setLoadingReports(false));\n } else {\n console.log(\n \"server call succeeded, but the operation failed: \",\n response\n );\n notification.error({\n message:\n \"Failed to delete report. If you continue to see this message, please contact SCOUT Support.\",\n duration: null,\n });\n dispatch(setLoadingReports(false));\n }\n }).catch((error: AxiosError) => {\n console.log(\"delete error: \", error);\n dispatch(setLoadingReports(false));\n });\n };\n};\n\nexport const resetReportCounter = () => ({\n type: types.RESET_REPORT_COUNTER,\n});\n\nconst processReports = (reports: IBatch[]) => {\n return (dispatch: Dispatch, getState) => {\n const state = (getState() as IRootReducer).reports;\n /** copy of current reports (for notification purposes) */\n const previousReports: IAnalysisItem[] = [...state.allReports];\n /** map incoming data to object */\n const incomingReports: IAnalysisItem[] = mapBatchesToAnalysisItems(\n reports\n );\n let unviewedCompletedReportsCount = state.unviewedReportCount;\n\n for (const incomingReport of incomingReports) {\n const previousReport = previousReports.find(p => p.id === incomingReport.id);\n if (previousReport) {\n /** check status changes */\n if (\n incomingReport.status === AnalysisStatus.Complete\n && previousReport.status !== AnalysisStatus.Complete\n ) {\n unviewedCompletedReportsCount++;\n } else if (\n incomingReport.status === AnalysisStatus.CompleteWithErrors\n && previousReport.status !== AnalysisStatus.CompleteWithErrors\n ) {\n notification.error({\n message: `${incomingReport.name} had an error. If you continue to experience problems, please contact SCOUT Support.`,\n duration: null, // user must close\n });\n }\n break;\n }\n }\n\n /** remove all previous reports of this type */\n const reportsCopy: IAnalysisItem[] = [...state.allReports].filter(\n (report: IAnalysisItem) => {\n return report.source !== AnalysisSource.Nexus;\n }\n );\n /** add the new reports from the server */\n reportsCopy.push(...incomingReports);\n\n const result: IProcessReportsResult = {\n allReports: reportsCopy,\n // if there weren't previous reports, don't trust the unviewed count\n unviewedReportCount:\n previousReports.filter(r => r.source === AnalysisSource.Nexus).length\n ? unviewedCompletedReportsCount\n : state.unviewedReportCount,\n uniqueReportTypes: getUniqueReportTypes(reportsCopy),\n };\n\n dispatch({\n type: types.SET_REPORTS,\n data: result\n });\n };\n};\n\nexport const setLoadingReports = (loading: boolean) => ({\n type: types.SET_LOADING_REPORTS,\n data: loading,\n});\n\nconst setFoundReports = (found: boolean) => ({\n type: types.SET_FOUND_REPORTS,\n data: found,\n});\n\nconst setSelectedReportId = (selectedReportId: number) => ({\n type: types.SET_SELECTED_REPORT_ID,\n data: selectedReportId,\n});\n\nconst setSelectedReportFiles = (files: IFile[]) => ({\n type: types.SET_SELECTED_REPORT_FILES,\n data: files,\n});\n\nconst deleteReportSuccess = (deletedBatchID: number) => ({\n type: types.DELETE_REPORT_SUCCESS,\n data: deletedBatchID,\n});\n\nexport const setReportsDates = (startDate: Date, endDate: Date) => ({\n type: types.SET_REPORTS_DATES,\n data: { startDate, endDate },\n});\n\nexport const setInsightsCollaborating = (collaborating: boolean) => ({\n type: types.SET_INSIGHTS_COLLABORATING,\n data: collaborating,\n});\n\nexport const setReportsCollaborating = (collaborating: boolean) => ({\n type: types.SET_REPORTS_COLLABORATING,\n data: collaborating,\n});\n\nexport const setSelectedFile = (selectedFile: IFile) => ({\n type: types.SET_REPORT_FILE,\n data: selectedFile,\n});\n\nexport const setShowReportFileModal = (showReportFileModal: boolean) => ({\n type: types.SET_SHOW_REPORT_FILE_MODAL,\n data: showReportFileModal,\n});\n\nexport const setShowRecentReportsModal = (showRecentReportsModal: boolean) => ({\n type: types.SET_SHOW_RECENT_REPORTS_MODAL,\n data: showRecentReportsModal,\n});\n","export const DEFAULT_NOTIFICATION_DURATION = 3;","import { IAnalysisItem } from \"./IAnalysisItem\";\n\nexport interface IProcessReportsResult {\n allReports: IAnalysisItem[];\n unviewedReportCount: number;\n uniqueReportTypes: string[];\n}\n","import { IAnalysisItem } from \"./IAnalysisItem\";\nimport { IGCPBigQueryJob } from \"./IGCPBigQueryJob\";\n\nexport interface IProcessJobsResult {\n jobs: IGCPBigQueryJob[];\n mappedJobs: IAnalysisItem[];\n finishedInsights: string[];\n}\n","export interface IAddress {\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n zip: string;\n zip4: string;\n country: string;\n}\n\nexport class Address {\n public address1 = \"\";\n public address2 = \"\";\n public address3 = \"\";\n public city = \"\";\n public state = \"\";\n public zip = \"\";\n public zip4 = \"\";\n public country = \"\";\n}\n","export interface IStoreType {\n id: number;\n name: string;\n groupName: string;\n readonly modifiedDateTime: Date;\n readonly cid: number;\n orderIndex: number;\n readonly modifiedDateTimeFriendly: string;\n iconName: string;\n imagePath: string;\n hexColor: string;\n value: number;\n type: string;\n displayColorPicker?: false;\n}\n\nexport class StoreType implements IStoreType {\n public readonly id = -1;\n public name = \"\";\n public groupName = \"\";\n public readonly modifiedDateTime = new Date();\n public readonly cid = 0;\n public orderIndex = 0;\n public readonly modifiedDateTimeFriendly = \"\";\n public iconName = \"\";\n public imagePath = \"\";\n public hexColor = \"\";\n public value = 0;\n public displayColorPicker?: false;\n public type = \"\";\n}\n","import { IOktaMFAFactorLinkHints } from \"./IOktaMFAFactorLinkHints\";\n\nexport interface IOktaMFAFactorLink {\n href: string;\n hints: IOktaMFAFactorLinkHints;\n}\n","import { IBaseAction } from \"../Actions/BaseAction\";\nimport { App } from \"../Enums/App\";\nimport { AppView } from \"../Enums/AppView\";\n\nexport type SetCurrentAppAction = IBaseAction;\nexport type SetAppViewAction = IBaseAction;\nexport type SetAppPastIntroAction = IBaseAction;\nexport type ResetAppPastIntroAction = IBaseAction;\nexport type ShowHeaderNav = IBaseAction;\n\nexport type AppActionType =\n SetCurrentAppAction |\n SetAppViewAction |\n SetAppPastIntroAction |\n ShowHeaderNav |\n ResetAppPastIntroAction;\n\nexport const SET_CURRENT_APP = \"SET_CURRENT_APP\";\nexport const SET_APP_VIEW = \"SET_APP_VIEW\";\nexport const SET_APP_PAST_INTRO = \"SET_APP_PAST_INTRO\";\nexport const SHOW_HEADER_NAV = \"SHOW_HEADER_NAV\";\nexport const RESET_APP_PAST_INTRO = \"RESET_APP_PAST_INTRO\";\n","import React from \"react\";\nimport { Set } from \"immutable\";\n\nimport { testImageOnloadAsync } from \"../../../../Components/Apps/RetailMatch/Logic/SharedMethods\";\nimport { createGenericIcon } from \"../../../../Components/Common/GenericIcon/GenericIcon.Helpers\";\nimport { IBrand } from \"../../../../Models/IBrand\";\nimport { IBrandSampleSet } from \"../../../../Models/IBrandSampleSet\";\nimport { IMapMarker, MapMarker } from \"../../Models/IMapMarker\";\nimport { IPolygon } from \"../../Models/Maps/IPolygon\";\nimport { PolygonType } from \"../../Models/Maps/Enums/PolygonType\";\nimport { ICircle } from \"../../Models/Maps/ICircle\";\nimport { IRectangle } from \"../../Models/Maps/IRectangle\";\nimport { ICustomPolygon } from \"../../Models/Maps/ICustomPolygon\";\nimport { circleToPoints, customPolygonToPoints, rectangleToPoints } from \"../../Logic/PolygonLogic\";\nimport { ILatLon } from \"../../../../Models/ILatLon\";\n\nexport const defaultCenter = new google.maps.LatLng(32.7079, -96.9209);\nexport const defaultZoom = 14;\n\nexport const getUniqueIdForBrand = (data: IBrandSampleSet): string => {\n return `${data.brandId}-${data.locationId}`;\n};\n\nexport const findMatchingBrand = (brandSample: IBrandSampleSet, brandList: IBrand[]): IBrand => {\n return brandList.find((b: IBrand) => {\n return b.brandId === brandSample.brandId;\n });\n};\n\nexport const convertBrandToMarker = (brandSample: IBrandSampleSet, matchingBrand: IBrand): IMapMarker => {\n return new MapMarker(\n getUniqueIdForBrand(brandSample),\n brandSample.latitude,\n brandSample.longitude,\n matchingBrand.logoPath,\n false,\n false,\n 25,\n 25,\n (\n <>\n
{brandSample.brandName}
\n
    \n
  • City: {brandSample.city}
  • \n
  • State: {brandSample.state}
  • \n
  • City: {brandSample.zipcode}
  • \n
\n \n ),\n false,\n brandSample.brandName,\n true,\n brandSample.brandId,\n );\n};\n\nconst mapGoodBrandsToMarkers = (\n sampleSet: IBrandSampleSet[],\n brands: IBrand[],\n excludedMarkers: Set,\n): IMapMarker[] => sampleSet\n .filter(sample => !excludedMarkers.contains(sample.locationId))\n .map((data: IBrandSampleSet) => {\n const matchingBrand: IBrand = findMatchingBrand(data, brands);\n return matchingBrand !== undefined\n && typeof data.latitude === 'number'\n && typeof data.longitude === 'number'\n && convertBrandToMarker(data, matchingBrand);\n })\n .filter(x => !!x); // filter out markers that aren't there\n\nexport const getMapMarkersFromBrandSampleSet = (\n sampleSet: IBrandSampleSet[],\n brands: IBrand[],\n excludedMarkers: Set,\n): Promise => {\n const brandsInSampleSet: IBrand[] = brands.filter(b => sampleSet.findIndex(s => s.brandId === b.brandId) >= 0);\n const testLogoPromises: Promise[] = brandsInSampleSet.map(brand =>\n testImageOnloadAsync(brand.logoPath).then(async (validSrc) => {\n if (!validSrc) {\n await createGenericIcon(brand.brandName).then(\n (createdLogo) => (brand.logoPath = createdLogo)\n );\n }\n }));\n return Promise\n .all(testLogoPromises)\n .then(() => mapGoodBrandsToMarkers(sampleSet, brands, excludedMarkers));\n};\n\nexport const getPointsFromPolygonType = (polygon: IPolygon): ILatLon[] => {\n switch (polygon.polygonType){\n case PolygonType.Circle: {\n const poly = polygon as ICircle;\n return circleToPoints(poly);\n }\n case PolygonType.Rectangle: {\n const poly = polygon as IRectangle;\n return rectangleToPoints(poly);\n }\n case PolygonType.Custom: {\n const poly = polygon as ICustomPolygon;\n return customPolygonToPoints(poly);\n }\n case PolygonType.Unknown:\n default: {\n return [];\n }\n }\n};\n","export enum RetailMatchMetricTier {\n Tier1,\n Tier2,\n Tier3,\n Tier4,\n}\n","export interface IMapPolygon {\n id: string;\n points: { x: number; y: number }[];\n name: string;\n isSelected: boolean;\n loading: boolean;\n borderSize: number;\n borderColor: string;\n infoWindowContent: JSX.Element | string;\n}\n\nexport class MapPolygon implements IMapPolygon {\n /**\n *\n */\n constructor(\n id: string,\n points: { x: number; y: number },\n name: string,\n isSelected: boolean,\n loading: boolean,\n borderSize: number,\n borderColor: string,\n infoWindowContent: JSX.Element | string\n ) {}\n public id = \"\";\n public points: { x: number; y: number }[] = [];\n public name = \"\";\n public isSelected = false;\n public loading = false;\n public borderSize = 0;\n public borderColor = \"\";\n public infoWindowContent: null | string | JSX.Element = null;\n}\n","import { IBaseAction } from \"../Actions/BaseAction\";\nimport { IMapMarker } from \"../Models/IMapMarker\";\n\nexport type SingleMarkerMapState = {\n marker: IMapMarker;\n zoom: number;\n};\n\nexport type SetMapJsApiLoadedAction = IBaseAction;\nexport type SetMapMarkersAction = IBaseAction;\nexport type SetMapCenterAction = IBaseAction;\nexport type SetMapZoomAction = IBaseAction;\nexport type SetLoadingOverlay = IBaseAction;\n\nexport type MapActionType =\n SetMapJsApiLoadedAction |\n SetMapMarkersAction |\n SetMapCenterAction |\n SetLoadingOverlay|\n SetMapZoomAction;\n\nexport const SET_MAP_JS_API_LOADED = \"SET_MAP_JS_API_LOADED\";\nexport const SET_MAP_MARKERS_NEW = \"SET_MAP_MARKERS_NEW\";\nexport const SET_MAP_CENTER = \"SET_MAP_CENTER\";\nexport const SET_MAP_ZOOM = \"SET_MAP_ZOOM\";\nexport const SET_LOADING_OVERLAY = \"SET_LOADING_OVERLAY\";\n","import moment from \"moment\";\nimport React from \"react\";\n\nimport { NotificationType } from \"../../Enums/NotificationType\";\nimport { INotification } from \"../../Models/Notification\";\nimport { ErrorExclamation } from \"./NotificationsStyled\";\n\nexport function notificationHasError (type: NotificationType) : boolean{\n return type === NotificationType.MatchReportError\n || type === NotificationType.MobilyticsReportError;\n}\n\nfunction getPercentComplete (type: NotificationType): 0 | 25 | 50 | 75 | 100 {\n switch (type){\n case NotificationType.MatchReportRunning:\n case NotificationType.MobilyticsReportRunning: {\n return 50;\n }\n case NotificationType.MatchReportCaching:\n case NotificationType.MobilyticsReportCaching: {\n return 75;\n }\n case NotificationType.MatchReportComplete:\n case NotificationType.MobilyticsReportComplete:\n case NotificationType.MatchReportError:\n case NotificationType.MobilyticsReportError: {\n return 100;\n }\n\n default: {\n return 0;\n }\n }\n}\n\nexport function getFilteredNotifications (notifications: INotification[], term: string, filterDates: [Date, Date]):INotification[]{\n\n const modifiedTerm: string = term.trim().toLowerCase();\n\n if (modifiedTerm.length === 0){\n /** only filter on dates */\n return notifications.filter((n: INotification) => {\n return n.createdDate >= filterDates[0]\n && n.createdDate <= filterDates[1]\n && n.isActive;\n });\n }\n /** filter on multiple fields */\n return notifications.filter((n: INotification) => {\n return n.title.trim().toLowerCase().includes(modifiedTerm)\n || n.description.trim().toLowerCase().includes(modifiedTerm)\n && (\n n.createdDate >= filterDates[0]\n && n.createdDate <= filterDates[1]\n )\n && n.isActive;\n });\n}\n\nexport function getInitialNotificationFilterDates (): [Date, Date] {\n const from = new Date();\n const to = new Date();\n // the beginning of the day\n from.setHours(0, 0, 0, 0);\n // 30 days back\n from.setDate(from.getDate() - 30);\n // the end of the day\n to.setHours(23, 59, 59, 0);\n return [\n from,\n to\n ];\n};\n\nexport function getFixedNotificationDates(start: Date, end: Date): [Date, Date] {\n /** new date objects - so we're not altering the passed in data */\n const s = new Date(start);\n const e = new Date (end);\n /** fix the dates to encompass the beginning and the end of the days */\n s.setHours(0, 0, 0, 0);// beginning of the day\n e.setHours(23, 59, 59, 0);// the end of the day\n /** return the fixed dates */\n return [s, e];\n}\n\nexport function getNotificationDateTimeValue (dateTime: Date): string | Date {\n const numMinutes: number = moment().diff(moment(dateTime), \"minutes\");\n /** the notification has appeared within the minute */\n if (numMinutes === 0){\n return \"Just now\";\n }\n const numHours: number = moment().diff(moment(dateTime), \"hours\");\n /** the notification has appeared within the hour */\n if (numHours === 0){\n const numMinutes: number = moment().diff(moment(dateTime), \"minutes\");\n return `${numMinutes} minutes ago`;\n }\n /** 24 hours in a day */\n if (numHours < 24){\n return `${numHours} hours ago`;\n }\n return dateTime.toLocaleDateString();\n};\n\ninterface IconProps {\n height?: string;\n width?: string;\n fill?: string;\n opacity?: string;\n}\n\nconst getMatchIcon = (props?: IconProps): JSX.Element => {\n const h : string = props?.height !== undefined ? props.height : \"24\";\n const w : string = props?.width !== undefined ? props.width : \"19\";\n const f : string = props?.fill !== undefined ? props.fill : \"#2E3D49\";\n const o : string = props?.opacity !== undefined ? props.opacity : \".65\";\n return (\n \n \n \n \n \n );\n};\n\nconst getMobilyticsIcon = (props?: IconProps): JSX.Element => {\n const h : string = props?.height !== undefined ? props.height : \"24\";\n const w : string = props?.width !== undefined ? props.width : \"13\";\n const f : string = props?.fill !== undefined ? props.fill : \"#2E3D49\";\n const o : string = props?.opacity !== undefined ? props.opacity : \".65\";\n return (\n \n \n \n \n \n );\n};\n\nconst getScoutIcon = (props?: IconProps): JSX.Element => {\n const h : string = props?.height !== undefined ? props.height : \"24\";\n const w : string = props?.width !== undefined ? props.width : \"24\";\n const f : string = props?.fill !== undefined ? props.fill : \"#2E3D49\";\n const o : string = props?.opacity !== undefined ? props.opacity : \".65\";\n return (\n \n \n \n \n \n\n );\n};\n\nexport function getNotificationIcon(n: INotification): JSX.Element {\n const opacity: string = n.isRead\n ? \".65\"\n : \"1\";\n const fill: string = n.isRead\n ? \"#c4c4c4\"\n : \"#fff\";\n switch (n.notificationType) {\n case NotificationType.MobilyticsReportPending:\n case NotificationType.MobilyticsReportRunning: {\n return getMobilyticsIcon({fill: fill, opacity: opacity});\n }\n case NotificationType.MatchReportPending:\n case NotificationType.MatchReportRunning: {\n return getMatchIcon({fill: fill, opacity: opacity});\n }\n case NotificationType.MatchReportCaching: {\n return getMatchIcon({fill: fill, opacity: opacity});\n }\n case NotificationType.MobilyticsReportCaching: {\n return getMobilyticsIcon({fill: fill, opacity: opacity});\n }\n case NotificationType.MobilyticsReportComplete: {\n return getMobilyticsIcon({fill: n.isRead ? \"#c4c4c4\" : \"#2b8b49\", opacity: opacity});\n }\n case NotificationType.MatchReportComplete: {\n return getMatchIcon({fill: n.isRead ? \"#c4c4c4\" : \"#2b8b49\", opacity: opacity});\n }\n case NotificationType.MatchReportError: {\n return (\n <>\n !\n {getMatchIcon()}\n \n );\n }\n case NotificationType.MobilyticsReportError: {\n return (\n <>\n !\n {getMobilyticsIcon()}\n \n );\n }\n default: {\n return getScoutIcon();\n }\n }\n}\n\nexport function getBaseUrlFromNotificationType(type: NotificationType):string {\n switch (type){\n case NotificationType.MatchReportComplete: {\n return `retailMatch`;\n }\n case NotificationType.MobilyticsReportComplete: {\n return `gps/insight`;\n }\n }\n return null;\n}\n\nexport function getNotificationDescriptionForType(type: NotificationType): string {\n let msg = \"\";\n switch (type){\n case NotificationType.MatchReportPending:\n case NotificationType.MobilyticsReportPending: {\n msg = \"This report is pending, and can be viewed once it completes.\";\n break;\n }\n case NotificationType.MatchReportRunning:\n case NotificationType.MobilyticsReportRunning: {\n msg = \"This report is running, and can be viewed once it completes.\";\n break;\n }\n case NotificationType.MatchReportCaching:\n case NotificationType.MobilyticsReportCaching: {\n msg = \"This report is caching, and can be viewed once it completes.\";\n break;\n }\n case NotificationType.MatchReportError:\n case NotificationType.MobilyticsReportError: {\n msg = \"This report has errored and cannot be viewed.\";\n break;\n }\n }\n\n return msg;\n}\n\nexport function getNotificationCursor(type: NotificationType): string {\n let cursor = \"not-allowed\";\n switch (type) {\n case NotificationType.MatchReportComplete:\n case NotificationType.MobilyticsReportComplete: {\n cursor = \"pointer\";\n }\n }\n return cursor;\n}","import { List } from \"antd\";\nimport styled from \"styled-components\";\nimport { device } from \"../../../../globalStyles\";\n\nimport { NotificationType } from \"../../Enums/NotificationType\";\n\ninterface CircleProps {\n type: NotificationType;\n read: boolean;\n}\nexport const Circle = styled.div`\n height: 12px;\n min-height: 12px;\n width: 12px;\n min-width: 12px;\n border-radius: 50%;\n margin: 0 1rem;\n\n border: ${({type, read}: CircleProps) => {\n let borderColor = \"#c4c4c4\";\n if (read) {\n return `1px solid ${borderColor}`;\n }\n switch (type){\n case NotificationType.MatchReportComplete:\n case NotificationType.MobilyticsReportComplete: {\n borderColor = \"#2b8b49\";\n break;\n }\n }\n return `1px solid ${borderColor}`;\n }};\n\n background-color: ${({type, read}: CircleProps) => {\n let backgroundColor = \"#e4e4e4\";\n if (read) {\n return `${backgroundColor}`;\n }\n switch (type){\n case NotificationType.MatchReportComplete:\n case NotificationType.MobilyticsReportComplete: {\n backgroundColor = \"#1ce180\";\n break;\n }\n }\n return `${backgroundColor}`;\n }};\n`;\n\nexport const StyledModalHeader = styled.div`\n display: flex;\n align-items: center;\n height: 50px;\n background-color: #f5f5f5;\n padding: 0 4.5rem 0 1.5rem;\n`;\n\nexport const StyledModalFooter = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 46px;\n`;\n\nexport const NotificationsEmptyWrapper = styled.div`\n text-align: center;\n padding: 5rem;\n border: 1px solid #f5f5f5;\n color: #424242;\n`;\n\nexport const StyledUl = styled.ul`\n margin: 0;\n list-style-type: none;\n & li {\n cursor: pointer;\n margin-bottom: 10px;\n transition: .3s ease opacity;\n }\n & li.disabled {\n cursor: not-allowed;\n opacity: .5;\n }\n`;\n\nexport const StyledList = styled(List)`\n .ant-list-item {\n justify-content: flex-start !important;\n }\n ${device.tablet} {\n padding-bottom: 20px;\n }\n`;\n\ninterface NotificationWrapperProps {\n isRead: boolean;\n type: NotificationType;\n}\nexport const NotificationIconWrapper = styled.div`\n height: 42px;\n min-height: 42px;\n width: 42px;\n min-width: 42px;\n margin-right: 13px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n position: relative;\n\n border: ${({type, isRead}: NotificationWrapperProps) => {\n\n let borderColor = \"#c4c4c4\";\n if (isRead) {\n return `1px solid ${borderColor}`;\n }\n\n switch (type){\n case NotificationType.MatchReportComplete:\n case NotificationType.MobilyticsReportComplete: {\n borderColor = \"#2b8b49\";\n break;\n }\n case NotificationType.MatchReportPending:\n case NotificationType.MobilyticsReportPending:\n case NotificationType.MatchReportRunning:\n case NotificationType.MobilyticsReportRunning: {\n borderColor = \"#e5aa43\";\n break;\n }\n default: {\n borderColor = \"#c4c4c4\";\n break;\n }\n }\n\n return `1px solid ${borderColor}`;\n }};\n\n background-color: ${({type, isRead}: NotificationWrapperProps) => {\n\n const backgroundColor = \"#fff\";\n if (isRead) {\n return `${backgroundColor}`;\n }\n\n switch (type){\n case NotificationType.MatchReportPending:\n case NotificationType.MobilyticsReportPending:\n case NotificationType.MatchReportRunning:\n case NotificationType.MobilyticsReportRunning:\n case NotificationType.MatchReportCaching:\n case NotificationType.MobilyticsReportCaching: {\n return \"#e5aa43\";\n }\n default: {\n return \"#fff\";\n }\n }\n }};\n`;\n\ninterface DateTimeTextProps {\n isRead: boolean;\n}\nexport const DateTimeText = styled.div`\n font-size: 12px;\n min-width: 100px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n font-weight: ${({isRead}: DateTimeTextProps) => !isRead ? \"bold\" : \"initial\"};\n color: ${({isRead}: DateTimeTextProps) => !isRead ? \"#2b8b49\" : \"inherit\"};\n`;\n\ninterface TitleTextProps {\n type: NotificationType;\n isRead: boolean;\n}\nexport const TitleText = styled.div`\n font-weight: bold;\n max-width: 312px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: ${({type, isRead}: TitleTextProps) => {\n\n let color = \"#2e3d49\";\n if (isRead) {\n return color;\n }\n\n switch (type){\n case NotificationType.MatchReportComplete:\n case NotificationType.MobilyticsReportComplete: {\n color = \"#2b8b49\";\n break;\n }\n case NotificationType.MatchReportError:\n case NotificationType.MobilyticsReportError: {\n color = \"#e02020\";\n break;\n }\n }\n\n return color;\n }};\n`;\n\nexport const DeleteConfirmWrapper = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n width: 171px;\n padding: 12px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n box-shadow: inset 2px 0 5px 0 rgba(0, 0, 0, 0.5);\n border: 1px solid #c4c4c4;\n background-color: #f3f5f7;\n`;\n\ninterface ErrorExclamationProps {\n isRead: boolean;\n}\nexport const ErrorExclamation = styled.div`\n background-color: #e02020;\n border-radius: 50%;\n height: 20px;\n width: 20px;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: -7px;\n right: -7px;\n opacity: ${({isRead}: ErrorExclamationProps) => isRead ? \".65\" : \"initial\"};\n`;\n","export enum ReportType {\n All = \"ALL\",\n Match = \"RETAIL_MATCH\",\n Mobilytics = \"MOBILYTICS\",\n};","import { IBaseAction } from \"../Actions/BaseAction\";\n\nexport type SetSideNavOpenAction = IBaseAction;\n\nexport type SideNavActionType = SetSideNavOpenAction;\n\nexport const SET_SIDE_NAV_OPEN = \"SET_SIDE_NAV_OPEN\";\n","export interface ISqftOption {\n value: number;\n text: string,\n includeInMin: boolean;\n includeInMax: boolean;\n};\n\nexport const SQFT_OPTIONS: ISqftOption[] = [\n {\n value: 0,\n text: \"Any\",\n includeInMin: true,\n includeInMax: false,\n },\n {\n value: 500,\n text: \"500\",\n includeInMin: true,\n includeInMax: true,\n },\n {\n value: 1_000,\n text: \"1,000\",\n includeInMin: true,\n includeInMax: true,\n },\n {\n value: 2_500,\n text: \"2,500\",\n includeInMin: true,\n includeInMax: true,\n },\n {\n value: 5_000,\n text: \"5,000\",\n includeInMin: true,\n includeInMax: true,\n },\n {\n value: 10_000,\n text: \"10,000\",\n includeInMin: true,\n includeInMax: true,\n },\n {\n value: Number.MAX_SAFE_INTEGER,\n text: \"Any\",\n includeInMin: false,\n includeInMax: true,\n },\n];","export enum FormActionType {\r\n SET_CURRENT_STEP = \"SUBMIT_MATCH_FORM_SET_CURRENT_STEP\",\r\n SET_DROPDOWN_OPEN = \"SUBMIT_MATCH_FORM_SET_DROPDOWN_OPEN\",\r\n SET_MIN_SQ_FEET = \"SUBMIT_MATCH_FORM_SET_MIN_SQ_FEET\",\r\n SET_MAX_SQ_FEET = \"SUBMIT_MATCH_FORM_SET_MAX_SQ_FEET\",\r\n SET_FILTER_OPTION = \"SUBMIT_MATCH_FORM_SET_FILTER_OPTION\",\r\n SET_SELECTED_BRANDS = \"SUBMIT_MATCH_FORM_SET_SELECTED_BRANDS\",\r\n SET_SELECTED_CATEGORY = \"SUBMIT_MATCH_FORM_SET_SELECTED_CATEGORY\",\r\n SET_COMPARE_OPTION = \"SUBMIT_MATCH_FORM_SET_COMPARE_OPTION\",\r\n SET_SAMPLE_SIZE = \"SUBMIT_MATCH_FORM_SET_SAMPLE_SIZE\",\r\n SET_SELECTED_GEO_OPTION = \"SUBMIT_MATCH_FORM_SET_SELECTED_GEO_OPTION\",\r\n SET_SELECTED_GEO = \"SUBMIT_MATCH_FORM_SET_SELECTED_GEO\",\r\n SET_SELECTED_TIME_OPTION = \"SUBMIT_MATCH_FORM_SET_SELECTED_TIME_OPTION\",\r\n SET_REPORT_NAME = \"SUBMIT_MATCH_FORM_SET_REPORT_NAME\",\r\n RESET_EVERYTHING = \"SUBMIT_MATCH_FORM_RESET_EVERYTHING\",\r\n ADD_EXCLUDED_MAP_MARKERS = \"SUBMIT_MATCH_FORM_ADD_EXCLUDED_MAP_MARKERS\",\r\n REMOVE_EXCLUDED_MAP_MARKERS = \"SUBMIT_MATCH_FORM_REMOVE_EXCLUDED_MAP_MARKERS\",\r\n REPLACE_EXCLUDED_MAP_MARKERS = \"SUBMIT_MATCH_FORM_REPLACE_EXCLUDED_MAP_MARKERS\",\r\n};\r\n\r\nexport type SubmitMatchFormAction = {\r\n type: FormActionType;\r\n data: T;\r\n};\r\n","import { IBaseAction } from \"../Actions/BaseAction\";\nimport { VoidGapFiltersEnum } from \"../Enums/VoidGapFilters\";\nimport { VoidGapFilterMap } from \"./VoidGapFilterTypes\";\n\nexport type SetVoidGapFiltersActionType = IBaseAction\nexport type SetVoidGapFilterViewActionType = IBaseAction\nexport type VoidGapActionType = \nSetVoidGapFiltersActionType |\nSetVoidGapFilterViewActionType\n\n\nexport const SET_VG_FILTERS = 'SET_VG_FITLERS';\nexport const SET_VG_FILTER_VIEW = 'SET_VG_FILTER_VIEW';\n","import axios from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { message, notification } from \"antd\";\nimport { MyDataAxios } from \"../Contracts/Axios/MyDataAxios\";\nimport { store } from \"../Common/Store\";\nimport * as UserActions from \"../Actions/UserActions\";\n\n/// \nimport * as DashboardMessageLogic from \"../Logic/DashboardMessageLogic\";\nimport {\n ICloudFileDatabasePage,\n ICloudFile,\n ICloudFolder,\n IDashboardMessage,\n IPushpinType,\n ITerritoryType,\n IDatabasePage,\n IMyData,\n IMyDataFilter,\n IMyDataImportResult,\n IPushpin,\n IServiceResult,\n IStore,\n ITerritory,\n IStoreType, ITargetMarketLocation,\n} from \"../Models/Models\";\nimport * as types from \"./Types\";\nimport { ActiveApp } from \"../Enums/Enums\";\nimport * as actions from \"./Actions\";\nimport { IStoreUpdateAuditResult } from \"../Models/IStoreUpdateAuditResult\";\nimport { getStoreColumns } from \"../Components/Apps/My Data/Logic/MyDataLogic\";\nimport { IBadGeocode } from \"../Models/IBadGeocode\";\nimport {ScoutFeature} from \"../Enums/ScoutFeature\";\n\ndeclare let scout;\ndeclare let Common;\n\nexport const myDataLoaded = (loaded: boolean) => ({\n type: types.MY_DATA_LOADED,\n data: loaded,\n});\n\nexport const updateCheckedColumns = (index: number) => ({\n type: types.UPDATE_MY_DATA_COLUMNS,\n data: index,\n});\n\nconst loadMyDataTypesSuccess = (data: {}) => ({\n type: types.LOAD_MY_DATA_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadMyDataTypesFailure = (data: {}) => ({\n type: types.LOAD_MY_DATA_FAILURE,\n data: data,\n});\n\nconst setBadGeocodes = (data: IBadGeocode[]) => ({\n type: types.MY_DATA_LOAD_STORE_SET_BAD_GEOCODES,\n data: data,\n});\n\nexport const clearBadGeocodes: ActionCreator>\n = () => {\n return (dispatch: Dispatch) => {\n dispatch(setBadGeocodes([]));\n };\n };\n\n//This helper function is used to retry a fetchFn a number of times with a delay between each attempt\n//It is used to give the server time to process (5000ms) the data before trying again\nconst fetchWithRetry = async (fetchFn: () => Promise, retries = 2, delay = 1000, timeout = 5000) => {\n for (let i = 0; i < retries; i++) {\n try {\n const result = await Promise.race([\n fetchFn(),\n new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), timeout))\n ]);\n return result;\n } catch (error) {\n if (i < retries - 1) {\n await new Promise(resolve => setTimeout(resolve, delay));\n } else {\n throw error;\n }\n }\n }\n};\n\nexport const loadMyDataTypes: ActionCreator>\n = () => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n const state = store.getState();\n const user = state.user.user;\n const promises = [];\n\n promises.push(myDataAjax.GetStoreTypes());\n promises.push(myDataAjax.GetPushpinTypes());\n promises.push(myDataAjax.GetTerritoryTypes());\n // Only call GetTargetMarkets if the user has that feature; otherwise, push a resolved promise with empty data.\n if (user && UserActions.hasFeature(user, ScoutFeature.TargetMarket)) {\n promises.push(myDataAjax.GetTargetMarkets());\n } else {\n promises.push(Promise.resolve({ data: [] }));\n }\n // promises.push(myDataAjax.GetAreasOfInterestPointTypes());\n // promises.push(myDataAjax.GetAreasOfInterestShapeTypes());\n // promises.push(myDataAjax.GetResultsPointTypes());\n // promises.push(myDataAjax.GetResultsShapeTypes());\n\n axios\n .all(promises)\n // .then(axios.spread((stores, pushpins, territories, aoiPoints, aoiShapes, resultsPoints, resultsShapes) => {\n .then(\n axios.spread((stores, pushpins, territories, targetMarkets) => {\n const data = {\n locations: stores.data,\n pushpins: pushpins.data,\n territories: territories.data,\n targetMarkets: targetMarkets.data,\n // aoiPoints: aoiPoints.data,\n // aoiShapes: aoiShapes.data,\n // resultsPoints: resultsPoints.data,\n // resultsShapes: resultsShapes.data\n };\n dispatch(loadMyDataTypesSuccess(data));\n })\n )\n .catch((error: any) => {\n dispatch(loadMyDataTypesFailure(error));\n });\n };\n };\n\nexport const updateSortOrder = (column) => {\n const columnToSort = store.getState().myData.columnToSort;\n let sortOrder = null;\n\n !columnToSort.sortDirection\n ? (sortOrder = \"DESC\")\n : columnToSort.sortDirection === \"DESC\"\n ? (sortOrder = \"ASC\")\n : columnToSort.sortDirection === \"ASC\"\n ? (sortOrder = null)\n : (sortOrder = null);\n\n const toSort: { sortColumn: string; sortDirection: string | boolean } = {\n sortColumn: column.dataIndex,\n sortDirection: sortOrder,\n };\n\n store.dispatch({ type: types.UPDATE_SORT_DIRECTION, data: toSort });\n};\n\nexport const resetSortData = () => ({\n type: types.RESET_SORT_DIRECTION,\n});\n\nexport const typesChanged = () => ({\n type: types.MY_DATA_TYPES_CHANGED,\n});\n\nconst updateCloudFileSortOrder = (column) => {\n const columnToSort = store.getState().myData.columnToSort;\n let sortOrder = null;\n\n //clicked on same column as previously sorted column so update sort direction accordingly\n if (columnToSort.sortColumn === column.dataIndex) {\n !columnToSort.sortDirection\n ? (sortOrder = \"DESC\")\n : columnToSort.sortDirection === \"DESC\"\n ? (sortOrder = \"ASC\")\n : columnToSort.sortDirection === \"ASC\"\n ? (sortOrder = null)\n : (sortOrder = null);\n } else {\n sortOrder = \"DESC\";\n }\n\n const toSort: { sortColumn: string; sortDirection: string | boolean } = {\n sortColumn: sortOrder === null ? null : column.dataIndex,\n sortDirection: sortOrder,\n };\n\n store.dispatch({ type: types.UPDATE_SORT_DIRECTION, data: toSort });\n};\n\nconst loadPushpinTypesSuccess = (data: IPushpinType) => ({\n type: types.MY_DATA_LOAD_PUSHPIN_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadPushpinTypesFailure = (error) => ({\n type: types.MY_DATA_LOAD_PUSHPIN_TYPES_FAILURE,\n data: error,\n});\n\nconst loadStoreTypesSuccess = (data: IStoreType) => ({\n type: types.MY_DATA_LOAD_STORE_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadStoreTypesFailure = (error) => ({\n type: types.MY_DATA_LOAD_STORE_TYPES_FAILURE,\n data: error,\n});\n\nconst loadTerritoryTypesSuccess = (data: ITerritoryType) => ({\n type: types.MY_DATA_LOAD_TERRITORY_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadTerritoryTypesFailure = (error) => ({\n type: types.MY_DATA_LOAD_TERRITORY_TYPES_FAILURE,\n data: error,\n});\n\nconst setActiveType = (key: string) => ({\n type: types.MY_DATA_SET_ACTIVE_TYPE,\n data: key,\n});\n\nconst setBreadcrumbs = (data: Array) => ({\n type: types.MY_DATA_SET_BREADCRUMBS,\n data: data,\n});\n\nexport const updateBreadcrumbs: ActionCreator>\n = (area: string, name: string) => {\n return (dispatch: Dispatch) => {\n if (area.includes(\"Areas of Interest\") || area.includes(\"Results\")) {\n const newArea = area.split(\"/\");\n newArea.push(name);\n\n dispatch(setBreadcrumbs(newArea));\n } else {\n dispatch(setBreadcrumbs([area, name]));\n }\n };\n };\n\nconst importSuccessNotification = (\n dispatch: Dispatch,\n type: string,\n importedType\n): void => {\n if (store.getState().loadScout.scoutIsLoaded) {\n const message: IDashboardMessage = {\n targetElement: \"dashboardMessageReceiverMyData\",\n message: {\n text: \"REFRESH_DATA\",\n data: null,\n },\n };\n\n DashboardMessageLogic.sendDashBoardMessage(message);\n }\n\n if (!importedType.id && importedType.typeID) {\n importedType.id = importedType.typeID;\n }\n if (!importedType.label && importedType.name) {\n importedType.label = importedType.name;\n }\n if (!importedType.fullPath && importedType.iconName) {\n importedType.fullPath = importedType.iconName;\n }\n\n const typeData = {\n area: type,\n filters: [],\n type: {\n id: importedType.id,\n label: importedType.label,\n fullPath: importedType.fullPath,\n },\n rowStart: 0,\n rowEnd: 25,\n sortColumn: null,\n sortDirection: null,\n };\n\n message.destroy();\n notification[\"success\"]({\n message: \"Import Completed\",\n description: \"Your data has finished processing. Click here to view.\",\n onClick: () => {\n dispatch(setLoading(true));\n notification.destroy();\n\n if (store.getState().loadScout.activeApp !== ActiveApp.MY_DATA) {\n dispatch(actions.setActiveApp(ActiveApp.MY_DATA));\n $(\"#experimental-scout\").hide();\n //this.props.closeLeftNav(ActiveApp.MY_DATA);\n dispatch(actions.setScoutIsShowing(false));\n\n window.location.hash = \"/data/\";\n }\n\n //wait for My Data to load before switching to imported type\n const loadImportedType = setInterval(() => {\n if (store.getState().myData.myDataLoaded) {\n if (\n type === \"Pushpins\"\n || type === \"Territories\"\n || type === \"Locations\"\n ) {\n const typeArray = store.getState().myData.types[type.toLowerCase()];\n\n for (const i in typeArray) {\n if (typeArray[i].typeID === importedType.typeID) {\n let key: string;\n\n switch (type) {\n case \"Pushpins\":\n key = \"3\" + i;\n break;\n case \"Territories\":\n key = \"2\" + i;\n break;\n case \"Locations\":\n key = \"4\" + i;\n break;\n default:\n key = i;\n break;\n }\n dispatch(setActiveType(key));\n break;\n }\n }\n }\n\n const name: string\n = type === \"Pushpins\" ? importedType.label : importedType.name;\n\n if (type === \"Results/Points\" || type === \"Results/Geographies\") {\n const parentPath = importedType.parentDirectoryFullPath.split(\"/\");\n parentPath.splice(0, 4, type);\n parentPath.pop();\n dispatch(updateBreadcrumbs(parentPath.join(\"/\"), name));\n } else if (\n type === \"Areas of Interest/Points\"\n || type === \"Areas of Interest/Geographies\"\n ) {\n const parentPath = importedType.parentDirectoryFullPath.split(\"/\");\n parentPath.splice(0, 5, type);\n parentPath.pop();\n dispatch(updateBreadcrumbs(parentPath.join(\"/\"), name));\n } else {\n dispatch(updateBreadcrumbs(type, name));\n }\n\n dispatch(loadTypeData(typeData));\n clearInterval(loadImportedType);\n }\n }, 500);\n },\n duration: 0,\n style: { cursor: \"pointer\" },\n });\n};\n\nconst importFailureNotification = (errorMessage: string): void => {\n message.destroy();\n notification[\"error\"]({\n message: \"Import Has Errors\",\n description:\n errorMessage && errorMessage.trim() !== \"\"\n ? errorMessage\n : \"Your import has errors. Please try again.\",\n onClick: () => {\n notification.destroy();\n },\n duration: 0,\n style: { cursor: \"pointer\" },\n });\n};\n\nexport const submitImport: ActionCreator> = (\n data,\n url\n) => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n const promise = myDataAjax.SubmitImport(data, url);\n\n const dataType = data.dataType;\n\n if (dataType === \"pushpin\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n //dispatch(submitImportGeocodeSuccess(response.data));\n\n importSuccessNotification(\n dispatch,\n \"Pushpins\",\n response.data.importedType\n );\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetPushpinTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadPushpinTypesSuccess(response.data));\n\n //Refresh types in SCOUT\n scout.context.getCurrentUser();\n })\n .catch((error: any) => {\n dispatch(loadPushpinTypesFailure(error));\n });\n } else {\n //dispatch(submitImportFailure(response.data));\n importFailureNotification(response.messages.join(\", \"));\n }\n })\n .catch((error: Error) => {\n //dispatch(submitImportFailure(error));\n importFailureNotification(error.message);\n });\n } else if (dataType === \"store\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n importSuccessNotification(\n dispatch,\n \"Locations\",\n response.data.importedType\n );\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetStoreTypes();\n\n const badGeocodes = response.data.needsGeocodeAttention;\n dispatch(setBadGeocodes(badGeocodes));\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadStoreTypesSuccess(response.data));\n\n //Refresh types in SCOUT\n scout.context.getCurrentUser();\n })\n .catch((error: any) => {\n dispatch(loadStoreTypesFailure(error));\n });\n } else {\n importFailureNotification(response.messages.join(\", \"));\n }\n })\n .catch((error: Error) => {\n importFailureNotification(error.message);\n });\n } else if (dataType === \"territory\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n //dispatch(submitImportSuccess(response.data));\n importSuccessNotification(\n dispatch,\n \"Territories\",\n response.data.importedType\n );\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetTerritoryTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadTerritoryTypesSuccess(response.data));\n\n //Refresh types in SCOUT\n scout.context.getCurrentUser();\n })\n .catch((error: any) => {\n dispatch(loadTerritoryTypesFailure(error));\n });\n } else {\n //dispatch(submitImportFailure(response.data));\n importFailureNotification(response.messages.join(\", \"));\n }\n })\n .catch((error: Error) => {\n //dispatch(submitImportFailure(error));\n importFailureNotification(error.message);\n });\n } else if (dataType === \"aoiPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n //dispatch(submitImportSuccess(response.data));\n importSuccessNotification(\n dispatch,\n \"Areas of Interest/Points\",\n response.data.importedType\n );\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIPointsSuccess(response.data));\n\n //Refresh type in SCOUT\n scout.context.updatePointAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIPointsFailure(error));\n });\n } else {\n //dispatch(submitImportFailure(response.data));\n importFailureNotification(response.messages.join(\", \"));\n }\n })\n .catch((error: Error) => {\n //dispatch(submitImportFailure(error));\n importFailureNotification(error.message);\n });\n } else if (dataType === \"resultsPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n //dispatch(submitImportSuccess(response.data));\n importSuccessNotification(\n dispatch,\n \"Results/Points\",\n response.data.importedType\n );\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsPointsSuccess(response.data));\n\n //Refresh type in SCOUT\n scout.context.updatePointResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsPointsFailure(error));\n });\n } else {\n //dispatch(submitImportFailure(response.data));\n importFailureNotification(response.messages.join(\", \"));\n }\n })\n .catch((error: Error) => {\n //dispatch(submitImportFailure(error));\n importFailureNotification(error.message);\n });\n } else if (dataType === \"aoiShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n //dispatch(submitImportSuccess(response.data));\n importSuccessNotification(\n dispatch,\n \"Areas of Interest/Geographies\",\n response.data.importedType\n );\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIShapesSuccess(response.data));\n\n //Refresh type in SCOUT\n scout.context.updateShapeAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIShapesFailure(error));\n });\n } else {\n //dispatch(submitImportFailure(response.data));\n importFailureNotification(response.messages.join(\", \"));\n }\n })\n .catch((error: Error) => {\n //dispatch(submitImportFailure(error));\n importFailureNotification(error.message);\n });\n } else if (dataType === \"resultsShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n //dispatch(submitImportSuccess(response.data));\n importSuccessNotification(\n dispatch,\n \"Results/Geographies\",\n response.data.importedType\n );\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsShapesSuccess(response.data));\n\n //Refresh type\n scout.context.updateShapeResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsShapesFailure(error));\n });\n } else {\n //dispatch(submitImportFailure(response.data));\n importFailureNotification(response.messages.join(\", \"));\n }\n })\n .catch((error: Error) => {\n //dispatch(submitImportFailure(error));\n importFailureNotification(error.message);\n });\n }\n };\n};\n\nexport const submitAudit: ActionCreator> = (\n data,\n url,\n callback: (response: IServiceResult) => void\n) => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n const promise = myDataAjax.SubmitAudit(data, url);\n\n promise\n .then((response: IServiceResult) => {\n callback(response);\n dispatch(loadStoreFileAuditSuccess(response.data));\n })\n .catch((error: Error) => {\n importFailureNotification(error.message);\n dispatch(loadStoreFileAuditFail(error.message));\n });\n };\n};\n\nconst loadMyDataCloudTypesSuccess = (data: {}) => ({\n type: types.LOAD_MY_DATA_CLOUD_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadMyDataCloudTypesFailure = (data: {}) => ({\n type: types.LOAD_MY_DATA_CLOUD_TYPES_FAILURE,\n data: data,\n});\n\nexport const resetAddCloudFolderMessage = () => ({\n type: types.MY_DATA_RESET_ADD_CLOUD_FOLDER_MESSAGE,\n});\n\nconst addCloudFolderSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_ADD_CLOUD_FOLDER_SUCCESS,\n data: data,\n});\n\nconst addCloudFolderFailure = (error) => ({\n type: types.MY_DATA_ADD_CLOUD_FOLDER_FAILURE,\n data: error,\n});\n\nconst loadResultsPointsSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_LOAD_RESULTS_POINTS_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadResultsPointsFailure = (error) => ({\n type: types.MY_DATA_LOAD_RESULTS_POINTS_TYPES_FAILURE,\n data: error,\n});\n\nconst loadResultsShapesSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_LOAD_RESULTS_SHAPES_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadResultsShapesFailure = (error) => ({\n type: types.MY_DATA_LOAD_RESULTS_SHAPES_TYPES_FAILURE,\n data: error,\n});\n\nconst loadAOIPointsSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_LOAD_AOI_POINTS_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadAOIPointsFailure = (error) => ({\n type: types.MY_DATA_LOAD_AOI_POINTS_TYPES_FAILURE,\n data: error,\n});\n\nconst loadAOIShapesSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_LOAD_AOI_SHAPES_TYPES_SUCCESS,\n data: data,\n});\n\nconst loadAOIShapesFailure = (error) => ({\n type: types.MY_DATA_LOAD_AOI_SHAPES_TYPES_FAILURE,\n data: error,\n});\n\nconst loadTargetMarketLocationsSuccess = (data: any) => ({\n type: types.MY_DATA_LOAD_TARGET_MARKET_LOCATIONS_SUCCESS,\n data: data,\n});\n\nconst loadTargetMarketLocationsFailure = (error) => ({\n type: types.MY_DATA_LOAD_TARGET_MARKET_LOCATIONS_FAILURE,\n data: error,\n});\n\nexport const buildCurrentCloudTypeDict = (dataType: string) => ({\n type: types.MY_DATA_BUILD_CURRENT_CLOUD_TYPE_DICT,\n data: dataType,\n});\n\nexport const loadStoreFileAuditSuccess = (\n dataType: IStoreUpdateAuditResult\n) => ({\n type: types.MY_DATA_LOAD_STORE_FILE_AUDIT_SUCCESS,\n data: dataType,\n});\n\nexport const loadStoreFileAuditFail = (error: string) => ({\n type: types.MY_DATA_LOAD_STORE_FILE_AUDIT_FAIL,\n data: error,\n});\n\nexport const addCloudFolder: ActionCreator> = (\n data\n) => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n const promise = myDataAjax.AddCloudFolder(data);\n\n const dataType = data.dataType;\n const fullPath = data.parentFullPath;\n\n if (dataType === \"resultsPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(addCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsPointsFailure(error));\n });\n } else {\n dispatch(addCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(addCloudFolderFailure(error));\n });\n } else if (dataType === \"resultsShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(addCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updateShapeResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsShapesFailure(error));\n });\n } else {\n dispatch(addCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(addCloudFolderFailure(error));\n });\n } else if (dataType === \"aoiPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(addCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIPointsFailure(error));\n });\n } else {\n dispatch(addCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(addCloudFolderFailure(error));\n });\n } else if (dataType === \"aoiShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(addCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updateShapeAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIShapesFailure(error));\n });\n } else {\n dispatch(addCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(addCloudFolderFailure(error));\n });\n }\n };\n};\n\nexport const setCurrentCloudFolder = (folderFullPath: string) => ({\n type: types.MY_DATA_SET_CURRENT_CLOUD_FOLDER,\n data: folderFullPath,\n});\n\nconst deleteCloudFolderSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_DELETE_CLOUD_FOLDER_SUCCESS,\n data: data,\n});\n\nconst deleteCloudFolderFailure = (error) => ({\n type: types.MY_DATA_DELETE_CLOUD_FOLDER_FAILURE,\n data: error,\n});\n\nexport const deleteCloudFolder: ActionCreator>\n = (data) => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n const promise = myDataAjax.DeleteCloudFolder(data);\n\n const dataType = data.dataType;\n const fullPath = data.parent;\n\n if (dataType === \"resultsPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsPointsFailure(error));\n });\n } else {\n dispatch(deleteCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFolderFailure(error));\n });\n } else if (dataType === \"resultsShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updateShapeResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsShapesFailure(error));\n });\n } else {\n dispatch(deleteCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFolderFailure(error));\n });\n } else if (dataType === \"aoiPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIPointsFailure(error));\n });\n } else {\n dispatch(deleteCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFolderFailure(error));\n });\n } else if (dataType === \"aoiShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteCloudFolderSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updateShapeAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIShapesFailure(error));\n });\n } else {\n dispatch(deleteCloudFolderFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFolderFailure(error));\n });\n }\n };\n };\n\nexport const updateCloudFileLoading = () => ({\n type: types.MY_DATA_UPDATE_CLOUD_FILE_LOADING,\n});\n\nexport const resetUpdateCloudFileMessage = () => ({\n type: types.MY_DATA_RESET_UPDATE_CLOUD_FILE_MESSAGE,\n});\n\nconst updateCloudFileSuccess = (data: ICloudFile) => ({\n type: types.MY_DATA_UPDATE_CLOUD_FILE_SUCCESS,\n data: data,\n});\n\nconst updateCloudFileFailure = (error) => ({\n type: types.MY_DATA_UPDATE_CLOUD_FILE_FAILURE,\n data: error,\n});\n\nexport const updateCloudFile: ActionCreator> = (\n data\n) => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n const promise = myDataAjax.UpdateCloudFile(data);\n\n const dataType = data.dataType;\n const fullPath = data.parent;\n\n if (dataType === \"resultsPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(updateCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsPointsFailure(error));\n });\n } else {\n dispatch(updateCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(updateCloudFileFailure(error));\n });\n } else if (dataType === \"resultsShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(updateCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.getShapeResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsShapesFailure(error));\n });\n } else {\n dispatch(updateCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(updateCloudFileFailure(error));\n });\n } else if (dataType === \"aoiPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(updateCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIPointsFailure(error));\n });\n } else {\n dispatch(updateCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(updateCloudFileFailure(error));\n });\n } else if (dataType === \"aoiShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(updateCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updateShapeAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIShapesFailure(error));\n });\n } else {\n dispatch(updateCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(updateCloudFileFailure(error));\n });\n }\n };\n};\n\nconst deleteResultsPointsCloudFileSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_RESULTS_POINTS_DELETE_CLOUD_FILE_SUCCESS,\n data: data,\n});\n\nconst deleteResultsShapesCloudFileSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_RESULTS_SHAPES_DELETE_CLOUD_FILE_SUCCESS,\n data: data,\n});\n\nconst deleteAOIPointsCloudFileSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_AOI_POINTS_DELETE_CLOUD_FILE_SUCCESS,\n data: data,\n});\n\nconst deleteAOIShapesCloudFileSuccess = (data: ICloudFolder) => ({\n type: types.MY_DATA_AOI_SHAPES_DELETE_CLOUD_FILE_SUCCESS,\n data: data,\n});\n\nconst deleteCloudFileFailure = (error) => ({\n type: types.MY_DATA_DELETE_CLOUD_FILE_FAILURE,\n data: error,\n});\n\nexport const deleteCloudFile: ActionCreator> = (\n data\n) => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n const promise = myDataAjax.DeleteCloudFile(data);\n\n const dataType = data.dataType;\n const fullPath = data.parent;\n\n if (dataType === \"resultsPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteResultsPointsCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsPointsFailure(error));\n });\n } else {\n dispatch(deleteCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFileFailure(error));\n });\n } else if (dataType === \"resultsShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteResultsShapesCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetResultsShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadResultsShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.getShapeResults();\n })\n .catch((error: any) => {\n dispatch(loadResultsShapesFailure(error));\n });\n } else {\n dispatch(deleteCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFileFailure(error));\n });\n } else if (dataType === \"aoiPoint\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteAOIPointsCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestPointTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIPointsSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updatePointAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIPointsFailure(error));\n });\n } else {\n dispatch(deleteCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFileFailure(error));\n });\n } else if (dataType === \"aoiShape\") {\n promise\n .then((response: IServiceResult) => {\n if (response.result) {\n dispatch(deleteAOIShapesCloudFileSuccess(response.data));\n\n const myDataAjax = new MyDataAxios();\n const promises = myDataAjax.GetAreasOfInterestShapeTypes();\n\n promises\n .then((response: IServiceResult) => {\n dispatch(loadAOIShapesSuccess(response.data));\n dispatch(setCurrentCloudFolder(fullPath));\n\n //Refresh type in SCOUT\n scout.context.updateShapeAreasOfInterestUserFolder();\n })\n .catch((error: any) => {\n dispatch(loadAOIShapesFailure(error));\n });\n } else {\n dispatch(deleteCloudFileFailure(response.messages[0]));\n }\n })\n .catch((error: any) => {\n dispatch(deleteCloudFileFailure(error));\n });\n }\n };\n};\n\nconst loadMyDataDataSuccess = (data: IMyData) => ({\n type: types.LOAD_MY_DATA_DATA_SUCCESS,\n data: data,\n});\n\nconst loadMyDataDataFailure = (data: IMyData) => ({\n type: types.LOAD_MY_DATA_FAILURE,\n data: data,\n});\n\nconst loadMyDataOtherSuccess = (data: IMyData) => ({\n type: types.LOAD_MY_DATA_OTHER_SUCCESS,\n data: data,\n});\n\nexport const setCurrentPage = (currentPage: number) => ({\n type: types.MY_DATA_SET_CURRENT_PAGE,\n data: currentPage,\n});\n\nexport const setPageSize = (currentPageSize: number) => ({\n type: types.MY_DATA_SET_PAGE_SIZE,\n data: currentPageSize,\n});\n\nexport const loadTypeData: ActionCreator> = (\n data\n) => {\n return (dispatch: Dispatch) => {\n const myDataAjax = new MyDataAxios();\n let promise = null;\n\n switch (data.area) {\n case \"Locations\":\n promise = fetchWithRetry(() => myDataAjax.GetStoreData(data));\n\n promise\n .then((response: IServiceResult>) => {\n response.data.data.map((mappedObject, index) => {\n mappedObject.key = index;\n mappedObject.typeID = data.type.id;\n });\n\n const activeData = [];\n response.data.data.map((mappedObject) => {\n activeData.push(mappedObject);\n });\n\n const companyType = store.getState().user.user.company.companyType;\n\n data = {\n dataSize: response.data.maxRows,\n activeArea: data.area,\n activeType: data.type,\n activeData: activeData,\n activeColumns: getStoreColumns(activeData, companyType),\n };\n dispatch(loadMyDataDataSuccess(data));\n })\n .catch((error: any) => {\n //This custom error message is for when the request times out for a large data set from the initial load\n if (error.message === \"Timeout\") {\n error.message = \"Please select an item in the left nav.\";\n }\n dispatch(loadMyDataDataFailure(error));\n });\n\n break;\n case \"Pushpins\":\n promise = fetchWithRetry(() => myDataAjax.GetPushpinData(data));\n\n promise\n .then((response: IServiceResult>) => {\n response.data.data.map((mappedObject, index) => {\n mappedObject.key = index;\n mappedObject.typeID = data.type.typeID;\n });\n\n const activeData = [];\n response.data.data.map((mappedObject) => {\n activeData.push(mappedObject);\n });\n\n data = {\n dataSize: response.data.maxRows,\n activeArea: data.area,\n activeType: data.type,\n activeData: activeData,\n //activeColumns: pushpinColumns\n };\n dispatch(loadMyDataDataSuccess(data));\n })\n .catch((error: any) => {\n dispatch(loadMyDataDataFailure(error));\n });\n\n break;\n case \"Territories\":\n promise = fetchWithRetry(() => myDataAjax.GetTerritoryData(data));\n\n promise\n .then((response: IServiceResult>) => {\n response.data.data.map((mappedObject, index) => {\n mappedObject.key = index;\n mappedObject.typeID = data.type.typeID;\n });\n\n const activeData = [];\n response.data.data.map((mappedObject) => {\n activeData.push(mappedObject);\n });\n\n data = {\n dataSize: response.data.maxRows,\n activeArea: data.area,\n activeType: data.type,\n activeData: activeData,\n //activeColumns: territoryColumns\n };\n dispatch(loadMyDataDataSuccess(data));\n })\n .catch((error: any) => {\n dispatch(loadMyDataDataFailure(error));\n });\n break;\n case \"Results/Points\":\n promise = fetchWithRetry(() => myDataAjax.GetResultsPointData(data));\n\n promise\n .then(\n (\n response: IServiceResult<\n ICloudFileDatabasePage<{ [key: string]: string }>\n >\n ) => {\n successOtherLoad(data, response, dispatch);\n }\n )\n .catch((error: any) => {\n dispatch(loadMyDataDataFailure(error));\n });\n\n break;\n case \"Results/Geographies\":\n promise = fetchWithRetry(() => myDataAjax.GetResultsShapeData(data));\n\n promise\n .then(\n (\n response: IServiceResult<\n ICloudFileDatabasePage<{ [key: string]: string }>\n >\n ) => {\n successOtherLoad(data, response, dispatch);\n }\n )\n .catch((error: any) => {\n dispatch(loadMyDataDataFailure(error));\n });\n\n break;\n case \"Areas of Interest/Points\":\n promise = fetchWithRetry(() => myDataAjax.GetAreasOfInterestPointData(data));\n\n promise\n .then(\n (\n response: IServiceResult<\n ICloudFileDatabasePage<{ [key: string]: string }>\n >\n ) => {\n successOtherLoad(data, response, dispatch);\n }\n )\n .catch((error: any) => {\n dispatch(loadMyDataDataFailure(error));\n });\n\n break;\n case \"Areas of Interest/Geographies\":\n promise = fetchWithRetry(() => myDataAjax.GetAreasOfInterestShapeData(data));\n\n promise\n .then(\n (\n response: IServiceResult<\n ICloudFileDatabasePage<{ [key: string]: string }>\n >\n ) => {\n successOtherLoad(data, response, dispatch);\n }\n )\n .catch((error: any) => {\n dispatch(loadMyDataDataFailure(error));\n });\n\n break;\n case \"Target Markets\":\n promise = fetchWithRetry(() => myDataAjax.GetTargetMarketData(data));\n\n promise\n .then((response: IServiceResult>) => {\n response.data.data.map((mappedObject, index) => {\n mappedObject.key = index;\n });\n\n const activeData = [];\n response.data.data.map((mappedObject) => {\n activeData.push(mappedObject);\n });\n\n data = {\n dataSize: response.data.maxRows,\n activeArea: data.area,\n activeType: data.type,\n activeData: activeData,\n };\n dispatch(loadMyDataDataSuccess(data));\n })\n .catch((error: any) => {\n dispatch(loadMyDataDataFailure(error));\n });\n break;\n }\n };\n};\n\nconst successOtherLoad = (\n data,\n response: IServiceResult>,\n dispatch: Dispatch\n) => {\n // Adjust data keys to match column dataIndex values\n response.data.pagedData.data = response.data.pagedData.data.map((mappedObject, index) => {\n mappedObject.key = index;\n mappedObject.fullPath = data.type.fullPath;\n // Convert keys to match dataIndex values in columns\n const adjustedObject = {};\n Object.keys(mappedObject).forEach((key) => {\n adjustedObject[key.toLowerCase()] = mappedObject[key];\n });\n return adjustedObject;\n });\n\n const activeData = [];\n response.data.pagedData.data.map((mappedObject) => {\n activeData.push(mappedObject);\n });\n\n // Add header cell click event for sort and lower case dataIndex so data matches up with column\n response.data.columns.map((mappedObject) => {\n mappedObject.onHeaderCell = _headerCell;\n });\n\n // Filter out duplicate columns\n const columnObj = {};\n const filteredColumns = response.data.columns.filter((item) => {\n const dataIndex = item.dataIndex;\n if (columnObj[dataIndex]) {\n return false;\n } else {\n columnObj[dataIndex] = item;\n return true;\n }\n });\n\n data = {\n dataSize: response.data.pagedData.maxRows,\n activeArea: data.area,\n activeType: data.type,\n activeData: activeData,\n activeColumns: filteredColumns,\n };\n\n dispatch(loadMyDataOtherSuccess(data));\n};\n\n\nconst _headerCell = (column) => {\n return {\n onClick: () => {\n updateCloudFileSortOrder(column);\n },\n };\n};\n\nexport const removeAllFilters = () => ({\n type: types.MY_DATA_REMOVE_ALL_FILTERS,\n});\n\nexport const removeFilter = (filter: IMyDataFilter) => ({\n type: types.MY_DATA_REMOVE_FILTER,\n data: filter,\n});\n\nexport const updateFilters = (filter: IMyDataFilter) => ({\n type: types.UPDATE_MY_DATA_FILTERS,\n data: filter,\n});\n\nexport const updateCollaborateTerritories = (bool: boolean) => ({\n type: types.UPDATE_MY_DATA_TERRITORY_COLLABORATE,\n data: bool,\n});\n\nexport const updateCollaboratePushpins = (bool: boolean) => ({\n type: types.UPDATE_MY_DATA_PUSHPIN_COLLABORATE,\n data: bool,\n});\n\nexport const setLoading = (bool: boolean) => ({\n type: types.SET_MY_DATA_LOADING,\n data: bool,\n});\n\nexport const exportAll: ActionCreator> = (\n data\n) => {\n return (dispatch: Dispatch) => {\n let baseUrl = \"\";\n\n const args = {\n dataType: data.dataType,\n fileType: data.fileType,\n sortColumn: data.sortColumn,\n sortDirection: data.sortDirection,\n filters: null,\n typeId: null,\n fullPath: null,\n collaborate: data.collaborate,\n rowIds: null,\n userId: null,\n developerId: null, // For Target Market, we need to send developerId, not userId.\n };\n\n switch (data.dataType) {\n case \"Locations\":\n baseUrl = \"/DataForge/Stores/Export\";\n args.typeId = data.type.id;\n break;\n case \"Pushpins\":\n baseUrl = \"/DataForge/Pushpins/Export\";\n args.typeId = data.type.typeID;\n args.collaborate = !!data.collaborate;\n break;\n case \"Territories\":\n baseUrl = \"/DataForge/Territories/Export\";\n args.typeId = data.type.typeID;\n args.collaborate = !!data.collaborate;\n break;\n case \"Areas of Interest/Points\":\n baseUrl = \"/DataForge/AreasOfInterest/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Areas of Interest/Geographies\":\n baseUrl = \"/DataForge/AreasOfInterest/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Results/Points\":\n baseUrl = \"/DataForge/Results/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Results/Geographies\":\n baseUrl = \"/DataForge/Results/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Target Markets\":\n baseUrl = \"/DataForge/TargetMarket/Export\";\n args.typeId = data.type.typeId;\n args.developerId = data.type.developerId;\n\n // If no sort has been set, seed with default values.\n if (!args.sortColumn && !args.sortDirection) {\n args.sortColumn = \"locationName\";\n args.sortDirection = \"ASC\";\n }\n break;\n default:\n return;\n }\n\n const success = () => {\n console.log(\"Successfully Exported All Rows\");\n };\n\n const error = () => {\n console.log(\"Error Exporting All Rows\");\n };\n\n axios.post(baseUrl, args, { responseType: 'blob' })\n .then((response) => {\n const blob = new Blob([response.data], { type: response.headers['content-type'] });\n saveAs(blob, `exportedFile.${data.fileType}`);\n success();\n })\n .catch((err) => {\n error();\n });\n };\n};\n\nexport const exportSelectedRows: ActionCreator<\n ThunkAction\n> = (data) => {\n return (dispatch: Dispatch) => {\n let baseUrl = \"\";\n\n const args = {\n dataType: data.dataType,\n fileType: data.fileType,\n sortColumn: data.sortColumn,\n sortDirection: data.sortDirection,\n filters: null,\n typeID: null,\n fullPath: null,\n collaborate: data.collaborate,\n rowIDs: \"\",\n userId: null,\n developerId: null, // For Target Market, we need to send developerId, not userId.\n };\n\n switch (data.dataType) {\n case \"Locations\":\n baseUrl = \"/DataForge/Stores/Export\";\n args.typeID = data.type.id;\n\n for (let i = 0; i < data.selectedRows.length; i++) {\n if (i === data.selectedRows.length - 1) {\n args.rowIDs += data.selectedRows[i].id;\n } else {\n args.rowIDs += data.selectedRows[i].id + \",\";\n }\n }\n break;\n case \"Pushpins\":\n baseUrl = \"/DataForge/Pushpins/Export\";\n args.typeID = data.type.typeID;\n args.collaborate = !!data.collaborate;\n\n for (let i = 0; i < data.selectedRows.length; i++) {\n if (i === data.selectedRows.length - 1) {\n args.rowIDs += data.selectedRows[i].id;\n } else {\n args.rowIDs += data.selectedRows[i].id + \",\";\n }\n }\n break;\n case \"Territories\":\n baseUrl = \"/DataForge/Territories/Export\";\n args.typeID = data.type.typeID;\n args.collaborate = !!data.collaborate;\n\n for (let i = 0; i < data.selectedRows.length; i++) {\n if (i === data.selectedRows.length - 1) {\n args.rowIDs += data.selectedRows[i].id;\n } else {\n args.rowIDs += data.selectedRows[i].id + \",\";\n }\n }\n break;\n case \"Areas of Interest/Points\":\n baseUrl = \"/DataForge/AreasOfInterest/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Areas of Interest/Geographies\":\n baseUrl = \"/DataForge/AreasOfInterest/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Results/Points\":\n baseUrl = \"/DataForge/Results/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Results/Geographies\":\n baseUrl = \"/DataForge/Results/Export\";\n args.fullPath = data.type.fullPath;\n break;\n case \"Target Markets\":\n baseUrl = \"/DataForge/TargetMarket/Export\";\n args.typeID = data.type.typeId;\n args.developerId = data.type.developerId;\n\n // If no sort has been set, seed with default values.\n if (!args.sortColumn && !args.sortDirection) {\n args.sortColumn = \"locationName\";\n args.sortDirection = \"ASC\";\n }\n\n for (let i = 0; i < data.selectedRows.length; i++) {\n if (i === data.selectedRows.length - 1) {\n args.rowIDs += data.selectedRows[i].locationId;\n } else {\n args.rowIDs += data.selectedRows[i].locationId + \",\";\n }\n }\n break;\n default:\n return;\n }\n\n const success = () => {\n console.log(\"Successfully Exported Selected Rows\");\n };\n\n const error = () => {\n console.log(\"Error Exporting Selected Rows\");\n };\n\n axios.post(baseUrl, args, { responseType: 'blob' })\n .then((response) => {\n const blob = new Blob([response.data], { type: response.headers['content-type'] });\n saveAs(blob, `exportedFile.${data.fileType}`);\n success();\n })\n .catch((err) => {\n error();\n });\n };\n};\n","import axios from \"axios\";\nimport {\n ICloudFileDatabasePage,\n ICloudFolder,\n IMyDataImportResult,\n IPushpin,\n IPushpinType,\n IServiceResult,\n IStore,\n IStoreType,\n ITerritory,\n ITerritoryType,\n ICloudFile, ITargetMarketDeveloperType, ITargetMarketLocation,\n} from \"../../Models/Models\";\nimport { IMyDataAxios } from \"../index\";\nimport { IStoreUpdateAuditResult } from \"../../Models/IStoreUpdateAuditResult\";\n\nexport class MyDataAxios implements IMyDataAxios {\n /*******Cloud Icons*******/\n public GetCloudIcons(url): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios.get>(url).then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n /*******IMPORT*******/\n public SubmitImport(data, url): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios.post>(url, data).then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n public SubmitAudit(\n data,\n url\n ): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios.post>(url, data).then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n\n public DeleteCloudFolder(data): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .post>(data.url, {\n fullPath: data.fullPath,\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n public AddCloudFolder(data): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .post>(data.url, {\n parentFullPath: data.parentFullPath,\n name: data.name,\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n public UpdateCloudFile(data): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .post>(data.url, data.file)\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n public DeleteCloudFile(data): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .post>(data.url, {\n fullPath: data.fullPath,\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n /*******STORES*******/\n //StoreTypes\n public GetStoreTypes(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\"/DataForge/Stores/Types\", {})\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n //StoreData\n public GetStoreData(data): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\"/DataForge/Stores/Data\", {\n storeTypeId: data.type.id,\n filters: data.filters,\n rowStart: data.rowStart,\n rowEnd: data.rowEnd,\n sortColumn: data.sortColumn !== \"\" ? data.sortColumn : \"\",\n sortDirection: data.sortDirection !== \"\" ? data.sortDirection : \"\",\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n /*******PUSHPINS*******/\n //PushpinTypes\n public GetPushpinTypes(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\"/DataForge/Pushpins/Types\", {})\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n //PushpinData\n public GetPushpinData(data): Promise> {\n const promise = new Promise>((resolve, reject) => {\n if (!data.type.typeID && data.type.id) {\n data.type.typeID = data.type.id;\n }\n axios\n .post>(\"/DataForge/Pushpins/Data\", {\n pushpinTypeID: data.type.typeID,\n filters: data.filters,\n rowStart: data.rowStart,\n rowEnd: data.rowEnd,\n collaborate: data.collaborate,\n sortColumn: data.sortColumn !== \"\" ? data.sortColumn : \"\",\n sortDirection: data.sortDirection !== \"\" ? data.sortDirection : \"\",\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n /*******TERRITORIES*******/\n //TerritoryTypes\n public GetTerritoryTypes(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\n \"/DataForge/Territories/Types\",\n {}\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n //TerritoryData\n public GetTerritoryData(data): Promise> {\n //Sometimes the ID comes down as typeID, sometimes as id. I don't freakin know.\n if (!data.type.typeID && data.type.id) {\n data.type.typeID = data.type.id;\n }\n\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .post>(\"/DataForge/Territories/Data\", {\n territoryTypeID: data.type.typeID,\n filters: data.filters,\n rowStart: data.rowStart,\n rowEnd: data.rowEnd,\n collaborate: data.collaborate,\n sortColumn: data.sortColumn !== \"\" ? data.sortColumn : \"\",\n sortDirection: data.sortDirection !== \"\" ? data.sortDirection : \"\",\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n /*******AREAS OF INTEREST*******/\n //AreasOfInterestPointTypes\n public GetAreasOfInterestPointTypes(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\n \"/DataForge/AreasOfInterest/Points\",\n {}\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n //AreasOfInterestPointData\n public GetAreasOfInterestPointData(\n data\n ): Promise<\n IServiceResult>\n > {\n const promise = new Promise<\n IServiceResult>\n >((resolve, reject) => {\n axios\n .post<\n IServiceResult>\n >(\"/DataForge/AreasOfInterest/PointData\", {\n fullPath: data.type.fullPath,\n filters: data.filters,\n rowStart: data.rowStart,\n rowEnd: data.rowEnd,\n sortColumn:\n data.sortColumn !== \"\"\n ? data.sortColumn != null\n ? data.sortColumn.toUpperCase()\n : null\n : \"\",\n sortDirection: data.sortDirection !== \"\" ? data.sortDirection : \"\",\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n //AreasOfInterestShapeTypes\n public GetAreasOfInterestShapeTypes(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\n \"/DataForge/AreasOfInterest/Shapes\",\n {}\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n //AreasOfInterestShapeData\n public GetAreasOfInterestShapeData(\n data\n ): Promise<\n IServiceResult>\n > {\n const promise = new Promise<\n IServiceResult>\n >((resolve, reject) => {\n axios\n .post<\n IServiceResult>\n >(\"/DataForge/AreasOfInterest/ShapeData\", {\n fullPath: data.type.fullPath,\n filters: data.filters,\n rowStart: data.rowStart,\n rowEnd: data.rowEnd,\n sortColumn:\n data.sortColumn !== \"\"\n ? data.sortColumn != null\n ? data.sortColumn.toUpperCase()\n : null\n : \"\",\n sortDirection: data.sortDirection !== \"\" ? data.sortDirection : \"\",\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n /*******RESULTS*******/\n //ResultsPointTypes\n public GetResultsPointTypes(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\"/DataForge/Results/Points\", {})\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n //ResultsPointData\n public GetResultsPointData(\n data\n ): Promise<\n IServiceResult>\n > {\n const promise = new Promise<\n IServiceResult>\n >((resolve, reject) => {\n axios\n .post<\n IServiceResult>\n >(\"/DataForge/Results/PointData\", {\n fullPath: data.type.fullPath,\n filters: data.filters,\n rowStart: data.rowStart,\n rowEnd: data.rowEnd,\n sortColumn:\n data.sortColumn !== \"\"\n ? data.sortColumn != null\n ? data.sortColumn.toUpperCase()\n : null\n : \"\",\n sortDirection: data.sortDirection !== \"\" ? data.sortDirection : \"\",\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n //ResultsShapeTypes\n public GetResultsShapeTypes(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\"/DataForge/Results/Shapes\", {})\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n\n //ResultsShapeData\n public GetResultsShapeData(\n data\n ): Promise<\n IServiceResult>\n > {\n const promise = new Promise<\n IServiceResult>\n >((resolve, reject) => {\n axios\n .post<\n IServiceResult>\n >(\"/DataForge/Results/ShapeData\", {\n fullPath: data.type.fullPath,\n filters: data.filters,\n rowStart: data.rowStart,\n rowEnd: data.rowEnd,\n sortColumn:\n data.sortColumn !== \"\"\n ? data.sortColumn != null\n ? data.sortColumn.toUpperCase()\n : null\n : \"\",\n sortDirection: data.sortDirection !== \"\" ? data.sortDirection : \"\",\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n /*******TARGET MARKETS*******/\n //TargetMarketTypes\n public GetTargetMarkets(): Promise> {\n return new Promise>((resolve, reject) => {\n axios\n .get>(\"/TargetMarket/GetByDeveloper\")\n .then((response) => {\n resolve(response.data);\n })\n .catch((error) => reject(error));\n });\n }\n\n //TargetMarketData\n public GetTargetMarketData(data): Promise> {\n return new Promise>((resolve, reject) => {\n axios.post>(\"/DataForge/TargetMarket/Data\", {\n DeveloperId: data.type.developerId,\n TypeId: data.type.typeId,\n RowStart: data.rowStart,\n RowEnd: data.rowEnd,\n SortColumn: data.sortColumn ? data.sortColumn : \"locationName\",\n SortDirection: data.sortDirection ? data.sortDirection : \"ASC\"\n })\n .then(response => {\n resolve(response.data);\n })\n .catch(error => {\n console.error(\"Error fetching target market data:\", error);\n reject(error);\n });\n });\n }\n}\n","import { Store } from \"redux\";\n\nexport let store: Store;\n\nexport const setStore = (newStore: Store) => {\n store = newStore;\n};\n","export * from \"./AuthenticationAxios\";\nexport * from \"./HomeAxios\";\nexport * from \"./VisualizationAxios\";\n","import * as actions from \"../../../../Actions/MyDataActions\";\nimport * as verbs from \"../../../../Actions/VerbiageActions\";\nimport { CompanyType } from \"../../../../Enums/CompanyType\";\n\nconst _headerCell = (column) => {\n return {\n onClick: () => {\n actions.updateSortOrder(column);\n },\n };\n};\n\nexport const storeColumns = (companyType: CompanyType) => {\n const salesTitleTranslated = verbs.getSalesWord(companyType, true);\n \n const storeCols = [\n {\n title: \"Location ID\",\n dataIndex: \"id\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Type ID\",\n dataIndex: \"storeTypeID\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Name\",\n dataIndex: \"name\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Location #\",\n dataIndex: \"storeNumber\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Address 1\",\n dataIndex: \"address.address1\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Address 2\",\n dataIndex: \"address.address2\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Address 3\",\n dataIndex: \"address.address3\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"City\",\n dataIndex: \"address.city\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"State\",\n dataIndex: \"address.state\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Zip\",\n dataIndex: \"address.zip\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Zip +4\",\n dataIndex: \"address.zip4\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Opened\",\n dataIndex: \"openDate\",\n width: 200,\n type: \"d\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Closed\",\n dataIndex: \"closeDate\",\n width: 200,\n type: \"d\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: salesTitleTranslated,\n dataIndex: \"actualSales\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Region Code\",\n dataIndex: \"regionCode\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"BUDS\",\n dataIndex: \"buds\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Country\",\n dataIndex: \"address.country\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"SQFT\",\n dataIndex: \"squareFeet\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Trade Area Overall\",\n dataIndex: \"tradeAreaOverall\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Volume\",\n dataIndex: \"actualVolume\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Latitude\",\n dataIndex: \"latitude\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Longitude\",\n dataIndex: \"longitude\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Website\",\n dataIndex: \"website\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Phone\",\n dataIndex: \"phone\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Fax\",\n dataIndex: \"fax\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Email\",\n dataIndex: \"email\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Target Sales\",\n dataIndex: \"targetSales\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Employee Count\",\n dataIndex: \"employeeCount\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Manager Count\",\n dataIndex: \"managerCount\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Sales Margin\",\n dataIndex: \"salesMargin\",\n width: 200,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Comments\",\n dataIndex: \"comments\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Proforma Sales\",\n dataIndex: \"proformaSales\",\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n ];\n\n return storeCols;\n};\n\nexport const pushpinColumns = [\n {\n title: \"Name\",\n dataIndex: \"name\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.name).localeCompare(b.name),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Address 1\",\n dataIndex: \"address.address1\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.address1).localeCompare(b.address.address1),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Address 2\",\n dataIndex: \"address.address2\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.address2).localeCompare(b.address.address2),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Address 3\",\n dataIndex: \"address.address3\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.address3).localeCompare(b.address.address3),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"City\",\n dataIndex: \"address.city\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.city).localeCompare(b.address.city),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"State\",\n dataIndex: \"address.state\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.state).localeCompare(b.address.state),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Zip\",\n dataIndex: \"address.zip\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.zip).localeCompare(b.address.zip),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Zip +4\",\n dataIndex: \"address.zip4\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.zip4).localeCompare(b.address.zip4),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Country\",\n dataIndex: \"address.country\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.address.country).localeCompare(b.address.country),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Phone\",\n dataIndex: \"phone\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.phone).localeCompare(b.phone),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Fax\",\n dataIndex: \"fax\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.fax).localeCompare(b.fax),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Website\",\n dataIndex: \"website\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.website).localeCompare(b.website),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Latitude\",\n dataIndex: \"latitude\",\n width: 200,\n type: \"i\",\n //sorter: (a, b) => a.latitude - b.latitude,\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Longitude\",\n dataIndex: \"longitude\",\n width: 200,\n type: \"i\",\n //sorter: (a, b) => a.longitude - b.longitude,\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Created Date\",\n dataIndex: \"createdDate\",\n width: 200,\n type: \"d\",\n //sorter: (a, b) => (a.createdDate).localeCompare(b.createdDate),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Modified Date\",\n dataIndex: \"modifiedDate\",\n width: 200,\n type: \"d\",\n //sorter: (a, b) => (a.modifiedDate).localeCompare(b.modifiedDate),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Comments\",\n dataIndex: \"comments\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.comments).localeCompare(b.comments),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Type ID\",\n dataIndex: \"typeID\",\n type: \"i\",\n isChecked: true,\n },\n];\n\nexport const territoryColumns = [\n {\n title: \"Name\",\n dataIndex: \"name\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.name).localeCompare(b.name),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Display Label\",\n dataIndex: \"displayLabel\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.displayLabel).localeCompare(b.displayLabel),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Data Value\",\n dataIndex: \"dataValue\",\n width: 200,\n type: \"i\",\n //sorter: (a, b) => a.dataValue - b.dataValue,\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n /*{\n title: 'Latitude',\n dataIndex: 'latitude',\n width: 200,\n type: \"i\",\n sorter: (a, b) => a.latitude - b.latitude,\n isChecked: true,\n}, {\n title: 'Longitude',\n dataIndex: 'longitude',\n width: 200,\n type: \"i\",\n sorter: (a, b) => a.longitude - b.longitude,\n isChecked: true,\n},*/ {\n title: \"Created Date\",\n dataIndex: \"createdDateTimeFriendly\",\n width: 200,\n type: \"d\",\n //sorter: (a, b) => (a.createdDateTimeFriendly).localeCompare(b.createdDateTimeFriendly),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Name\",\n dataIndex: \"franchiseName\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.franchiseName).localeCompare(b.franchiseName),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Phone\",\n dataIndex: \"franchisePhone\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.franchisePhone).localeCompare(b.franchisePhone),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Email\",\n dataIndex: \"franchiseEmail\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.franchiseEmail).localeCompare(b.franchiseEmail),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Title\",\n dataIndex: \"franchiseTitle\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.franchiseTitle).localeCompare(b.franchiseTitle),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Unique ID\",\n dataIndex: \"franchiseUniqueID\",\n width: 200,\n type: \"s\",\n //sorter: (a, b) => (a.franchiseUniqueID).localeCompare(b.franchiseUniqueID),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Units Purchased\",\n dataIndex: \"franchiseUnitsPurchased\",\n width: 200,\n type: \"i\",\n //sorter: (a, b) => a.franchiseUnitsPurchased - b.franchiseUnitsPurchased,\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Units Opened\",\n dataIndex: \"franchiseUnitsOpened\",\n width: 200,\n type: \"i\",\n //sorter: (a, b) => a.franchiseUnitsOpened - b.franchiseUnitsOpened,\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Franchise Purchase Amount\",\n dataIndex: \"franchisePurchaseAmount\",\n width: 200,\n type: \"i\",\n //sorter: (a, b) => a.franchisePurchaseAmount - b.franchisePurchaseAmount,\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Type ID\",\n dataIndex: \"typeID\",\n width: 200,\n type: \"i\",\n isChecked: true,\n },\n {\n title: \"Modified Date\",\n dataIndex: \"modifiedDateTimeFriendly\",\n type: \"d\",\n //sorter: (a, b) => (a.modifiedDateTimeFriendly).localeCompare(b.modifiedDateTimeFriendly),\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n];\n\nexport const targetMarketColumns = [\n {\n title: \"Developer\",\n dataIndex: \"userName\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Brand\",\n dataIndex: \"typeName\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Target Name\",\n dataIndex: \"locationName\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Sub-Market\",\n dataIndex: \"submarket\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Address\",\n dataIndex: \"address\",\n width: 250,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"City\",\n dataIndex: \"city\",\n width: 150,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"State\",\n dataIndex: \"state\",\n width: 100,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Zip Code\",\n dataIndex: \"zipcode\",\n width: 100,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Country\",\n dataIndex: \"country\",\n width: 150,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Room Count\",\n dataIndex: \"roomCount\",\n width: 150,\n type: \"i\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"Comment\",\n dataIndex: \"comments\",\n width: 300,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"STR Market Name\",\n dataIndex: \"strMarketName\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n {\n title: \"STR Tract Name\",\n dataIndex: \"strTractName\",\n width: 200,\n type: \"s\",\n sorter: true,\n isChecked: true,\n onHeaderCell: _headerCell,\n },\n];\n","import { IStore } from \"./IStore\";\n\nexport interface IBadGeocode {\n recordNumber: number;\n store: IStore;\n}\n","import Axios, { AxiosError } from \"axios\";\nimport {ActionCreator, Dispatch} from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { UserPreferencesAxios } from \"../Contracts/Axios/UserPreferencesAxios\";\nimport { IStore, ITerritoryType, IUserPreferences } from \"../Models/Models\";\nimport * as types from \"./Types\";\n\n// GET\nexport const getUserPreferences: ActionCreator<\n ThunkAction\n> = () => {\n return (dispatch: Dispatch): void => {\n const userPreferencesAjax = new UserPreferencesAxios();\n const promises: Array = [];\n promises.push(userPreferencesAjax.GetUserPreferences());\n\n Axios.all(promises)\n .then(\n Axios.spread((preferences: IUserPreferences) => {\n dispatch(getUserPreferencesSuccess(preferences));\n })\n )\n .catch((error: AxiosError) => {\n dispatch(getUserPreferencesFailure(error));\n });\n };\n};\n\n// GET\nexport const getAllCommunitySites: ActionCreator<\n ThunkAction\n> = () => {\n return (dispatch: Dispatch): void => {\n const userPreferencesAjax = new UserPreferencesAxios();\n const promises: Array = [];\n promises.push(userPreferencesAjax.GetAllCommunitySites());\n\n Axios.all(promises)\n .then(\n Axios.spread((sites: Array) => {\n dispatch(getAllCommunitySitesSuccess(sites));\n })\n )\n .catch((error: AxiosError) => {\n dispatch(getAllCommunitySitesFailure(error));\n });\n };\n};\n\n// UPDATE\nexport const updateUserPreferences: ActionCreator<\n ThunkAction\n> = (userPreferences: IUserPreferences) => {\n return (dispatch: Dispatch): void => {\n const userPreferencesAjax = new UserPreferencesAxios();\n const promises: Array = [];\n if (!userPreferences.defaultLoginApp) {\n userPreferences.defaultLoginApp = \"SCOUT\";\n }\n promises.push(userPreferencesAjax.UpdateUserPreferences(userPreferences));\n\n Axios.all(promises)\n .then(\n Axios.spread((preferences: IUserPreferences) => {\n dispatch(updateUserPreferencesSuccess(preferences));\n })\n )\n .catch((error: AxiosError) => {\n dispatch(updateUserPreferencesFailure(error));\n });\n };\n};\n\n// GET\nexport const getCompanyTerritoryTypes: ActionCreator<\n ThunkAction\n> = () => {\n return (dispatch: Dispatch): void => {\n const userPreferencesAjax = new UserPreferencesAxios();\n const promises: Array = [];\n promises.push(userPreferencesAjax.GetCompanyTerritoryTypes());\n\n Axios.all(promises)\n .then(\n Axios.spread((territoryTypes: Array) => {\n dispatch(getCompanyTerritoryTypesSuccess(territoryTypes));\n })\n )\n .catch((error: AxiosError) => {\n dispatch(getCompanyTerritoryTypesFailure(error));\n });\n };\n};\n\n//------------------------------------------------ SUCCESS\nconst getUserPreferencesSuccess = (data: IUserPreferences) => ({\n type: types.GET_USER_PREFERENCES_SUCCESS,\n response: data,\n});\nconst updateUserPreferencesSuccess = (data: IUserPreferences) => ({\n type: types.UPDATE_USER_PREFERENCES_SUCCESS,\n response: data,\n});\nconst getAllCommunitySitesSuccess = (data: Array) => ({\n type: types.GET_ALL_COMMUNITY_SITES_SUCCESS,\n response: data,\n});\nconst getCompanyTerritoryTypesSuccess = (data: Array) => ({\n type: types.GET_TERRITORY_TYPES_SUCCESS,\n response: data,\n});\n//------------------------------------------------ FAILURE\nconst getUserPreferencesFailure = (error: AxiosError) => ({\n type: types.GET_USER_PREFERENCES_FAILURE,\n response: error,\n});\nconst updateUserPreferencesFailure = (error: AxiosError) => ({\n type: types.UPDATE_USER_PREFERENCES_FAILURE,\n response: error,\n});\nconst getAllCommunitySitesFailure = (error: AxiosError) => ({\n type: types.GET_ALL_COMMUNITY_SITES_FAILURE,\n response: error,\n});\nconst getCompanyTerritoryTypesFailure = (error: AxiosError) => ({\n type: types.GET_TERRITORY_TYPES_FAILURE,\n response: error,\n});\n","import { combineReducers } from \"redux\";\nimport { IRootReducer } from \"../Models/IRootReducer\";\nimport { appReducer } from \"../View/Products/Reducers/AppReducer\";\nimport { loginReducer } from \"../View/Products/Reducers/LoginReducer\";\nimport { notificationsReducer } from \"../View/Products/Reducers/NotificationsReducer\";\nimport { bookmarks } from \"./BookmarkReducer\";\nimport { companySupportTeamStore } from \"./CompanySupportTeamReducer\";\nimport { digitalShare } from \"./DigitalShareReducer\";\nimport { mobilyticsReportOutput } from \"./GPSInsightsReducer\";\nimport { factorReducer } from \"./FactorReducer\";\nimport { leftNav } from \"./LeftNavReducer\";\nimport { loadScout } from \"./LoadScoutReducer\";\nimport { mapSettings } from \"./MapSettingsReducer\";\nimport { mobilyticsPlaces } from \"./MobilyticsPlacesReducer\";\nimport { myData } from \"./MyDataReducer\";\nimport { reportMap } from \"./ReportMapReducer\";\nimport { reports } from \"./ReportsReducer\";\nimport { matchReportOutput } from \"./RetailMatchReducer\";\nimport { salesPerformanceReducer } from \"./SalesPerformanceReducer\";\nimport { session } from \"./SessionReducer\";\nimport { tableauReducer } from \"./TableauReducer\";\nimport { territoryManagement } from \"./TerritoryManagementReducer\";\nimport { toolbox } from \"./ToolboxReducer\";\nimport { twoByTwo } from \"./TwoByTwoReducer\";\nimport { userManagement } from \"./UserManagementReducer\";\nimport { userPreferencesStore } from \"./UserPreferencesReducer\";\nimport { userProfile } from \"./UserProfileReducer\";\nimport { user } from \"./UserReducer\";\nimport { notificationWorkflowReducer } from \"./NotificationWorkflowReducer\";\n\nexport const rootReducer = combineReducers({\n user,\n twoByTwo,\n mobilyticsReportOutput,\n factorReducer,\n matchReportOutput,\n reportMap,\n myData,\n userPreferencesStore,\n bookmarks,\n loadScout,\n userManagement,\n session,\n tableauReducer,\n reports,\n territoryManagement,\n userProfile,\n companySupportTeamStore,\n salesPerformanceReducer,\n leftNav,\n mapSettings,\n toolbox,\n mobilyticsPlaces,\n digitalShare,\n appReducer,\n loginReducer,\n notificationsReducer,\n notificationWorkflowReducer,\n});\n\nexport type RootState = ReturnType;","import * as types from \"../Actions/Types\";\nimport { IBookmark } from \"../Models/Models\";\n\nexport interface IBookmarkReducerState {\n allBookmarks: IBookmark[];\n activeBookmark: IBookmark;\n loadingBookmarks: boolean;\n foundBookmarks: boolean;\n showBookmarkModal: boolean;\n}\n\nconst defaultState: IBookmarkReducerState = {\n allBookmarks: null,\n activeBookmark: null,\n loadingBookmarks: true,\n foundBookmarks: true,\n showBookmarkModal: false,\n};\n\nexport const bookmarks = (\n state: IBookmarkReducerState = { ...defaultState },\n action\n): IBookmarkReducerState => {\n switch (action.type) {\n case types.LOAD_BOOKMARKS_SUCCESS: {\n //Get only non-null bookmarks\n //Had to add this because it was returning a null element after deleting a bookmark, even after a fresh load from DB\n const newBookmarks: IBookmark[] = action.data;\n const nonNullBookmarks = newBookmarks.filter((bookmark) => {\n return bookmark;\n });\n\n return {\n ...state,\n allBookmarks: nonNullBookmarks,\n };\n }\n\n case types.DELETE_BOOKMARK_SUCCESS: {\n const bookmarksCopy: Array = [...state.allBookmarks];\n for (let i = 0; i < bookmarksCopy.length; i++) {\n if (bookmarksCopy[i].id === action.data.id) {\n bookmarksCopy.splice(i, 1);\n break;\n }\n }\n\n return {\n ...state,\n allBookmarks: bookmarksCopy,\n };\n }\n\n case types.SET_DEFAULT_BOOKMARK_SUCCESS: {\n const bookmarksCopy: Array = [...state.allBookmarks];\n // reset all\n bookmarksCopy.forEach((bookmark: IBookmark) => {\n bookmark.isDefault = false;\n });\n // find the updated one\n const updatedBookmark: IBookmark = bookmarksCopy.find(\n (bookmark: IBookmark) => {\n return bookmark.id === action.data.id;\n }\n );\n // set it to default\n if (updatedBookmark) {\n updatedBookmark.isDefault = true;\n }\n // set data\n return {\n ...state,\n allBookmarks: bookmarksCopy,\n };\n }\n\n case types.SET_ACTIVE_BOOKMARK: {\n return {\n ...state,\n activeBookmark: action.data,\n };\n }\n\n case types.SET_LOADING_BOOKMARKS: {\n return {\n ...state,\n loadingBookmarks: action.data,\n };\n }\n\n case types.SET_FOUND_BOOKMARKS: {\n return {\n ...state,\n foundBookmarks: action.data,\n };\n }\n\n case types.SET_SHOW_BOOKMARK_MODAL: {\n return {\n ...state,\n showBookmarkModal: action.data,\n };\n }\n\n default:\n return state;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { IMobilyticsVisitorsGroupItem } from \"../Models/IMobilyticsVisitors\";\nimport { LeftNavSection } from \"../Enums/LeftNavSection\";\n\nexport interface ILeftNavReducerState {\n isVisible: boolean;\n currentLeftNavSection: LeftNavSection;\n isMobilyticsVisitorsVisible: boolean;\n mobilyticsVisitorsGroups: IMobilyticsVisitorsGroupItem[];\n}\n\nexport const defaultState: ILeftNavReducerState = {\n isVisible: false,\n currentLeftNavSection: LeftNavSection.None,\n isMobilyticsVisitorsVisible: false,\n mobilyticsVisitorsGroups: [],\n};\n\nexport const leftNav = (\n state: ILeftNavReducerState = { ...defaultState },\n action\n): ILeftNavReducerState => {\n switch (action.type) {\n case types.SHOW_LEFT_NAV: {\n return {\n ...state,\n currentLeftNavSection: action.data,\n isVisible: true,\n };\n }\n\n case types.HIDE_LEFT_NAV: {\n return {\n ...state,\n currentLeftNavSection: LeftNavSection.None,\n isVisible: false,\n };\n }\n\n case types.TOGGLE_LEFT_NAV: {\n return {\n ...state,\n currentLeftNavSection: action.data,\n isVisible: true,\n };\n }\n\n case types.UPDATE_MOBILYTICS_VISITORS_GROUPS: {\n return {\n ...state,\n mobilyticsVisitorsGroups: action.data,\n };\n }\n\n case types.TOGGLE_MAP_LAYER_MOBILYTICS_VISITORS_ACTUALS: {\n return {\n ...state,\n };\n }\n\n default:\n return state;\n }\n};\n","export interface IMapSettingsReducerState {}\n\nexport const defaultState: IMapSettingsReducerState = {};\n\nexport const mapSettings = (\n state: IMapSettingsReducerState = { ...defaultState },\n action\n): IMapSettingsReducerState => {\n switch (action.type) {\n default:\n return state;\n }\n};\n","import { SET_LOADING_PLACES } from \"../Actions/Types\";\n\nexport interface IMobilyticsPlacesState {\n placesLoading: boolean;\n}\n\nexport const defaultState: IMobilyticsPlacesState = {\n placesLoading: false,\n};\n\nexport const mobilyticsPlaces = (\n state: IMobilyticsPlacesState = { ...defaultState },\n action\n): IMobilyticsPlacesState => {\n switch (action.type) {\n case SET_LOADING_PLACES:\n return {\n ...state,\n placesLoading: action.data as boolean,\n };\n\n default:\n return state;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { ISalesPerformanceData } from \"../Models/Models\";\n\nexport interface ISalesPerformanceReducerState {\n performanceData: ISalesPerformanceData;\n loading: boolean;\n}\n\nconst defaultState: ISalesPerformanceReducerState = {\n performanceData: null,\n loading: true,\n};\n\nexport const salesPerformanceReducer = (\n state: ISalesPerformanceReducerState = { ...defaultState },\n action\n): ISalesPerformanceReducerState => {\n switch (action.type) {\n case types.SALES_PERFORMANCE_SET_DATA:\n return Object.assign({}, state, {\n performanceData: action.data,\n });\n case types.SALES_PERFORMANCE_SET_LOADING:\n return Object.assign({}, state, {\n loading: action.data,\n });\n default:\n return state;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { IMapState } from \"../Models/IMapState\";\n\nexport interface ISessionReducerState {\n loadingLastSession: boolean;\n foundLastSession: boolean;\n lastSession: IMapState;\n}\n\nconst defaultState: ISessionReducerState = {\n loadingLastSession: true,\n foundLastSession: true,\n lastSession: null,\n};\n\nexport const session = (\n state: ISessionReducerState = { ...defaultState },\n action\n): ISessionReducerState => {\n switch (action.type) {\n case types.SET_LOADING_LAST_SESSION: {\n return {\n ...state,\n loadingLastSession: action.data,\n };\n }\n\n case types.SET_FOUND_LAST_SESSION: {\n return {\n ...state,\n foundLastSession: action.data,\n };\n }\n\n case types.SET_SESSION: {\n return {\n ...state,\n lastSession: action.data,\n };\n }\n\n default:\n return state;\n }\n};\n","import { SHOW_MAP_SETTINGS_MODAL } from \"../Actions/Types\";\nimport { IAction } from \"../Models/IAction\";\n\nexport interface IToolboxReducerState {\n showMapSettingsModal: boolean;\n}\n\nexport const defaultState: IToolboxReducerState = {\n showMapSettingsModal: false,\n};\n\nexport const toolbox = (\n state: IToolboxReducerState = { ...defaultState },\n action: IAction\n): IToolboxReducerState => {\n switch (action.type) {\n case SHOW_MAP_SETTINGS_MODAL:\n return {\n ...state,\n showMapSettingsModal: action.payload as boolean,\n };\n\n default:\n return state;\n }\n};\n","import * as types from \"../Actions/Types\";\nimport { StoreExploreData } from \"../Models/IStoreExploreData\";\nimport { IStoreType, ITwoByTwo } from \"../Models/Models\";\nimport { regionNames } from \"../Components/Apps/Network Audit/constants\";\n\nexport interface ITwoByTwoState {\n data: ITwoByTwo;\n store: StoreExploreData;\n}\n\nconst processTwoByTwoData = (data) => {\n const iHaveNoIdeaWhatThisNumberIs = 16777215;\n const hexLength = 7;\n\n for (let i = 0; i < data.buds.length; i++) {\n let hexColor\n = \"#\"\n + Math.floor(Math.random() * iHaveNoIdeaWhatThisNumberIs).toString(16);\n hexColor = hexColor.length === hexLength ? hexColor : hexColor + 0;\n data.buds[i] = {\n type: \"BUDS\",\n name: \"BUDS \" + data.buds[i],\n value: data.buds[i],\n hexColor: hexColor,\n displayColorPicker: false,\n };\n }\n\n for (let i = 0; i < data.storeTypes.length; i++) {\n const type = data.storeTypes[i] as IStoreType;\n let hexColor\n = \"#\"\n + Math.floor(Math.random() * iHaveNoIdeaWhatThisNumberIs).toString(16);\n hexColor = hexColor.length === hexLength ? hexColor : hexColor + 0;\n type.hexColor = hexColor;\n type.displayColorPicker = false;\n type.type = \"LOCATIONS\";\n data.storeTypes[i] = type;\n }\n\n for (let i = 0; i < data.regions.length; i++) {\n let hexColor\n = \"#\"\n + Math.floor(Math.random() * iHaveNoIdeaWhatThisNumberIs).toString(16);\n hexColor = hexColor.length === hexLength ? hexColor : hexColor + 0;\n data.regions[i] = {\n type: \"REGION\",\n name: regionNames[data.regions[i]],\n value: data.regions[i],\n hexColor: hexColor,\n displayColorPicker: false,\n };\n }\n data.models = [];\n for (const item in data.dict) {\n if (item !== undefined) {\n let hexColor\n = \"#\"\n + Math.floor(Math.random() * iHaveNoIdeaWhatThisNumberIs).toString(16);\n hexColor = hexColor.length === hexLength ? hexColor : hexColor + 0;\n data.models.push({\n type: \"MODEL\",\n name: item,\n value: data.dict[item],\n hexColor: hexColor,\n displayColorPicker: false,\n });\n }\n }\n};\n\nexport const twoByTwo = (\n state: ITwoByTwoState = { data: null, store: new StoreExploreData() },\n action\n): ITwoByTwoState => {\n switch (action.type) {\n case types.LOAD_TWO_BY_TWO_SUCCESS: {\n processTwoByTwoData(action.data);\n\n return {\n ...state,\n data: action.data,\n };\n }\n\n case types.EXPLORE_STORE_SUCCESS: {\n return {\n ...state,\n store: action.data,\n };\n }\n\n default:\n return state;\n }\n};\n","import * as types from \"../Actions/Types\";\n\nexport interface INotificationWorkflowReducerState {\n notificationWorkflowUrl: string;\n}\n\nconst defaultState: INotificationWorkflowReducerState = {\n notificationWorkflowUrl: \"\",\n};\n\nexport const notificationWorkflowReducer = (\n state: INotificationWorkflowReducerState = defaultState,\n action,\n) => {\n switch (action.type) {\n case types.SET_NOTIFICATION_WORKFLOW_URL:\n return {\n ...state,\n notificationWorkflowUrl: action.data,\n };\n\n default:\n return state;\n }\n};\n","import axios, { AxiosError, AxiosResponse } from \"axios\";\nimport { IBrand } from \"../../Models/IBrand\";\nimport { authorizedAxios } from \"../../Actions/AxiosActions\";\nimport { IGPSServiceAxios } from \"../IGPSServiceAxios\";\nimport { IBrandCategory } from \"../../Models/IBrandCategory\";\n\nexport class GPSServiceAxios implements IGPSServiceAxios {\n public GetBrands(): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"GET\", \"/services/gps/Brand/\")\n .then((response: IBrand[]) => {\n resolve(response);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public GetCategories(): Promise {\n return new Promise((resolve, reject) => {\n /** GB:\n * This may need to be accessed via share (i.e. when there is no user logged in) .\n * So, this call does not need authorization.\n */\n axios\n .get(\"/services/gps/Category\")\n .then((response: AxiosResponse) => {\n resolve(response.data);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public GetBrandById(brandId: string): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"GET\", `/services/gps/Brand/${brandId}`)\n .then((brand: IBrand) => {\n resolve(brand);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n}\n","import styled from \"styled-components\";\n\ninterface IChartContainer {\n chartHeight?: number;\n}\n\nexport const ChartContainer = styled(\"div\")`\n height: ${(props: IChartContainer) =>\n props.chartHeight ? props.chartHeight : 360}px;\n width: 100%;\n padding: 26px 26px 26px 0px;\n`;\n","import moment from \"moment\";\nimport React, { FunctionComponent } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { IGCPBigQueryJob } from \"../../../../../Models/IGCPBigQueryJob\";\nimport { gpsInsightForReportView } from \"../../../../../Reducers/Selectors/GPSInsightsSelectors\";\nimport {\n BodyText,\n ReportDateBlockHeaderText,\n} from \"../../../../Common/ReportStyles/Text\";\nimport { VscCalendar } from \"@react-icons/all-files/vsc/VscCalendar\";\nimport { AiOutlineClockCircle } from \"@react-icons/all-files/ai/AiOutlineClockCircle\";\nimport { BsGraphUp } from \"@react-icons/all-files/bs/BsGraphUp\";\nimport { BsArrowUpShort } from \"@react-icons/all-files/bs/BsArrowUpShort\";\nimport { BsArrowDownShort } from \"@react-icons/all-files/bs/BsArrowDownShort\";\nimport { BiStoreAlt } from \"@react-icons/all-files/bi/BiStoreAlt\";\nimport { FaMapMarkerAlt } from \"@react-icons/all-files/fa/FaMapMarkerAlt\";\nimport { digitalShareElementText } from \"../../../../Common/DigitalShare/DigitalShareGenerator\";\nimport {\n PolygonComparison,\n PolygonComparisonDates,\n Sidebar,\n SidebarMoreInfo,\n SidebarSupp,\n SidebarTitle,\n SupText,\n} from \"./GPSTemplateStyles\";\nimport {\n MainContent,\n MainContentChild,\n MainContentText,\n MainContentTitle,\n Wrapper,\n} from \"../../../../Common/DigitalShare/Templates/TemplateStyles\";\nimport DigitalShareTemplate from \"../../../../Common/DigitalShare/Templates/DigitalShareTemplate\";\nimport { DigitalShareAppType } from \"../../../../../Enums/DigitalShareAppType\";\n\ninterface IDigitalSharePolygonComparison {\n polygonName: string;\n fromDateTime: Date;\n toDateTime: Date;\n}\nexport interface IGPSInsightsDigitalShareTemplate {\n children: React.ReactNode;\n polygonComparisons: IDigitalSharePolygonComparison[];\n captionAboveTitle?: string;\n sectionTitle: string;\n disclaimer: string;\n itemType: string;\n hideItemTypeTitle?: boolean;\n hideItemText?: boolean;\n}\n\nconst GPSInsightsDigitalShareTemplate: FunctionComponent\n = (props: IGPSInsightsDigitalShareTemplate) => {\n const data: IGCPBigQueryJob[] = useSelector(gpsInsightForReportView);\n\n const handleFormatReportDate = (date: Date): string => {\n return moment(date).format(\"MM/DD/YYYY\");\n };\n\n const handleFormatReportTime = (date: Date): string => {\n return moment(date).format(\"hh:mm A\");\n };\n\n const handlePolygonLessOrGreater = (\n sign: string,\n miles: number\n ): string => {\n return `Includes Households ${\n sign == \"GREATER\" ? \"Greater Than\" : \"Less Than\"\n } ${miles} miles.`;\n };\n\n return (\n \n \n \n {data.map((d, i, arr) => (\n
\n \n
\n \n {d.jobPolygon.name}\n \n
\n {d.miles > 0 && (\n
\n {handlePolygonLessOrGreater(\n d.milesLessOrGreater,\n d.miles\n )}\n
\n )}\n \n \n \n {\" \"}\n {handleFormatReportDate(d.queryFromDateTime)} -{\" \"}\n {handleFormatReportDate(d.queryToDateTime)}\n \n \n {\" \"}\n {handleFormatReportTime(d.queryFromDateTime)} -{\" \"}\n {handleFormatReportTime(d.queryToDateTime)}\n \n \n \n\n {i < 1 && arr.length > 1 && (\n \n COMPARE TO{\" \"}\n \n
\n )}\n \n ))}\n \n \n The most detailed view of foot-traffic possible.\n \n\n \n Buxton’s Mobilytics allows you to create, analyze, and visualize\n mobile data sets for any place and any available time period.\n \n \n \n Understand who visited your site and where they came from.\n \n \n \n Benchmark visitor volume trends by date and time.\n \n \n \n Reports based on data that’s updated daily.\n \n \n \n Compare competitors foot traffic.\n \n\n \n Visit{\" \"}\n \n buxtonco.com/mobilytics\n {\" \"}\n for more information\n \n \n
\n \n {!props.hideItemTypeTitle && (\n {props.itemType}\n )}\n {!props.hideItemText && (\n \n {digitalShareElementText.get(props.itemType)}\n \n )}\n {props.children}\n \n
\n \n );\n };\n\nexport default GPSInsightsDigitalShareTemplate;\n","import Axios, { AxiosError, AxiosResponse } from \"axios\";\nimport { authorizedAxios } from \"../../Actions/AxiosActions\";\nimport { RetailMatchGeographyOption } from \"../../Enums/RetailMatchGeographyOption\";\nimport { IBrandSampleSet } from \"../../Models/IBrandSampleSet\";\nimport { IRetailMatchGeography } from \"../../Models/IRetailMatchGeography\";\nimport {\n IBrand,\n IRetailMatchJob,\n IRetailMatchJobImage,\n IRetailMatchJobResult,\n ISegment,\n ISegmentDetails\n} from \"../../Models/Models\";\nimport { IGetBrandsByGeographyAndCategoriesRequest } from \"../../Models/Requests/IGetBrandsByGeographyAndCategoriesRequest\";\nimport { IGetBrandsSampleSetDataByClosestRequest } from \"../../Models/Requests/IGetBrandsSampleSetDataByClosestRequest\";\nimport { IGetBrandsSampleSetDataByGeoRequest } from \"../../Models/Requests/IGetBrandsSampleSetDataByGeoRequest\";\nimport { ISubmitRetailMatchJobRequest } from \"../../Models/Requests/ISubmitRetailMatchJobRequest\";\nimport { IUpdateRetailMatchSiteDetailsRequest } from \"../../Models/Requests/IUpdateRetailMatchSiteDetailsRequest\";\nimport { IRetailMatchAxios } from \"../index\";\n\nexport class RetailMatchAxios implements IRetailMatchAxios {\n public GetBrandsByNaicsCode(naicsCode: string): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"GET\", `/services/gps/Brand/ByCategory/${naicsCode}`)\n .then((response: IBrand[]) => {\n resolve(response);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public GetBrandsByGeoAndCategory(\n request: IGetBrandsByGeographyAndCategoriesRequest\n ): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"POST\",\n \"/services/gps/Brand/ByGeoAndCategories\",\n {},\n request\n )\n .then((response: IBrand[]) => {\n resolve(response);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public GetGeographies(\n option: RetailMatchGeographyOption\n ): Promise {\n return new Promise((resolve, reject) => {\n Axios.get(`/Common/GetRetailMatchGeographies?level=${option}`)\n .then((response: AxiosResponse) => {\n resolve(response.data.data);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public UpdateJob(job: Partial) {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"POST\", \"/services/gps/RetailMatch/UpdateJob\", null, job)\n .then(() => resolve(true))\n .catch((error: AxiosError) => reject(error));\n });\n }\n\n public UpdateSiteDetails(jobId: string, siteDetails: string): Promise {\n return new Promise((resolve, reject) => {\n const data: IUpdateRetailMatchSiteDetailsRequest = {\n jobId,\n siteDetails\n };\n authorizedAxios(\"POST\", \"/services/gps/RetailMatch/UpdateSiteDetails\", null, data)\n .then(() => resolve(true))\n .catch((error: AxiosError) => reject(error));\n });\n }\n\n public AddImage(request: FormData) {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"POST\",\n \"/services/gps/RetailMatch/AddImage\",\n null,\n request\n )\n .then((response: IRetailMatchJobImage) => resolve(response))\n .catch((error: AxiosError) => reject(error));\n });\n }\n\n public UpdateBrandLogo(request: FormData): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"POST\",\n \"/services/gps/RetailMatch/UpdateBrandLogo\",\n null,\n request\n )\n .then((response: string) => resolve(response))\n .catch((error: AxiosError) => reject(error));\n });\n }\n\n public GetResults = (jobId: string): Promise => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"GET\", `/services/gps/RetailMatch/${jobId}/results`)\n .then((response: IRetailMatchJobResult) => {\n resolve(response);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n };\n\n public SiteIsInDMA(latitude: number, longitude: number): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"GET\",\n `/services/gps/RetailMatch/SiteIsInDMA/${latitude}/${longitude}`\n )\n .then((isInDMA: boolean) => {\n resolve(isInDMA);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public SubmitRetailMatchReport = (request: ISubmitRetailMatchJobRequest) => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\"POST\", \"/services/gps/RetailMatch/submit\", null, request)\n .then((response: AxiosResponse) => {\n resolve(response);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n };\n\n public GetMosaicSegments = (): Promise => {\n return new Promise((resolve, reject) => {\n /** this call does not need to be authorized */\n Axios.get(\"/Segment/GetSegments\")\n .then((response: AxiosResponse) => {\n resolve(response.data.data);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n };\n\n public GetMosaicSegmentDetails = (): Promise => {\n return new Promise((resolve, reject) => {\n /** this call does not need to be authorized */\n Axios.get(\"/Segment/GetSegmentDetails\")\n .then((response: AxiosResponse) => {\n resolve(response.data.data);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n };\n\n public GetBrandsSampleSetData = (\n request: IGetBrandsSampleSetDataByClosestRequest\n ): Promise => {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"POST\",\n \"/services/gps/RetailMatch/GetSampleSetLocations\",\n null,\n request\n )\n .then((response: IBrandSampleSet[]) => {\n resolve(response);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n };\n\n public GetSampleSetByGeo(\n request: IGetBrandsSampleSetDataByGeoRequest\n ): Promise {\n return new Promise((resolve, reject) => {\n authorizedAxios(\n \"POST\",\n \"/services/gps/RetailMatch/GetSampleSetByGeo\",\n null,\n request\n )\n .then((locations: IBrandSampleSet[]) => {\n resolve(locations);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n}\n","import React, { FunctionComponent } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\n\nimport {\n DigitalShareAppImage,\n DigitalShareAppType\n} from \"../../../../Enums/DigitalShareAppType\";\nimport { IUser } from \"../../../../Models/IUser\";\nimport { IUserShareSettings } from \"../../../../Models/IUserShareSettings\";\nimport {\n userSelector,\n userShareSettingsSelector\n} from \"../../../../Reducers/Selectors/UserSelectors\";\nimport {\n BrandLogo,\n BuxtonLogoAppName,\n BuxtonLogoWrapper,\n ContactImage,\n ContactInfo, Content,\n Disclaimer,\n Footer,\n FooterFlexContent,\n Header,\n SectionTitle,\n SectionTitleCaption,\n SectionTitleWrapper,\n Template\n} from \"./TemplateStyles\";\n\nexport interface IDigitalShareTemplateProps {\n appName: DigitalShareAppType;\n sectionTitle: string;\n children: React.ReactNode;\n captionAboveTitle?: string;\n}\n\nconst logoMap: Map = new Map();\n\nfor (const app in DigitalShareAppType) {\n logoMap.set(\n DigitalShareAppType[app],\n \n );\n}\n\nconst DigitalShareTemplate: FunctionComponent = (\n props: IDigitalShareTemplateProps\n) => {\n const user: IUser = useSelector(userSelector);\n const shareSettings: IUserShareSettings = useSelector(\n userShareSettingsSelector,\n shallowEqual\n );\n const userFullName = `${user.firstName} ${user.lastName}`;\n const phone: string = user.phone;\n const disclaimer: string = shareSettings?.disclaimer;\n\n return (\n \n );\n};\nexport default DigitalShareTemplate;\n","import React, { FunctionComponent } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { formatLabelWithEllipsis, ReportH5 } from \"../../../../Common/\";\nimport { Sidebar, SidebarSupp } from \"./RetailMatchTemplateStyles\";\nimport DigitalShareTemplate from \"../../../../Common/DigitalShare/Templates/DigitalShareTemplate\";\nimport { retailMatchReportDataSelector } from \"../../../../../Reducers/Selectors/RetailMatchSelectors\";\nimport {\n RetailMatchIntroBrandingContainer,\n RetailMatchShareIntroBrandLogo,\n RetailMatchShareIntroBrandLogoWrapper,\n} from \"../../Styled/RetailMatchIntroStyles\";\nimport { RetailMatchKeyMetricsSharing } from \"../../Components/RetailMatchKeyMetricsSharing\";\nimport {\n brandOverviewRecord,\n getBenchmarkAddressOverride,\n} from \"../../../../../Util/RetailMatch/RetailMatchUtil\";\nimport { IStoreScoreRecord } from \"../../../../../Models/IRetailMatch\";\nimport {\n MainContent,\n MainContentChild,\n MainContentText,\n MainContentTitle,\n Wrapper,\n} from \"../../../../Common/DigitalShare/Templates/TemplateStyles\";\nimport {\n digitalShareElementText,\n mapSnapshots,\n} from \"../../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { DigitalShareItemType } from \"../../../../../Enums/DigitalShareItemType\";\nimport { ReportMapWrapper } from \"../../../../Common/Map/Styles/MapStyles\";\nimport { DigitalShareAppType } from \"../../../../../Enums/DigitalShareAppType\";\nexport interface IRetailMatchDigitalShareTemplate {\n children: React.ReactNode;\n captionAboveTitle?: string;\n sectionTitle: string;\n disclaimer: string;\n itemType: string;\n hideItemTypeTitle?: boolean;\n hideItemText?: boolean;\n}\n\nconst RetailMatchDigitalShareTemplate: FunctionComponent\n = (props: IRetailMatchDigitalShareTemplate) => {\n const { jobResult, benchmarkRecord, selectedBrand } = useSelector(\n retailMatchReportDataSelector,\n shallowEqual\n );\n\n const benchmarkAddressOverride: IStoreScoreRecord\n = getBenchmarkAddressOverride(jobResult, benchmarkRecord);\n\n const brand = selectedBrand || jobResult?.job?.brands[0];\n const overviewRecord = brandOverviewRecord(\n brand?.brandId,\n jobResult?.chartData?.overview\n );\n\n const isSiteDetails = (): boolean => {\n return (\n props.itemType == DigitalShareItemType.KeyMetrics\n || props.itemType == DigitalShareItemType.BrandComparison\n );\n };\n\n return (\n \n \n \n {props.itemType == DigitalShareItemType.BrandComparison && (\n
\n \n {mapSnapshots.get(\"retail-match-overview-map\")}\n \n \n \n Know the potential for\n
any brand at any property.\n \n \n Visit{\" \"}\n buxtonco.com/match{\" \"}\n for more information\n

\n
\n \n )}\n {props.itemType !== DigitalShareItemType.BrandComparison && (\n \n \n \n \n \n \n Know the potential for\n
any brand at any property.\n
\n \n \n Visit{\" \"}\n buxtonco.com/match{\" \"}\n for more information\n \n \n )}\n \n {(props.itemType == DigitalShareItemType.KeyMetrics\n || props.itemType == DigitalShareItemType.BrandComparison)\n && jobResult.job.siteDetails?.length > 0 ? (\n <>\n \n SITE DETAILS\n \n \n {formatLabelWithEllipsis(jobResult.job.siteDetails, 751)}\n \n \n ) : null}\n \n
\n \n {!props.hideItemTypeTitle && (\n \n {props.itemType}\n \n )}\n {!props.hideItemText && (\n \n {digitalShareElementText.get(props.itemType)}\n \n )}\n {props.children}\n \n
\n \n );\n };\n\nexport default React.memo(RetailMatchDigitalShareTemplate);\n","import React, { FunctionComponent } from \"react\";\nimport { IndexBarSharing } from \"../../../Common/\";\nimport { RetailMatchKeyMetricsWrapper } from \"../Styled/RetailMatchKeyMetricsStyles\";\nimport {\n IRetailMatchJobResult,\n IRetailMatchOverview,\n IStoreScoreRecord,\n} from \"../../../../Models/IRetailMatch\";\nimport { RetailMatchMetricLevel } from \"../../../../Enums/RetailMatchMetricLevel\";\nimport { Header, HeaderFocusSharing } from \"../Styled/RetailMatchIntroStyles\";\nimport { getDateBackVerbiage } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport RetailMatchIntroTextIndexBreakout from \"./RetailMatchIntroTextIndexBreakout\";\nimport styled from \"styled-components\";\n\ninterface IKeyMetricsSharingContainer {\n inSidebar: boolean;\n}\n\nconst KeyMetricsSharingContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n ${(props: IKeyMetricsSharingContainer) =>\n !props.inSidebar\n && ` \n height: 100%;\n padding-left: 113px;\n `}\n\n ${(props: IKeyMetricsSharingContainer) =>\n props.inSidebar\n && ` \n flex-grow: 0.5;\n justify-content: space-between;\n `}\n`;\n\nconst KeyMetricsSharingWrapperContainer = styled.div`\n ${(props: IKeyMetricsSharingContainer) =>\n !props.inSidebar\n && `\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n flex: 0.9;\n `}\n`;\ninterface RetailMatchKeyMetricsProps {\n brandName: string;\n jobOverview: IRetailMatchOverview;\n locationAddress: string;\n jobResult: IRetailMatchJobResult;\n inSidebar?: boolean;\n}\n\nexport const RetailMatchKeyMetricsSharing: FunctionComponent\n = ({\n brandName,\n jobOverview,\n inSidebar,\n locationAddress,\n jobResult,\n }: RetailMatchKeyMetricsProps) => {\n return (\n \n \n \n {locationAddress}\n \n \n COMPARED TO\n \n \n {jobOverview.sampleCount.toLocaleString()} Existing Similar{\" \"}\n {brandName} Locations\n \n {!inSidebar && (\n \n based on analysis of consumer mobile device signals{\" \"}\n {getDateBackVerbiage(\n jobResult.job.startDate,\n jobResult.job.endDate\n )}\n \n )}\n \n {!inSidebar && (\n
\n \n
\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n };\n","import styled from \"styled-components\";\nimport { device } from \"../../../../globalStyles/breakpoints\";\n\nexport const RetailMatchKeyMetricsWrapper = styled(\"div\")`\n display: grid;\n grid-template-columns: 80px 1fr;\n grid-column-gap: 20px;\n grid-template-rows: 80px;\n grid-row-gap: 20px;\n margin: 50px 0px 150px 0px;\n align-items: center;\n &:last-child {\n margin-bottom: 104px;\n }\n\n ${device.desktop} {\n grid-template-columns: 129px 1fr;\n grid-template-rows: 70px;\n grid-column-gap: 40px;\n grid-row-gap: 20px;\n }\n`;\n\nexport const RetailMatchKeyMetricsDescription = styled(\"div\")`\n text-align: center;\n font-family: Manrope, sans-serif;\n font-size: 14px;\n line-height: 20px;\n color: #333;\n height: 100%;\n`;\n","import React from \"react\";\nimport { RetailMatchMetricLevel } from \"../../../../Enums/RetailMatchMetricLevel\";\nimport { IRetailMatchOverview } from \"../../../../Models/Models\";\nimport { getRetailMatchIndexColor } from \"../../../../Util/ColorUtil\";\nimport { getRetailMatchMetricVerbiage } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport {\n BreakoutContainer,\n BreakoutItem,\n BreakoutItemBarInner,\n BreakoutItemBarOuter,\n BreakoutItemHeader,\n BreakoutItemVerbiage,\n BreakoutVerticalBreak,\n} from \"../Styled/RetailMatchIntroStyles\";\n\ninterface IRetailMatchIntroTextProps {\n overview: IRetailMatchOverview;\n isSharing?: boolean;\n}\n\nconst RetailMatchIntroTextIndexBreakout = ({\n overview,\n isSharing,\n}: IRetailMatchIntroTextProps): JSX.Element => {\n return (\n \n \n Ideal Customer Count\n \n \n \n {getRetailMatchMetricVerbiage(\n overview?.coreCustomerCountIndex,\n RetailMatchMetricLevel.Average\n )}\n \n \n \n \n \n \n \n \n \n Ideal Customer Ratio\n \n \n \n {getRetailMatchMetricVerbiage(\n overview?.coreCustomerPerHouseholdIndex,\n RetailMatchMetricLevel.Comparable\n )}\n \n \n \n \n \n \n \n \n \n Ideal Customer Similarity\n \n \n \n {getRetailMatchMetricVerbiage(\n overview?.coreCustomerCorrelationIndex,\n RetailMatchMetricLevel.Similarity\n )}\n \n \n \n \n \n \n \n \n );\n};\n\nexport default RetailMatchIntroTextIndexBreakout;\n","import { toPng, getFontEmbedCSS } from \"html-to-image\";\nimport { DigitalShareItemType } from \"../Enums/DigitalShareItemType\";\nimport {\n debug,\n replaceConsole,\n restoreConsole,\n} from \"./Debugging/ConsoleReplacement\";\n\ninterface ShareRenderJob {\n type: DigitalShareItemType;\n ref: React.MutableRefObject;\n dataUrl: string;\n}\n\nexport interface ShareRenderJobResult {\n type: DigitalShareItemType;\n dataUrl: string;\n}\n\nexport enum TemplateImageGeneratorProgressStep {\n WaitingForComponents = \"WaitingForComponents\",\n RenderingOutputs = \"RenderingOutputs\",\n Complete = \"Complete\",\n}\n\nexport interface ITemplateImageGeneratorProgress {\n succeeded: number;\n failed: number;\n total: number;\n step: TemplateImageGeneratorProgressStep;\n}\n\nexport enum RenderTargetType {\n Html,\n GoogleMap,\n}\n\nexport enum GenerationFailureReason {\n TimeoutExceeded,\n}\n\nexport class TemplateImageGenerator {\n shareTypes: DigitalShareItemType[];\n renderJobs: ShareRenderJob[];\n shareRefs: Map>;\n maxWaitMs = 0;\n startTime = 0;\n succeededImages = 0;\n failedImages = 0;\n totalImages = 0;\n canceled = false;\n onProgress: (\n succeeded: number,\n failed: number,\n total: number,\n step: TemplateImageGeneratorProgressStep\n ) => void = (\n succeeded: number,\n failed: number,\n total: number,\n step: TemplateImageGeneratorProgressStep\n ) => { };\n\n constructor(\n shareTypes: DigitalShareItemType[],\n shareRefs: Map>,\n onProgress: (\n succeeded: number,\n failed: number,\n total: number,\n step: TemplateImageGeneratorProgressStep\n ) => void = () => { }\n ) {\n this.onProgress = onProgress;\n this.shareTypes = shareTypes;\n this.shareRefs = shareRefs;\n this.renderJobs = shareTypes.map((t, i) => ({\n type: t,\n ref: null,\n dataUrl: null,\n }));\n this.totalImages = this.renderJobs.length;\n }\n\n private _updateProgress(success: boolean) {\n if (success) {\n this.succeededImages++;\n } else {\n this.failedImages++;\n }\n this.onProgress(\n this.succeededImages,\n this.failedImages,\n this.totalImages,\n TemplateImageGeneratorProgressStep.RenderingOutputs\n );\n }\n\n // Recursively calls itself until all refs are in... or until\n // the max time has elapsed.\n private _generate(\n resolve: (result: ShareRenderJobResult[]) => void,\n reject: (reason: any) => void\n ): void {\n if (this.canceled) {\n return;\n }\n\n this.onProgress(\n this.succeededImages,\n this.failedImages,\n this.totalImages,\n TemplateImageGeneratorProgressStep.WaitingForComponents\n );\n\n // If some refs aren't populated...\n if (\n this.renderJobs.find((r) => {\n const ref = this.shareRefs.get(r.type.toString());\n return ref === undefined || ref.current === null;\n })\n ) {\n const elapsed = window.performance.now() - this.startTime;\n if (elapsed >= this.maxWaitMs) {\n //...unless too much time has elapsed...\n console.log(\"reject due to too timeout exceeded\");\n this.canceled = true;\n reject(GenerationFailureReason.TimeoutExceeded);\n return;\n }\n\n let delay = Math.min(100, this.maxWaitMs - elapsed);\n if (delay < 0) {\n delay = 0;\n }\n\n // ...keep waiting.\n setTimeout(() => {\n this._generate(resolve, reject);\n }, delay);\n } else {\n const promises: Promise[] = [];\n\n this.onProgress(\n this.succeededImages,\n this.failedImages,\n this.totalImages,\n TemplateImageGeneratorProgressStep.RenderingOutputs\n );\n\n // Replacing the console here. The third-party libraries used\n // by toPng() flood the console with thousands of messages. It\n // slows the app down if dev tools is open and makes it\n // near-impossible to find our own logged messages.\n replaceConsole();\n\n // Kick off component -> image process for all components.\n this.renderJobs.forEach((job) => {\n // Using forEach instead of a for loop so our promise closure\n // doesn't refer to the wrong instance of job.\n promises.push(\n new Promise(\n (\n resolve: (value: string) => void,\n reject: (reason: any) => void\n ) => {\n const ref = this.shareRefs.get(job.type.toString());\n\n // We need to wait for all image tags to load\n // before taking the snapshot.\n const images = ref.current.querySelectorAll(\"img\");\n const imagePromises: Promise[] = [];\n images.forEach((image) => {\n image.crossOrigin = \"anonymous\";\n if (!image.complete) {\n imagePromises.push(\n new Promise(\n (imageResolve: () => void, reject: () => void) => {\n image.onload = () => {\n imageResolve();\n };\n image.onerror = () => {\n // We don't have any error handling,\n // so we're just continuing if the image\n // tag doesn't load.\n imageResolve();\n };\n }\n )\n );\n }\n });\n\n Promise.all(imagePromises).then(async () => {\n if (this.canceled) {\n return;\n }\n\n const fontEmbedCSS = await getFontEmbedCSS(ref.current);\n\n toPng(ref.current, {\n width: 1500,\n height: 835,\n\n // Pixel density. Corresponds to the `scale` option in\n // the html2canvas library. If we don't set this to 1,\n // it will use the current device's density, which could be\n // greater than 1 for high-density displays like Apple Retina,\n // and will cause the 1500x835 image to be placed in the top-left\n // corner of a much larger image for the final export.\n pixelRatio: 1,\n style: { margin: \"0px\" },\n cacheBust: true,\n fontEmbedCSS,\n })\n .then((content: string) => {\n this._updateProgress(true);\n resolve(content);\n })\n .catch((reason: any) => {\n this.canceled = true;\n this._updateProgress(false);\n debug.log(\n `There was an error exporting the ${job.type} component. Reason: ${reason}`\n );\n reject(\n `There was an error exporting the ${job.type} component. Please contact Support.`\n );\n });\n });\n }\n )\n );\n });\n\n // Wait until all snapshots have been created...\n Promise.all(promises)\n .then((dataUrls: string[]) => {\n restoreConsole();\n if (this.canceled) {\n return;\n }\n // ...and then call the ready callback.\n const results: ShareRenderJobResult[] = this.renderJobs.map(\n (s, i) => ({\n type: s.type,\n dataUrl: dataUrls[i],\n })\n );\n resolve(results);\n\n this.shareRefs.forEach((v, k) => (v.current = null));\n this.shareRefs.clear();\n })\n .catch((reason: any) => {\n restoreConsole();\n this.canceled = true;\n reject(reason);\n });\n }\n }\n\n // delayMs: how long to wait before attempting to generate.\n // maxWaitMs: the maximum amount of time to spend trying to generate.\n // IF LESS THAN delayMs, a single attempt will be made after\n // `delayMs` has elapsed.\n generate(delayMs = 1000, maxWaitMs = 9999): Promise {\n return new Promise((resolve, reject) => {\n this.maxWaitMs = maxWaitMs;\n this.startTime = window.performance.now();\n setTimeout(() => {\n this._generate(resolve, reject);\n }, delayMs);\n });\n }\n}\n","import styled from \"styled-components\";\nimport { TextButton } from \"../../Button/TextButton\";\n\nexport const Backdrop = styled(\"div\")`\n width: 100vw;\n height: 100vh;\n position: fixed;\n background-color: #000;\n opacity: 0.3;\n z-index: 999;\n top: 0;\n`;\n\nexport const Dialog = styled(\"div\")`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n position: absolute;\n max-width: 900px;\n width: 100%;\n height: 600px;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 999999;\n border-radius: 4px;\n background-color: #fff;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.4);\n`;\n\nexport const MainContent = styled(\"div\").attrs((props) => ({\n className: props.className,\n}))`\n display: grid;\n grid-template-columns: 60% 40%;\n flex: 1;\n\n &.full-width {\n grid-template-columns: 100%;\n }\n`;\n\nexport const Header = styled(\"div\").attrs((props) => ({\n className: props.className,\n}))`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 55px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.09);\n padding: 0px 24px 0px 24px;\n\n &.no-padding-left {\n padding-left: 0;\n }\n`;\n\nexport const Footer = styled(\"div\")`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 55px;\n border-top: 1px solid rgba(0, 0, 0, 0.09);\n`;\n\nexport const Title = styled(\"div\")`\n font-size: 16px;\n font-family: Manrope;\n font-weight: 500;\n`;\n\nexport const CloseButton = styled(\"div\")`\n cursor: pointer;\n padding: 5px;\n &:hover {\n background-color: #eee;\n }\n`;\n\ninterface TrainingOptionProps {\n selected?: boolean;\n}\n\nexport const TrainingOption = styled(TextButton)`\n font-size: 13px;\n padding: 0px;\n border-bottom: ${(props: TrainingOptionProps) =>\n props.selected ? \"1px solid #e5aa43\" : \"none\"};\n border-radius: 0px;\n color: ${(props: TrainingOptionProps) =>\n props.selected ? \"#000000\" : \"#6d727885\"};\n`;\n\nexport const TrainingContainer = styled(\"div\")`\n background: #e4e4e4;\n box-shadow: 2px -1px 10px 0 rgba(187, 187, 187, 0.5);\n border: solid 1px #e4e4e4;\n padding: 1.5px 0 0.5px;\n border-radius: 4px;\n`;\n\nexport const TrainingHeaderText = styled.div`\n display: flex;\n width: 65%;\n justify-content: space-between;\n font-size: 13px;\n`;\n\nexport const TrainingVideoContainer = styled.div`\n max-width: 490px;\n height: 285px;\n border: 1px solid rgba(0, 0, 0, 0.09);\n margin: 0px 0px 16px 23px;\n\n video {\n max-height: 100%;\n width: 100%;\n }\n`;\n\nexport const TrainingDescription = styled.div`\n display: flex;\n flex-direction: column;\n font-size: 13px;\n width: 90%;\n margin-left: 23px;\n`;\n\nexport const LoadingIndicator = styled(\"div\")`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n`;\n\nexport const LoadingIndicatorBackdrop = styled(\"div\")`\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: #fff;\n opacity: 0.5;\n z-index: 9999;\n`;\n\nexport const LoadingIndicatorText = styled(\"div\")`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n`;\n\nexport const SelectAll = styled.div`\n display: flex;\n align-items: center;\n width: 77px;\n font-size: 13px;\n justify-content: space-between;\n font-weight: bold;\n`;\n\nexport const ThumbnailContainer = styled(\"div\").attrs((props) => ({\n className: props.className,\n}))`\n &.selected {\n img {\n border: 1px solid #8c8c8c;\n }\n }\n`;\n\nexport const OutputContainer = styled(\"div\")`\n border-radius: 4px;\n height: 490px;\n overflow: auto;\n`;\n\nexport const OutputContent = styled(\"div\").attrs((props) => ({\n className: props.className,\n}))`\n display: grid;\n grid-template-columns: 160px 160px;\n grid-column-gap: 11px;\n grid-row-gap: 22px;\n padding: 16px;\n padding-bottom: 22px;\n\n &.full-width {\n grid-template-columns: 200px 200px 200px 200px;\n }\n\n @media only screen and (max-width: 768px) {\n grid-template-columns: 160px;\n justify-content: center;\n }\n`;\n\nexport const OutputTile = styled(\"div\").attrs((props) => ({\n className: props.className,\n}))`\n position: relative;\n width: 160px;\n height: auto;\n\n &.full-width {\n width: 200px;\n }\n`;\n\nexport const OutputThumbnail = styled(\"img\")`\n width: 100%;\n height: 87px;\n`;\n\nexport const OutputCheckbox = styled(\"input\")`\n position: absolute;\n top: 15px;\n left: 0;\n appearance: none;\n height: 16px;\n width: 16px;\n border: solid 1px #c4c4c4;\n border-radius: 1px;\n background: white;\n\n &:checked {\n &:before {\n content: \"✓\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n font-size: 15px;\n font-weight: bold;\n }\n }\n`;\n\nexport const OutputCheckboxSelectAll = styled(OutputCheckbox)`\n border: solid 1px #8c8c8c;\n\n &:checked {\n border: 1px solid black;\n\n &:before {\n content: \"\";\n display: block;\n height: 8px;\n width: 8px;\n background: black;\n position: absolute;\n top: 0;\n }\n }\n`;\n\nexport const ProgressScreenContainer = styled(\"div\")`\n width: 100vw;\n height: 100vh;\n position: fixed;\n background-color: #fff;\n opacity: 1;\n z-index: 9999999;\n top: 0;\n`;\n\nexport const ProgressBarContainer = styled(\"div\")`\n width: 400px;\n height: 400px;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n margin: auto;\n background-color: #fff;\n opacity: 1;\n z-index: 9999999;\n`;\n\nexport const ProgressBarTrack = styled(\"div\")`\n width: 400px;\n height: 15px;\n padding: 3px;\n position: relative;\n border: 1px solid #ccc;\n text-align: left;\n`;\n\ninterface ProgressBarProgressProps {\n percentComplete: number;\n}\n\nexport const ProgressBarProgress = styled(\"div\")`\n width: ${(props: ProgressBarProgressProps) => props.percentComplete}%;\n height: 9px;\n display: inline-block;\n background-color: #1ce180;\n position: relative;\n left: 0;\n`;\n/*\n transition: width 0.3s;\n transition-timing-function: ease;\n */\n\nexport const ProgressBarCaption = styled(\"div\")`\n width: 400px;\n text-align: center;\n position: relative;\n`;\n","import styled from \"styled-components\";\nimport { Button } from \"./Button\";\n\nexport const TextButton = styled(Button)`\n background: none;\n border: none;\n cursor: pointer;\n box-shadow: none;\n`;\n","import { DialogTrainingState } from \"../Enums/DialogTrainingState\";\nimport {\n OPEN_DIGITAL_SHARE_DIALOGUE_FROM_WRAPPER,\n SET_DIGITAL_SHARE_DIALOG_TRAINING_STATE,\n} from \"./Types\";\nimport {IPdfHtmlData} from \"../Common/Models\";\nimport {Action} from \"redux\";\n\nexport const GET_PDF_LAMBDA = 'SAGAS/GET_PDF_LAMBDA';\n\n\nexport const setDialogTrainingState = (data: DialogTrainingState) => {\n return {\n type: SET_DIGITAL_SHARE_DIALOG_TRAINING_STATE,\n data: data,\n };\n};\n\nexport const openDigitalShareDialogue = (open: boolean) => ({\n type: OPEN_DIGITAL_SHARE_DIALOGUE_FROM_WRAPPER,\n data: open,\n});\n\nexport const getPdfLambdaAction = (\n data: IPdfHtmlData[] | string,\n) => ({\n type: GET_PDF_LAMBDA,\n data,\n});\n\n","import React, { ReactNode } from \"react\";\nimport { ReportDataWrapperHead } from \"../ReportStyles/ReportWrappers\";\nimport { ReportH4 } from \"../ReportStyles/Text\";\nimport { BuxTooltip } from \"../../Common\";\n\ninterface ChartTitleProps {\n titleText: string;\n tooltipText?: string | ReactNode | JSX.Element;\n}\n\nexport const ChartTitle = (props: ChartTitleProps) => {\n const { titleText, tooltipText } = props;\n return (\n \n
\n
\n \n {titleText}\n \n {tooltipText && (\n \n )}\n
\n
\n
\n );\n};\n","import styled from \"styled-components\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\n\ninterface IDot {\n color: string;\n}\n\nexport const ChartButtonWrapper = styled(\"div\")`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding: 15px 20px;\n`;\n\nexport const ChartBodyWrapper = styled(ScrollAnimation)`\n border-radius: 4px;\n border: 1px solid #e4e4e4;\n background-color: ${(props) =>\n props.backgroundColor ? props.backgroundColor : \"#f7f9fb\"};\n width: ${(props) => props.width};\n transition: background-color 0.3s, box-shadow 0.3s;\n &:hover {\n box-shadow: 0 5px 14px 0 rgba(0, 0, 0, 0.12);\n background-color: white;\n }\n ${(props) =>\n props.zoom\n && `\n position: relative;\n z-index: 1; \n transform: scale(1.5)\n `}\n`;\n\nexport const ChartDot = styled.div`\n font-size: 12px;\n display: flex;\n align-items: center;\n margin-left: 18px;\n &:before {\n display: block;\n margin-right: 5px;\n content: \"\";\n border-radius: 50%;\n width: 15px;\n height: 15px;\n background-color: ${(props: IDot) => props.color};\n }\n &:first-child {\n margin-left: 0;\n }\n`;\n\nexport const ChartDotsWrap = styled.div`\n display: flex;\n justify-content: center;\n align-items: flex-end;\n height: 12vh;\n min-height: 50px;\n`;\n\nexport const ChartDots = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n","import React, { CSSProperties, FunctionComponent } from \"react\";\n\ninterface GoogleMapsMarkerProps {\n styles?: CSSProperties;\n}\n\nconst googleMapMarkerLogoPath\n = \"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Google_Maps_pin.svg/1200px-Google_Maps_pin.svg.png\";\n\nexport const GoogleMapsMarker: FunctionComponent = (\n props: GoogleMapsMarkerProps\n) => {\n return (\n \n );\n};\n","import styled from \"styled-components\";\nimport { Checkbox } from \"antd\";\n\nexport const Search = styled.input`\n width: 100%;\n padding: 16px 16px 16px 16px;\n font-size: 14px;\n background: transparent;\n border: solid 1px #eeeeee;\n outline: none;\n border-style: none;\n`;\n\nexport const ReportCheckbox = styled(Checkbox)`\n .ant-checkbox-checked .ant-checkbox-inner {\n background-color: transparent;\n border-color: black;\n &:after {\n border-color: black;\n }\n }\n`;\n","import React, { memo, useEffect } from \"react\";\nimport { useSelector, useDispatch, shallowEqual } from \"react-redux\";\nimport { Dispatch } from \"redux\";\n\nimport { getMapDataSelector } from \"../../../Reducers/Selectors/ReportMapSelectors\";\nimport { cleanMap } from \"../../../Actions/ReportMapActions\";\nimport { MapStyleEnum } from \"../../../Enums/Enums\";\nimport { GoogleDarkMapStyle } from \"./GoogleMapDarkStyle\";\nimport { ReportMapContainer } from \"./Styles/MapStyles\";\n\ninterface IReportMapProps {\n mapDomId: string;\n map: google.maps.Map;\n onMapReady?: () => void;\n createMapAction?: (map: any) => { type: string; data: any };\n}\n\nconst ReportMapNonMemo = (props: IReportMapProps): JSX.Element => {\n /** misc */\n const dispatch: Dispatch = useDispatch();\n /** store */\n const { mapZoom, mapCenter, mapStyles, mapStyleOptions } = useSelector(\n getMapDataSelector,\n shallowEqual\n );\n /** effects */\n useEffect(() => {\n let listener;\n if (props.map === null) {\n const map = new window.google.maps.Map(\n document.getElementById(props.mapDomId),\n {\n zoom: mapZoom,\n center: mapCenter,\n disableDefaultUI: true,\n gestureHandling: \"greedy\",\n }\n );\n\n if (props.onMapReady) {\n listener = window.google.maps.event.addListenerOnce(\n map,\n \"idle\",\n function (e) {\n props.onMapReady();\n }\n );\n }\n\n dispatch(props.createMapAction(map));\n } else {\n if (props.onMapReady) {\n listener = window.google.maps.event.addListenerOnce(\n props.map,\n \"idle\",\n function (e) {\n props.onMapReady();\n }\n );\n }\n const mapNode: Element = props.map.getDiv();\n document.getElementById(props.mapDomId).replaceWith(mapNode);\n }\n\n return () => {\n if (listener) {\n window.google.maps.event.removeListener(listener);\n }\n dispatch(cleanMap());\n };\n }, []);\n\n useEffect(() => {\n if (props.map !== null) {\n props.map.setCenter(mapCenter);\n }\n }, [mapCenter?.lat(), mapCenter?.lng()]);\n\n useEffect(() => {\n if (props.map !== null) {\n props.map.setZoom(mapZoom);\n }\n }, [mapZoom]);\n\n useEffect(() => {\n if (props.map !== null) {\n mapStyleOptions === MapStyleEnum.Dark\n ? props.map.setOptions({ styles: GoogleDarkMapStyle })\n : props.map.setOptions({ styles: null });\n }\n }, [mapStyleOptions]);\n\n return ;\n};\n\nexport const ReportMap = memo(ReportMapNonMemo, (prevProps, nextProps) => {\n const createMapActionEqual = prevProps.createMapAction === nextProps.createMapAction;\n const mapEqual = prevProps.map === nextProps.map;\n const mapDomIdEqual = prevProps.mapDomId === nextProps.mapDomId;\n const onMapReadyEqual = prevProps.onMapReady === nextProps.onMapReady;\n\n return createMapActionEqual\n && mapEqual\n && mapDomIdEqual\n && onMapReadyEqual;\n});","import { FiArrowLeft } from \"@react-icons/all-files/fi/FiArrowLeft\";\nimport React, { FunctionComponent } from \"react\";\n\nimport { BackLink } from \"../Text\";\n\ninterface ReportBackLinkProps {\n text: string;\n hide: boolean;\n onClick: () => void;\n}\n\nexport const ReportBackLink: FunctionComponent = ({\n text,\n hide,\n onClick,\n}) => {\n return (\n <>\n {!hide && (\n \n \n {text}\n \n )}\n \n );\n};\n","import styled from \"styled-components\";\n\nexport const CollabToggleText = styled(\"span\")`\n color: #3d414a;\n font-size: 12px;\n margin-right: 0.5rem;\n font-weight: bold;\n`;\n\nexport const BackLink = styled(\"a\")`\n display: flex;\n align-items: center;\n color: black;\n text-decoration: underline;\n max-width: 120px;\n > svg {\n margin-right: 6px;\n }\n &:hover {\n text-decoration: inherit;\n color: inherit;\n }\n`;\n","import React, { useRef, FunctionComponent, memo, CSSProperties } from \"react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport {\n lightBorderGray,\n altGrayTextColor,\n} from \"../../../globalStyles/colors/scoutColors\";\n\nimport { ReportActionButton } from \"./Buttons\";\nimport styled from \"styled-components\";\nimport { useOutsideClick } from \"..\";\n\ninterface IMenuProps {\n title: string;\n noButton?: boolean;\n mobile?: boolean;\n style?: CSSProperties;\n icon?: JSX.Element;\n iconRight?: JSX.Element;\n type?: string;\n bgColor?: string;\n color?: string;\n disabled?: boolean;\n isOpen: boolean;\n fontSize?: number;\n align?: \"left\" | \"right\";\n setIsMenuOpen: (open: boolean) => void;\n buttonStyle?: CSSProperties;\n wrapperStyle?: CSSProperties;\n hideTitle?: boolean;\n}\n\ninterface IMenuLinkProps {\n title?: JSX.Element | string;\n className?: string;\n clickCallback?: () => void;\n style?: CSSProperties;\n}\n\nconst Wrapper = styled.div`\n position: relative;\n`;\n\nconst MenuWrapper = styled(motion.div)`\n background-color: #ffffff;\n top: 50px;\n position: absolute;\n box-shadow: 0px 2px 13px 0px rgba(0, 0, 0, 0.1);\n z-index: 200;\n border-radius: 5px;\n min-width: 185px;\n overflow: hidden;\n width: 328px;\n padding: 0;\n > hr {\n border: 1px solid ${lightBorderGray};\n border-top: 0;\n }\n`;\n\nconst LinkWrapper = styled.a`\n min-width: 120px;\n padding: 14px 16px;\n display: flex;\n align-items: center;\n font-size: 14px;\n text-decoration: none;\n color: #00000090;\n cursor: pointer;\n transition: color 0.3s, font-weight 0.3s;\n &:hover,\n &.active {\n background: #f5f6f7;\n color: ${altGrayTextColor};\n }\n &.active {\n font-weight: 500;\n }\n`;\n\nexport const MenuLink: FunctionComponent = memo((props) => {\n return (\n \n {props.title}\n \n );\n});\n\nexport const Menu: FunctionComponent = (props) => {\n const ref = useRef();\n\n useOutsideClick(ref, () => {\n if (props.isOpen) {\n props.setIsMenuOpen(false);\n }\n });\n\n const menuWrapper = () => {\n let wrapper: JSX.Element = null;\n if (props.isOpen) {\n wrapper = (\n \n {props.children}\n \n );\n }\n\n return wrapper;\n };\n\n return (\n \n {menuWrapper()}\n props.setIsMenuOpen(true)}\n menu={true}\n className={props.isOpen ? `active` : ``}\n bgColor={props.bgColor}\n color={props.color}\n icon={props.icon}\n iconRight={props.iconRight}\n disabled={props.disabled}\n fontSize={props.fontSize}\n style={props.buttonStyle}\n />\n \n );\n};\n","import styled, { css } from \"styled-components\";\nimport { Button } from \"../\";\nimport { device } from \"../../../globalStyles/breakpoints\";\n\ninterface IButton {\n title: string;\n type?: \"filled\";\n className?: string;\n color?: string;\n disabled?: boolean;\n fontSize?: number;\n noPadding?: boolean;\n}\n\nexport const ReportButtonFilledHoverStyles = css`\n transition: opacity 0.2s;\n &:hover {\n opacity: 0.7;\n }\n`;\n\nexport const ReportButtonGhostHoverStyles = css`\n transition: border-color 0.2s;\n &:hover {\n border-color: #aaaaaa;\n }\n`;\n\nexport const ReportButton = styled(Button)`\n height: 41px;\n display: flex;\n width: initial;\n justify-content: center;\n\n ${(props: IButton) =>\n props.disabled\n ? `cursor: default;\n opacity: 0.3;`\n : \"\"}\n color: ${(props: IButton) => (props.color ? props.color : \"black\")};\n ${(props: IButton) =>\n props.type === \"filled\"\n ? ReportButtonFilledHoverStyles\n : ReportButtonGhostHoverStyles};\n\n ${device.desktop} {\n width: 100%;\n }\n`;\n\nexport const ReportActionButton = styled(Button)`\n width: 100%;\n display: flex;\n height: 38px;\n padding-right: ${(props: IButton) => (props.noPadding ? \"0\" : \"16px\")};\n padding-left: ${(props: IButton) => (props.noPadding ? \"0\" : \"16px\")};\n justify-content: center;\n align-items: center;\n border-style: solid;\n border-width: 1px;\n border-color: #f0f0f0;\n border-radius: 4px;\n background-color: #fff;\n cursor: pointer;\n color: #141414;\n margin: 0;\n font-size: ${(props: IButton) =>\n props.fontSize ? `${props.fontSize}px` : \"15px\"};\n ${(props: IButton) =>\n props.type === \"filled\"\n ? ReportButtonFilledHoverStyles\n : ReportButtonGhostHoverStyles};\n ${(props: IButton) =>\n props.disabled\n ? `cursor: default;\n opacity: 0.3;`\n : \"\"}\n`;\n\nexport const ButtonWrap = styled(\"div\")`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 285px;\n\n ${device.desktop} {\n width: 100%;\n }\n\n @media print {\n display: none;\n }\n`;\n","import styled, { css } from \"styled-components\";\nimport { Link } from \"react-scroll\";\nimport { Menu } from \"antd\";\nimport { device, sizeConstants } from \"../../../globalStyles/breakpoints\";\n\nconst StickyNavActive = css`\n box-shadow: 0px 7px 15px 0px #00000017;\n color: #000;\n`;\n\nexport const StickyNav = styled.div`\n position: sticky;\n width: 100%;\n background-color: #f7f9fb;\n border-bottom: 1px solid #f0f0f0;\n border-top: 1px solid #f0f0f0;\n z-index: 1;\n top: 0;\n transition: box-shadow 0.3s;\n border-style: solid;\n border-width: 1px 0px;\n border-color: #e2e2e2 #000;\n &.stuck {\n box-shadow: 0 2px 3px 0 rgba(67, 74, 84, 0.11);\n }\n`;\n\nexport const StickyDropdown = styled(Menu)`\n position: sticky;\n width: 100%;\n background-color: #f7f9fb;\n border-bottom: 1px solid #f0f0f0;\n border-top: 1px solid #f0f0f0;\n z-index: 1;\n top: 0;\n transition: box-shadow 0.3s;\n border-style: solid;\n border-width: 1px 0px;\n border-color: #e2e2e2 #000;\n`;\n\nexport const StickyNavContent = styled.div`\n display: flex;\n margin: auto;\n max-width: ${sizeConstants.containerMaxWidth}px;\n width: 100%;\n padding: 0px ${sizeConstants.mobileLRContainerPadding}px;\n height: 56px;\n align-items: center;\n overflow-x: auto;\n\n ${device.containerMaxWidth} {\n padding: 0;\n }\n`;\n\ninterface StickyNavItemProps {\n color: string;\n}\n\nexport const StickyNavItem = styled(Link)`\n padding: 6px 14px 5px;\n line-height: 23px;\n border-radius: 17.5px;\n list-style: none;\n color: #000000;\n display: flex;\n align-items: center;\n margin-right: 12px;\n white-space: nowrap;\n transition: box-shadow 0.2s, color 0.2s, background-color 0.2s;\n :hover {\n color: #000;\n background-color: #fff;\n box-shadow: 0px 7px 15px 0px #00000017;\n }\n &.active {\n ${StickyNavActive}\n background-color: ${(props: StickyNavItemProps) => props.color};\n color: #ffffff;\n }\n`;\n","import { Badge, Dropdown, Icon, Menu } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, useHistory } from \"react-router-dom\";\n\nimport { hasFeature } from \"../../../Actions/UserActions\";\nimport ActiveUsers from \"../../../Components/Common/Menus/ActiveUsers\";\nimport UserDropdown from \"../../../Components/Common/User Dropdown/UserDropdown\";\nimport { ScoutFeature } from \"../../../Enums/ScoutFeature\";\nimport { IUser } from \"../../../Models/IUser\";\nimport { showActiveUsersSelector } from \"../../../Reducers/Selectors/UserSelectors\";\nimport { setCurrentApp } from \"../Actions/AppActions\";\nimport { getRedirectLinkInitiate } from \"../Actions/CommonActions\";\nimport { getLoginUserData } from \"../Actions/LoginActions\";\nimport { getNotificationsInitiate, setNotificationsDrawerVisible } from \"../Actions/NotificationActions\";\nimport { setShowActiveUsers } from \"../Actions/UserActions\";\nimport { topNavHeightPx } from \"../Constants/StyleConstants\";\nimport { App } from \"../Enums/App\";\nimport { isAppOutsideOfScout } from \"../Logic/AppLogic\";\nimport { linkColor, treatLinkAsInternal } from \"../Logic/NavLogic\";\nimport { ILinkObject } from \"../Models/ILinkObject\";\nimport { ILoginUserData } from \"../Models/Models\";\nimport { linkListConfig } from \"../Pages/Home/Login/LinkConfig\";\nimport { currentAppSelector } from \"../Selectors/AppSelectors\";\nimport { loginSelector } from \"../Selectors/LoginSelectors\";\nimport {\n notificationsCountSelector,\n notificationsDrawerVisibleSelector,\n notificationsFilterDatesSelector\n} from \"../Selectors/NotificationsSelectors\";\n\ninterface INavBarProps {\n isScout?: boolean;\n user: IUser;\n}\n\nconst badgeOffset = {\n left: \"-7px\",\n top: \"7px\"\n};\n\nexport const NavBar = (props: INavBarProps): JSX.Element => {\n /** misc */\n const dispatch = useDispatch();\n const history = useHistory();\n /** store */\n const currentApp: App = useSelector(currentAppSelector);\n const loginUser: ILoginUserData = useSelector(loginSelector);\n const showActiveUsers: boolean = useSelector(showActiveUsersSelector);\n const notificationCount: number = useSelector(notificationsCountSelector);\n const notificationsDrawerVisible: boolean = useSelector(notificationsDrawerVisibleSelector);\n const notificationFilterDates: [Date, Date] = useSelector(notificationsFilterDatesSelector);\n /** state */\n const [navMenuOpen, setNavMenuOpen] = useState(false);\n const [iQUrl, setIqUrl] = useState(\"\");\n const [factorUrl, setFactorUrl] = useState(\"\");\n const [analyzeUrl, setAnalyzeUrl] = useState(\"\");\n const [personaUrl, setPersonaUrl] = useState(\"\");\n\n // Fix current app in old app world\n const href = history.location.pathname;\n useEffect(() => {\n if (href.includes(\"/Mobilytics\") && currentApp !== App.Mobilytics) {\n dispatch(setCurrentApp(App.Mobilytics));\n } else if (href.includes(\"/Match\") && currentApp !== App.Match) {\n dispatch(setCurrentApp(App.Match));\n } else if (href.includes(\"/MyReports\") && currentApp !== App.MyReports) {\n dispatch(setCurrentApp(App.MyReports));\n } else if (href.includes(\"/Reports\") && currentApp !== App.Reports) {\n dispatch(setCurrentApp(App.Reports));\n } else if (href.includes(\"/Settings\") && currentApp !== App.UserSettings) {\n dispatch(setCurrentApp(App.UserSettings));\n } else if (href.includes(\"/Home/Scout\") && currentApp !== App.Scout) {\n dispatch(setCurrentApp(App.Scout));\n }\n }, [currentApp, href]);\n /** effects */\n useEffect(() => {\n //This effect is here in the navbar because it's the 1 component that is common to both sections of the app (classic SCOUT and new UI)\n if (loginUser?.firstName?.trim() === \"\") {\n dispatch(getLoginUserData());\n }\n\n /** Get notifications for a user upon entering the screen */\n dispatch(getNotificationsInitiate(notificationFilterDates));\n /** poll for notifications - they may have a report that is being submitted */\n const notificationsTimer: NodeJS.Timeout = setInterval(() => {\n dispatch(getNotificationsInitiate(notificationFilterDates));\n }, 15000);//in milliseconds\n /** when the component un-mounts, stop the interval */\n return () => {\n clearInterval(notificationsTimer);\n };\n\n }, []);\n\n /** calling these endpoints ourselves to retrieve the link that redirects the user\n * to the appropriate external product\n */\n const endpoints = [\n '/Redirect/OtherProducts?product=IQ',\n '/Redirect/OtherProducts?product=Factor',\n '/Redirect/OtherProducts?product=Analyze',\n '/Redirect/OtherProducts?product=Persona',\n ];\n\n useEffect(() => {\n axios.all(endpoints.map((endpoint) => axios.get(endpoint)))\n .then(\n axios.spread(({data: iq}, {data: factor}, {data: analyze}, {data: persona}) => {\n setIqUrl(iq.data);\n setFactorUrl(factor.data);\n setAnalyzeUrl(analyze.data);\n setPersonaUrl(persona.data);\n })\n ).catch(error => console.log(error));\n }, []);\n\n const navMenuClick = (): void => {\n setNavMenuOpen(!navMenuOpen);\n };\n\n const getCurrentAppFriendly = (): string => {\n switch (currentApp) {\n case App.Match: {\n return \"match\";\n }\n case App.Mobilytics: {\n return \"mobilytics\";\n }\n case App.MyReports:\n case App.Reports: {\n return \"my reports\";\n }\n case App.Scout: {\n return \"scout\";\n }\n case App.UserSettings: {\n return \"user settings\";\n }\n default: {\n return \"\";\n }\n }\n };\n\n const onBellClick = (): void => {\n dispatch(setNotificationsDrawerVisible(!notificationsDrawerVisible));\n };\n\n const onActiveUsersClose = (): void => {\n dispatch(setShowActiveUsers(false));\n };\n\n const onNavMenuItemClick = (app: App) => {\n if (app === App.Factor || app === App.Iq || app === App.Analyze || app === App.Persona) {\n if (app === App.Factor && loginUser?.featureAccess.indexOf(ScoutFeature.Factor) > -1) {\n dispatch(getRedirectLinkInitiate(\"Factor\"));\n } else if (app === App.Iq && loginUser?.featureAccess.indexOf(ScoutFeature.IQ) > -1) {\n dispatch(getRedirectLinkInitiate(\"IQ\"));\n } else if (app === App.Analyze && loginUser?.featureAccess.indexOf(ScoutFeature.Analyze) > -1) {\n dispatch(getRedirectLinkInitiate(\"Analyze\"));\n } else if (app === App.Persona && loginUser?.featureAccess.indexOf(ScoutFeature.Persona) > -1) {\n dispatch(getRedirectLinkInitiate(\"Persona\"));\n } else {\n window.location.href = `${window.location.origin}/Products#/`;\n }\n } else {\n dispatch(setCurrentApp(app));\n }\n };\n\n // Get external link for navLinks\n const getExternalLink = (isOutSideOfScout: boolean, link: ILinkObject, color: string) => {\n if (isOutSideOfScout) {\n let url = \"\";\n switch(link.app) {\n case App.Iq:\n url = iQUrl;\n break;\n case App.Factor:\n url = factorUrl;\n break;\n case App.Analyze:\n url = analyzeUrl;\n break;\n case App.Persona:\n url = personaUrl;\n break;\n }\n\n return (\n \n {link.title}\n \n );\n } else {\n return (\n \n {link.title}\n \n );\n\n }\n };\n\n const navLinks = loginUser?.featureAccess\n ? linkListConfig(loginUser.featureAccess)\n .filter(link => link.exists)\n .map((link: ILinkObject) => {\n const color: string = linkColor(link, getCurrentAppFriendly());\n const isInternal: boolean = treatLinkAsInternal(link, currentApp);\n const outsideOfScout: boolean = isAppOutsideOfScout(link.app);\n return (\n onNavMenuItemClick(link.app)}>\n {\n isInternal\n ? \n {link.title}\n \n : getExternalLink(outsideOfScout, link, color)\n }\n \n );\n })\n : [];\n\n\n const showNotifications = (): boolean => {\n if (props.user !== null) {\n return hasFeature(props.user, ScoutFeature.GpsInsights)\n || hasFeature(props.user, ScoutFeature.RetailMatchReports);\n }\n return false;\n };\n\n return (\n \n \n {navLinks}\n \n }\n >\n \n \n {\n props.isScout\n ? \n : \n {getCurrentAppFriendly()}\n \n }\n {showNotifications() && (\n \n \n \n \n \n )}\n {props.user !== null && (\n
\n \n
\n )}\n {showActiveUsers && (\n \n )}\n \n );\n};\n","export const isInFullScreen = (): boolean => {\n return (\n (window as any).document.webkitIsFullScreen\n || (window as any).document.mozFullScreen\n || (window as any).document.msFullscreenElement === null\n );\n};\n\nexport const exitFullScreen = (): void => {\n if ((window as any).document.cancelFullScreen) {\n (window as any).document.cancelFullScreen();\n } else if ((window as any).document.mozCancelFullScreen) {\n (window as any).document.mozCancelFullScreen();\n } else if ((window as any).document.webkitCancelFullScreen) {\n (window as any).document.webkitCancelFullScreen(\n (Element as any).ALLOW_KEYBOARD_INPUT\n );\n }\n};\n\nexport const enterFullScreen = (): void => {\n if ((window as any).document.fullScreenElement) {\n (window as any).document.documentElement.requestFullScreen();\n } else if ((window as any).document.documentElement.mozRequestFullScreen) {\n (window as any).document.documentElement.mozRequestFullScreen();\n } else if ((window as any).document.documentElement.webkitRequestFullScreen) {\n (window as any).document.documentElement.webkitRequestFullScreen();\n }\n};\n","import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { topNavHeightPx } from \"../../../View/Products/Constants/StyleConstants\";\n\ninterface INavigationDropdownProps {\n dropdownPosition: string;\n triggerWidth?: number;\n triggerType?: string;\n isMainNavItem?: boolean;\n}\n\ninterface INavItemProps {\n padding?: string;\n custom?: string;\n type?: string;\n isMainNavItem?: boolean;\n}\n\ninterface INavDropdownProps {\n dropdownPosition?: string;\n triggerWidth?: number;\n className?: string;\n trigger: string | JSX.Element;\n triggerType: string;\n triggerClass?: string;\n triggerPadding?: string;\n triggerCustom?: string;\n children: any;\n isMainNavItem?: boolean;\n}\n\ninterface INavDropdownState {\n open: boolean;\n}\n\nconst NavDropdownItemStyle = () => {\n return `color: #3d414a;\n background-color: transparent;\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-weight: normal;\n font-size: 14px;\n transition: background-color 0.3s, padding 0.3s;\n > * {\n color: inherit;\n }\n &:first-child {\n border-radius: 4px 4px 0 0;\n }\n &:last-child {\n border-radius: 0 0 4px 4px;\n }\n`;\n};\n\nconst centerDropdown = `\n right: 50%;\n transform: translateX(50%);\n`;\n\nconst rightDropdown = (triggerWidth: number) => `\n right: calc(100% - ${triggerWidth}px);\n`;\n\nconst leftInnerDropdown = `\n right: initial;\n left: -3px;\n transform: translateX(-100%);\n top: 0;\n`;\n\nconst NavItemBaseStyles = (props: INavItemProps) => {\n return `box-sizing: border-box;\n height: 56px;\n text-decoration: none;\n color: #3d414a;\n display: flex;\n justify-content: center;\n align-items: center;\n letter-spacing: 2px;\n border-bottom: 1.75px solid transparent;\n text-transform: uppercase;\n transition: color 0.3s, border-color 0.3s;\n &.border-right {\n border-right: 1px solid rgba(67, 74, 84, 0.11);\n }\n &.full-screen {\n display: flex;\n }\n ${props.padding ? `${props.padding}` : `padding: 19px 2% 20px;`}\n ${props.custom ? `${props.custom}` : ``}\n @media screen and (min-width: 1025px) {\n ${props.type !== \"NavDropdownItem\" && props.padding\n ? `${props.padding}`\n : `padding: 19px 19px 20px;`\n}\n }\n`;\n};\n\nconst Nav = styled.nav`\n display: flex;\n justify-content: space-between;\n position: fixed;\n top: ${topNavHeightPx}px;\n z-index: 3;\n height: ${topNavHeightPx}px;\n width: 100vw;\n padding: 0 16px 0 58px;\n font-family: Manrope, sans-serif;\n font-size: 10px;\n color: #3d414a;\n background-color: white;\n font-weight: 900;\n box-shadow: 0 2px 3px 0 rgba(67, 74, 84, 0.11);\n opacity: 0;\n transition: opacity 0.4s;\n &.visible {\n opacity: 1;\n }\n + section {\n height: 100%;\n }\n`;\n\nconst NavSection = styled.div`\n display: flex;\n flex-grow: 0;\n align-items: center;\n &:nth-of-type(2) {\n justify-content: flex-end;\n > *,\n > *:hover {\n border-bottom: 1px solid transparent;\n }\n }\n > img {\n margin-right: 2vw;\n @media screen and (min-width: 1024px) {\n margin-right: 5vw;\n }\n }\n`;\n\nconst NavigationDropdown = styled.div`\n position: relative;\n transition: padding 0.3s;\n height: ${(props) =>\n props.isMainNavItem\n ? `${topNavHeightPx}px;`\n : \"34px;\"}\n\n .dropdown-list {\n position: absolute;\n background-color: white;\n border-radius: 4px;\n margin-top: 2px;\n min-width: 200px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);\n visibility: hidden;\n transition: opacity 0.3s, visibility 0s linear 0.3s;\n opacity: 0;\n z-index: 4;\n\n ${(props: INavigationDropdownProps) =>\n props.dropdownPosition === \"right\"\n ? `${rightDropdown(props.triggerWidth)}`\n : `${centerDropdown}`}\n ${(props: INavigationDropdownProps) =>\n props.dropdownPosition === \"left\"\n && props.triggerType === \"NavDropdownItem\"\n ? `${leftInnerDropdown}`\n : ``}\n > * {\n padding: 2px 16px;\n }\n}\n \n &.open {\n > .dropdown-list {\n opacity: 1;\n visibility: visible;\n transition: opacity 0.3s, visibility 0s;\n > * {\n &:hover {\n background-color: rgba(67, 74, 84, 0.1);\n }\n }\n }\n }\n`;\n\nconst NavItem = styled(\"span\") `\n cursor: pointer;\n white-space: nowrap;\n height: 34px;\n\n a:focus {\n text-decoration: none;\n }\n\n &:hover,\n &.active,\n ${NavigationDropdown}:hover & {\n border-color: #e6c804;\n }\n ${(props) =>\n props.type === \"NavDropdownItem\"\n ? NavDropdownItemStyle\n : NavItemBaseStyles(props)}\n input, button {\n border: 0;\n background-color: transparent;\n padding: 0;\n }\n form,\n form input,\n form button {\n cursor: pointer;\n }\n`;\n\nconst Counter = styled.span`\n display: inline-block;\n background-color: red;\n color: white;\n border-radius: 12px;\n box-sizing: border-box;\n line-height: 11px;\n min-width: 20px;\n height: 20px;\n padding: 4px 6px 4px 7px;\n margin-left: 4px;\n`;\n\n/**\n * Nav dropdown type\n * @param props (obj)\n */\nclass NavDropdown extends React.Component<\n INavDropdownProps,\n INavDropdownState\n> {\n private dropdownList = React.createRef();\n\n constructor(props: INavDropdownProps) {\n super(props);\n\n this.state = {\n open: false,\n };\n }\n\n public showMenu = (event) => {\n event.preventDefault();\n\n this.setState({ open: true }, () => {\n document.addEventListener(\"click\", this.closeMenu);\n });\n };\n\n public closeMenu = (event) => {\n if (\n !this.dropdownList.current.contains(event.target)\n || event.target.children.length === 0\n ) {\n this.setState({ open: false }, () => {\n document.removeEventListener(\"click\", this.closeMenu);\n });\n }\n };\n\n public render() {\n return (\n \n \n {this.props.trigger}\n \n
\n {this.props.children}\n
\n \n );\n }\n}\n\nexport { Nav, NavSection, NavItem, NavDropdown, Counter };\n","import { ILoginUserData, ILinkObject } from \"../Models/Models\";\nimport { buxtonLimeGreen, buxtonNavyBlue } from \"../Constants/StyleConstants\";\nimport { App } from \"../Enums/App\";\nimport { LinkType } from \"../Enums/LinkType\";\n\nconst productPageApps = [\n App.Match,\n App.Mobilytics,\n App.Analyze,\n];\n\nexport const createExternalNavLink = (linkData: ILinkObject, user?: ILoginUserData): string => {\n return linkData.type === LinkType.External\n ? `${window.location.origin}/Products#/${linkData.link}`\n : linkData.link + `?viewing=${user.userID}`;\n};\n\nexport const linkColor = (link: ILinkObject, currentApp: string):string => {\n return link.title.toUpperCase() === currentApp.toUpperCase()\n ? buxtonLimeGreen\n : buxtonNavyBlue;\n};\n\nexport const treatLinkAsInternal = (link: ILinkObject, currentApp: App): boolean => {\n if (currentApp === App.Scout || link.app === App.MobilyticsPro) {\n return false;\n }\n\n const linkIsProduct = productPageApps.some(app => app === link.app);\n const currentAppIsProduct = productPageApps.some(app => app === currentApp);\n\n return linkIsProduct && currentAppIsProduct;\n};\n","import { Button, DatePicker, Icon, Input, List, Popconfirm, Popover } from \"antd\";\nimport { RangePickerValue } from \"antd/lib/date-picker/interface\";\nimport moment from \"moment\";\nimport React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { getSingleReportLink } from \"../../../../Logic/ReportLogic\";\nimport { IUser } from \"../../../../Models/IUser\";\n\nimport {\n getNotificationsInitiate,\n setNotificationsByLinkIdViewedInitiate,\n setNotificationsDrawerVisible,\n setNotificationsFilterDates,\n updateAllNotificationsActiveStatusInitiate,\n updateAllNotificationsReadStatusInitiate,\n updateNotificationInitiate\n} from \"../../Actions/NotificationActions\";\nimport { App } from \"../../Enums/App\";\nimport { NotificationType } from \"../../Enums/NotificationType\";\nimport { INotification } from \"../../Models/Notification\";\nimport { UpdateNotificationRequest } from \"../../Models/Requests/Notifications/UpdateNotificationRequest\";\nimport {\n loadingNotificationsSelector,\n notificationsDrawerVisibleSelector,\n notificationsSelector,\n notificationsFilterDatesSelector\n} from \"../../Selectors/NotificationsSelectors\";\nimport { SideNav } from \"../SideNav\";\nimport {\n getBaseUrlFromNotificationType,\n getFilteredNotifications,\n getFixedNotificationDates,\n getNotificationCursor,\n getNotificationDateTimeValue,\n getNotificationIcon\n} from \"./NotificationsLogic\";\nimport { Circle, DateTimeText, DeleteConfirmWrapper, NotificationIconWrapper, NotificationsEmptyWrapper, StyledList, StyledModalHeader, StyledUl, TitleText } from \"./NotificationsStyled\";\n\n/** how the date displays in the date picker */\nconst dateFormat = 'MM/DD/YYYY';\n\ninterface INotificationsModalProps {\n user: IUser;\n};\n\nexport const NotificationsModal = (props: INotificationsModalProps): JSX.Element => {\n /** misc */\n const dispatch = useDispatch();\n /** state */\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [filteredNotifications, setFilteredNotifications] = useState([]);\n const [confirmingNotification, setConfirmingNotification] = useState(null);\n /** selectors */\n const notifications: INotification[] = useSelector(notificationsSelector);\n const loading: boolean = useSelector(loadingNotificationsSelector);\n const visible: boolean = useSelector(notificationsDrawerVisibleSelector);\n const filterDates: [Date, Date] = useSelector(notificationsFilterDatesSelector);\n /** effects */\n useEffect(() => {\n if (!visible) {\n setSearchTerm(\"\");\n setFilteredNotifications([]);\n setConfirmingNotification(null);\n }\n }, [visible]);\n\n useEffect(() => {\n const filtered: INotification[] = getFilteredNotifications(notifications, searchTerm, filterDates);\n setFilteredNotifications(filtered);\n }, [notifications, searchTerm, filterDates]);\n\n const onViewAll = (): void => {\n //TODO: there is no design for this yet.\n console.log(\"onViewAll - no design for this yet\");\n };\n\n const onNotificationClick = (n: INotification): void => {\n /** don't allow clicks for reports that are not complete */\n if (n.notificationType === NotificationType.MatchReportComplete\n || n.notificationType === NotificationType.MobilyticsReportComplete) {\n /** mark associated notifications as viewed */\n dispatch(setNotificationsByLinkIdViewedInitiate(n.linkId));\n /** navigate to the report */\n dispatch(setNotificationsDrawerVisible(false));\n const reportType = NotificationType[n.notificationType].toLowerCase().includes(\"matchreport\")\n ? App.Match\n : App.Mobilytics;\n\n window.location.href = getSingleReportLink(props.user, reportType, n.linkId);\n }\n };\n\n const confirmDelete = (n: INotification): void => {\n setConfirmingNotification(n);\n };\n\n const cancelConfirmDelete = (): void => {\n setConfirmingNotification(null);\n };\n\n /** simply change the read status for the clicked on notification */\n const onReadStatusClick = (item: INotification): void => {\n const foundNotification: INotification = notifications.find((n: INotification) => {\n return n.id === item.id;\n });\n if (foundNotification) {\n foundNotification.isRead = !foundNotification.isRead;\n const request = new UpdateNotificationRequest(\n foundNotification\n );\n dispatch(updateNotificationInitiate(request));\n }\n };\n /** simply change the active status for the clicked on notification */\n const onDeleteClick = (item: INotification): void => {\n const foundNotification: INotification = notifications.find((n: INotification) => {\n return n.id === item.id;\n });\n if (foundNotification) {\n foundNotification.isActive = false;\n const request = new UpdateNotificationRequest(foundNotification);\n dispatch(updateNotificationInitiate(request));\n }\n };\n /** change read status for all notifications */\n const onReadStatusAllClick = (allRead: boolean): void => {\n dispatch(updateAllNotificationsReadStatusInitiate(allRead));\n };\n /** change active status for all notifications */\n const onActiveStatusAllClick = (allActive: boolean): void => {\n dispatch(updateAllNotificationsActiveStatusInitiate(allActive));\n };\n /** sets the search term based on user input */\n const onSearchChange = (value: string): void => {\n setSearchTerm(value);\n };\n /** simply sets the filter dates for start and end date based on the user's choices */\n const onDateRangeChange = (dates: RangePickerValue, dateStrings: [string, string]): void => {\n /** GB:\n * There has to be a bug with this AntD component. If you choose a date range\n * that is a day apart (like a Thursday and Friday), the second value will be undefined, and the\n * first value (which should be the start date) will actually be the end date.\n *\n * So this code accounts for that scenario. PSH! Interestingly enough, this does NOT happen if you choose\n * the same date for the start and end date.\n */\n let startDate: Date = dates[0].toDate();\n let endDate: Date = dates[1]?.toDate();\n\n if (endDate === undefined) {\n const start: Date = dates[0].toDate();\n start.setDate(start.getDate() - 1);\n startDate = start;\n endDate = dates[0].toDate();\n }\n const dateRange: [Date, Date] = getFixedNotificationDates(startDate, endDate);\n dispatch(setNotificationsFilterDates(dateRange));\n dispatch(getNotificationsInitiate(dateRange));\n };\n\n const onDrawerClose = (): void => {\n dispatch(setNotificationsDrawerVisible(false));\n };\n\n const getEmptyText = (): JSX.Element => {\n let text = \"\";\n if (loading) {\n text = \"Loading...\";\n } else if (notifications.length > 0 && searchTerm.trim().length > 0 && filteredNotifications.length === 0) {\n /** they have notifications, but they've filtered them out via search term */\n text = \"No notifications containing this term.\";\n } else {\n text = \"No notifications within this date range.\";\n }\n return (\n {text}\n );\n };\n\n const allNotificationsAreRead: boolean = notifications.every((n: INotification) => {\n return n.isRead;\n });\n const allNotificationsAreUnread: boolean = notifications.every((n: INotification) => {\n return !n.isRead;\n });\n const allowDeleteAll: boolean = notifications.some((n: INotification) => {\n return n.isActive;\n });\n\n return (\n \n \n
NOTIFICATIONS
\n {notifications.length > 0 && (\n \n !allNotificationsAreRead && onReadStatusAllClick(true)}\n okText=\"Yes, mark all as read\"\n cancelText=\"No\"\n placement=\"left\"\n disabled={allNotificationsAreRead}\n >\n
  • Mark All As Read
  • \n \n !allNotificationsAreUnread && onReadStatusAllClick(false)}\n okText=\"Yes, mark all as unread\"\n cancelText=\"No\"\n placement=\"left\"\n disabled={allNotificationsAreUnread}\n >\n
  • Mark All As Unread
  • \n \n allowDeleteAll && onActiveStatusAllClick(false)}\n okText=\"Yes, delete all my notifications\"\n cancelText=\"No\"\n placement=\"left\"\n disabled={!allowDeleteAll}\n >\n
  • Delete All
  • \n \n \n )}>\n \n \n )}\n
    \n <>\n
    \n onDateRangeChange(dates, dateStrings)}\n disabledDate={(d: moment.Moment) => d.startOf(\"day\") > moment(new Date()).startOf(\"day\")}\n style={{\n marginRight: \"9px\"\n }}\n format={dateFormat}\n />\n onSearchChange(e.target.value)} />\n
    \n (\n \n \n {getNotificationIcon(item)}\n \n onNotificationClick(item)}>\n \n {item.title}\n \n
    {item.description}
    \n \n \n {getNotificationDateTimeValue(item.createdDate)}\n \n \n \n !item.isRead && onReadStatusClick(item)}\n style={{\n opacity: item.isRead\n ? \"50%\"\n : \"initial\"\n }}>\n Mark as Read\n \n item.isRead && onReadStatusClick(item)}\n style={{\n opacity: !item.isRead\n ? \"50%\"\n : \"initial\"\n }}>\n Mark as Unread\n \n
  • confirmDelete(item)}>Delete
  • \n \n )}>\n \n \n {confirmingNotification?.id === item.id && (\n \n
    Delete Notification?
    \n
    \n No\n onDeleteClick(item)}\n style={{ backgroundColor: \"#2e3d49\", color: \"#fff\" }}>Yes\n
    \n
    \n )}\n \n )}\n />\n \n {/* \n {notifications.length > 0 && !loading && (\n View All\n )}\n */}\n \n );\n};\n","/* eslint-disable react/prop-types */\nimport { Drawer } from \"antd\";\nimport React, { CSSProperties, FunctionComponent } from \"react\";\n\nimport { topNavHeightPx } from \"../Constants/StyleConstants\";\n\n/**\n * See this page for the API of the \"Drawer\" component.\n *\n * UTL: https://3x.ant.design/components/drawer/\n */\n\ninterface SideNavProps {\n onCloseCallback: () => void;\n placement: \"left\" | \"top\" | \"right\" | \"bottom\";\n visible: boolean;\n width: string;\n bodyStyle?: CSSProperties;\n mask: boolean;\n maskClosable: boolean;\n closeable?: boolean;\n}\n\nexport const SideNav: FunctionComponent = ({\n children,\n onCloseCallback,\n placement,\n visible,\n width,\n bodyStyle,\n mask,\n maskClosable,\n closeable\n}): JSX.Element => {\n\n const onDrawerClose = (): void => {\n onCloseCallback();\n };\n\n return (\n \n {children}\n \n );\n};\n","import * as React from \"react\";\nimport { GoogleMap, Marker, Polygon, withGoogleMap } from \"react-google-maps\";\nimport { IStore, ITerritory } from \"../../../../Models/Models\";\n\nclass ItemMap extends React.Component {\n private googleMap: GoogleMap = null;\n private mapBounds = {\n east: 0,\n north: 0,\n south: 0,\n west: 0,\n };\n private latArray: Array = [];\n private lngArray: Array = [];\n private item: any = null; // either IStore or ITerritory - cannot use union type here\n private mapHeight = 32;\n private mapWidth = 32;\n private defaultMapZoom = 0;\n private googleMapOptions = {\n disableDefaultUI: true,\n };\n private defaultMapCenter = {\n // gets overridden depending on object type\n lat: 0,\n lng: 0,\n };\n private polygonCoordinates: any[] = [];\n private markerIcon = null;\n private mapData = null;\n /**\n *\n */\n constructor(props) {\n super(props);\n this.item = props.item;\n }\n\n public render() {\n this.setDefaultMapZoom();\n\n if (this.isStore(this.item)) {\n this.setDefaultMapCenter();\n this.setMarkerIcon();\n } else if (this.isTerritory(this.item)) {\n this.getTerritoryMapData();\n this.getDefaultMapCenterTerritory();\n }\n\n if (this.isStore(this.item)) {\n this.mapData = (\n \n );\n } else if (this.isTerritory(this.item)) {\n this.mapData = ;\n }\n\n const mapObj = (\n this.setGoogleMap(map)}\n >\n {this.mapData}\n \n );\n\n return
    {mapObj}
    ;\n }\n\n private setGoogleMap = (mapObj: GoogleMap): any => {\n if (mapObj) {\n this.googleMap = mapObj;\n if (this.isTerritory(this.item)) {\n this.googleMap.fitBounds(this.mapBounds);\n }\n //console.log(\"Google Map: \", this.googleMap);\n }\n };\n\n // private resizeMap = (): void => {\n // console.log(\"RESIZING\");\n // setTimeout((): void => {\n // google.maps.event.trigger(\n // this.googleMap.context.__SECRET_MAP_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n // 'resize'\n // );\n // }, 500);\n // }\n\n private setMarkerIcon = (): void => {\n if (this.isStore(this.item)) {\n this.markerIcon = {\n url: this.item.iconPath,\n size: {\n width: this.mapWidth,\n height: this.mapHeight,\n },\n anchor: {\n x: this.mapWidth / 2,\n y: this.mapHeight / 2,\n },\n scaledSize: {\n width: this.mapWidth,\n height: this.mapHeight,\n },\n };\n } else {\n this.markerIcon = null;\n }\n };\n\n private setDefaultMapZoom = (): void => {\n this.defaultMapZoom = 9;\n };\n\n private setDefaultMapCenter = (): void => {\n if (this.isStore(this.item)) {\n this.defaultMapCenter.lat = this.item.latitude;\n this.defaultMapCenter.lng = this.item.longitude;\n }\n };\n\n private getDefaultMapCenterTerritory = (): void => {\n if (this.isTerritory(this.item)) {\n this.mapBounds.east = Math.max(...this.lngArray);\n this.mapBounds.west = Math.min(...this.lngArray);\n this.mapBounds.south = Math.min(...this.latArray);\n this.mapBounds.north = Math.max(...this.latArray);\n\n const latSum = this.latArray.reduce((a: number, b: number): number => {\n return a + b;\n });\n const lngSum = this.lngArray.reduce((a: number, b: number): number => {\n return a + b;\n });\n\n this.defaultMapCenter.lat = latSum / this.latArray.length;\n this.defaultMapCenter.lng = lngSum / this.lngArray.length;\n }\n };\n\n private getTerritoryMapData = (): void => {\n if (this.isTerritory(this.item)) {\n if (this.item.spatialObject.coordinates.length <= 1) {\n // single polygon\n\n for (\n let i = 0;\n i < this.item.spatialObject.coordinates[0].length;\n i++\n ) {\n const latLngObj: { lat: number; lng: number } = {\n lat: this.item.spatialObject.coordinates[0][i][1],\n lng: this.item.spatialObject.coordinates[0][i][0],\n };\n this.latArray.push(latLngObj.lat);\n this.lngArray.push(latLngObj.lng);\n this.polygonCoordinates.push(latLngObj);\n }\n } else {\n if (this.item.spatialObject.type === \"MultiPolygon\") {\n for (let i = 0; i < this.item.spatialObject.coordinates.length; i++) {\n for (\n let j = 0;\n j < this.item.spatialObject.coordinates[i][0].length;\n j++\n ) {\n const latLngObj: { lat: number; lng: number } = {\n lat: this.item.spatialObject.coordinates[i][0][j][1],\n lng: this.item.spatialObject.coordinates[i][0][j][0],\n };\n this.latArray.push(latLngObj.lat);\n this.lngArray.push(latLngObj.lng);\n this.polygonCoordinates.push(latLngObj);\n }\n }\n } else {\n for (let i = 0; i < this.item.spatialObject.coordinates.length; i++) {\n for (\n let j = 0;\n j < this.item.spatialObject.coordinates[i].length;\n j++\n ) {\n const latLngObj: { lat: number; lng: number } = {\n lat: this.item.spatialObject.coordinates[i][j][1],\n lng: this.item.spatialObject.coordinates[i][j][0],\n };\n this.latArray.push(latLngObj.lat);\n this.lngArray.push(latLngObj.lng);\n this.polygonCoordinates.push(latLngObj);\n }\n }\n }\n }\n }\n };\n\n private isStore(item: IStore): item is IStore {\n return (item as IStore).ssid !== undefined;\n }\n private isTerritory(item: ITerritory): item is ITerritory {\n return (item as ITerritory).territoryType !== undefined;\n }\n}\n\n// const onMapIdleFunc = (): void => {\n// //map.fitBounds({ ...mapBounds });\n// const bounds = map.getBounds();\n// map.fitBounds(bounds);\n// console.log(\"fitting bounds\");\n// };\n\nexport default withGoogleMap(ItemMap);\n","import { Input } from \"antd\";\nimport { Loading } from \"./Loading/Loading\";\nimport { FiCheck } from \"@react-icons/all-files/fi/FiCheck\";\nimport { FiXCircle } from \"@react-icons/all-files/fi/FiXCircle\";\nimport React from \"react\";\n\nconst okCancelIconCommonStyles: React.CSSProperties = {\n position: \"relative\",\n top: \"3px\",\n cursor: \"pointer\",\n};\n\ninterface EditInput {\n name: string;\n isLoading: boolean;\n onCancel: () => void;\n onChange: (event: React.ChangeEvent) => void;\n onSubmit: () => void;\n}\n\nconst EditInput = ({\n name,\n onCancel,\n isLoading,\n onChange,\n onSubmit,\n}: EditInput) => {\n const isNameValid = name.length > 1;\n return (\n \n ) : (\n <>\n \n \n \n )\n }\n />\n );\n};\n\nexport default EditInput;\n","import styled, { css } from \"styled-components\";\nimport { Table } from \"antd\";\n\nexport const EnhancedAntdTable = styled(Table)`\n .ant-table-filter-dropdown-btns {\n display: flex;\n justify-content: space-around;\n }\n`;\n\nconst VolumeMetricsDefaultRowStyles = css`\n display: flex;\n align-items: center;\n width: 100%;\n padding: 10px;\n justify-content: space-evenly;\n`;\nexport const VolumeMetricsCell = styled(\"div\")`\n font-family: \"Manrope-Bold\";\n font-size: 14px;\n width: 16.67%;\n color: black;\n &:first-child {\n width: 50%;\n color: #434a54;\n }\n > div {\n &:first-child {\n font-size: 18px;\n }\n &:nth-last-child(n+2) {\n background-color: black;\n color: white;\n border-radius: 11px;\n display: inline-block;\n font-size: 11px;\n margin-top: 2px;\n padding: 4px 7px;\n }\n }\n`;\n\nexport const VolumeMetricsTableHeader = styled(\"div\")`\n ${VolumeMetricsDefaultRowStyles}\n > ${VolumeMetricsCell} {\n padding: 0 15px 20px 0px;\n }\n`;\n\nexport const VolumeMetricsTableRow = styled(\"div\")`\n ${VolumeMetricsDefaultRowStyles}\n border-bottom: 1px solid #e8e8e8;\n > ${VolumeMetricsCell} {\n font-size: 14px;\n }\n`;\n","import styled from \"styled-components\";\nimport { IoMdMan } from \"@react-icons/all-files/io/IoMdMan\";\n\nexport const ContentWrap = styled.div`\n display: flex;\n padding: 10px;\n justify-content: space-around;\n align-items: center;\n border: 1px solid lightgray;\n border-radius: 5px;\n padding: 17px 35px 23px;\n`;\n\nexport const StylishMan = styled(IoMdMan)`\n width: 26px;\n height: 63px;\n margin-right: 5px;\n`;\n\nexport const PeepsRowContainer = styled.div`\n display: flex;\n width: 100%;\n`;\n\nexport const PeepsContainer = styled.div`\n width: 47%;\n max-width: 553px;\n &.left-side {\n ${PeepsRowContainer} {\n flex-direction: row-reverse;\n }\n }\n`;\n\nexport const PeepsContainerSingle = styled.div`\n width: 94%;\n max-width: 1106px;\n &.left-side {\n ${PeepsRowContainer} {\n flex-direction: row-reverse;\n }\n }\n`;\n\nexport const BreakerBreaker = styled.div`\n width: 1px;\n height: 204px;\n background-color: lightgray;\n`;\n\nexport const PeepsText = styled.p`\n font-size: 15px;\n`;\n","import { IMobileInsightsMapData, IPolygon } from \"../../Models/Models\";\nimport { IPoint } from \"../../Models/IPoint\";\nimport { IStoreScoreRecord } from \"../../Models/IRetailMatch\";\nimport { MapTypesEnum } from \"../../Enums/MapTypesEnum\";\nimport { IMapLayers } from \"../../Models/IMapLayers\";\n\nexport class MapLayers implements IMapLayers {\n deck: any;\n isVisits: boolean;\n mapType: MapTypesEnum;\n\n constructor(\n deck: any,\n mapType: MapTypesEnum,\n isHome?: boolean,\n isVisits?: boolean\n ) {\n this.isVisits = isVisits;\n this.mapType = mapType;\n this.deck = deck;\n }\n\n createBasePolygon = (data: any, id: string) => {\n return {\n id: id,\n data: data,\n stroked: true,\n filled: true,\n opacity: 0.3,\n lineWidthScale: 2,\n pickable: true,\n autoHighlight: true,\n };\n };\n\n createGpsPolygonLayer = (\n data: IPoint[][],\n id: string,\n callback: (latitude: number, longitude: number) => void,\n currentBenchmarkIndex?: number\n ) => {\n const basePolygon = this.createBasePolygon(data, id);\n\n return new this.deck.PolygonLayer({\n ...basePolygon,\n getPolygon: (d: IPoint[]) => d.map((point) => [point.x, point.y]),\n getFillColor:\n currentBenchmarkIndex === 1 ? [43, 139, 73] : [28, 225, 128],\n onClick: ({ coordinate }) => {\n callback(coordinate[1], coordinate[0]);\n },\n });\n };\n\n createRetailMatchPolygonLayer = (\n data: IPolygon[],\n id: string,\n getVolumeAlpha: (externalID: string) => number\n ) => {\n const basePolygon = this.createBasePolygon(data, id);\n basePolygon.lineWidthScale = 12;\n\n return new this.deck.PolygonLayer({\n ...basePolygon,\n getPolygon: (d: IPolygon) =>\n d.linearRings[0].map((point) => [point.x, point.y]),\n //getFillColor: (d) => [176, 29, 29, getVolumeAlpha(d.externalID)] // RED\n getFillColor: (d) => [43, 139, 73, getVolumeAlpha(d.externalID)], //GREEN\n });\n };\n\n createScatterplotLayer = (\n scatterplotHomeColor: any[],\n scatterplotWorkColor: any[],\n scatterplotRadius: number,\n scatterplotLineWidth: number,\n scatterplotOpacity: number,\n data: any,\n isHome: boolean\n ) => {\n let color = null;\n if (isHome) {\n color = scatterplotHomeColor;\n } else {\n color = scatterplotWorkColor;\n }\n\n const getPosition = this.createGetPositionCallback(isHome);\n\n return new this.deck.ScatterplotLayer({\n id: \"deck-gps-scatterplot-layer\",\n data,\n opacity: scatterplotOpacity,\n stroked: true,\n filled: true,\n radiusMinPixels: 2,\n radiusMaxPixels: 100,\n lineWidthMinPixels: 1,\n lineWidthMaxPixels: 10,\n getPosition,\n getRadius: scatterplotRadius,\n getLineWidth: scatterplotLineWidth,\n getFillColor: color,\n getLineColor: [0, 0, 0],\n });\n };\n\n createHeatmapLayer = (\n homeGradient: number[][],\n workGradient: number[][],\n heatmapOpacity: number,\n heatmapRadius: number,\n heatmapIntensity: number,\n heatmapThreshold: number,\n data: any,\n isHome: boolean\n ) => {\n let colorRange = null;\n if (isHome) {\n colorRange = homeGradient;\n } else {\n colorRange = workGradient;\n }\n\n const getPosition = this.createGetPositionCallback(isHome);\n\n return new this.deck.HeatmapLayer({\n id: \"deck-gps-heatmap-layer\",\n data,\n opacity: heatmapOpacity,\n radiusPixels: heatmapRadius,\n intensity: heatmapIntensity,\n threshold: heatmapThreshold,\n colorRange,\n getPosition,\n getWeight: (p: IMobileInsightsMapData) => {\n if (this.isVisits) {\n return p.visitWeight;\n } else {\n return p.visitorWeight;\n }\n },\n });\n };\n\n createHexagonLayer = (\n homeGradient: number[][],\n workGradient: number[][],\n hexOpacity: number,\n hexRadius: number,\n hexUpperPercentile: number,\n hexLowerPercentile: number,\n hexCoverage: number,\n data: any,\n isHome: boolean\n ) => {\n let colorRange = null;\n if (isHome) {\n colorRange = homeGradient;\n } else {\n colorRange = workGradient;\n }\n\n const getPosition = this.createGetPositionCallback(isHome);\n\n return new this.deck.HexagonLayer({\n id: \"deck-gps-hexagon-layer\",\n data: data,\n opacity: hexOpacity,\n getPosition,\n colorRange,\n radius: hexRadius,\n upperPercentile: hexUpperPercentile,\n lowerPercentile: hexLowerPercentile,\n coverage: hexCoverage,\n getColorWeight: (p: IMobileInsightsMapData) => {\n if (this.isVisits) {\n return p.visitWeight;\n } else {\n return p.visitorWeight;\n }\n },\n pickable: true,\n autoHighlight: true,\n onHover: ({ layer, object, x, y }) => {\n this.setHexTooltip(object, layer.props.data.length, x, y);\n },\n });\n };\n\n private setHexTooltip = (object, dataSize, x, y) => {\n const el = document.getElementById(\"deck-tooltip\");\n if (object) {\n const percent = (object.points.length / dataSize) * 100;\n el.innerHTML = `${percent.toFixed(4)}%`;\n el.style.display = \"block\";\n el.style.left = `${x}px`;\n el.style.top = `${y - 22}px`;\n } else {\n el.style.display = \"none\";\n }\n };\n\n private createGetPositionCallback = (isHome: boolean) => {\n switch (this.mapType) {\n case MapTypesEnum.GPSmap:\n return (d: IMobileInsightsMapData) => {\n if (isHome) {\n if (d.homeLongitude !== 0 && d.homeLatitude !== 0) {\n return [d.homeLongitude, d.homeLatitude];\n } else {\n return null;\n }\n } else {\n if (d.workLongitude !== 0 && d.workLatitude !== 0) {\n return [d.workLongitude, d.workLatitude];\n } else {\n return null;\n }\n }\n };\n\n case MapTypesEnum.RetailMatchMap:\n return (d: IStoreScoreRecord) => [d.lat, d.lon];\n\n default:\n return null;\n }\n };\n}\n","/*\n This solution was taken from: https://levelup.gitconnected.com/how-to-create-custom-html-markers-on-google-maps-9ff21be90e4b\n\n Some variations were made to address our specific use case.\n*/\n\nclass GoogleMapBrandMarker extends google.maps.OverlayView {\n constructor({ ...args }) {\n super();\n\n this.position = new google.maps.LatLng(args.latlng.lat, args.latlng.lng);\n this.setMap(args.map);\n this.imgSrc = args.imgSrc;\n this.animation = args.animation;\n this.markerId = args.markerId;\n this.markerSize = args.markerSize\n }\n\n\n getHtml() {\n const image = document.createElement('img');\n image.id = `${this.markerId}-inner`;\n image.src = this.imgSrc;\n image.style = \"max-width: 100%; border-radius: 50%;\"\n\n return image;\n }\n\n getId() {\n return this.markerId;\n }\n\n draw() {\n if (!this.div) {\n this.div = document.createElement('div');\n this.div.id = this.markerId;\n this.div.appendChild(this.getHtml());\n this.div.style =\n `position: absolute;\n display: flex;\n align-items: center;\n width: ${this.markerSize === \"SMALL\" ? \"25px\" : \"43px\"}; \n height: ${this.markerSize === \"SMALL\" ? \"25px\" : \"43px\"};\n background-color: #e7e8ed; \n border-radius: 50%;\n border: 1px solid #c4c4c4;\n animation: bounceInDown;`;\n\n google.maps.event.addDomListener(this.div, 'click', event => {\n google.maps.event.trigger(this, 'click');\n });\n\n google.maps.event.addDomListener(this.div, 'mouseover', event => {\n google.maps.event.trigger(this, 'mouseover');\n });\n\n google.maps.event.addDomListener(this.div, 'mouseout', event => {\n google.maps.event.trigger(this, 'mouseout');\n });\n\n const panes = this.getPanes();\n panes.overlayImage.appendChild(this.div);\n }\n\n const point = this.getProjection().fromLatLngToDivPixel(this.position);\n\n if (point) {\n this.div.style.left = `${point.x}px`;\n this.div.style.top = `${point.y}px`\n }\n }\n\n getMarkerSizeDimensions(imgSrc) {\n const minDimensions = { width: 43, height: 43 };\n const dimensions = { width: 0, height: 0 };\n const image = new Image();\n image.src = imgSrc;\n\n dimensions.width = image.width < minDimensions.width\n ? `${minDimensions.width}px`\n : `${image.width}px`;\n dimensions.height = image.height < minDimensions.height\n ? `${minDimensions.height}px`\n : `${image.height}px`;\n\n return dimensions;\n }\n\n remove() {\n if (this.div) {\n this.div.parentNode.removeChild(this.div);\n this.div = null;\n }\n }\n\n getPosition() {\n return this.position;\n }\n\n getDraggable() {\n return false;\n }\n\n setAnimation(animation) {\n //For our specific case, setting the animation will always result in bounce or null.\n\n this.animation = animation;\n const element = document.getElementById(this.markerId);\n\n if (element) {\n if (animation) {\n element.style.animation = \"bounce 1.2s infinite\";\n } else {\n element.style.animation = null;\n }\n }\n }\n\n getAnimation() {\n return this.animation;\n }\n\n setIcon(src) {\n this.div.children[0].src = src\n }\n}\n\nexport const createBrandMapMarker = ({ ...args }) => {\n return new GoogleMapBrandMarker({ ...args })\n};\n","export const getMapInfoWindowContentString = (\n addr: string,\n city: string,\n state: string\n): string => {\n return `
    \n

    ${addr}

    \n

    ${city}, ${state}

    \n
    `;\n};\n","import { AiOutlineQuestionCircle } from \"@react-icons/all-files/ai/AiOutlineQuestionCircle\";\nimport { FiPrinter } from \"@react-icons/all-files/fi/FiPrinter\";\nimport { Modal, Popover } from \"antd\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { clearRetailMatchResults } from \"../../../../../Actions/RetailMatchActions\";\nimport { featureFlags } from \"../../../../../Common/CurrentFeatureFlags\";\nimport { ReportTypeEnum } from \"../../../../../Enums/ReportTypeEnum\";\nimport { getAllReportsLink } from \"../../../../../Logic/ReportLogic\";\nimport { IRetailMatchJob } from \"../../../../../Models/IRetailMatch\";\nimport { IUser } from \"../../../../../Models/IUser\";\nimport { gpsPrintReadySelector } from \"../../../../../Reducers/Selectors/GPSInsightsSelectors\";\nimport { userSelector } from \"../../../../../Reducers/Selectors/UserSelectors\";\nimport {\n ButtonWrap,\n ReportActionButton, ReportBackLink, ReportHeaderContentContainer,\n ReportHeaderInnerWrap, ReportHeaderWrap, ReportSharingMenu\n} from \"../../../../Common\";\nimport { HideUpToTabletXtraLarge } from \"../../../../Common/DigitalShare/DigitalShareCommonStyles\";\n\ninterface RetailMatchHeaderProps {\n multiBrand: boolean;\n locationAddress: string;\n job: IRetailMatchJob;\n isSharing?: boolean;\n onPrintClick: () => void;\n onShareClick: () => void;\n}\n\nconst iconFill = \"#515151\";\n\nconst RetailMatchHeader: FunctionComponent = (\n props: RetailMatchHeaderProps\n) => {\n const { job, isSharing } = props;\n /** misc */\n const dispatch = useDispatch();\n /** state */\n const [viewVideo, setViewVideo] = useState(false);\n const [printReady, setPrintReady] = useState(false);\n /** selectors */\n const user: IUser = useSelector(userSelector);\n const printReadyCountdown = useSelector(gpsPrintReadySelector);\n /** effects */\n\n useEffect(() => {\n viewVideo ? videoPlayStop(\"play\") : videoPlayStop(\"stop\");\n }, [viewVideo]);\n\n useEffect(() => {\n let timeout = null;\n\n if (printReadyCountdown && !printReady) {\n timeout = setTimeout(() => {\n setPrintReady(true);\n }, 3000);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [printReadyCountdown]);\n\n const videoPlayStop = (action: \"play\" | \"stop\") => {\n const video = document.getElementById(\n \"RetailMatchVideo\"\n ) as HTMLVideoElement;\n if (video) {\n switch (action) {\n case \"play\":\n video.play();\n break;\n case \"stop\":\n default:\n video.pause();\n video.currentTime = 0;\n break;\n }\n }\n };\n\n const handleViewAll = (): void => {\n dispatch(clearRetailMatchResults());\n window.location.href = getAllReportsLink(user);\n };\n\n /*\n Master control switch for removing the print button/\n If true, do not render under any circumstance.\n If false, fall back to any other logic controlling its render\n */\n const masterRemovePrintButton = false;\n\n let renderPrintButton = true;\n if ((props.multiBrand && !featureFlags.DigitalShare.PrintMultiBrand) || masterRemovePrintButton) {\n renderPrintButton = false;\n }\n\n return (\n \n \n \n \n \n \n \n }\n clickCallback={() => {\n setViewVideo(true);\n }}\n style={{ marginRight: \"8px\" }}\n />\n {\n setViewVideo(false);\n }}\n footer={null}\n width={700}\n >\n \n \n Your browser does not support the video tag.\n \n \n {!isSharing && (\n <>\n \n {renderPrintButton && (\n \n PDF reports will open in a new tab or window.\n
    \n If you have a pop-up blocker installed, you may need\n to add this site to your whitelist/exclusions.\n \n ) : (\n Report loading, please wait\n )\n }\n trigger=\"hover\"\n placement=\"top\"\n >\n \n }\n clickCallback={props.onPrintClick}\n style={{ marginRight: \"8px\" }}\n disabled={!printReady}\n />\n \n \n )}\n \n )}\n
    \n
    \n
    \n
    \n );\n};\n\nexport default RetailMatchHeader;\n","import React, { FunctionComponent, useState } from \"react\";\nimport { FiCamera } from \"@react-icons/all-files/fi/FiCamera\";\nimport { FiEdit2 } from \"@react-icons/all-files/fi/FiEdit2\";\nimport { FiEdit3 } from \"@react-icons/all-files/fi/FiEdit3\";\nimport { useHistory, useParams, useRouteMatch } from \"react-router-dom\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { IBrand } from \"../../../../Models/IBrand\";\nimport {\n IRetailMatchJobResult,\n IStoreScoreRecord,\n} from \"../../../../Models/IRetailMatch\";\nimport { ReportBackLink, ReportH3 } from \"../../../Common\";\nimport { ReportCard, ReportScrollableSection } from \"../../../Common/\";\nimport { SiteDetailPhotoButtons } from \"../Styled/Buttons\";\nimport {\n IntroGridContentBlockOne,\n RetailMatchIntroGrid,\n} from \"../Styled/RetailGrid\";\nimport {\n RetailMatchIntroBrandingContainer,\n RetailMatchIntroBrandLogo,\n RetailMatchIntroBrandLogoWrapper,\n} from \"../Styled/RetailMatchIntroStyles\";\nimport { overviewLinkURL } from \"../Util/RetailMatchUtil\";\nimport RetailMatchIntroAddPhoto from \"./IntroModals/RetailMatchIntroAddPhoto\";\nimport RetailMatchIntroAddSiteDetails from \"./IntroModals/RetailMatchIntroAddSiteDetails\";\nimport RetailMatchIntroEditBrandLogo from \"./IntroModals/RetailMatchIntroEditBrandLogo\";\nimport { RetailMatchIntroPhotoCarousel } from \"./IntroModals/RetailMatchIntroPhotoCarousel\";\nimport { RetailMatchIntroText } from \"./RetailMatchIntroText\";\nimport {\n IRetailMatchReportContainerRouteParams,\n IRetailMatchReportContainerShareRouteParams,\n} from \"./RetailMatchReportContainer\";\n\ninterface RetailMatchIntroductionProps {\n multiBrand: boolean;\n brand: IBrand;\n jobResult: IRetailMatchJobResult;\n locationAddress: string;\n isSharing?: boolean;\n benchmarkAddressOverride: IStoreScoreRecord;\n renderType: RenderType;\n}\n\nconst buxtonLogo = \"/Images/NEW_UI/rebrand/svg/Buxton-Green.svg\";\n\nexport const RetailMatchIntroduction: FunctionComponent\n = (props: RetailMatchIntroductionProps) => {\n /** props */\n const {\n jobResult: { job, chartData },\n isSharing,\n } = props;\n /** state */\n const [showAddSiteDetails, setShowAddSiteDetails]\n = useState(false);\n const [showAddSitePhotos, setShowAddSitePhotos] = useState(false);\n const [showCarouselModal, setShowCarouselModal] = useState(false);\n const [showEditLogo, setShowEditLogo] = useState(false);\n\n let { brandId } = useParams();\n\n //If sharing, we need to get the brandId from the route differently\n if (isSharing) {\n const match\n = useRouteMatch(`/:brandId`);\n brandId = match?.params?.brandId;\n }\n\n const history = useHistory();\n\n const onBackToOverviewClick = () => {\n const returnUrl = overviewLinkURL(history.location.pathname, isSharing, job.jobId);\n\n history.push(returnUrl);\n };\n\n return (\n \n \n \n \n \n \n \n {brandId && (\n \n )}\n
    \n {!isSharing && (\n <>\n {!props.multiBrand && (\n }\n clickCallback={() => setShowEditLogo(true)}\n style={{\n marginRight: \"12px\",\n }}\n />\n )}\n }\n clickCallback={() => setShowAddSitePhotos(true)}\n style={{\n marginRight: \"12px\",\n }}\n />\n }\n clickCallback={() => setShowAddSiteDetails(true)}\n />\n \n )}\n
    \n setShowCarouselModal(true)}\n >\n \n \n \n \n Know the potential for\n
    any brand at any property.\n
    \n \n \n \n \n \n \n
    \n
    \n
    \n );\n };\n","import styled from \"styled-components\";\nimport { device } from \"../../../../globalStyles/breakpoints\";\n\nexport const RetailMatchIntroGrid = styled.div`\n display: flex;\n flex-direction: column-reverse;\n align-items: center;\n grid-template-columns: 454px 1fr;\n grid-column-gap: 70px;\n grid-template-rows: auto;\n padding: 15px 0;\n\n ${device.desktop} {\n padding: 25px 0;\n display: grid;\n justify-content: center;\n align-content: center;\n }\n`;\n\nexport const IntroGridBlockTwo = styled.div`\n display: grid;\n border-radius: 8px;\n grid-template-columns: repeat(4, 22.75%);\n grid-column-gap: 3%;\n grid-auto-rows: 1fr;\n grid-row-gap: 24px;\n\n ${device.desktop} {\n grid-template-columns: repeat(4, 101px);\n grid-column-gap: 1rem;\n grid-row-gap: 1rem;\n }\n`;\n\nexport const IntroGridContentBlockOne = styled.div`\n width: 100%;\n`;\n","import { notification } from \"antd\";\nimport { RcFile } from \"antd/lib/upload\";\n\nexport const beforeUploadFileCheck = (singleFile: RcFile): boolean => {\n const extensionFromFileName: string = singleFile.name.split(\".\").pop();\n\n if (\n [\"jpg\", \"jpeg\", \"png\"].indexOf(extensionFromFileName?.toLowerCase()) < 0\n ) {\n notification[\"error\"]({\n message: \"Import Has Errors\",\n description: `File ${singleFile.name} is not of a supported file type. Only jpg and png file types are supported.`,\n onClick: () => {\n notification.destroy();\n },\n duration: 0,\n style: { cursor: \"pointer\" },\n });\n return false;\n }\n\n return true;\n};\n","import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport { FunctionComponent, useEffect } from \"react\";\n\nimport * as actions from \"../../../Actions/Actions\";\nimport {\n IBuxtonSupportTeamMember,\n IStore,\n ITerritory,\n ITerritoryType,\n ITerritoryTypePermission,\n IUser,\n IUserPreferences,\n IUserProfile,\n} from \"../../../Models/Models\";\nimport { ComponentLoading } from \"../../Common/Loading/Loading\";\nimport UserSettings from \"./UserSettings\";\nimport { IOktaMFAFactor } from \"../../../Models/OktaModels/IOktaMFAFactor\";\nimport { IRootReducer } from \"../../../Models/IRootReducer\";\nimport { IUserShareSettings } from \"../../../Models/IUserShareSettings\";\n\ninterface IUserSettingsContainerDispatchProps {\n loadUser: () => void;\n getUserShareSettings: () => void;\n getAllUsers: () => void;\n getUserPreferences: () => void;\n updateUserPreferences: (userPreferences: IUserPreferences) => void;\n getUserFranchiseeStoreInformation: (userID: number) => void;\n getUserFranchiseeTerritoryInformation: (userID: number) => void;\n removeStoreFromFranchiseeUser: (userID: number, storeID: number) => void;\n removeTerritoryFromFranchiseeUser: (\n userID: number,\n territoryID: number\n ) => void;\n updateUserActiveStatus: (userID: number, activeStatus: boolean) => void;\n updateTerritoryTypeAdminOnlyProperty: (territoryType: ITerritoryType) => void;\n updateTerritoryTypeUserPermissions: (\n userID: number,\n territoryTypeID: number,\n canView: boolean,\n canEdit: boolean\n ) => void;\n getTerritoryTypePermissions: (territoryTypeID: number) => void;\n updateUserProfile: (\n profileUpdateObj: IUserProfile,\n shareSettingsUpdateObj: IUserShareSettings\n ) => void;\n updateUserAvatar: (avatarImg: File) => void;\n deleteUserAvatar: (avatarStr: string) => void;\n updateShareImage: (shareImg: File) => void;\n deleteShareImage: (shareStr: string) => void;\n resetPassword: () => void;\n getCompanySupportTeam: () => void;\n getAllCommunitySites: () => void;\n getCompanyTerritoryTypes: () => void;\n updateTerritoryTypeUserPermissionsForAll: (\n territoryPermissions: Array\n ) => void;\n GetMFAFactors: (oktaUserID: string) => void;\n IssueMFAChallenge: (factor: IOktaMFAFactor) => void;\n IssuePushMFAChallenge: (factor: IOktaMFAFactor) => void;\n setAllMFAFactors: (factors: IOktaMFAFactor[]) => void;\n setSelectedFactorID: (id: string) => void;\n setWaitingForMFAResponse: (waiting: boolean) => void;\n SubmitMFAChallengeResponse: (\n factor: IOktaMFAFactor,\n response: string\n ) => void;\n PollForPushResponse: (factor: IOktaMFAFactor) => void;\n setShowMfaEnrollmentModal: (show: boolean) => void;\n setMfaEnrollmentUpdatedThisSession: (updated: boolean) => void;\n updateSessionTimeoutLength: (cid: number, newTimeoutLength: number) => void;\n}\n\ninterface IUserSettingsContainerStateProps {\n user: IUser;\n userShareSettings: IUserShareSettings;\n allUsers: Array;\n userPreferences: IUserPreferences;\n userFranchiseeStores: Array;\n userFranchiseeTerritories: Array;\n territoryTypePermissions: Array;\n companySupportTeam: Array;\n communitySites: Array;\n showSplashScreen: boolean;\n allMFAFactors: IOktaMFAFactor[];\n selectedMFAFactorID: string;\n waitingForMFAResponse: boolean;\n mfaResult: string;\n showMfaEnrollmentModal: boolean;\n mfaEnrollmentModalText: string;\n mfaEnrollmentUpdatedThisSession: boolean;\n saveProfileLoading: boolean;\n}\n\ntype IUserSettingsContainerProps = IUserSettingsContainerStateProps &\n IUserSettingsContainerDispatchProps;\n\nconst mapDispatchToProps = (\n dispatch: React.Dispatch\n): IUserSettingsContainerDispatchProps => ({\n loadUser: () => dispatch(actions.loadUser()),\n getUserShareSettings: () => dispatch(actions.getUserShareSettings()),\n getAllUsers: () => dispatch(actions.getAllUsers()),\n getUserPreferences: () => dispatch(actions.getUserPreferences()),\n updateUserPreferences: (userPreferences: IUserPreferences) =>\n dispatch(actions.updateUserPreferences(userPreferences)),\n getUserFranchiseeStoreInformation: (userID: number) =>\n dispatch(actions.getUserFranchiseeStoreInformation(userID)),\n getUserFranchiseeTerritoryInformation: (userID: number) =>\n dispatch(actions.getUserFranchiseeTerritoryInformation(userID)),\n removeStoreFromFranchiseeUser: (userID: number, storeID: number): void =>\n dispatch(actions.removeStoreFromFranchiseeUser(userID, storeID)),\n removeTerritoryFromFranchiseeUser: (\n userID: number,\n territoryID: number\n ): void =>\n dispatch(actions.removeTerritoryFromFranchiseeUser(userID, territoryID)),\n updateUserActiveStatus: (userID: number, activeStatus: boolean): void =>\n dispatch(actions.updateUserActiveStatus(userID, activeStatus)),\n getTerritoryTypePermissions: (territoryTypeID: number) =>\n dispatch(actions.getTerritoryTypePermissions(territoryTypeID)),\n updateTerritoryTypeAdminOnlyProperty: (territoryType: ITerritoryType) =>\n dispatch(actions.updateTerritoryTypeAdminOnlyProperty(territoryType)),\n updateTerritoryTypeUserPermissions: (\n userID: number,\n territoryTypeID: number,\n canView: boolean,\n canEdit: boolean\n ) =>\n dispatch(\n actions.updateTerritoryTypeUserPermissions(\n userID,\n territoryTypeID,\n canView,\n canEdit\n )\n ),\n updateUserProfile: (\n profileUpdateObj: IUserProfile,\n shareSettingsUpdateObj: IUserShareSettings\n ) =>\n dispatch(\n actions.updateUserProfile(profileUpdateObj, shareSettingsUpdateObj)\n ),\n updateUserAvatar: (avatarImg: File) =>\n dispatch(actions.updateUserAvatar(avatarImg)),\n deleteUserAvatar: (avatarStr: string) =>\n dispatch(actions.deleteUserAvatar(avatarStr)),\n updateShareImage: (shareImg: File) =>\n dispatch(actions.updateShareImage(shareImg)),\n deleteShareImage: (imgStr: string) =>\n dispatch(actions.deleteShareImage(imgStr)),\n resetPassword: () => dispatch(actions.resetPassword()),\n getCompanySupportTeam: () => dispatch(actions.getCompanySupportTeam()),\n getAllCommunitySites: () => dispatch(actions.getAllCommunitySites()),\n getCompanyTerritoryTypes: () => dispatch(actions.getCompanyTerritoryTypes()),\n updateTerritoryTypeUserPermissionsForAll: (\n territoryPermissions: Array\n ) =>\n dispatch(\n actions.updateTerritoryTypeUserPermissionsForAll(territoryPermissions)\n ),\n //MFA\n GetMFAFactors: (oktaUserID: string) =>\n dispatch(actions.GetMFAFactors(oktaUserID)),\n IssueMFAChallenge: (factor: IOktaMFAFactor) =>\n dispatch(actions.IssueMFAChallenge(factor)),\n IssuePushMFAChallenge: (factor: IOktaMFAFactor) =>\n dispatch(actions.IssuePushMFAChallenge(factor)),\n setAllMFAFactors: (factors: IOktaMFAFactor[]) =>\n dispatch(actions.setAllMFAFactors(factors)),\n setSelectedFactorID: (id: string) =>\n dispatch(actions.setSelectedFactorID(id)),\n setWaitingForMFAResponse: (waiting: boolean) =>\n dispatch(actions.setWaitingForMFAResponse(waiting)),\n SubmitMFAChallengeResponse: (factor: IOktaMFAFactor, response: string) =>\n dispatch(actions.SubmitMFAChallengeResponse(factor, response)),\n PollForPushResponse: (factor: IOktaMFAFactor) =>\n dispatch(actions.PollForPushResponse(factor)),\n setShowMfaEnrollmentModal: (show: boolean) =>\n dispatch(actions.setShowMfaEnrollmentModal(show)),\n setMfaEnrollmentUpdatedThisSession: (updated: boolean) =>\n dispatch(actions.setMfaEnrollmentUpdatedThisSession(updated)),\n updateSessionTimeoutLength: (cid: number, newTimeoutLength: number) =>\n dispatch(actions.updateSessionTimeoutLength(cid, newTimeoutLength)),\n});\n\nconst mapStateToProps = (\n state: IRootReducer\n): IUserSettingsContainerStateProps => ({\n user: state.user.user,\n userShareSettings: state.user.shareSettings,\n allUsers: state.user.allUsers,\n userPreferences: state.userPreferencesStore.userPreferences,\n userFranchiseeStores: state.userManagement.franchiseeStoreData,\n userFranchiseeTerritories: state.userManagement.franchiseeTerritoryData,\n territoryTypePermissions: state.territoryManagement.territoryTypePermissions,\n companySupportTeam: state.companySupportTeamStore.companySupportTeam,\n communitySites: state.userPreferencesStore.communitySites,\n showSplashScreen: state.loadScout.showSplashScreen,\n allMFAFactors: state.userProfile.allMFAFactors,\n selectedMFAFactorID: state.userProfile.selectedMFAFactorID,\n waitingForMFAResponse: state.userProfile.waitingForMFAResponse,\n mfaResult: state.userProfile.mfaResult,\n showMfaEnrollmentModal: state.userProfile.showMfaEnrollmentModal,\n mfaEnrollmentModalText: state.userProfile.mfaEnrollmentModalText,\n mfaEnrollmentUpdatedThisSession:\n state.userProfile.mfaEnrollmentUpdatedThisSession,\n saveProfileLoading: state.user.saveProfileLoading,\n});\n\nconst UserSettingsContainer: FunctionComponent = (props:IUserSettingsContainerProps) => {\n useEffect(() => {\n if (!props.user) {\n props.loadUser();\n }\n if (!props.allUsers) {\n props.getAllUsers();\n }\n if (!props.userShareSettings) {\n props.getUserShareSettings();\n }\n }, []);\n\n if (props.user && props.allUsers) {\n const maybeAllUsers: IUser[] = [...props.allUsers];\n /**\n * If the currently logged in user is NOT a setup user, they cannot see the setup user\n */\n if (!props.user.isSetup) {\n for (let i = 0; i < maybeAllUsers.length; i++) {\n if (maybeAllUsers[i].isSetup) {\n maybeAllUsers.splice(i, 1);\n break;\n }\n }\n }\n\n return (\n \n );\n }\n\n return (\n <>\n {!props.user || !props.allUsers && (\n \n )}\n \n );\n};\n\nexport default withRouter(\n connect<\n IUserSettingsContainerStateProps,\n IUserSettingsContainerDispatchProps,\n any\n >(\n mapStateToProps,\n mapDispatchToProps\n )(UserSettingsContainer)\n);\n","import { all } from \"redux-saga/effects\";\nimport { watchBrandSagas } from \"./BrandSagas\";\nimport { watchCategorySagas } from \"./CategorySagas\";\nimport { watchCommonSagas } from \"./CommonSagas\";\nimport { watchLoginSagas } from \"./LoginSagas\";\nimport { watchMobilyticsSagas } from \"./MobilyticsSagas\";\nimport { watchNotificationSagas } from \"./NotificationsSagas\";\nimport { watchPlaceSearchSagas } from './PlaceSearchSagas';\nimport { watchReportSagas } from \"./ReportSagas\";\nimport { watchRetailMatchSagas } from \"./RetailMatchSagas\";\nimport { watchUserSagas } from \"./UserSagas\";\n\nexport function* rootSaga() {\n yield all([\n watchReportSagas(),\n watchBrandSagas(),\n watchCategorySagas(),\n watchRetailMatchSagas(),\n watchMobilyticsSagas(),\n watchLoginSagas(),\n watchNotificationSagas(),\n watchPlaceSearchSagas(),\n watchUserSagas(),\n watchCommonSagas(),\n ]);\n}\n","import { IBrandCategory } from \"../../../Models/IBrandCategory\";\nimport {\n GetAllCategoriesFailureAction,\n GetAllCategoriesInitiateAction,\n GetAllCategoriesSuccessAction,\n GET_ALL_CATEGORIES_FAILURE,\n GET_ALL_CATEGORIES_INITIATE,\n GET_ALL_CATEGORIES_SUCCESS,\n SetLoadingCategoriesAction,\n SET_LOADING_CATEGORIES\n} from \"../Types/CategoryActionTypes\";\n\nexport const setLoadingCategories = (loading: boolean): SetLoadingCategoriesAction => ({\n type: SET_LOADING_CATEGORIES,\n data: loading,\n});\n\nexport const getAllCategoriesInitiate = (): GetAllCategoriesInitiateAction => ({\n type: GET_ALL_CATEGORIES_INITIATE,\n data: null,\n});\n\nexport const getAllCategoriesSuccess = (\n categories: IBrandCategory[]\n): GetAllCategoriesSuccessAction => ({\n type: GET_ALL_CATEGORIES_SUCCESS,\n data: categories,\n});\n\nexport const getAllCategoriesFailure = (): GetAllCategoriesFailureAction => ({\n type: GET_ALL_CATEGORIES_FAILURE,\n data: null,\n});\n","import { authorizedAxios } from \"../../../Actions/AxiosActions\";\nimport { IServiceResult } from \"../../../Models/IServiceResult\";\n\nexport async function getCountryWKT(countryAbbrv: string): Promise> {\n return await authorizedAxios>(\"GET\", `Common/GetCountryWKT?countryAbbrv=${countryAbbrv}`, null);\n}\n\nexport async function getRedirectLink(appName: string): Promise> {\n return await authorizedAxios>(\"GET\", `/Redirect/OtherProducts?product=${appName}`);\n}","import { call, delay, put, select, takeEvery } from \"redux-saga/effects\";\nimport { AxiosError } from \"axios\";\nimport { notification } from \"antd\";\n\nimport * as types from \"../Types/MobilyticsActionTypes\";\nimport * as actions from \"../Actions/MobilyticsActions\";\nimport * as api from \"../API/MobilyticsApi\";\nimport { PlaceParameters } from \"../Types/MobilyticsActionTypes\";\nimport {\n getNearestSafegraphLocationsByBrand, getNearestSafegraphLocationsByCategory,\n getSafeGraphLocation,\n ISafegraphGetNearestLocationsRequest\n} from \"../API/MobilyticsApi\";\nimport { IApiResult } from \"../../../Models/IApiResult\";\nimport { IGCPBigQueryJob } from \"../../../Models/IGCPBigQueryJob\";\nimport { ISubmitMobilyticsJobRequest } from \"../../../Models/Requests/ISubmitMobilyticsJobRequest\";\nimport { getGeocodeFromLatLng, getPlaceDetails, searchAutocompleteWithLatLng } from \"./PlaceSearchSagas\";\nimport { IMapMarker, MapMarker } from \"../Models/IMapMarker\";\nimport {\n firstScenarioSelector,\n isCreatingCustomLocationSelector,\n scenarioFormStatesSelector,\n} from \"../Selectors/MobilyticsSelectors\";\nimport { defaultScenarioFormState, IMobilyticsScenarioFormState } from \"../Pages/Apps/Mobilytics/SubmitMobilyticsLogic\";\nimport { PolygonType } from \"../Models/Maps/Enums/PolygonType\";\nimport { customPolygonFromPoints} from \"../Logic/PolygonLogic\";\nimport {\n setNearbyLocations,\n setSimilarLocations,\n setIsSearchingForNewLocation,\n setSelectedSafegraphLocation\n} from \"../Actions/MobilyticsActions\";\nimport { ISafegraphLocation } from \"../../../Models/ISafegraphLocation\";\nimport { brandsSelector } from \"../Selectors/BrandSelectors\";\nimport { getAddressAndZipcodeFromGooglePlaceResult } from \"../Logic/MobilyticsLogic\";\nimport { IBrand, IServiceResult } from \"../../../Models/Models\";\nimport { mapMarkersSelector } from \"../Selectors/MapSelectors\";\nimport { setMapMarkers, setShowLoadingOverlay } from \"../Actions/Actions\";\nimport { ICustomPolygon } from \"../Models/Maps/ICustomPolygon\";\nimport { toTitleCase } from \"../Util/StringUtil\";\nimport { getFirstGeocodeResult, SupportedGeocoderCountry } from \"../Util/GeocoderUtil\";\nimport { isValidLatForMobilytics, isValidLngForMobilytics } from \"../Util/LatLngUtil\";\nimport { IReportProgress } from \"../Models/IReportProgress\";\nimport { setReportProgress } from \"../Actions/ReportActions\";\nimport { getPendingReportProgress } from \"../Components/SubmittedReport/SubmittedReportLogic\";\n\nexport const MAXIMUM_SCENARIOS = 2;\n\nexport function* watchMobilyticsSagas() {\n yield takeEvery(\n types.SUBMIT_MOBILYTICS_REPORT_INITIATE,\n submitMobilyticsReportSaga\n );\n\n yield takeEvery(\n types.ON_LOCATION_SELECTED_FOR_ANALYSIS_ACTION,\n onLocationSelectedForAnalysisSaga\n );\n\n yield takeEvery(\n types.GET_NEARBY_LOCATIONS_ACTION,\n getNearbySafegraphLocations\n );\n\n yield takeEvery(\n types.GET_SIMILAR_LOCATIONS_ACTION,\n getSimilarSafegraphLocations\n );\n}\n\nexport function* submitMobilyticsReportSaga(action: types.MobilyticsActionType) {\n try {\n yield put(actions.setMostRecentlySubmittedMobilyticsReport([]));\n yield put(actions.setIsLoading(true));\n const job: IApiResult = yield call(() =>\n api.submitMobilyticsReport(action.data as ISubmitMobilyticsJobRequest)\n );\n if (!job.success) {\n yield put(actions.submitMobilyticsReportFailure(job.message));\n }\n yield put(actions.submitMobilyticsReportSuccess(job.data));\n const startProgress: IReportProgress = getPendingReportProgress();\n yield put(setReportProgress(startProgress));\n const { lat, lng, placeId, title: name } = yield select(firstScenarioSelector);\n yield put(actions.setLocationDetails({\n lat, lng, placeId, name\n }));\n yield put(actions.setShouldShowEndOfReportScreen(true));\n } catch (e) {\n const errMsg = (e as AxiosError).message;\n notification.error({\n message: \"Error\",\n description: errMsg,\n });\n yield put(actions.submitMobilyticsReportFailure(e.message));\n } finally {\n yield put(actions.setIsLoading(false));\n /** reset the form for subsequent runs */\n yield put(actions.setScenarioFormStates([]));\n }\n}\n\nexport function* onLocationSelectedForAnalysisSaga(action: types.MobilyticsActionType) {\n try {\n yield put(setShowLoadingOverlay(true));\n\n // Get current scenario form states\n const scenarioFormStates = yield(select(scenarioFormStatesSelector));\n if (scenarioFormStates.length === MAXIMUM_SCENARIOS) {\n return;\n }\n\n // Get all available brands\n const brands: IBrand[] = yield(select(brandsSelector));\n\n const isCreatingCustomLocation: boolean = yield(select(isCreatingCustomLocationSelector));\n\n // TODO - sniff around here\n // Check if the user is creating a custom location. If so, ignore and return here\n if (isCreatingCustomLocation) {\n return;\n }\n\n yield put(setIsSearchingForNewLocation(false));\n yield put(actions.setIsLoading(true));\n\n const { sessionToken, safegraphLocation, hasPolygon } = action.data as PlaceParameters;\n let { placeId } = action.data as PlaceParameters;\n\n let points = null;\n let details: google.maps.places.PlaceResult = null;\n let singleSafegraphResponse: ISafegraphLocation = null;\n let lat = null;\n let lng = null;\n let startingPoly: ICustomPolygon = null;\n\n // Check if there's a placeId. If so, attempt to get a SG location\n if (placeId) {\n details = yield getPlaceDetails(placeId, sessionToken);\n const addressZipcode = getAddressAndZipcodeFromGooglePlaceResult(details);\n lat = details.geometry.location.lat();\n lng = details.geometry.location.lng();\n // Get SafeGraph data for the selected location\n const safegraphResponse: IServiceResult = yield getSafeGraphLocation({\n latitude: lat,\n longitude: lng,\n brandName: details.name,\n address: addressZipcode.address,\n zipcode: addressZipcode.zipcode,\n });\n\n if (hasPolygon) {\n const marker = new MapMarker(\n placeId, // id\n details.geometry.location.lat(), // lat\n details.geometry.location.lng(), // lng\n '', // icon name\n true, // selected\n false, // loading\n 42, // width\n 42, // height\n '', // content\n false, // info window open\n details.formatted_address, // name\n false, // default marker\n );\n\n const existingMarkers: IMapMarker[] = yield select(mapMarkersSelector);\n return yield put(setMapMarkers([...existingMarkers, marker]));\n } else {\n // Set the points from the SafeGraph response polygon to the\n // selected location\n if (safegraphResponse?.data?.polygon) {\n singleSafegraphResponse = safegraphResponse.data;\n\n points = singleSafegraphResponse.polygon;\n\n // Check if there is no brand name in the SG response. If not,\n // set the brand name equal to the corresponding brand from the Brand table\n if (!singleSafegraphResponse.brandName) {\n const foundBrand: IBrand = brands.find(brand => brand.brandId === singleSafegraphResponse.brandId);\n if (foundBrand) {\n singleSafegraphResponse.brandName = foundBrand.brandName;\n }\n }\n\n // Set selected safegraph location\n yield put(setSelectedSafegraphLocation(singleSafegraphResponse));\n\n // Create new polygon from this SG location\n startingPoly = customPolygonFromPoints(points, true);\n }\n // Check if there are no points from the SafeGraph response. If not,\n // redirect the user to the create custom location screen\n if (!safegraphResponse.data || !safegraphResponse.data.polygon) {\n // Dispatch action to set the selected location's address for a custom location\n yield put(actions.setCreateCustomLocationParameters({\n address: details.formatted_address,\n lat,\n lng,\n placeId\n }));\n // Dispatch action to redirect user to the create custom location screen\n yield put(actions.setIsCreatingCustomLocation(true));\n\n // Set is drawing polygon and return here\n return yield put(actions.setIsDrawingPolygon(true));\n }\n }\n }\n\n // Check if this location has already been selected. If so, return here\n if (scenarioFormStates.filter(state => state.id === placeId).length > 0) {\n return;\n }\n\n if (!points && safegraphLocation) {\n points = safegraphLocation.polygon;\n }\n\n const getSafegraphObjectValue = (property: string) => {\n if (singleSafegraphResponse) {\n return singleSafegraphResponse[property];\n }\n\n if (safegraphLocation) {\n return safegraphLocation[property];\n }\n\n return null;\n };\n\n // Map points to instance of Google Maps Lat/Lng\n const gMapPoints: google.maps.LatLng[] = points.map(point => {\n return new google.maps.LatLng(point.y, point.x);\n });\n\n // Create new scenario form state for the selected location\n\n if(!startingPoly) {\n startingPoly\n = {\n polygonType: PolygonType.Custom,\n id: safegraphLocation || singleSafegraphResponse\n ? getSafegraphObjectValue(\"brandId\")\n : details.place_id,\n name: safegraphLocation || singleSafegraphResponse\n ? getSafegraphObjectValue(\"brandName\")\n : details.name,\n isSelected: false,\n borderSize: 0,\n borderColor: '#000',\n points: gMapPoints\n };\n }\n\n const formattedAddr = safegraphLocation || singleSafegraphResponse\n ? formatSafegraphAddress(getSafegraphObjectValue(\"address\"), getSafegraphObjectValue(\"city\"), getSafegraphObjectValue(\"state\"), getSafegraphObjectValue(\"zip\"))\n : details.formatted_address;\n\n if (!isValidLatForMobilytics(lat)) {\n lat = getSafegraphObjectValue(\"latitude\") || details.geometry.location.lat();\n }\n\n if (!isValidLngForMobilytics(lng)) {\n lng = getSafegraphObjectValue(\"longitude\") || details.geometry.location.lng();\n }\n\n if (!placeId) {\n // Need to get google placeId here\n const places: google.maps.GeocoderResult[] = yield getGeocodeFromLatLng(lat, lng);\n const place = getFirstGeocodeResult(places, SupportedGeocoderCountry.US);\n if (place) {\n placeId = place.place_id;\n }\n }\n\n const scenarioFormState: IMobilyticsScenarioFormState = {\n ...defaultScenarioFormState,\n id: placeId || safegraphLocation.locationId,\n title: safegraphLocation || singleSafegraphResponse\n ? getSafegraphObjectValue(\"brandName\")\n : details.name,\n address: formattedAddr,\n polygon: {\n ...startingPoly,\n id: safegraphLocation || singleSafegraphResponse\n ? getSafegraphObjectValue(\"brandId\")\n : details.place_id,\n name: safegraphLocation || singleSafegraphResponse\n ? getSafegraphObjectValue(\"brandName\")\n : details.name,\n },\n brandId: getSafegraphObjectValue(\"brandId\"),\n lat,\n lng,\n locationId: getSafegraphObjectValue(\"locationId\"),\n placeId\n };\n\n yield put(actions.setScenarioFormStates([...scenarioFormStates, scenarioFormState]));\n yield put(actions.setLocationDetails({\n lat,\n lng,\n placeId,\n name: scenarioFormState.title\n }));\n\n const existingMarkers: IMapMarker[] = Array.from(yield select(mapMarkersSelector));\n\n if(safegraphLocation) {\n existingMarkers.push(\n new MapMarker(\n \"\", // id\n safegraphLocation.latitude, // lat\n safegraphLocation.longitude, // lng\n '', // icon name\n true, // selected\n false, // loading\n 42, // width\n 42, // height\n '', // content\n false, // info window open\n scenarioFormState.address, // name\n false, // default marker\n ));\n }\n\n existingMarkers[existingMarkers.length - 1].id = scenarioFormState.id;\n\n yield put(setMapMarkers(existingMarkers));\n\n } catch (e) {\n yield put(actions.submitMobilyticsReportFailure(e.message));\n } finally {\n yield put(actions.setIsLoading(false));\n yield put(setShowLoadingOverlay(false));\n }\n}\n\nexport function* getNearbySafegraphLocations() {\n try {\n const scenarioFormStates = yield select(scenarioFormStatesSelector);\n const location = scenarioFormStates[0];\n\n yield put(actions.setIsLoading(true));\n const request: ISafegraphGetNearestLocationsRequest = {\n ids: [location.brandId],\n latitude: location.lat,\n longitude: location.lng,\n excludeBrand: null\n };\n\n let nearbySafegraphLocations = yield getNearestSafegraphLocationsByBrand(request);\n\n // Filter selected location from nearby SG locations\n nearbySafegraphLocations = nearbySafegraphLocations.filter(nearbyLocation => nearbyLocation.locationId !== scenarioFormStates[0].locationId);\n\n yield put(setNearbyLocations(nearbySafegraphLocations));\n } catch (e) {\n yield put(actions.submitMobilyticsReportFailure(e.message));\n } finally {\n yield put(actions.setIsLoading(false));\n }\n}\n\nexport function* getSimilarSafegraphLocations() {\n try {\n yield put(actions.setIsLoading(true));\n const scenarioFormStates = yield select(scenarioFormStatesSelector);\n const location = scenarioFormStates[0];\n const brands = yield select(brandsSelector);\n\n // It's not guaranteed that the selected SG location will have a `naicsCode` property. So we can\n // find the corresponding brand for the selected location and use the brand's `naicsCode`\n const brand = brands.find(brand => brand.brandId === location.brandId);\n const similarRequest: ISafegraphGetNearestLocationsRequest = {\n ids: [brand.naicsCode],\n latitude: location.lat,\n longitude: location.lng,\n excludeBrand: location.brandId\n };\n const similarSafegraphLocations = yield(getNearestSafegraphLocationsByCategory(similarRequest));\n\n yield put(setSimilarLocations(similarSafegraphLocations));\n } catch (e) {\n yield put(actions.submitMobilyticsReportFailure(e.message));\n } finally {\n yield put(actions.setIsLoading(false));\n }\n}\n\nconst formatSafegraphAddress = (address: string, city: string, state: string, zipcode: string) => {\n return `${toTitleCase(address)}, ${toTitleCase(city)}, ${state} ${zipcode}`;\n};","import { takeEvery } from \"@redux-saga/core/effects\";\r\nimport { call, put, select } from \"redux-saga/effects\";\r\nimport { setAppPastIntro } from \"../Actions/AppActions\";\r\nimport { setSearchedMatchPlace } from \"../Actions/RetailMatchActions\";\r\nimport { setSideNavOpen } from \"../Actions/SideNavActions\";\r\nimport * as api from \"../API/CommonApi\";\r\n\r\nimport * as types from \"../Types/PlaceSearchTypes\";\r\nimport {\r\n onLocationSelectedForAnalysis,\r\n setInProcessPolygon,\r\n setIsLoading,\r\n setIsLoadingLocations,\r\n setIsViewingLocationDetails,\r\n setLocationDetails,\r\n setScenarioFormStates,\r\n setSearchedMobilyticsPlace\r\n} from \"../Actions/MobilyticsActions\";\r\nimport { App } from \"../Enums/App\";\r\nimport { currentAppSelector } from \"../Selectors/AppSelectors\";\r\nimport { doPlaceSearch } from \"../Actions/PlaceSearchActions\";\r\nimport { getFirstGeocodeResult, SupportedGeocoderCountry } from \"../Util/GeocoderUtil\";\r\nimport { mapMarkersSelector } from \"../Selectors/MapSelectors\";\r\nimport { setMapMarkers } from \"../Actions/MapActions\";\r\nimport { IMapMarker, MapMarker } from \"../Models/IMapMarker\";\r\nimport { circleFromQueryParams, customPolygonFromPoints, getCentroid } from \"../Logic/PolygonLogic\";\r\nimport { ICircleQueryParams } from \"../Models/ICircleQueryParams\";\r\nimport { IMobilyticsPlaceQueryParams } from \"../Models/IMobilyticsPlaceQueryParams\";\r\nimport { IPolygonQueryParams } from \"../Models/IPolygonQueryParams\";\r\nimport { defaultScenarioFormState, IMobilyticsScenarioFormState } from \"../Pages/Apps/Mobilytics/SubmitMobilyticsLogic\";\r\nimport { getSafeGraphLocations } from \"../Logic/MobilyticsLogic\";\r\nimport { IPolygon } from \"../Models/Maps/IPolygon\";\r\nimport { LocationDetailsParameters } from \"../Types/MobilyticsActionTypes\";\r\nimport { scenarioFormStatesSelector } from \"../Selectors/MobilyticsSelectors\";\r\nimport { MAXIMUM_SCENARIOS } from \"./MobilyticsSagas\";\r\nimport { MobilyticsQueryParam } from \"../Models/MobilyticsQueryParam\";\r\nimport { usaWKTSelector } from \"../Selectors/CommonSelectors\";\r\nimport { setUSAWKT } from \"../Actions/CommonActions\";\r\nimport { IServiceResult } from \"../../../Models/IServiceResult\";\r\n\r\nexport function* watchPlaceSearchSagas() {\r\n yield takeEvery(types.DO_PLACE_SEARCH, doPlacesSearch);\r\n yield takeEvery(types.DO_LATLNG_SEARCH, doLatLngSearch);\r\n yield takeEvery(types.DO_LOAD_LOCATIONS, loadLocations);\r\n}\r\n\r\nconst placesService = new google.maps.places.PlacesService(document.createElement('div'));\r\nconst geocoderService = new google.maps.Geocoder();\r\n\r\nconst isWktEmpty = (wkt: string) => !wkt?.trim();\r\n\r\nexport const getGeocodeFromLatLng = (lat: number, lng: number): Promise => {\r\n return new Promise((resolve, reject) => {\r\n geocoderService.geocode({ location: { lat: lat, lng: lng }}, (result, status) => {\r\n if (status === \"OK\") {\r\n resolve(result);\r\n } else {\r\n reject(status);\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport const getPlaceDetails = (\r\n placeId: string,\r\n sessionToken: google.maps.places.AutocompleteSessionToken\r\n) : Promise => {\r\n return new Promise((resolve, reject) => {\r\n placesService.getDetails({\r\n sessionToken,\r\n placeId,\r\n //fields: [\"geometry.location\", \"formatted_address\", \"name\", \"types\"],\r\n }, (result, status) => {\r\n if (status === google.maps.places.PlacesServiceStatus.OK) {\r\n resolve(result);\r\n } else {\r\n reject(status);\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport const getNearbyLocations = (\r\n name: string,\r\n lat: number,\r\n lng: number,\r\n types: string[],\r\n) : Promise => {\r\n return new Promise((resolve, reject) => {\r\n placesService.nearbySearch({\r\n name,\r\n location: {lat, lng},\r\n types,\r\n rankBy: google.maps.places.RankBy.DISTANCE,\r\n }, (result, status) => {\r\n if (status === google.maps.places.PlacesServiceStatus.OK) {\r\n resolve(result);\r\n } else {\r\n reject(status);\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport const searchAutocompleteWithLatLng = (input: string, lat: number, lng: number): Promise> => {\r\n return new Promise>((resolve, reject) => {\r\n const sessionToken = new google.maps.places.AutocompleteSessionToken();\r\n const autoCompleteService = new google.maps.places.AutocompleteService();\r\n const componentRestrictions = {\r\n country: 'us',\r\n };\r\n const location = new google.maps.LatLng(lat, lng);\r\n const radius = 100;\r\n autoCompleteService.getPlacePredictions({ input, sessionToken, location, radius, componentRestrictions }, (result, status) => {\r\n if (status === google.maps.places.PlacesServiceStatus.OK) {\r\n resolve(result);\r\n } else {\r\n reject(status);\r\n }\r\n });\r\n });\r\n};\r\n\r\nfunction* doPlacesSearch(action: types.DoPlaceSearchAction) {\r\n try {\r\n\r\n const {\r\n sessionToken,\r\n app,\r\n placeId,\r\n } = action.data;\r\n\r\n const usaWKT = yield select(usaWKTSelector);\r\n if (isWktEmpty(usaWKT)) {\r\n const result: IServiceResult = yield call(() =>\r\n api.getCountryWKT(\"USA\")\r\n );\r\n yield put(setUSAWKT(result.data));\r\n }\r\n\r\n const details = yield getPlaceDetails(placeId, sessionToken);\r\n\r\n const marker = new MapMarker(\r\n placeId, // id\r\n details.geometry.location.lat(), // lat\r\n details.geometry.location.lng(), // lng\r\n '', // icon name\r\n true, // selected\r\n false, // loading\r\n 42, // width\r\n 42, // height\r\n '', // content\r\n false, // info window open\r\n details.formatted_address, // name\r\n false, // default marker\r\n );\r\n \r\n if(app === App.Mobilytics) {\r\n const scenarios = yield select(scenarioFormStatesSelector);\r\n //if there are two scenarios, do not add a marker \r\n if(scenarios?.length !== 2) {\r\n const existingMarkers: IMapMarker[] = yield select(mapMarkersSelector);\r\n //if there is a scenario and scenario marker, only remove the most recent marker added which is not the scenario marker\r\n if(scenarios.length === 1 && existingMarkers.length > 1) {\r\n //remove the most recently added marker\r\n existingMarkers.pop();\r\n }\r\n \r\n //if the user does not have a scenario yet, only let them add one marker until they add a scenario\r\n if(scenarios.length < 1) {\r\n existingMarkers.splice(0, existingMarkers.length);\r\n }\r\n\r\n yield put(setMapMarkers([...existingMarkers, marker]));\r\n }\r\n }\r\n \r\n if(app === App.Match) {\r\n //can only have a single scenario in match, so we need to remove all markers before adding a new scenario \r\n yield put(setMapMarkers([marker]));\r\n }\r\n\r\n \r\n yield put(setAppPastIntro(app));\r\n yield put(setLocationDetails({\r\n name: details.name,\r\n placeId,\r\n lat: details.geometry.location.lat(),\r\n lng: details.geometry.location.lng(),\r\n }));\r\n if (app === App.Match) {\r\n yield put(setSearchedMatchPlace(details.formatted_address, placeId, details.geometry.location.lat(), details.geometry.location.lng()));\r\n } else if (app === App.Mobilytics) {\r\n yield put(onLocationSelectedForAnalysis({ placeId, sessionToken }));\r\n yield put(setSearchedMobilyticsPlace(placeId, details.formatted_address));\r\n yield put(setInProcessPolygon(null));\r\n }\r\n yield put(setSideNavOpen(true));\r\n } catch (e) {\r\n console.log(e);\r\n // todo: Handle failure\r\n }\r\n};\r\n\r\nfunction* doLatLngSearch(action: types.DoLatLngSearchAction) {\r\n const lat = action.data.lat;\r\n const lng = action.data.lng;\r\n const latTrunc = Math.round(lat * 10000) / 10000;\r\n const lngTrunc = Math.round(lng * 10000) / 10000;\r\n const latLngName = `(${latTrunc}, ${lngTrunc})`;\r\n \r\n const currentApp = yield select(currentAppSelector);\r\n\r\n if (currentApp === App.Mobilytics) {\r\n const places = yield getGeocodeFromLatLng(lat, lng);\r\n const place = getFirstGeocodeResult(places, SupportedGeocoderCountry.US);\r\n if (place) {\r\n const sessionToken = new google.maps.places.AutocompleteSessionToken();\r\n yield put(setIsViewingLocationDetails(false));\r\n yield put(setLocationDetails(null));\r\n yield put(doPlaceSearch(currentApp, place.place_id, sessionToken));\r\n }\r\n } else if (currentApp === App.Match) {\r\n const places = yield getGeocodeFromLatLng(lat, lng);\r\n const place = getFirstGeocodeResult(places, SupportedGeocoderCountry.US);\r\n if (place) {\r\n const sessionToken = new google.maps.places.AutocompleteSessionToken();\r\n yield put(doPlaceSearch(currentApp, place.place_id, sessionToken));\r\n }\r\n } else {\r\n yield put(setSearchedMatchPlace(latLngName, 'none', lat, lng));\r\n yield put(setSideNavOpen(true));\r\n }\r\n};\r\n\r\n/** \r\n * Begin Type guards\r\n */\r\nconst paramsRepresentCircle = (param: MobilyticsQueryParam) : param is ICircleQueryParams => {\r\n const circle = param as ICircleQueryParams;\r\n return !!circle.latitude && !!circle.longitude && !!circle.radiusMeters;\r\n};\r\n\r\nconst paramsRepresentCustomPolygon = (param: MobilyticsQueryParam) : param is IPolygonQueryParams => {\r\n const polygon = param as IPolygonQueryParams;\r\n return polygon?.points?.length > 0;\r\n};\r\n\r\nconst paramsRepresentMobilyticsPlace = (param: MobilyticsQueryParam) : param is IMobilyticsPlaceQueryParams => {\r\n const place = param as IMobilyticsPlaceQueryParams;\r\n return place?.safegraphLocationId?.length > 0;\r\n};\r\n/** \r\n * End Type guards\r\n */\r\n\r\nfunction* loadLocations(action: types.DoLoadLocationsAction) {\r\n try {\r\n const { locations } = action.data;\r\n\r\n yield put(setIsLoadingLocations(true));\r\n\r\n const scenarioFormStates = yield(select(scenarioFormStatesSelector));\r\n if ((scenarioFormStates.length + locations.length) > MAXIMUM_SCENARIOS) {\r\n return yield put(setIsLoadingLocations(false));\r\n }\r\n\r\n const usaWKT = yield select(usaWKTSelector);\r\n if (isWktEmpty(usaWKT)) {\r\n const result: IServiceResult = yield call(() =>\r\n api.getCountryWKT(\"USA\")\r\n );\r\n yield put(setUSAWKT(result.data));\r\n }\r\n\r\n const scenarios: IMobilyticsScenarioFormState[] = [];\r\n let firstLocationIsPlace = false;\r\n const firstLocationDetails: LocationDetailsParameters = {\r\n name: null,\r\n placeId: null,\r\n lat: null,\r\n lng: null,\r\n };\r\n\r\n yield put(setIsLoading(true));\r\n\r\n for (let o = 0; o < locations.length; o++) {\r\n const location = locations[o];\r\n\r\n let title = \"\";\r\n let polygon: IPolygon;\r\n let safegraphLocationId: string;\r\n let safegraphBrandId: string;\r\n\r\n if (paramsRepresentCircle(location)) {\r\n polygon = circleFromQueryParams(location.latitude, location.longitude, location.radiusMeters);\r\n title = location.title;\r\n } else if (paramsRepresentCustomPolygon(location)) {\r\n polygon = customPolygonFromPoints(location.points);\r\n title = location.title;\r\n } else if (paramsRepresentMobilyticsPlace(location)) {\r\n const sgLocations = yield getSafeGraphLocations([location.safegraphLocationId]);\r\n const sgLocation = sgLocations?.length > 0 ? sgLocations[0] : null;\r\n polygon = customPolygonFromPoints(sgLocation.polygon);\r\n title = location.title;\r\n safegraphLocationId = sgLocation.locationId;\r\n safegraphBrandId = sgLocation.brandId;\r\n if (o === 0) {\r\n firstLocationIsPlace = true;\r\n }\r\n }\r\n\r\n const scenario: IMobilyticsScenarioFormState = {\r\n ...defaultScenarioFormState,\r\n isCustomPolygon: true,\r\n polygon,\r\n title,\r\n };\r\n\r\n const centroid = getCentroid(polygon);\r\n const places = yield getGeocodeFromLatLng(centroid.lat(), centroid.lng());\r\n const place = getFirstGeocodeResult(places, SupportedGeocoderCountry.US);\r\n\r\n if (place) {\r\n const placeId = place.place_id;\r\n const sessionToken = new google.maps.places.AutocompleteSessionToken();\r\n const details = yield getPlaceDetails(placeId, sessionToken);\r\n if (o === 0) {\r\n firstLocationDetails.lat = details.geometry.location.lat();\r\n firstLocationDetails.lng = details.geometry.location.lng();\r\n firstLocationDetails.placeId = placeId;\r\n firstLocationDetails.name = title;\r\n }\r\n\r\n scenario.lat = details.geometry.location.lat();\r\n scenario.lng = details.geometry.location.lng();\r\n scenario.placeId = placeId;\r\n\r\n if (safegraphLocationId) {\r\n scenario.locationId = safegraphLocationId;\r\n }\r\n\r\n if (safegraphBrandId) {\r\n scenario.brandId = safegraphBrandId;\r\n }\r\n\r\n yield put(onLocationSelectedForAnalysis({ placeId, sessionToken, hasPolygon: true }));\r\n yield put(setSearchedMobilyticsPlace(placeId, details.formatted_address));\r\n yield put(setSideNavOpen(true));\r\n }\r\n\r\n scenarios.push(scenario);\r\n }\r\n\r\n yield put(setAppPastIntro(App.Mobilytics));\r\n\r\n const currentScenarioFormStates = yield(select(scenarioFormStatesSelector));\r\n yield put(setScenarioFormStates([...currentScenarioFormStates, ...scenarios]));\r\n yield put(setSideNavOpen(true));\r\n yield put(setLocationDetails({\r\n ...firstLocationDetails\r\n }));\r\n yield put(setIsLoading(false));\r\n yield put(setIsLoadingLocations(false));\r\n } catch (e) {\r\n console.log(e);\r\n // todo: Handle failure\r\n }\r\n}","import { IBaseAction } from \"../Actions/BaseAction\";\r\nimport { App } from \"../Enums/App\";\r\nimport { MobilyticsQueryParam } from \"../Models/MobilyticsQueryParam\";\r\n\r\nexport interface IPlaceSearchRequest {\r\n app: App;\r\n placeId: string;\r\n sessionToken: google.maps.places.AutocompleteSessionToken;\r\n};\r\n\r\nexport interface ILatLngSearchRequest {\r\n lat: number;\r\n lng: number;\r\n};\r\n\r\nexport interface ILoadLocationsRequest {\r\n locations: MobilyticsQueryParam[];\r\n}\r\n\r\nexport type DoPlaceSearchAction = IBaseAction;\r\nexport type DoLatLngSearchAction = IBaseAction;\r\n\r\nexport type PlaceSearchAction = DoPlaceSearchAction | DoLatLngSearchAction;\r\n\r\nexport type DoLoadLocationsAction = IBaseAction;\r\n\r\nexport const DO_PLACE_SEARCH = \"DO_PLACE_SEARCH\";\r\nexport const DO_LATLNG_SEARCH = \"DO_LATLNG_SEARCH\";\r\n\r\nexport const DO_LOAD_LOCATIONS = \"DO_LOAD_LOCATIONS\";","import { IPointBase } from \"../../../Models/IPoint\";\n\nexport interface IPolygonQueryParams {\n title: string;\n points: IPointBase[];\n};","export enum SupportedGeocoderCountry {\n US = \"US\"\n};\n\nexport const getCountryFromGeocodeResult = (result: google.maps.GeocoderResult): string => {\n if (result\n && result.address_components\n && result.address_components.length > 0) {\n for (const component of result.address_components) {\n if (component.types.indexOf(\"country\") > -1) {\n return component.short_name;\n }\n }\n }\n return null;\n};\n\nexport const getFirstGeocodeResult = (results: google.maps.GeocoderResult[], country: SupportedGeocoderCountry = null): google.maps.GeocoderResult => {\n if (results && results.length > 0) {\n if (country) {\n for (const result of results) {\n if (country === getCountryFromGeocodeResult(result)) {\n return result;\n }\n }\n } else {\n return results[0];\n }\n }\n return null;\n};","import { IAddressZipcode } from \"../../../Models/IAddressZipcode\";\nimport { ISafegraphLocation } from \"../../../Models/ISafegraphLocation\";\nimport * as MobilyticsApi from \"../API/MobilyticsApi\";\nimport { ICustomPolygon } from \"../Models/Maps/ICustomPolygon\";\nimport { customPolygonFromPoints } from \"./PolygonLogic\";\n\nexport const getSafeGraphLocations = async (safegraphLocationIds: string[]): Promise => {\n return await MobilyticsApi.getSafeGraphLocations(safegraphLocationIds);\n};\n\nexport const getPolygonFromSafegraphPlace = (place: ISafegraphLocation): ICustomPolygon => {\n return customPolygonFromPoints(place.polygon);\n};\n\nexport const getAddressAndZipcodeFromGooglePlaceResult = (details: google.maps.places.PlaceResult): IAddressZipcode => {\n const streetNumberComponent = details?.address_components?.find(c => c.types.some(t => t === \"street_number\"));\n const routeComponent = details?.address_components?.find(c => c.types.some(t => t === \"route\"));\n const zipcodeComponent = details?.address_components?.find(c => c.types.some(t => t === \"postal_code\"));\n const address = `${streetNumberComponent?.short_name} ${routeComponent?.short_name}`;\n const zipcode = zipcodeComponent?.short_name;\n\n return {\n address,\n zipcode\n };\n};","export const MAX_MERCATOR_LATITUDE = 85.05112877980659; //atan(sinh(PI)) *180 / PI\nexport const MIN_MERCATOR_LATITUDE = -85.05112877980659; //atan(sinh(PI)) *180 / PI\nexport const MAX_MERCATOR_LONGITUDE = 180.0;\nexport const MIN_MERCATOR_LONGITUDE = -180.0;\n\nconst isValidLat = (lat: number) => lat !== undefined &&\n lat !== null &&\n lat >= MIN_MERCATOR_LATITUDE &&\n lat <= MAX_MERCATOR_LATITUDE;\n\nconst isValidLng = (lng: number) => lng !== undefined &&\n lng !== null &&\n lng >= MIN_MERCATOR_LONGITUDE &&\n lng <= MAX_MERCATOR_LONGITUDE;\n\nexport const isValidLatForMatch = (lat: number) => isValidLat(lat) && \n lat !== 0;\n\nexport const isValidLngForMatch = (lng: number) => isValidLng(lng) && \n lng !== 0;\n\nexport const isValidLatForMobilytics = (lat: number) => isValidLat(lat) && \n lat !== 0;\n\nexport const isValidLngForMobilytics = (lng: number) => isValidLng(lng) && \n lng !== 0;\n \n\nexport const isValidLatLngForMatch = (lat: number, lng: number) => isValidLatForMatch(lat) &&\n isValidLngForMatch(lng);\n\nexport const isValidLatLngForMobilytics = (lat: number, lng: number) => isValidLatForMobilytics(lat) && \n isValidLngForMobilytics(lng);","export interface IGetNotificationsRequest {\n startDate: Date;\n endDate: Date;\n}\n\nexport class GetNotificationsRequest implements IGetNotificationsRequest {\n /**\n *\n */\n constructor(start: Date, end: Date) {\n this.startDate = start;\n this.endDate = end;\n }\n public startDate: Date = new Date();\n public endDate: Date = new Date();\n}","export interface IUpdateAllNotificationsActiveStatusRequest {\n isActive: boolean;\n}\n\nexport class UpdateAllNotificationsActiveStatusRequest implements IUpdateAllNotificationsActiveStatusRequest {\n /**\n *\n */\n constructor(active: boolean) {\n this.isActive = active;\n }\n public isActive = false;\n}","export interface IUpdateAllNotificationsReadStatusRequest {\n isRead: boolean;\n}\n\nexport class UpdateAllNotificationsReadStatusRequest implements IUpdateAllNotificationsReadStatusRequest {\n /**\n *\n */\n constructor(read: boolean) {\n this.isRead = read;\n }\n public isRead = false;\n}","import { DigitalShareAppType } from \"../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../Enums/RenderType\";\n\nexport interface IVennChart {\n percent1: number;\n percent2: number;\n centralPercent: number;\n centralIcon: JSX.Element;\n location1Name: string;\n location2Name: string;\n isActive?: boolean;\n}\n\nexport interface IVennCircleWrapper {\n mobileInitDiam: number;\n mobileExpDiam: number;\n desktopInitDiam: number;\n desktopExpDiam: number;\n}\n\nexport interface IVennCircle {\n percent: number;\n mobileInitDiam: number;\n mobileExpDiam: number;\n desktopInitDiam: number;\n desktopExpDiam: number;\n backgroundColor: string;\n}\n","import { AxiosError, AxiosResponse } from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { CompanySupportTeamAxios } from \"../Contracts/Axios/CompanySupportTeamAxios\";\nimport { IBuxtonSupportTeamMember, IServiceResult } from \"../Models/Models\";\nimport * as types from \"./Types\";\n\nexport const getCompanySupportTeam: ActionCreator<\n ThunkAction\n> = () => {\n return (dispatch: Dispatch) => {\n const companySupportTeamAxios = new CompanySupportTeamAxios();\n const promise = companySupportTeamAxios.GetCompanySupportTeam();\n\n promise\n .then((response: IServiceResult>) => {\n dispatch(getCompanySupportTeamSuccess(response));\n })\n .catch((error: any) => {\n dispatch(getCompanySupportTeamFailure(error));\n });\n };\n};\n\nconst getCompanySupportTeamSuccess = (\n response: IServiceResult>\n) => ({\n type: types.GET_COMPANY_SUPPORT_TEAM_SUCCESS,\n data: response.data,\n});\n\nconst getCompanySupportTeamFailure = (error: AxiosError) => ({\n type: types.GET_COMPANY_SUPPORT_TEAM_FAILURE,\n data: error,\n});\n","import axios, { AxiosError, AxiosResponse } from \"axios\";\nimport { IBuxtonSupportTeamMember, IServiceResult } from \"../../Models/Models\";\nimport { ICompanySupportTeamAxios } from \"../ICompanySupportTeamAxios\";\n\nexport class CompanySupportTeamAxios implements ICompanySupportTeamAxios {\n public GetCompanySupportTeam(): Promise<\n IServiceResult>\n > {\n const promise = new Promise<\n IServiceResult>\n >((resolve, reject) => {\n axios\n .get>>(\n \"/Common/AccountTeam\"\n )\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n}\n","import { authorizedAxios } from \"../../Actions/AxiosActions\";\nimport { IDemReportRequest } from \"../../Actions/ConfigurableReportActions\";\nimport { IServiceResult } from \"../../Models/Models\";\nimport { IConfigurableReport, IConfigurableUserTemplate } from \"../IConfigurableReport\";\n\nconst getBaseUrl = (): string => {\n const hostname = window.location.hostname;\n switch (hostname) {\n case \"platform.buxtonco.com\":\n return \"https://configurable-reporting.buxtonco.com\";\n case \"platform-qat.buxtonco.com\":\n return \"https://configurable-reporting-qat.buxtonco.com\";\n case \"platform-uat.buxtonco.com\":\n return \"https://configurable-reporting-uat.buxtonco.com\";\n case \"localhost\":\n return \"https://configurable-reporting-dev.buxtonco.com\";\n default:\n throw new Error(`Unknown hostname: ${hostname}`);\n }\n};\n\ninterface IConfigurableReportsAxios {\n GetConfigurableReports: (collaborate?: boolean) => Promise;\n DeleteConfigurableReport: (reportId: string) => Promise;\n CreateConfigurableReport: (newReport: IDemReportRequest) => Promise;\n CreateMultiConfigurableReport: (newReport: { reportName: string; combine: boolean; requestedAreas: IDemReportRequest[] }) => Promise;\n GetUserTemplates: () => Promise;\n}\n\nexport class ConfigurableReportsAxios implements IConfigurableReportsAxios {\n private ServiceToken: string;\n\n private async GetServiceToken(): Promise {\n try {\n const response: IServiceResult = await authorizedAxios(\"GET\", \"/token/servicetoken\");\n if (response.result && response.data) {\n return response.data;\n } else {\n throw new Error(\"Bad response from service token endpoint\");\n }\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n private async PerformRequest(url: string, options: RequestInit): Promise {\n let attempts = 0;\n const maxAttempts = 2;\n\n while (attempts < maxAttempts) {\n try {\n if (!this.ServiceToken) {\n this.ServiceToken = await this.GetServiceToken();\n }\n options.headers = {\n ...options.headers,\n \"Authorization\": `Bearer ${this.ServiceToken}`,\n };\n\n const res = await fetch(url, options);\n\n // If a request using a service token fails with a 401, that means the token is expired.\n // Get a new token and try the request again (if the max attempts haven't been reached).\n if (res.status === 401 && attempts < maxAttempts - 1) {\n this.ServiceToken = await this.GetServiceToken();\n options.headers[\"Authorization\"] = `Bearer ${this.ServiceToken}`;\n attempts++;\n } else {\n return res;\n }\n } catch (err) {\n console.error(`Error performing request: ${err.message}`);\n attempts++;\n if (attempts >= maxAttempts) {\n throw err;\n }\n }\n }\n }\n\n public async GetConfigurableReports(collaborate?: boolean): Promise {\n const url = `${getBaseUrl()}/Report${collaborate ? \"?getCidReports=true\" : \"\"}`;\n const options = {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n };\n\n const res = await this.PerformRequest(url, options);\n if (res.ok) {\n const data: IConfigurableReport[] = await res.json();\n return data;\n } else {\n throw new Error(res.statusText);\n }\n }\n\n public async DeleteConfigurableReport(reportId: string): Promise {\n const url = `${getBaseUrl()}/Report/${reportId}`;\n const options = {\n method: \"DELETE\",\n headers: { \"Content-Type\": \"application/json\" },\n };\n\n const res = await this.PerformRequest(url, options);\n return res.ok;\n }\n\n public async CreateConfigurableReport(newReport: IDemReportRequest): Promise {\n const url = `${getBaseUrl()}/Report`;\n const options = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(newReport),\n };\n\n const res = await this.PerformRequest(url, options);\n \n if (res.status !== 202) {\n return false;\n }\n\n return res.ok;\n }\n\n public async CreateMultiConfigurableReport(newReport: {\n reportName: string;\n combine: boolean;\n requestedAreas: IDemReportRequest[];\n }): Promise {\n const url = `${getBaseUrl()}/Report/Combine`;\n const options = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(newReport),\n };\n\n const res = await this.PerformRequest(url, options);\n\n if (res.status !== 202) {\n return false;\n }\n\n return res.ok;\n }\n\n public async GetUserTemplates(): Promise {\n const url = `${getBaseUrl()}/Template`;\n const options = {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n };\n\n const res = await this.PerformRequest(url, options);\n if (res.ok) {\n const data: IConfigurableUserTemplate[] = await res.json();\n\n return data;\n } else {\n throw new Error(res.statusText);\n }\n }\n}\n","// A series of helper functions used for parsing and cleaning SCOUT job data into usable data for the CR app\n\ninterface LocationData {\n radiusMiles: number;\n point: {\n x: number;\n y: number;\n };\n}\n\n// As long as SCOUT is incorrectly appending lat/long data as job params, we'll need\n// to rely on using the lat/long data from the RADII_MILES param\nexport const getDataFromRadiusString = (dataStr: string | null): LocationData | null => {\n if (!dataStr) {\n return null;\n }\n\n const parts = dataStr.split(\",\");\n\n if (parts.length < 3) {\n return null;\n }\n\n const latitude = Number(parts[0]);\n const longitude = Number(parts[1]);\n const radiusMiles = Number(parts[2].split(\" \")[0]); // Extract the miles value before any text\n\n return {\n radiusMiles,\n point: {\n x: latitude,\n y: longitude,\n },\n };\n};\n\nconst cleanRing = (ring: number[][]): number[][] => {\n if (ring.length < 4) {\n throw new Error(\"Polygon ring must have at least 4 points\");\n }\n\n const firstPoint = ring[0];\n const lastPoint = ring[ring.length - 1];\n\n // Ensure the ring is closed\n if (firstPoint[0] !== lastPoint[0] || firstPoint[1] !== lastPoint[1]) {\n ring.push(firstPoint);\n }\n\n // Remove consecutive duplicate points\n return ring.filter((point, index, array) => {\n if (index === 0) {\n return true;\n }\n const prevPoint = array[index - 1];\n return point[0] !== prevPoint[0] || point[1] !== prevPoint[1];\n });\n};\n\nconst cleanGeoJsonObject = (spatialObject: any): any => {\n if (!spatialObject || !spatialObject.type || !Array.isArray(spatialObject.coordinates)) {\n throw new Error(\"Invalid GeoJSON format\");\n }\n\n // Check if the object is a Polygon or a MultiPolygon\n if (spatialObject.type === \"Polygon\") {\n // Handle single Polygon\n spatialObject.coordinates[0] = cleanRing(spatialObject.coordinates[0]);\n } else if (spatialObject.type === \"MultiPolygon\") {\n // Handle MultiPolygon\n spatialObject.coordinates = spatialObject.coordinates.map(polygon => {\n // Clean outer ring for each polygon in the MultiPolygon\n polygon[0] = cleanRing(polygon[0]);\n return polygon;\n });\n } else {\n throw new Error(\"Unsupported GeoJSON type. Only Polygon and MultiPolygon are supported.\");\n }\n\n return spatialObject;\n};\n\nexport const fixGeoJsonGeometry = (spatialObject: any): any => {\n // Clean the GeoJSON object\n const cleanedGeoJson = cleanGeoJsonObject(spatialObject);\n const reader = new jsts.io.GeoJSONReader();\n\n // Read it into JSTS geometry\n let geometry = reader.read(cleanedGeoJson);\n\n if (!geometry.isValid()) {\n // Fix the geometry using buffer(0) if invalid\n // 0: buffer distance\n // 8: buffer quadrant segments (default)\n // 1: buffer cap style (default)\n geometry = geometry.buffer(0, 8, 1);\n }\n\n // Convert the geometry back to GeoJSON format\n const writer = new jsts.io.GeoJSONWriter();\n return writer.write(geometry);\n};\n","import { IMobilyticsScenarioFormState } from \"../View/Products/Pages/Apps/Mobilytics/SubmitMobilyticsLogic\";\nimport {\n START_FACTOR_REPORT,\n SET_FACTOR_SCENARIOS,\n SET_FACTOR_VISIBLE,\n SET_FACTOR_LOADING_SCENARIOS,\n} from \"./Types\";\n\nexport const startFactorReport = () => ({\n type: START_FACTOR_REPORT,\n data: null,\n});\n\nexport const setFactorScenarioFormStates = (scenarios: IMobilyticsScenarioFormState[]) => ({\n type: SET_FACTOR_SCENARIOS,\n data: scenarios,\n});\n\nexport const setFactorVisible = (visible: boolean) => ({\n type: SET_FACTOR_VISIBLE,\n data: visible,\n});\n\nexport const setFactorLoadingScenarios = (loading: boolean) => ({\n type: SET_FACTOR_LOADING_SCENARIOS,\n data: loading,\n});","import { IServiceResult, IUser } from \"../Models/Models\";\n\nexport interface IAuthentication {\n GetStatus(): Promise>;\n\n GetUser(): Promise>;\n}\n","import { IDashboardData, IServiceResult } from \"../Models/Models\";\n\nexport interface IHome {\n GetDashboardData(): Promise>;\n}\n","import {\n ICloudFileDatabasePage,\n ICloudFolder,\n IPushpin,\n IPushpinType,\n IServiceResult,\n IStore,\n IStoreType,\n ITerritory,\n ITerritoryType,\n IMyDataImportResult,\n ICloudFile, ITargetMarketDeveloperType, ITargetMarketLocation,\n} from \"../Models/Models\";\n\nexport interface IMyDataAxios {\n GetCloudIcons(url): Promise>;\n SubmitImport(data, url): Promise>;\n DeleteCloudFolder(data): Promise>;\n AddCloudFolder(data): Promise>;\n UpdateCloudFile(data): Promise>;\n DeleteCloudFile(data): Promise>;\n GetStoreTypes(): Promise>;\n GetStoreData(data): Promise>;\n GetPushpinTypes(): Promise>;\n GetPushpinData(data): Promise>;\n GetTerritoryTypes(): Promise>;\n GetTerritoryData(data): Promise>;\n GetAreasOfInterestPointTypes(): Promise>;\n GetAreasOfInterestPointData(\n data\n ): Promise>>;\n GetAreasOfInterestShapeTypes(): Promise>;\n GetAreasOfInterestShapeData(\n data\n ): Promise>>;\n GetResultsPointTypes(): Promise>;\n GetResultsPointData(\n data\n ): Promise>>;\n GetResultsShapeTypes(): Promise>;\n GetResultsShapeData(\n data\n ): Promise>>;\n GetTargetMarkets(): Promise>;\n GetTargetMarketData(data): Promise>;\n}\n","import { IServiceResult, IStoreExploreData, ITwoByTwo } from \"../Models/Models\";\n\nexport interface ITwoByTwoAxios {\n Get2x2(): Promise>;\n ExploreStore(sid: number): Promise>;\n}\n","import { IGPSGetJobResultParsed } from \"../Models/Models\";\nimport { IBrand } from \"../Models/IBrand\";\nimport { IGCPBigQueryJob } from \"../Models/IGCPBigQueryJob\";\nimport { ISubmitMobilyticsJobRequest } from \"../Models/Requests/ISubmitMobilyticsJobRequest\";\nimport { IGetJobsRequest } from \"../Models/Requests/IGetJobsRequest\";\n\nexport interface IGPSInsightsAxios {\n GetResults(jobID: string): Promise;\n GetBrand(term: string): Promise;\n GetUserJobs(request: IGetJobsRequest): Promise;\n GetCompanyJobs(request: IGetJobsRequest): Promise;\n GetJob(jobId: string): Promise;\n // TODO: GB - resolve this any\n SubmitGpsReport(request: ISubmitMobilyticsJobRequest): Promise;\n}\n","import {\n IRetailMatchJobResult,\n IBrand,\n IRetailMatchJob,\n ISegment,\n} from \"../Models/Models\";\nimport { IBrandCategory } from \"../Models/IBrandCategory\";\nimport { IGetBrandsByGeographyAndCategoriesRequest } from \"../Models/Requests/IGetBrandsByGeographyAndCategoriesRequest\";\nimport { IBrandSampleSet } from \"../Models/IBrandSampleSet\";\nimport { IGetBrandsSampleSetDataByGeoRequest } from \"../Models/Requests/IGetBrandsSampleSetDataByGeoRequest\";\n\nexport interface IRetailMatchAxios {\n GetResults(jobId: string): Promise;\n GetBrandsByNaicsCode(naicsCode: string): Promise;\n GetBrandsByGeoAndCategory(\n request: IGetBrandsByGeographyAndCategoriesRequest\n ): Promise;\n UpdateJob(job: IRetailMatchJob): Promise;\n GetMosaicSegments(): Promise;\n GetSampleSetByGeo(\n request: IGetBrandsSampleSetDataByGeoRequest\n ): Promise;\n}\n","export enum UserLoginStatus {\n ACTIVE = 0,\n IDLE = 1,\n NOT_LOGGED_IN = 2,\n}\n","export enum TerritoryTypePermission {\n VIEW,\n EDIT,\n}\n","export enum TerritoryDrawMode {\n FREE_DRAW,\n GEOGRAPHY,\n}\nexport enum GeographyType {\n DRIVE_TIME,\n RING,\n}\nexport enum GeographyTypeMeasurement {\n MILE,\n KILOMETER,\n}\nexport enum GeographyBorderThickness {\n XTHIN,\n THIN,\n MEDIUM,\n THICK,\n}\nexport enum PrintFileTypeOutput {\n PNG,\n PDF,\n}\nexport enum PrintLegend {\n ON,\n OFF,\n}\nexport enum MatchView {\n GRID,\n LIST,\n}\nexport enum MatchArea {\n CONTACTS,\n MY_ACTIVITY,\n FILES,\n}\nexport enum CollaborateOptions {\n ALL,\n LOCATION_FILTERS,\n TERRITORIES,\n PUSHPINS,\n AOI_THEMATICS,\n VIEW_REPORTS,\n REPORT_HISTORY,\n CONTACT_ACTIVITY,\n CONTACTS,\n PROSPECTS,\n}\nexport enum ColorOptions {\n AUTO,\n CUSTOM,\n}\n\nexport enum UserSettingsMenuSelection {\n USER_PROFILE,\n ACCOUNT_TEAM,\n USER_PREFERENCES,\n USER_MANAGEMENT,\n TERRITORY_MANAGEMENT,\n ACCOUNT_INFORMATION,\n COMPANY_MANAGEMENT,\n TIMEOUT_MANAGEMENT,\n}\n","export enum CommunityMatchActivityColumn {\n NAME,\n DATE_CREATED,\n ACTIVITY_RESULT,\n NEXT_STEP,\n NOTES,\n CREATED_BY,\n DUE_DATE,\n RATING,\n}\n","export enum CommunityMatchContactColumn {\n NAME,\n TITLE,\n OFFICE_PHONE,\n CELL_PHONE,\n EMAIL_ADDRESS,\n ADDED_BY,\n ADDRESS,\n LINKEDIN,\n REGION,\n TIME_ZONE,\n NOTES,\n}\n","export enum GPSInsightsContainerView {\n All,\n Insight,\n}\n","export enum DropdownComparisonWeight {\n PRIMARY,\n SECONDARY,\n}\n","import { IReportMapAxios } from \"../IReportMapAxios\";\nimport { IPolygon } from \"../../Models/Models\";\nimport Axios, { AxiosError } from \"axios\";\n\nexport class ReportMapAxios implements IReportMapAxios {\n public GetBlockgroupPolygons(blockGroupIds: string[]): Promise {\n return new Promise((resolve, reject) => {\n Axios.post(\"/services/mapping/geography/BlockGroups\", {\n blockGroupIds: blockGroupIds,\n })\n .then((response) => {\n resolve(response.data);\n })\n .catch((error: AxiosError) => {\n reject(error.message);\n });\n });\n }\n}\n","import { notification } from \"antd\";\nimport { IBuxtonDeck } from \"../Models/IBuxtonDeck\";\nimport { DataBucketTypeEnum } from \"../Enums/DataBucketTypeEnum\";\n\n// const a = {a: 1};\n// console.log(\"TEST\", a);\n// setTimeout(() => {\n// a.a = 2;\n// }, 100);\n\nexport class BuxtonDeck implements IBuxtonDeck {\n declare deck;\n private _overlayProps;\n private _overlay;\n\n constructor() {\n this._overlay = null;\n this._overlayProps = [];\n this.deck = (window as any).deck;\n }\n\n redraw(): void {\n if (this._overlay && this._overlay._deck) {\n this._overlay._deck.redraw(true);\n } else {\n //This console.log is necessary to prevent the error from being thrown in the console\n console.log(\"Attempted to redraw but _overlay or _deck is not initialized.\");\n }\n \n }\n\n getCanvas(): HTMLCanvasElement {\n return this._overlay._deck.canvas;\n }\n\n setPropsOnOverlay = (): void => {\n this._overlay?.setProps({\n layers: [...this._overlayProps],\n glOptions: {\n preserveDrawingBuffer: true,\n },\n layerFilter: ({ layer, viewport }) => {\n if (\n viewport.zoom > 9\n && !layer.id.includes(\"type-\" + DataBucketTypeEnum.HOUSEHOLD_ANALYSIS)\n && !layer.id.includes(\"deck-gps-\")\n && layer.parent instanceof this.deck.HeatmapLayer\n ) {\n notification.open({\n type: \"warning\",\n message: \"Zoom out to level 10 to view this layer.\",\n duration: null, // user must close\n });\n return false;\n } else if (\n viewport.zoom > 11\n && layer.id.includes(\"type-\" + DataBucketTypeEnum.HOUSEHOLD_ANALYSIS)\n && layer.parent instanceof this.deck.HeatmapLayer\n ) {\n notification.open({\n type: \"warning\",\n message: \"Zoom out to level 10 to view this layer.\",\n duration: null, // user must close\n });\n return false;\n }\n return true;\n },\n });\n };\n\n /**\n * Add layer to deck.gl overlay instance\n * @param {this.deck.ScatterplotLayer | this.deck.HeatmapLayer} propToAdd - deck.gl layer to add\n * @param {google.maps.Map} map - instance of google map to add layer to\n */\n\n addProp = (propToAdd, map): void => {\n //add overlay and set map when props are added if it is not set\n if (!this._overlay) {\n this._overlay = new this.deck.GoogleMapsOverlay({});\n this._overlay.setMap(map);\n }\n\n //always put heatmap layer on bottom\n // if (propToAdd.id.startsWith(scout.config.deckHeatmapLayerId)) {\n // this._overlayProps.unshift(propToAdd);\n // } else {\n // this._overlayProps.push(propToAdd);\n // }\n\n this._overlayProps.push(propToAdd);\n this.setPropsOnOverlay();\n };\n\n /**\n * Clears all layers from deck.gl overlay instance\n */\n clearProps = (): void => {\n this._overlayProps = [];\n this.setPropsOnOverlay();\n this.destroyWebGlContext();\n };\n\n /**\n * Update layer already rendered in deck.gl overlay instance\n * @param {this.deck.ScatterplotLayer | this.deck.HeatmapLayer} propToUpdate - new deck.gl layer with same id as current layer\n */\n updateProp = (propToUpdate): void => {\n for (let i = 0; i < this._overlayProps.length; i++) {\n if (this._overlayProps[i].id === propToUpdate.id) {\n this._overlayProps.splice(i, 1, propToUpdate);\n this.setPropsOnOverlay();\n }\n }\n };\n\n /**\n * Get layer if it already exists.\n * @param {this.deck.ScatterplotLayer | this.deck.HeatmapLayer | this.deck.PolygonLayer } propToCheck - new deck.gl layer with same id as current layer\n */\n getProp = (propToCheck): boolean => {\n for (const prop of this._overlayProps) {\n if (prop.id === propToCheck.id) {\n return true;\n }\n }\n\n return false;\n };\n\n /**\n * Remove specific layer from deck.gl overlay instance\n * @param {this.deck.ScatterplotLayer | this.deck.HeatmapLayer} propToRemove - deck.gl layer to remove\n */\n removeProp = (propToRemove): void => {\n for (let i = 0; i < this._overlayProps.length; i++) {\n if (this._overlayProps[i].id === propToRemove.id) {\n this._overlayProps.splice(i, 1);\n this.setPropsOnOverlay();\n }\n }\n\n //destroy WebGL context if all props have been removed\n if (this._overlayProps.length === 0) {\n this.destroyWebGlContext();\n }\n };\n\n destroyWebGlContext = (): void => {\n if (this._overlay) {\n this._overlay?.finalize();\n this._overlay = null;\n } else {\n //This console.log is necessary to prevent the error from being thrown in the console\n console.log(\"Attempted to finalize _overlay but it is already null.\");\n }\n };\n}\n","let _dataBucketEnumID = 0;\n\nexport enum DataBucketTypeEnum {\n NONE = _dataBucketEnumID++,\n LOCATIONS = _dataBucketEnumID++,\n SINGLE_LOCATION = _dataBucketEnumID++,\n HOTELS = _dataBucketEnumID++,\n DRIVETIME = _dataBucketEnumID++,\n THEMATIC = _dataBucketEnumID++,\n CIRCLE = _dataBucketEnumID++,\n RULERTOOL = _dataBucketEnumID++,\n CUSTOMER_DOTS = _dataBucketEnumID++,\n GEOLOCATION = _dataBucketEnumID++,\n TERRITORY = _dataBucketEnumID++,\n SINGLE_TERRITORY = _dataBucketEnumID++,\n SINGLE_PUSHPIN = _dataBucketEnumID++,\n POINTSOFINTEREST = _dataBucketEnumID++,\n CUSTOMER_HEATMAP = _dataBucketEnumID++,\n PROFILE_THEMATIC = _dataBucketEnumID++,\n CUSTOMER_THEMATIC = _dataBucketEnumID++,\n ACTUAL_CUSTOMER_HEATMAP = _dataBucketEnumID++,\n ENHANCED_TRAFFIC = _dataBucketEnumID++,\n IMPACT_ANALYSIS = _dataBucketEnumID++,\n DEMAND_ANALYSIS = _dataBucketEnumID++,\n HOUSEHOLD_ANALYSIS = _dataBucketEnumID++,\n BUSINESS_ANALYSIS = _dataBucketEnumID++,\n EXPLORE_LOCATION = _dataBucketEnumID++,\n EXPLORE_GEOGRAPHY = _dataBucketEnumID++,\n PUSHPINS = _dataBucketEnumID++,\n BUSINESS = _dataBucketEnumID++,\n BOUNDARY = _dataBucketEnumID++,\n CLOUD_DATA = _dataBucketEnumID++,\n SEARCH = _dataBucketEnumID++,\n CLUSTER_ITEMS = _dataBucketEnumID++,\n LOCATION_LIFECYCLE = _dataBucketEnumID++,\n LOCATION_FILTERS = _dataBucketEnumID++,\n GOOGLEPLACE = _dataBucketEnumID++,\n DRAWINGTOOLS = _dataBucketEnumID++,\n REPORTS = _dataBucketEnumID++,\n MY_MARKET = _dataBucketEnumID++,\n VISUALIZATION = _dataBucketEnumID++,\n HOTEL_COMPETITOR = _dataBucketEnumID++,\n WORKFLOW = _dataBucketEnumID++,\n}\n","import { ILatLon } from \"./Models\";\nimport { GeoAccuracy } from \"../Enums/GeoAccuracy\";\n\nexport interface IGeocodeResponse {\n coordinates: ILatLon;\n geoAccuracy: GeoAccuracy;\n}\n","export enum GeoAccuracy {\n UNKNOWN = 0,\n ROOFTOP = 1,\n RANGE_INTERPOLATED = 2,\n GEOMETRIC_CENTER = 3,\n APPROXIMATE = 4,\n}\n","import { IOktaMFAFactorProfileKey } from \"./IOktaMFAFactorProfileKey\";\n\nexport interface IOktaMFAFactorProfile {\n credentialId: string;\n deviceType: string;\n keys: IOktaMFAFactorProfileKey[];\n name: string;\n platform: string;\n version: string;\n}\n","import { IOktaMFAFactorLink } from \"./IOktaMFAFactorLink\";\n\nexport interface IOktaMFAFactorLinks {\n self: IOktaMFAFactorLink;\n verify: IOktaMFAFactorLink;\n user: IOktaMFAFactorLink;\n}\n","import { notification } from \"antd\";\nimport { IBrandSampleSet } from \"../../../Models/IBrandSampleSet\";\nimport { IBrand } from \"../../../Models/Models\";\nimport {\n BrandActionType,\n GET_ALL_BRANDS_FAILURE,\n GET_ALL_BRANDS_SUCCESS,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_FAILURE,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_SUCCESS,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_FAILURE,\n GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_SUCCESS,\n SET_LOADING_BRANDS,\n SET_LOADING_BRAND_SAMPLE_SET_LOCATIONS,\n RESET_BRAND_SAMPLE_SET,\n ICorrelatedBaseAction,\n} from \"../Types/BrandActionTypes\";\n\nexport interface IBrandsReducerState {\n brands: IBrand[];\n loadingBrands: boolean;\n sampleSet: IBrandSampleSet[];\n sampleSetCorrelationId: number;\n loadingSampleSet: boolean;\n}\n\nexport const brandReducerState: IBrandsReducerState = {\n brands: [],\n loadingBrands: false,\n sampleSet: [],\n loadingSampleSet: false,\n sampleSetCorrelationId: -1,\n};\n\nexport const brandsReducer = (\n state: IBrandsReducerState = { ...brandReducerState },\n action: BrandActionType\n): IBrandsReducerState => {\n switch (action.type) {\n /** misc */\n case SET_LOADING_BRANDS: {\n return {\n ...state,\n loadingBrands: action.data as boolean,\n };\n }\n case SET_LOADING_BRAND_SAMPLE_SET_LOCATIONS: {\n return {\n ...state,\n loadingBrands: action.data as boolean,\n };\n }\n /** success */\n case GET_ALL_BRANDS_SUCCESS: {\n return {\n ...state,\n brands: action.data as IBrand[],\n };\n }\n case GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_SUCCESS:\n case GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_SUCCESS: {\n const a = action as ICorrelatedBaseAction;\n return state.sampleSetCorrelationId > a.correlationId ? state : {\n ...state,\n sampleSet: a.data,\n sampleSetCorrelationId: a.correlationId\n };\n }\n /** failure */\n case GET_ALL_BRANDS_FAILURE: {\n notification.error({\n message: \"Error getting Brands\",\n description: action.data,\n });\n return {\n ...state,\n };\n }\n case GET_BRAND_SAMPLE_SET_LOCATIONS_BY_GEO_FAILURE:\n case GET_BRAND_SAMPLE_SET_LOCATIONS_BY_CLOSEST_FAILURE: {\n const a = action as ICorrelatedBaseAction;\n if (a.correlationId > state.sampleSetCorrelationId) {\n notification.error({\n message: \"Error getting Sample Set locations\",\n description: action.data,\n });\n return {\n ...state,\n sampleSetCorrelationId: a.correlationId,\n sampleSet: [],\n };\n } else {\n return state;\n };\n }\n case RESET_BRAND_SAMPLE_SET: {\n return {\n ...state,\n sampleSetCorrelationId: action.data as number,\n sampleSet: [],\n loadingSampleSet: false,\n };\n }\n default: {\n return state;\n }\n }\n};\n","import { IBrandCategory } from \"../../../Models/IBrandCategory\";\nimport {\n CategoryActionType,\n GET_ALL_CATEGORIES_FAILURE,\n GET_ALL_CATEGORIES_SUCCESS,\n SET_LOADING_CATEGORIES\n} from \"../Types/CategoryActionTypes\";\n\nexport interface ICategoriesReducerState {\n categories: IBrandCategory[];\n loadingCategories: boolean;\n}\n\nexport const categoriesReducerState: ICategoriesReducerState = {\n categories: [],\n loadingCategories: false,\n};\n\nexport const categoriesReducer = (\n state: ICategoriesReducerState = { ...categoriesReducerState },\n action: CategoryActionType\n): ICategoriesReducerState => {\n switch (action.type) {\n /** misc */\n case SET_LOADING_CATEGORIES: {\n return {\n ...state,\n loadingCategories: action.data as boolean,\n };\n }\n /** success */\n case GET_ALL_CATEGORIES_SUCCESS: {\n return {\n ...state,\n categories: action.data as IBrandCategory[],\n };\n }\n /** failure */\n case GET_ALL_CATEGORIES_FAILURE: {\n console.log(action.data);\n return {\n ...state,\n };\n }\n default: {\n return state;\n }\n }\n};\n","import { CommonActionType, GET_USA_WKT_SUCCESS } from '../Types/CommonActionTypes';\n\nexport interface ICommonReducerState {\n usaWKT: string;\n}\n\nexport const commonReducerState: ICommonReducerState = {\n usaWKT: null\n};\n\nexport const commonReducer = (\n state: ICommonReducerState = { ...commonReducerState },\n action: CommonActionType\n): ICommonReducerState => {\n switch (action.type) {\n case GET_USA_WKT_SUCCESS: {\n return {\n ...state,\n usaWKT: action.data as string,\n };\n }\n \n default: {\n return state;\n }\n }\n};\n","import { App } from \"../Enums/App\";\n\nexport interface ICurrentHover {\n app: App;\n title: string;\n image: string;\n header: string;\n description: string;\n}\n\nexport interface ILockedModal {\n visible: boolean;\n title: string;\n description: string;\n link: string;\n linkText: string;\n}\n","import { defaultCenter, defaultZoom } from \"../Components/Map/MapLogic\";\nimport { IMapMarker } from \"../Models/IMapMarker\";\nimport { IMapPolygon } from \"../Models/IMapPolygon\";\nimport {\n MapActionType,\n\n SET_LOADING_OVERLAY,\n SET_MAP_CENTER,\n SET_MAP_MARKERS_NEW,\n SET_MAP_ZOOM,\n} from \"../Types/MapActionTypes\";\n\nexport interface IMapReducerState {\n markers: IMapMarker[];\n polygons: IMapPolygon[];\n center: google.maps.LatLng;\n zoom: number;\n showLoadingOverlay: boolean;\n}\n\nexport const mapReducerState: IMapReducerState = {\n markers: [],\n polygons: [],\n center: defaultCenter,\n zoom: defaultZoom,\n showLoadingOverlay: false\n};\n\nexport const mapReducer = (\n state: IMapReducerState = { ...mapReducerState },\n action: MapActionType\n): IMapReducerState => {\n switch (action.type) {\n /** misc */\n case SET_MAP_MARKERS_NEW: {\n const incomingMarkers = action.data as IMapMarker[];\n const newMarker = incomingMarkers.length > 0 ?incomingMarkers[incomingMarkers.length - 1] : null;\n\n return {\n ...state,\n markers: incomingMarkers,\n center: newMarker\n ? new google.maps.LatLng(newMarker.lat, newMarker.lng)\n : defaultCenter,\n };\n }\n case SET_MAP_CENTER: {\n return {\n ...state,\n center: action.data as google.maps.LatLng\n };\n }\n case SET_MAP_ZOOM: {\n return {\n ...state,\n zoom: action.data as number\n };\n }\n\n case SET_LOADING_OVERLAY: {\n return {\n ...state,\n showLoadingOverlay: action.data as boolean\n };\n }\n default: {\n return state;\n }\n }\n};\n","export enum RetailMatchIndexColor {\n black = \"#000000\",\n lightGreen = \"#66d69c\",\n green = \"#2fb26e\",\n red = \"#ff5154\",\n yellow = \"#efbf55\",\n}\n","export enum RetailMatchDynamicTextEnum {\n NotSimilar = \"NOT SIMILAR\",\n SomewhatSimilar = \"SOMEWHAT SIMILAR\",\n Similar = \"SIMILAR\",\n VerySimilar = \"VERY SIMILAR\",\n Low = \"LOW\",\n SlightlyLower = \"SLIGHTLY LOWER\",\n BelowAverage = \"BELOW AVERAGE\",\n Comparable = \"COMPARABLE\",\n Average = \"AVERAGE\",\n High = \"HIGH\",\n Outperforms = \"OUTPERFORMS\",\n}\n","import { SET_MOBILYTICS_SCENARIOS } from \"../../../Actions/Types\";\nimport { IGCPBigQueryJob } from \"../../../Models/IGCPBigQueryJob\";\nimport { ISafegraphLocation } from \"../../../Models/ISafegraphLocation\";\nimport { PolygonType } from \"../Models/Maps/Enums/PolygonType\";\nimport { IPolygon } from \"../Models/Maps/IPolygon\";\nimport { IMobilyticsScenarioFormState } from \"../Pages/Apps/Mobilytics/SubmitMobilyticsLogic\";\nimport {\n CreateCustomLocationParameters,\n LocationDetailsParameters,\n MobilyticsActionType,\n REMOVE_SEARCHED_PLACE_MOBILYTICS_ACTION,\n SET_CREATE_CUSTOM_LOCATION_PARAMETERS_ACTION,\n SET_DRAW_POLYGON_TYPE,\n SET_IN_PROCESS_POLYGON,\n SET_IS_CREATING_CUSTOM_LOCATION_ACTION,\n SET_IS_VIEWING_LOCATION_DETAILS,\n SET_IS_DRAWING_POLYGON,\n SET_IS_REDIRECTED_FROM_CREATE_CUSTOM_LOCATION,\n SET_LOADING_MOBILYTICS_REPORT,\n SET_SAVED_POLYGONS,\n SET_SEARCHED_PLACE_MOBILYTICS_ACTION,\n SUBMIT_MOBILYTICS_REPORT_FAILURE,\n SUBMIT_MOBILYTICS_REPORT_SUCCESS,\n SET_LOCATION_DETAILS_ACTION,\n SearchedPlaceInfo,\n SET_SHOULD_SHOW_END_OF_REPORT_SCREEN_ACTION,\n SET_IS_SEARCHING_FOR_NEW_LOCATION_ACTION,\n SET_NEARBY_LOCATIONS_ACTION, SET_SIMILAR_LOCATIONS_ACTION,\n REMOVE_POLYGON_ACTION,\n SET_MOST_RECENTLY_SUBMITTED_MOBILYTICS_REPORT, SET_SELECTED_SAFEGRAPH_LOCATION_ACTION,\n SET_CUSTOM_REPORT_TITLE,\n SET_IS_LOADING_LOCATIONS,\n} from \"../Types/MobilyticsActionTypes\";\n\nexport interface IMobilyticsReducerState {\n isDrawingPolygon: boolean;\n drawPolygonType: PolygonType;\n savedPolygons: IPolygon[];\n inProcessPolygon: IPolygon;\n isLoadingMobilyticsReport: boolean;\n isCreatingCustomLocation: boolean;\n isViewingLocationDetails: boolean;\n isRedirectedFromCreateCustomLocation: boolean;\n createCustomLocationParameters: CreateCustomLocationParameters;\n locationDetailsParameters: LocationDetailsParameters,\n searchedLocation: string;\n searchedLocationName: string;\n searchedLocationIndex: number;\n scenarioFormStates: IMobilyticsScenarioFormState[];\n mostRecentlySubmittedReport: IGCPBigQueryJob[];\n shouldShowEndOfReportScreen: boolean;\n nearbyLocations: ISafegraphLocation[],\n similarLocations: ISafegraphLocation[],\n isSearchingForNewLocation: boolean;\n selectedSafegraphLocation: ISafegraphLocation;\n customReportTitle: string;\n isLoadingLocations: boolean;\n}\n\nexport const mobilyticsReducerDefaultState: IMobilyticsReducerState = {\n isDrawingPolygon: false,\n drawPolygonType: PolygonType.Rectangle,\n savedPolygons: [],\n inProcessPolygon: null,\n isLoadingMobilyticsReport: false,\n searchedLocation: null,\n searchedLocationName: null,\n searchedLocationIndex: 0,\n scenarioFormStates: [],\n isCreatingCustomLocation: false,\n isViewingLocationDetails: false,\n isRedirectedFromCreateCustomLocation: false,\n createCustomLocationParameters: { address: '' },\n locationDetailsParameters: null,\n mostRecentlySubmittedReport: null,\n shouldShowEndOfReportScreen: false,\n nearbyLocations: [],\n similarLocations: [],\n isSearchingForNewLocation: false,\n selectedSafegraphLocation: null,\n customReportTitle: null,\n isLoadingLocations: false,\n};\n\nexport const mobilyticsReducer = (\n state: IMobilyticsReducerState = { ...mobilyticsReducerDefaultState },\n action: MobilyticsActionType\n): IMobilyticsReducerState => {\n switch (action.type) {\n /** misc */\n case SET_MOST_RECENTLY_SUBMITTED_MOBILYTICS_REPORT: {\n return {\n ...state,\n mostRecentlySubmittedReport: action.data as IGCPBigQueryJob[]\n };\n }\n case SET_IS_DRAWING_POLYGON: {\n return {\n ...state,\n isDrawingPolygon: action.data as boolean,\n };\n }\n case SET_DRAW_POLYGON_TYPE: {\n return {\n ...state,\n drawPolygonType: action.data as PolygonType,\n };\n }\n case SET_SAVED_POLYGONS: {\n return {\n ...state,\n savedPolygons: action.data as IPolygon[],\n };\n }\n case SET_IN_PROCESS_POLYGON: {\n return {\n ...state,\n inProcessPolygon: action.data as IPolygon,\n };\n }\n case SET_LOADING_MOBILYTICS_REPORT: {\n const isLoading = action.data as boolean;\n return {\n ...state,\n isLoadingMobilyticsReport: isLoading\n };\n }\n case SET_SEARCHED_PLACE_MOBILYTICS_ACTION: {\n const place = action.data as SearchedPlaceInfo;\n return {\n ...state,\n searchedLocation: place.placeId,\n searchedLocationName: place.name,\n searchedLocationIndex: state.searchedLocationIndex + 1,\n };\n }\n case REMOVE_SEARCHED_PLACE_MOBILYTICS_ACTION: {\n return {\n ...state,\n searchedLocation: null,\n searchedLocationName: null\n };\n }\n\n case REMOVE_POLYGON_ACTION: {\n const id = action.data;\n let inProcessPolygonClone = state.inProcessPolygon;\n\n if (!state.savedPolygons.length) {\n inProcessPolygonClone = null;\n }\n\n return {\n ...state,\n savedPolygons: state.savedPolygons.filter(polygon => polygon.id !== id),\n inProcessPolygon: inProcessPolygonClone\n };\n }\n\n case SET_CUSTOM_REPORT_TITLE: {\n return {\n ...state,\n customReportTitle: action.data as string,\n };\n }\n\n case SET_MOBILYTICS_SCENARIOS: {\n return {\n ...state,\n scenarioFormStates: action.data as IMobilyticsScenarioFormState[]\n };\n }\n case SET_IS_CREATING_CUSTOM_LOCATION_ACTION: {\n const isCreating = action.data as boolean;\n return {\n ...state,\n isCreatingCustomLocation: isCreating\n };\n }\n case SET_IS_VIEWING_LOCATION_DETAILS: {\n const isViewing = action.data as boolean;\n return {\n ...state,\n isViewingLocationDetails: isViewing\n };\n }\n case SET_IS_REDIRECTED_FROM_CREATE_CUSTOM_LOCATION: {\n const isRedirected = action.data as boolean;\n return {\n ...state,\n isRedirectedFromCreateCustomLocation: isRedirected\n };\n }\n case SET_CREATE_CUSTOM_LOCATION_PARAMETERS_ACTION: {\n const data = action.data as CreateCustomLocationParameters;\n return {\n ...state,\n createCustomLocationParameters: data\n };\n }\n case SET_LOCATION_DETAILS_ACTION: {\n const data = action.data as LocationDetailsParameters;\n return {\n ...state,\n locationDetailsParameters: data\n };\n }\n case SET_SHOULD_SHOW_END_OF_REPORT_SCREEN_ACTION: {\n const shouldShowEndOfReportScreen = action.data as boolean;\n return {\n ...state,\n shouldShowEndOfReportScreen,\n };\n }\n\n case SET_NEARBY_LOCATIONS_ACTION: {\n const locations = action.data as ISafegraphLocation[];\n return {\n ...state,\n nearbyLocations: locations,\n };\n }\n\n case SET_SIMILAR_LOCATIONS_ACTION: {\n const locations = action.data as ISafegraphLocation[];\n return {\n ...state,\n similarLocations: locations,\n };\n }\n\n case SET_SELECTED_SAFEGRAPH_LOCATION_ACTION: {\n const location = action.data as ISafegraphLocation;\n return {\n ...state,\n selectedSafegraphLocation: location,\n };\n }\n\n case SET_IS_SEARCHING_FOR_NEW_LOCATION_ACTION: {\n const isSearchingForNewLocation = action.data as boolean;\n return {\n ...state,\n isSearchingForNewLocation,\n };\n }\n /** success */\n case SUBMIT_MOBILYTICS_REPORT_SUCCESS: {\n return {\n ...state,\n mostRecentlySubmittedReport: action.data as IGCPBigQueryJob[]\n };\n }\n /** failure */\n case SUBMIT_MOBILYTICS_REPORT_FAILURE: {\n return state;\n }\n\n case SET_IS_LOADING_LOCATIONS: {\n return {\n ...state,\n isLoadingLocations: action.data as boolean\n };\n }\n\n default: {\n return state;\n }\n }\n};\n","import { IAnalysisItem } from \"../../../Models/IAnalysisItem\";\nimport { IGCPBigQueryJob } from \"../../../Models/IGCPBigQueryJob\";\nimport { IMyReportsReport } from \"../../../Models/IMyReportsReport\";\nimport { mapGcpJobsToAnalysisItems } from \"../../../Util/ReportUtil\";\nimport { IReportProgress } from \"../Models/IReportProgress\";\nimport {\n GET_RECENT_REPORTS_SUCCESS,\n GET_RECENT_MATCH_REPORTS_SUCCESS,\n GET_RECENT_MOBILYTICS_REPORTS_SUCCESS,\n GET_RECENT_REPORTS_FAILURE,\n GET_REPORTS_FAILURE,\n GET_REPORTS_SUCCESS,\n ReportActionType,\n SET_DELETING_REPORT,\n SET_DELETING_REPORT_SUCCESS,\n SET_LOADING_REPORTS,\n SET_REPORT_PROGRESS\n} from \"../Types/ReportActionTypes\";\n\nexport interface IReportsReducerState {\n reports: IMyReportsReport[];\n loadingReports: boolean;\n deletingReport: boolean;\n isCollaborating: boolean;\n recentReports: IAnalysisItem[];\n recentMatchReports: IAnalysisItem[];\n recentMobilyticsReports: IAnalysisItem[];\n reportProgress: IReportProgress;\n}\n\nexport const reportsReducerState: IReportsReducerState = {\n reports: [],\n loadingReports: false,\n deletingReport: false,\n isCollaborating: false,\n recentReports: [],\n recentMatchReports: [],\n recentMobilyticsReports: [],\n reportProgress: {\n progress: 0,\n verbiage: null,\n stageName: null\n }\n};\n\nexport const reportsReducer = (\n state: IReportsReducerState = { ...reportsReducerState },\n action: ReportActionType\n): IReportsReducerState => {\n switch (action.type) {\n /** misc */\n case SET_LOADING_REPORTS: {\n return {\n ...state,\n loadingReports: action.data as boolean,\n };\n }\n case SET_DELETING_REPORT: {\n return {\n ...state,\n deletingReport: action.data as boolean,\n };\n }\n case SET_REPORT_PROGRESS: {\n return {\n ...state,\n reportProgress: action.data as IReportProgress\n };\n }\n /** success */\n case GET_REPORTS_SUCCESS: {\n return {\n ...state,\n reports: action.data as IMyReportsReport[],\n loadingReports: false,\n };\n }\n case GET_RECENT_REPORTS_SUCCESS: {\n return {\n ...state,\n recentReports: mapGcpJobsToAnalysisItems(action.data as IGCPBigQueryJob[]),\n loadingReports: false,\n };\n }\n case GET_RECENT_MATCH_REPORTS_SUCCESS: {\n return {\n ...state,\n recentMatchReports: mapGcpJobsToAnalysisItems(action.data as IGCPBigQueryJob[]),\n loadingReports: false,\n };\n }\n case GET_RECENT_MOBILYTICS_REPORTS_SUCCESS: {\n return {\n ...state,\n recentMobilyticsReports: mapGcpJobsToAnalysisItems(action.data as IGCPBigQueryJob[]),\n loadingReports: false,\n };\n }\n case SET_DELETING_REPORT_SUCCESS: {\n return {\n ...state,\n deletingReport: false,\n reports: state.reports.filter(report => report.jobId !== action.data),\n };\n }\n /** failure */\n case GET_REPORTS_FAILURE:\n case GET_RECENT_REPORTS_FAILURE: {\n return {\n ...state,\n loadingReports: false,\n };\n }\n default: {\n return state;\n }\n }\n};\n","import { notification } from \"antd\";\n\nimport { IRetailMatchJob } from \"../../../Models/IRetailMatch\";\nimport { IRetailMatchGeography } from \"../../../Models/IRetailMatchGeography\";\nimport { MatchReportTypeEnum } from \"../Enums/MatchReportTypeEnum\";\nimport {\n GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE,\n GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS,\n IGNORE_RUNNING_REPORT,\n RESET_RETAIL_MATCH_ACTION,\n RESTART_RETAIL_MATCH_ACTION,\n RetailMatchActionType,\n SearchedPlaceInfo,\n SET_CHECKING_SITE_IS_IN_DMA,\n SET_INCLUDE_ALL_BUDS_ACTION,\n SET_LOADING_MATCH_REPORT,\n SET_LOADING_RETAIL_MATCH_GEOGRAPHIES,\n SET_MATCH_REPORT_TYPE,\n SET_MOST_RECENTLY_SUBMITTED_RETAIL_MATCH_REPORT,\n SET_SEARCHED_PLACE_MATCH_ACTION,\n SITE_IS_IN_DMA_SUCCESS,\n START_LAST_REPORT_RUNNING,\n SUBMIT_MATCH_REPORT_SUCCESS,\n} from \"../Types/RetailMatchActionTypes\";\n\nexport interface IRetailMatchReducerState {\n retailMatchGeos: IRetailMatchGeography[];\n loadingRetailMatchGeos: boolean;\n searchedPlaceIndex: number;\n searchedPlaceName: string;\n searchedPlaceId: string;\n searchedPlaceLat: number;\n searchedPlaceLng: number;\n matchReportType: MatchReportTypeEnum;\n loadingReport: boolean;\n lastReportName: string;\n lastReportRunning: boolean;\n resetCount: number;\n includeAllBuds: boolean;\n mostRecentSubmittedReport: IRetailMatchJob;\n siteIsInDMA: boolean;\n isCheckingSiteIsInDMA: boolean;\n}\n\nexport const retailMatchReducerState: IRetailMatchReducerState = {\n retailMatchGeos: [],\n loadingRetailMatchGeos: false,\n searchedPlaceIndex: 0,\n searchedPlaceName: null,\n searchedPlaceId: null,\n searchedPlaceLat: 0,\n searchedPlaceLng: 0,\n matchReportType: MatchReportTypeEnum.DEFAULT,\n loadingReport: false,\n lastReportName: null,\n lastReportRunning: false,\n resetCount: 0,\n includeAllBuds: true,\n mostRecentSubmittedReport: null,\n siteIsInDMA: false,\n isCheckingSiteIsInDMA: false,\n};\n\nexport const retailMatchReducer = (\n state: IRetailMatchReducerState = { ...retailMatchReducerState },\n action: RetailMatchActionType\n): IRetailMatchReducerState => {\n switch (action.type) {\n /** misc */\n case SET_MOST_RECENTLY_SUBMITTED_RETAIL_MATCH_REPORT: {\n return {\n ...state,\n mostRecentSubmittedReport: action.data as IRetailMatchJob | null\n };\n }\n case SET_SEARCHED_PLACE_MATCH_ACTION: {\n const searchedPlace = action.data as SearchedPlaceInfo;\n return {\n ...state,\n searchedPlaceIndex: state.searchedPlaceIndex + 1,\n searchedPlaceName: searchedPlace.name,\n searchedPlaceId: searchedPlace.placeId,\n searchedPlaceLat: searchedPlace.lat,\n searchedPlaceLng: searchedPlace.lng,\n resetCount: state.resetCount + 1,\n lastReportRunning: false,\n };\n }\n case START_LAST_REPORT_RUNNING: {\n return {\n ...state,\n lastReportName: action.data as string,\n lastReportRunning: true,\n };\n }\n case IGNORE_RUNNING_REPORT: {\n return {\n ...state,\n lastReportRunning: false,\n };\n }\n case SET_INCLUDE_ALL_BUDS_ACTION: {\n return {\n ...state,\n includeAllBuds: action.data as boolean,\n };\n }\n case RESET_RETAIL_MATCH_ACTION: {\n return {\n ...retailMatchReducerState,\n retailMatchGeos: state.retailMatchGeos,\n searchedPlaceIndex: state.searchedPlaceIndex,\n lastReportName: state.lastReportName,\n resetCount: state.resetCount + 1,\n };\n }\n case RESTART_RETAIL_MATCH_ACTION: {\n return {\n ...retailMatchReducerState,\n retailMatchGeos: state.retailMatchGeos,\n searchedPlaceIndex: state.searchedPlaceIndex,\n lastReportName: state.lastReportName,\n resetCount: state.resetCount + 1,\n searchedPlaceName: state.searchedPlaceName,\n searchedPlaceId: state.searchedPlaceId,\n searchedPlaceLat: state.searchedPlaceLat,\n searchedPlaceLng: state.searchedPlaceLng,\n };\n }\n case SET_LOADING_RETAIL_MATCH_GEOGRAPHIES: {\n return {\n ...state,\n loadingRetailMatchGeos: action.data as boolean,\n };\n }\n case SET_MATCH_REPORT_TYPE: {\n return {\n ...state,\n matchReportType: action.data as MatchReportTypeEnum,\n };\n }\n case SET_LOADING_MATCH_REPORT: {\n return {\n ...state,\n loadingReport: action.data as boolean,\n };\n }\n /** success */\n case GET_RETAIL_MATCH_GEOGRAPHIES_SUCCESS: {\n return {\n ...state,\n retailMatchGeos: action.data as IRetailMatchGeography[],\n };\n }\n case SUBMIT_MATCH_REPORT_SUCCESS: {\n return {\n ...state,\n mostRecentSubmittedReport: action.data as IRetailMatchJob\n };\n }\n /** failure */\n case GET_RETAIL_MATCH_GEOGRAPHIES_FAILURE: {\n notification.error({\n message: \"Error getting Retail Match geographies\",\n description: action.data,\n });\n return state;\n }\n case SITE_IS_IN_DMA_SUCCESS: {\n return {\n ...state,\n siteIsInDMA: action.data as boolean\n };\n }\n case SET_CHECKING_SITE_IS_IN_DMA: {\n return {\n ...state,\n isCheckingSiteIsInDMA: action.data as boolean\n };\n }\n \n default: {\n return state;\n }\n }\n};\n","import {\n SET_SIDE_NAV_OPEN,\n SideNavActionType\n} from \"../Types/SideNavActionTypes\";\n\nexport interface ISideNavReducerState {\n open: boolean;\n}\n\nexport const sideNavReducerState: ISideNavReducerState = {\n open: true,\n};\n\nexport const sideNavReducer = (\n state: ISideNavReducerState = { ...sideNavReducerState },\n action: SideNavActionType\n): ISideNavReducerState => {\n switch (action.type) {\n /** misc */\n case SET_SIDE_NAV_OPEN: {\n return {\n ...state,\n open: action.data,\n };\n }\n default: {\n return state;\n }\n }\n};\n","import { IBrandCategory } from \"../../../Models/IBrandCategory\";\nimport { VoidGapFiltersEnum } from \"../Enums/VoidGapFilters\";\nimport { AreaType, GeographyDefinition, GrowthPeriod, GrowthType, MarketPresenceOptions, NumericComparison, SquareFootageOptions, UnitsAndGrowthOptions } from \"../Models/Requests/IVoidGapRequest\";\nimport { SET_VG_FILTERS, SET_VG_FILTER_VIEW, VoidGapActionType } from \"../Types/VoidGapActionTypes\";\nimport { VoidGapFilterMap } from \"../Types/VoidGapFilterTypes\";\nexport interface IVoidGapReducerState {\n voidGapFilterMap: VoidGapFilterMap;\n voidGapFilterView: VoidGapFiltersEnum;\n};\n\nconst defaultDefinition: GeographyDefinition = {\n areaType:AreaType.None,\n geographyType:null,\n geographyKey:'',\n mileRadius:0,\n driveTime:0,\n};\n\nexport const voidGapReducerDefaultState: IVoidGapReducerState = {\n voidGapFilterMap: {\n [VoidGapFiltersEnum.TenantCategory] : [] as string[],\n [VoidGapFiltersEnum.MarketPresenceAndVoid] : {\n geographyDefinition: {...defaultDefinition},\n tradeAreaDefinition: {...defaultDefinition},\n showTenants: false,\n numberOfLocations: [NumericComparison.EqualTo, 0],\n } as MarketPresenceOptions,\n [VoidGapFiltersEnum.SquareFootage] : {min: 0, max: 0} as SquareFootageOptions,\n [VoidGapFiltersEnum.UnitsAndGrowth] : {\n minLocations:0,\n maxLocations:0,\n growthType:GrowthType.GrowthRate,\n growthPeriod:GrowthPeriod.Last12Months,\n rate:0,\n } as UnitsAndGrowthOptions\n },\n voidGapFilterView: VoidGapFiltersEnum.Default\n};\n\nexport const voidGapReducer = (\n state: IVoidGapReducerState = { ...voidGapReducerDefaultState },\n action: VoidGapActionType\n): IVoidGapReducerState => {\n switch (action.type) {\n case SET_VG_FILTERS:\n return {\n ...state,\n voidGapFilterMap: action.data as VoidGapFilterMap\n };\n\n case SET_VG_FILTER_VIEW:\n return {\n ...state,\n voidGapFilterView: action.data as VoidGapFiltersEnum\n };\n default: {\n return state;\n }\n }\n};\n","import axios from \"axios\";\nimport { IAuthentication } from \"..\";\nimport { IServiceResult, IUser } from \"../../Models/Models\";\n\nexport class AuthenticationAxios implements IAuthentication {\n public GetStatus(): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios.get>(\"/Authentication/Status\", {}).then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n public LoadUser(): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios.get>(\"/Authentication/User\").then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n return promise;\n }\n\n public async GetUser(): Promise> {\n return null;\n }\n}\n","import axios from \"axios\";\nimport { IDashboardData, IServiceResult } from \"../../Models/Models\";\nimport { IHome } from \"../index\";\n\nexport class HomeAxios implements IHome {\n public GetDashboardData(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios.get>(\"/Insights/Data\", {}).then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n}\n","import { IVisualization } from \"../IVisualization\";\nimport { IServiceResult, ITableauView } from \"../../Models/Models\";\nimport axios from \"axios\";\n\nexport class VisualizationAxios implements IVisualization {\n public GetViews(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\n \"/Visualization/TableauViews\",\n {}\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n return promise;\n }\n}\n","import axios from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\n\nimport { ISalesPerformanceData } from \"../Models/Models\";\nimport * as types from \"./Types\";\n\nexport const setSalesPerformanceData = (sales: ISalesPerformanceData) => ({\n type: types.SALES_PERFORMANCE_SET_DATA,\n data: sales,\n});\n\nexport const setLoadingSalesPerformanceData = (loading: boolean) => ({\n type: types.SALES_PERFORMANCE_SET_LOADING,\n data: loading,\n});\n\n//Thunk Action\nexport const getSalesPerformanceData: ActionCreator<\n ThunkAction\n> = () => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingSalesPerformanceData(true));\n\n axios\n .get(\"/Insights/GetSalesPerformanceData\")\n .then((response) => {\n const performanceData: ISalesPerformanceData = response.data.data;\n\n dispatch(setSalesPerformanceData(performanceData));\n dispatch(setLoadingSalesPerformanceData(false));\n })\n .catch((error) => {\n dispatch(setSalesPerformanceData(null));\n dispatch(setLoadingSalesPerformanceData(false));\n });\n };\n};\n","import axios, { AxiosError, AxiosResponse } from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\n\nimport { IMapState } from \"../Models/Models\";\nimport * as types from \"./Types\";\n\ndeclare let scout;\n\nconst setLoadingLastSession = (loadingLastSession: boolean) => ({\n type: types.SET_LOADING_LAST_SESSION,\n data: loadingLastSession,\n});\n\nconst setFoundLastSession = (foundLastSession: boolean) => ({\n type: types.SET_FOUND_LAST_SESSION,\n data: foundLastSession,\n});\n\nconst setLastSession = (session: IMapState) => ({\n type: types.SET_SESSION,\n data: session,\n});\n\nexport const getLastSession: ActionCreator>\n = () => {\n return (dispatch: Dispatch) => {\n dispatch(setLoadingLastSession(true));\n\n axios\n .get(\"/MapState/GetLatestMapState\")\n .then((response: AxiosResponse) => {\n const session: IMapState = response.data.data;\n\n //Replace autosave ID cookie if it doesn't match the id just retrieved.\n //This should get everyone set with a new ID the first time they log in after this release\n const currentAutoSaveID: string = scout.logic.LocalSettingsLogic?.get(\n \"autosaveid\",\n null\n );\n\n const shouldSetAutoSaveId\n = session?.shareId?.toUpperCase() !== null\n && currentAutoSaveID?.toUpperCase() !== null\n && currentAutoSaveID?.toUpperCase() !== session?.shareId?.toUpperCase();\n\n if (shouldSetAutoSaveId) {\n scout.logic.LocalSettingsLogic.set(\n \"autosaveid\",\n session.shareId.toUpperCase()\n );\n }\n\n dispatch(setLastSession(session));\n\n if (!session) {\n dispatch(setFoundLastSession(false));\n } else {\n dispatch(setFoundLastSession(true));\n }\n\n dispatch(setLoadingLastSession(false));\n })\n .catch((error: AxiosError) => {\n console.error(error);\n dispatch(setLastSession(null));\n dispatch(setLoadingLastSession(false));\n dispatch(setFoundLastSession(false));\n });\n };\n };\n","import Axios from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { TerritoryManagementAxios } from \"../Contracts/Axios/TerritoryManagementAxios\";\nimport { ITerritoryType, ITerritoryTypePermission } from \"../Models/Models\";\nimport * as types from \"./Types\";\n\n// GET\nexport const getTerritoryTypePermissions: ActionCreator<\n ThunkAction\n> = (territoryTypeID: number) => {\n return (dispatch: Dispatch): void => {\n const tma = new TerritoryManagementAxios();\n const promises = [];\n promises.push(tma.GetTerritoryTypePermissions(territoryTypeID));\n\n Axios.all(promises)\n .then(\n Axios.spread((data) => {\n dispatch(getTerritoryTypePermissionsSuccess(data));\n })\n )\n .catch((error: any) => {\n dispatch(getTerritoryTypePermissionsFailure(error));\n });\n };\n};\n\n// UPDATE\nexport const updateTerritoryTypeAdminOnlyProperty: ActionCreator<\n ThunkAction\n> = (territoryType: ITerritoryType) => {\n return (dispatch: Dispatch): void => {\n const tma = new TerritoryManagementAxios();\n const promises = [];\n promises.push(tma.UpdateTerritoryTypeAdminOnlyProperty(territoryType));\n\n Axios.all(promises)\n .then(\n Axios.spread((data) => {\n dispatch(updateTerritoryTypeAdminOnlyPropertySuccess(data));\n })\n )\n .catch((error: any) => {\n dispatch(updateTerritoryTypeAdminOnlyPropertyFailure(error));\n });\n };\n};\n\n// UPDATE\nexport const updateTerritoryTypeUserPermissions: ActionCreator<\n ThunkAction\n> = (\n userID: number,\n territoryTypeID: number,\n canView: boolean,\n canEdit: boolean\n) => {\n return (dispatch: Dispatch): void => {\n const tma = new TerritoryManagementAxios();\n const promises = [];\n promises.push(\n tma.UpdateTerritoryTypeUserPermissions(\n userID,\n territoryTypeID,\n canView,\n canEdit\n )\n );\n\n Axios.all(promises)\n .then(\n Axios.spread((data) => {\n dispatch(updateTerritoryTypeUserPermissionsSuccess(data));\n })\n )\n .catch((error: any) => {\n dispatch(updateTerritoryTypeUserPermissionsFailure(error));\n });\n };\n};\n\n// UPDATE\nexport const updateTerritoryTypeUserPermissionsForAll: ActionCreator<\n ThunkAction\n> = (territoryPermissions: Array) => {\n return (dispatch: Dispatch): void => {\n const tma = new TerritoryManagementAxios();\n const promises = [];\n promises.push(\n tma.UpdateTerritoryTypeUserPermissionsForAll(territoryPermissions)\n );\n\n Axios.all(promises)\n .then(\n Axios.spread((data) => {\n dispatch(updateTerritoryTypeUserPermissionsForAllSuccess(data));\n })\n )\n .catch((error: any) => {\n dispatch(updateTerritoryTypeUserPermissionsForAllFailure(error));\n });\n };\n};\n\n//------------------------------------------------ SUCCESS\nconst updateTerritoryTypeAdminOnlyPropertySuccess = (data: null) => ({\n type: types.UPDATE_TERRITORY_TYPE_ADMIN_ONLY_SUCCESS,\n response: data,\n});\nconst updateTerritoryTypeUserPermissionsSuccess = (data: null) => ({\n type: types.UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_SUCCESS,\n response: data,\n});\nconst getTerritoryTypePermissionsSuccess = (\n data: Array\n) => ({\n type: types.GET_TERRITORY_TYPE_PERMISSIONS_SUCCESS,\n response: data,\n});\nconst updateTerritoryTypeUserPermissionsForAllSuccess = (\n data: Array\n) => ({\n type: types.UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FOR_ALL_SUCCESS,\n response: data,\n});\n//------------------------------------------------ FAILURE\nconst updateTerritoryTypeAdminOnlyPropertyFailure = (error: any) => ({\n type: types.UPDATE_TERRITORY_TYPE_ADMIN_ONLY_FAILURE,\n response: error,\n});\nconst updateTerritoryTypeUserPermissionsFailure = (data: null) => ({\n type: types.UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FAILURE,\n response: data,\n});\nconst getTerritoryTypePermissionsFailure = (data: null) => ({\n type: types.GET_TERRITORY_TYPE_PERMISSIONS_FAILURE,\n response: data,\n});\nconst updateTerritoryTypeUserPermissionsForAllFailure = (data: null) => ({\n type: types.UPDATE_TERRITORY_TYPE_USER_PERMISSIONS_FOR_ALL_FAILURE,\n response: data,\n});\n","import axios from \"axios\";\nimport {\n IServiceResult,\n ITerritoryType,\n ITerritoryTypePermission,\n} from \"../../Models/Models\";\nimport { ITerritoryManagementAxios } from \"../ITerritoryManagementAxios\";\n\nexport class TerritoryManagementAxios implements ITerritoryManagementAxios {\n public GetTerritoryTypePermissions(\n territoryTypeId: number\n ): Promise>> {\n const promise = new Promise<\n IServiceResult>\n >((resolve, reject) => {\n axios\n .get>>(`/Territories/TerritoryTypePermissions?territoryTypeId=${territoryTypeId}`)\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n\n public UpdateTerritoryTypeAdminOnlyProperty(\n territoryType: ITerritoryType\n ): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\"/Territories/TerritoryTypePrivileged\", territoryType)\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n\n public UpdateTerritoryTypeUserPermissions(\n userID: number,\n territoryTypeID: number,\n canView: boolean,\n canEdit: boolean\n ): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\n \"/Territories/UpdateTerritoryTypePermissions\",\n {\n userID: userID,\n territoryTypeID: territoryTypeID,\n canView: canView,\n canEdit: canEdit,\n }\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n\n public UpdateTerritoryTypeUserPermissionsForAll(\n territoryPermissions: Array\n ): Promise>> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\n \"/Territories/UpdateTerritoryTypePermissionsAllUsers\",\n {\n territoryPermissions: territoryPermissions,\n }\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n}\n","import {\n IServiceResult,\n ITerritoryType,\n ITerritoryTypePermission,\n} from \"../Models/Models\";\n\nexport interface ITerritoryManagementAxios {\n GetTerritoryTypePermissions(\n territoryTypeID: number\n ): Promise>>;\n UpdateTerritoryTypeAdminOnlyProperty(\n territoryType: ITerritoryType\n ): Promise>;\n UpdateTerritoryTypeUserPermissions(\n userID: number,\n territoryTypeID: number,\n canView: boolean,\n canEdit: boolean\n );\n UpdateTerritoryTypeUserPermissionsForAll(\n territoryPermissions: Array\n );\n}\n","import { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { TwoByTwoAxios } from \"../Contracts/Axios/TwoByTwoAxios\";\nimport { IServiceResult, IStoreExploreData } from \"../Models/Models\";\nimport { ITwoByTwo } from \"../Models/Models\";\nimport * as types from \"./Types\";\n\nconst loadTwoByTwoSuccess = (data: ITwoByTwo) => ({\n type: types.LOAD_TWO_BY_TWO_SUCCESS,\n data: data,\n});\n\nconst loadTwoByTwoFailure = (data: ITwoByTwo) => ({\n type: types.LOAD_TWO_BY_TWO_FAILURE,\n data: data,\n});\nconst exploreStoreSuccess = (data: IStoreExploreData) => ({\n type: types.EXPLORE_STORE_SUCCESS,\n data: data,\n});\n\nconst exploreStoreFailure = (data: IStoreExploreData) => ({\n type: types.EXPLORE_STORE_FAILURE,\n data: data,\n});\n\n//Thunk Action\nexport const loadTwoByTwo: ActionCreator>\n = () => {\n return (dispatch: Dispatch) => {\n const twoByTwoAxios = new TwoByTwoAxios();\n const promise = twoByTwoAxios.Get2x2();\n promise\n .then((response: IServiceResult) => {\n dispatch(loadTwoByTwoSuccess(response.data));\n })\n .catch((error: any) => {\n dispatch(loadTwoByTwoFailure(error));\n });\n };\n };\n\nexport const exploreStore: ActionCreator> = (\n sid: number,\n modelName: string\n) => {\n return (dispatch: Dispatch) => {\n const twoByTwoAxios = new TwoByTwoAxios();\n const promise = twoByTwoAxios.ExploreStore(sid);\n promise\n .then((response: IServiceResult) => {\n response.data.modelName = modelName;\n dispatch(exploreStoreSuccess(response.data));\n })\n .catch((error: any) => {\n dispatch(exploreStoreFailure(error));\n });\n };\n};\n","import axios from \"axios\";\nimport {\n IServiceResult,\n IStoreExploreData,\n ITwoByTwo,\n} from \"../../Models/Models\";\nimport { ITwoByTwoAxios } from \"../index\";\n\nexport class TwoByTwoAxios implements ITwoByTwoAxios {\n public Get2x2(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios.get>(\"/Insights/TwoByTwo\", {}).then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n\n public ExploreStore(sid): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(`/Metric/StoreExplore?sid=${sid}`)\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n}\n","import Axios, { AxiosResponse } from \"axios\";\nimport {ActionCreator, AnyAction, Dispatch} from \"redux\";\nimport {ThunkAction, ThunkDispatch} from \"redux-thunk\";\nimport { UserManagementAxios } from \"../Contracts/Axios/UserManagementAxios\";\nimport { IStore } from \"../Models/IStore\";\nimport { ITerritory, IUser } from \"../Models/Models\";\nimport * as types from \"./Types\";\nimport {notification} from \"antd\";\nimport {getUserPreferences} from \"./UserPreferencesActions\";\nimport {RootState} from \"../Reducers/RootReducer\";\n\n// GET\nexport const getUserFranchiseeStoreInformation: ActionCreator<\n ThunkAction\n> = (userID: number) => {\n return (dispatch: Dispatch): void => {\n const userFranchiseeInfoAjax = new UserManagementAxios();\n const promises = [];\n promises.push(\n userFranchiseeInfoAjax.GetUserFranchiseeStoreInformation(userID)\n );\n\n Axios.all(promises)\n .then(\n Axios.spread((storeInfo) => {\n dispatch(getUserFranchiseeStoreInformationSuccess(storeInfo));\n })\n )\n .catch((error: any) => {\n dispatch(getUserFranchiseeStoreInformationFailure(error));\n });\n };\n};\n\n// GET\nexport const getUserFranchiseeTerritoryInformation: ActionCreator<\n ThunkAction\n> = (userID: number) => {\n return (dispatch: Dispatch): void => {\n const userFranchiseeInfoAjax = new UserManagementAxios();\n const promises = [];\n promises.push(\n userFranchiseeInfoAjax.GetUserFranchiseeTerritoryInformation(userID)\n );\n\n Axios.all(promises)\n .then(\n Axios.spread((territoryInfo) => {\n dispatch(getUserFranchiseeTerritoryInformationSuccess(territoryInfo));\n })\n )\n .catch((error: any) => {\n dispatch(getUserFranchiseeTerritoryInformationFailure(error));\n });\n };\n};\n\n// UPDATE\nexport const removeStoreFromFranchiseeUser: ActionCreator<\n ThunkAction\n> = (userID: number, storeID: number) => {\n return (dispatch: Dispatch): void => {\n const userFranchiseeInfoAjax = new UserManagementAxios();\n const promises = [];\n promises.push(\n userFranchiseeInfoAjax.RemoveStoreFromFranchiseeUser(userID, storeID)\n );\n\n Axios.all(promises)\n .then(\n Axios.spread((response: AxiosResponse) => {\n dispatch(removeStoreFromFranchiseeUserSuccess(storeID, userID));\n })\n )\n .catch((error: any) => {\n dispatch(removeStoreFromFranchiseeUserFailure(error));\n });\n };\n};\n\n// UPDATE\nexport const removeTerritoryFromFranchiseeUser: ActionCreator<\n ThunkAction\n> = (userID: number, territoryID: number) => {\n return (dispatch: Dispatch): void => {\n const userFranchiseeInfoAjax = new UserManagementAxios();\n const promises = [];\n promises.push(\n userFranchiseeInfoAjax.RemoveTerritoryFromFranchiseeUser(\n userID,\n territoryID\n )\n );\n\n Axios.all(promises)\n .then(\n Axios.spread((response: AxiosResponse) => {\n dispatch(\n removeTerritoryFromFranchiseeUserSuccess(territoryID, userID)\n );\n })\n )\n .catch((error: any) => {\n dispatch(removeTerritoryFromFranchiseeUserFailure(error));\n });\n };\n};\n\n// UPDATE\nexport const updateUserActiveStatus: ActionCreator<\n ThunkAction\n> = (userID: number, activeStatus: boolean) => {\n return (dispatch: Dispatch): void => {\n const updateUserActiveStatusAjax = new UserManagementAxios();\n const promises = [];\n promises.push(\n updateUserActiveStatusAjax.UpdateUserActiveStatus(userID, activeStatus)\n );\n\n Axios.all(promises)\n .then(\n Axios.spread((updatedUser) => {\n dispatch(updateUserActiveStatusSuccess(updatedUser));\n })\n )\n .catch((error: any) => {\n dispatch(userUpdateActiveStatusFailure(error));\n });\n };\n};\n\n//Update\nexport const updateSessionTimeoutLength: ActionCreator<\n ThunkAction\n> = (companyId: number, newSessionTimeoutLength: number) => {\n return (dispatch: ThunkDispatch): void => {\n const userManagementAxios = new UserManagementAxios();\n const promises = [];\n const convertToHours = () => {\n if(newSessionTimeoutLength >= 60) {\n let hours = Math.floor(newSessionTimeoutLength / 60);\n let remainingMinutes = newSessionTimeoutLength % 60;\n return `${hours} hour(s) and ${remainingMinutes} minute(s).`;\n } else {\n return `${ newSessionTimeoutLength } minute(s).`;\n }\n }\n promises.push(\n userManagementAxios.UpdateSessionTimeoutLength(companyId, newSessionTimeoutLength)\n );\n Axios.all(promises)\n .then(Axios.spread((response: AxiosResponse) => {\n dispatch(updateSessionTimeoutLengthSuccess(response));\n notification.success({\n message: \"Session Timeout Length Updated\",\n description: `Session timeout length has been updated to ` + convertToHours(),\n })\n dispatch(getUserPreferences());\n })\n )\n .catch((error: any) => {\n dispatch(updateSessionTimeoutLengthFailure(error));\n notification.error({\n message: \"Session Timeout Length Update Failed\",\n description: \"There was an error updating the session timeout length.\",\n })\n });\n }\n}\n\n//------------------------------------------------ SUCCESS\nconst getUserFranchiseeStoreInformationSuccess = (data: Array) => ({\n type: types.GET_USER_FRANCHISEE_STORE_INFORMATION_SUCCESS,\n response: data,\n});\nconst getUserFranchiseeTerritoryInformationSuccess = (\n data: Array\n) => ({\n type: types.GET_USER_FRANCHISEE_TERRITORY_INFORMATION_SUCCESS,\n response: data,\n});\nconst removeStoreFromFranchiseeUserSuccess = (\n storeID: number,\n userID: number\n) => ({\n type: types.REMOVE_STORE_FROM_FRANCHISEE_USER_SUCCESS,\n response: {\n storeID,\n userID,\n },\n});\nconst removeTerritoryFromFranchiseeUserSuccess = (\n territoryID: number,\n userID: number\n) => ({\n type: types.REMOVE_TERRITORY_FROM_FRANCHISEE_USER_SUCCESS,\n response: {\n territoryID,\n userID,\n },\n});\nconst updateUserActiveStatusSuccess = (data: IUser) => ({\n type: types.USER_UPDATE_ACTIVE_STATUS_SUCCESS,\n response: data,\n});\n\nconst updateSessionTimeoutLengthSuccess = (data: AxiosResponse) => ({\n type: types.UPDATE_SESSION_TIMEOUT_LENGTH_SUCCESS,\n response: data\n});\n\n//------------------------------------------------ FAILURE\nconst getUserFranchiseeStoreInformationFailure = (error: any) => ({\n type: types.GET_USER_FRANCHISEE_STORE_INFORMATION_FAILURE,\n response: error,\n});\nconst getUserFranchiseeTerritoryInformationFailure = (error: any) => ({\n type: types.GET_USER_FRANCHISEE_TERRITORY_INFORMATION_FAILURE,\n response: error,\n});\nconst removeStoreFromFranchiseeUserFailure = (error: any) => ({\n type: types.REMOVE_STORE_FROM_FRANCHISEE_USER_FAILURE,\n response: error,\n});\nconst removeTerritoryFromFranchiseeUserFailure = (error: any) => ({\n type: types.REMOVE_TERRITORY_FROM_FRANCHISEE_USER_FAILURE,\n response: error,\n});\nconst userUpdateActiveStatusFailure = (error: any) => ({\n type: types.USER_UPDATE_ACTIVE_STATUS_FAILURE,\n response: error,\n});\n\nconst updateSessionTimeoutLengthFailure = (error: any) => ({\n type: types.UPDATE_SESSION_TIMEOUT_LENGTH_FAILURE,\n response: error\n});\n","import axios from \"axios\";\nimport { IServiceResult, IStore, ITerritory, IUser } from \"../../Models/Models\";\nimport { IUserManagementAxios } from \"../IUserManagementAxios\";\n\nexport class UserManagementAxios implements IUserManagementAxios {\n public GetUserFranchiseeStoreInformation(\n userId: number\n ): Promise>> {\n const promise = new Promise>>(\n (resolve, reject) => {\n axios\n .get>>(`/Users/GetUserAssignStoresData?userId=${userId}`)\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n\n public GetUserFranchiseeTerritoryInformation(\n userId: number\n ): Promise>> {\n const promise = new Promise>>(\n (resolve, reject) => {\n axios\n .get>>(\n `/Users/GetUserAssignTerritoryData?userId=${userId}`\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n\n public RemoveStoreFromFranchiseeUser(\n userID: number,\n storeID: number\n ): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\"/Stores/RemoveStoreFromFranchiseUser\", {\n userID: userID,\n storeID: storeID,\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n\n public RemoveTerritoryFromFranchiseeUser(\n userID: number,\n territoryID: number\n ): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\n \"/Territories/RemoveTerritoryFromFranchiseUser\",\n {\n userID: userID,\n territoryID: territoryID,\n }\n )\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n\n public UpdateUserActiveStatus(\n userId: number,\n activeStatus: boolean\n ): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\"/Users/Deactivate\", {\n userId,\n activeStatus,\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n\n public UpdateSessionTimeoutLength(\n companyId: number,\n newSessionTimeoutLength: number\n ): Promise> {\n const promise = new Promise>((resolve, reject) => {\n axios\n .post>(\"/Company/UpdateSessionTimeoutLengthMinutes\", {\n cid: companyId,\n sessionTimeoutLengthMinutes: newSessionTimeoutLength,\n })\n .then(\n (response) => {\n resolve(response.data);\n },\n (error) => {\n reject(error);\n }\n );\n });\n\n return promise;\n }\n}\n","import { IServiceResult, IStore, ITerritory, IUser } from \"../Models/Models\";\n\nexport interface IUserManagementAxios {\n GetUserFranchiseeStoreInformation(\n userID: number\n ): Promise>>;\n GetUserFranchiseeTerritoryInformation(\n userID: number\n ): Promise>>;\n RemoveStoreFromFranchiseeUser(\n userID: number,\n storeID: number\n ): Promise>;\n RemoveTerritoryFromFranchiseeUser(\n userID: number,\n territoryID: number\n ): Promise>;\n UpdateUserActiveStatus(\n userID: number,\n activeStatus: boolean\n ): Promise>;\n UpdateSessionTimeoutLength(\n companyId: number,\n newSessionTimeoutLength: number\n ) : Promise>;\n}\n","import axios, { AxiosError, AxiosResponse } from \"axios\";\nimport {\n IServiceResult,\n IStore,\n IUserPreferences,\n ITerritoryType,\n} from \"../../Models/Models\";\nimport { IUserPreferencesAxios } from \"../IUserPreferencesAxios\";\n\nexport class UserPreferencesAxios implements IUserPreferencesAxios {\n public GetUserPreferences(): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .get>(\"/Users/GetPreferences\")\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n\n public GetAllCommunitySites(): Promise>> {\n const promise = new Promise>>(\n (resolve, reject) => {\n axios.get>>(\"/Community/GetAllSites\").then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n\n public UpdateUserPreferences(\n userPreferences: IUserPreferences\n ): Promise> {\n const promise = new Promise>(\n (resolve, reject) => {\n axios\n .post>(\"/Users/UpdatePreferences\", userPreferences)\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n\n public GetCompanyTerritoryTypes(): Promise<\n IServiceResult>\n > {\n const promise = new Promise>>(\n (resolve, reject) => {\n axios\n .get>>(\"/Territories/Types\")\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n }\n );\n\n return promise;\n }\n}\n","export enum LeftNavSection {\n None = \"None\",\n MobilyticsVisitors = \"MobilyticsVisitors\",\n}\n","import { Store } from \"./IStore\";\nimport {\n IStore,\n IStoreSales,\n IStoreWorkflowComment,\n IWordCloudItem,\n} from \"./Models\";\n\nexport interface IStoreExploreData {\n store: IStore;\n files: Array /* List */;\n lifecycleComments: Array /* List */;\n segmentFeatures: Array /* List */;\n countsBySegment: any /* Dictionary */;\n countsByHouseholdType: any /* Dictionary */;\n storeSales: Array /* List */;\n storeSalesGrouped: Array /* List */;\n salesBySegment: any /* Dictionary */;\n salesRank: number;\n totalHouseholds: number;\n storeSalesGroupedTopThree: Array;\n averageCompanyHouseholds: number;\n modelName: string;\n}\n\nexport class StoreExploreData implements IStoreExploreData {\n public store = new Store();\n public files = [];\n public lifecycleComments = [];\n public segmentFeatures = [];\n public countsBySegment = 0;\n public countsByHouseholdType = {};\n public storeSales = [];\n public storeSalesGrouped = [];\n public storeSalesGroupedTopThree = [];\n public salesBySegment = 0;\n public salesRank = 0;\n public totalHouseholds = 0;\n public averageCompanyHouseholds = 0;\n public modelName = \"\";\n}\n","import * as types from \"../Actions/Types\";\nimport {\n pushpinColumns,\n storeColumns, targetMarketColumns,\n territoryColumns,\n} from \"../Components/Apps/My Data/Components/MyDataColumns\";\nimport { IMyData, ICloudFolder } from \"../Models/Models\";\nimport { message } from \"antd\";\n\nexport const defaultState: IMyData = {\n types: null,\n\n activeArea: null,\n activeColumns: {\n locations: storeColumns(null),\n territories: territoryColumns,\n pushpins: pushpinColumns,\n targetMarkets: targetMarketColumns,\n other: null,\n },\n\n typesChanging: false,\n\n activeType: null,\n activeData: null,\n dataSize: null,\n filters: {\n locations: [],\n territories: [],\n pushpins: [],\n aoiPoints: [],\n aoiShapes: [],\n resultsPoints: [],\n resultsShapes: [],\n },\n\n tableLoading: false,\n collaborateTerritories: false,\n collaboratePushpins: false,\n currentPage: 1,\n currentPageSize: 25,\n columnToSort: {\n sortColumn: null,\n sortDirection: null,\n },\n\n cloudFolder: {\n addCloudFolderMessage: \"\",\n currentCloudFolder: {\n name: \"\",\n fullPath: \"\",\n cloudFolders: [],\n cloudFiles: [],\n parent: \"\",\n id: 0,\n depth: 0,\n isGlobal: false,\n isShapes: false,\n isResults: false,\n },\n },\n\n cloudFile: {\n updateCloudFileMessage: \"\",\n updateCloudFileLoading: false,\n },\n\n selectedKeys: [\"10\"],\n\n myDataLoaded: false,\n\n breadcrumbs: [],\n storeUpdateAuditResult: null,\n badGeocodes: [],\n loadMyDataDataError: null,\n};\n\nexport const myData = (state = defaultState, action): IMyData => {\n switch (action.type) {\n case types.MY_DATA_LOADED:\n return {\n ...state,\n myDataLoaded: action.data,\n };\n case types.LOAD_MY_DATA_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n ...action.data,\n },\n myDataLoaded: true,\n };\n case types.LOAD_FROM_SCOUT_MY_DATA_AOI_POINT_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n aoiPoints: action.data,\n },\n };\n case types.LOAD_FROM_SCOUT_MY_DATA_AOI_SHAPE_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n aoiShapes: action.data,\n },\n };\n case types.LOAD_FROM_SCOUT_MY_DATA_RESULT_POINT_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n resultsPoints: action.data,\n },\n };\n case types.LOAD_FROM_SCOUT_MY_DATA_RESULT_SHAPE_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n resultsShapes: action.data,\n },\n };\n case types.LOAD_MY_DATA_CLOUD_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n aoiPoints: action.data.aoiPoints,\n aoiShapes: action.data.aoiShapes,\n resultsPoints: action.data.resultsPoints,\n resultsShapes: action.data.resultsShapes,\n },\n };\n case types.MY_DATA_LOAD_RESULTS_POINTS_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n resultsPoints: action.data,\n currentCloudTypeDict: createDict(action.data),\n },\n };\n case types.MY_DATA_LOAD_RESULTS_SHAPES_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n resultsShapes: action.data,\n currentCloudTypeDict: createDict(action.data),\n },\n };\n case types.MY_DATA_LOAD_AOI_POINTS_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n aoiPoints: action.data,\n currentCloudTypeDict: createDict(action.data),\n },\n };\n case types.MY_DATA_LOAD_AOI_SHAPES_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n aoiShapes: action.data,\n currentCloudTypeDict: createDict(action.data),\n },\n };\n case types.MY_DATA_BUILD_CURRENT_CLOUD_TYPE_DICT:\n return {\n ...state,\n types: {\n ...state.types,\n currentCloudTypeDict: createDict(\n action.data === \"resultsPoint\"\n ? state.types.resultsPoints\n : action.data === \"resultsShape\"\n ? state.types.resultsShapes\n : action.data === \"aoiPoint\"\n ? state.types.aoiPoints\n : action.data === \"aoiShape\"\n ? state.types.aoiShapes\n : null\n ),\n },\n };\n case types.MY_DATA_LOAD_PUSHPIN_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n pushpins: action.data,\n },\n };\n case types.MY_DATA_LOAD_STORE_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n locations: action.data,\n },\n };\n case types.MY_DATA_LOAD_TERRITORY_TYPES_SUCCESS:\n return {\n ...state,\n types: {\n ...state.types,\n territories: action.data,\n },\n };\n case types.LOAD_MY_DATA_DATA_SUCCESS:\n return {\n ...state,\n dataSize: action.data.dataSize,\n activeArea: action.data.activeArea,\n activeType: action.data.activeType,\n activeData: action.data.activeData,\n tableLoading: false,\n activeColumns: {\n ...state.activeColumns,\n locations: action.data.activeColumns,\n other: null,\n },\n typesChanging: false,\n };\n case types.LOAD_MY_DATA_FAILURE:\n return {\n ...state,\n tableLoading: false,\n loadMyDataDataError: action.data,\n };\n case types.LOAD_MY_DATA_OTHER_SUCCESS:\n return {\n ...state,\n dataSize: action.data.dataSize,\n activeArea: action.data.activeArea,\n activeType: action.data.activeType,\n activeData: action.data.activeData,\n tableLoading: false,\n activeColumns: {\n ...state.activeColumns,\n other: action.data.activeColumns,\n },\n typesChanging: false,\n };\n case types.MY_DATA_TYPES_CHANGED:\n return {\n ...state,\n typesChanging: true,\n };\n case types.MY_DATA_REMOVE_ALL_FILTERS:\n if (state.activeArea === \"Locations\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n locations: [],\n },\n };\n } else if (state.activeArea === \"Territories\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n territories: [],\n },\n };\n } else if (state.activeArea === \"Pushpins\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n pushpins: [],\n },\n };\n }\n case types.MY_DATA_REMOVE_FILTER:\n if (state.activeArea === \"Locations\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n locations: state.filters.locations.filter(\n (f) => f.fieldName !== action.data.fieldName\n ),\n },\n };\n } else if (state.activeArea === \"Territories\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n territories: state.filters.territories.filter(\n (f) => f.fieldName !== action.data.fieldName\n ),\n },\n };\n } else if (state.activeArea === \"Pushpins\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n pushpins: state.filters.pushpins.filter(\n (f) => f.fieldName !== action.data.fieldName\n ),\n },\n };\n }\n case types.UPDATE_MY_DATA_FILTERS:\n if (state.activeArea === \"Locations\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n locations: [...state.filters.locations, action.data],\n },\n };\n } else if (state.activeArea === \"Territories\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n territories: [...state.filters.territories, action.data],\n },\n };\n } else if (state.activeArea === \"Pushpins\") {\n return {\n ...state,\n filters: {\n ...state.filters,\n pushpins: [...state.filters.pushpins, action.data],\n },\n };\n }\n case types.UPDATE_MY_DATA_TERRITORY_COLLABORATE:\n return {\n ...state,\n collaborateTerritories: action.data,\n };\n case types.UPDATE_MY_DATA_PUSHPIN_COLLABORATE:\n return {\n ...state,\n collaboratePushpins: action.data,\n };\n case types.GET_USER_PREFERENCES_SUCCESS:\n case types.UPDATE_USER_PREFERENCES_SUCCESS:\n return {\n ...state,\n collaboratePushpins: action.response.data.collaboratePushpins,\n collaborateTerritories: action.response.data.collaborateTerritories,\n };\n case types.SET_MY_DATA_LOADING:\n return {\n ...state,\n tableLoading: action.data,\n };\n case types.UPDATE_MY_DATA_COLUMNS:\n switch (state.activeArea) {\n case \"Locations\":\n const activeLocationCols = [...state.activeColumns.locations];\n\n if (action.data === \"Check All\") {\n for (let i = 0; i < activeLocationCols.length; i++) {\n activeLocationCols[i].isChecked = true;\n }\n } else if (action.data === \"Uncheck All\") {\n for (let i = 0; i < activeLocationCols.length; i++) {\n activeLocationCols[i].isChecked = false;\n }\n } else {\n for (let i = 0; i < activeLocationCols.length; i++) {\n if (i === action.data) {\n activeLocationCols[i].isChecked\n = !activeLocationCols[i].isChecked;\n }\n }\n }\n\n return {\n ...state,\n activeColumns: {\n ...state.activeColumns,\n locations: activeLocationCols,\n },\n };\n case \"Territories\":\n const activeTerritoryCols = [...state.activeColumns.territories];\n\n if (action.data === \"Check All\") {\n for (let i = 0; i < activeTerritoryCols.length; i++) {\n activeTerritoryCols[i].isChecked = true;\n }\n } else if (action.data === \"Uncheck All\") {\n for (let i = 0; i < activeTerritoryCols.length; i++) {\n activeTerritoryCols[i].isChecked = false;\n }\n } else {\n for (let i = 0; i < activeTerritoryCols.length; i++) {\n if (i === action.data) {\n activeTerritoryCols[i].isChecked\n = !activeTerritoryCols[i].isChecked;\n }\n }\n }\n\n return {\n ...state,\n activeColumns: {\n ...state.activeColumns,\n territories: activeTerritoryCols,\n },\n };\n case \"Pushpins\":\n const activePushpinCols = [...state.activeColumns.pushpins];\n\n if (action.data === \"Check All\") {\n for (let i = 0; i < activePushpinCols.length; i++) {\n activePushpinCols[i].isChecked = true;\n }\n } else if (action.data === \"Uncheck All\") {\n for (let i = 0; i < activePushpinCols.length; i++) {\n activePushpinCols[i].isChecked = false;\n }\n } else {\n for (let i = 0; i < activePushpinCols.length; i++) {\n if (i === action.data) {\n activePushpinCols[i].isChecked\n = !activePushpinCols[i].isChecked;\n }\n }\n }\n\n return {\n ...state,\n activeColumns: {\n ...state.activeColumns,\n pushpins: activePushpinCols,\n },\n };\n case \"Target Markets\":\n const activeTargetMarketCols = [...state.activeColumns.targetMarkets];\n\n if (action.data === \"Check All\") {\n for (let i = 0; i < activeTargetMarketCols.length; i++) {\n activeTargetMarketCols[i].isChecked = true;\n }\n } else if (action.data === \"Uncheck All\") {\n for (let i = 0; i < activeTargetMarketCols.length; i++) {\n activeTargetMarketCols[i].isChecked = false;\n }\n } else {\n for (let i = 0; i < activeTargetMarketCols.length; i++) {\n if (i === action.data) {\n activeTargetMarketCols[i].isChecked\n = !activeTargetMarketCols[i].isChecked;\n }\n }\n }\n\n return {\n ...state,\n activeColumns: {\n ...state.activeColumns,\n targetMarkets: activeTargetMarketCols,\n },\n };\n case \"Areas of Interest/Points\":\n case \"Areas of Interest/Geographies\":\n case \"Results/Points\":\n case \"Results/Geographies\":\n const activeOtherCols = [...state.activeColumns.other];\n\n if (action.data === \"Check All\") {\n for (let i = 0; i < activeOtherCols.length; i++) {\n activeOtherCols[i].isChecked = true;\n }\n } else if (action.data === \"Uncheck All\") {\n for (let i = 0; i < activeOtherCols.length; i++) {\n activeOtherCols[i].isChecked = false;\n }\n } else {\n for (let i = 0; i < activeOtherCols.length; i++) {\n if (i === action.data) {\n activeOtherCols[i].isChecked = !activeOtherCols[i].isChecked;\n }\n }\n }\n\n return {\n ...state,\n activeColumns: {\n ...state.activeColumns,\n other: activeOtherCols,\n },\n };\n }\n case types.MY_DATA_SET_CURRENT_PAGE:\n return {\n ...state,\n currentPage: action.data,\n };\n case types.MY_DATA_SET_PAGE_SIZE:\n return {\n ...state,\n currentPageSize: action.data,\n };\n case types.UPDATE_SORT_DIRECTION:\n return {\n ...state,\n columnToSort: {\n ...state.columnToSort,\n sortColumn: action.data.sortColumn,\n sortDirection: action.data.sortDirection,\n },\n };\n case types.RESET_SORT_DIRECTION:\n return {\n ...state,\n columnToSort: {\n ...state.columnToSort,\n sortColumn: null,\n sortDirection: null,\n },\n };\n case types.MY_DATA_SET_CURRENT_CLOUD_FOLDER:\n return {\n ...state,\n cloudFolder: {\n ...state.cloudFolder,\n currentCloudFolder: state.types.currentCloudTypeDict[action.data],\n },\n };\n case types.MY_DATA_ADD_CLOUD_FOLDER_SUCCESS:\n message.destroy();\n message.success(\"Successfully added\", 5);\n return {\n ...state,\n cloudFolder: {\n ...state.cloudFolder,\n addCloudFolderMessage: \"Successfully added\",\n },\n };\n case types.MY_DATA_ADD_CLOUD_FOLDER_FAILURE:\n message.destroy();\n message.error(\"Failed to add\", 5);\n return { ...state };\n case types.MY_DATA_RESET_ADD_CLOUD_FOLDER_MESSAGE:\n return {\n ...state,\n cloudFolder: {\n ...state.cloudFolder,\n addCloudFolderMessage: \"\",\n },\n };\n case types.MY_DATA_DELETE_CLOUD_FOLDER_SUCCESS:\n message.destroy();\n message.success(\"Successfully deleted\", 5);\n return { ...state };\n case types.MY_DATA_DELETE_CLOUD_FOLDER_FAILURE:\n message.destroy();\n message.error(\"Failed to delete\", 5);\n return { ...state };\n case types.MY_DATA_UPDATE_CLOUD_FILE_LOADING:\n return {\n ...state,\n cloudFile: {\n ...state.cloudFile,\n updateCloudFileLoading: true,\n },\n };\n case types.MY_DATA_UPDATE_CLOUD_FILE_SUCCESS:\n message.destroy();\n message.success(\"Successfully updated\", 5);\n return {\n ...state,\n cloudFile: {\n ...state.cloudFile,\n updateCloudFileLoading: false,\n updateCloudFileMessage: \"Successfully updated\",\n },\n };\n case types.MY_DATA_UPDATE_CLOUD_FILE_FAILURE:\n message.destroy();\n message.error(\"Failed to update\", 5);\n return {\n ...state,\n cloudFile: {\n ...state.cloudFile,\n updateCloudFileLoading: false,\n },\n };\n case types.MY_DATA_RESET_UPDATE_CLOUD_FILE_MESSAGE:\n return {\n ...state,\n cloudFile: {\n ...state.cloudFile,\n updateCloudFileMessage: \"\",\n },\n };\n case types.MY_DATA_RESULTS_POINTS_DELETE_CLOUD_FILE_SUCCESS:\n message.destroy();\n message.success(\"Successfully deleted\", 5);\n return {\n ...state,\n types: {\n ...state.types,\n resultsPoints: action.data,\n },\n };\n case types.MY_DATA_RESULTS_SHAPES_DELETE_CLOUD_FILE_SUCCESS:\n message.destroy();\n message.success(\"Successfully deleted\", 5);\n return {\n ...state,\n types: {\n ...state.types,\n resultsShapes: action.data,\n },\n };\n case types.MY_DATA_AOI_POINTS_DELETE_CLOUD_FILE_SUCCESS:\n message.destroy();\n message.success(\"Successfully deleted\", 5);\n return {\n ...state,\n types: {\n ...state.types,\n aoiPoints: action.data,\n },\n };\n case types.MY_DATA_AOI_SHAPES_DELETE_CLOUD_FILE_SUCCESS:\n message.destroy();\n message.success(\"Successfully deleted\", 5);\n return {\n ...state,\n types: {\n ...state.types,\n aoiShapes: action.data,\n },\n };\n case types.MY_DATA_DELETE_CLOUD_FILE_FAILURE:\n message.destroy();\n message.error(\"Failed to delete\", 5);\n return { ...state };\n case types.MY_DATA_SET_ACTIVE_TYPE:\n return {\n ...state,\n selectedKeys: [action.data],\n };\n case types.MY_DATA_SET_BREADCRUMBS:\n return {\n ...state,\n breadcrumbs: action.data,\n };\n\n case types.MY_DATA_LOAD_STORE_FILE_AUDIT_SUCCESS:\n return {\n ...state,\n };\n case types.MY_DATA_LOAD_STORE_FILE_AUDIT_SUCCESS:\n return {\n ...state,\n };\n case types.MY_DATA_LOAD_STORE_SET_BAD_GEOCODES:\n return {\n ...state,\n badGeocodes: action.data,\n };\n default:\n return state;\n }\n};\n\nconst createDict = (data: ICloudFolder) => {\n const dict = {};\n const recurseYou = (parentFolder: ICloudFolder) => {\n dict[parentFolder.fullPath] = parentFolder;\n for (let i = 0; i < parentFolder.cloudFolders.length; i++) {\n recurseYou(parentFolder.cloudFolders[i]);\n }\n };\n\n recurseYou(data);\n\n return dict;\n};\n","import { Reducer } from \"redux\";\nimport { TableauAction, TableauActionTypes } from \"../Actions/TableauActions\";\nimport { IAction, ITableauView, ITableau } from \"../Models/Models\";\n\nconst InitialContainerState: ITableau = {\n views: [],\n loading: true,\n};\n\nexport const tableauReducer = (\n state: ITableau = InitialContainerState,\n action: TableauAction\n): ITableau => {\n switch (action.type) {\n case TableauActionTypes.REQUEST_VIEWS:\n return { ...state, loading: true };\n case TableauActionTypes.VIEWS_LOADED:\n const viewsLoadedAction = action as IAction;\n return { ...state, views: viewsLoadedAction.payload, loading: false };\n default:\n return { ...state };\n }\n};\n","import { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { IVisualization } from \"../Contracts\";\nimport { VisualizationAxios } from \"../Contracts/Axios\";\nimport { IAction, IServiceResult, ITableauView } from \"../Models/Models\";\n\nexport enum TableauActionTypes {\n VIEWS_LOADED = \"@@Tableau/VIEWS_LOADED\",\n REQUEST_VIEWS = \"@@Tableau/REQUEST_VIEWS\",\n}\n\nexport const viewsLoaded = (views: ITableauView[]): IAction => {\n const action: IAction = {\n type: TableauActionTypes.VIEWS_LOADED,\n payload: views,\n };\n\n return action;\n};\n\nexport const requestViews = (): IAction => {\n const action: IAction = {\n type: TableauActionTypes.REQUEST_VIEWS,\n payload: null,\n };\n\n return action;\n};\n\n//Thunk Action\nexport const loadTableauViews: ActionCreator>\n = () => {\n return (dispatch: Dispatch) => {\n dispatch(requestViews());\n\n const vizAjax: IVisualization = new VisualizationAxios();\n const promise = vizAjax.GetViews();\n promise\n .then((response: IServiceResult): void => {\n dispatch(viewsLoaded(response.data));\n })\n .catch((error: any) => {\n //??\n });\n };\n };\n\nexport type TableauAction = IAction;\n","import Axios, { AxiosError, AxiosResponse } from \"axios\";\nimport { ActionCreator, Dispatch } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { notification } from \"antd\";\n\nimport { UserProfileAxios } from \"../Contracts/Axios/UserProfileAxios\";\nimport { IUser, IUserProfile, IServiceResult } from \"../Models/Models\";\nimport * as types from \"./Types\";\nimport { IOktaMFAFactor } from \"../Models/OktaModels/IOktaMFAFactor\";\nimport { IOktaMFAFactorPushVerifyResult } from \"../Models/OktaModels/IOktaMFAFactorPushVerifyResult\";\nimport { IUserShareSettings } from \"../Models/IUserShareSettings\";\n\n// UPDATE\nexport const updateUserProfile: ActionCreator>\n = (\n profileUpdateObj: IUserProfile,\n shareSettingsUpdateObj: IUserShareSettings\n ) => {\n return (dispatch: Dispatch): void => {\n const userProfileAjax = new UserProfileAxios();\n const promises = [];\n promises.push(userProfileAjax.UpdateUserProfile(profileUpdateObj));\n promises.push(\n userProfileAjax.UpdateShareSettings(shareSettingsUpdateObj)\n );\n\n dispatch(updateSaveProfileLoading(true));\n\n Axios.all(promises)\n .then(\n Axios.spread(\n (...responses: IServiceResult[]) => {\n const profileResponse = responses[0] as IServiceResult;\n const shareSettingsResponse\n = responses[1] as IServiceResult;\n\n if (profileResponse.result\n && shareSettingsResponse.result) {\n\n if (profileUpdateObj.mfaEnrollUnenroll !== null) {\n const modalText = profileUpdateObj.mfaEnrollUnenroll\n ? `User profile updated successfully, and multi-factor authentication has been enabled on your account!\n\t\t\t\t\t\t\t\tYou will be prompted to set up your factors (e.g. text message, \"Okta Verify\" app) on your next log in.\n\t\t\t\t\t\t\t\tIf you would like to do this now please log out of SCOUT and then log back in.`\n : `User profile updated successfully, and multi-factor authentication has been disabled on your account.`;\n\n dispatch(setMfaEnrollmentModalText(modalText));\n dispatch(setMFAResult(\"\"));\n dispatch(setShowMfaEnrollmentModal(true));\n } else {\n if (!profileResponse.result){\n notification.open({\n message: \"Not Updated\",\n description: profileResponse.messages[0] || \"Invalid\",\n });\n } else {\n notification.open({\n message: \"Success!\",\n description: \"Your user profile has been updated\",\n });\n }\n dispatch(updateUserProfileSuccess(profileResponse));\n dispatch(\n updateUserShareSettingsSuccess(shareSettingsResponse)\n );\n }\n } else {\n const modalText\n = \"There was an error updating your profile: \"\n + profileResponse.messages[0];\n\n dispatch(setMfaEnrollmentModalText(modalText));\n dispatch(setMFAResult(\"ERROR\"));\n dispatch(setShowMfaEnrollmentModal(true));\n }\n dispatch(updateSaveProfileLoading(false));\n }\n )\n )\n .catch((error: AxiosError) => {\n dispatch(updateUserProfileFailure(error));\n dispatch(updateSaveProfileLoading(false));\n });\n };\n };\n\nexport const updateUserAvatar: ActionCreator>\n = (avatarImg: File) => {\n return (dispatch: Dispatch): void => {\n const userProfileAjax = new UserProfileAxios();\n const promises = [];\n promises.push(userProfileAjax.UpdateUserAvatar(avatarImg));\n\n Axios.all(promises)\n .then(\n Axios.spread((response: AxiosResponse) => {\n notification.open({\n message: \"Success!\",\n description: \"Your profile picture has been updated\",\n });\n dispatch(updateUserAvatarSuccess(response));\n })\n )\n .catch((error: AxiosError) => {\n dispatch(updateUserAvatarFailure(error));\n });\n };\n };\n\nexport const updateShareImage: ActionCreator>\n = (shareImg: File) => {\n return (dispatch: Dispatch): void => {\n\n dispatch(updateSaveProfileLoading(true));\n\n const userProfileAjax = new UserProfileAxios();\n const promises = [];\n promises.push(userProfileAjax.UpdateShareImage(shareImg));\n\n Axios.all(promises)\n .then(\n Axios.spread((response: AxiosResponse) => {\n notification.open({\n message: \"Success!\",\n description: \"Your Share Image has been updated.\",\n });\n dispatch(updateShareImageSuccess(response));\n })\n )\n .catch((error: AxiosError) => {\n notification.open({\n message: \"Failure\",\n description: `Your Share Image couldn't be updated. ${error.message}`,\n });\n dispatch(updateShareImageFailure(error));\n })\n .finally(() => {\n dispatch(updateSaveProfileLoading(false));\n });\n };\n };\n\nexport const resetPassword: ActionCreator>\n = () => {\n return (dispatch: Dispatch): void => {\n const userProfileAjax = new UserProfileAxios();\n const promises = [];\n promises.push(userProfileAjax.ResetPassword());\n\n Axios.all(promises)\n .then(\n Axios.spread((response: {\n data: boolean,\n result: boolean,\n messages: any[]\n }) => {\n if (response.data) {\n notification.open({\n message: \"An email has been sent with steps to reset your password.\",\n description: \"Follow the instructions in the email to complete your password reset process.\",\n });\n dispatch(resetPasswordSuccess(response));\n } else {\n notification.open({\n message: \"Password was not reset\",\n description: response.messages[0],\n });\n }\n })\n )\n .catch((error: AxiosError) => {\n notification.open({\n message: \"Password was not reset\",\n description: error.message,\n });\n dispatch(resetPasswordFailure(error));\n });\n };\n };\n\n// DELETE\nexport const deleteUserAvatar: ActionCreator>\n = (avatarStr: string) => {\n return (dispatch: Dispatch): void => {\n const userProfileAjax = new UserProfileAxios();\n const promises = [];\n promises.push(userProfileAjax.DeleteUserAvatar(avatarStr));\n\n Axios.all(promises)\n .then(\n Axios.spread((response: AxiosResponse) => {\n dispatch(deleteUserAvatarSuccess(response));\n })\n )\n .catch((error: AxiosError) => {\n dispatch(deleteUserAvatarFailure(error));\n });\n };\n };\n\nexport const deleteShareImage: ActionCreator>\n = (shareStr: string) => {\n return (dispatch: Dispatch): void => {\n\n dispatch(updateSaveProfileLoading(true));\n\n const userProfileAjax = new UserProfileAxios();\n const promises = [];\n promises.push(userProfileAjax.DeleteShareImage(shareStr));\n\n Axios.all(promises)\n .then(\n Axios.spread((response: AxiosResponse) => {\n notification.open({\n message: \"Success!\",\n description: \"Share Image deleted.\",\n });\n dispatch(deleteShareImageSuccess(response));\n })\n )\n .catch((error: AxiosError) => {\n notification.open({\n message: \"Failure\",\n description: `Share Image not deleted. ${error.message}`,\n });\n dispatch(deleteShareImageFailure(error));\n })\n .finally(() => {\n dispatch(updateSaveProfileLoading(false));\n });\n };\n };\n\n//MFA\nexport const GetMFAFactors: ActionCreator> = (\n oktaUserId: string\n) => {\n return (dispatch: Dispatch) => {\n dispatch(setAllMFAFactors(null));\n dispatch(setMFAResult(\"\"));\n\n Axios.get(`/Users/GetMFAFactors?oktaUserId=${oktaUserId}`)\n .then((response: AxiosResponse>) => {\n const factors = response.data.data;\n dispatch(setAllMFAFactors(factors));\n })\n .catch((error) => {\n dispatch(setAllMFAFactors(null));\n });\n };\n};\n\nexport const IssueMFAChallenge: ActionCreator>\n = (factor: IOktaMFAFactor) => {\n return (dispatch: Dispatch) => {\n dispatch(setMFAResult(\"\"));\n\n Axios.post(\"/Users/IssueMFAChallenge\", factor).catch((error) => {\n console.error(\"Error issuing MFA challenge\");\n console.error(error);\n });\n };\n };\n\nexport const IssuePushMFAChallenge: ActionCreator<\n ThunkAction\n> = (factor: IOktaMFAFactor) => {\n return (dispatch: Dispatch) => {\n dispatch(setMFAResult(\"WAITING\"));\n dispatch(setWaitingForMFAResponse(true));\n\n Axios.post(\"/Users/IssuePushMFAChallenge\", factor)\n .then(\n (\n response: AxiosResponse<\n IServiceResult\n >\n ) => {\n const verifyResult = response.data.data;\n dispatch(PollForPushResponse(verifyResult));\n }\n )\n .catch((error) => {\n console.error(\"Error issuing MFA challenge\");\n console.error(error);\n });\n };\n};\n\nexport const SubmitMFAChallengeResponse: ActionCreator<\n ThunkAction\n> = (factor: IOktaMFAFactor, challengeResponse: string) => {\n return (dispatch: Dispatch) => {\n dispatch(setWaitingForMFAResponse(true));\n\n Axios.post(\"/Users/SubmitMFAChallengeResponse\", {\n factor: factor,\n response: challengeResponse,\n })\n .then((response: AxiosResponse>) => {\n const message = response.data.data;\n dispatch(setMFAResult(message));\n dispatch(setWaitingForMFAResponse(false));\n })\n .catch((error) => {\n dispatch(\n setMFAResult(\n \"Error communicating with authorization server. Please try again later.\"\n )\n );\n dispatch(setWaitingForMFAResponse(false));\n });\n };\n};\n\nexport const getUserShareSettings: ActionCreator<\n ThunkAction\n> = () => {\n return (dispatch: Dispatch) => {\n const axios = new UserProfileAxios();\n const promise = axios.GetShareSettings();\n\n promise\n .then((response: IServiceResult) => {\n dispatch(getUserShareSettingsSuccess(response));\n })\n .catch((error: any) => {\n dispatch(getUserShareSettingsFailure(error));\n });\n };\n};\n\nexport const PollForPushResponse: ActionCreator<\n ThunkAction\n> = (verifyResult: IOktaMFAFactorPushVerifyResult) => {\n return (dispatch: Dispatch) => {\n dispatch(setWaitingForMFAResponse(true));\n\n Axios.post(\"/Users/PollForPushResponse\", verifyResult)\n .then((response: AxiosResponse>) => {\n const message = response.data.data;\n dispatch(setMFAResult(message));\n dispatch(setWaitingForMFAResponse(false));\n })\n .catch((error) => {\n dispatch(\n setMFAResult(\n \"Error communicating with authorization server. Please try again later.\"\n )\n );\n dispatch(setWaitingForMFAResponse(false));\n });\n };\n};\nconst updateSaveProfileLoading = (flag: boolean) => ({\n type: types.UPDATE_SAVE_PROFILE_LOADING,\n data: flag,\n});\n//------------------------------------------------ SUCCESS\nconst updateUserProfileSuccess = (data: IServiceResult) => ({\n type: types.UPDATE_USER_PROFILE_SUCCESS,\n response: data,\n});\n\nconst updateUserShareSettingsSuccess = (\n data: IServiceResult\n) => ({\n type: types.UPDATE_USER_SHARE_SETTINGS_SUCCESS,\n data: data,\n});\n\nconst getUserShareSettingsSuccess = (\n data: IServiceResult\n) => ({\n type: types.GET_USER_SHARE_SETTINGS_SUCCESS,\n data: data,\n});\n\nconst getUserShareSettingsFailure = (\n data: IServiceResult\n) => ({\n type: types.GET_USER_SHARE_SETTINGS_FAILURE,\n data: data,\n});\n\nconst resetPasswordSuccess = (data: IServiceResult) => ({\n type: types.RESET_PASSWORD_SUCCESS,\n response: data,\n});\nconst updateUserAvatarSuccess = (data: AxiosResponse) => ({\n type: types.UPDATE_USER_AVATAR_SUCCESS,\n response: data,\n});\nconst deleteUserAvatarSuccess = (data: AxiosResponse) => ({\n type: types.DELETE_USER_AVATAR_SUCCESS,\n response: data,\n});\n\nconst updateShareImageSuccess = (data: AxiosResponse) => ({\n type: types.UPDATE_SHARE_IMAGE_SUCCESS,\n response: data,\n});\nconst deleteShareImageSuccess = (data: AxiosResponse) => ({\n type: types.DELETE_SHARE_IMAGE_SUCCESS,\n response: data,\n});\n//------------------------------------------------ FAILURE\nconst updateUserProfileFailure = (error: AxiosError) => ({\n type: types.UPDATE_USER_PROFILE_FAILURE,\n response: error,\n});\nconst resetPasswordFailure = (error: AxiosError) => ({\n type: types.RESET_PASSWORD_FAILURE,\n response: error,\n});\nconst updateUserAvatarFailure = (error: AxiosError) => ({\n type: types.UPDATE_USER_AVATAR_FAILURE,\n response: error,\n});\nconst deleteUserAvatarFailure = (error: AxiosError) => ({\n type: types.DELETE_USER_AVATAR_FAILURE,\n response: error,\n});\nconst updateShareImageFailure = (error: AxiosError) => ({\n type: types.UPDATE_SHARE_IMAGE_FAILURE,\n response: error,\n});\nconst deleteShareImageFailure = (error: AxiosError) => ({\n type: types.DELETE_SHARE_IMAGE_FAILURE,\n response: error,\n});\nexport const setAllMFAFactors = (factors: IOktaMFAFactor[]) => {\n return {\n type: types.USER_PROFILE_SET_MFA_FACTORS,\n data: factors,\n };\n};\nexport const setSelectedFactorID = (id: string) => ({\n type: types.USER_PROFILE_SET_SELECTED_MFA_FACTOR_ID,\n data: id,\n});\nexport const setWaitingForMFAResponse = (waiting: boolean) => ({\n type: types.USER_PROFILE_SET_WAITING_FOR_MFA_RESPONSE,\n data: waiting,\n});\nconst setMFAResult = (result: string) => ({\n type: types.USER_PROFILE_SET_MFA_RESULT,\n data: result,\n});\nexport const setShowMfaEnrollmentModal = (show: boolean) => ({\n type: types.USER_PROFILE_SET_SHOW_MFA_ENROLLMENT_MODAL,\n data: show,\n});\nconst setMfaEnrollmentModalText = (text: string) => ({\n type: types.USER_PROFILE_SET_MFA_ENROLLMENT_MODAL_TEXT,\n data: text,\n});\nexport const setMfaEnrollmentUpdatedThisSession = (updated: boolean) => ({\n type: types.USER_PROFILE_SET_MFA_ENROLLMENT_UPDATED_THIS_SESSION,\n data: updated,\n});\n","import axios, { AxiosError, AxiosResponse } from \"axios\";\n\nimport { IServiceResult, IUser, IUserProfile } from \"../../Models/Models\";\nimport { IUserProfileAxios } from \"../IUserProfileAxios\";\nimport { IOktaMFAFactor } from \"../../Models/OktaModels/IOktaMFAFactor\";\nimport { IUserShareSettings } from \"../../Models/IUserShareSettings\";\n\nexport class UserProfileAxios implements IUserProfileAxios {\n\n public DeleteUserAvatar(avatarStr: string): Promise> {\n return new Promise>((resolve, reject) => {\n axios\n .post>(\"/Users/DeleteProfileImage\", {\n avatarStr,\n })\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n });\n }\n\n public DeleteShareImage(shareStr: string): Promise> {\n return new Promise>((resolve, reject) => {\n axios\n .post>(\"/Users/DeleteShareImage\", {\n shareStr,\n })\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n });\n }\n\n public UpdateUserAvatar(avatarImg: File): Promise> {\n const formData: FormData = new FormData();\n formData.append(\"image\", avatarImg);\n\n return new Promise>((resolve, reject) => {\n axios\n .post>(\n \"/Users/UpdateProfileImage\",\n formData,\n {\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n }\n )\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n });\n }\n\n public UpdateShareImage(shareImg: File): Promise> {\n const formData: FormData = new FormData();\n formData.append(\"image\", shareImg);\n\n return new Promise>((resolve, reject) => {\n axios\n .post>(\n \"/Users/UpdateShareImage\",\n formData,\n {\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n }\n )\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n });\n }\n\n public UpdateUserProfile(\n userProfile: IUserProfile\n ): Promise> {\n return new Promise>((resolve, reject) => {\n axios\n .post>(\"/Account/UpdateUser\", userProfile)\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n });\n }\n\n public ResetPassword(): Promise> {\n return new Promise>((resolve, reject) => {\n axios\n .post>(\"/Account/ResetPassword\")\n .then(\n (response: AxiosResponse) => {\n resolve(response.data);\n },\n (error: AxiosError) => {\n reject(error);\n }\n );\n });\n }\n\n public GetMFAFactors(\n oktaUserId: string\n ): Promise> {\n return new Promise>(\n (resolve, reject) => {\n axios\n .get>(`/Users/GetMFAFactors?oktaUserId=${oktaUserId}`)\n .then((response: AxiosResponse>) => {\n resolve(response.data);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n }\n );\n }\n\n public IssueMFAChallenge = (factor: IOktaMFAFactor): Promise => {\n return new Promise((resolve, reject) => {\n axios\n .post(factor._links.verify.href)\n .then((response: AxiosResponse) => {\n resolve(response.data);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n };\n\n public GetShareSettings = (): Promise> => {\n return new Promise>(\n (resolve, reject) => {\n axios\n .get>(\"/Users/GetShareSettings\")\n .then(\n (response: AxiosResponse>) => {\n resolve(response.data);\n }\n )\n .catch((error: AxiosError) => {\n reject(error);\n });\n }\n );\n };\n\n public UpdateShareSettings = (userShareSettings: IUserShareSettings): Promise> => {\n return new Promise>(\n (resolve, reject) => {\n axios\n .post>(\n \"/Users/UpdateShareSettings\", userShareSettings)\n .then(\n (response: AxiosResponse>) => {\n resolve(response.data);\n }\n )\n .catch((error: AxiosError) => {\n reject(error);\n });\n }\n );\n };\n}\n","import { IServiceResult, IUser, IUserProfile } from \"../Models/Models\";\n\nexport interface IUserProfileAxios {\n UpdateUserProfile(\n profileUpdateObj: IUserProfile\n ): Promise>;\n UpdateUserAvatar(avatarImg: File): Promise>;\n DeleteUserAvatar(avatarStr: string): Promise>;\n}\n","import { IOktaMFAFactorVerifyLinks } from \"./IOktaMFAFactorVerifyLinks\";\n\nexport interface IOktaMFAFactorPushVerifyResult {\n expiresAt: Date;\n factorResult: string;\n _links: IOktaMFAFactorVerifyLinks;\n}\n","import { IOktaMFAFactorLink } from \"./IOktaMFAFactorLink\";\n\nexport interface IOktaMFAFactorVerifyLinks {\n poll: IOktaMFAFactorLink;\n}\n","import { FeatureFlags } from \"./FeatureFlags\";\n\nexport const getFeatureFlags = (): FeatureFlags => {\n return {\n IsReact: {\n LeftNav: {\n Mobilytics: false,\n MobilyticsPlaces: true,\n },\n RightNav: {\n MobilyticsBenchmark: true,\n },\n Toolbox: {\n MapSettings: false,\n },\n },\n Interop: {\n InfiniteLoopDetection: true,\n InfiniteLoopDetectionLogging: true,\n DieOnInfiniteLoopDetection: true,\n },\n WorkplaceForMobilyticsVisitorsOnMap: true,\n AllowOverrideTradeAreaMapDelay: true,\n DigitalShare: {\n Footer: true,\n PrintMultiBrand: true,\n },\n NewUI:{\n VoidGap: false,\n },\n Debug: {\n ActionLogging: false,\n BlockedUIDetection: false,\n UseReduxDevTools: false,\n },\n Mobilytics: {\n newRelativeVolume: false,\n },\n Benchmarking: {\n ThematicTile: true\n },\n Factor: {\n scoutToFactorPolygons: true\n }\n };\n};\n","import { IBrand } from \"../Models/IBrand\";\nimport { IBrandCategory } from \"../Models/IBrandCategory\";\n\nexport interface IGPSServiceAxios {\n GetBrands(): Promise;\n GetBrandById(brandId: string): Promise;\n GetCategories(): Promise;\n}\n","export * from \"./AMXYChart\";\nexport * from \"./RechartBarLine\";\nexport * from \"./IndexBar\";\nexport * from \"./RechartPyramid\";\nexport * from \"./NivoCalendar\";\nexport * from \"./ChartTitle\";\nexport * from \"./VennChart\";\n","import React, { FunctionComponent, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { Select } from \"antd\";\nimport { IGPSAMChartData } from \"../../../Models/Models\";\nimport { DropdownComparisonWeight } from \"../../../Enums/Enums\";\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\nimport * as am4core from \"@amcharts/amcharts4/core\";\nimport am4themes_animated from \"@amcharts/amcharts4/themes/animated\";\nimport { ChartButtonWrapper, ChartBodyWrapper } from \"../\";\nimport { IRetailMatchChartData } from \"../../../Models/IRetailMatch\";\n\nconst { Option } = Select;\n\ninterface IAMXYChart {\n data: IGPSAMChartData;\n retailMatchData: IRetailMatchChartData[];\n chartId: string;\n xLabel?: string;\n yLabel?: string;\n rotateXLabels?: boolean;\n}\n\nconst ChartContainer = styled(\"div\")`\n min-height: 360px;\n`;\n\nexport const AMXYChart: FunctionComponent = (props: IAMXYChart) => {\n useEffect(() => {\n if (props.data && props.data.week.length > 0) {\n setChart(createChart(props.chartId, props.data));\n }\n }, []);\n\n const [isVisits, setIsVisits] = useState(true);\n const [chart, setChart] = useState(null);\n const [series, setSeries] = useState(null);\n\n const handleVisitsChange = (value: DropdownComparisonWeight) => {\n switch (value) {\n case DropdownComparisonWeight.PRIMARY:\n setIsVisits(true);\n series.dataFields.valueY = \"visitWeight\";\n break;\n case DropdownComparisonWeight.SECONDARY:\n setIsVisits(false);\n series.dataFields.valueY = \"visitorCount\";\n break;\n }\n setSeries(series);\n chart.validateData();\n };\n\n const createChart = (\n targetDiv: string,\n data: IGPSAMChartData\n ): am4charts.XYChart => {\n //Create the chart object\n am4core.useTheme(am4themes_animated);\n const newChart = am4core.create(targetDiv, am4charts.XYChart);\n newChart.width = am4core.percent(100);\n newChart.align = \"center\";\n newChart.data = data.week;\n newChart.legend = new am4charts.Legend();\n\n //Create the X axis\n const xAxis = newChart.xAxes.push(new am4charts.DateAxis());\n xAxis.title.text = props.xLabel;\n // xAxis.renderer.minHeight = 110;\n // xAxis.renderer.\n\n if (props.rotateXLabels) {\n xAxis.renderer.labels.template.rotation = 270;\n xAxis.renderer.labels.template.horizontalCenter = \"right\";\n xAxis.renderer.labels.template.verticalCenter = \"middle\";\n xAxis.renderer.minGridDistance = 10;\n xAxis.renderer.labels.template.fontSize = 10;\n }\n\n xAxis.renderer.grid.template.location = 0.5;\n xAxis.renderer.labels.template.location = 0.5;\n\n //Create the Y axis\n const yAxis = newChart.yAxes.push(new am4charts.ValueAxis());\n yAxis.title.text = props.yLabel;\n yAxis.renderer.minWidth = 50;\n yAxis.renderer.labels.template.adapter.add(\"text\", (text, label) => {\n return (label.dataItem as any).value * 100 + \"%\"; // ERY: Hooray! another am charts typescript bug!\n });\n yAxis.adapter.add(\"getTooltipText\", (text) => {\n return Number(text) * 100 + \"%\";\n });\n //This will set the Y-axis number format to \"10 M\" for 10 million, etc.\n // yAxis.numberFormatter.numberFormat = \"#%\";\n\n //Bind the properties of my sales data to the series property of the chart\n const newSeries = newChart.series.push(new am4charts.ColumnSeries());\n newSeries.sequencedInterpolation = true;\n newSeries.name = \"Selection One\";\n if (isVisits) {\n newSeries.dataFields.valueY = \"visitWeight\"; // TODO ERY: will need to revisit this when we get benchmark data back.\n } else {\n newSeries.dataFields.valueY = \"visitorCount\";\n }\n newSeries.dataFields.dateX = \"id\";\n\n //Set the column colors\n const primaryColor = am4core.color(\"#5B52F9\");\n newSeries.stroke = primaryColor;\n newSeries.columns.template.fill = primaryColor;\n\n // ERY: no benchmark for now.\n // if (newChart.data.length > 0 && newChart.data[0].benchmark) {\n // const series2 = newChart.newSeries.push(new am4charts.ColumnSeries());\n // series2.dataFields.valueY = \"benchmark\";\n // series2.dataFields.categoryX = \"label\";\n\n // //Set the column colors\n // const primaryColor = am4core.color(\"#02C48C\");\n // series2.stroke = primaryColor;\n // series2.columns.template.fill = primaryColor;\n // }\n\n //Set the mouseover text. This will show the original value rather than the abbreviated \"10 M\"\n newSeries.columns.template.tooltipText = \"{name} - {dateX}: {valueY}\"; // TODO ERY: Todd's going to probably change this a lot, so I don't want to mess with this too much.\n\n //const tooltipPosition = scout.isMobile || scout.isMobileDevice ? \"fixed\" : \"pointer\";\n /*\n ^^ this was to ensure correct positioning of tooltips when clicking on columns on mobile devices\n It works on everything except the touchscreen tv, so until we figure something else out, we're keeping it on fixed on all devices\n */\n const tooltipPosition = \"fixed\";\n newSeries.columns.template.tooltipPosition = tooltipPosition;\n\n //Create X-axis cursor\n newChart.cursor = new am4charts.XYCursor();\n\n //X Scrollbar, so user can narrow down date ranges\n newChart.scrollbarX = new am4core.Scrollbar();\n\n // TODO ERY: May Revisit\n //Enable exporting\n // const exportMenu = newChart.exporting.menu = new am4core.ExportMenu();\n // exportMenu.items = [{\n // label: \"Export\",\n // menu: [\n // { type: \"csv\", label: \"CSV\" },\n // { type: \"xlsx\", label: \"XLSX\" }\n // ]\n // }];\n // exportMenu.align = \"right\";\n // exportMenu.verticalAlign = \"top\";\n\n // newChart.exporting.filePrefix = \"Performance\";\n setSeries(newSeries);\n\n return newChart;\n };\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { IChartMergedDatapoint } from \"../../../Models/Models\";\nimport { shortenStr } from \"../../Common\";\n\nimport {\n ResponsiveContainer,\n ComposedChart,\n Line,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { ChartContainer } from \"./ChartContainer\";\n\ninterface IRechartBarLine {\n data?: IChartMergedDatapoint[];\n initialYValue:\n | \"nationalWeight\"\n | \"selection1PrimaryWeight\"\n | \"selection1SecondaryWeight\";\n bar1color: string;\n bar2color?: string;\n xTickFormatter?: (id: string) => string;\n yValueTickFormatter?: (num: number) => string;\n bar1ValueAttr: string;\n bar2ValueAttr?: string;\n verticalXAxis?: boolean;\n chartHeight?: number;\n makeXLabelsFitDemmit?: boolean;\n xAxisHeight?: number;\n selection1Name?: string;\n selection2Name?: string;\n primaryWeightLabel?: string;\n secondaryWeightLabel?: string;\n ignoreXTickFormatterOnTooltip?: boolean;\n nationalAverageLine?: boolean;\n disableAnimation?: boolean;\n}\n\nexport const RechartBarLine: FunctionComponent = (\n props: IRechartBarLine\n) => {\n const {\n data,\n initialYValue,\n bar1color,\n bar2color,\n xTickFormatter,\n yValueTickFormatter,\n bar1ValueAttr,\n bar2ValueAttr,\n verticalXAxis,\n chartHeight,\n makeXLabelsFitDemmit,\n xAxisHeight,\n ignoreXTickFormatterOnTooltip,\n disableAnimation,\n } = props;\n\n const animationActive = !disableAnimation;\n const NationalLine: JSX.Element\n = data[0].nationalWeight && props.nationalAverageLine ? (\n \n ) : null;\n\n const BarSelection2: JSX.Element\n = props.selection2Name?.length > 0 ? (\n \n ) : null;\n\n const formatYLabel = (str: string): string => {\n let yLabel;\n switch (str) {\n case \"selection1PrimaryWeight\":\n yLabel = props.selection1Name\n ? props.selection1Name\n : props.primaryWeightLabel;\n break;\n case \"selection1SecondaryWeight\":\n yLabel = props.selection1Name\n ? props.selection1Name\n : props.secondaryWeightLabel;\n break;\n case \"selection2PrimaryWeight\":\n yLabel = props.selection2Name\n ? props.selection2Name\n : props.primaryWeightLabel;\n break;\n case \"selection2SecondaryWeight\":\n yLabel = props.selection2Name\n ? props.selection2Name\n : props.secondaryWeightLabel;\n break;\n default:\n yLabel = \"US National Avg\";\n break;\n }\n return shortenStr(yLabel, 20);\n };\n\n const formatLegendText = (value: string) => {\n return {formatYLabel(value)};\n };\n\n const formatTooltipText = (value: number, name: string): [string, string] => {\n return [yValueTickFormatter(value), formatYLabel(name)];\n };\n\n const CustomizedAxisTick = (props) => {\n const { x, y, stroke, payload } = props;\n const value = xTickFormatter\n ? xTickFormatter(payload.value)\n : payload.value;\n\n return (\n \n \n {value}\n \n \n );\n };\n\n return (\n \n \n \n \n : { fontSize: 9 }\n }\n height={xAxisHeight ? xAxisHeight : 30}\n axisLine={false}\n tickLine={false}\n />\n \n \n \n \n {BarSelection2}\n {NationalLine}\n \n \n \n );\n};\n","import styled from \"styled-components\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport React, { FunctionComponent } from \"react\";\n\nimport { getRetailMatchIndexColor } from \"../../../Util/ColorUtil\";\nimport { ReportH3 } from \"../ReportStyles/Text\";\nimport { getRetailMatchMetricVerbiage } from \"../../../Util/RetailMatch/RetailMatchUtil\";\nimport { RetailMatchMetricLevel } from \"../../../Enums/RetailMatchMetricLevel\";\nimport { device, sizeConstants } from \"../../../globalStyles\";\nimport { firstLetterCapitalizer } from \"../../Common\";\nimport { BreakoutItemVerbiage } from \"../../Apps/RetailMatch/Styled/RetailMatchIntroStyles\";\n\ninterface IIndexBarProps {\n index?: number;\n barTotal?: number;\n title?: string;\n subTitle?: string;\n scaleText?: RetailMatchMetricLevel;\n inSidebar?: boolean;\n metric?: RetailMatchMetricLevel;\n pillValue?: number;\n}\n\nexport const IndexSubtitle = styled(\"span\")`\n font-size: 17px;\n color: #000000;\n line-height: 22px;\n`;\n\nconst IndexBarValue = styled.div`\n position: absolute;\n width: 0;\n height: 8px;\n border-radius: 4px;\n background-color: ${(props: IIndexBarProps) =>\n getRetailMatchIndexColor(props.index)};\n transition: width 0.4s;\n max-width: 100%;\n`;\n\nconst IndexBarValueSharing = styled.div`\n position: absolute;\n width: ${(props: IIndexBarProps) => (props.index / props.barTotal) * 100}%;\n height: 8px;\n border-radius: 4px;\n background-color: ${(props: IIndexBarProps) =>\n getRetailMatchIndexColor(props.index)};\n max-width: 100%;\n`;\n\nconst IndexPill = styled(ScrollAnimation)`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n overflow: visible;\n text-align: center;\n color: #fff;\n border-radius: 64px;\n height: 0;\n width: 0;\n background-color: transparent;\n margin: 0 auto;\n transition: background-color 0.3s, width 0.3s, height 0.3s;\n\n &.active {\n width: 80px;\n height: 80px;\n background-color: ${(props: IIndexBarProps) =>\n getRetailMatchIndexColor(props.index)};\n }\n\n ${device.desktop} {\n &.active {\n width: 129px;\n height: 129px;\n }\n }\n`;\n\nconst IndexPillSharing = styled.div`\n position: absolute;\n left: ${(props: IIndexBarProps) => props.pillValue}%;\n top: -11px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n text-align: center;\n color: #fff;\n border-radius: 64px;\n margin: 0 auto;\n width: ${(props: IIndexBarProps) => (props.inSidebar ? \"25px\" : \"30px\")};\n height: ${(props: IIndexBarProps) => (props.inSidebar ? \"25px\" : \"30px\")};\n background-color: ${(props: IIndexBarProps) =>\n getRetailMatchIndexColor(props.index)};\n z-index: 1;\n`;\n\nconst IndexBarWrapper = styled(ScrollAnimation)`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow: visible;\n height: 12px;\n grid-column-start: span 2;\n width: calc(\n 100% - 40px\n ); /* Creates padding without having to apply it to all children */\n margin: 0 auto;\n &.active {\n > ${IndexBarValue} {\n width: ${(props: IIndexBarProps) =>\n (props.index / props.barTotal) * 100}%;\n }\n }\n\n ${device.desktop} {\n grid-column-start: 2;\n }\n`;\n\nconst IndexBarWrapperSharing = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n height: 12px;\n width: calc(\n 100% - 40px\n ); /* Creates padding without having to apply it to all children */\n margin-bottom: ${(props: IIndexBarProps) => props.inSidebar && \"25px\"};\n`;\n\nconst IndexBarTotal = styled.div`\n position: absolute;\n display: flex;\n width: 100%;\n max-width: 100%;\n height: 8px;\n border-radius: 4px;\n background-color: #f5f6f7;\n`;\n\nconst IndexBarScale = styled.div`\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n color: rgba(51, 51, 51, 0.6);\n font-weight: 900;\n width: 100%;\n max-width: 100%;\n margin-top: 8px;\n`;\n\nconst IndexBarScaleValueWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n font-size: 14px;\n width: 2px;\n`;\n\nconst IndexBarScaleValueTick = styled.div`\n width: 2px;\n height: 10px;\n border-radius: 2px;\n background-color: #969ea6;\n margin-bottom: 5px;\n`;\n\nconst IndexBarInfoText = styled.div`\n width: 100%;\n`;\n\nconst IndexTextValue = styled.div`\n width: 58px;\n height: 16px;\n font-size: 16px;\n font-weight: 900;\n ${device.desktop} {\n font-size: 19px;\n height: 19px;\n }\n`;\n\nconst IndexText = styled.div`\n width: 52px;\n height: 8px;\n font-size: 8px;\n font-weight: 500;\n ${device.desktop} {\n font-size: 11px;\n height: 11px;\n }\n`;\n\nexport const IndexBar: FunctionComponent = (\n props: IIndexBarProps\n) => {\n const { index, scaleText } = props;\n const maxIndex = 200;\n const scaleValues = [0, 100, maxIndex];\n const barIndex = index;\n\n const getIndexPillSubtitle = (val: number): string => {\n const text: string = getRetailMatchMetricVerbiage(val, scaleText);\n\n return firstLetterCapitalizer(text);\n };\n\n return (\n <>\n \n {index}\n INDEX\n \n \n {props.title}\n {props.subTitle}\n \n \n \n \n \n {scaleValues.map((val: number, i: number) => (\n \n \n
    {val}
    \n \n {getIndexPillSubtitle(val)}\n \n
    \n ))}\n
    \n \n \n );\n};\n\nexport const IndexBarSharing: FunctionComponent = ({\n index,\n scaleText,\n metric,\n inSidebar,\n title,\n subTitle,\n}: IIndexBarProps) => {\n const maxIndex = 200;\n const scaleValues = [0, 100, maxIndex];\n let pillValue: number = (index / maxIndex) * 100 - 1;\n\n if (pillValue > 100) {\n pillValue = 99;\n }\n\n const getIndexPillSubtitle = (val: number): string => {\n const text: string = getRetailMatchMetricVerbiage(val, scaleText);\n\n return firstLetterCapitalizer(text);\n };\n\n return (\n <>\n \n
    \n \n {title}\n \n {inSidebar && (\n <>\n - \n \n \n \n {getRetailMatchMetricVerbiage(index, scaleText)}\n \n \n \n \n )}\n
    \n \n {!inSidebar && \" - \"}\n {subTitle}\n \n \n \n \n \n {index}\n \n \n \n \n {!inSidebar && (\n \n {scaleValues.map((val: number, i: number) => (\n \n \n
    {val}
    \n
    \n {getIndexPillSubtitle(val)}\n
    \n
    \n ))}\n
    \n )}\n
    \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport {\n Bar,\n CartesianGrid,\n Cell,\n ComposedChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n} from \"recharts\";\nimport styled from \"styled-components\";\nimport { IRootReducer } from \"../../../Models/IRootReducer\";\nimport { IProfileRecord, ISegment } from \"../../../Models/Models\";\nimport { segmentFormatter } from \"../../../Util/ReportUtil\";\n\ninterface IRechartPyramid {\n chartHeight?: number;\n selection1: IProfileRecord[];\n selection2?: IProfileRecord[];\n equalYMax?: boolean;\n}\ninterface IChartContainer {\n chartHeight?: number;\n width: number;\n}\ninterface IRechartPyramidStore {\n segments: ISegment[];\n}\n\nconst ChartContainer = styled(\"div\")`\n height: ${(props: IChartContainer) =>\n props.chartHeight ? props.chartHeight : 360}px;\n width: ${(props: IChartContainer) => props.width}%;\n`;\n\nconst colors = { P: \"#ff2b2b\", S: \"#5833ff\", N: \"#a8a095\", T: \"#a8a095\" };\n\nconst formatYValue = (num: number): string => {\n return `${Math.round(Number(num) * 10000) / 100}%`;\n};\n\nexport const RechartPyramid: FunctionComponent = (\n props: IRechartPyramid\n) => {\n /** store */\n const store = useSelector((root: IRootReducer): IRechartPyramidStore => {\n return {\n segments: root.matchReportOutput.mosaicSegments,\n };\n }, shallowEqual);\n\n let maxValue: number;\n if (props.selection2 && props.equalYMax) {\n const sel1Max = Math.max(...props.selection1.map((sel) => sel.pct));\n const sel2Max = Math.max(...props.selection2.map((sel) => sel.pct));\n\n maxValue = sel1Max >= sel2Max ? sel1Max : sel2Max;\n maxValue += 0.05 * maxValue; // give it padding based on the max value, not a set value\n }\n\n const formatTooltipText = (value: number, name: string): [string, string] => {\n const val = formatYValue(value);\n return [val, \"Percent\"];\n };\n\n const SingleChart = (chartData: IProfileRecord[], side: \"left\" | \"right\") => {\n return (\n 0 && props.selection2 ? 50 : 100}\n >\n \n \n \n \n \"\"}\n tickLine={true}\n width={side === \"left\" ? 5 : 33}\n tickMargin={side === \"left\" ? 0 : 5}\n />\n \n segmentFormatter(seg.toString(), store.segments)\n }\n />\n \n {chartData.map((entry, index) => (\n \n ))}\n \n \n \n \n );\n };\n\n return (\n
    \n {props.selection1.length > 0\n && SingleChart(props.selection1, props.selection2 ? \"left\" : \"right\")}\n {props.selection2 && SingleChart(props.selection2, \"right\")}\n
    \n );\n};\n","import React, { FunctionComponent, useState, useEffect, useRef } from \"react\";\nimport { Select } from \"antd\";\nimport { DropdownComparisonWeight } from \"../../../Enums/Enums\";\nimport styled from \"styled-components\";\nimport { ChartButtonWrapper } from \"../\";\nimport {\n ResponsiveCalendar,\n ResponsiveCalendarCanvas,\n CalendarCommonProps,\n} from \"@nivo/calendar\";\nimport { IChartCalendarDatapoint } from \"../../../Models/Models\";\nimport moment from \"moment\";\nimport { shortenStr } from \"../../Common\";\nimport { featureFlags } from \"../../../Common/CurrentFeatureFlags\";\nimport { RenderType } from \"../../../Enums/RenderType\";\nimport {\n CHILD_HEIGHT,\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../DigitalShare/DigitalShareGenerator\";\nimport { DigitalShareAppType } from \"../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../Enums/DigitalShareItemType\";\n\nconst { Option } = Select;\n\ninterface INivoCalendar extends CalendarCommonProps {\n storeData: any[];\n benchmarkData?: any[];\n canvas?: boolean;\n displayDropdown?: boolean;\n sel1PrimaryName: string;\n sel1SecondaryName: string;\n sel2PrimaryType?: string;\n sel2SecondaryType?: string;\n sel2PrimaryName?: string;\n sel2SecondaryName?: string;\n sel1Color: string;\n sel2Color?: string;\n sel1Data: any;\n sel2Data: any;\n customGroupingDropdown?: Array;\n customDropdownContent?: JSX.Element;\n location1Name: string;\n location2Name?: string;\n convertData: (data: any, type: string) => IChartCalendarDatapoint[];\n secondDropdownHandler?: (str: string) => void;\n renderType?: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n}\n\nconst ChartContainer = styled(\"div\")`\n height: 360px;\n width: 100%;\n`;\n\nexport const NivoCalendar: FunctionComponent = (\n props: INivoCalendar\n) => {\n const [currentData, setCurrentData] = useState(null);\n const [dropdownValue, setDropdownValue] = useState(\n DropdownComparisonWeight.PRIMARY\n );\n const maxStrLen = 20;\n\n const renderType\n = props.renderType === undefined ? RenderType.DEFAULT : props.renderType;\n\n useEffect(() => {\n if (props.sel1Data && dropdownValue === DropdownComparisonWeight.PRIMARY) {\n setCurrentData(props.sel1Data);\n } else if (\n props.sel2Data\n && dropdownValue === DropdownComparisonWeight.SECONDARY\n ) {\n setCurrentData(props.sel2Data);\n }\n }, [props.sel1Data]);\n\n const calendarProps: CalendarCommonProps = currentData && {\n emptyColor: \"#eeeeee\",\n colors: [\n `${props.sel1Color}25`,\n `${props.sel1Color}50`,\n `${props.sel1Color}75`,\n props.sel1Color,\n ],\n margin: { left: 20, top: 5 },\n direction: \"horizontal\",\n monthBorderColor: \"#0a0a0a\",\n dayBorderWidth: 1,\n dayBorderColor: \"#ffffff\",\n tooltip: ({ day, value }) => (\n \n {moment(day).format(\"dddd, MMMM Do YYYY\")}: {`${value}%`}\n \n ),\n };\n\n const handleVisitsChange = (value: DropdownComparisonWeight) => {\n switch (value) {\n case DropdownComparisonWeight.PRIMARY:\n setCurrentData(props.sel1Data);\n break;\n case DropdownComparisonWeight.SECONDARY:\n setCurrentData(props.sel2Data);\n break;\n }\n setDropdownValue(value);\n };\n\n const calcFromDate = (dateStr: string): string => {\n return `${dateStr.substring(0, 4)}-01-02`;\n };\n\n const calcToDate = (dateStr: string): string => {\n return `${dateStr.substring(0, 4)}-12-31`;\n };\n\n const CalendarType: JSX.Element = currentData ? (\n props.canvas ? (\n \n ) : (\n \n )\n ) : null;\n\n const InteractionArea: JSX.Element = (\n \n
    \n {props.displayDropdown ? (\n \n \n \n \n ) : null}\n {props.customDropdownContent}\n
    \n
    \n
    \n );\n\n const ref = useRef();\n\n const getChartText = (visits: any, selectedPolygon?: string): string => {\n return `${visits ? \"Visits\" : \"Visitors\"} volume trends${\n selectedPolygon.length && \"of\" + selectedPolygon\n }`;\n };\n\n if (\n featureFlags.DigitalShare\n && renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, props.itemType)\n ) {\n const calendar = (\n \n {CalendarType}\n \n );\n\n const text = getChartText(dropdownValue);\n\n registerRef(props.app.toString(), props.itemType.toString(), ref);\n registerElement(\n props.app.toString(),\n props.itemType.toString(),\n text,\n calendar\n );\n }\n\n return (\n <>\n {InteractionArea}\n \n {currentData && CalendarType}\n \n \n );\n};\n","import { IPdfHtmlData } from \"../Common/Models\";\nimport { PrintAxios } from \"../Contracts/Axios/PrintAxios\";\n\nexport const ImageDataUrlsToPdf = (\n filenameNoExtension: string,\n dataUrls: string[]\n) => {\n const printAxios = new PrintAxios();\n return printAxios.ImageDataUrlsToPdf(filenameNoExtension, dataUrls);\n};\n\nexport const PdfNewTab = (\n product: string,\n jobId: string,\n dataUrls: string[]\n): Promise => {\n const printAxios = new PrintAxios();\n return printAxios.PdfNewTab(product, jobId, dataUrls);\n};\n\nexport const PdfLambda = (\n allHtml: IPdfHtmlData[]\n): Promise => {\n const printAxios = new PrintAxios();\n return printAxios.PdfLambda(allHtml);\n};\n","import { AxiosError } from \"axios\";\nimport { authorizedAxios } from \"../../Actions/AxiosActions\";\nimport { IPrintAxios } from \"../IPrintAxios\";\nimport { IPdfHtmlData } from \"../../Common/Models\";\n\n//This is dumb, but it's the only way I can seem to get data back from this request\ninterface IPdfNewTabResponse {\n url: string;\n}\n\nexport class PrintAxios implements IPrintAxios {\n public ImageDataUrlsToPdf(\n filenameNoExtension: string,\n dataUrls: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n const data = {\n fileName: filenameNoExtension,\n dataUrls,\n };\n authorizedAxios(\n \"POST\",\n `/services/gps/Print/ImageDataUrlsToPdf`,\n {},\n data,\n \"blob\"\n )\n .then((file: any) => {\n saveAs(file, `${filenameNoExtension}.pdf`);\n resolve(file);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public PdfNewTab(\n product: string,\n jobId: string,\n dataUrls: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n const data = {\n product,\n jobId,\n dataUrls,\n };\n authorizedAxios(\"POST\", `/services/gps/Print/PdfNewTab`, {}, data)\n .then((response: IPdfNewTabResponse) => {\n resolve(response.url);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n\n public PdfLambda(\n allImages: IPdfHtmlData[],\n ): Promise {\n return new Promise((resolve, reject) => {\n const data = {\n htmlPage: allImages,\n };\n\n authorizedAxios(\"POST\", `/services/gps/Print/SendToPdfLambda`, {}, data)\n .then((response: any) => {\n resolve(response.data);\n })\n .catch((error: AxiosError) => {\n reject(error);\n });\n });\n }\n}\n","export enum DigitalShareSectionEnum {\n HH_CHARACTERISTICS = \"Household Characteristics\",\n HH_COMPOSITION = \"Household Composition\",\n TRADE_AREA = \"Trade Area\",\n VOLUME = \"Volume\",\n VISITOR_BEHAVIORS = \"Visitor Behaviors\",\n IMAGE_GALLERY = \"Image Gallery\",\n LOCATIONS_ANALYZED = \"Locations Analyzed\",\n KEY_METRICS = \"Key Metrics\",\n PSYCHOGRAPHIC_PROFILE = \"Psychographic Profile\",\n BRAND_COMPARISON = \"Brand Comparison\",\n}\n","import styled from \"styled-components\";\n\nexport const Sidebar = styled(\"div\")`\n display: flex;\n flex-direction: column;\n width: 310px;\n`;\n\nexport const SidebarTitle = styled(\"div\")`\n height: 46px;\n margin: 0 0 9px;\n font-size: 21px;\n font-stretch: normal;\n font-style: normal;\n font-weight: 900;\n line-height: 1.1;\n letter-spacing: normal;\n text-align: center;\n color: #2e3d49;\n`;\n\nexport const SidebarMoreInfo = styled(\"div\")`\n height: 15px;\n margin-bottom: 9px;\n font-family: Manrope;\n font-size: 11px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n text-align: center;\n color: #2e3d49;\n`;\n\nexport const SidebarSupp = styled(\"div\")`\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: start;\n flex: 3;\n padding: 15px;\n border-radius: 3px;\n border: solid 1px #e4e4e4;\n background-color: #ffffff;\n`;\n\nexport const SupText = styled(\"div\")`\n display: flex;\n align-items: center;\n justify-content: space-around;\n margin-bottom: 18px;\n font-size: 13px;\n font-weight: bold;\n`;\n\nexport const PolygonComparison = styled(\"div\")`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const PolygonComparisonDates = styled(\"div\")`\n display: flex;\n flex-direction: column;\n align-items: start;\n justify-content: space-around;\n height: 44px;\n`;\n","import styled from \"styled-components\";\n\nexport const Sidebar = styled(\"div\")`\n display: flex;\n flex-direction: column;\n width: 310px;\n`;\n\nexport const SidebarTitle = styled(\"div\")`\n height: 46px;\n margin: 0 0 9px;\n font-size: 21px;\n font-weight: 600;\n line-height: 1.1;\n letter-spacing: normal;\n text-align: center;\n color: #2e3d49;\n`;\n\nexport const SidebarMoreInfo = styled(\"div\")`\n height: 15px;\n margin-bottom: 9px;\n font-family: Manrope;\n font-size: 11px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n text-align: center;\n color: #2e3d49;\n`;\n\ninterface ISidebarSupp {\n isSiteDetails?: boolean;\n}\n\nexport const SidebarSupp = styled(\"div\")`\n display: flex;\n flex-direction: column;\n line-height: 23px;\n padding: 0px;\n flex-grow: 1;\n min-height: 340px;\n\n ${(props: ISidebarSupp) =>\n !props.isSiteDetails\n && ` \n align-items: start; \n padding: 0px 15px;\n border-radius: 3px; \n background-color: #ffffff;\n`}\n`;\n\nexport const SupText = styled(\"div\")`\n display: flex;\n align-items: center;\n justify-content: space-around;\n margin-bottom: 18px;\n font-size: 13px;\n font-weight: bold;\n`;\n","import JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\n\nexport interface ImageFile {\n name: string;\n dataUrl: string;\n}\n\nexport const zipImages = (filesToBeZipped: ImageFile[]) => {\n const zip = new JSZip();\n\n for (let s = 0; s < filesToBeZipped.length; s++) {\n const base64 = filesToBeZipped[s].dataUrl.replace(\n \"data:image/png;base64,\",\n \"\"\n );\n zip.file(filesToBeZipped[s].name, base64, { base64: true });\n }\n\n return new Promise((resolve, reject) => {\n zip\n .generateAsync({ type: \"blob\" })\n .then((content) => {\n resolve(content);\n })\n .catch((reason: any) => {\n reject(reason);\n });\n });\n};\n\nexport const downloadFile = (filename: string, content: Blob) => {\n saveAs(content, filename);\n};\n\nexport const zipAndDownloadImages = (\n filename: string,\n filesToBeZipped: ImageFile[]\n) => {\n return new Promise((resolve, reject) => {\n zipImages(filesToBeZipped)\n .then((content: Blob) => {\n downloadFile(filename, content);\n resolve();\n })\n .catch((reason: any) => {\n reject(reason);\n });\n });\n};\n","import React, { useEffect, FunctionComponent, useState } from \"react\";\nimport { IDigitalShareItem } from \"../../../../Models/IDigitalShareItem\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport {\n Backdrop,\n CloseButton,\n Dialog,\n Footer,\n Header,\n MainContent,\n Title,\n TrainingContainer,\n TrainingDescription,\n TrainingHeaderText,\n TrainingOption,\n TrainingVideoContainer,\n} from \"./DialogueStyles\";\n\nimport { Button } from \"../../Button/Button\";\nimport { FiArrowRight } from \"@react-icons/all-files/fi/FiArrowRight\";\nimport { FiArrowLeft } from \"@react-icons/all-files/fi/FiArrowLeft\";\nimport { TextButton } from \"../../Button/TextButton\";\nimport { DialogueOutputs } from \"./DialogueOutputs\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { IRootReducer } from \"../../../../Models/IRootReducer\";\nimport { setDialogTrainingState } from \"../../../../Actions/DigitalShareActions\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\n\nexport enum DialogTrainingState {\n LoopNet,\n Crexi,\n None,\n}\n\nexport interface IDigitalShareDialogProps {\n onClose: () => void;\n onSubmit: (outputs: DigitalShareItemType[]) => void;\n outputs: IDigitalShareItem[];\n app: DigitalShareAppType;\n}\n\nconst LOOP_NET_VIDEO_URL\n = \"/Images/Match/Videos/BUX%20-%20LoopNet%20In%20App%20v3.mp4\";\nconst LOOP_NET_PDF_URL = \"/Images/buxton-platform-share-v2.pdf\";\nconst LOOP_NET_VIDEO_DESCRIPTION\n = \"Set your property apart from the competition by adding these insights to CoStar, LoopNet, Crexi, and other listing sites. Watch the video or read the PDF instructions to learn how.\";\n\nconst DigitalShareDialog: FunctionComponent = (\n props: IDigitalShareDialogProps\n) => {\n const [outputs, setOutputs] = useState([]);\n const [trainingRendered, setTrainingRendered] = useState(true);\n const [outputSections, setOutputSections] = useState([]);\n\n const trainingState = useSelector(\n (root: IRootReducer): DialogTrainingState => {\n return root.digitalShare.dialogTrainingState;\n },\n shallowEqual\n );\n\n const dispatch = useDispatch();\n useEffect(() => {\n const sections: Set = new Set(\n Array.from(props.outputs, (o) => o.sectionTitle)\n );\n\n setOutputSections(Array.from(sections));\n setOutputs(props.outputs);\n }, []);\n\n const onLoopnetClick = () => {\n dispatch(setDialogTrainingState(DialogTrainingState.LoopNet));\n };\n\n const onCrexiClick = () => {\n dispatch(setDialogTrainingState(DialogTrainingState.Crexi));\n };\n\n return (\n <>\n \n \n
    \n Export Sections to Share\n props.onClose()}>X\n
    \n \n {trainingRendered && (\n \n
    \n \n \n \n \n {trainingRendered ? (\n setTrainingRendered(false)}\n />\n ) : (\n setTrainingRendered(true)}\n />\n )}\n
    \n {trainingState === DialogTrainingState.LoopNet && (\n <>\n \n \n \n \n
    \n Sharing on Loopnet\n
    \n {LOOP_NET_VIDEO_DESCRIPTION}\n \n \n \n
    \n \n )}\n\n {trainingState === DialogTrainingState.Crexi && (\n <>\n \n \n \n \n
    \n Sharing on Crexi\n
    \n {LOOP_NET_VIDEO_DESCRIPTION}\n \n \n \n
    \n \n )}\n
    \n )}\n {trainingRendered && (\n \n )}\n {!trainingRendered && (\n \n )}\n
    \n
    \n props.onClose()}\n />\n o.isSelected).length === 0}\n clickCallback={(e: any) => {\n e.stopPropagation();\n e.preventDefault();\n const selected = outputs\n .filter((o, i) => o.isSelected)\n .map((o) => o.type);\n props.onSubmit(selected);\n }}\n />\n
    \n
    \n \n );\n};\n\nexport default React.memo(DigitalShareDialog);\n","import React from \"react\";\nimport { FiArrowRight } from \"@react-icons/all-files/fi/FiArrowRight\";\nimport {\n Header,\n OutputCheckbox,\n OutputCheckboxSelectAll,\n OutputContainer,\n OutputContent,\n OutputThumbnail,\n OutputTile,\n SelectAll,\n ThumbnailContainer,\n} from \"./DialogueStyles\";\nimport { IDigitalShareItem } from \"../../../../Models/IDigitalShareItem\";\n\ninterface DialogueOutputsProps {\n onOutputsChanged: (outputs: IDigitalShareItem[]) => void;\n outputs: IDigitalShareItem[];\n outputSections: string[];\n isTrainingRendered: boolean;\n onSetTrainingState?: (isTrainingRendered: boolean) => void;\n}\n\nconst toggleItem = (\n index: number,\n outputs: IDigitalShareItem[],\n onOutputsChanged: (outputs: IDigitalShareItem[]) => void\n): void => {\n const newArray: IDigitalShareItem[] = outputs.splice(0);\n newArray[index].isSelected = !newArray[index].isSelected;\n\n onOutputsChanged(newArray);\n};\n\nconst toggleAllItems = (\n outputs: IDigitalShareItem[],\n onOutputsChanged: (outputs: IDigitalShareItem[]) => void\n): void => {\n const allChecked: boolean\n = outputs.filter((o) => o.isSelected === true).length === outputs.length;\n const newArray: IDigitalShareItem[] = outputs.splice(0);\n\n if (allChecked) {\n newArray.forEach((o) => (o.isSelected = false));\n } else {\n newArray.forEach((o) => (o.isSelected = true));\n }\n\n onOutputsChanged(newArray);\n};\n\n/*\n get corresponding section items.\n set their selected status.\n merge them back into outputs.\n */\nconst toggleAllSectionItems = (\n section: string,\n outputs: IDigitalShareItem[],\n onOutputsChanged: (outputs: IDigitalShareItem[]) => void\n): void => {\n const newArray: IDigitalShareItem[] = outputs.splice(0);\n const sectionItems: IDigitalShareItem[] = [];\n const indexes: number[] = [];\n\n for (let i = 0; i < newArray.length; i++) {\n const output = newArray[i];\n if (output.sectionTitle === section) {\n indexes.push(i);\n sectionItems.push(output);\n }\n }\n\n const allChecked: boolean\n = sectionItems.filter((o) => o.isSelected === true).length\n === sectionItems.length;\n\n if (allChecked) {\n sectionItems.forEach((o) => (o.isSelected = false));\n } else {\n sectionItems.forEach((o) => (o.isSelected = true));\n }\n\n sectionItems.forEach((o, i) => (newArray[indexes[i]] = o));\n\n onOutputsChanged(newArray);\n};\n\nconst getSectionChecked = (\n section: string,\n outputs: IDigitalShareItem[]\n): boolean => {\n const sectionItems = outputs.filter((o) => o.sectionTitle === section);\n const checked = sectionItems.filter((o) => o.isSelected === true).length;\n\n return sectionItems.length === checked;\n};\n\nexport const DialogueOutputs = ({\n onOutputsChanged,\n onSetTrainingState,\n outputs,\n outputSections,\n isTrainingRendered,\n}: DialogueOutputsProps) => {\n return (\n \n \n \n {!isTrainingRendered && (\n \n onSetTrainingState(true)}\n />\n \n )}\n Select Sections\n \n \n toggleAllItems(outputs, onOutputsChanged)}\n checked={\n outputs.filter((o) => o.isSelected === true).length\n === outputs.length\n }\n style={{ position: \"relative\", top: \"0px\" }}\n />\n Select All\n \n \n {outputSections.map((section, i) => {\n const sectionChecked = getSectionChecked(section, outputs);\n return (\n \n {i !== 0 ? (\n \n {section}\n \n \n toggleAllSectionItems(section, outputs, onOutputsChanged)\n }\n checked={sectionChecked}\n style={{ position: \"relative\", top: \"0px\" }}\n />\n Select All\n \n \n ) : null}\n \n {outputs.map((o, i) => {\n if (o.sectionTitle === section) {\n return (\n \n
    \n {o.itemTitle}\n
    \n \n \n toggleItem(i, outputs, onOutputsChanged)\n }\n data-testclass={\n \"digital-share-dialog-output-thumbnail\"\n }\n src={o.imgUrl}\n />\n \n toggleItem(i, outputs, onOutputsChanged)\n }\n checked={o.isSelected}\n />\n \n \n );\n }\n })}\n \n
    \n );\n })}\n
    \n );\n};\n","import { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/Enums\";\nimport { clamp } from \"../../../../Util/DataUtil\";\nimport { TemplateImageGeneratorProgressStep } from \"../../../../Util/TemplateImageGenerator\";\n\nconst INITIALIZATION_DURATION_SECONDS = 1;\nconst GOOGLE_MAP_WAIT_DURATION_SECONDS = 7.5;\nconst GOOGLE_MAP_RENDER_DURATION_SECONDS = 7.5;\nconst OUTPUT_RENDER_DURATION_SECONDS = 2.5;\nconst ZIP_DURATION_SECONDS = 2;\nconst BUILD_PDF_PER_OUTPUT_DURATION_SECONDS = 1.14;\nconst BUILD_PDF_OVERHEAD_DURATION_SECONDS = 1.14;\n\n/* Calculations for Build PDF duration\n Mobilytics: 24 sec, 20 outputs\n Match: 16 sec, 13 outputs\n\n output is probably constant between apps\n output: x\n server send/receive/PDF overhead: y\n\n 20x + y = 24\n 13x + y = 16\n y = 16 - 13x\n 20x + 16 - 13x = 24\n 7x = 8\n x = 8/7\n y = 16 - 13*8/7\n x = 1.14\n y = 16 - 14.86\n y = 1.14\n*/\n\nexport enum ExtraProgressStep {\n Initializing = \"Initializing\",\n Zipping = \"Zipping\",\n BuildingPDF = \"BuildingPDF\",\n DownloadComplete = \"DownloadComplete\",\n}\n\nexport interface IDigitalShareProgress {\n succeeded: number;\n failed: number;\n total: number;\n}\n\nexport type DigitalShareProgressStep =\n | TemplateImageGeneratorProgressStep\n | ExtraProgressStep;\n\nexport const getProgressDisplayDetails = (\n selectedOutputs: DigitalShareItemType[],\n progressStep: DigitalShareProgressStep,\n generationProgress: IDigitalShareProgress,\n renderType: RenderType\n): { text: string; percentComplete: number } => {\n let googleMaps = 0;\n const outputs = selectedOutputs.length;\n for (const o of selectedOutputs) {\n // if (o === DigitalShareItemType.VisitorMap) {\n\n // }\n\n switch (o) {\n case DigitalShareItemType.VisitorMap:\n ++googleMaps;\n case DigitalShareItemType.FrequentlyVisitedPlacesMap:\n ++googleMaps;\n case DigitalShareItemType.BrandComparison:\n ++googleMaps;\n\n default:\n break;\n }\n }\n\n let endPhase = 0;\n if (renderType === RenderType.DIGITAL_SHARE) {\n endPhase = ZIP_DURATION_SECONDS;\n } else {\n endPhase\n = BUILD_PDF_OVERHEAD_DURATION_SECONDS\n + outputs * BUILD_PDF_PER_OUTPUT_DURATION_SECONDS;\n }\n\n const total\n = INITIALIZATION_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_WAIT_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_RENDER_DURATION_SECONDS\n + outputs * OUTPUT_RENDER_DURATION_SECONDS\n + endPhase;\n\n let complete = 0;\n let percentComplete = 0;\n\n let text = \"Initializing...\";\n if (googleMaps > 1) {\n text = \"Taking snapshot of maps...\";\n } else if (googleMaps === 1) {\n text = \"Taking snapshot of map...\";\n complete = INITIALIZATION_DURATION_SECONDS;\n }\n\n if (\n progressStep === TemplateImageGeneratorProgressStep.WaitingForComponents\n ) {\n text = \"Waiting for components...\";\n complete\n = INITIALIZATION_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_WAIT_DURATION_SECONDS;\n } else if (\n progressStep === TemplateImageGeneratorProgressStep.RenderingOutputs\n ) {\n complete\n = INITIALIZATION_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_WAIT_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_RENDER_DURATION_SECONDS\n + (generationProgress.succeeded - googleMaps)\n * OUTPUT_RENDER_DURATION_SECONDS;\n\n const failedMessage = generationProgress.failed\n ? `(${generationProgress.failed} failed)`\n : \"\";\n text = `Creating output for ${Math.min(\n generationProgress.succeeded + 1,\n generationProgress.total\n )} of ${generationProgress.total} ${failedMessage}`;\n } else if (progressStep === ExtraProgressStep.Zipping) {\n text = \"Zipping...\";\n complete\n = INITIALIZATION_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_WAIT_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_RENDER_DURATION_SECONDS\n + (generationProgress.succeeded - googleMaps)\n * OUTPUT_RENDER_DURATION_SECONDS;\n } else if (progressStep === ExtraProgressStep.BuildingPDF) {\n text = \"Building PDF...\";\n complete\n = INITIALIZATION_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_WAIT_DURATION_SECONDS\n + googleMaps * GOOGLE_MAP_RENDER_DURATION_SECONDS\n + (generationProgress.succeeded - googleMaps)\n * OUTPUT_RENDER_DURATION_SECONDS;\n } else if (progressStep === ExtraProgressStep.DownloadComplete) {\n text = \"Download complete!\";\n complete = total;\n }\n\n percentComplete = (complete / total) * 100.0;\n percentComplete = clamp(percentComplete, 0, 100);\n\n return {\n text,\n percentComplete,\n };\n};\n","export const clamp = (val: number, min: number, max: number) => {\n return Math.min(max, Math.max(min, val));\n};\n","import React, { FunctionComponent } from \"react\";\nimport { DigitalShareAppType } from \"../../../Enums/Enums\";\nimport {\n ProgressBarBorder,\n ProgressBarCaption,\n ProgressScreenRightSection,\n ProgressBarProgress,\n ProgressBarTrack,\n ProgressScreenBackdrop,\n ProgressScreenContainer,\n ProgressBarContainer,\n ProgressBarPercentCaption,\n ProgressScreenTagline,\n ProgressScreenRightSectionContainer,\n ProgressScreenBackground,\n ProgressScreenContent,\n} from \"./DigitalShareCommonStyles\";\n\nexport interface IProgressScreenProps {\n app: DigitalShareAppType;\n percentComplete: number;\n text: string;\n downloaded: boolean;\n onClose: () => void;\n}\n\nexport const ProgressScreen: FunctionComponent = (\n props: IProgressScreenProps\n) => {\n const taglineUrl\n = props.app === DigitalShareAppType.RetailMatch\n ? \"/Images/Digital Share/ProgressScreen/Logo_Tagline.svg\"\n : \"/Images/Digital Share/ProgressScreen/Mobilytics_Logo_Tagline.svg\";\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n {props.percentComplete.toFixed(0)}%\n \n \n \n \n \n \n \n {props.text}\n \n {props.downloaded && (\n \n )}\n \n \n \n \n \n );\n};\n","import React, { FunctionComponent, useRef } from \"react\";\nimport {\n CircleOuterWrap,\n CircleInnerWrap,\n CentralPercent,\n CircleLeft,\n CircleRight,\n PercentLineTotal,\n PercentLine,\n PercentCounterCircle,\n PercentText,\n LineIndicator,\n LocationName,\n} from \"../ChartStyles/VennChart\";\nimport { ChartDots, ChartDotsWrap, ChartDot, shortenStr } from \"../../Common/\";\nimport {\n colorTwoDark,\n colorTwoBright,\n} from \"../../../globalStyles/colors/scoutColors\";\nimport { IVennChart } from \"../../../Models/Models\";\n\nexport const VennChart: FunctionComponent = (props: IVennChart) => {\n const {\n percent1,\n percent2,\n centralPercent,\n centralIcon,\n location1Name,\n location2Name,\n isActive,\n } = props;\n const mobileDiams = {\n initial: 400,\n expanded: 450,\n };\n const desktopDiams = {\n initial: 450,\n expanded: 510,\n };\n const maxStrLen = 75;\n\n const breakWord = (str: string): string => {\n const regex = /(,(?=\\S)|:)/g; // ERY: Finds a comma without a space after it. So far, seems to be the most common occurrence for a long string.\n const subst = `, `;\n const result = str.replace(regex, subst);\n return shortenStr(result, maxStrLen);\n };\n\n const Chart = (\n <>\n \n \n {centralIcon}\n {Math.round(centralPercent * 100)}%\n \n \n \n \n
    \n \n {Math.round(percent1 * 100)}%\n
    \n \n {breakWord(location1Name)}\n
    Customers
    \n
    \n \n \n \n \n \n
    \n \n {Math.round(percent2 * 100)}%\n
    \n \n {breakWord(location2Name)}\n
    Customers
    \n
    \n \n
    \n \n \n \n \n {shortenStr(location1Name, maxStrLen)}\n \n \n {shortenStr(location2Name, maxStrLen)}\n \n \n \n \n );\n\n return Chart;\n};\n","import styled from \"styled-components\";\nimport { IVennCircle, IVennCircleWrapper } from \"../../../Models/Models\";\nimport { device } from \"../../../globalStyles/breakpoints\";\n\nconst percentLineWidth = 12;\nconst percentLineTotalWidth = 2;\nconst percentLineShaveOffPercent = 0.25;\nconst lineIndicatorWidth = 40;\nconst valueTextOffset = lineIndicatorWidth;\nconst transitionTime = 0.5;\nconst transitionDelay = 0.3;\nconst lineIndicatorHeight = 1;\nconst percentTextFontSize = 21;\nconst centralPercentTextFontSizeMobile = 21;\nconst centralPercentTextFontSizeDesktop = 28;\nconst locationNameLRPosition = 20;\nconst locationNameMobileFontSize = 17;\nconst locationNameDesktopFontSize = 21;\n\n// ██████╗ █████╗ ██╗ ██████╗███████╗\n// ██╔════╝██╔══██╗██║ ██╔════╝██╔════╝\n// ██║ ███████║██║ ██║ ███████╗\n// ██║ ██╔══██║██║ ██║ ╚════██║\n// ╚██████╗██║ ██║███████╗╚██████╗███████║\n// ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚══════╝\n\nconst calcCircleRadius = (circleDiam: number): number => {\n return circleDiam / 2;\n};\n\nconst calcCircleOffsetIncrease = (\n increasedCircleWidth: number,\n borderWidth: number,\n circleDiam: number\n): number => {\n const increasedOffset = (increasedCircleWidth - circleDiam) / 2 + borderWidth;\n return calcCircleOffset(circleDiam) - increasedOffset;\n};\n\nconst calcCircleRadiusIncrease = (\n increasedCircleWidth: number,\n circleDiam: number\n): number => {\n return (increasedCircleWidth - circleDiam) / 2;\n};\n\nconst calcCircleWidth = (circleDiam: number, borderWidth: number): number => {\n return circleDiam + 2 * borderWidth;\n};\n\nconst calcLineIndicatorUpperBound = (circDiam: number) => {\n return (\n circDiam\n + 2 * lineIndicatorWidth\n - calcClipPathTop(circDiam, lineIndicatorWidth)\n );\n};\n\nconst topLineIndicatorClipPath = (\n percent: number,\n circDiam: number\n): number => {\n const lineIndicatorUpB = calcLineIndicatorUpperBound(circDiam);\n const totalLineIndDiff\n = lineIndicatorUpB\n - calcClipPathTop(circDiam, lineIndicatorWidth - percentLineTotalWidth);\n const lineIndicatorPercent = percent * totalLineIndDiff;\n return lineIndicatorUpB - lineIndicatorPercent;\n};\n\nconst bottomLineIndicatorClipPath = (\n percent: number,\n circleDiam: number\n): number => {\n const lineIndicatorUpB = calcLineIndicatorUpperBound(circleDiam);\n const totalLineIndDiff\n = lineIndicatorUpB\n - calcClipPathTop(circleDiam, lineIndicatorWidth - percentLineTotalWidth);\n const lineIndicatorPercent = percent * totalLineIndDiff;\n return (\n calcClipPathTop(circleDiam, lineIndicatorWidth)\n + lineIndicatorPercent\n - lineIndicatorHeight\n );\n};\n\nconst topPercentLine = (percent: number, circleDiam: number): number => {\n const totalPercentLineDiff\n = calcPercentLineZero(circleDiam) - calcPercentLine100(circleDiam);\n const percentTopLinePercent = percent * totalPercentLineDiff;\n return (\n calcPercentLineZero(circleDiam)\n - percentTopLinePercent\n + (1 - percent) * percentLineWidth\n - percent * percentLineTotalWidth\n ); // <-- this last little calculation is a bit arbitrary, but there's something missing in the space between the line indicator and percent line in higher percentages.\n};\n\nconst calcShaveOff = (circleDiam: number): number => {\n return percentLineShaveOffPercent * calcCircleRadius(circleDiam);\n};\n\nconst calcPercentText100 = (circleDiam: number): number => {\n const textOffset = percentTextFontSize / 2;\n return calcShaveOff(circleDiam) - textOffset;\n};\n\nconst calcPercentTextZero = (circleDiam: number): number => {\n const textOffset = percentTextFontSize / 2;\n return circleDiam - calcShaveOff(circleDiam) - textOffset;\n};\n\nconst percentTextPadding = (percent: number, circleDiam: number): number => {\n const totalPercentTextDiff\n = calcPercentTextZero(circleDiam) - calcPercentText100(circleDiam);\n const percentTextPercent = (1 - percent) * totalPercentTextDiff;\n return calcPercentText100(circleDiam) + percentTextPercent;\n};\n\nconst calcClipPathTop = (circleDiam: number, lineWidth: number): number => {\n return lineWidth + calcShaveOff(circleDiam); // Shave off 20% of the circle's radius and add the percentLine width.\n};\n\nconst calcPercentLineZero = (circleDiam: number): number => {\n return circleDiam - calcShaveOff(circleDiam);\n};\n\nconst calcPercentLine100 = (circleDiam: number): number => {\n return calcShaveOff(circleDiam) + percentLineWidth;\n};\n\nconst calcPercentLineTotalClipPath = (circleDiam: number): number => {\n const diffPercentAndPercentTotalWidth\n = percentLineWidth - percentLineTotalWidth;\n return (\n calcClipPathTop(circleDiam, percentLineWidth)\n - diffPercentAndPercentTotalWidth\n );\n};\n\nconst calcRadiusStartPointForCounterCircle = (\n circleDiam: number,\n side: \"left\" | \"right\"\n): number => {\n let startPoint = (circleDiam - calcCircleOffset(circleDiam)) / 2; // so, the offset is 2/3, I want the leftover (1/3) then divided by 2 because one will be negative, the other positive, making up the 2 halves.\n if (side === \"left\") {\n startPoint += circleDiam;\n } else {\n startPoint = -startPoint;\n }\n return startPoint;\n};\n\nconst calcCircleOffset = (circleDiam: number): number => {\n return (2 * circleDiam) / 3; // offset, currently, is 2/3rds.\n};\n\n// ███████╗ ██████╗███████╗███████╗\n// ██╔════╝██╔════╝██╔════╝██╔════╝\n// ███████╗██║ ███████╗███████╗\n// ╚════██║██║ ╚════██║╚════██║\n// ███████║╚██████╗███████║███████║\n// ╚══════╝ ╚═════╝╚══════╝╚══════╝\n\nexport const PercentText = styled.div`\n opacity: 0;\n font-size: ${percentTextFontSize}px;\n transition: opacity ${transitionTime}s;\n`;\n\nexport const CentralPercent = styled.div`\n font-size: ${centralPercentTextFontSizeMobile}px;\n font-weight: 800;\n opacity: 0;\n transition: opacity ${transitionTime}s, top ${transitionTime}s;\n transition-delay: ${transitionDelay}s;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 6;\n margin: 0 auto;\n text-align: center;\n transform: translate(\n 0,\n calc(50% - ${centralPercentTextFontSizeMobile / 2}px)\n );\n ${device.tabletL} {\n font-size: ${centralPercentTextFontSizeDesktop}px;\n transform: translate(\n 0,\n calc(50% - ${centralPercentTextFontSizeDesktop / 2}px)\n );\n }\n`;\n\nexport const CircleInnerWrap = styled.div`\n position: relative;\n margin: 0 auto;\n > svg {\n color: black;\n position: absolute;\n bottom: 0;\n transition: opacity ${transitionTime}s, top ${transitionTime}s;\n opacity: 0;\n transition-delay: ${transitionDelay}s;\n }\n &.active {\n > svg {\n opacity: 1;\n }\n ${CentralPercent} {\n top: 0;\n opacity: 1;\n }\n }\n`;\n\nexport const CircleOuterWrap = styled.div`\n height: ${(props: IVennCircleWrapper) => props.mobileInitDiam}px;\n width: 100%;\n color: white;\n overflow: hidden;\n ${CircleInnerWrap} {\n height: ${(props: IVennCircleWrapper) => props.mobileInitDiam}px;\n width: ${(props: IVennCircleWrapper) =>\n calcCircleOffset(props.mobileInitDiam) + props.mobileInitDiam}px;\n > svg {\n width: ${(props: IVennCircleWrapper) => props.mobileInitDiam / 2}px;\n height: ${(props: IVennCircleWrapper) => props.mobileInitDiam / 2}px;\n top: ${(props: IVennCircleWrapper) => props.mobileInitDiam / 10}px;\n left: ${(props: IVennCircleWrapper) =>\n props.mobileInitDiam / 12 + props.mobileInitDiam / 2}px;\n }\n &.active {\n > svg {\n top: ${(props: IVennCircleWrapper) => props.mobileInitDiam / 4}px;\n }\n }\n }\n ${CentralPercent} {\n top: ${(props: IVennCircleWrapper) => props.mobileInitDiam / 2}px;\n }\n ${device.tabletL} {\n height: ${(props: IVennCircleWrapper) => props.desktopInitDiam}px;\n ${CircleInnerWrap} {\n height: ${(props: IVennCircleWrapper) => props.desktopInitDiam}px;\n width: ${(props: IVennCircleWrapper) =>\n calcCircleOffset(props.desktopInitDiam) + props.desktopInitDiam}px;\n > svg {\n width: ${(props: IVennCircleWrapper) => props.desktopInitDiam / 2}px;\n height: ${(props: IVennCircleWrapper) => props.desktopInitDiam / 2}px;\n top: ${(props: IVennCircleWrapper) => props.desktopInitDiam / 10}px;\n left: ${(props: IVennCircleWrapper) =>\n props.desktopInitDiam / 12 + props.desktopInitDiam / 2}px;\n }\n &.active {\n > svg {\n top: ${(props: IVennCircleWrapper) => props.desktopInitDiam / 4}px;\n }\n }\n }\n ${CentralPercent} {\n top: ${(props: IVennCircleWrapper) => props.desktopInitDiam / 2}px;\n }\n }\n`;\n\nexport const PercentLine = styled.div`\n transition: all ${transitionTime}s;\n border: ${percentLineWidth}px solid white;\n border-radius: 50%;\n position: absolute;\n opacity: 0;\n`;\n\nexport const PercentLineTotal = styled.div`\n transition: all ${transitionTime}s;\n border: ${percentLineTotalWidth}px solid white;\n border-radius: 50%;\n position: absolute;\n opacity: 0;\n`;\n\nexport const LineIndicator = styled.div`\n transition: all ${transitionTime}s;\n border: ${lineIndicatorWidth}px solid white;\n border-radius: 50%;\n position: absolute;\n opacity: 0;\n`;\n\nexport const PercentCounterCircle = styled.div`\n transition: all ${transitionTime}s;\n opacity: 0.5;\n`;\n\nexport const LocationName = styled.div`\n font-size: ${locationNameMobileFontSize}px;\n position: absolute;\n top: 50%;\n transform: translate(0, -50%);\n text-align: center;\n opacity: 0;\n transition: opacity ${transitionTime}s, left ${transitionTime}s,\n right ${transitionTime}s;\n font-weight: 800;\n > div {\n font-weight: 400;\n }\n ${device.tabletL} {\n font-size: ${locationNameDesktopFontSize}px;\n }\n`;\n\nconst Circle = styled.div`\n /* ${(props: IVennCircle) =>\n props.percent} */ /* ERY: don't ask. some weird bug in styled components */\n shape-outside: circle();\n clip-path: circle();\n width: ${(props: IVennCircle) => props.mobileInitDiam}px;\n height: ${(props: IVennCircle) => props.mobileInitDiam}px;\n position: absolute;\n opacity: 0.8;\n overflow: hidden;\n background-color: ${(props: IVennCircle) => props.backgroundColor};\n ${PercentText} {\n /* Powered by Data */\n padding-top: ${(props: IVennCircle) =>\n props.percent\n ? percentTextPadding(props.percent, props.mobileInitDiam)\n : calcPercentTextZero(props.mobileInitDiam)}px;\n }\n ${PercentLine} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileInitDiam, percentLineWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileInitDiam, percentLineWidth)}px;\n\n /* Powered by data */\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topPercentLine(props.percent, props.mobileInitDiam)\n : calcPercentLineZero(props.mobileInitDiam)}px\n 0px\n ${(props: IVennCircle) => calcPercentLine100(props.mobileInitDiam)}px\n );\n /* 0% indication is inset(405px 0px 68px) at full width */\n /* 100% indication is inset(68px 0 68px) at full width */\n }\n ${PercentLineTotal} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileInitDiam, percentLineTotalWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileInitDiam, percentLineTotalWidth)}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.mobileInitDiam)}px\n 0px\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.mobileInitDiam)}px\n );\n /* ERY: This does not in/decrease linearly with the \n .percent-line (they were at inset(80px 0 80px) each, \n but now they're off by 13px. I'll bet is has to do \n with circumference and probably changes at a rate \n of pi )*/\n }\n ${LineIndicator} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileInitDiam, lineIndicatorWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileInitDiam, lineIndicatorWidth)}px;\n\n /* Powered by data */\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topLineIndicatorClipPath(props.percent, props.mobileInitDiam)\n : calcLineIndicatorUpperBound(props.mobileInitDiam)}px\n 0\n ${(props: IVennCircle) =>\n props.percent\n ? bottomLineIndicatorClipPath(props.percent, props.mobileInitDiam)\n : calcClipPathTop(props.mobileInitDiam, lineIndicatorWidth)}px\n );\n /* 0% indication is inset(433px 0 96px) at full width */\n /* 100% indication is inset(96px 0 433px) at full width */\n }\n ${PercentCounterCircle} {\n width: ${(props: IVennCircle) => props.mobileInitDiam}px;\n height: ${(props: IVennCircle) => props.mobileInitDiam}px;\n }\n ${LocationName} {\n width: ${(props: IVennCircle) => (2 * props.mobileInitDiam) / 6}px;\n }\n &.active {\n ${PercentLine} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileExpDiam, percentLineWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileExpDiam, percentLineWidth)}px;\n top: ${(props: IVennCircle) =>\n (props.mobileInitDiam - props.mobileExpDiam) / 2 - percentLineWidth}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topPercentLine(props.percent, props.mobileInitDiam)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )\n : calcPercentLineZero(props.mobileInitDiam)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )}px\n 0px\n ${(props: IVennCircle) =>\n calcPercentLine100(props.mobileInitDiam)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )}px\n );\n }\n ${PercentLineTotal} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileExpDiam, percentLineTotalWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileExpDiam, percentLineTotalWidth)}px;\n top: ${(props: IVennCircle) =>\n (props.mobileInitDiam - props.mobileExpDiam) / 2\n - percentLineTotalWidth}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.mobileInitDiam)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )}px\n 0px\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.mobileInitDiam)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )}px\n );\n }\n ${LineIndicator} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileExpDiam, lineIndicatorWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.mobileExpDiam, lineIndicatorWidth)}px;\n top: ${(props: IVennCircle) =>\n (props.mobileInitDiam - props.mobileExpDiam) / 2\n - lineIndicatorWidth}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topLineIndicatorClipPath(props.percent, props.mobileInitDiam)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )\n : calcLineIndicatorUpperBound(props.mobileInitDiam)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )}px\n 0\n ${(props: IVennCircle) =>\n props.percent\n ? bottomLineIndicatorClipPath(\n props.percent,\n props.mobileInitDiam\n )\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )\n : calcClipPathTop(props.mobileInitDiam, lineIndicatorWidth)\n + calcCircleRadiusIncrease(\n props.mobileExpDiam,\n props.mobileInitDiam\n )}px\n );\n }\n ${PercentLine}, ${PercentLineTotal}, ${LineIndicator}, ${PercentCounterCircle}, ${PercentText}, ${LocationName} {\n opacity: 1;\n }\n }\n ${device.tabletL} {\n width: ${(props: IVennCircle) => props.desktopInitDiam}px;\n height: ${(props: IVennCircle) => props.desktopInitDiam}px;\n ${PercentText} {\n padding-top: ${(props: IVennCircle) =>\n props.percent\n ? percentTextPadding(props.percent, props.desktopInitDiam)\n : calcPercentTextZero(props.desktopInitDiam)}px;\n }\n ${PercentLine} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopInitDiam, percentLineWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopInitDiam, percentLineWidth)}px;\n\n /* Powered by data */\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topPercentLine(props.percent, props.desktopInitDiam)\n : calcPercentLineZero(props.desktopInitDiam)}px\n 0px\n ${(props: IVennCircle) => calcPercentLine100(props.desktopInitDiam)}px\n );\n }\n ${PercentLineTotal} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopInitDiam, percentLineTotalWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopInitDiam, percentLineTotalWidth)}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.desktopInitDiam)}px\n 0px\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.desktopInitDiam)}px\n );\n }\n ${LineIndicator} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopInitDiam, lineIndicatorWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopInitDiam, lineIndicatorWidth)}px;\n\n /* Powered by data */\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topLineIndicatorClipPath(props.percent, props.desktopInitDiam)\n : calcLineIndicatorUpperBound(props.desktopInitDiam)}px\n 0\n ${(props: IVennCircle) =>\n props.percent\n ? bottomLineIndicatorClipPath(\n props.percent,\n props.desktopInitDiam\n )\n : calcClipPathTop(props.desktopInitDiam, lineIndicatorWidth)}px\n );\n }\n ${PercentCounterCircle} {\n width: ${(props: IVennCircle) => props.desktopInitDiam}px;\n height: ${(props: IVennCircle) => props.desktopInitDiam}px;\n }\n ${LocationName} {\n width: ${(props: IVennCircle) => (2 * props.desktopInitDiam) / 6}px;\n }\n &.active {\n ${PercentLine} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopExpDiam, percentLineWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopExpDiam, percentLineWidth)}px;\n top: ${(props: IVennCircle) =>\n (props.desktopInitDiam - props.desktopExpDiam) / 2\n - percentLineWidth}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topPercentLine(props.percent, props.desktopInitDiam)\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )\n : calcPercentLineZero(props.desktopInitDiam)\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )}px\n 0px\n ${(props: IVennCircle) =>\n calcPercentLine100(props.desktopInitDiam)\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )}px\n );\n }\n ${PercentLineTotal} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopExpDiam, percentLineTotalWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopExpDiam, percentLineTotalWidth)}px;\n top: ${(props: IVennCircle) =>\n (props.desktopInitDiam - props.desktopExpDiam) / 2\n - percentLineTotalWidth}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.desktopInitDiam)\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )}px\n 0px\n ${(props: IVennCircle) =>\n calcPercentLineTotalClipPath(props.desktopInitDiam)\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )}px\n );\n }\n ${LineIndicator} {\n width: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopExpDiam, lineIndicatorWidth)}px;\n height: ${(props: IVennCircle) =>\n calcCircleWidth(props.desktopExpDiam, lineIndicatorWidth)}px;\n top: ${(props: IVennCircle) =>\n (props.desktopInitDiam - props.desktopExpDiam) / 2\n - lineIndicatorWidth}px;\n clip-path: inset(\n ${(props: IVennCircle) =>\n props.percent\n ? topLineIndicatorClipPath(\n props.percent,\n props.desktopInitDiam\n )\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )\n : calcLineIndicatorUpperBound(props.desktopInitDiam)\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )}px\n 0\n ${(props: IVennCircle) =>\n props.percent\n ? bottomLineIndicatorClipPath(\n props.percent,\n props.desktopInitDiam\n )\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )\n : calcClipPathTop(props.desktopInitDiam, lineIndicatorWidth)\n + calcCircleRadiusIncrease(\n props.desktopExpDiam,\n props.desktopInitDiam\n )}px\n );\n }\n }\n }\n`;\n\nexport const CircleLeft = styled(Circle)`\n /* ${(props: IVennCircle) =>\n props.percent} */ /* ERY: don't ask. some weird bug in styled components */\n ${PercentLine} {\n left: ${(props: IVennCircle) =>\n calcCircleOffset(props.mobileInitDiam) - percentLineWidth}px;\n top: -${percentLineWidth}px;\n }\n ${PercentLineTotal} {\n left: ${(props: IVennCircle) =>\n calcCircleOffset(props.mobileInitDiam) - percentLineTotalWidth}px;\n top: -${percentLineTotalWidth}px;\n }\n ${LineIndicator} {\n left: ${(props: IVennCircle) =>\n calcCircleOffset(props.mobileInitDiam) - lineIndicatorWidth}px;\n top: -${lineIndicatorWidth}px;\n }\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(props.mobileInitDiam, \"left\")}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(props.mobileInitDiam, \"left\")}px\n );\n float: right;\n }\n ${PercentText} {\n text-align: right;\n }\n ${LocationName} {\n left: 0px;\n text-align: left;\n }\n &.active {\n ${PercentLine} {\n left: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.mobileExpDiam,\n percentLineWidth,\n props.mobileInitDiam\n )}px;\n }\n ${PercentLineTotal} {\n left: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.mobileExpDiam,\n percentLineTotalWidth,\n props.mobileInitDiam\n )}px;\n }\n ${LineIndicator} {\n left: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.mobileExpDiam,\n lineIndicatorWidth,\n props.mobileInitDiam\n )}px;\n }\n\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.mobileInitDiam,\n \"left\"\n )}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.mobileInitDiam,\n \"left\"\n )}px\n );\n }\n ${LocationName} {\n left: ${locationNameLRPosition}px;\n }\n }\n\n ${device.tabletL} {\n ${PercentLine} {\n left: ${(props: IVennCircle) =>\n calcCircleOffset(props.desktopInitDiam) - percentLineWidth}px;\n }\n ${PercentLineTotal} {\n left: ${(props: IVennCircle) =>\n calcCircleOffset(props.desktopInitDiam) - percentLineTotalWidth}px;\n }\n ${LineIndicator} {\n left: ${(props: IVennCircle) =>\n calcCircleOffset(props.desktopInitDiam) - lineIndicatorWidth}px;\n }\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"left\"\n )}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"left\"\n )}px\n );\n }\n &.active {\n ${PercentLine} {\n left: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.desktopExpDiam,\n percentLineWidth,\n props.desktopInitDiam\n )}px;\n }\n ${PercentLineTotal} {\n left: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.desktopExpDiam,\n percentLineTotalWidth,\n props.desktopInitDiam\n )}px;\n }\n ${LineIndicator} {\n left: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.desktopExpDiam,\n lineIndicatorWidth,\n props.desktopInitDiam\n )}px;\n }\n\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"left\"\n )}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"left\"\n )}px\n );\n }\n }\n }\n`;\n\nexport const CircleRight = styled(Circle)`\n /* ${(props: IVennCircle) => props.percent} */\n left: ${(props: IVennCircle) => calcCircleOffset(props.mobileInitDiam)}px;\n ${PercentLine} {\n right: ${(props: IVennCircle) =>\n calcCircleOffset(props.mobileInitDiam) - percentLineWidth}px;\n top: -${percentLineWidth}px;\n transition-delay: ${transitionDelay * 2}s;\n }\n ${PercentLineTotal} {\n right: ${(props: IVennCircle) =>\n calcCircleOffset(props.mobileInitDiam) - percentLineTotalWidth}px;\n top: -${percentLineTotalWidth}px;\n transition-delay: ${transitionDelay * 2}s;\n }\n ${LineIndicator} {\n right: ${(props: IVennCircle) =>\n calcCircleOffset(props.mobileInitDiam) - lineIndicatorWidth}px;\n top: -${lineIndicatorWidth}px;\n transition-delay: ${transitionDelay * 2}s;\n }\n /* ERY: Need to change the offset to the center of the circle to match the center of the circle parent (curve and all that) */\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(props.mobileInitDiam, \"right\")}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(props.mobileInitDiam, \"right\")}px\n );\n float: left;\n transition-delay: ${transitionDelay * 2}s;\n }\n ${PercentText} {\n transition-delay: ${transitionDelay * 2}s;\n }\n ${LocationName} {\n right: 0px;\n text-align: right;\n transition-delay: ${transitionDelay * 2}s;\n }\n &.active {\n ${PercentLine} {\n right: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.mobileExpDiam,\n percentLineWidth,\n props.mobileInitDiam\n )}px;\n }\n ${PercentLineTotal} {\n right: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.mobileExpDiam,\n percentLineTotalWidth,\n props.mobileInitDiam\n )}px;\n }\n ${LineIndicator} {\n right: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.mobileExpDiam,\n lineIndicatorWidth,\n props.mobileInitDiam\n )}px;\n }\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.mobileInitDiam,\n \"right\"\n )}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.mobileExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.mobileInitDiam,\n \"right\"\n )}px\n );\n }\n ${LocationName} {\n right: ${locationNameLRPosition}px;\n }\n }\n ${device.tabletL} {\n left: ${(props: IVennCircle) => calcCircleOffset(props.desktopInitDiam)}px;\n ${PercentLine} {\n right: ${(props: IVennCircle) =>\n calcCircleOffset(props.desktopInitDiam) - percentLineWidth}px;\n top: -${percentLineWidth}px;\n }\n ${PercentLineTotal} {\n right: ${(props: IVennCircle) =>\n calcCircleOffset(props.desktopInitDiam) - percentLineTotalWidth}px;\n top: -${percentLineTotalWidth}px;\n }\n ${LineIndicator} {\n right: ${(props: IVennCircle) =>\n calcCircleOffset(props.desktopInitDiam) - lineIndicatorWidth}px;\n top: -${lineIndicatorWidth}px;\n }\n /* ERY: Need to change the offset to the center of the circle to match the center of the circle parent (curve and all that) */\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"right\"\n )}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopInitDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"right\"\n )}px\n );\n }\n &.active {\n ${PercentLine} {\n right: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.desktopExpDiam,\n percentLineWidth,\n props.desktopInitDiam\n )}px;\n }\n ${PercentLineTotal} {\n right: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.desktopExpDiam,\n percentLineTotalWidth,\n props.desktopInitDiam\n )}px;\n }\n ${LineIndicator} {\n right: ${(props: IVennCircle) =>\n calcCircleOffsetIncrease(\n props.desktopExpDiam,\n lineIndicatorWidth,\n props.desktopInitDiam\n )}px;\n }\n ${PercentCounterCircle} {\n shape-outside: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"right\"\n )}px\n ); /* Outer edge of the indicator, which is a total width/height of 560 x 560 */\n clip-path: circle(\n ${(props: IVennCircle) =>\n calcCircleRadius(props.desktopExpDiam) + valueTextOffset}px\n at\n ${(props: IVennCircle) =>\n calcRadiusStartPointForCounterCircle(\n props.desktopInitDiam,\n \"right\"\n )}px\n );\n }\n }\n }\n`;\n","import React, { FunctionComponent } from \"react\";\nimport styled from \"styled-components\";\nimport { IProfileRecord, ISegment } from \"../../../../Models/Models\";\nimport { SegImg, getPrettyNumber } from \"../../../Common/\";\nimport {\n lightBorderGray,\n colorTwoBright,\n} from \"../../../../globalStyles/colors/scoutColors\";\nimport { BsQuestionCircle } from \"@react-icons/all-files/bs/BsQuestionCircle\";\n\ninterface IPsychProfSummProps {\n segDets: ISegment[];\n topSegs: IProfileRecord[];\n}\n\nconst PsychProfSummWrap = styled.div`\n width: 100%;\n /* display: grid;\n grid-template-columns: 100px 209px 174px 129px 145px 114px;\n place-items: stretch;\n align-items: center;\n font-size: 11px;\n > div {\n border-bottom: 1px solid;\n } */\n`;\n\nconst PPSummRow = styled.div`\n display: flex;\n width: 100%;\n border-bottom: 1px;\n font-size: 11px;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid ${lightBorderGray};\n padding-bottom: 7px;\n margin-bottom: 10px;\n line-height: normal;\n &:first-child {\n }\n`;\n\nconst HuWeR = styled.h3`\n font-size: 20px;\n font-weight: bold;\n padding: 3px 5px;\n white-space: nowrap;\n color: ${colorTwoBright};\n margin: 0;\n`;\n\nconst OthH = styled.h4`\n font-size: 15px;\n font-weight: 600;\n white-space: nowrap;\n margin: 0;\n`;\n\nconst MiniH = styled.h5`\n font-size: 12px;\n font-weight: bold;\n padding: 0;\n margin: 0 0 2px 0;\n`;\n\nconst ImgWrap = styled.div`\n width: 100px;\n text-align: center;\n`;\n\nconst NameDetWrap = styled.div`\n width: 209px;\n`;\n\nconst VarNmWrap = styled.div`\n width: 174px;\n text-align: right;\n font-weight: 600;\n`;\n\nconst VarValWrap = styled.div`\n width: 129px;\n padding-left: 29px;\n`;\n\nconst SweetStatsBruh = styled.div`\n text-align: center;\n width: 90px;\n`;\n\nexport const PsychProfSumm: FunctionComponent = (\n props: IPsychProfSummProps\n) => {\n const { topSegs, segDets } = props;\n\n return (\n \n \n \n Who We Are\n \n \n \n \n Details\n \n \n Index Score\n \n \n Segment %\n \n \n {topSegs.map((topSeg, i) => {\n const segDet = segDets.find((seg) => topSeg.seg === seg.segmentKey);\n return (\n \n \n \n \n \n \n {topSeg.seg} {segDet.name}\n \n
    {segDet.description}
    \n
    \n \n {segDet.segmentDetails.map((det, k) => {\n return (\n \n {det.varNm}:\n \n );\n })}\n \n \n {segDet.segmentDetails.map((det, k) => {\n return (\n \n {det.varVal}\n \n );\n })}\n \n \n {segDet.segmentDetails.map((det, k) => {\n return (\n \n {det.idx}\n \n );\n })}\n \n \n {segDet.segmentDetails.map((det, k) => {\n return (\n \n {getPrettyNumber(det.pct, 1)}%\n \n );\n })}\n \n
    \n );\n })}\n
    \n \n

    \n An index value of 100 represents the average value for the analysis\n group. The further above/below 100 the index is for a given location,\n the more extreme the observed value for that location. Segment %\n represents the percentage of all households in segment with this\n characteristic.\n

    \n
    \n
    \n );\n};\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js!./Loading.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".loading-component-container {\\n height: calc(100% - 32px);\\n margin: 16px;\\n margin-top: 72px;\\n background-color: #fff;\\n border: 1px solid rgba(67, 74, 84, 0.1);\\n border-radius: 3px;\\n overflow: auto;\\n}\\n\\n.loading-component-layout-content {\\n height: 100%;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { createSelector } from \"reselect\";\n\nimport { IRootReducer } from \"../../Models/IRootReducer\";\nimport { MapStyleEnum } from \"../../Enums/Enums\";\n\nconst getMap = (state: IRootReducer): google.maps.Map =>\n state.reportMap.googleMap;\n\nconst getMarkers = (state: IRootReducer): any[] =>\n state.reportMap.currentMarkers;\n\nconst getAnchorWindow = (state: IRootReducer): google.maps.InfoWindow =>\n state.reportMap.currentAnchorWindow;\n\nconst getMapCenter = (state: IRootReducer): google.maps.LatLng =>\n state.reportMap.mapCenter;\n\nconst getMapCenterPending = (state: IRootReducer): boolean =>\n state.reportMap.pendingMapCenterEvent;\n\nconst getMapStyles = (state: IRootReducer): React.CSSProperties =>\n state.reportMap.mapStyles;\n\nconst getMapStyleOptions = (state: IRootReducer): MapStyleEnum =>\n state.reportMap.mapStyleOptions;\n\nconst getMapZoom = (state: IRootReducer): number => state.reportMap.mapZoom;\n\nconst isMapReady = (state: IRootReducer): boolean => state.reportMap.isMapReady;\n\nexport const getMapDataSelector = createSelector(\n [\n getMap,\n getMarkers,\n getMapCenter,\n getMapStyles,\n getMapZoom,\n getAnchorWindow,\n getMapStyleOptions,\n getMapCenterPending,\n isMapReady\n ],\n (\n googleMap,\n currentMarkers,\n mapCenter,\n mapStyles,\n mapZoom,\n currentAnchorWindow,\n mapStyleOptions,\n pendingMapCenterEvent,\n isMapReady\n ) => ({\n googleMap,\n currentMarkers,\n mapCenter,\n mapStyles,\n mapZoom,\n currentAnchorWindow,\n mapStyleOptions,\n pendingMapCenterEvent,\n isMapReady\n })\n);\n","export const GoogleDarkMapStyle: google.maps.MapTypeStyle[] = [\n { elementType: \"geometry\", stylers: [{ color: \"#242f3e\" }] },\n { elementType: \"labels.text.stroke\", stylers: [{ color: \"#242f3e\" }] },\n { elementType: \"labels.text.fill\", stylers: [{ color: \"#746855\" }] },\n {\n featureType: \"administrative.locality\",\n elementType: \"labels.text.fill\",\n stylers: [{ color: \"#d59563\" }],\n },\n {\n featureType: \"poi\",\n elementType: \"labels.text.fill\",\n stylers: [{ color: \"#d59563\" }],\n },\n {\n featureType: \"poi.park\",\n elementType: \"geometry\",\n stylers: [{ color: \"#263c3f\" }],\n },\n {\n featureType: \"poi.park\",\n elementType: \"labels.text.fill\",\n stylers: [{ color: \"#6b9a76\" }],\n },\n {\n featureType: \"road\",\n elementType: \"geometry\",\n stylers: [{ color: \"#38414e\" }],\n },\n {\n featureType: \"road\",\n elementType: \"geometry.stroke\",\n stylers: [{ color: \"#212a37\" }],\n },\n {\n featureType: \"road\",\n elementType: \"labels.text.fill\",\n stylers: [{ color: \"#9ca5b3\" }],\n },\n {\n featureType: \"road.highway\",\n elementType: \"geometry\",\n stylers: [{ color: \"#746855\" }],\n },\n {\n featureType: \"road.highway\",\n elementType: \"geometry.stroke\",\n stylers: [{ color: \"#1f2835\" }],\n },\n {\n featureType: \"road.highway\",\n elementType: \"labels.text.fill\",\n stylers: [{ color: \"#f3d19c\" }],\n },\n {\n featureType: \"transit\",\n elementType: \"geometry\",\n stylers: [{ color: \"#2f3948\" }],\n },\n {\n featureType: \"transit.station\",\n elementType: \"labels.text.fill\",\n stylers: [{ color: \"#d59563\" }],\n },\n {\n featureType: \"water\",\n elementType: \"geometry\",\n stylers: [{ color: \"#17263c\" }],\n },\n {\n featureType: \"water\",\n elementType: \"labels.text.fill\",\n stylers: [{ color: \"#515c6d\" }],\n },\n {\n featureType: \"water\",\n elementType: \"labels.text.stroke\",\n stylers: [{ color: \"#17263c\" }],\n },\n];\n","import React, { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport type { RootState } from \"../../../Reducers/RootReducer\";\n\nimport ConfigurableReportingListener from \"./ConfigurableReportingListener\";\n\nexport const MessageListener = (): JSX.Element => {\n const dispatch = useDispatch();\n const history = useHistory();\n\n const reportState = useSelector((state: RootState) => state.reports);\n\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n // If more \"channels\" are needed, this should be converted to a switch statement on event.data.channel\n if (event.data && event.data.channel === \"CONFIGURABLE_REPORTING\") {\n ConfigurableReportingListener(dispatch, history, event, reportState);\n }\n };\n\n window.addEventListener(\"message\", handleMessage);\n\n return () => {\n window.removeEventListener(\"message\", handleMessage);\n };\n }, [dispatch, history, reportState]);\n\n return <>;\n};","import { notification } from \"antd\";\nimport type { History } from \"history\";\nimport { Dispatch } from \"react\";\n\nimport {\n addRunningConfigurableReport,\n getConfigurableReports,\n setCrModalVisibility,\n setCrSelectedItems\n} from \"../../../Actions/ConfigurableReportActions\";\nimport { IReportReducerState } from \"../../../Reducers/ReportsReducer\";\n\nconst ConfigurableReportingListener = (\n dispatch: Dispatch,\n history: History,\n event: MessageEvent,\n reportState: IReportReducerState,\n): void => {\n switch (event.data.type) {\n case \"SHOW_CR_MODAL\":\n dispatch(setCrModalVisibility(true));\n break;\n case \"HIDE_CR_MODAL\":\n dispatch(setCrModalVisibility(false));\n dispatch(setCrSelectedItems(\"[]\"));\n if (event.data.success) {\n dispatch(addRunningConfigurableReport());\n notification.success({\n message: \"Success\",\n description: \"Configurable Report started\",\n duration: 3,\n });\n }\n break;\n case \"ERROR_IN_CR_MODAL\":\n notification.error({\n message: \"There was an error creating your report\",\n description: event.data.description,\n duration: 3,\n });\n break;\n case \"INITIATE_CR_MODAL\":\n dispatch(setCrModalVisibility(true));\n dispatch(setCrSelectedItems(event.data.selectedItems));\n break;\n case \"RETURN_TO_REPORTS_LIST\":\n history.push(\"/reports\");\n dispatch(getConfigurableReports(\n reportState.reportsStartDate,\n reportState.reportsEndDate,\n reportState.collaboratingReports,\n ));\n break;\n default:\n break;\n }\n};\n\nexport default ConfigurableReportingListener;\n","import { Icon } from \"antd\";\nimport * as React from \"react\";\nimport \"./PlaceholderCard.css\";\n\ninterface IPlaceholderCardProps {\n iconType: string;\n text: string;\n}\n\nexport const PlaceholderCard: React.SFC = (props) => {\n return (\n
    \n \n

    {props.text}

    \n
    \n );\n};\n","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!./PlaceholderCard.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".placeholder-card {\\n height: 132px;\\n position: relative;\\n overflow: hidden;\\n border-style: none;\\n margin: 4px;\\n border-width: 1px;\\n border-color: rgba(18, 18, 32, .07);\\n border-radius: 2px;\\n box-shadow: 0 0 0 1px #e4e4e4;\\n cursor: default;\\n text-align: center;\\n vertical-align: middle;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import React from \"react\";\nimport { colorTwoBright, colorTwoDark } from \"../../globalStyles\";\n\nconst COLORS = {\n lightGreen: colorTwoBright,\n darkGreen: colorTwoDark,\n};\n\ninterface PolygonNameWithCircleProps {\n circleColor: \"lightGreen\" | \"darkGreen\";\n circleWidth: number;\n circleHeight: number;\n children: React.ReactNode;\n isSelect?: boolean;\n}\n\nexport const PolygonNameWithCircle = ({\n circleColor,\n circleWidth,\n circleHeight,\n children,\n isSelect,\n}: PolygonNameWithCircleProps) => {\n return (\n \n \n {children}\n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport styled from \"styled-components\";\n\ninterface IProgressBar extends IProgressBarOuter {\n barColor?: string;\n value: number;\n}\n\ninterface IProgressBarOuter {\n initialBarWidth?: number;\n}\n\nconst ProgressBarOuter = styled(\"div\")`\n position: relative;\n margin-left: 18px;\n margin-right: 18px;\n background-color: #ececec;\n width: ${(props: IProgressBarOuter) =>\n props.initialBarWidth ? props.initialBarWidth : 100}%;\n height: 6px;\n overflow: hidden;\n border-radius: 3px;\n display: inline-block;\n`;\n\nconst ProgressBarInner = styled(\"div\")`\n position: absolute;\n background-color: ${(props: IProgressBar) =>\n props.barColor ? props.barColor : \"#5B52F9\"};\n width: ${(props: IProgressBar) => props.value}%;\n height: 6px;\n`;\n\nexport const ProgressBar: FunctionComponent = (\n props: IProgressBar\n) => {\n return (\n \n \n \n );\n};\n","import React, { FunctionComponent, useState, useEffect, useRef } from \"react\";\nimport { Select, Modal } from \"antd\";\nimport {\n IChartMergedDatapoint,\n IGPSIndexDatapoint,\n} from \"../../../Models/Models\";\nimport { DropdownComparisonWeight } from \"../../../Enums/Enums\";\nimport {\n RechartBarLine,\n ChartBodyWrapper,\n ChartButtonWrapper,\n ReportDataWrapper,\n formatYValue,\n ChartTitle,\n shortenStr,\n} from \"..\";\nimport { FiZoomIn } from \"@react-icons/all-files/fi/FiZoomIn\";\nimport { FiZoomOut } from \"@react-icons/all-files/fi/FiZoomOut\";\nimport { RenderType } from \"../../../Enums/RenderType\";\nimport { featureFlags } from \"../../../Common/CurrentFeatureFlags\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../DigitalShare/DigitalShareGenerator\";\nimport { DigitalShareItemType } from \"../../../Enums/DigitalShareItemType\";\nimport { DigitalShareAppType } from \"../../../Enums/DigitalShareAppType\";\nconst { Option } = Select;\n\nexport interface IReportChartGroup {\n data?: IChartMergedDatapoint[];\n title?: string;\n nationalAverageLine?: boolean;\n primaryColor?: string;\n chartAnim?: string;\n scrollableParentSelector?: string;\n initialYValue?:\n | \"nationalWeight\"\n | \"selection1PrimaryWeight\"\n | \"selection1SecondaryWeight\";\n tooltipText?: string;\n tooltipText2?: string;\n secondaryColor?: string;\n xTickFormatter?: (id: string) => string;\n yValueTickFormatter?: (num: number) => string;\n verticalXAxis?: boolean;\n chartHeight?: number;\n makeXLabelsFitDemmit?: boolean;\n xAxisHeight?: number;\n primaryWeightLabel?: string;\n secondaryWeightLabel?: string;\n customChart?: JSX.Element;\n unprocessedTextAboveChart?: JSX.Element;\n makeTheCardHeightMatchDemmit?: boolean;\n selection1Name?: string;\n selection2Name?: string;\n customGroupingDropdowns?: string[][];\n customDropdownContent?: JSX.Element;\n dropdownHandlers?: ((str: string) => void)[];\n ignoreXTickFormatterOnTooltip?: boolean;\n sortByValue?: boolean;\n renderType?: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n shareText?: (...args: any[]) => JSX.Element | string;\n}\n\nconst _ReportChartGroup: FunctionComponent = (\n props: IReportChartGroup\n) => {\n const [bar1ValueAttr, setBar1ValueAttr] = useState<\n \"selection1PrimaryWeight\" | \"selection1SecondaryWeight\" | \"nationalWeight\"\n >(props.initialYValue);\n const [bar2ValueAttr, setBar2ValueAttr] = useState<\n \"selection2PrimaryWeight\" | \"selection2SecondaryWeight\" | \"nationalWeight\"\n >(\n props.initialYValue === \"selection1PrimaryWeight\"\n ? \"selection2PrimaryWeight\"\n : \"selection2SecondaryWeight\"\n );\n const [topSel1NatObj, setTopSel1NatObj]\n = useState(null);\n const [topSel1Sel2Obj, setTopSel1Sel2Obj]\n = useState(null);\n const [tooltipText, setTooltipText] = useState(\"\");\n const [titleText, setTitleText] = useState(\"\");\n const [initialLoadComplete, setInitialLoadComplete]\n = useState(false);\n const [sel1NatIndexValues, setSel1NatIndexValues]\n = useState(null);\n const [sel1Sel2IndexValues, setSel1Sel2IndexValues]\n = useState(null);\n const [visibleModal, setVisibleModal] = useState(false);\n const [dropdownValue, setDropdownValue] = useState(\n DropdownComparisonWeight.PRIMARY\n );\n const maxStrLen = 20;\n\n const renderType\n = props.renderType === undefined ? RenderType.DEFAULT : props.renderType;\n\n useEffect(() => {\n if (props.customChart) {\n setInitialLoadComplete(true);\n setTitleText(props.title);\n }\n }, []);\n\n useEffect(() => {\n // ERY: after initial load, if I update any dropdown, it re-renders 3-4 times. I'm sure it has to do with the order in which each\n // hook is happening, but I'm not quite sure how to overcome this. Would like a second set of eyes to make this smooth.\n\n // ERY: what I probably need to do here is only set a hook once everything is processed and once that's complete, then show the whole chart.\n // Might be word, but might work.\n if (bar1ValueAttr && props.data && props.data[0]) {\n props.data[0].nationalWeight\n ? setSel1NatIndexValues(calcAndSortIndexValues(\"Sel1Nat\"))\n : setTopSel1NatObj(findGreatestObj(\"Sel1Nat\"));\n\n if (props.data[0].selection2PrimaryWeight !== null) {\n setSel1Sel2IndexValues(calcAndSortIndexValues(\"Sel1Sel2\"));\n setTopSel1Sel2Obj(findGreatestObj(\"Sel1Sel2\"));\n }\n }\n }, [bar1ValueAttr]);\n\n useEffect(() => {\n if (sel1NatIndexValues) {\n setTopSel1NatObj(findGreatestObj(\"Sel1Nat\"));\n }\n }, [sel1NatIndexValues]);\n\n useEffect(() => {\n if (sel1Sel2IndexValues) {\n setTopSel1Sel2Obj(findGreatestObj(\"Sel1Sel2\"));\n }\n }, [sel1Sel2IndexValues]);\n\n useEffect(() => {\n if (topSel1NatObj && topSel1NatObj.id !== null) {\n setTitleText(formatTitleText(props.title));\n if (\n props.tooltipText\n && props.tooltipText2\n && props.data[0].selection2PrimaryWeight\n ) {\n setTooltipText(\n formatTitleText(`${props.tooltipText2} ${props.tooltipText}`)\n );\n } else if (props.tooltipText) {\n setTooltipText(formatTitleText(props.tooltipText));\n }\n if (!initialLoadComplete) {\n setInitialLoadComplete(true);\n }\n }\n }, [topSel1NatObj, props.tooltipText, props.tooltipText2]);\n\n const handleVisitsChange = (value: DropdownComparisonWeight) => {\n switch (value) {\n case DropdownComparisonWeight.PRIMARY:\n setBar1ValueAttr(`selection1PrimaryWeight`);\n setBar2ValueAttr(`selection2PrimaryWeight`);\n setDropdownValue(DropdownComparisonWeight.PRIMARY);\n break;\n case DropdownComparisonWeight.SECONDARY:\n setBar1ValueAttr(`selection1SecondaryWeight`);\n setBar2ValueAttr(`selection2SecondaryWeight`);\n setDropdownValue(DropdownComparisonWeight.SECONDARY);\n break;\n }\n };\n\n // ███████╗ ██████╗ ██████╗ ████████╗\n // ██╔════╝██╔═══██╗██╔══██╗╚══██╔══╝\n // ███████╗██║ ██║██████╔╝ ██║\n // ╚════██║██║ ██║██╔══██╗ ██║\n // ███████║╚██████╔╝██║ ██║ ██║\n // ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝\n\n /**\n * This method is used to find the greatest value object based on if there is an index calculation or not. If there is\n * no index calcuation, it sorts the array by greatest overall value.\n */\n // TODO ERY: need to abstract this to find either the greatest sel1 obj or sel2 obj\n const findGreatestObj = (\n type: \"Sel1Nat\" | \"Sel1Sel2\"\n ): IChartMergedDatapoint => {\n let greatestObj: IChartMergedDatapoint;\n if (type === \"Sel1Nat\" && sel1NatIndexValues) {\n greatestObj = (props.data as IChartMergedDatapoint[]).find(\n (act: IChartMergedDatapoint) => act.id === sel1NatIndexValues[0].id\n );\n } else if (type === \"Sel1Sel2\" && sel1Sel2IndexValues) {\n greatestObj = (props.data as IChartMergedDatapoint[]).find(\n (act: IChartMergedDatapoint) => act.id === sel1Sel2IndexValues[0].id\n );\n } else {\n greatestObj = greatestSel1Obj();\n }\n return { ...greatestObj };\n };\n\n // ERY: gettin' pretty frail...lots of exceptions\n const greatestSel1ValueSort = (\n a: IChartMergedDatapoint,\n b: IChartMergedDatapoint\n ) => {\n if (bar1ValueAttr === `selection1PrimaryWeight`) {\n return b.selection1PrimaryWeight - a.selection1PrimaryWeight;\n } else if (bar1ValueAttr === `selection1SecondaryWeight`) {\n return b.selection1SecondaryWeight - a.selection1SecondaryWeight;\n } else {\n return b.nationalWeight - a.nationalWeight;\n }\n };\n\n const greatestSel1Obj = (): IChartMergedDatapoint => {\n const dataCopy = [...props.data];\n return dataCopy.sort(greatestSel1ValueSort)[0];\n };\n\n // ██████╗ █████╗ ██╗ ██████╗██╗ ██╗██╗ █████╗ ████████╗███████╗\n // ██╔════╝██╔══██╗██║ ██╔════╝██║ ██║██║ ██╔══██╗╚══██╔══╝██╔════╝\n // ██║ ███████║██║ ██║ ██║ ██║██║ ███████║ ██║ █████╗\n // ██║ ██╔══██║██║ ██║ ██║ ██║██║ ██╔══██║ ██║ ██╔══╝\n // ╚██████╗██║ ██║███████╗╚██████╗╚██████╔╝███████╗██║ ██║ ██║ ███████╗\n // ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝\n\n /**\n * Calculates the index value for either a selection 1 vs national weight comparison or a selection 1 vs selection 2 comparison.\n * @param type\n */\n const calcAndSortIndexValues = (type: \"Sel1Nat\" | \"Sel1Sel2\") => {\n let returnValue = null;\n if (props.data[0].selection2PrimaryWeight || props.data[0].nationalWeight) {\n const newIndexValues: IGPSIndexDatapoint[] = [];\n (props.data as Array).forEach(\n (mergedAct: IChartMergedDatapoint) => {\n const numerator\n = bar1ValueAttr === \"selection1PrimaryWeight\"\n ? mergedAct.selection1PrimaryWeight\n : mergedAct.selection1SecondaryWeight;\n let denominator: number;\n if (type === \"Sel1Nat\") {\n denominator = mergedAct.nationalWeight;\n } else {\n denominator\n = bar2ValueAttr === \"selection2PrimaryWeight\"\n ? mergedAct.selection2PrimaryWeight\n : mergedAct.selection2SecondaryWeight;\n }\n newIndexValues.push({\n id: mergedAct.id,\n indexValue: numerator / denominator,\n });\n }\n );\n if (newIndexValues.length > 0) {\n newIndexValues.sort((a, b) => b.indexValue - a.indexValue);\n returnValue = newIndexValues;\n }\n }\n return returnValue;\n };\n\n // ███████╗ ██████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗\n // ██╔════╝██╔═══██╗██╔══██╗████╗ ████║██╔══██╗╚══██╔══╝\n // █████╗ ██║ ██║██████╔╝██╔████╔██║███████║ ██║\n // ██╔══╝ ██║ ██║██╔══██╗██║╚██╔╝██║██╔══██║ ██║\n // ██║ ╚██████╔╝██║ ██║██║ ╚═╝ ██║██║ ██║ ██║\n // ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝\n\n const specificObj = (\n data: IChartMergedDatapoint[],\n sortStr: string\n ): IChartMergedDatapoint => {\n const returnVal = (data as IChartMergedDatapoint[]).find(\n (d: IChartMergedDatapoint) => d.id === sortStr\n );\n\n for (const property in returnVal) {\n if (property !== \"id\") {\n if (returnVal[property] === null || returnVal[property] === undefined) {\n returnVal[property] = 0;\n }\n }\n }\n\n return returnVal;\n };\n\n const specificValue = (\n data: IChartMergedDatapoint[],\n sortStr: string,\n valName: string\n ): number => {\n const mergedObj = specificObj(data, sortStr);\n return mergedObj[valName];\n };\n\n const whichSel1Value = (obj: IChartMergedDatapoint): number => {\n return bar1ValueAttr === `selection1PrimaryWeight`\n ? obj?.selection1PrimaryWeight\n : obj?.selection1SecondaryWeight;\n };\n\n const whichSel2Value = (obj: IChartMergedDatapoint): number => {\n return bar2ValueAttr === `selection2PrimaryWeight`\n ? obj?.selection2PrimaryWeight\n : obj?.selection2SecondaryWeight;\n };\n\n const higherLowerEqual = (\n sortStr: string,\n val1Name: string,\n val2Name: string\n ): string => {\n const mergedObj = specificObj(props.data, sortStr);\n\n let mergedObjVal1: number = mergedObj[val1Name];\n if (!mergedObjVal1 || isNaN(mergedObjVal1) || typeof mergedObjVal1 !== 'number') {\n mergedObjVal1 = 0;\n }\n\n let mergedObjVal2: number = mergedObj[val2Name];\n if (!mergedObjVal2 || isNaN(mergedObjVal2) || typeof mergedObjVal2 !== 'number') {\n mergedObjVal2 = 0;\n }\n const compareValue1 = mergedObjVal1.toFixed(4);\n const compareValue2 = mergedObjVal2.toFixed(4);\n let returnString: string;\n if (compareValue1 === compareValue2) {\n returnString = \"equal to\";\n } else if (compareValue1 > compareValue2) {\n returnString = \"higher than\";\n } else {\n returnString = \"lower than\";\n }\n return returnString;\n };\n\n const formatTitleText = (str: string): string => {\n return str.replace(/\\[(.+?)\\]/g, titleTextReplacer);\n };\n\n const titleTextReplacer = (match: string): string => {\n let replacement: string;\n switch (match) {\n case \"[marriageSel1NatHigherLower]\":\n replacement = higherLowerEqual(\n \"Married\",\n bar1ValueAttr,\n \"nationalWeight\"\n );\n break;\n case \"[marriageSel1Sel2HigherLower]\":\n replacement = higherLowerEqual(\"Married\", bar1ValueAttr, bar2ValueAttr);\n break;\n case \"[marriageSel1Value]\":\n replacement = formatYValue(\n specificValue(props.data, \"Married\", bar1ValueAttr)\n );\n break;\n case \"[marriageSel2Value]\":\n replacement = formatYValue(\n specificValue(props.data, \"Married\", bar2ValueAttr)\n );\n break;\n case \"[marriageNationalValue]\":\n replacement = formatYValue(\n specificValue(props.data, \"Married\", \"nationalWeight\")\n );\n break;\n case \"[childrenSel1NatHigherLower]\":\n case \"[newMoverSel1NationalHigherLower]\":\n case \"[newOwnerSel1NationalHigherLower]\":\n replacement = higherLowerEqual(\"Y\", bar1ValueAttr, \"nationalWeight\");\n break;\n case \"[childrenSel1Sel2HigherLower]\":\n case \"[newMoverSel1Sel2HigherLower]\":\n case \"[newOwnerSel1Sel2HigherLower]\":\n replacement = higherLowerEqual(\"Y\", bar1ValueAttr, bar2ValueAttr);\n break;\n case \"[childrenSel1Value]\":\n case \"[newOwnerSel1Value]\":\n case \"[newMoverSel1Value]\":\n replacement = formatYValue(\n specificValue(props.data, \"Y\", bar1ValueAttr)\n );\n break;\n case \"[childrenSel2Value]\":\n case \"[newOwnerSel2Value]\":\n case \"[newMoverSel2Value]\":\n replacement = formatYValue(\n specificValue(props.data, \"Y\", bar2ValueAttr)\n );\n break;\n case \"[childrenNationalValue]\":\n case \"[newOwnerNationalValue]\":\n case \"[newMoverNationalValue]\":\n replacement = formatYValue(\n specificValue(props.data, \"Y\", \"nationalWeight\")\n );\n break;\n case \"[dwellingTypeSel1NatHigherLower]\":\n replacement = higherLowerEqual(\n \"Single Family Dwelling Unit\",\n bar1ValueAttr,\n \"nationalWeight\"\n );\n break;\n case \"[dwellingTypeNatValue]\":\n replacement = formatYValue(\n specificValue(\n props.data,\n \"Single Family Dwelling Unit\",\n \"nationalWeight\"\n )\n );\n break;\n case \"[dwellingTypeSel1Sel2HigherLower]\":\n replacement = higherLowerEqual(\n \"Single Family Dwelling Unit\",\n bar1ValueAttr,\n bar2ValueAttr\n );\n break;\n case \"[ownSel1Value]\":\n replacement = formatYValue(\n specificValue(props.data, \"Own\", bar1ValueAttr)\n );\n break;\n case \"[ownSel1NatHigherLower]\":\n replacement = higherLowerEqual(\"Own\", bar1ValueAttr, \"nationalWeight\");\n break;\n case \"[ownSel1Sel2HigherLower]\":\n replacement = higherLowerEqual(\"Own\", bar1ValueAttr, bar2ValueAttr);\n break;\n // Rent vs Own Sel 2 Value\n case \"[ownSel2Value]\":\n replacement = formatYValue(\n specificValue(props.data, \"Own\", bar2ValueAttr)\n );\n break;\n case \"[ownNationalValue]\":\n replacement = formatYValue(\n specificValue(props.data, \"Own\", \"nationalWeight\")\n );\n break;\n case \"[personPeopleSel1Nat]\":\n replacement = Number(topSel1NatObj?.id) > 1 ? \"people\" : \"person\";\n break;\n case \"[personPeopleSel1Sel2]\":\n replacement = Number(topSel1Sel2Obj?.id) > 1 ? \"people\" : \"person\";\n break;\n case \"[greatestOwnSel1Id]\":\n replacement\n = greatestSel1Obj().id === \"Unknown\"\n ? \"are Unknown\"\n : greatestSel1Obj().id;\n break;\n case \"[greatestSel1Id]\":\n replacement = props.xTickFormatter\n ? props.xTickFormatter(greatestSel1Obj().id)\n : greatestSel1Obj().id;\n break;\n case \"[greatestSel1Value]\":\n replacement = formatYValue(whichSel1Value(greatestSel1Obj()));\n break;\n // Greatest Selection 1 obj's Selection 2 Value\n case \"[greatestSel1CompSel2Value]\":\n replacement = formatYValue(whichSel1Value(greatestSel1Obj()));\n break;\n // Selection 1 vs National Top ID\n case \"[sel1NatTopId]\":\n replacement = props.xTickFormatter\n ? props.xTickFormatter(topSel1NatObj.id)\n : topSel1NatObj.id;\n break;\n // Selection 1 vs National Selection 1 Value\n case \"[sel1NatCompSel1TopValue]\":\n replacement = formatYValue(whichSel1Value(topSel1NatObj));\n break;\n // Selection 1 vs National National Value\n case \"[sel1NatCompNatTopValue]\":\n replacement = formatYValue(\n props.data.find((obj) => obj.id === topSel1NatObj.id).nationalWeight\n );\n break;\n // Selection 1 vs Selection 2 Top ID\n case \"[sel1Sel2TopId]\":\n replacement = props.xTickFormatter\n ? props.xTickFormatter(topSel1Sel2Obj?.id)\n : topSel1Sel2Obj?.id;\n break;\n // Selection 1 vs Selection 2 Selection 1 Value\n case \"[sel1Sel2CompSel1TopValue]\":\n replacement = formatYValue(whichSel1Value(topSel1Sel2Obj));\n break;\n // Selection 1 vs Selection 2 Selection 2 Value\n case \"[sel1Sel2CompSel2TopValue]\":\n replacement = formatYValue(whichSel2Value(topSel1Sel2Obj));\n break;\n case \"[visitVisitor]\":\n replacement\n = bar1ValueAttr === `selection1SecondaryWeight` ? \"Visit\" : \"Visitor\";\n break;\n default:\n replacement = match;\n break;\n }\n return replacement;\n };\n\n const InteractionArea: JSX.Element\n = renderType === RenderType.DIGITAL_SHARE\n || renderType === RenderType.PRINT ? null : (\n \n \n {props.primaryWeightLabel\n && props.secondaryWeightLabel\n && props.data\n && props.data[0]\n && props.data[0].selection1SecondaryWeight ? (\n \n \n \n \n ) : null}\n {props.customGroupingDropdowns\n && props.dropdownHandlers\n && props.dropdownHandlers.map((ddHandler, i) => (\n \n {props.customGroupingDropdowns[i].map((str) => (\n \n {shortenStr(str, maxStrLen)}\n \n ))}\n \n ))}\n {props.customDropdownContent}\n \n {!visibleModal ? (\n {\n setVisibleModal(true);\n }}\n />\n ) : (\n setVisibleModal(false)}\n />\n )}\n \n );\n\n const sortedData = props.sortByValue\n ? props.data.sort(greatestSel1ValueSort)\n : props.data;\n\n const ref = useRef(null);\n\n const Chart: JSX.Element = props.customChart ? (\n <>{props.customChart}\n ) : (\n <>\n {InteractionArea}\n {\n setVisibleModal(true);\n }}\n >\n \n \n \n );\n\n if (\n featureFlags.DigitalShare\n && renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, props.itemType)\n ) {\n if (initialLoadComplete) {\n const text = props.shareText(dropdownValue);\n registerRef(props.app.toString(), props.itemType.toString(), ref);\n registerElement(\n props.app.toString(),\n props.itemType.toString(),\n text,\n Chart\n );\n }\n }\n\n return (\n \n \n {props.unprocessedTextAboveChart}\n \n {initialLoadComplete && Chart}\n \n {\n setVisibleModal(false);\n }}\n footer={null}\n width=\"90%\"\n centered={true}\n bodyStyle={{ padding: \"40px 24px 24px\" }}\n >\n {initialLoadComplete && Chart}\n \n \n );\n};\n\nexport const ReportChartGroup = React.memo(_ReportChartGroup);\n","import { Button, Col, Input, notification, Row } from \"antd\";\nimport React, { useState } from \"react\";\nimport { AiOutlineShareAlt } from \"@react-icons/all-files/ai/AiOutlineShareAlt\";\nimport { FiLinkedin } from \"@react-icons/all-files/fi/FiLinkedin\";\nimport { FiMail } from \"@react-icons/all-files/fi/FiMail\";\nimport { FiTwitter } from \"@react-icons/all-files/fi/FiTwitter\";\nimport { useDispatch } from \"react-redux\";\nimport styled, { CSSObject } from \"styled-components\";\nimport { setDialogTrainingState } from \"../../../Actions/DigitalShareActions\";\nimport { saveSharedReport } from \"../../../Contracts/Axios/GPSInsightsAxios\";\nimport { DialogTrainingState } from \"../../../Enums/DialogTrainingState\";\nimport { ReportTypeEnum } from \"../../../Enums/ReportTypeEnum\";\nimport { altGrayTextColor, deviceWidth } from \"../../../globalStyles\";\nimport { DEFAULT_NOTIFICATION_DURATION } from \"../../../Logic/NotificationLogic\";\nimport { Menu } from \"../ReportStyles/Menu\";\nimport { popupCenter, useWindowResize } from \"../SharedActions\";\n\ninterface ReportSharingMenuProps {\n jobId: string;\n title: string;\n reportType: ReportTypeEnum;\n disabled?: boolean;\n hideButtonText?: boolean;\n buttonStyle?: CSSObject;\n multiBrandOverview: boolean;\n onShareClick: () => void;\n}\n\nconst FullHeightCol = styled(Col)`\n height: 100%;\n`;\n\nconst ShareLinkWrapper = styled.a`\n color: #00000090;\n cursor: pointer;\n transition: color 0.3s, font-weight 0.3s;\n &:hover,\n &.active {\n background: #f5f6f7;\n color: ${altGrayTextColor};\n }\n &.active {\n font-weight: 500;\n }\n`;\n\nconst iconSize = 24;\n\nconst ShareMenuImg = styled.img`\n height: ${iconSize}px;\n`;\n\nexport const ReportSharingMenu = (props: ReportSharingMenuProps) => {\n const [open, setIsMenuOpen] = useState();\n const [shareLink, setShareLink] = useState(\"\");\n const [generatingShareLink, setGeneratingShareLink]\n = useState(false);\n\n const windowSize = useWindowResize();\n const dispatch = useDispatch();\n\n const openShareDialog = () => {\n props.onShareClick();\n setIsMenuOpen(false);\n };\n\n const onLoopNetClick = () => {\n openShareDialog();\n dispatch(setDialogTrainingState(DialogTrainingState.LoopNet));\n };\n\n const onCrexiClick = () => {\n openShareDialog();\n dispatch(setDialogTrainingState(DialogTrainingState.Crexi));\n };\n\n const onLinkButtonClick = () => {\n if (shareLink === \"\") {\n generateShareLink();\n } else {\n copyLink();\n }\n };\n\n const generateShareLink = () => {\n setGeneratingShareLink(true);\n saveSharedReport(props.jobId, (shareReportGuid) => {\n const reportUri = getReportUri(props.reportType, shareReportGuid);\n setShareLink(reportUri);\n setGeneratingShareLink(false);\n });\n };\n\n const copyLink = () => {\n navigator.clipboard.writeText(shareLink).then((value) => {\n notification.open({\n message: \"Share link copied!\",\n duration: DEFAULT_NOTIFICATION_DURATION,\n });\n });\n };\n\n return (\n }\n type=\"filled\"\n bgColor=\"black\"\n color=\"white\"\n isOpen={open}\n setIsMenuOpen={setIsMenuOpen}\n disabled={props.disabled}\n style={{ marginBottom: 0 }}\n buttonStyle={props.buttonStyle}\n wrapperStyle={{\n marginRight: \"8px\",\n }}\n >\n \n \n \n Get a shareable link:\n \n \n \n \n \n {shareLink === \"\" ? \"Generate Link\" : \"Copy link\"}\n \n \n {(shareLink !== \"\" || generatingShareLink) && (\n \n \n \n )}\n \n \n \n Share link via:\n \n \n \n \n \n {\n setIsMenuOpen(false);\n saveSharedReport(props.jobId, (shareReportGuid) => {\n const reportUri\n = window.location.origin\n + `/Home/Share/${createShareableUrl(\n props.reportType,\n shareReportGuid\n )}`;\n\n const type: string\n = props.reportType === ReportTypeEnum.Mobilytics\n ? \"Mobile Insight\"\n : \"Match Analysis\";\n const subject = `Report for ${props.title}`;\n const body = `Check out this ${type} Report by Buxton.\\n\\n ${reportUri}`;\n\n window.location.href = `mailto:?subject=${encodeURIComponent(\n subject\n )}&body=${encodeURIComponent(body)}`;\n });\n }}\n />\n \n \n \n \n {\n setIsMenuOpen(false);\n const redirectWindow = popupCenter(\n \"\",\n \"linkedInSharer\",\n 700,\n 700\n );\n redirectWindow.document.write(\n \"Please wait while we load your report...\"\n );\n redirectWindow.document.close();\n saveSharedReport(props.jobId, (shareReportGuid) => {\n const reportUri: string = getReportUri(\n props.reportType,\n shareReportGuid\n );\n redirectWindow.location.href = `https://www.linkedin.com/shareArticle?mini=true&url=${reportUri}`;\n if (window.focus) redirectWindow.focus();\n });\n }}\n />\n \n \n \n \n {\n setIsMenuOpen(false);\n const redirectWindow = popupCenter(\n \"\",\n \"twitterSharer\",\n 700,\n 700\n );\n redirectWindow.document.write(\n \"Please wait while we load your report...\"\n );\n redirectWindow.document.close();\n saveSharedReport(props.jobId, (shareReportGuid) => {\n const reportUri: string = getReportUri(\n props.reportType,\n shareReportGuid\n );\n redirectWindow.location.href = `https://twitter.com/intent/tweet?url=${reportUri}&via=buxtonco`;\n if (window.focus) redirectWindow.focus();\n });\n }}\n />\n \n \n \n {windowSize.width > deviceWidth.tabletXl && (\n <>\n \n \n Export Sections to Share:\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n );\n};\n\nconst createShareableUrl = (\n reportType: ReportTypeEnum,\n shareReportGuid: string\n): URLSearchParams => {\n return new URLSearchParams(`${reportType}_${shareReportGuid}`);\n};\n\nconst getReportUri = (\n reportType: ReportTypeEnum,\n shareReportGuid: string\n): string => {\n return `${window.location.origin}/Home/Share/${createShareableUrl(\n reportType,\n shareReportGuid\n )}`;\n};\n","export * from \"./Menu\";\nexport * from \"./Buttons\";\nexport * from \"./ReportHeader\";\nexport * from \"./ReportStickyNav\";\nexport * from \"./ReportWrappers\";\nexport * from \"./Text\";\nexport * from \"./Grid\";\n","import styled from \"styled-components\";\nimport { device, sizeConstants } from \"../../../globalStyles\";\n\nexport const ReportHeaderWrap = styled.div`\n padding: 30px ${sizeConstants.mobileLRContainerPadding}px 0;\n max-width: ${sizeConstants.containerMaxWidth}px;\n margin: 0 auto;\n box-sizing: initial;\n\n ${device.desktop} {\n display: flex;\n justify-content: center;\n }\n\n ${device.containerMaxWidth} {\n padding: 30px 0 0;\n }\n`;\n\nexport const ReportHeaderInnerWrap = styled.div`\n width: 100%;\n max-width: 1440px;\n`;\n\nexport const ReportHeaderContentContainer = styled(\"div\")`\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n margin: 28px 0 10px;\n`;\n","import styled, { css } from \"styled-components\";\nimport { device } from \"../../../globalStyles/breakpoints\";\n\nconst ColumnGridCommonStyles = css`\n display: grid;\n width: 100%;\n margin-top: 30px;\n grid-column-gap: 27px;\n grid-row-gap: 45px;\n`;\n\nexport const ThreeColumnGrid = styled.div`\n ${ColumnGridCommonStyles}\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n`;\n\nexport const TwoColumnGrid = styled.div`\n ${ColumnGridCommonStyles}\n grid-template-columns: repeat(auto-fit, minmax(48%, 1fr));\n`;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport {\n colorTen,\n hoverLinkBlue,\n colorTwoBright,\n colorTwoDark,\n lightBorderGray,\n altGrayTextColor,\n activePsychSort,\n activeSortDirection,\n inactiveSortDirection,\n} from \"../../../globalStyles/colors/scoutColors\";\nimport { device } from \"../../../globalStyles/breakpoints\";\nimport { FcGenericSortingDesc } from \"@react-icons/all-files/fc/FcGenericSortingDesc\";\nimport { FcGenericSortingAsc } from \"@react-icons/all-files/fc/FcGenericSortingAsc\";\nimport { RiCake2Line } from \"@react-icons/all-files/ri/RiCake2Line\";\nimport { BiBuildingHouse } from \"@react-icons/all-files/bi/BiBuildingHouse\";\nimport { BiHomeHeart } from \"@react-icons/all-files/bi/BiHomeHeart\";\nimport { FaRegMoneyBillAlt } from \"@react-icons/all-files/fa/FaRegMoneyBillAlt\";\nimport { GrGroup } from \"@react-icons/all-files/gr/GrGroup\";\nimport { FiChevronDown } from \"@react-icons/all-files/fi/FiChevronDown\";\nimport { MdChildCare } from \"@react-icons/all-files/md/MdChildCare\";\n\n// ██████╗ ███████╗███╗ ██╗███████╗██████╗ █████╗ ██╗ ███████╗ ██████╗\n// ██╔════╝ ██╔════╝████╗ ██║██╔════╝██╔══██╗██╔══██╗██║ ██╔════╝██╔════╝\n// ██║ ███╗█████╗ ██╔██╗ ██║█████╗ ██████╔╝███████║██║ ███████╗██║\n// ██║ ██║██╔══╝ ██║╚██╗██║██╔══╝ ██╔══██╗██╔══██║██║ ╚════██║██║\n// ╚██████╔╝███████╗██║ ╚████║███████╗██║ ██║██║ ██║███████╗ ███████║╚██████╗\n// ╚═════╝ ╚══════╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══════╝ ╚═════╝\n// (GENERAL STYLED COMPONENTS)\n\nconst colorTransitionTime = \"0.3s\";\nconst visibilityTransitionTime = \"0.5s\";\n\ninterface ISegCirc {\n color: string;\n}\n\nexport const SegContainer = styled.div`\n display: grid;\n grid-template-columns:\n minmax(200px, 440px) minmax(120px, 280px) 20px minmax(185px, 280px)\n minmax(180px, 250px);\n place-items: stretch;\n ${device.desktop} {\n grid-template-columns:\n minmax(250px, 440px) minmax(120px, 280px) 20px minmax(185px, 280px)\n minmax(180px, 250px);\n }\n`;\n\nexport const SegCell = styled.div`\n text-align: center;\n width: 100%;\n padding: 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: relative;\n transition: border-color ${colorTransitionTime};\n &.hide-show {\n > .animated:last-child,\n > .animated:first-child {\n transition: opacity ${visibilityTransitionTime},\n transform ${visibilityTransitionTime};\n }\n > .animated:last-child {\n transform: translateY(50px) scale(0.5);\n opacity: 0;\n }\n }\n &.border-left {\n border-left: 1px solid ${colorTen};\n justify-content: space-between;\n > span {\n width: 70px;\n }\n }\n ${device.desktop} {\n padding: 25px 12px;\n &.fill {\n padding: 0;\n > div {\n width: 1px;\n height: 100%;\n border-right: 1px solid ${colorTen};\n }\n }\n }\n`;\n\nexport const SegCellTextL = styled.div`\n color: ${altGrayTextColor};\n font-size: 20px;\n font-weight: 800;\n line-height: 17px;\n`;\n\nexport const SegCellTextSm = styled.div`\n color: ${altGrayTextColor};\n font-size: 13px;\n font-weight: 400;\n line-height: 17px;\n`;\n\nexport const SegCellTextSmB = styled(SegCellTextSm)`\n color: ${altGrayTextColor};\n font-weight: 800;\n`;\n\nexport const SegContentSecHeader = styled.h4`\n color: ${colorTwoBright};\n font-size: 18px;\n`;\n\nexport const SegImg = styled.img`\n width: 8vw;\n height: 8vw;\n max-width: 90px;\n max-height: 90px;\n min-width: 65px;\n min-height: 65px;\n display: inline-block;\n border-radius: 50%;\n object-fit: cover;\n object-position: center;\n`;\n\nexport const SegCardHead = styled.div`\n display: flex;\n align-items: center;\n padding: 0 15px;\n margin-bottom: 32px;\n ${SegImg} {\n margin-right: 22px;\n }\n`;\n\nexport const SegCardRow = styled.div`\n display: flex;\n justify-content: space-around;\n align-items: center;\n background-color: #f5f5f5;\n height: 37px;\n margin: 2px 13px 11.2px 8px;\n padding: 1px 0;\n border-radius: 13px;\n`;\n\nexport const SegCardCol = styled.span`\n display: inline-block;\n > svg {\n margin-right: 17px;\n }\n &:nth-child(1) {\n width: 230px;\n display: flex;\n align-items: center;\n }\n &:nth-child(2) {\n width: 150px;\n text-align: center;\n }\n &:nth-child(4),\n &:nth-child(6) {\n width: 55px;\n text-align: center;\n }\n`;\n\nexport const SegCardSpacer = styled.span`\n width: 1px;\n height: 35px;\n border-left: 1px solid ${lightBorderGray};\n`;\n\nexport const SegCardHeaderCol = styled(SegCardCol)``;\n\nexport const SegCardHeaderRow = styled(SegCardRow)`\n font-size: 9px;\n color: #6d7278;\n height: 11px;\n background-color: transparent;\n ${SegCardSpacer} {\n border-color: transparent;\n }\n`;\n\nexport const SegCardBreakoutContainer = styled.div`\n display: flex;\n justify-content: space-around;\n margin: 30px auto 18px;\n max-width: 90%;\n align-items: center;\n\n ${device.desktop} {\n justify-content: space-between;\n }\n`;\n\nexport const SegCardBreakoutItem = styled.div`\n text-align: center;\n max-width: 27%;\n font-size: 11px;\n color: rgba(0, 0, 0, 0.85);\n &:last-child {\n color: ${altGrayTextColor};\n }\n > span {\n font-weight: 800;\n }\n`;\n\nexport const SegCardBreakoutVerticalBreak = styled.div`\n border-right: 1px solid ${lightBorderGray};\n width: 1px;\n height: 54px;\n margin: 0 7px;\n`;\n\nexport const SegFooterSubText = styled.p`\n font-size: 9px;\n color: #8c8c8c;\n`;\n\nconst SegHeadStyle = css`\n margin: 50px 7px 0 1px;\n`;\n\nconst SegHeadFirstChildStyle = css`\n padding-top: 0;\n &:first-child {\n flex-direction: row;\n justify-content: left;\n padding-left: 0;\n }\n`;\n\nconst SegBodyStyle = css`\n max-height: 665px;\n overflow-y: auto;\n overflow-x: hidden;\n ${SegCell} {\n border-bottom: 1px solid ${colorTen};\n &:first-child {\n padding-left: 17px;\n }\n }\n`;\n\nexport const SegDetails = styled.div`\n text-align: left;\n margin-left: 25px;\n line-height: normal;\n`;\n\nexport const SegLink = styled.div`\n display: flex;\n align-items: center;\n text-decoration: underline;\n transition: color ${colorTransitionTime};\n &:hover {\n color: ${hoverLinkBlue};\n }\n`;\n\nexport const SegCirc = styled.div`\n width: 94px;\n height: 94px;\n border-radius: 50%;\n border: 4px solid ${(props: ISegCirc) => props.color};\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nexport const SegCircTextL = styled.div`\n font-size: 17px;\n font-weight: 800;\n line-height: normal;\n`;\n\nexport const SegCircTextSm = styled.div`\n font-size: 11px;\n font-weight: 300;\n line-height: normal;\n`;\n\n// Top Right interaction inside of a cell that will be used only on tablet\nexport const SegCellTRAction = styled.div`\n position: absolute;\n top: -9px;\n right: -9px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n color: #8c8c8c;\n display: flex;\n align-items: center;\n justify-content: center;\n ${device.desktop} {\n display: none;\n }\n`;\n\nexport const EmptyResultsCell = styled(SegCell)`\n flex-direction: column;\n padding: 50px;\n color: ${lightBorderGray};\n`;\n\n// ███╗ ██╗ ██████╗ ███╗ ██╗ ███████╗ ██████╗ ██████╗ ████████╗\n// ████╗ ██║██╔═══██╗████╗ ██║ ██╔════╝██╔═══██╗██╔══██╗╚══██╔══╝\n// ██╔██╗ ██║██║ ██║██╔██╗ ██║█████╗███████╗██║ ██║██████╔╝ ██║\n// ██║╚██╗██║██║ ██║██║╚██╗██║╚════╝╚════██║██║ ██║██╔══██╗ ██║\n// ██║ ╚████║╚██████╔╝██║ ╚████║ ███████║╚██████╔╝██║ ██║ ██║\n// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝\n\nexport const SegRow = styled.div`\n display: contents;\n &.active {\n .hide-show {\n .animated:first-child {\n transform: translateY(-50px) scale(0.5);\n opacity: 0;\n }\n .animated:last-child {\n transform: translateY(0);\n opacity: 1;\n }\n }\n }\n > ${SegCell} {\n &:first-child {\n ${device.desktop} {\n flex-direction: row;\n }\n }\n &:last-child {\n border-left: 1px solid ${colorTen};\n }\n }\n`;\n\nexport const SegBody = styled(SegContainer)`\n ${SegBodyStyle}\n border: 1px solid ${colorTen};\n ${SegRow} {\n &:last-child {\n ${SegCell} {\n border-bottom: 0;\n }\n }\n }\n`;\n\nexport const SegHead = styled(SegContainer)`\n ${SegHeadStyle}\n &.too-short {\n /* ERY: again, I hate windows :-P */\n margin-right: 1px;\n }\n ${SegCell} {\n ${SegHeadFirstChildStyle}\n }\n`;\n\n// ███████╗ ██████╗ ██████╗ ████████╗\n// ██╔════╝██╔═══██╗██╔══██╗╚══██╔══╝\n// ███████╗██║ ██║██████╔╝ ██║\n// ╚════██║██║ ██║██╔══██╗ ██║\n// ███████║╚██████╔╝██║ ██║ ██║\n// ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝\n\nexport const SortSegCellWrapper = styled.div`\n display: flex;\n flex-grow: 1;\n width: 100%;\n align-items: stretch;\n`;\n\nexport const SortSegRow = styled.div`\n display: flex;\n ${SegCell} {\n &:first-child {\n ${device.desktop} {\n flex-direction: row;\n }\n }\n }\n`;\n\nexport const SortSegHead = styled.div`\n ${SegHeadStyle}\n margin-bottom: 7px;\n ${SortSegCellWrapper}:first-child {\n ${SegCell} {\n ${SegHeadFirstChildStyle}\n padding-bottom: 0;\n }\n }\n`;\n\nconst SortSegBodyStyle = css`\n max-height: 665px;\n ${SortSegCellWrapper} {\n border-left: 1px solid ${colorTen};\n border-right: 1px solid ${colorTen};\n transition: border-color ${colorTransitionTime};\n &:first-child {\n border-right: 0;\n ${SegCell} {\n justify-content: left;\n padding-left: 17px;\n }\n }\n &.polygonOneActive {\n border-left-color: ${colorTwoBright};\n border-right-color: ${colorTwoBright};\n }\n &.polygonTwoActive {\n border-left-color: ${colorTwoDark};\n border-right-color: ${colorTwoDark};\n }\n ${SegCell} {\n border-bottom: 1px solid ${colorTen};\n }\n }\n`;\n\nexport const SortSegBody = styled.div`\n ${SortSegBodyStyle}\n overflow-y: auto;\n ${SortSegRow} {\n &:last-child {\n ${SortSegCellWrapper} {\n ${SegCell} {\n border-bottom: 0;\n }\n }\n }\n }\n`;\n\nexport const SortSegFooter = styled.div`\n height: 1px;\n overflow: hidden;\n &.too-tall {\n width: calc(\n 100% - 6px\n ); /* ERY: because windows is dumb and doesn't auto hide it's scrollbars */\n }\n ${SortSegCellWrapper} {\n height: 1px;\n border-left: 1px solid ${colorTen};\n border-right: 1px solid ${colorTen};\n background-color: ${colorTen};\n transition: background-color ${colorTransitionTime},\n border-color ${colorTransitionTime};\n &:first-child {\n border-right: 0;\n }\n &.active {\n background-color: ${activePsychSort};\n border-color: ${activePsychSort};\n }\n }\n`;\n\nexport const SortSegHeadActions = styled.div`\n ${SortSegBodyStyle}\n &.too-tall {\n width: calc(\n 100% - 6px\n ); /* ERY: because windows is dumb and doesn't auto hide it's scrollbars */\n }\n .ant-radio-wrapper,\n .ant-radio-checked .ant-radio-inner {\n transition: color ${colorTransitionTime},\n background-color ${colorTransitionTime},\n border-color ${colorTransitionTime};\n }\n .ant-radio-wrapper:hover .ant-radio,\n .ant-radio:hover .ant-radio-inner,\n .ant-radio-input:focus + .ant-radio-inner,\n .ant-radio-checked .ant-radio-inner {\n border-color: ${activePsychSort};\n }\n .ant-radio-inner:after {\n background-color: ${activePsychSort};\n }\n span.ant-radio + * {\n padding-right: 0;\n }\n ${SortSegCellWrapper} {\n border-top: 1px solid ${lightBorderGray};\n transition: color ${colorTransitionTime},\n background-color ${colorTransitionTime},\n border-color ${colorTransitionTime};\n &.active {\n background-color: ${activePsychSort};\n color: white;\n border-top-color: ${activePsychSort};\n .ant-radio-wrapper {\n color: white;\n }\n ${SegCell} {\n border-color: ${activePsychSort};\n }\n }\n ${SegCell} {\n padding: 7px;\n flex-direction: row;\n > .single-case-title {\n width: 70px;\n }\n }\n &:first-child {\n ${SegCell} {\n font-weight: 500;\n ${device.upToDesktop} {\n justify-content: center;\n }\n }\n }\n }\n`;\n\nexport const SortSegCardBreakoutContainer = styled(SegCardBreakoutContainer)`\n justify-content: space-around;\n`;\n\n// ██╗ ██████╗ ██████╗ ███╗ ██╗███████╗\n// ██║██╔════╝██╔═══██╗████╗ ██║██╔════╝\n// ██║██║ ██║ ██║██╔██╗ ██║███████╗\n// ██║██║ ██║ ██║██║╚██╗██║╚════██║\n// ██║╚██████╗╚██████╔╝██║ ╚████║███████║\n// ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝\n\nconst AscDescIconStyles = css`\n margin-right: 5px;\n rect {\n fill: ${inactiveSortDirection};\n transition: fill ${colorTransitionTime};\n }\n &.active {\n rect {\n fill: ${activeSortDirection};\n }\n }\n`;\n\nexport const AscIcon = styled(FcGenericSortingAsc)`\n ${AscDescIconStyles}\n`;\n\nexport const DescIcon = styled(FcGenericSortingDesc)`\n ${AscDescIconStyles}\n`;\n\nexport const ChevronDown = styled(FiChevronDown)`\n color: #cecece;\n margin-left: auto;\n`;\n\nexport const findSegIcon = (cat: string): JSX.Element => {\n switch (cat) {\n case \"Age of children\":\n case \"Children\":\n return ;\n case \"Estimated household income\":\n return ;\n case \"Head of household age\":\n return ;\n case \"Home ownership\":\n return ;\n case \"Household size\":\n return ;\n case \"Type of property\":\n return ;\n default:\n return null;\n }\n};\n","import styled from \"styled-components\";\nimport { device } from \"../../globalStyles/breakpoints\";\n\nexport const FlexTable = styled.div`\n > * {\n word-break: break-word;\n display: flex;\n justify-content: space-between;\n padding: 12px 16px;\n &:nth-child(n) {\n background-color: rgba(231, 234, 237, 1);\n }\n &:nth-child(2n) {\n background-color: rgba(255, 255, 255, 0);\n }\n > * {\n &:nth-child(2n) {\n text-align: right;\n }\n }\n }\n > a {\n line-height: 1;\n color: inherit;\n text-decoration: none;\n }\n`;\n\nexport const ResponsiveTable = styled.table`\n margin: 1em 0;\n min-width: 300px; /* adjust to your needs */\n width: 100%;\n table-layout: fixed;\n\n tr {\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n &:nth-child(even) {\n background-color: #f2f2f2;\n }\n }\n\n th {\n display: none; /* for accessibility, use a visually hidden method here instead! Thanks, reddit! */\n ${device.tablet} {\n text-align: left;\n background-color: gray;\n color: white;\n }\n }\n\n td {\n display: flex;\n align-items: center;\n padding: 0 20px 15px;\n\n &:first-child {\n padding-top: 15px;\n }\n\n &:before {\n content: attr(data-th) \": \"; /* who knew you could do this? The internet, that's who. */\n font-weight: bold;\n\n /* optional stuff to make it look nicer */\n width: 50%;\n display: inline-block;\n /* end options */\n\n ${device.tablet} {\n display: none;\n }\n }\n > span {\n display: inline-block;\n ${device.tablet} {\n display: inline;\n }\n }\n }\n\n th,\n td {\n text-align: left;\n\n ${device.tablet} {\n display: table-cell;\n padding: 0.25em 0.5em;\n }\n }\n`;\n","import { Avatar, Badge } from \"antd\";\nimport * as React from \"react\";\nimport { IUser } from \"../../Models/Models\";\n\ninterface IUserAvatarProps {\n user: IUser;\n}\n\nexport const UserAvatar: React.SFC = (props) => {\n const colorArray: Array = [\n \"#e5aa42\",\n \"#d8573f\",\n \"#ffbd54\",\n \"#eb6e51\",\n \"#0098a6\",\n \"#125b4a\",\n \"#66bdc6\",\n \"#437d6f\",\n \"#6240a3\",\n \"#434a54\",\n \"#715eaa\",\n \"#bbc0c8\",\n ];\n\n const getInitials = (user: IUser) => {\n return user.firstName[0].toUpperCase() + user.lastName[0].toUpperCase();\n };\n\n const getAvatarColor = (name: string) => {\n if (name != null) {\n return colorArray[name.charCodeAt(0) % 12];\n }\n return colorArray[0];\n };\n\n const getBadgeColor = (\n loginStatus: number\n ): \"default\" | \"success\" | \"processing\" | \"error\" | \"warning\" => {\n if (loginStatus === 0) {\n return \"success\";\n } else if (loginStatus === 1) {\n return \"warning\";\n }\n return \"error\";\n };\n\n let avatar: JSX.Element = null;\n if (props.user && !props.user.profileImage) {\n avatar = (\n \n {getInitials(props.user)}\n \n );\n } else if (props.user && props.user.profileImage) {\n avatar = (\n \n );\n }\n\n const content: JSX.Element\n = avatar && props.user.loginStatus === 0 ? (\n \n {avatar}\n \n ) : (\n avatar\n );\n\n return content;\n};\n","import styled from \"styled-components\";\n\nexport const CollabToggleWrapper = styled(\"div\")`\n margin: 0 1rem 0 2rem;\n min-width: 120px;\n`;\n","import React, {useEffect} from \"react\";\nimport { Drawer, List } from \"antd\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { IUser } from \"../../../Models/Models\";\nimport { UserAvatar } from \"../../Common\";\nimport { getAllUsersInitiate } from \"../../../View/Products/Actions/UserActions\";\nimport { allUsersSelector, loadingAllUsersSelector } from \"../../../Reducers/Selectors/UserSelectors\";\n\ninterface IActiveUsersProps {\n onClose: () => void;\n};\n\nconst ActiveUsers = (props: IActiveUsersProps): JSX.Element => {\n /** misc */\n const dispatch = useDispatch();\n /** selectors */\n const allUsers: IUser[] = useSelector(allUsersSelector);\n const loading: boolean = useSelector(loadingAllUsersSelector);\n /** effects */\n useEffect(() => {\n dispatch(getAllUsersInitiate());\n }, []);\n\n const usersToShow: IUser[] = allUsers?.filter((user: IUser) => {\n return !user.isSetup && user.isActive;\n })\n .sort((a: IUser, b: IUser): number => {\n if (a.loginStatus < b.loginStatus) return -1;\n else if (a.loginStatus > b.loginStatus) return 1;\n return 0;\n });\n\n return (\n \n No Users

    \n )\n }}\n renderItem={(u: IUser) => (\n \n }\n title={\n \n {u.fullName}\n \n }\n />\n \n )}\n />\n \n );\n};\n\nexport default ActiveUsers;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Badge, Icon, Tooltip } from \"antd\";\nimport Axios, { AxiosError } from \"axios\";\nimport React, { memo, useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { RouteComponentProps, useHistory, withRouter } from \"react-router-dom\";\n\nimport { getCompanyTerritoryTypes, hasFeature, setActiveApp } from \"../../../Actions/Actions\";\nimport * as windowActions from \"../../../Actions/WindowActions\";\nimport { ActiveApp } from \"../../../Enums/Enums\";\nimport { OktaGroups } from \"../../../Enums/Okta\";\nimport { ScoutFeature } from \"../../../Enums/ScoutFeature\";\nimport { IFeature, IServiceResult, IUser } from \"../../../Models/Models\";\nimport { showActiveUsersSelector } from \"../../../Reducers/Selectors/UserSelectors\";\nimport { setShowActiveUsers } from \"../../../View/Products/Actions/UserActions\";\nimport { UserAvatar } from \"../../Common\";\nimport { NavDropdown, NavItem } from \"../Layout/Navigation\";\n\ninterface IUserDropdownProps extends RouteComponentProps {\n isScout: boolean;\n user: IUser;\n showActiveUsers: boolean;\n fromNewUI?: boolean;\n}\n\nconst UserDropdown: React.FunctionComponent = memo(\n (props: IUserDropdownProps) => {\n /** misc */\n const dispatch = useDispatch();\n const history = useHistory();\n const formRef = useRef(null);\n /** selectors */\n const showActiveUsers: boolean = useSelector(showActiveUsersSelector);\n /** state */\n const [viewingUserName, setViewingUserName] = useState(\"\");\n /** misc */\n const isBuxtonCorpUser = props.user?.oktaGroups?.some((group: string) => group === OktaGroups.BUXTONCORP);\n const isMultiAccountUser = props.user?.oktaGroups?.some((group: string) => group === OktaGroups.MULTIACCOUNTUSERS);\n const userIsInOktaGroup = isBuxtonCorpUser || isMultiAccountUser;\n const hasIntercomConversation: boolean = props.user.features.some(\n (f: IFeature) => f.name === ScoutFeature.IntercomConversation\n );\n /** effects */\n useEffect(() => {\n if (userIsInOktaGroup) {\n Axios.get>(`/BuxtonView/QueryUserNameByUserID?userId=${props.user.userID}&cid=${props.user.company.cid}`)\n .then((response) => {\n setViewingUserName(response.data.data);\n })\n .catch((error: AxiosError) => {\n console.log(\"error retrieving user name\");\n });\n }\n }, []);\n\n const launchSegmentationGuide = (): void => {\n if (props.isScout) {\n (window as any).scout.logic.IntercomLogic.logAction(\n \"scout\",\n \"top-nav\",\n \"click\",\n \"segmentation-guide\"\n );\n }\n window.open(\"/Experian/Guide\");\n };\n\n const launchKnowledgeBase = (): void => {\n if (props.isScout) {\n (window as any).scout.logic.IntercomLogic.logAction(\n \"scout\",\n \"top-nav\",\n \"click\",\n \"knowledge-base\"\n );\n }\n window.open(\"http://help.buxtonco.com/\");\n };\n\n const launchUserSettings = (): void => {\n const urlPrefix = props.isScout ? \"\" : `${window.location.origin}/Home/Scout#`;\n const initialUserSettingsView = !isBuxtonCorpUser && !isMultiAccountUser\n ? `${urlPrefix}/settings/Profile`\n : `${urlPrefix}/settings/Preferences`;\n\n if (hasFeature(props.user, ScoutFeature.Scout4)) {\n props.isScout ? history.push(initialUserSettingsView)\n : window.location.href = initialUserSettingsView;\n } else {\n !isBuxtonCorpUser && !isMultiAccountUser ? history.push(\"/Settings/Profile\") : history.push(\"/Settings/Preferences\");\n }\n };\n\n const launchUserManagement = (): void => {\n dispatch(setActiveApp(ActiveApp.SETTINGS));\n dispatch(getCompanyTerritoryTypes());\n history.push(\"/settings/ManageUsers\");\n };\n\n const launchTerritoryManagement = (): void => {\n dispatch(setActiveApp(ActiveApp.SETTINGS));\n dispatch(getCompanyTerritoryTypes());\n history.push(\"/settings/ManageTerritories\");\n };\n\n const toggleActiveUsers = (): void => {\n dispatch(setShowActiveUsers(!showActiveUsers));\n };\n\n const onLogoutClick = (): void => {\n if (props.isScout) {\n (window as any).Intercom(\"shutdown\");\n }\n formRef.current.submit();\n };\n\n const avatarAndArrow: JSX.Element = (\n <>\n \n \n \n );\n\n return (\n <>\n \n Viewing as\n \n Company: {props.user.company.name}\n \n {!isMultiAccountUser\n ? (\n \n Username: {viewingUserName}\n \n )\n : null}\n \n }>\n \n \n }>\n {avatarAndArrow}\n \n )\n : avatarAndArrow\n }\n triggerType=\"NavItem\"\n dropdownPosition=\"right\"\n triggerWidth={42}\n triggerPadding=\"padding: 0;\">\n {props.user\n && props.isScout\n && hasIntercomConversation\n && (\n \n Chat with Support\n \n )}\n \n Learn\n \n \n }\n triggerType=\"NavDropdownItem\"\n dropdownPosition=\"left\">\n \n Knowledge Base\n \n \n Segmentation Guide\n \n \n \n Active Users\n \n \n User Settings\n \n {userIsInOktaGroup && (\n {\n (window as any).Intercom(\"shutdown\");\n window.location.pathname = \"/Home/Splash\";\n }}>\n Change Viewing User\n \n )}\n \n
    \n {\" \"}\n {/* 'submit' is the default 'type' for the 'button' element */}\n
    \n \n {/* START HACK (GDB) */}\n {/* Used to trigger some specific link clicks in the LeftNav of Scout. Long story short, getting to these pages from outside of React is a pain in the butt. Once we get all the left nav stuff in SCOUT\n into React, we can remove this hack. */}\n \n User Management\n \n \n Territory Management\n \n {/* END HACK */}\n \n \n );\n }\n);\n\nconst checkFullScreenForIntercom = (): void => {\n if (windowActions.isInFullScreen()) {\n windowActions.exitFullScreen();\n }\n};\n\n//Using React.memo messes up the displayName property of the component - set it here\nUserDropdown.displayName = \"UserDropdown\";\n\nexport default withRouter(UserDropdown);\n","export const currentEnvByUrl = (): string => {\n // Loop to find env, if none then it's prod\n const envs = [\"local\", \"qat\", \"uat\"];\n let currentEnv = \"prod\";\n\n for(let i=0; i -1) {\n currentEnv = envs[i];\n break;\n }\n }\n\n return currentEnv;\n};\n\nexport const createEnvUrlString = (): string => {\n const currentEnv = currentEnvByUrl();\n switch (currentEnv) {\n case \"local\":\n return \"-dev\";\n case \"prod\":\n return \"\";\n default:\n return \"-\" + currentEnv;//qat, uat\n }\n};\n\nexport const createEnvUrlStringForPersona = (): string => {\n const currentEnv = currentEnvByUrl();\n switch (currentEnv) {\n case \"local\":\n return \"-local\";\n case \"prod\":\n return \"\";\n default:\n return \"-\" + currentEnv;//qat, uat\n }\n};\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"#body {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n height: 100vh;\\n width: 100vw;\\n background-color: #f7f8fa;\\n}\\n\\n.hidden {\\n visibility: hidden;\\n}\\n\\n.report-pdf-content {\\n width: 100%;\\n height: 100%;\\n overflow-y: scroll;\\n}\\n\\n/* ant overrides */\\n\\ninput:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {\\n background-color: rgb(232, 240, 254) !important;\\n background-image: none !important;\\n color: rgb(0, 0, 0) !important;\\n}\\n\\n.ant-table-row.selected {\\n background-color: #ededed;\\n}\\n\\n/* google map overrides */\\n.fvp-container .gm-style-iw button {\\n display: none !important;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { AiOutlineQuestionCircle } from \"@react-icons/all-files/ai/AiOutlineQuestionCircle\";\nimport { FiCheck } from \"@react-icons/all-files/fi/FiCheck\";\nimport { FiEdit3 } from \"@react-icons/all-files/fi/FiEdit3\";\nimport { FiLoader } from \"@react-icons/all-files/fi/FiLoader\";\nimport { FiPrinter } from \"@react-icons/all-files/fi/FiPrinter\";\nimport { FiZap } from \"@react-icons/all-files/fi/FiZap\";\nimport { Modal, Popover } from \"antd\";\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport * as GPSInsightsActions from \"../../../../Actions/GPSInsightsActions\";\nimport {\n resetGpsInsightResults,\n updateJobTitle\n} from \"../../../../Actions/GPSInsightsActions\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { ReportTypeEnum } from \"../../../../Enums/ReportTypeEnum\";\nimport { getAllReportsLink } from \"../../../../Logic/ReportLogic\";\nimport { IGCPBigQueryJob, IUser } from \"../../../../Models/Models\";\nimport { gpsPrintReadySelector } from \"../../../../Reducers/Selectors/GPSInsightsSelectors\";\nimport { userSelector } from \"../../../../Reducers/Selectors/UserSelectors\";\nimport {\n ReportActionButton,\n ReportH4,\n ReportHeaderInnerWrap,\n ReportHeaderWrap,\n ReportSharingMenu\n} from \"../../../Common/\";\nimport { HideUpToTabletXtraLarge } from \"../../../Common/DigitalShare/DigitalShareCommonStyles\";\nimport EditInput from \"../../../Common/EditInput\";\nimport { ReportBackLink } from \"../../../Common/ReportComponents/ReportBackLink\";\nimport {\n DateVerticalBorder,\n GPSHeaderButtonWrap,\n GPSReportHeaderContainer,\n GPSReportHeaderContentContainer,\n LogoVerticalBorder\n} from \"../Styled\";\nimport { GPSHeaderDateBlock } from \"./GPSHeaderDateBlock\";\n\ninterface GPSHeaderProps {\n job: IGCPBigQueryJob[];\n isSharing: boolean;\n loadingSaveToScout: boolean;\n onPrintClick: () => void;\n onShareClick: () => void;\n}\n\nconst GPSHeader: FunctionComponent = (\n props: GPSHeaderProps\n) => {\n const { job, isSharing } = props;\n const dispatch = useDispatch();\n const [editing, setEditing] = useState(false);\n const [loading, setLoading] = useState(false);\n const [printReady, setPrintReady] = useState(false);\n\n const [viewVideo, setViewVideo] = useState(false);\n const [newReportName, setNewReportName] = useState(\n props.job[0].title\n );\n const iconFill = \"#515151\";\n\n const printReadyCountdown = useSelector(gpsPrintReadySelector);\n const user: IUser = useSelector(userSelector);\n const userID = user?.userID;\n\n /*\n Master control switch for removing the print button/\n If true, do not render under any circumstance.\n If false, fall back to any other logic controlling its render\n */\n const masterRemovePrintButton = false;\n\n useEffect(() => {\n viewVideo ? videoPlayStop(\"play\") : videoPlayStop(\"stop\");\n }, [viewVideo]);\n\n useEffect(() => {\n let timeout = null;\n\n if (printReadyCountdown && !printReady) {\n timeout = setTimeout(() => {\n setPrintReady(true);\n }, 3000);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [printReadyCountdown]);\n\n const videoPlayStop = (action: \"play\" | \"stop\") => {\n const video = document.getElementById(\n \"RetailMatchVideo\"\n ) as HTMLVideoElement;\n if (video) {\n switch (action) {\n case \"play\":\n video.play();\n break;\n case \"stop\":\n default:\n video.pause();\n video.currentTime = 0;\n break;\n }\n }\n };\n\n const onEditClick = () => {\n setEditing(true);\n };\n\n const onCancelEditClick = () => {\n setNewReportName(props.job[0].title);\n setEditing(false);\n };\n\n const onNewReportName = (event: React.ChangeEvent) => {\n setNewReportName(event.target.value);\n };\n\n const onSubmit = () => {\n setLoading(true);\n updateJobTitle(props.job[0].jobId, newReportName).then(() => {\n // Refresh left nav to get new name\n if ((window as any).scout) {\n (window as any).scout.interop.api.refreshMobilyticsVisitorsList();\n }\n setEditing(false);\n setLoading(false);\n });\n };\n\n const standardReportNameDisplay = (\n <>\n {newReportName}\n {!isSharing && (\n \n \n \n )}\n \n );\n\n const handleViewAll = (): void => {\n resetGpsInsightResults();\n const link = getAllReportsLink(user);\n window.location.href = link;\n };\n\n const getSaveToScoutIcon = (): JSX.Element => {\n const iconSize = \"18px\";\n if (job[0].viewInScout) {\n return ;\n } else if (props.loadingSaveToScout) {\n return ;\n }\n\n return ;\n };\n\n const getSaveToScoutTitle = (): string => {\n let verbiage = \"\";\n if (job[0].viewInScout) {\n verbiage = \"Saved to Scout\";\n } else if (props.loadingSaveToScout) {\n verbiage = \"Loading\";\n } else {\n verbiage = \"Save to Scout\";\n }\n return verbiage;\n };\n\n return (\n \n \n \n \n \n \n \n
    \n \n {editing ? (\n \n ) : (\n standardReportNameDisplay\n )}\n \n
    \n \n {job[1] && (\n <>\n \n \n \n )}\n
    \n
    \n \n }\n noPadding={true}\n style={{ marginRight: \"8px\", width: \"38px\" }}\n clickCallback={() => {\n setViewVideo(true);\n }}\n />\n {\n setViewVideo(false);\n }}\n footer={null}\n width={700}\n >\n \n \n Your browser does not support the video tag.\n \n \n {!isSharing ? (\n <>\n {\n if (!job[0].viewInScout) {\n dispatch(GPSInsightsActions.saveToScout(job[0]));\n }\n }}\n color=\"black\"\n disabled={job[0].viewInScout || job[0].uid !== userID}\n icon={getSaveToScoutIcon()}\n style={{ marginRight: \"8px\", width: \"38px\" }}\n noPadding={true}\n />\n \n \n ) : null}\n {featureFlags.DigitalShare && !isSharing && !masterRemovePrintButton && (\n \n PDF reports will open in a new tab or window.\n
    \n If you have a pop-up blocker installed, you may need to\n add this site to your whitelist/exclusions.\n \n ) : (\n Report loading, please wait\n )\n }\n trigger=\"hover\"\n placement=\"top\"\n >\n \n }\n noPadding={true}\n style={{ marginRight: \"8px\", width: \"38px\" }}\n clickCallback={() => {\n props.onPrintClick();\n }}\n disabled={!printReady}\n />\n \n \n )}\n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default GPSHeader;\n","import styled, { css } from \"styled-components\";\nimport { device } from \"../../../../globalStyles/\";\nimport { ButtonWrap } from \"../../../Common\";\n\nexport const Wrapper = styled.div`\n margin-top: 1rem;\n display: flex;\n position: relative;\n height: 500px;\n`;\n\nexport const MapDropdownWrapper = styled.div`\n margin: 5px;\n box-shadow: -1px 2px 21px -10px rgba(49, 49, 49, 1);\n`;\n\nexport const MapDropdownFlexWrapper = styled.div`\n position: absolute;\n display: flex;\n flex-direction: row;\n top: 10px;\n left: 10px;\n`;\n\nexport const GPSReportHeaderContainer = styled.div`\n ${device.desktop} {\n display: flex;\n align-items: center;\n }\n`;\n\nexport const GPSReportHeaderContentContainer = styled.div`\n display: flex;\n width: 100%;\n justify-content: space-between;\n`;\n\nexport const GPSHeaderButtonWrap = styled(ButtonWrap)`\n width: 180px;\n margin-left: 10px;\n &.sharing {\n width: 38px;\n }\n`;\n\nexport const MapBottomRightButtonWrapper = styled.div`\n position: absolute;\n bottom: 20px;\n right: 10px;\n`;\n\nexport const MapCenterBottomRightButtonWrapper = styled.div`\n position: absolute;\n bottom: 75px;\n right: 10px;\n`;\n\nexport const ListOuterWrapper = styled.div`\n padding: 1rem;\n`;\n\nexport const ListInnerWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 1rem;\n`;\n\nexport const RangeWrapper = styled.div`\n margin: 15px 0;\n width: 100%;\n ${device.mobileL} {\n width: 50%;\n max-width: 225px;\n }\n`;\n\nexport const DateBlockWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const DateBlockContainer = styled.div`\n padding: 8px 0 24px 0;\n ${device.mobileL} {\n display: flex;\n align-items: flex-end;\n }\n`;\n\nexport const DateBlock = styled.div`\n padding: 8px;\n h5 {\n margin-bottom: 2px;\n }\n`;\n\nconst VerticalBorderStyles = css`\n border-right: 1px solid lightgray;\n margin: 0 28px 15px;\n display: block;\n`;\n\nexport const DateVerticalBorder = styled.div`\n ${VerticalBorderStyles}\n height: 42px;\n`;\n\nexport const LogoVerticalBorder = styled.div`\n display: none;\n ${device.desktop} {\n ${VerticalBorderStyles}\n height: 58px;\n }\n`;\n\nexport const DateBlockHeaderWrap = styled.div`\n display: flex;\n align-items: center;\n margin: 35px 0 10px;\n`;\n\nexport const GPSBenchmarkButtonWrap = styled.div`\n height: 40px;\n display: flex;\n marginbottom: 1rem;\n`;\n","import styled from \"styled-components\";\nimport { Card } from \"antd\";\n\nexport const SourceCard = styled(Card)`\n .ant-card-body {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n img {\n margin-bottom: 1rem;\n }\n &.selected {\n background-color: #000;\n color: #fff;\n }\n`;\n\nexport const BrandCard = styled(Card)`\n &.selected {\n background-color: #000;\n color: #fff;\n }\n .ant-card-head,\n .ant-card-body {\n color: inherit;\n }\n`;\n\nexport const MapControlsCard = styled(Card)`\n margin-right: 16px;\n margin-bottom: 16px;\n`;\n","import styled from \"styled-components\";\n\nexport const Tip = styled.div`\n background-color: rgb(242, 248, 255);\n padding: 1rem;\n margin-top: 1rem;\n`;\n","import styled from \"styled-components\";\n\nexport const MapControlsShrinkButton = styled(\"div\")`\n height: 20px;\n width: 20px;\n background-image: url(\"/Images/MobileInsights/minimize.svg\");\n cursor: pointer;\n`;\n\nexport const MapControlsExpandButton = styled(\"div\")`\n background: #fff;\n height: 48px;\n width: 48px;\n border-radius: 50%;\n background-image: url(\"/Images/MobileInsights/sliders.svg\");\n background-position: 50% 50%;\n background-repeat: no-repeat;\n cursor: pointer;\n box-shadow: -1px 2px 21px -10px rgba(49, 49, 49, 1);\n`;\n\nexport const MapCenterButton = styled(\"div\")`\n background: #fff;\n height: 48px;\n width: 48px;\n border-radius: 50%;\n background-image: url(\"/Images/MobileInsights/center-icon.svg\");\n background-position: 50% 50%;\n background-repeat: no-repeat;\n cursor: pointer;\n box-shadow: -1px 2px 21px -10px rgba(49, 49, 49, 1);\n`;\n\nexport const GPSBenchmarkButton = styled(\"div\")`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 50%;\n max-width: 184px;\n border: 1px solid #d3dfdc;\n opacity: 50%;\n cursor: pointer;\n\n &.gps-benchmark-button-selected {\n background-color: #434a54;\n color: #fff;\n border: 0;\n opacity: 100%;\n }\n\n &.gps-benchmark-button-leftmost {\n border-radius: 4px 0 0 4px;\n border-right: 1px solid #d3dfdc;\n }\n\n &.gps-benchmark-button-rightmost {\n border-radius: 0 4px 4px 0;\n }\n\n &.gps-benchmark-button-middle {\n border-radius: 0;\n border-right: 1px solid #d3dfdc;\n }\n`;\n\nexport const GPSBenchmarkButtonEllipsis = styled(\"span\")`\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding: 0 1em;\n line-height: 1.2em;\n`;\n","import styled from \"styled-components\";\nimport { Button } from \"antd\";\n\nexport const GeographyResult = styled.div`\n border: 1px solid #ededed;\n width: 260px;\n position: absolute;\n top: 1rem;\n right: 1rem;\n background-color: #fff;\n border-radius: 3px;\n`;\n\nexport const Header = styled.div`\n background-color: #000;\n color: #fff;\n padding: 1rem;\n border-radius: 3px;\n`;\n\nexport const Item = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 1rem;\n border-bottom: 1px solid #ededed;\n`;\n\nexport const Info = styled.div`\n div {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n width: 170px;\n }\n`;\n\nexport const CloseButton = styled(Button)`\n margin-left: 1rem;\n background-color: rgb(245, 245, 246);\n color: rgb(236, 52, 53);\n transition: 0.2s ease all;\n &:hover {\n color: rgb(255, 255, 255);\n background-color: rgb(236, 52, 53);\n border-color: rgb(236, 52, 53);\n }\n`;\n","import { Popover } from \"antd\";\nimport React, { useState } from \"react\";\nimport { FiEdit3 } from \"@react-icons/all-files/fi/FiEdit3\";\nimport { useDispatch } from \"react-redux\";\nimport {\n updateMobilyticsJob,\n updatePolygonName,\n} from \"../../../../Actions/Actions\";\nimport { IGCPBigQueryJob } from \"../../../../Models/Models\";\nimport {\n firstLetterCapitalizer,\n ReportH4,\n PolygonNameWithCircle,\n} from \"../../../Common\";\nimport EditInput from \"../../../Common/EditInput\";\nimport styled from \"styled-components\";\n\ninterface GPSHeaderDateBlockProps {\n job: IGCPBigQueryJob;\n jobIndex: number;\n isSharing: boolean;\n}\n\nconst GPSHeaderDateBlockP = styled.p`\n line-height: normal;\n`;\n\nexport const GPSHeaderDateBlock = (props: GPSHeaderDateBlockProps) => {\n const [editing, setEditing] = useState(false);\n const [loading, setLoading] = useState(false);\n const [newName, setNewName] = useState(props.job.jobPolygon.name);\n\n const dispatch = useDispatch();\n\n const { job } = props;\n const fromDateObj = new Date(job.queryFromDateTime);\n const toDateObj = new Date(job.queryToDateTime);\n\n const lowercase = job.milesLessOrGreater.toLowerCase();\n const initCap = lowercase.charAt(0).toUpperCase() + lowercase.slice(1);\n const miles = job.miles === 1 ? \"mile\" : \"miles\";\n const distanceFilterText\n = job.milesLessOrGreater === \"GREATER\" && job.miles === 0\n ? \"Household Distance Filter: None\"\n : `Includes Households ${initCap} than ${job.miles} ${miles}`;\n\n const dateFormatter = (date: Date): string => {\n return `${\n Number(date.getMonth()) + 1\n }/${date.getDate()}/${date.getFullYear()}`;\n };\n\n const timeFormatter = (date: Date): string => {\n return `${date.toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}`;\n };\n\n const dateTimeFormatter = (startDate: Date, endDate: Date): string => {\n return `${dateFormatter(startDate)} - ${dateFormatter(\n endDate\n )} ${timeFormatter(startDate)} - ${timeFormatter(endDate)}`;\n };\n\n const onEditClick = () => {\n setEditing(true);\n };\n\n const onNewNameChange = (event: React.ChangeEvent) => {\n setNewName(event.target.value);\n };\n\n const onCancelEditClick = () => {\n setNewName(props.job.jobPolygon.name);\n setEditing(false);\n };\n\n const onSubmit = () => {\n setLoading(true);\n updatePolygonName(props.job.jobId, newName).then((newJob) => {\n // Refresh left nav to get new polygon name\n if((window as any).scout) {\n (window as any).scout.interop.api.refreshMobilyticsVisitorsList();\n }\n dispatch(updateMobilyticsJob(newJob));\n setEditing(false);\n setLoading(false);\n });\n };\n\n const place = props.job?.mobilyticsPlace;\n if (place) {\n place.address = firstLetterCapitalizer(place.address);\n place.city = firstLetterCapitalizer(place.city);\n }\n\n const standardNameDisplay = (\n <>\n {job.jobPolygon.name}\n {!props.isSharing && (\n \n \n \n )}\n \n );\n\n return (\n
    \n \n {editing ? (\n \n ) : (\n standardNameDisplay\n )}\n \n }\n />\n {place && (\n \n {`${place.address}, ${place.city} ${place.state} ${place.zipcode}`}\n \n )}\n \n {dateTimeFormatter(fromDateObj, toDateObj)}\n
    \n {distanceFilterText}\n
    \n
    \n );\n};\n","import { Button, Col, DatePicker, Input, Modal, Row, Select } from \"antd\";\nimport { RangePickerValue } from \"antd/lib/date-picker/interface\";\nimport React, { useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport * as GPSInsightsActions from \"../../../Actions/GPSInsightsActions\";\nimport { getBrand } from \"../../../Actions/GPSInsightsActions\";\nimport { GET_BRAND_SUCCESS } from \"../../../Actions/Types\";\nimport { IBrand } from \"../../../Models/IBrand\";\nimport { IRootReducer } from \"../../../Models/IRootReducer\";\nimport { Loading } from \"../../Common/Loading/Loading\";\nimport ItemMap from \"./ItemMap\";\nimport {\n BrandCard,\n CloseButton,\n GeographyResult,\n Header,\n Info,\n Item,\n SourceCard,\n Tip,\n Wrapper\n} from \"./Styled\";\n\ninterface IGPSInsightsFormProps { }\ninterface IGPSInsightsFormStore {\n loadingBrand: boolean;\n brand: IBrand | null;\n}\nenum MobileInsightStep {\n Source,\n Category,\n Brand,\n Geography,\n Time,\n Benchmark,\n}\nenum Category {\n Retail,\n Restaurant,\n Healthcare,\n}\nenum GeographyType {\n Blockgroup,\n ZipCode,\n County,\n DMA,\n State,\n National,\n}\nenum Source {\n Polygons,\n Category,\n Brand,\n}\n\nconst getLoadingBrand = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.loadingBrand,\n (loadingBrand: boolean) => loadingBrand\n);\n\nconst getCurrentBrand = createSelector(\n (state: IRootReducer) => state.mobilyticsReportOutput.brand,\n (brand: IBrand) => brand\n);\n\nexport const GPSInsightsForm = (props: IGPSInsightsFormProps): JSX.Element => {\n /** misc */\n const dispatch = useDispatch();\n /** store */\n const loadingBrand: boolean = useSelector(getLoadingBrand);\n const brand: IBrand = useSelector(getCurrentBrand);\n /** state */\n const [step, setStep] = useState(MobileInsightStep.Source);\n const [source, setSource] = useState(null);\n const [category, setCategory] = useState(null);\n const [geographyType, setGeographyType]\n = useState(null);\n const [selectedBrand, setSelectedBrand] = useState(null);\n const [brandSearchTerm, setBrandSearchTerm] = useState(\"\");\n\n const handleCategoryChange = (category: Category): void => {\n setCategory(category);\n };\n\n const handleSearchBrands = (value: string): void => {\n const trimmedTerm: string = value.trim();\n dispatch(getBrand(trimmedTerm));\n setBrandSearchTerm(trimmedTerm);\n };\n\n const handleGeographyTypeChange = (type: GeographyType): void => {\n setGeographyType(type);\n };\n\n const handleGeographyTypeSearch = (value: string): void => { };\n\n const handleStepChange = (forwards: boolean): void => {\n switch (step) {\n case MobileInsightStep.Source: {\n if (forwards) {\n setStep(MobileInsightStep.Category);\n }\n break;\n }\n case MobileInsightStep.Category: {\n if (forwards) {\n setStep(MobileInsightStep.Brand);\n } else {\n setCategory(null);\n setStep(MobileInsightStep.Source);\n }\n break;\n }\n case MobileInsightStep.Brand: {\n if (forwards) {\n setStep(MobileInsightStep.Geography);\n } else {\n setSelectedBrand(null);\n /** reset the brand - they need to search again */\n dispatch({\n type: GET_BRAND_SUCCESS,\n data: \"\",\n });\n setStep(MobileInsightStep.Category);\n }\n break;\n }\n case MobileInsightStep.Geography: {\n if (forwards) {\n setStep(MobileInsightStep.Time);\n } else {\n setGeographyType(null);\n setStep(MobileInsightStep.Brand);\n }\n break;\n }\n case MobileInsightStep.Time: {\n if (forwards) {\n setStep(MobileInsightStep.Benchmark);\n } else {\n setStep(MobileInsightStep.Geography);\n }\n break;\n }\n case MobileInsightStep.Benchmark: {\n if (!forwards) {\n setStep(MobileInsightStep.Time);\n }\n break;\n }\n }\n };\n\n const handleGeographyResultRemove = (): void => { };\n\n const handleSelectSource = (source: Source): void => {\n setSource(source);\n };\n\n const getNextDisabledState = (): boolean => {\n let disabled = false;\n switch (step) {\n case MobileInsightStep.Source: {\n disabled = source === null;\n break;\n }\n case MobileInsightStep.Category: {\n disabled = category === null;\n break;\n }\n case MobileInsightStep.Brand: {\n disabled = selectedBrand === null;\n break;\n }\n case MobileInsightStep.Geography: {\n disabled = geographyType === null;\n break;\n }\n case MobileInsightStep.Time: {\n break;\n }\n case MobileInsightStep.Benchmark: {\n break;\n }\n }\n return disabled;\n };\n\n const handleTimeRangeChange = (e: RangePickerValue): void => {\n console.log(e);\n };\n\n const handleBrandSelect = (b: IBrand): void => {\n setSelectedBrand(b);\n };\n\n const closeModal = (): void => {\n dispatch(GPSInsightsActions.setGpsInsightModalVisible(false));\n };\n\n return (\n handleStepChange(false)}\n >\n Back\n \n ),\n handleStepChange(true)}\n >\n Next\n ,\n ]}\n >\n {step === MobileInsightStep.Source && (\n <>\n

    HOW WOULD YOU LIKE TO START

    \n
    \n Select from your custom polygons or start from a standard geography\n
    \n \n \n handleSelectSource(Source.Polygons)}\n className={`${source === Source.Polygons && \"selected\"}`}\n >\n \n My Saved Polygons\n \n \n \n handleSelectSource(Source.Category)}\n className={`${source === Source.Category && \"selected\"}`}\n >\n \n Choose Category\n \n \n \n handleSelectSource(Source.Brand)}\n className={`${source === Source.Brand && \"selected\"}`}\n >\n \n Choose Brand\n \n \n \n \n )}\n {step === MobileInsightStep.Category && (\n <>\n

    SELECT A CATEGORY

    \n
    Select either Retail, Restaurant, or Healthcare
    \n \n Retail\n \n Restaurant\n \n \n Healthcare\n \n \n \n

    \n Tip\n

    \n

    \n The category is based off of machine learning forensics, machine\n unlearning learnings, and also some random Udemy course that was\n purchased at full price. Good luck, choose wisely - or if you\n don't have time, just pick one.\n

    \n
    \n \n )}\n {step === MobileInsightStep.Brand && (\n <>\n

    SELECT A BRAND

    \n
    Search for a Brand
    \n \n Search\n \n }\n disabled={loadingBrand}\n loading={loadingBrand}\n onChange={(e) => setBrandSearchTerm(e.target.value.trim())}\n onSearch={(value) => handleSearchBrands(value)}\n />\n {loadingBrand && (\n \n )}\n {!loadingBrand && brand && (\n handleBrandSelect(brand)}\n />\n )}\n \n

    \n Tip\n

    \n

    \n Brand searching is simply searching for a Brand. Now that you have\n this powerful information, search.\n

    \n
    \n \n )}\n {step === MobileInsightStep.Geography && (\n <>\n

    SELECT A GEOGRAPHY

    \n
    Select from a Common Geography
    \n
    \n \n \n Blockgroup\n \n \n Zip Code\n \n County\n DMA\n State\n \n National\n \n \n handleGeographyTypeSearch(e.target.value)}\n />\n
    \n \n }\n mapElement={
    }\n />\n \n
    3 Locations Found
    \n \n \n
    \n McDonalds\n
    \n
    Fort Worth, TX. 76111
    \n
    \n handleGeographyResultRemove()}>\n X\n \n
    \n \n \n
    \n Taco Bell\n
    \n
    North Richland Hills, TX. 76123
    \n
    \n handleGeographyResultRemove()}>\n X\n \n
    \n \n \n
    \n Grandys\n
    \n
    Dangersville, TN. 64287
    \n
    \n handleGeographyResultRemove()}>\n X\n \n
    \n
    \n \n \n )}\n {step === MobileInsightStep.Time && (\n <>\n

    Choose a range of time

    \n
    Narrow your results
    \n handleTimeRangeChange(e)}\n />\n \n )}\n {step === MobileInsightStep.Benchmark && (\n <>\n

    Add a Benchmark

    \n
    Benchmarking adding....here
    \n

    Content here

    \n \n )}\n \n );\n};\n\nfunction getCategoryTestData() {\n return [\n {\n name: \"QSR\",\n id: 1,\n },\n {\n name: \"Fast Casual\",\n id: 2,\n },\n {\n name: \"Fine Dining\",\n id: 3,\n },\n {\n name: \"Unfine Dining\",\n id: 4,\n },\n ];\n}\n","import React, { useState } from \"react\";\nimport { GoogleMap, Marker, Polygon, withGoogleMap } from \"react-google-maps\";\n\ninterface IMapCenter {\n lat: number;\n lng: number;\n}\n\nconst ItemMap = (): JSX.Element => {\n /** misc */\n const googleMap: GoogleMap = null;\n const mapBounds = {\n east: 0,\n north: 0,\n south: 0,\n west: 0,\n };\n const latArray: number[] = [];\n const lngArray: number[] = [];\n const item: any = null; /** point or polygon */\n const mapHeight = 32;\n const mapWidth = 32;\n const googleMapOptions: google.maps.MapOptions = {\n disableDefaultUI: true,\n };\n const defaultMapCenter = {\n // overwrite depending on object type\n lat: 0,\n lng: 0,\n };\n const polygonCoordinates: any[] = [];\n const markerIcon = null;\n const mapData = null;\n\n const [mapZoom, setMapZoom] = useState(6);\n const [mapCenter, setMapCenter] = useState({\n lat: 32.7079,\n lng: -96.9209,\n });\n\n return (\n \n {mapData}\n \n );\n};\n\nexport default withGoogleMap(ItemMap);\n","import React, { FunctionComponent, useEffect, useState } from \"react\";\nimport {\n IGPSData,\n IGCPBigQueryJob,\n IPolygon,\n IProfileRecord,\n IGPSProfile,\n IGPSBenchmarkCommonData,\n} from \"../../../Models/Models\";\nimport { ReportInnerWrapper } from \"../../Common/\";\nimport { HHChar } from \"./HHCharacteristics/HHCharContainer\";\nimport GPSInsightsVolume from \"./Volume/GPSInsightsVolume\";\nimport GPSTradeArea from \"./TradeArea/GPSTradeArea\";\nimport VisitorBehaviorsContainer from \"./VisitorBehaviors/VisitorBehaviorsContainer\";\nimport { IMobilyticsBenchmarkItem } from \"../../../Models/IMobilyticsBenchmarkItem\";\nimport { RenderType } from \"../../../Enums/RenderType\";\nimport { DigitalShareAppType } from \"../../../Enums/DigitalShareAppType\";\n\ninterface IGPSInsightsReportProps {\n storeData: IGPSData[];\n polygons: IPolygon[];\n selectedGpsInsightForReportView: IGCPBigQueryJob[];\n benchmarkData?: IGPSData;\n benchmarkCommonData?: IGPSBenchmarkCommonData;\n benchmarkItems: IMobilyticsBenchmarkItem[];\n currentBenchmarkPolygon: IPolygon;\n renderType: RenderType;\n}\n\nexport const GPSInsightsReport: FunctionComponent = (\n props: IGPSInsightsReportProps\n) => {\n const {\n storeData,\n polygons,\n selectedGpsInsightForReportView,\n benchmarkData,\n benchmarkCommonData,\n renderType,\n } = props;\n\n const [mapReady, setMapReady] = useState(false);\n\n const mutateSegData = (data: IGPSProfile[]): IProfileRecord[] => {\n return data.map((item: IGPSProfile) => {\n return {\n seg: item.segment,\n pct: item.actualPercent,\n core: item.core,\n index: item.index,\n };\n });\n };\n\n const location1Name\n = selectedGpsInsightForReportView.length > 0\n ? selectedGpsInsightForReportView[0].jobPolygon.name\n : null;\n const location2Name\n = selectedGpsInsightForReportView.length > 1\n ? selectedGpsInsightForReportView[1].jobPolygon.name\n : null;\n\n const onMapReady = () => {\n setMapReady(true);\n };\n\n /** Failsafe for \"mapReady\" state if the Google map fails to load */\n useEffect(() => {\n const onMapReadyFailsafe = setTimeout(() => setMapReady(true), 10000);\n return () => clearTimeout(onMapReadyFailsafe);\n }, []);\n\n return (\n <>\n {\n mapReady &&\n <>\n \n \n \n \n }\n \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { IProfileRecord, IGPSData } from \"../../../../Models/Models\";\nimport { IdealVisitorSegments } from \"./IdealVisitorSegments\";\nimport HHCharChartCharts from \"./HHCharChartCharts\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\n\nimport {\n ReportH1,\n ReportScrollableSection,\n ReportSectionNumber,\n ReportSectionHeader,\n AnimatedReportCard,\n} from \"../../../Common\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\n\ninterface HHCharProps {\n location1Name: string;\n location2Name?: string;\n storeProfileData: IProfileRecord[];\n storeData: IGPSData;\n benchmarkData?: IGPSData;\n benchmarkProfileData?: IProfileRecord[];\n renderType: RenderType;\n app: DigitalShareAppType;\n}\n\nexport const HHChar: FunctionComponent = (props: HHCharProps) => {\n return (\n \n \n 02\n Household Characteristics\n \n \n \n {\" \"}\n {/* ERY: I'm aware this is a dumb name, but I like to say it and there are a lot of charts in here */}\n \n \n );\n};\n","import React, { FunctionComponent, useState, useEffect, useRef } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { ISegment, IProfileRecord } from \"../../../../Models/Models\";\nimport { FiExternalLink } from \"@react-icons/all-files/fi/FiExternalLink\";\nimport { FiCheck } from \"@react-icons/all-files/fi/FiCheck\";\nimport { GiAchillesHeel } from \"@react-icons/all-files/gi/GiAchillesHeel\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\n\nimport { PolygonNameWithCircle, PsychProfSumm } from \"../../../Common/\";\n\nimport styled from \"styled-components\";\nimport { Modal, Radio } from \"antd\";\n\nimport {\n ReportCheckbox,\n ReportH4,\n ChevronDown,\n ColSegInfoWrapper,\n ColSegInfo,\n Menu,\n MenuLink,\n SegCell,\n SortSegRow,\n SegCirc,\n SortSegBody,\n SortSegFooter,\n SortSegHead,\n SortSegHeadActions,\n SegImg,\n SegDetails,\n SegLink,\n useWindowResize,\n SegCircTextL,\n SegCircTextSm,\n SegCellTextL,\n SegCellTextSm,\n SegCellTextSmB,\n getPrettyNumber,\n SegContentSecHeader,\n SegFooterSubText,\n SortSegCardBreakoutContainer,\n SegCardBreakoutItem,\n SegCardBreakoutVerticalBreak,\n findSegIcon,\n SegCardRow,\n SegCardCol,\n SegCardSpacer,\n SegCardHead,\n SegCardHeaderRow,\n determinePropensityText,\n SortSegCellWrapper,\n BuxTooltip,\n AscIcon,\n DescIcon,\n EmptyResultsCell,\n} from \"../../../Common\";\nimport { deviceWidth } from \"../../../../globalStyles\";\nimport { SortSegCellWrapperWithActivePolygon } from \"./HHCharacteristicsStyles\";\nimport GPSPsychProfileShare from \"./GPSPsychProfileShare\";\nimport { gpsMosaicSegmentsSelector } from \"../../../../Reducers/Selectors/GPSInsightsSelectors\";\n\ninterface IdealVisitorSegmentsProps {\n location1Name: string;\n location2Name?: string;\n storeProfileData: IProfileRecord[];\n benchmarkProfileData?: IProfileRecord[];\n renderType: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n}\ninterface IProfCardContent {\n segment: ISegment;\n seg1: IProfileRecord;\n seg2?: IProfileRecord;\n}\ninterface ISortOption {\n dir: \"asc\" | \"desc\";\n type: \"%\" | \"prop\" | null;\n}\n\nconst StyledCheck = styled(FiCheck)`\n width: 17px;\n height: 17px;\n margin-right: 2px;\n flex-shrink: 0;\n`;\n\nconst PctNumWrapper = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n height: 30px;\n`;\n\nexport const IdealVisitorSegments: FunctionComponent\n = (props: IdealVisitorSegmentsProps) => {\n const {\n location1Name,\n location2Name,\n storeProfileData,\n benchmarkProfileData,\n } = props;\n const mosaicSegments = useSelector(gpsMosaicSegmentsSelector);\n\n const colors = { P: \"#fd504d\", S: \"#5e73ff\", N: \"#c4c4c4\", T: \"#c4c4c4\" };\n const propensityToolTipText = `Visitor propensity compares the distribution of segments observed at the selection to the distribution of segments across all households in the selection’s trade area. The ratio between these percentages for each segment defines the propensity for households of that segment to be a visitor to the selected place (as compared to all other households). For example, a propensity of 2.5 indicates the segment is 2.5 times more likely than the average household in the trade area to visit the selection. PRIMARY AND SECONDARY VISITOR HOUSEHOLDS HAVE A PROPENSITY OF GREATER THAN 1.0x AND REPRESENT MORE THAN 1% OF VISITORS.`;\n\n const [filterOpen, setIsFilterMenuOpen] = useState(false);\n const [sort1Open, setIsSort1MenuOpen] = useState(false);\n const [sort2Open, setIsSort2MenuOpen] = useState(false);\n const [filters, setFilters] = useState([\"P\", \"S\"]);\n const [profData, setProfData] = useState(null);\n const [visibleModal, setVisibleModal] = useState(false);\n const [modalContent, setModalContent] = useState(null);\n const [sortCol, setSortCol] = useState<1 | 2>(1);\n const [sort1Option, setSort1Option] = useState({\n dir: \"desc\",\n type: \"prop\",\n });\n const [sort2Option, setSort2Option] = useState({\n dir: \"desc\",\n type: \"prop\",\n });\n\n const windowSize = useWindowResize();\n\n useEffect(() => {\n if (!profData) {\n filterData();\n }\n });\n\n useEffect(() => {\n if (profData) {\n filterData();\n }\n }, [filters]);\n\n useEffect(() => {\n if (modalContent) {\n setVisibleModal(true);\n }\n }, [modalContent]);\n\n useEffect(() => {\n if (profData) {\n setProfData(\n sortData(profData, sortCol === 1 ? sort1Option : sort2Option)\n );\n }\n }, [sort1Option, sort2Option, sortCol]);\n\n const filterData = () => {\n let tempProfData = [...storeProfileData];\n if (filters.length > 0) {\n tempProfData = storeProfileData.filter((storeProf) => {\n let benchmarkCheck = false;\n if (benchmarkProfileData?.length > 0) {\n const benchmarkProfile = benchmarkProfileData.find(\n (benProfDat) => benProfDat.seg === storeProf.seg\n );\n benchmarkCheck = benchmarkProfileData\n ? filters.includes(benchmarkProfile.core)\n : false;\n } else {\n benchmarkCheck = false;\n }\n\n return filters.includes(storeProf.core) || benchmarkCheck;\n });\n }\n\n setProfData(\n sortData(tempProfData, sortCol === 1 ? sort1Option : sort2Option)\n );\n };\n\n const sortData = (\n profileData: IProfileRecord[],\n sortOption: ISortOption\n ) => {\n const sortArr = sortCol === 1 ? profileData : benchmarkProfileData; // ERY: depending on the column, I'm sorting different data\n const tempProfData = profileData; // ERY: but the profileData is what needs to be sorted in the output.\n switch (sortOption.type) {\n case \"prop\": {\n sortArr.sort((a: IProfileRecord, b: IProfileRecord) => {\n return a.index - b.index;\n });\n break;\n }\n case \"%\": {\n sortArr.sort((a: IProfileRecord, b: IProfileRecord) => {\n return a.pct - b.pct;\n });\n break;\n }\n default: {\n sortArr.sort(sortText);\n break;\n }\n }\n\n // ERY: so, sort the tempProfData based on which ever data is selected and output that. Noodly, I know. At least we don't build code for Toyota. :-P\n tempProfData.sort((a, b) => {\n const profDataA = sortArr.find((el) => el.seg === a.seg);\n const profDataB = sortArr.find((el) => el.seg === b.seg);\n return sortArr.indexOf(profDataA) - sortArr.indexOf(profDataB);\n });\n return sortOption.dir === \"asc\"\n ? [...tempProfData]\n : [...tempProfData.reverse()];\n };\n\n const sortText = (a: IProfileRecord, b: IProfileRecord): number => {\n const segA = a.seg.toLowerCase();\n const segB = b.seg.toLowerCase();\n\n if (segA < segB) return -1;\n if (segA > segB) return 1;\n return 0;\n };\n\n const onSortColChange = (e) => {\n setSortCol(e.target.value);\n };\n\n const formatFilterText = (): string => {\n let fmtStr = \"All\";\n if (filters.length > 1) {\n fmtStr = \"Primary/Secondary\";\n } else if (filters.includes(\"P\")) {\n fmtStr = \"Primary\";\n } else if (filters.includes(\"S\")) {\n fmtStr = \"Secondary\";\n }\n return fmtStr;\n };\n\n const formatSortingText = (sortObj: ISortOption): string => {\n let text = \"Segment Name\";\n switch (sortObj.type) {\n case \"prop\":\n text = \"Visitor Propensity\";\n break;\n case \"%\":\n text = \"% of Visitors\";\n break;\n default:\n break;\n }\n return text;\n };\n\n const handleMenuClick = (filterVal: \"P\" | \"S\") => {\n setIsFilterMenuOpen(false);\n\n if (filterVal) {\n // Toggle filter off if already selected\n if (filters.includes(filterVal)) {\n const ind = filters.indexOf(filterVal);\n filters.splice(ind, 1);\n } else {\n filters.push(filterVal);\n }\n setFilters([...filters]);\n } else {\n setFilters([]);\n }\n };\n\n const handleSortOptionClick = (sortCol: number, sortObj: ISortOption) => {\n if (sortCol === 2) {\n setSort2Option(sortObj);\n } else {\n setSort1Option(sortObj);\n }\n };\n\n const calcPctHH = (pct: number): string => {\n return getPrettyNumber(pct * 100, 2);\n };\n\n const psychProfileRef = useRef();\n const psychSummaryRef = useRef();\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, DigitalShareItemType.PsychographicProfile)\n ) {\n registerRef(\n props.app,\n DigitalShareItemType.PsychographicProfile,\n psychProfileRef\n );\n\n registerElement(\n props.app,\n DigitalShareItemType.PsychographicProfile,\n \"\",\n \n );\n }\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, DigitalShareItemType.PsychographicSummary)\n ) {\n const topSegs = profData.slice(0, 5); // take top 5 (can be less than 5)\n registerRef(\n props.app,\n DigitalShareItemType.PsychographicSummary,\n psychSummaryRef\n );\n\n registerElement(\n props.app,\n DigitalShareItemType.PsychographicSummary,\n \"\",\n \n );\n }\n\n return (\n <>\n <>\n \n Ideal visitor segments are based on lifestyle, life stage,\n behavioral, and consumer characteristics, based on mobile data\n observations of actual customers at the selected location(s).\n \n \n Primary Visitor}\n text={`Households 20+% more likely to visit than the average household`}\n />\n Secondary Visitor}\n text={`Households up to 19% more likely to visit than the average household`}\n />\n Incidental Visitor}\n text={`Households less likely to visit than the average household`}\n />\n \n \n \n \n \n {windowSize.width < deviceWidth.desktop ? (\n \n \n {filters.includes(\"P\") ? : null}\n Primary\n \n }\n clickCallback={() => {\n handleMenuClick(\"P\");\n }}\n className={filters.includes(\"P\") ? \"active\" : null}\n style={{ fontSize: \"12px\" }}\n />\n \n {filters.includes(\"S\") ? : null}\n Secondary\n \n }\n clickCallback={() => {\n handleMenuClick(\"S\");\n }}\n className={filters.includes(\"S\") ? \"active\" : null}\n style={{ fontSize: \"12px\" }}\n />\n \n {filters.length === 0 ? : null}All\n \n }\n clickCallback={() => {\n handleMenuClick(null);\n }}\n className={filters.length === 0 ? \"active\" : null}\n style={{ fontSize: \"12px\" }}\n />\n \n ) : (\n <>\n Show:\n {\n handleMenuClick(\"P\");\n }}\n checked={filters.includes(\"P\") ? true : false}\n >\n Primary\n \n {\n handleMenuClick(\"S\");\n }}\n checked={filters.includes(\"S\") ? true : false}\n >\n Secondary\n \n {\n handleMenuClick(null);\n }}\n checked={filters.length === 0 ? true : false}\n >\n All\n \n \n )}\n \n \n \n \n \n \n \n Visitor Propensity\n \n \n \n {location2Name && (\n \n \n \n \n \n Visitor Propensity\n \n \n \n )}\n \n \n = 5 ? \"too-tall\" : \"\"}`}\n >\n \n \n \n {location2Name && (\n \n {windowSize.width < deviceWidth.desktop\n ? \"Sort By Polygon\"\n : \"Sort Psychographic Profiles by Polygon\"}\n \n )}\n \n \n \n {location2Name && (\n \n \n {windowSize.width < deviceWidth.desktop\n ? \"Sort\"\n : \"Sort by\"}\n \n \n )}\n \n {!location2Name && (\n Sort by \n )}\n }\n >\n \n {\" \"}\n Sort Ascending\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: \"asc\",\n type: sort1Option.type,\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={sort1Option.dir === \"asc\" ? \"active\" : null}\n />\n \n \n Sort Descending\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: \"desc\",\n type: sort1Option.type,\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={sort1Option.dir === \"desc\" ? \"active\" : null}\n />\n
    \n \n {sort1Option.type === \"prop\" ? : null}\n Visitor Propensity\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: sort1Option.dir,\n type: \"prop\",\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={sort1Option.type === \"prop\" ? \"active\" : null}\n />\n \n {sort1Option.type === \"%\" ? : null}%\n of Visitors\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: sort1Option.dir,\n type: \"%\",\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={sort1Option.type === \"%\" ? \"active\" : null}\n />\n \n {!sort1Option.type ? : null}Segment\n Name\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: sort1Option.dir,\n type: null,\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={!sort1Option.type ? \"active\" : null}\n />\n \n \n \n {location2Name && (\n \n \n \n {windowSize.width < deviceWidth.desktop\n ? \"Sort\"\n : \"Sort by\"}\n \n \n \n }\n >\n \n {\" \"}\n Sort Assending\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: \"asc\",\n type: sort2Option.type,\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={sort2Option.dir === \"asc\" ? \"active\" : null}\n />\n \n \n Sort Descending\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: \"desc\",\n type: sort2Option.type,\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={sort2Option.dir === \"desc\" ? \"active\" : null}\n />\n
    \n \n {sort2Option.type === \"prop\" ? (\n \n ) : null}\n Visitor Propensity\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: sort2Option.dir,\n type: \"prop\",\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={\n sort2Option.type === \"prop\" ? \"active\" : null\n }\n />\n \n {sort2Option.type === \"%\" ? : null}%\n of Visitors\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: sort2Option.dir,\n type: \"%\",\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={sort2Option.type === \"%\" ? \"active\" : null}\n />\n \n {!sort2Option.type ? : null}\n Segmentation Name\n \n }\n clickCallback={() => {\n handleSortOptionClick(sortCol, {\n dir: sort2Option.dir,\n type: null,\n });\n }}\n style={{ fontSize: \"12px\" }}\n className={!sort2Option.type ? \"active\" : null}\n />\n \n
    \n \n )}\n
    \n \n \n {profData && profData.length > 0 ? (\n profData.map((seg1) => {\n const segment = mosaicSegments.find(\n (seg) => seg1.seg === seg.segmentKey\n );\n const seg2 = benchmarkProfileData\n ? benchmarkProfileData.find((seg) => seg1.seg === seg.seg)\n : null;\n return (\n \n \n {\n setModalContent({\n segment: segment,\n seg1: seg1,\n seg2: seg2,\n });\n }}\n style={{ cursor: \"pointer\" }}\n >\n
    \n \n
    \n
    \n {windowSize.width < deviceWidth.desktop ? (\n <>\n \n {seg1.seg}\n \n \n {segment.name}{\" \"}\n \n \n \n ) : (\n \n \n {seg1.seg}: {segment.name}\n \n
    \n {segment.description}\n
    \n \n \n View Details\n \n
    \n )}\n
    \n \n
    \n \n \n \n {calcPctHH(seg1.pct)}%\n of visitors\n \n \n \n \n \n {getPrettyNumber(seg1.index, 2)}X\n \n \n {determinePropensityText(seg1.core).toUpperCase()}\n \n \n \n \n {seg2 && (\n \n \n \n {calcPctHH(seg2.pct)}%\n of visitors\n \n \n \n \n \n {getPrettyNumber(seg2.index, 2)}X\n \n \n {determinePropensityText(seg2.core).toUpperCase()}\n \n \n \n \n )}\n
    \n );\n })\n ) : (\n \n \n \n \n \n \n Ouch! No Results!\n \n \n \n )}\n
    \n = 5 ? \"too-tall\" : \"\"}`}\n >\n \n \n \n {location2Name && (\n \n )}\n \n \n {\n setVisibleModal(false);\n }}\n footer={null}\n width=\"90%\"\n centered={true}\n bodyStyle={{ padding: \"40px 24px 24px\" }}\n style={{ maxWidth: \"900px\" }}\n >\n {modalContent && (\n <>\n \n
    \n \n
    \n
    \n \n {modalContent.segment.segmentKey}:{\" \"}\n {modalContent.segment.name}\n \n
    \n {modalContent.segment.description}\n
    \n
    \n
    \n
    \n Who We Are\n
    \n \n \n \n \n Index Value\n \n \n {modalContent.segment.segmentKey}%\n \n \n
    \n
    \n {modalContent.segment.segmentDetails.map((det) => {\n return (\n \n \n {findSegIcon(det.varNm)}\n {det.varNm}:\n \n {det.varVal}\n \n {det.idx}\n \n \n {getPrettyNumber(det.pct, 1)}%\n \n \n );\n })}\n
    \n
    \n \n \n {location1Name}\n
    \n {modalContent.segment.segmentKey}s make up{\" \"}\n {calcPctHH(modalContent.seg1.pct)}% of households\n
    \n \n \n {getPrettyNumber(modalContent.seg1.index, 2)}X{\" \"}\n {determinePropensityText(modalContent.seg1.core)}\n \n
    \n Propensity to be a Customer\n
    \n {modalContent.seg2 && location2Name && (\n <>\n \n \n {location2Name}\n
    \n {modalContent.segment.segmentKey}s make up{\" \"}\n {calcPctHH(modalContent.seg2.pct)}% of households\n
    \n \n \n {getPrettyNumber(modalContent.seg2.index, 2)}X{\" \"}\n {determinePropensityText(modalContent.seg2.core)}\n \n
    \n Propensity to be a Customer\n
    \n \n )}\n
    \n \n *Index score of the characteristics representation in{\" \"}\n {modalContent.segment.segmentKey}s compared to the US\n population. Above 100 means the variable is over-represented\n compared to the US population. Numbers on the right show the\n percentage of {modalContent.segment.segmentKey}s that exhibit\n this characteristic.\n \n \n )}\n \n \n \n );\n };\n","import styled, { css } from \"styled-components\";\nimport { SortSegCellWrapper } from \"../../../Common\";\nimport { colorTwoBright, colorTwoDark } from \"../../../../globalStyles\";\n\nconst getActivePolygonRule = (className: string, color: string) => {\n return css`\n &.${className} {\n background-color: ${color};\n\n .ant-radio-wrapper {\n color: white;\n\n .ant-radio {\n &.ant-radio-checked {\n .ant-radio-inner {\n border-color: ${color};\n }\n }\n\n &:hover,\n &:focus {\n .ant-radio-inner {\n border-color: ${color};\n }\n }\n\n .ant-radio-input {\n &:focus + .ant-radio-inner {\n border-color: ${color};\n }\n }\n\n .ant-radio-inner {\n &:after {\n background-color: ${color};\n }\n }\n }\n }\n }\n `;\n};\n\nexport const SortSegCellWrapperWithActivePolygon = styled(SortSegCellWrapper)`\n ${getActivePolygonRule(\"polygonOneActive\", colorTwoBright)}\n ${getActivePolygonRule(\"polygonTwoActive\", colorTwoDark)}\n`;\n","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { CustomerBreakoutColors } from \"../../../../globalStyles\";\nimport {\n IGPSData,\n IGPSProfile,\n IProfileRecord,\n ISegment,\n IStoreScoreRecord,\n} from \"../../../../Models/Models\";\nimport {\n determinePropensityText,\n getPrettyNumber,\n} from \"../../../Common/SharedActions\";\n\nexport interface IGPSPsychProfileShare {\n segments: ISegment[];\n topSegs: IProfileRecord[];\n polygons: string[];\n benchmarkProfileData: IProfileRecord[];\n}\n\nconst BreakoutContainer = styled(\"div\")`\n border: 1px solid #e4e4e4;\n display: flex;\n justify-content: space-around;\n align-items: center;\n padding: 18px 21px;\n`;\n\nconst BreakoutItemContainer = styled(\"div\")`\n display: flex;\n flex-direction: column;\n text-align: center;\n align-items: center;\n`;\n\nconst TableWrapper = styled.div`\n display: grid;\n height: 100%;\n grid-template-rows: 35px auto;\n grid-template-columns: 325px auto;\n`;\n\nconst CircleContainer = styled(\"div\")`\n display: flex;\n flex-direction: column;\n align-items: center;\n white-space: nowrap;\n`;\n\nconst Circle = styled(\"div\")`\n padding: 10px;\n font-weight: bold;\n margin-bottom: 3px;\n height: 48px;\n width: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst Img = styled(\"img\")`\n width: 58px;\n height: 58px;\n display: inline-block;\n border-radius: 50%;\n object-fit: cover;\n object-position: center;\n margin-right: 11px;\n`;\n\nconst Header = styled.div`\n margin-bottom: 9px;\n font-size: 20px;\n font-weight: bold;\n color: #000000;\n`;\n\ninterface IDataContainer {\n gridRowStart?: number;\n gridColumnStart?: number;\n gridColumnEnd?: number;\n}\n\nconst DataContainer = styled.div`\n grid-row-start: ${(props: IDataContainer) => props.gridRowStart};\n grid-column-start: ${(props: IDataContainer) => props.gridColumnStart};\n grid-column-end: ${(props: IDataContainer) => props.gridColumnEnd};\n display: flex;\n`;\n\nconst BreakoutText = styled.div`\n display: flex;\n margin-bottom: 5px;\n font-size: 12px;\n font-weight: bolder;\n`;\n\nconst BreakoutHighlight = styled.div`\n height: 12px;\n width: 12px;\n border-radius: 50%;\n margin-right: 4px;\n background-color: ${(props: { breakoutColor: string }) =>\n props.breakoutColor};\n`;\n\nconst SegmentValueText = (props) => {\n return (\n \n
    \n {getPrettyNumber(props.profile.pct * 100, 2)}%\n
    \n
    of Visitors
    \n
    \n );\n};\n\nconst GPSPsychProfileShare = ({\n segments,\n topSegs,\n polygons,\n benchmarkProfileData,\n}: IGPSPsychProfileShare): JSX.Element => {\n const [storeProfileData, setStoreProfileData] = useState(\n []\n );\n const [benchmarkMap, setBenchmarkMap] = useState>(\n new Map()\n );\n\n useEffect(() => {\n const baseSegments = topSegs.map((s) => s.seg);\n\n if (benchmarkProfileData?.length > 0) {\n const profileTwo = benchmarkProfileData\n .filter((s) => baseSegments.indexOf(s.seg) > -1)\n .slice(0, 5);\n\n const bMap = new Map();\n for (const seg of profileTwo) {\n bMap.set(seg.seg, seg);\n }\n\n setBenchmarkMap(bMap);\n }\n\n setStoreProfileData(topSegs);\n }, []);\n\n const getSegment = (key: string): ISegment => {\n return segments.find((seg: ISegment) => {\n return seg.segmentKey === key;\n });\n };\n\n return (\n \n
    \n Visitors are identified by combining lifestyle, lifestage, behavioral,\n and consumer characteristics data with mobile device data observations\n of actual customers at the selected locations.\n
    \n
    \n Visitor Propensity\n
    \n \n \n \n \n Primary Visitor\n \n
    \n Households 20+% more likely to visit than the average household\n
    \n
    \n \n \n \n Secondary Visitor\n \n
    \n Households up to 19% more likely to visit than the average household\n
    \n
    \n \n \n \n Incidental Visitor\n \n
    \n Households less likely to visit than the average household\n
    \n
    \n
    \n \n
    \n Top 5 Psychographic Profiles\n
    \n \n {polygons[0]}\n \n \n Visitor Propensity\n \n\n {benchmarkMap.size > 0 && (\n <>\n \n {polygons[1]}\n \n \n Visitor Propensity\n \n \n )}\n {storeProfileData.length > 0\n && storeProfileData.map((p, i) => {\n const segment = getSegment(p.seg);\n const benchmark = benchmarkMap.get(p.seg);\n\n return (\n \n \n \n
    \n \n {segment.segmentKey} {segment.name}\n
    \n
    {segment.description}
    \n \n \n 1\n ? \"7px 20px 6px 42px\"\n : \"7px 104px 6px 93px\",\n borderBottom: \"solid 1px #e4e4e4\",\n borderTop: \"solid 1px #e4e4e4\",\n borderRight: \"solid 1px #e4e4e4\",\n }}\n >\n \n \n \n {getPrettyNumber(p.index, 1)}X\n \n
    \n {determinePropensityText(p.core).toUpperCase()}\n
    \n
    \n \n {benchmark && (\n \n \n \n \n {getPrettyNumber(benchmark.index, 1)}X\n \n
    \n \n {determinePropensityText(\n benchmark.core\n ).toUpperCase()}\n \n
    \n
    \n \n )}\n
    \n );\n })}\n
    \n \n );\n};\n\nexport default GPSPsychProfileShare;\n","import React, { FunctionComponent } from \"react\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport {\n colorTwoBright,\n colorTwoDark,\n} from \"../../../../globalStyles/colors/scoutColors\";\nimport { IGPSData } from \"../../../../Models/IGPSData\";\nimport { HH_ATTR_STATIC_TEXT } from \"../../../../Util/ScoutDigitalShareUtil\";\nimport {\n formatEducation,\n formatUYN,\n ReportChartGroup,\n sortDwellingType,\n sortEducation,\n sortMergedChartData,\n sortUYN,\n formatDwelling,\n ReportH4,\n formatMarriedSingle,\n ThreeColumnGrid,\n} from \"../../../Common\";\nimport { CHILD_HEIGHT } from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { mergeGPSData } from \"../../RetailMatch/Logic/SharedMethods\";\n\ninterface IHHCharChartChartsProps {\n storeData: IGPSData;\n location1Name: string;\n benchmarkData?: IGPSData;\n location2Name?: string;\n renderType: RenderType;\n}\n\nexport const getChartText = (\n visits: boolean,\n location1Name: string,\n location2Name?: string\n): JSX.Element => {\n return (\n \n \n Household characteristics of {visits ? \"Visits\" : \"Visitors\"} to{\" \"}\n {location1Name}\n {location2Name ? (\n <>\n \n {\" \"}\n COMPARED TO{\" \"}\n {\" \"}\n {location2Name}{\" \"}\n \n ) : null}\n .\n \n {HH_ATTR_STATIC_TEXT}\n \n );\n};\n\nconst HHCharChartCharts: FunctionComponent = (\n props: IHHCharChartChartsProps\n) => {\n const { storeData, benchmarkData, location1Name, location2Name } = props;\n\n return (\n <>\n \n Household characteristics of {location1Name}\n {location2Name && ` COMPARED TO ${location2Name}`}\n \n

    {HH_ATTR_STATIC_TEXT}

    \n \n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n getChartText(visits, location1Name, location2Name)\n }\n chartHeight={\n props.renderType == RenderType.DIGITAL_SHARE && CHILD_HEIGHT\n }\n />\n \n \n );\n};\n\nexport default HHCharChartCharts;\n","import React, { FunctionComponent, useEffect, useState } from \"react\";\nimport {\n colorTwoBright,\n colorTwoDark,\n} from \"../../../../globalStyles/colors/scoutColors\";\nimport { IChartMergedDatapoint, IGPSData } from \"../../../../Models/IGPSData\";\nimport {\n format24Hr,\n formatDOW,\n formatWeek,\n ReportChartGroup,\n ReportScrollableSection,\n ReportSectionHeader,\n ReportSectionNumber,\n ReportH1,\n NivoCalendar,\n TwoColumnGrid,\n AnimatedReportCard,\n} from \"../../../Common\";\nimport {\n mergeGPSData,\n mergeWeeklyData,\n} from \"../../RetailMatch/Logic/SharedMethods\";\nimport {\n IChartCalendarDatapoint,\n IChartVisitVisitorDatapoint,\n} from \"../../../../Models/Models\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { GPSRelVolMet } from \"./GPSRelVolMet\";\nimport { CHILD_HEIGHT } from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { HH_ATTR_STATIC_TEXT } from \"../../../../Util/ScoutDigitalShareUtil\";\nimport MobilyticsPolygonSelect from \"../MobilyticsPolygonSelect\";\nimport { IMobilyticsBenchmarkItem } from \"../../../../Models/IMobilyticsBenchmarkItem\";\nimport { IIdentifier } from \"../../../../Models/IIdentifier\";\nimport { GPSVolumeMetrics } from \"./GPSVolumeMetrics\";\n\ninterface IGPSInsightsVolumeProps {\n storeData: IGPSData;\n location1Name: string;\n location2Name?: string;\n benchmarkData?: IGPSData;\n visitsCount?: IGPSData;\n renderType: RenderType;\n benchmarkItems: IMobilyticsBenchmarkItem[];\n}\n\nenum SelectionTypesEnum {\n SELECTION_ONE_PRIMARY = \"visitorWeight\",\n SELECTION_ONE_SECONDARY = \"visitWeight\",\n}\n\nconst GPSInsightsVolume: FunctionComponent = (\n props: IGPSInsightsVolumeProps\n) => {\n const { storeData, benchmarkData, location1Name, location2Name } = props;\n\n const [mergedCalendarData, setMergedCalendarData] = useState<\n IChartMergedDatapoint[]\n >([]);\n const [dayCalendarData, setDayCalendarData] = useState<\n Map\n >(new Map());\n const [calendarSelectionOneData, setCalendarSelectionOneData] = useState<\n IChartCalendarDatapoint[]\n >([]);\n const [calendarSelectionTwoData, setCalendarSelectionTwoData] = useState<\n IChartCalendarDatapoint[]\n >([]);\n const [calendarDataReady, setCalendarDataReady] = useState(false);\n const [selectedPolygon, setSelectedPolygon] = useState(\"\");\n const [selectedPolygonIndex, setSelectedPolygonIndex] = useState(0);\n\n const polygonIdentifiers = props.benchmarkItems.map((item, index) => {\n const id: IIdentifier = {\n name: item.name,\n identifier: item.name.concat(index.toString()),\n };\n return id;\n });\n\n const createCalendarData = () => {\n const calendarData: Map = new Map();\n calendarData.set(polygonIdentifiers[0].identifier, storeData.volumeByDay);\n\n setCalendarSelectionOneData(\n convertDayData(\n calendarData.get(polygonIdentifiers[0].identifier),\n SelectionTypesEnum.SELECTION_ONE_PRIMARY\n )\n );\n setCalendarSelectionTwoData(\n convertDayData(\n calendarData.get(polygonIdentifiers[0].identifier),\n SelectionTypesEnum.SELECTION_ONE_SECONDARY\n )\n );\n\n if (benchmarkData) {\n calendarData.set(\n polygonIdentifiers[1].identifier,\n benchmarkData?.volumeByDay\n );\n }\n\n return calendarData;\n };\n\n useEffect(() => {\n const data = mergeGPSData({\n selection1: storeData.volumeByWeek,\n selection2: benchmarkData?.volumeByWeek,\n national: null,\n });\n\n const calendarData = createCalendarData();\n\n setDayCalendarData(calendarData);\n setMergedCalendarData(data);\n setCalendarDataReady(true);\n setSelectedPolygon(location1Name);\n\n return () => setCalendarDataReady(false);\n }, []);\n\n for (const item of props.benchmarkItems) {\n useEffect(() => {\n const calendarData = createCalendarData();\n setDayCalendarData(calendarData);\n }, [item.name]);\n }\n\n const convertDayData = (\n data: IChartVisitVisitorDatapoint[],\n type: SelectionTypesEnum\n ): IChartCalendarDatapoint[] => {\n return data.map((item) => ({\n day: item.id.substring(0, item.id.length - 9),\n value:\n type === SelectionTypesEnum.SELECTION_ONE_SECONDARY\n ? Number((item.visitWeight * 100).toFixed(3))\n : Number((item.visitorWeight * 100).toFixed(3)),\n }));\n };\n\n const handleLocationDataChange = (value: string) => {\n const index = Number(value);\n setSelectedPolygonIndex(index);\n\n const polygon = polygonIdentifiers[index];\n const data = dayCalendarData.get(polygon.identifier);\n\n setCalendarSelectionOneData(\n convertDayData(data, SelectionTypesEnum.SELECTION_ONE_PRIMARY)\n );\n setCalendarSelectionTwoData(\n convertDayData(data, SelectionTypesEnum.SELECTION_ONE_SECONDARY)\n );\n setSelectedPolygon(polygonIdentifiers[index].name);\n };\n\n const getChartText = (visits: boolean): any => {\n return (\n \n \n {visits ? \"Visits\" : \"Visitors\"} volume trends of{\" \"}\n {polygonIdentifiers[0].name}{\" \"}\n {polygonIdentifiers.length > 1\n && \"compared to \" + polygonIdentifiers[1].name}\n .\n \n {HH_ATTR_STATIC_TEXT}\n \n );\n };\n\n return (\n \n \n 03\n Volume\n \n \n {featureFlags.DigitalShare && benchmarkData && location2Name && (\n \n )}\n {!benchmarkData && (\n \n )}\n \n \n \n \n {calendarDataReady && (\n handleLocationDataChange(value)}\n // >\n // {polygonIdentifiers.map((n, index) => {\n // return (\n // \n // );\n // })}\n // \n // }\n // isSelect={true}\n // />\n \n }\n location1Name={location1Name}\n location2Name={location2Name}\n app={DigitalShareAppType.Mobilytics}\n itemType={DigitalShareItemType.VolumeByDay}\n renderType={props.renderType}\n />\n }\n unprocessedTextAboveChart={
    }\n />\n )}\n
    \n \n \n \n );\n};\n\nexport default GPSInsightsVolume;\n","import React, { FunctionComponent, useRef } from \"react\";\nimport { IEstimatedVolumeCount } from \"../../../../Models/Models\";\nimport { getPrettyNumber } from \"../../../Common\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport {\n RenderType,\n DigitalShareItemType,\n DigitalShareAppType,\n} from \"../../../../Enums/Enums\";\nimport {\n colorTwoBright,\n colorTwoDark,\n anotherLightGray,\n} from \"../../../../globalStyles\";\nimport { StylishMan } from \"./GPSRelVolMetStyles\";\nimport { GPSRelVolMetOutput } from \"./GPSRelVolMetOutput\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\n\ninterface IGPSRelVolMet {\n location1Name: string;\n location2Name?: string;\n buds: number;\n region: string;\n storeEstVol: IEstimatedVolumeCount;\n benchmarkEstVol?: IEstimatedVolumeCount;\n visitsCount?: number;\n benchmarkVisitsCount?: number;\n renderType?: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n shareText?: string;\n}\n\nexport const GPSRelVolMet: FunctionComponent = (\n props: IGPSRelVolMet\n) => {\n const { location1Name, location2Name, buds, region, visitsCount, storeEstVol, benchmarkEstVol, benchmarkVisitsCount } = props;\n const viewBoxVal = \"165 160 190 190\";\n const calcPctOfOther = (val1: number, val2: number): string => {\n return getPrettyNumber((val1 / val2) * 100, 0);\n };\n\n const calcPctOfTotal = (val1: number, val2: number): number => {\n return (val1 / (val1 + val2)) * 100;\n };\n\n const calcManIndVal = (totalPeeps: number): number => {\n return 100 / totalPeeps;\n };\n\n const findAverageDailyVolume = (budsCurrent: number, regionId: string): number => {\n let dailyVolume;\n switch (budsCurrent && regionId) {\n case 1 && 'NE': dailyVolume = 10000;\n break;\n case 1 && 'WP': dailyVolume = 28000;\n break;\n case 1 && 'WSC': dailyVolume = 101000;\n break;\n case 1 && 'WM': dailyVolume = 43000;\n break;\n case 1 && 'ESC': dailyVolume = 61000;\n break;\n case 1 && 'SA': dailyVolume = 106000;\n break;\n case 1 && 'WNC': dailyVolume = 70000;\n break;\n case 1 && 'ENC': dailyVolume = 103000;\n break;\n case 1 && 'MA': dailyVolume = 25000;\n break;\n case 2 && 'WSC': dailyVolume = 206000;\n break;\n case 2 && 'WNC': dailyVolume = 109000;\n break;\n case 2 && 'ENC': dailyVolume = 274000;\n break;\n case 2 && 'SA': dailyVolume = 376000;\n break;\n case 2 && 'MA': dailyVolume = 107000;\n break;\n case 2 && 'WP': dailyVolume = 78000;\n break;\n case 2 && 'ESC': dailyVolume = 129000;\n break;\n case 2 && 'NE': dailyVolume = 49000;\n break;\n case 2 && 'WM': dailyVolume = 81000;\n break;\n case 3 && 'WNC': dailyVolume = 85000;\n break;\n case 3 && 'MA': dailyVolume = 91000;\n break;\n case 3 && 'ENC': dailyVolume = 223000;\n break;\n case 3 && 'WM': dailyVolume = 84000;\n break;\n case 3 && 'SA': dailyVolume = 284000;\n break;\n case 3 && 'WSC': dailyVolume = 178000;\n break;\n case 3 && 'ESC': dailyVolume = 60000;\n break;\n case 3 && 'NE': dailyVolume = 38000;\n break;\n case 3 && 'WP': dailyVolume = 107000;\n break;\n case 4 && 'MA': dailyVolume = 44000;\n break;\n case 4 && 'WP': dailyVolume = 72000;\n break;\n case 4 && 'ESC': dailyVolume = 14000;\n break;\n case 4 && 'ENC': dailyVolume = 79000;\n break;\n case 4 && 'WSC': dailyVolume = 60000;\n break;\n case 4 && 'WM': dailyVolume = 49000;\n break;\n case 4 && 'NE': dailyVolume = 13000;\n break;\n case 4 && 'SA': dailyVolume = 99000;\n break;\n case 4 && 'WNC': dailyVolume = 28000;\n break;\n case 5 && 'ENC': dailyVolume = 15000;\n break;\n case 5 && 'NE': dailyVolume = 5000;\n break;\n case 5 && 'WSC': dailyVolume = 11000;\n break;\n case 5 && 'MA': dailyVolume = 38000;\n break;\n case 5 && 'WP': dailyVolume = 30000;\n break;\n case 5 && 'WNC': dailyVolume = 4000;\n break;\n case 5 && 'WM': dailyVolume = 9000;\n break;\n case 5 && 'SA': dailyVolume = 16000;\n break;\n case 6 && 'MA': dailyVolume = 12000;\n break;\n case 6 && 'NE': dailyVolume = 1000;\n break;\n case 6 && 'WP': dailyVolume = 2000;\n break;\n case 6 && 'SA': dailyVolume = 1000;\n break;\n case 6 && 'ENC': dailyVolume = 3000;\n break;\n default: dailyVolume = 0;\n break;\n }\n return dailyVolume;\n };\n const storePctOfTotal = benchmarkEstVol\n ? calcPctOfTotal(\n visitsCount,\n benchmarkVisitsCount\n ) : calcPctOfTotal(\n visitsCount,\n findAverageDailyVolume(buds, region)\n );\n\n const benchPctOfTotal = benchmarkEstVol ? calcPctOfTotal(\n benchmarkVisitsCount,\n visitsCount\n ) : 0;\n\n\n const loc1PctOfOther = benchmarkVisitsCount ? calcPctOfOther(visitsCount, benchmarkVisitsCount) : \"\";\n const loc2PctOfOther = benchmarkVisitsCount ? calcPctOfOther(benchmarkVisitsCount, visitsCount) : \"\";\n\n const setPeeps = (\n rows: number,\n peepsInRow: number,\n pctTotalCompare: number,\n color: string,\n type: string\n ): any[] => {\n const peeps = [];\n for (let rowIdx = 1; rowIdx <= rows; rowIdx++) {\n peeps.push([]);\n for (\n let index = 1 + peepsInRow * (rowIdx - 1);\n index <= peepsInRow * rowIdx;\n index++\n ) {\n peeps[rowIdx - 1].push(\n \n );\n }\n }\n return peeps;\n };\n\n const relVolMetRef = useRef();\n\n // This regexp adds commas where appropriate to the value provided.\n const loc1Vol = (storeEstVol.visits * visitsCount).toLocaleString();\n const loc2Vol = benchmarkEstVol ? (benchmarkEstVol.visits * visitsCount).toLocaleString() : \"\";\n\n const loc1PctFinal = featureFlags.Mobilytics.newRelativeVolume\n ? storePctOfTotal.toString()\n : loc1PctOfOther;\n\n const loc2PctFinal = featureFlags.Mobilytics.newRelativeVolume\n ? benchPctOfTotal.toString()\n : loc2PctOfOther;\n\n if (\n props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, DigitalShareItemType.RelativeVolume)\n ) {\n registerRef(props.app, DigitalShareItemType.RelativeVolume, relVolMetRef);\n\n const shareStorePeeps = setPeeps(\n 6,\n 12,\n storePctOfTotal,\n colorTwoBright,\n \"shareStore\"\n );\n const shareBenchPeeps = setPeeps(\n 6,\n 12,\n benchPctOfTotal,\n colorTwoDark,\n \"shareBench\"\n );\n registerElement(\n props.app,\n DigitalShareItemType.RelativeVolume,\n \"\",\n \n );\n }\n\n const storePeeps = benchmarkVisitsCount\n ? setPeeps(3, 18, storePctOfTotal, colorTwoBright, \"store\")\n : setPeeps(3, 36, storePctOfTotal, colorTwoBright, \"store\");\n const benchPeeps = benchmarkVisitsCount ? setPeeps(3, 18, benchPctOfTotal, colorTwoDark, \"bench\") : [];\n\n\n return (\n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { ReportH4 } from \"../../../Common\";\nimport {\n BreakerBreaker,\n ContentWrap,\n PeepsContainer,\n PeepsContainerSingle,\n PeepsRowContainer,\n PeepsText\n} from \"./GPSRelVolMetStyles\";\n\ninterface IGPSRelVolMet {\n location1Name: string;\n location2Name: string;\n location1Color: string;\n location2Color: string;\n loc1Peeps: any[];\n loc2Peeps: any[];\n loc1Vol: string;\n loc2Vol: string;\n loc1CalcPctOfLoc2: string;\n loc2CalcPctOfLoc1: string;\n rh4Title?: string;\n}\n\nexport const GPSRelVolMetOutput: FunctionComponent = (\n props: IGPSRelVolMet\n) => {\n const {\n location1Name,\n location2Name,\n location1Color,\n location2Color,\n loc1Peeps,\n loc2Peeps,\n loc1Vol,\n loc2Vol,\n loc1CalcPctOfLoc2,\n loc2CalcPctOfLoc1,\n rh4Title,\n } = props;\n\n const isBenchmark = location2Name !== null;\n\n return (\n loc1Vol\n && (isBenchmark || featureFlags.Mobilytics.newRelativeVolume)\n && <>\n {rh4Title && {rh4Title}}\n

    \n Compares visit volume at {location1Name} to {location2Name ? location2Name : \"to comparable businesses in the area\"}.\n

    \n \n {loc2Vol ? \n {\n featureFlags.Mobilytics.newRelativeVolume\n ? \n {location1Name}{\" \"}\n Estimated Volume is {loc1Vol}{\" \"}\n ({loc1CalcPctOfLoc2}%) of{\" \"}\n {location2Name}.\n \n : \n {location1Name}{\" \"}\n {`Volume is `}\n {loc1CalcPctOfLoc2}% of{\" \"}\n {location2Name}.\n \n }\n {loc1Peeps.map((peepRow, i) => {\n return (\n \n {peepRow}\n \n );\n })}\n \n : \n \n {location1Name}{\" \"}\n Estimated Volume is {loc1Vol}\n \n {loc1Peeps.map((peepRow, i) => {\n return (\n \n {peepRow}\n \n );\n })}\n }\n {loc2Vol && <>\n \n {\n featureFlags.Mobilytics.newRelativeVolume\n ? \n {location2Name}{\" \"}\n Estimated Volume is {loc2Vol}{\" \"}\n ({loc2CalcPctOfLoc1}%) of{\" \"}\n {location1Name}.\n \n : \n {location2Name}{\" \"}\n {`Volume is `}\n {loc2CalcPctOfLoc1}% of{\" \"}\n {location1Name}.\n \n }\n {loc2Peeps.map((peepRow, i) => {\n return (\n \n {peepRow}\n \n );\n })}\n }\n \n \n );\n};\n","import React, { FunctionComponent, useRef } from \"react\";\n\nimport {\n ReportDataWrapper,\n ReportDataWrapperHead,\n ReportP,\n getPrettyNumber,\n ChartBodyWrapper,\n ReportH4,\n BuxTooltip,\n ReportHeaderInnerContainer,\n} from \"../../../Common\";\nimport {\n DigitalShareItemType,\n DigitalShareAppType,\n} from \"../../../../Enums/Enums\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { VolumeMetricsTableHeader, VolumeMetricsTableRow, VolumeMetricsCell } from \"../Styled/Table\";\nimport { IGPSData } from \"../../../../Models/Models\";\nimport { isOutputSelected, registerElement, registerRef } from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { GPSVolumeMetricsOutput } from \"./GPSVolumeMetricsOutput\";\n\nconst getVolumeMetricsTableRows = (\n rowText: string,\n visitorCount: number,\n visitCount: number,\n): JSX.Element => {\n return (\n \n {rowText}\n \n
    {getPrettyNumber(visitorCount, 0)}
    \n
    \n \n
    {getPrettyNumber(visitCount, 0)}
    \n
    \n \n
    {getPrettyNumber(visitCount / visitorCount, 2)}
    \n
    \n
    \n );\n};\n\ninterface IGPSVolumeMetrics {\n scrollableParentSelector: string;\n chartAnim: string;\n storeData: IGPSData;\n benchmarkData?: IGPSData;\n itemType?: DigitalShareItemType;\n renderType?: RenderType;\n app?: DigitalShareAppType;\n}\n\nexport const GPSVolumeMetrics: FunctionComponent = (\n props: IGPSVolumeMetrics,\n) => {\n const {\n scrollableParentSelector,\n chartAnim,\n storeData,\n benchmarkData,\n renderType,\n itemType,\n app,\n } = props;\n\n const volumeMetricsRef = useRef(null);\n\n //---------THIS PART FOR PRINT AND SHARE FEATURE--------\n if (\n featureFlags.DigitalShare\n && renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(app, itemType)\n ) {\n registerRef(app, itemType, volumeMetricsRef);\n const volumeMetricsElement = (\n \n );\n registerElement(\n app.toString(),\n itemType.toString(),\n \" Observed mobile device activity during the selected period\",\n volumeMetricsElement,\n );\n }\n\n return (\n \n \n \n Volume Metrics\n \n \n \n \n Observed mobile device activity during the selected period.\n \n \n \n \n Number of visitors\n Number of visits\n Visits per visitor\n \n {getVolumeMetricsTableRows(\n \"Your Selection\",\n storeData.mapData.length,\n storeData.visitsCount,\n )}\n {/* Benchmark Data */}\n {benchmarkData && getVolumeMetricsTableRows(\n \"Your Benchmark\",\n benchmarkData.mapData.length,\n benchmarkData.visitsCount,\n )}\n \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\n\nimport { getPrettyNumber } from \"../../../Common\";\nimport { IGPSData } from \"../../../../Models/Models\";\nimport {\n DigitalShareTable,\n DigitalShareTableRow,\n DigitalShareTableHeader,\n DigitalShareTableData\n} from \"./GPSVolumeMetricsStyled\";\n\ninterface IGPSVolumeMetricsOutputProps {\n storeData: IGPSData;\n benchmarkData?: IGPSData;\n}\n\nconst getGPSVolumeMetricsOutputTableRows = (\n rowText: string,\n visitorCount: number,\n visitCount: number,\n): JSX.Element => {\n return (\n \n {rowText}\n {getPrettyNumber(visitorCount, 0)}\n {getPrettyNumber(visitCount, 0)}\n {getPrettyNumber(visitCount / visitorCount, 2)}\n \n );\n};\n\nexport const GPSVolumeMetricsOutput: FunctionComponent = (\n props: IGPSVolumeMetricsOutputProps,\n) => {\n const {\n storeData,\n benchmarkData,\n } = props;\n\n return (\n \n \n \n \n Number of visitors\n Number of visits\n Visits per visitor\n \n \n \n {getGPSVolumeMetricsOutputTableRows(\n \"Your Selection\",\n storeData.mapData.length,\n storeData.visitsCount,\n )}\n {/* Benchmark Data */}\n {benchmarkData && getGPSVolumeMetricsOutputTableRows(\n \"Your Benchmark\",\n benchmarkData.mapData.length,\n benchmarkData.visitsCount,\n )}\n \n \n );\n};","import styled from \"styled-components\";\n\nexport const DigitalShareTableRow = styled.tr``;\n\nexport const DigitalShareTableHeader = styled.th`\n padding: 10px 15px;\n`;\n\ninterface IDigitalShareTableDataProps {\n isDifferent?: boolean;\n}\n\nexport const DigitalShareTableData = styled.td`\n font-family: \"Manrope-Bold\";\n padding: 10px 15px;\n ${props => props.isDifferent ? `\n color: #434a54;\n font-size: 14px;\n text-align: left !important;\n ` : `\n color: black;\n font-size: 18px;\n `}\n`;\n\nexport const DigitalShareTable = styled.table`\n width: 100%;\n border-radius: 3px;\n ${DigitalShareTableHeader}, ${DigitalShareTableData} {\n border: 1px solid #e8e8e8;\n border-collapse: collapse;\n text-align: center;\n }\n`;\n","import React, { FunctionComponent, useEffect, useState } from \"react\";\nimport { Select, Alert } from \"antd\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { colorTwoBright } from \"../../../../globalStyles/colors/scoutColors\";\nimport {\n IPolygon,\n IChartCompare,\n IChartGenericDatapoint,\n IChartMergedDatapoint,\n IGPSChartMergedDatapoint,\n IGPSData,\n IGCPBigQueryJob,\n IChartVisitorOrigData,\n IChartTAAData,\n} from \"../../../../Models/Models\";\nimport {\n AnimatedReportCard,\n ReportScrollableSection,\n ReportChartGroup,\n ReportH1,\n ReportSectionHeader,\n ReportSectionNumber,\n formatLabelWithEllipsis,\n sortMergedChartData,\n} from \"../../../Common\";\nimport RechartTAA from \"../../../Common/Charts/RechartTAA\";\nimport { GPSMap } from \"./GPSMap\";\nimport { GPSVisitOrig } from \"./GPSVisitOrig\";\nimport { IMobilyticsBenchmarkItem } from \"../../../../Models/IMobilyticsBenchmarkItem\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { isWebGLCompatible } from \"../../../../Logic/WebGLLogic\";\nimport { gpsTAAData } from \"../../../../Reducers/Selectors/GPSInsightsSelectors\";\n\ninterface IGPSTradeAreaProps {\n storeData: IGPSData[];\n storePolygon: IPolygon[];\n selectedGpsInsightForReportView: IGCPBigQueryJob[];\n benchmarkItems: IMobilyticsBenchmarkItem[];\n polygons: IPolygon[];\n benchmarkData: IGPSData;\n renderType: RenderType;\n}\n\nconst webGlCompatible = isWebGLCompatible();\n\nconst GPSTradeArea: FunctionComponent = (\n props: IGPSTradeAreaProps\n) => {\n const {\n storeData,\n storePolygon,\n selectedGpsInsightForReportView,\n polygons,\n benchmarkData,\n benchmarkItems,\n renderType,\n } = props;\n const polygonNames = polygons.map((pol: IPolygon) => pol.name);\n /** state */\n const [visitOrigGeogType, setVisitOrigGeogType] = useState(\"county\");\n const [mergedVisitOrigGPSData, setMergedVisitOrigGPSData]\n = useState(null);\n const [polygonIdentifiers, setPolyIdentifiers] = useState<\n { name: string; identifier: string }[]\n >([]);\n const [polygonDataType, setPolygonDataType] = useState(\"\");\n const [originationData, setOriginationData] = useState<\n Map\n >(new Map());\n const [selectedPolygon, setSelectedPolygon] = useState(\"\");\n\n const taaData: IChartTAAData[][] = useSelector(gpsTAAData);\n\n useEffect(() => {\n const polygonIds: { name: string; identifier: string }[] = Array.from(\n polygonNames,\n (n: string, i: number) => ({ name: n, identifier: n.concat(`-${i}`) })\n );\n\n setPolyIdentifiers(polygonIds);\n\n const origData = new Map();\n\n origData.set(polygonIds[0].identifier, storeData[0].visitorOrigination);\n\n const mergedData = mergeVisitOrigGPSData({\n selection1: origData.get(polygonIds[0].identifier),\n selection2: null,\n national: null,\n });\n\n setMergedVisitOrigGPSData(sortMergedChartData(mergedData, true));\n\n if (benchmarkData) {\n origData.set(polygonIds[1].identifier, benchmarkData.visitorOrigination);\n }\n\n setOriginationData(origData);\n setPolygonDataType(polygonIds[0].identifier);\n setSelectedPolygon(polygonIds[0].name);\n }, []);\n\n useEffect(() => {\n if (originationData.has(polygonDataType)) {\n setMergedVisitOrigGPSData(\n sortMergedChartData(\n mergeVisitOrigGPSData({\n selection1: originationData.get(polygonDataType),\n selection2: null,\n national: null,\n }),\n true\n )\n );\n }\n }, [visitOrigGeogType, polygonDataType]);\n\n const mergeVisitOrigGPSData = (\n data: IChartCompare\n ): IChartMergedDatapoint[] => {\n const formattedData: IChartMergedDatapoint[] = data?.selection1\n ? (\n data.selection1[visitOrigGeogType] as Array\n ).map((item) => {\n return {\n id: item.id,\n nationalWeight: null,\n selection1PrimaryWeight: item.visitorWeight\n ? item.visitorWeight\n : item.weight,\n selection1SecondaryWeight: item.visitWeight,\n selection2PrimaryWeight: data.selection2\n ? (data.selection2 as Array).find(\n (selection2) => selection2.id === item.id\n ).weight\n : null,\n };\n })\n : null;\n return formattedData;\n };\n\n const handleVisitOrigGeogTypeChange = (str: string) => {\n setVisitOrigGeogType(str);\n };\n\n const handlePolygonDataChange = (id: string) => {\n const poly = polygonIdentifiers.find((i) => i.identifier == id);\n\n setPolygonDataType(poly.identifier);\n setSelectedPolygon(poly.name);\n };\n\n return (\n \n \n 01\n Trade Area\n \n \n {!webGlCompatible ? (\n \n ) : (\n \n )}\n {!taaData.some(d => d === undefined) && (\n \n )}\n\n {!featureFlags.DigitalShare && mergedVisitOrigGPSData && (\n \n handlePolygonDataChange(value)}\n style={{ marginLeft: \"10px\" }}\n >\n {polygonIdentifiers.map((n) => (\n \n {formatLabelWithEllipsis(n.name, 12)}\n \n ))}\n \n \n }\n />\n )}\n {featureFlags.DigitalShare && (\n \n )}\n \n \n );\n};\n\nexport default GPSTradeArea;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport { IChartTAAData, IRootReducer } from \"../../../Models/Models\";\nimport {\n ResponsiveContainer,\n ComposedChart,\n Line,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Legend,\n Label,\n ReferenceLine,\n ReferenceDot,\n} from \"recharts\";\nimport { Select } from \"antd\";\nimport { Button } from \"../Button/Button\";\nimport { ReportDataWrapper } from \"../ReportStyles/ReportWrappers\";\nimport { ChartTitle } from \"./ChartTitle\";\nimport { ChartBodyWrapper } from \"../ChartStyles/ChartWrapper\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { BodyText } from \"../ReportStyles/Text\";\nimport {\n colorTwoBright,\n colorTwoDark,\n} from \"../../../globalStyles/colors/scoutColors\";\nimport { ChartContainer } from \"./ChartContainer\";\nimport {\n TAALegendItemDot,\n TAAChartLegend,\n TAAChartLendItem,\n TAAOptionsContainer,\n TAAOptions,\n} from \"../ChartStyles/TAAStyles\";\nimport { formatLabelWithEllipsis } from \"../SharedActions\";\nimport { featureFlags } from \"../../../Common/CurrentFeatureFlags\";\nimport { IIdentifier } from \"../../../Models/IIdentifier\";\nimport { getPolygonIdentifiers } from \"../../Apps/GPSInsights/Common\";\nimport { PolygonNameWithCircle } from \"../\";\nimport \"../Select.css\";\nimport { RenderType } from \"../../../Enums/RenderType\";\nimport { DigitalShareAppType } from \"../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../Enums/DigitalShareItemType\";\nimport {\n CHILD_HEIGHT,\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../DigitalShare/DigitalShareGenerator\";\nimport MobilyticsPolygonSelect from \"../../Apps/GPSInsights/MobilyticsPolygonSelect\";\nimport { IMobilyticsBenchmarkItem } from \"../../../Models/IMobilyticsBenchmarkItem\";\nimport { getPolygonNamesForSelectedGpsInsight } from \"../../../Reducers/Selectors/ChartSelectors\";\n\ninterface IConvertedChartData {\n id: string;\n visitWeight?: number;\n visitorWeight?: number;\n visitWeightCumulative?: number;\n visitorWeightCumulative?: number;\n visitWeight2?: number;\n visitorWeight2?: number;\n visitWeightCumulative2?: number;\n visitorWeightCumulative2?: number;\n}\n\ninterface TAACumulativeValue {\n id: string;\n value: number;\n}\n\ninterface IRechartTAAProps {\n data: IChartTAAData[][];\n renderType?: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n benchmarkItems: IMobilyticsBenchmarkItem[];\n}\n\nenum TAAWeightToggleEnum {\n VISITORS = \"visitorWeight\",\n VISITS = \"visitWeight\",\n}\n\nenum TAAYAxisLabelEnum {\n VISITORS = \"% of total Visitors\",\n VISITS = \"% of total Visits\",\n}\n\nconst LineSVG = (props) => {\n return (\n \n \n \n \n \n );\n};\n\nconst RechartTAA = (props: IRechartTAAProps): JSX.Element => {\n const [chartData, setChartData] = useState([]);\n const [xAxisKey, setXAxisKey] = useState(\n TAAWeightToggleEnum.VISITORS\n );\n const [yAxisLabel, setYAxisLabel] = useState(\n TAAYAxisLabelEnum.VISITORS\n );\n const [cumulativeValues, setCumulativeValues]\n = useState<\n Map<\n string,\n {\n visitorWeightCumulativeValues: TAACumulativeValue[];\n visitWeightCumulativeValues: TAACumulativeValue[];\n }\n >\n >();\n const [referenceY, setReferenceY] = useState(0);\n const [referenceX, setReferenceX] = useState(\"\");\n const [locationReference, setLocationReference] = useState({\n name: \"\",\n identifier: \"\",\n });\n const [selectedPolygonIndex, setSelectedPolygonIndex] = useState(0);\n\n const polygonNames = useSelector(getPolygonNamesForSelectedGpsInsight);\n\n const setCumulativeData = () => {\n const cd: IConvertedChartData[] = [];\n const cumulativeMap: Map<\n string,\n {\n visitorWeightCumulativeValues: TAACumulativeValue[];\n visitWeightCumulativeValues: TAACumulativeValue[];\n }\n > = new Map();\n const polygonIds: IIdentifier[] = getPolygonIdentifiers(polygonNames);\n\n let visitAccumulator = 0;\n let visitorAccumulator = 0;\n\n for (const d of props.data[0]) {\n const visitWeight: number = parseFloat(d.visitWeight) * 100;\n const visitorWeight: number = parseFloat(d.visitorWeight) * 100;\n\n const obj = {\n id: d.id,\n visitWeight: Math.floor(visitWeight),\n visitorWeight: Math.floor(visitorWeight),\n visitWeightCumulative: (visitAccumulator += visitWeight),\n visitorWeightCumulative: (visitorAccumulator += visitorWeight),\n };\n\n cd.push(obj);\n }\n\n cumulativeMap.set(polygonIds[0].identifier, {\n visitorWeightCumulativeValues: cd.map((d) => ({\n id: d.id,\n value: d.visitorWeightCumulative,\n })),\n visitWeightCumulativeValues: cd.map((d) => ({\n id: d.id,\n value: d.visitWeightCumulative,\n })),\n });\n\n if (props.data.length > 1) {\n const dataMap: Map = new Map();\n cd.forEach((d) => dataMap.set(d.id, d));\n\n visitAccumulator = 0;\n visitorAccumulator = 0;\n\n const newData: IConvertedChartData[] = [];\n\n for (const d of props.data[1]) {\n const visitWeight2: number = parseFloat(d.visitWeight) * 100;\n const visitorWeight2: number = parseFloat(d.visitorWeight) * 100;\n\n const obj = {\n id: d.id,\n visitWeight2: Math.floor(visitWeight2),\n visitorWeight2: Math.floor(visitorWeight2),\n visitWeightCumulative2: (visitAccumulator += visitWeight2),\n visitorWeightCumulative2: (visitorAccumulator += visitorWeight2),\n };\n\n if (dataMap.has(d.id)) {\n Object.assign(dataMap.get(d.id), obj);\n } else {\n dataMap.set(d.id, obj);\n cd.push(obj);\n }\n\n newData.push(obj);\n }\n\n cumulativeMap.set(polygonIds[1].identifier, {\n visitorWeightCumulativeValues: newData.map((d) => ({\n id: d.id,\n value: d.visitorWeightCumulative2,\n })),\n visitWeightCumulativeValues: newData.map((d) => ({\n id: d.id,\n value: d.visitWeightCumulative2,\n })),\n });\n }\n\n const { visitorWeightCumulativeValues } = cumulativeMap.get(\n polygonIds[0].identifier\n );\n\n setCumulativeValues(cumulativeMap);\n setReferenceX(\n visitorWeightCumulativeValues[\n Math.floor(visitorWeightCumulativeValues.length / 2)\n ]?.id\n );\n setReferenceY(\n visitorWeightCumulativeValues[\n Math.floor(visitorWeightCumulativeValues.length / 2)\n ]?.value\n );\n setLocationReference(polygonIds[0]);\n\n cd.sort((a, b) => parseInt(a.id) - parseInt(b.id));\n setChartData(cd.filter((i) => parseInt(i.id) < 41));\n };\n\n useEffect(setCumulativeData, []);\n for (const item of props.benchmarkItems) {\n useEffect(setCumulativeData, [item.name]);\n }\n\n useEffect(() => {\n //The selected item in the polygon select is a static string, and not an index that dynamically references an array\n //We have to reset it's value any time the names change\n const splitString = locationReference.identifier.split(\"-\");\n if (splitString.length > 0) {\n const indexStr = splitString[splitString.length - 1];\n const index = Number(indexStr);\n setSelectedPolygonIndex(index);\n }\n }, [polygonNames]);\n\n const ref = useRef(null);\n\n const handleYAxisToggle = (value: TAAWeightToggleEnum): void => {\n const v = cumulativeValues.get(locationReference.identifier);\n const k = value.concat(\"CumulativeValues\");\n\n switch (value) {\n case TAAWeightToggleEnum.VISITS: {\n setXAxisKey(TAAWeightToggleEnum.VISITS);\n setYAxisLabel(TAAYAxisLabelEnum.VISITS);\n break;\n }\n default:\n setXAxisKey(TAAWeightToggleEnum.VISITORS);\n setYAxisLabel(TAAYAxisLabelEnum.VISITORS);\n break;\n }\n\n setReferenceY(v[k].find((i) => i.id === referenceX).value);\n };\n\n const handleSetPercent = (sign: string): void => {\n const reverenceValues = cumulativeValues.get(locationReference.identifier);\n const cValues = reverenceValues[xAxisKey.concat(\"CumulativeValues\")];\n let nextIndex = 0;\n\n cValues.forEach((v: TAACumulativeValue, i: number) => {\n if (v.id === referenceX && v.value === referenceY) {\n nextIndex = sign == \"+\" ? i + 1 : i - 1;\n }\n });\n\n if (nextIndex < cValues.length && nextIndex > -1) {\n setReferenceY(cValues[nextIndex].value);\n setReferenceX(cValues[nextIndex].id);\n }\n };\n\n const handleSetLocationReference = (value: string) => {\n const index = Number(value);\n const location = polygonIdentifiers[index];\n const v = cumulativeValues.get(location.identifier);\n const k = xAxisKey.concat(\"CumulativeValues\");\n\n setLocationReference(location);\n setSelectedPolygonIndex(index);\n\n let ry: number = v[k].find((i) => i.id === referenceX)?.value;\n\n if (!ry) {\n ry = v[k][Math.floor(v[k].length / 2)]?.value;\n setReferenceX(v[k][Math.floor(v[k].length / 2)]?.id);\n }\n\n setReferenceY(ry);\n };\n\n const renderReferenceDotLabel = (props) => {\n const { viewBox, value } = props;\n const reference = Math.floor(value);\n\n return (\n \n \n \n {reference.toString()}%\n \n \n );\n };\n\n const polygonIdentifiers: IIdentifier[] = getPolygonIdentifiers(polygonNames);\n\n const chart = (\n \n \n \n \n Math.floor(v)}\n tick={{ fontSize: 12 }}\n type=\"number\"\n domain={[0, (dataMax) => Math.min(dataMax + 5, 100.1)]}\n tickCount={11}\n axisLine={false}\n tickLine={false}\n >\n \n \n \n \n \n );\n\n const getChartText = (): string => {\n const selection\n = xAxisKey == TAAWeightToggleEnum.VISITORS ? \"visitors\" : \"visits\";\n return `\n Shows the distance in miles from where ${selection} to ${polygonNames[0]}${\n polygonNames?.length < 2 ? \".\" : \"\"\n}\n ${\n polygonNames?.length > 1\n ? \" and \" + polygonNames[1] + \" originated (home location).\"\n : \"\"\n}`;\n };\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, props.itemType)\n ) {\n registerRef(props.app.toString(), props.itemType.toString(), ref);\n\n registerElement(\n props.app.toString(),\n props.itemType.toString(),\n getChartText(),\n chart\n );\n }\n return (\n \n \n \n {getChartText()}\n \n
    \n
    \n \n \n \n
    \n handleSetPercent(\"-\")}\n style={{\n width: \"31px\",\n height: \"31px\",\n padding: \"0 11px 3px\",\n borderRadius: \"4px\",\n border: \"solid 1px #d9d9d9\",\n backgroundColor: \"#ffffff\",\n }}\n />\n \n {Math.floor(referenceY)}%\n
    \n handleSetPercent(\"+\")}\n style={{\n width: \"31px\",\n height: \"31px\",\n padding: \"0 11px 3px\",\n borderRadius: \"4px\",\n border: \"solid 1px #d9d9d9\",\n backgroundColor: \"#ffffff\",\n }}\n />\n
    \n of\n
    \n
    \n \n
    \n \n \n Visitors\n \n \n Visits\n \n \n
    \n
    \n are within {referenceX} mile(s) of location.\n
    \n \n \n {chart}\n \n
    \n \n
    \n );\n};\n\nexport default RechartTAA;\n","import styled from \"styled-components\";\nimport { device } from \"../../../globalStyles/breakpoints\";\n\nexport const TAAOptionsContainer = styled.div`\n display: flex;\n width: 100%;\n justify-content: center;\n`;\n\nexport const TAAOptions = styled.div`\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-evenly;\n flex-wrap: no-wrap;\n\n ${device.desktop} {\n width: 60%;\n }\n`;\n\nexport const TAAChartLegend = styled.ul`\n display: flex;\n align-items: center;\n margin: 0 0 0 3px;\n font-size: 12px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #000000;\n justify-content: space-evenly;\n`;\n\nexport const TAAChartLendItem = styled.li`\n display: flex;\n align-items: center;\n`;\n\nexport const TAALegendItemDot = styled.div`\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background-color: ${(props) => props.color};\n margin-right: 5px;\n`;\n","export const getPolygonIdentifiers = (polygonNames: string[]) => {\n return Array.from(polygonNames, (n: string, i: number) => ({\n name: n,\n identifier: n.concat(`-${i}`),\n }));\n};\n","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!./Select.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".has-circle .ant-select-selection--single {\\n padding-left: 19px;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { createSelector } from \"reselect\";\nimport { IGCPBigQueryJob, IRootReducer } from \"../../Models/Models\";\nimport { gpsInsightForReportView } from \"./GPSInsightsSelectors\";\n\nexport const getPolygonNamesForSelectedGpsInsight = createSelector(\n gpsInsightForReportView,\n (jobs: IGCPBigQueryJob[]) => jobs.map((j) => j.jobPolygon.name)\n);\n","import React, { FunctionComponent, useCallback, useEffect, useState } from \"react\";\nimport { Select, Tooltip } from \"antd\";\nimport {\n MapBottomRightButtonWrapper,\n MapControlsExpandButton,\n MapControlsShrinkButton,\n MapControlsCard,\n MapCenterBottomRightButtonWrapper,\n MapCenterButton,\n MapDropdownFlexWrapper,\n MapDropdownWrapper,\n} from \"../Styled\";\nimport { BodyText, getPolygonCentroid, Loading } from \"../../../Common\";\nimport { colorFour } from \"../../../../globalStyles\";\nimport {\n HomeWorkIdentifier,\n LayerTypeEnum,\n DropdownComparisonWeight,\n MapStyleEnum,\n} from \"../../../../Enums/Enums\";\nimport { IGPSData } from \"../../../../Models/IGPSData\";\nimport { hexToRgb } from \"../../../../Util/ColorUtil\";\nimport { ChartTitle } from \"../../../Common\";\nimport { MapLayers } from \"../../../../Util/MapLayers/MapLayers\";\nimport { MapLayerOptions } from \"../../../../Util/MapLayers/MapLayerOptions\";\nimport { IPolygon } from \"../../../../Models/Models\";\nimport { MapTypesEnum } from \"../../../../Enums/MapTypesEnum\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport {\n createNewGoogleMap,\n setIsMapReady,\n setMapAnchorWindow,\n setMapStyleOptions,\n} from \"../../../../Actions/ReportMapActions\";\nimport { ReportMap } from \"../../../Common/Map/ReportMap\";\nimport { IMobilyticsBenchmarkItem } from \"../../../../Models/IMobilyticsBenchmarkItem\";\nimport {\n filterStoreData,\n gpsReportMapSelector,\n} from \"../../../../Reducers/Selectors/GPSInsightsSelectors\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport {\n ReportMapLoading,\n ReportMapWrapper,\n} from \"../../../Common/Map/Styles/MapStyles\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport {\n delay,\n digitalShareMapRender,\n} from \"../../../../Util/ScoutDigitalShareUtil\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport {\n digitalShareElementText,\n generationStatus,\n isOutputSelected,\n registerRef,\n setPendingRender,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport MobilyticsPolygonSelect from \"../MobilyticsPolygonSelect\";\n\nconst { Option } = Select;\n\nconst mapWrapperDomId = \"gps-map-wrapper\";\n\nconst CENTER_DELAY_1_MS_INITIAL = 1500;\nconst CENTER_DELAY_1_MS = 50;\nconst CENTER_DELAY_2_MS_INITIAL = 300;\nconst CENTER_DELAY_2_MS = 0;\n\nconst homeGradient = [\n [255, 140, 0],\n [255, 124, 0],\n [255, 105, 0],\n [255, 85, 0],\n [255, 58, 0],\n [255, 0, 0],\n];\nconst workGradient = [\n [0, 140, 255],\n [145, 115, 246],\n [213, 76, 211],\n [255, 0, 156],\n [255, 0, 90],\n [255, 0, 0],\n];\n\ninterface IGpsMapProps {\n storeData: IGPSData[];\n storePolygon: IPolygon[];\n benchmarkItems: IMobilyticsBenchmarkItem[];\n renderType: RenderType;\n}\n\nexport const GPSMap: FunctionComponent = (props) => {\n const dispatch = useDispatch();\n const { storeData, storePolygon, renderType } = props;\n const {\n googleMap,\n mapZoom,\n currentAnchorWindow,\n buxtonDeck,\n mapStyleOptions,\n } = useSelector(gpsReportMapSelector);\n const [currentBenchmarkIndex, setCurrentBenchmarkIndex] = useState(0);\n\n /*State*/\n const [isVisits, setIsVisits] = useState(false);\n const [layerType, setLayerType] = useState(LayerTypeEnum.Scatterplot);\n const [isMapControlsOpen, setIsMapControlsOpen] = useState(false);\n const [mapNeedsRecenter, setMapNeedsRecenter] = useState(false);\n const [isHome, setIsHome] = useState(true);\n const [isMapLoaded, setMapLoaded] = useState(false);\n\n /*Scatterplot Layer Filter*/\n const homeColorObj = hexToRgb(\"#00e5e6\");\n const workColorObj = hexToRgb(colorFour);\n const [scatterplotOpacity, setScatterplotOpacity] = useState(0.5);\n const [scatterplotRadius, setScatterplotRadius] = useState(25);\n const [scatterplotLineWidth, setScatterplotLineWidth] = useState(1);\n const [scatterplotHomeColor, setScatterplotHomeColor] = useState([\n homeColorObj.r,\n homeColorObj.g,\n homeColorObj.b,\n ]);\n const [scatterplotWorkColor, setScatterplotWorkColor] = useState([\n workColorObj.r,\n workColorObj.g,\n workColorObj.b,\n ]);\n\n /*Heatmap Layer Filter*/\n const [heatmapOpacity, setHeatmapOpacity] = useState(0.5);\n const [heatmapRadius, setHeatmapRadius] = useState(50);\n const [heatmapIntensity, setHeatmapIntensity] = useState(2);\n const [heatmapThreshold, setHeatmapThreshold] = useState(0.05);\n\n /*Hexagon Layer Filter*/\n const [hexRadius, setHexRadius] = useState(500);\n const [hexOpacity, setHexOpacity] = useState(0.5);\n const [hexUpperPercentile, setHexUpperPercentile] = useState(100);\n const [hexLowerPercentile, setHexLowerPercentile] = useState(0);\n const [hexCoverage, setHexCoverage] = useState(0.85);\n\n /*Digital Share*/\n const [shareTemplate, setShareTemplate] = useState(null);\n const [ref, setRef] = useState>(null);\n\n const gpsMapLayers = new MapLayers(\n buxtonDeck.deck,\n MapTypesEnum.GPSmap,\n isHome,\n isVisits\n );\n const infoWindowAnchor = new google.maps.MVCObject();\n\n useEffect(() => {\n let isStopped = false;\n let timeout = null;\n if (\n renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.VisitorMap\n )\n ) {\n // Tell the system we're starting to render.\n setPendingRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.VisitorMap,\n true\n );\n // Without this, we would see the Deck layer with opaque gray\n // background and no map.\n buxtonDeck.redraw();\n // Using a set timeout here to wait for the redraw() to take effect.\n timeout = setTimeout(() => {\n const run = async () => {\n const ref = React.createRef();\n\n // Note: It doesn't work to save the original values for these properties --\n // when we tried that, the entire image was scaled down past half size.\n // I'm guessing that querying these values from the DOM were causing a\n // browser reflow, and for some reason the height was recalculated wrong\n // at that time.\n const originaliwBoxShadow = \"0 2px 7px 1px rgb(0 0 0 / 30%)\";\n const originaliwBorderRadius = \"8px\";\n\n const iw = document.querySelector(\n `#${mapWrapperDomId} .gm-style-iw`\n ) as HTMLElement;\n\n if (iw) {\n iw.style.backgroundColor = \"white\";\n iw.style.boxShadow = \"0 0 0 0 rgb(0 0 0 / 0%)\";\n iw.style.borderColor = \"white\";\n iw.style.borderRadius = \"0\";\n iw.style.color = \"black\";\n iw.style.fontSize = \"14px\";\n iw.style.paddingBottom = \"10px\";\n iw.style.paddingRight = \"10px\";\n const node = document.createTextNode(`${props.benchmarkItems[currentBenchmarkIndex].name}`);\n iw.replaceChild(node, iw.children[0]);\n }\n const iwd = document.querySelector(\n `#${mapWrapperDomId} .gm-style-iw-d`\n ) as HTMLElement;\n if (iwd) {\n iwd.style.backgroundColor = \"white\";\n iwd.style.borderColor = \"white\";\n }\n\n // Hide info window \"close\" button\n const closeButton = document.querySelector(\n `#${mapWrapperDomId} .gm-style-iw button`\n ) as HTMLElement;\n let originalCloseButtonDisplay = \"\";\n if (closeButton) {\n originalCloseButtonDisplay = closeButton.style.display;\n closeButton.style.display = \"none\";\n }\n\n // Create an image from the map\n const el = document.querySelector(\n `#${mapWrapperDomId}`\n ) as HTMLElement;\n el.style.width = \"1250px\";\n el.style.height = \"700px\";\n\n const text = `Shows ${isHome ? \"home\" : \"work\"} locations of ${isVisits ? \"visits\" : \"visitors\"\n } to ${props.benchmarkItems[currentBenchmarkIndex].name}.`;\n digitalShareElementText.set(DigitalShareItemType.VisitorMap, text);\n\n // Waiting here so that images can show up on the progress screen.\n await delay(1000);\n\n if (\n // If the component has been cleaned up...\n isStopped\n // Or if there has been an error and the process has stopped...\n || generationStatus.get(DigitalShareAppType.Mobilytics) === false\n ) {\n // Then tell the system we're not exporting this component anymore\n // and don't do any more processing.\n setPendingRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.VisitorMap,\n false\n );\n }\n // Otherwise, if exporting should proceed...\n else {\n // Get the template element to plunk in the DOM so it can be accessed by the generator.\n const template = await digitalShareMapRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.VisitorMap,\n el,\n ref\n );\n\n setShareTemplate(template);\n setRef(ref);\n // Tell the system we're not rendering anymore (for cancellation cleanup).\n setPendingRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.VisitorMap,\n false\n );\n }\n\n // Restore info window styles\n if (iw) {\n iw.style.boxShadow = originaliwBoxShadow;\n iw.style.borderRadius = originaliwBorderRadius;\n }\n // Restore info window \"close\" button\n if (closeButton) {\n closeButton.style.display = originalCloseButtonDisplay;\n }\n // Restore map dimensions\n el.style.width = \"\";\n el.style.height = \"\";\n };\n run();\n }, 100);\n }\n return () => {\n if (props.renderType === RenderType.DEFAULT) {\n isStopped = true;\n }\n\n clearTimeout(timeout);\n };\n }, [renderType, buxtonDeck]);\n\n useEffect(() => {\n if (ref && shareTemplate) {\n registerRef(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.VisitorMap,\n ref\n );\n }\n }, [ref, shareTemplate]);\n\n // This useEffect is used to clean up the WebGL context when the component is unmounted.\n // It is necessary to prevent memory leaks.\n useEffect(() => {\n return () => {\n buxtonDeck.destroyWebGlContext(); // Cleanup\n };\n }, []);\n\n const drawLayers = (layerType, googleMap, mapData, isHome) => {\n let layer;\n const data = filterStoreData(mapData, isHome);\n switch (layerType) {\n case LayerTypeEnum.Scatterplot:\n layer = gpsMapLayers.createScatterplotLayer(\n scatterplotHomeColor,\n scatterplotWorkColor,\n scatterplotRadius,\n scatterplotLineWidth,\n scatterplotOpacity,\n data,\n isHome\n );\n if (featureFlags.DigitalShare) {\n (window as any)._scatterplotLayer = layer;\n }\n break;\n case LayerTypeEnum.Heatmap:\n layer = gpsMapLayers.createHeatmapLayer(\n homeGradient,\n workGradient,\n heatmapOpacity,\n heatmapRadius,\n heatmapIntensity,\n heatmapThreshold,\n data,\n isHome\n );\n break;\n case LayerTypeEnum.Hexagon:\n layer = gpsMapLayers.createHexagonLayer(\n homeGradient,\n workGradient,\n hexOpacity,\n hexRadius,\n hexUpperPercentile,\n hexLowerPercentile,\n hexCoverage,\n data,\n isHome\n );\n break;\n }\n\n if (layer) {\n const polygonLayer = gpsMapLayers.createGpsPolygonLayer(\n props.storePolygon[currentBenchmarkIndex].linearRings,\n \"deck-gps-polygon-layer\",\n (x, y) => {\n setInfoWindowAndOpen(x, y, currentAnchorWindow);\n },\n currentBenchmarkIndex\n );\n\n buxtonDeck.clearProps();\n buxtonDeck.addProp(layer, googleMap);\n buxtonDeck.addProp(polygonLayer, googleMap);\n }\n };\n\n useEffect(() => {\n drawLayers(\n layerType,\n googleMap,\n storeData[currentBenchmarkIndex].mapData,\n isHome\n );\n }, [layerType, isHome, isVisits]);\n\n useEffect(() => {\n if (mapNeedsRecenter) {\n let delay1Ms;\n let delay2Ms;\n if (isMapLoaded) {\n delay1Ms = CENTER_DELAY_1_MS;\n delay2Ms = CENTER_DELAY_2_MS;\n if (featureFlags.AllowOverrideTradeAreaMapDelay) {\n if ((window as any).centerDelay1 !== undefined) {\n delay1Ms = (window as any).centerDelay1;\n }\n if ((window as any).centerDelay2 !== undefined) {\n delay2Ms = (window as any).centerDelay2;\n }\n }\n } else {\n delay1Ms = CENTER_DELAY_1_MS_INITIAL;\n delay2Ms = CENTER_DELAY_2_MS_INITIAL;\n if (featureFlags.AllowOverrideTradeAreaMapDelay) {\n if ((window as any).centerDelay1Initial !== undefined) {\n delay1Ms = (window as any).centerDelay1Initial;\n }\n if ((window as any).centerDelay2Initial !== undefined) {\n delay2Ms = (window as any).centerDelay2Initial;\n }\n }\n }\n\n const centroid = getPolygonCentroid(\n storePolygon[currentBenchmarkIndex].linearRings[0]\n );\n googleMap.panTo({ lat: centroid.latitude, lng: centroid.longitude });\n googleMap.setZoom(mapZoom);\n\n let centerTimer = null;\n\n const deckTimer = setTimeout(() => {\n drawLayers(\n layerType,\n googleMap,\n storeData[currentBenchmarkIndex].mapData,\n isHome\n );\n\n centerTimer = setTimeout(() => {\n addInfoWindow(centroid.latitude, centroid.longitude);\n setMapNeedsRecenter(false);\n setMapLoaded(true);\n dispatch(setIsMapReady(true));\n }, delay2Ms);\n }, delay1Ms);\n\n return () => {\n clearTimeout(deckTimer);\n clearTimeout(centerTimer);\n };\n }\n }, [currentBenchmarkIndex, mapNeedsRecenter]);\n\n const addInfoWindow = (lat: number, lng: number) => {\n let infoWindow = currentAnchorWindow;\n if (infoWindow === null) {\n infoWindow = new google.maps.InfoWindow({\n pixelOffset: new google.maps.Size(0, -10),\n disableAutoPan: true,\n });\n }\n\n setInfoWindowAndOpen(lat, lng, infoWindow);\n\n if (currentAnchorWindow === null) {\n dispatch(setMapAnchorWindow(infoWindow));\n }\n };\n\n const refreshInfoWindow = (lat: number, lng: number) => {\n const infoWindow = new google.maps.InfoWindow({\n pixelOffset: new google.maps.Size(0, -10),\n disableAutoPan: true,\n\n });\n\n setInfoWindowAndOpen(lat, lng, infoWindow);\n\n if (currentAnchorWindow == null) {\n dispatch(setMapAnchorWindow(infoWindow));\n }\n };\n\n useEffect(() => {\n const data = filterStoreData(\n storeData[currentBenchmarkIndex].mapData,\n isHome\n );\n const layer = gpsMapLayers.createScatterplotLayer(\n scatterplotHomeColor,\n scatterplotWorkColor,\n scatterplotRadius,\n scatterplotLineWidth,\n scatterplotOpacity,\n data,\n isHome\n );\n\n buxtonDeck.updateProp(layer);\n }, [\n scatterplotOpacity,\n scatterplotRadius,\n scatterplotLineWidth,\n scatterplotHomeColor,\n scatterplotWorkColor,\n ]);\n\n useEffect(() => {\n const data = filterStoreData(\n storeData[currentBenchmarkIndex].mapData,\n isHome\n );\n const layer = gpsMapLayers.createHeatmapLayer(\n homeGradient,\n workGradient,\n heatmapOpacity,\n heatmapRadius,\n heatmapIntensity,\n heatmapThreshold,\n data,\n isHome\n );\n\n buxtonDeck.updateProp(layer);\n }, [heatmapOpacity, heatmapRadius, heatmapIntensity, heatmapThreshold]);\n\n useEffect(() => {\n const data = filterStoreData(\n storeData[currentBenchmarkIndex].mapData,\n isHome\n );\n const layer = gpsMapLayers.createHexagonLayer(\n homeGradient,\n workGradient,\n hexOpacity,\n hexRadius,\n hexUpperPercentile,\n hexLowerPercentile,\n hexCoverage,\n data,\n isHome\n );\n\n buxtonDeck.updateProp(layer);\n }, [\n hexOpacity,\n hexRadius,\n hexUpperPercentile,\n hexLowerPercentile,\n hexCoverage,\n ]);\n\n useEffect(() => {\n const centroid = getPolygonCentroid(\n storePolygon[currentBenchmarkIndex].linearRings[0]\n );\n addInfoWindow(centroid.latitude, centroid.longitude);\n }, [props.benchmarkItems]);\n\n const setInfoWindowAndOpen = (\n latitude: number,\n longitude: number,\n infoWindow: google.maps.InfoWindow\n ) => {\n infoWindowAnchor.set(\n \"position\",\n new google.maps.LatLng(latitude, longitude)\n );\n\n if (props.benchmarkItems[currentBenchmarkIndex].name) {\n infoWindow.setContent(props.benchmarkItems[currentBenchmarkIndex].name);\n } else {\n infoWindow.setContent(`Polygon around: ${latitude}, ${longitude}`);\n }\n\n if (googleMap !== null) {\n infoWindow.open(googleMap, infoWindowAnchor);\n }\n };\n\n const handleVisitsChange = (value: DropdownComparisonWeight) => {\n switch (value) {\n case DropdownComparisonWeight.PRIMARY:\n setIsVisits(false);\n break;\n case DropdownComparisonWeight.SECONDARY:\n setIsVisits(true);\n break;\n }\n };\n\n const handleHomeWorkChange = (value: HomeWorkIdentifier) => {\n setIsHome(value === HomeWorkIdentifier.HOME);\n };\n\n const handleLayerTypeChange = (value: LayerTypeEnum) => {\n switch (value) {\n case LayerTypeEnum.Hexagon:\n setLayerType(LayerTypeEnum.Hexagon);\n break;\n case LayerTypeEnum.Scatterplot:\n setLayerType(LayerTypeEnum.Scatterplot);\n setIsVisits(true);\n break;\n case LayerTypeEnum.Heatmap:\n setLayerType(LayerTypeEnum.Heatmap);\n break;\n }\n };\n\n const handleMapStyleChange = (style: MapStyleEnum) =>\n dispatch(setMapStyleOptions(style));\n\n const handleMapCenterReset = (): void => {\n const centroid = getPolygonCentroid(\n storePolygon[currentBenchmarkIndex].linearRings[0]\n );\n googleMap.setZoom(mapZoom);\n googleMap.panTo({ lat: centroid.latitude, lng: centroid.longitude });\n };\n\n const onShrink = () => {\n setIsMapControlsOpen(false);\n };\n\n const onExpand = () => {\n setIsMapControlsOpen(true);\n };\n\n const handleBenchmarkChange = (value: string) => {\n const index = Number(value);\n setCurrentBenchmarkIndex(index);\n setMapNeedsRecenter(true);\n };\n\n const getBenchmarkButtonClassName = (\n isSelected: boolean,\n index: number,\n arrayLength: number\n ) => {\n let className = \"\";\n if (index === 0) {\n className += \"gps-benchmark-button-leftmost\";\n } else if (index === arrayLength - 1) {\n className += \"gps-benchmark-button-rightmost\";\n } else {\n className += \"gps-benchmark-button-middlemost\";\n }\n\n if (isSelected) {\n className += \" gps-benchmark-button-selected\";\n }\n return className;\n };\n\n const onMapReady = useCallback(() => {\n setMapNeedsRecenter(true);\n }, []);\n\n return (\n <>\n \n \n Provides insights into the Home and Work locations by density for the\n geography of interest. Use the toggle switches found around the border\n to toggle different modes, themes, and ranges.\n \n \n {featureFlags.DigitalShare\n && renderType === RenderType.DIGITAL_SHARE\n // Template gets attached to DOM here so it can then be accessed\n // by the TemplateImageGenerator.\n && shareTemplate}\n\n {/* This is the element being printed */}\n \n \n \n {!isMapLoaded && (\n \n \n \n )}\n\n {renderType !== RenderType.DIGITAL_SHARE && (\n // We don't want the buttons to show in the share/print versions.\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 {layerType !== LayerTypeEnum.Scatterplot && (\n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n {isMapControlsOpen ? (\n }\n >\n \n \n ) : (\n \n \n \n )}\n \n \n )}\n \n \n );\n};\n","import { IPoint } from \"./IPoint\";\nimport { IPolygon } from \"./IPolygon\";\n\nexport interface IMapLayers {\n createGpsPolygonLayer: (\n data: IPoint[][],\n id: string,\n callback: (latitude: number, longitude: number) => void,\n currentBenchmarkIndex?: number\n ) => void;\n createRetailMatchPolygonLayer: (\n data: IPolygon[],\n id: string,\n getVolumeAlpha: (externalID: string) => number\n ) => void;\n createScatterplotLayer: (\n scatterplotHomeColor: any[],\n scatterplotWorkColor: any[],\n scatterplotRadius: number,\n scatterplotLineWidth: number,\n scatterplotOpacity: number,\n data: any,\n isHome: boolean\n ) => void;\n createHeatmapLayer: (\n homeGradient: number[][],\n workGradient: number[][],\n heatmapOpacity: number,\n heatmapRadius: number,\n heatmapIntensity: number,\n heatmapThreshold: number,\n data: any,\n isHome: boolean\n ) => void;\n createHexagonLayer: (\n homeGradient: number[][],\n workGradient: number[][],\n hexOpacity: number,\n hexRadius: number,\n hexUpperPercentile: number,\n hexLowerPercentile: number,\n hexCoverage: number,\n data: any,\n isHome: boolean\n ) => void;\n}\n","import { Row, Col, Slider, InputNumber } from \"antd\";\nimport React, { ChangeEvent } from \"react\";\nimport { LayerTypeEnum } from \"../../Enums/GPSMapEnum\";\nimport { rgbToHex, hexToRgb } from \"../../Util/ColorUtil\";\n\ninterface MapLayerProps {\n isHome: boolean;\n layerType: LayerTypeEnum;\n scatterplotOpacity: number;\n scatterplotRadius: number;\n scatterplotLineWidth: number;\n scatterplotHomeColor: any[];\n scatterplotWorkColor: any[];\n setScatterplotOpacity: (value: number) => void;\n setScatterplotRadius: (value: number) => void;\n setScatterplotLineWidth: (value: number) => void;\n setScatterplotHomeColor: (value: any[]) => void;\n setScatterplotWorkColor: (value: any[]) => void;\n\n heatmapOpacity: number;\n heatmapRadius: number;\n heatmapIntensity: number;\n heatmapThreshold: number;\n setHeatmapRadius: (value: number) => void;\n setHeatmapOpacity: (value: number) => void;\n setHeatmapThreshold: (value: number) => void;\n setHeatmapIntensity: (value: number) => void;\n\n hexOpacity: number;\n hexRadius: number;\n hexLowerPercentile: number;\n hexUpperPercentile: number;\n hexCoverage: number;\n setHexOpacity: (value: number) => void;\n setHexRadius: (value: number) => void;\n setHexLowerPercentile: (value: number) => void;\n setHexCoverage: (value: number) => void;\n setHexUpperPercentile: (value: number) => void;\n}\n\nexport const MapLayerOptions = (props: MapLayerProps) => {\n const { layerType } = props;\n\n const handleScatterplotHomeColorChange = (\n event: ChangeEvent\n ) => {\n const { r: red, g: green, b: blue } = hexToRgb(event.target.value);\n props.setScatterplotHomeColor([red, green, blue]);\n };\n\n const handleScatterplotWorkColorChange = (\n event: ChangeEvent\n ) => {\n const { r: red, g: green, b: blue } = hexToRgb(event.target.value);\n props.setScatterplotWorkColor([red, green, blue]);\n };\n\n switch (layerType) {\n case LayerTypeEnum.Scatterplot:\n return (\n <>\n
    Opacity
    \n \n \n \n props.setScatterplotOpacity(value as number)\n }\n />\n \n \n \n props.setScatterplotOpacity(value as number)\n }\n />\n \n \n
    Radius
    \n \n \n \n props.setScatterplotRadius(value as number)\n }\n />\n \n \n \n props.setScatterplotRadius(value as number)\n }\n />\n \n \n
    Line Width
    \n \n \n \n props.setScatterplotLineWidth(value as number)\n }\n />\n \n \n \n props.setScatterplotLineWidth(value as number)\n }\n />\n \n \n {props.isHome ? (\n <>\n
    Color
    \n \n \n \n \n \n \n ) : (\n <>\n
    Color
    \n \n \n \n \n \n \n )}\n \n );\n\n case LayerTypeEnum.Heatmap:\n return (\n <>\n
    Opacity
    \n \n \n props.setHeatmapOpacity(value as number)}\n />\n \n \n props.setHeatmapOpacity(value as number)}\n />\n \n \n
    Radius
    \n \n \n props.setHeatmapRadius(value as number)}\n />\n \n \n props.setHeatmapRadius(value as number)}\n />\n \n \n
    Intensity
    \n \n \n props.setHeatmapIntensity(value as number)}\n />\n \n \n props.setHeatmapIntensity(value as number)}\n />\n \n \n
    Threshold
    \n \n \n props.setHeatmapThreshold(value as number)}\n />\n \n \n props.setHeatmapThreshold(value as number)}\n />\n \n \n \n );\n\n case LayerTypeEnum.Hexagon:\n return (\n <>\n
    Opacity
    \n \n \n props.setHexOpacity(value as number)}\n />\n \n \n props.setHexOpacity(value as number)}\n />\n \n \n
    Radius
    \n \n \n props.setHexRadius(value as number)}\n />\n \n \n props.setHexRadius(value as number)}\n />\n \n \n
    Lower Percentile
    \n \n \n \n props.setHexLowerPercentile(value as number)\n }\n />\n \n \n \n props.setHexLowerPercentile(value as number)\n }\n />\n \n \n
    Upper Percentile
    \n \n \n \n props.setHexUpperPercentile(value as number)\n }\n />\n \n \n \n props.setHexUpperPercentile(value as number)\n }\n />\n \n \n
    Coverage
    \n \n \n props.setHexCoverage(value as number)}\n />\n \n \n props.setHexCoverage(value as number)}\n />\n \n \n \n );\n\n default:\n return null;\n }\n};\n","import React, { FunctionComponent, useState, useEffect, useRef } from \"react\";\nimport { Select } from \"antd\";\nimport {\n PolygonNameWithCircle,\n RechartBarLine,\n ChartBodyWrapper,\n ChartButtonWrapper,\n ReportDataWrapper,\n formatYValue,\n ChartTitle,\n shortenStr,\n formatLabelWithEllipsis,\n} from \"../../../Common\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport {\n colorTwoBright,\n colorTwoDark,\n} from \"../../../../globalStyles/colors/scoutColors\";\nimport {\n RenderType,\n DropdownComparisonWeight,\n DigitalShareAppType,\n DigitalShareItemType,\n} from \"../../../../Enums/Enums\";\nimport {\n IChartVisitorOrigData,\n IPolygon,\n IChartMergedDatapoint,\n IChartCompare,\n IGPSChartMergedDatapoint,\n} from \"../../../../Models/Models\";\nimport { IMobilyticsBenchmarkItem } from \"../../../../Models/IMobilyticsBenchmarkItem\";\nimport MobilyticsPolygonSelect from \"../MobilyticsPolygonSelect\";\n\ninterface IGPSVisitOrigChart {\n storeVisitOrigData: IChartVisitorOrigData;\n benchmarkVisitOrigData: IChartVisitorOrigData;\n polygons: IPolygon[];\n renderType: RenderType;\n benchmarkItems: IMobilyticsBenchmarkItem[];\n}\n\nexport const GPSVisitOrig: FunctionComponent = (\n props: IGPSVisitOrigChart\n) => {\n const { polygons, storeVisitOrigData, benchmarkVisitOrigData } = props;\n\n // ███████╗████████╗ █████╗ ████████╗███████╗\n // ██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██╔════╝\n // ███████╗ ██║ ███████║ ██║ █████╗\n // ╚════██║ ██║ ██╔══██║ ██║ ██╔══╝\n // ███████║ ██║ ██║ ██║ ██║ ███████╗\n // ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝\n\n const [visitOrigGeogType, setVisitOrigGeogType] = useState(\"zipcode\");\n const [mergedVisitOrigGPSData, setMergedVisitOrigGPSData]\n = useState(null);\n const [polygonIdentifiers, setPolyIdentifiers] = useState<\n { name: string; identifier: string }[]\n >([]);\n const [polygonDataType, setPolygonDataType] = useState(\"\");\n const [originationData, setOriginationData] = useState<\n Map\n >(new Map());\n const [selectedPolygon, setSelectedPolygon] = useState(\"\");\n const [bar1ValueAttr, setBar1ValueAttr] = useState<\n \"selection1PrimaryWeight\" | \"selection1SecondaryWeight\" | \"nationalWeight\"\n >(\"selection1PrimaryWeight\");\n const [dropdownValue, setDropdownValue] = useState(\n DropdownComparisonWeight.PRIMARY\n );\n const [visibleModal, setVisibleModal] = useState(false);\n const [initialLoadComplete, setInitialLoadComplete]\n = useState(false);\n const [selectedPolygonIndex, setSelectedPolygonIndex] = useState(0);\n // const [tooltipText, setTooltipText] = useState(\"\");\n\n // ██╗ ██╗ █████╗ ██████╗ ███████╗\n // ██║ ██║██╔══██╗██╔══██╗██╔════╝\n // ██║ ██║███████║██████╔╝███████╗\n // ╚██╗ ██╔╝██╔══██║██╔══██╗╚════██║\n // ╚████╔╝ ██║ ██║██║ ██║███████║\n // ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝\n const polygonNames = polygons.map((pol: IPolygon) => pol.name);\n\n const renderType\n = props.renderType === undefined ? RenderType.DEFAULT : props.renderType;\n const { Option } = Select;\n const countyDropdowns = [\"County\", \"DMA\", \"State\", \"Zipcode\"];\n\n const title = \"Visit Origination\";\n // const tooltipText= `Shows the percent of [visitsVisitors] to ${selectedGpsInsightForReportView[0].title} location by home geography [county].`\n const tooltipText = `Shows the percent of ${\n dropdownValue === DropdownComparisonWeight.PRIMARY ? \"visitors\" : \"visits\"\n } to ${selectedPolygon} location by home geography ${visitOrigGeogType}.`;\n const initialYValue = \"selection1PrimaryWeight\";\n const primaryWeightLabel = \"Visitors\";\n const secondaryWeightLabel = \"Visits\";\n const scrollableParentSelector = \"#GPSReportBody\";\n const chartAnim = \"zoomIn\";\n const makeXLabelsFitDemmit = true;\n const xAxisHeight = 100;\n const ignoreXTickFormatterOnTooltip = true;\n const app = DigitalShareAppType.Mobilytics;\n const itemType = DigitalShareItemType.VisitorOrigination;\n\n useEffect(() => {\n const polygonIds: { name: string; identifier: string }[] = Array.from(\n polygonNames,\n (n: string, i: number) => ({ name: n, identifier: n.concat(`-${i}`) })\n );\n\n setPolyIdentifiers(polygonIds);\n\n const origData = new Map();\n\n origData.set(polygonIds[0].identifier, storeVisitOrigData);\n\n const mergedData: IChartMergedDatapoint[] = mergeVisitOrigGPSData({\n selection1: origData.get(polygonIds[0].identifier),\n selection2: null,\n national: null,\n });\n\n setMergedVisitOrigGPSData(mergedData?.sort(greatestSel1ValueSort));\n\n if (benchmarkVisitOrigData) {\n origData.set(polygonIds[1].identifier, benchmarkVisitOrigData);\n }\n\n setOriginationData(origData);\n setPolygonDataType(polygonIds[0].identifier);\n setSelectedPolygon(polygonIds[0].name);\n setInitialLoadComplete(true);\n }, []);\n\n useEffect(() => {\n if (originationData.has(polygonDataType)) {\n setMergedVisitOrigGPSData(\n mergeVisitOrigGPSData({\n selection1: originationData.get(polygonDataType),\n selection2: null,\n national: null,\n })?.sort(greatestSel1ValueSort)\n );\n }\n }, [visitOrigGeogType, polygonDataType]);\n\n const mergeVisitOrigGPSData = (\n data: IChartCompare\n ): IChartMergedDatapoint[] => {\n return data?.selection1\n ? (\n data.selection1[visitOrigGeogType] as Array\n ).map((item: IGPSChartMergedDatapoint) => {\n return {\n id: item.id,\n nationalWeight: null,\n selection1PrimaryWeight: item.visitorWeight\n ? item.visitorWeight\n : item.weight,\n selection1SecondaryWeight: item.visitWeight,\n };\n })\n : null;\n };\n\n const handleVisitOrigGeogTypeChange = (str: string) => {\n setVisitOrigGeogType(str);\n };\n\n const handlePolygonDataChange = (value: string) => {\n const index = Number(value);\n setSelectedPolygonIndex(index);\n\n const poly = polygonIdentifiers[index];\n setPolygonDataType(poly.identifier);\n setSelectedPolygon(poly.name);\n };\n\n const handleVisitsChange = (value: DropdownComparisonWeight) => {\n switch (value) {\n case DropdownComparisonWeight.PRIMARY:\n setBar1ValueAttr(`selection1PrimaryWeight`);\n setDropdownValue(DropdownComparisonWeight.PRIMARY);\n break;\n case DropdownComparisonWeight.SECONDARY:\n setBar1ValueAttr(`selection1SecondaryWeight`);\n setDropdownValue(DropdownComparisonWeight.SECONDARY);\n break;\n }\n };\n\n // ERY: gettin' pretty frail...lots of exceptions\n const greatestSel1ValueSort = (\n a: IChartMergedDatapoint,\n b: IChartMergedDatapoint\n ) => {\n if (bar1ValueAttr === `selection1PrimaryWeight`) {\n return b.selection1PrimaryWeight - a.selection1PrimaryWeight;\n } else if (bar1ValueAttr === `selection1SecondaryWeight`) {\n return b.selection1SecondaryWeight - a.selection1SecondaryWeight;\n }\n };\n\n const InteractionArea: JSX.Element\n = renderType === RenderType.DIGITAL_SHARE\n || renderType === RenderType.PRINT ? null : (\n \n
    \n \n \n \n \n \n \n {countyDropdowns.map((str, i) => (\n \n {shortenStr(str, 20)}\n \n ))}\n \n
    \n
    \n );\n\n const ref = useRef(null);\n\n const Chart: JSX.Element = mergedVisitOrigGPSData && (\n {\n setVisibleModal(true);\n }}\n >\n \n \n );\n\n if (\n featureFlags.DigitalShare\n && renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(app, itemType)\n ) {\n if (initialLoadComplete) {\n registerRef(app.toString(), itemType.toString(), ref);\n registerElement(app.toString(), itemType.toString(), tooltipText, Chart);\n }\n }\n\n return (\n \n \n

    {tooltipText}

    \n \n {initialLoadComplete && mergedVisitOrigGPSData && InteractionArea}\n {initialLoadComplete && mergedVisitOrigGPSData && Chart}\n \n
    \n );\n};\n","export const isWebGLCompatible = () => {\n try {\n const canvas = document.createElement(\"canvas\");\n return !!(\n window.WebGLRenderingContext\n && (canvas.getContext(\"webgl\") || canvas.getContext(\"experimental-webgl\"))\n );\n } catch (e) {\n return false;\n }\n};\n","import React, { FunctionComponent } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\n\nimport {\n IGPSBenchmarkCommonData,\n IPolygon,\n IRootReducer,\n} from \"../../../../Models/Models\";\nimport { gpsVisitorBehaviorsContainerSelector } from \"../../../../Reducers/Selectors/GPSInsightsSelectors\";\nimport {\n AnimatedReportCard,\n ReportH1,\n ReportScrollableSection,\n ReportSectionHeader,\n ReportSectionNumber,\n} from \"../../../Common\";\nimport { FrequentlyVisitedPlaces } from \"./FrequentlyVisitedPlaces\";\nimport { VisitorLoyalty } from \"./VisitorLoyalty\";\n\ninterface VisitorBehaviorsContainerProps {\n location1Name: string;\n location2Name?: string;\n benchmarkCommonData?: IGPSBenchmarkCommonData;\n renderType?: RenderType;\n app?: DigitalShareAppType;\n onMapReady?: () => void;\n}\n\nconst VisitorBehaviorsContainer: FunctionComponent\n = (props: VisitorBehaviorsContainerProps) => {\n /** misc */\n const { location2Name } = props;\n /** store */\n const { fvpData, showVisitorBehaviors, polygons } = useSelector(\n gpsVisitorBehaviorsContainerSelector\n );\n\n const polygonsAreIdentical = () => {\n if (!polygons || polygons?.length === 0) {\n return false;\n }\n\n const polyLengths = polygons.map(\n (polygon) => polygon.linearRings[0].length\n );\n const allSameLength: boolean = polyLengths.every(\n (length) => (length = polyLengths[0])\n );\n\n if (!allSameLength) {\n return false;\n }\n\n const comparisonPolygon: IPolygon = polygons[0];\n const polyLength: number = polyLengths[0];\n\n for (let i = 0; i < polyLength; i++) {\n const comparisonPoint = comparisonPolygon.linearRings[0][i];\n\n const identicalX = polygons.every((polygon) => {\n const pointInThisPoly = polygon.linearRings[0][i];\n return pointInThisPoly.x === comparisonPoint.x;\n });\n const identicalY = polygons.every((polygon) => {\n const pointInThisPoly = polygon.linearRings[0][i];\n return pointInThisPoly.y === comparisonPoint.y;\n });\n\n if (!(identicalX && identicalY)) {\n return false;\n }\n }\n\n return true;\n };\n\n return showVisitorBehaviors ? (\n \n \n 04\n Visitor Behaviors\n \n \n \n\n {location2Name && !polygonsAreIdentical() && (\n \n )}\n \n \n ) : null;\n };\n\nexport default VisitorBehaviorsContainer;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable react/display-name */\nimport { Button, Select, Table } from \"antd\";\nimport React, {\n CSSProperties,\n ReactElement,\n useCallback,\n useEffect, useRef, useState\n} from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\nimport {\n setFvpMapMarkers,\n setSelectedFVP\n} from \"../../../../Actions/GPSInsightsActions\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport {\n colorTwoBright,\n colorTwoDark,\n deviceWidth\n} from \"../../../../globalStyles\";\nimport { IBrandCategory } from \"../../../../Models/IBrandCategory\";\nimport { IMapMarker, MapMarker } from \"../../../../Models/IMapMarker\";\nimport {\n IFrequentlyVisitedPlace,\n IGCPBigQueryJob,\n IPoint\n} from \"../../../../Models/Models\";\nimport {\n gpsFVPDataSelector,\n gpsPolygonNames\n} from \"../../../../Reducers/Selectors/GPSInsightsSelectors\";\nimport {\n ReportCategoryHeader,\n ReportCategoryText, ReportH4,\n ReportH5, useWindowResize\n} from \"../../../Common\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport FrequentlyVisitedPlacesMap from \"./FrequentlyVisitedPlacesMap\";\nimport PolygonCircleWithNumber from \"./PolygonCircleWithNumber\";\n\n\nenum TimeElement {\n Anytime,\n Before,\n After,\n}\nenum TableOption {\n One,\n Two,\n}\ntype TimeOption = { name: string; value: TimeElement };\ninterface FrequentlyVisitedPlacesProps {\n fvpData: IFrequentlyVisitedPlace[][];\n renderType?: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n onMapReady?: () => void;\n}\ninterface IMapLegendItemProps {\n backgroundColor: string;\n}\nconst MapLegendItem = styled.div`\n cursor: pointer;\n background-color: ${(props: IMapLegendItemProps) => props.backgroundColor};\n height: 14px;\n width: 14px;\n border-radius: 50%;\n`;\nconst MapLegendWrapper = styled.div`\n display: flex;\n justify-content: center;\n margin: 17px;\n`;\nconst DropdownWrapper = styled.div`\n width: 33%;\n max-width: 300px;\n`;\nconst dropdownStyle: CSSProperties = {\n width: \"100%\",\n};\n\nconst StyledTable = styled(Table)`\n .ant-table-thead, .ant-table-tbody {\n > tr {\n > td {\n font-family: Manrope;\n font-size: 12px;\n padding: 4px 0;\n }\n }\n > tr {\n > th {\n font-family: Manrope;\n font-size: 12px;\n padding: 7px 0;\n }\n }\n }\n`;\n\nconst googlePushpinImage\n = \"https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi2.png\";\n\nexport const FrequentlyVisitedPlaces = (\n props: FrequentlyVisitedPlacesProps\n): JSX.Element => {\n\n /** misc */\n const dispatch = useDispatch();\n const windowSize = useWindowResize();\n const maxNumLocations = 5;\n /** store */\n const store = useSelector(gpsFVPDataSelector);\n const polygonNames = useSelector(gpsPolygonNames);\n /** state */\n const [selectedCategory, setSelectedCategory]\n = useState(null);\n const [selectedSubCategory, setSelectedSubCategory]\n = useState(null);\n const [selectedTimeElement, setSelectedTimeElement] = useState(\n TimeElement.Anytime\n );\n const [polygons, setPolygons] = useState([]);\n const [mapReady, setMapReady] = useState(false);\n\n /** effects */\n useEffect(() => {\n /** the markers for the frequently visited places */\n const markers: IMapMarker[] = getMapMarkers(maxNumLocations);\n dispatch(setFvpMapMarkers(markers));\n }, [store.jobs, selectedCategory, selectedSubCategory, selectedTimeElement]);\n\n useEffect(() => {\n /** only get sub categories that have results in the data */\n const filteredSubCategories: IBrandCategory[] = getFilteredSubCategories();\n /** always select the first category to make it obvious to the user\n * where the data in the table / map is coming from\n */\n setSelectedSubCategory(filteredSubCategories[0]);\n }, [selectedCategory]);\n\n useEffect(() => {\n const polys = getMapPolygons();\n setPolygons(polys);\n }, [store.jobs]);\n\n /** Failsafe for \"mapReady\" state if the Google map fails to load */\n useEffect(() => {\n const onMapReadyFailsafe = setTimeout(() => setMapReady(true), 10000);\n return () => clearTimeout(onMapReadyFailsafe);\n }, []);\n\n /** misc */\n const timeElements: TimeOption[] = [\n {\n name: \"Anytime\",\n value: TimeElement.Anytime,\n },\n {\n name: \"Before\",\n value: TimeElement.Before,\n },\n {\n name: \"After\",\n value: TimeElement.After,\n },\n ];\n\n const getMapPolygons = (): IPoint[][] => {\n /** the markers for the job polygon centroid */\n const rings: IPoint[][] = [];\n for (const job of store.jobs) {\n for (const ring of job.jobPolygon.linearRings) {\n rings.push(ring);\n }\n }\n return rings;\n };\n\n const getFilteredPrimaryCategories = (): IBrandCategory[] => {\n /** only add categories that match up with a brand. Otherwise\n * it becomes a treasure hunt to find a category that has results\n * in it.\n */\n const filteredPrimaryCategories: IBrandCategory[] = [];\n\n for (const data of props.fvpData) {\n for (const fvp of data) {\n const foundCategory: IBrandCategory = store.categories.find(\n (cat: IBrandCategory) => {\n return cat.naicsCode === fvp.categoryId;\n }\n );\n if (foundCategory) {\n const categoryExists = filteredPrimaryCategories.find(\n (cat: IBrandCategory) => {\n return cat.categoryName === foundCategory.categoryName;\n }\n );\n if (!categoryExists) {\n filteredPrimaryCategories.push(foundCategory);\n }\n }\n }\n }\n /** sort alphabetically */\n return filteredPrimaryCategories.sort(\n (a: IBrandCategory, b: IBrandCategory) => {\n if (a.categoryName < b.categoryName) return -1;\n if (a.categoryName > b.categoryName) return 1;\n return 0;\n }\n );\n };\n\n const getFilteredSubCategories = (): IBrandCategory[] => {\n /** only add sub-categories that match up with a brand for the same\n * reason as stated above\n */\n const filteredSubCategories: IBrandCategory[] = [];\n\n if (selectedCategory) {\n const subCatsInCategory: IBrandCategory[] = store.categories.filter(\n (cat: IBrandCategory) => {\n return cat.categoryName === selectedCategory.categoryName;\n }\n );\n\n for (const data of props.fvpData) {\n for (const fvp of data) {\n const foundSubCat: IBrandCategory = subCatsInCategory.find(\n (cat: IBrandCategory) => {\n return cat.naicsCode === fvp.categoryId;\n }\n );\n if (foundSubCat) {\n const subCatExists = filteredSubCategories.find(\n (cat: IBrandCategory) => {\n return cat.subcategoryName === foundSubCat.subcategoryName;\n }\n );\n if (!subCatExists) {\n filteredSubCategories.push(foundSubCat);\n }\n }\n }\n }\n }\n /** sort alphabetically */\n return filteredSubCategories.sort(\n (a: IBrandCategory, b: IBrandCategory) => {\n if (a.subcategoryName < b.subcategoryName) return -1;\n if (a.subcategoryName > b.subcategoryName) return 1;\n return 0;\n }\n );\n };\n\n const getHeaderAddressVerbiage = (): JSX.Element[] => {\n let key = 0;\n const verbiage: JSX.Element[] = [\n {store.jobs[0].jobPolygon.name},\n ];\n if (store.jobs.length > 1) {\n verbiage.push(\n \n {\" \"}\n and {store.jobs[1].jobPolygon.name}\n \n );\n }\n\n return verbiage;\n };\n\n const getTopLocations = (\n numLocations: number,\n jobId: string\n ): IFrequentlyVisitedPlace[] => {\n /** the data for only this job */\n let fvps: IFrequentlyVisitedPlace[] = [];\n for (const data of props.fvpData) {\n const total = getFvpTotal(jobId);\n for (const fvp of data) {\n /** 11709 - don't show items with a percentage of 0 */\n const p = getFvpPercentage(fvp, total) * 100;\n if (fvp.jobId === jobId && p > 0) {\n fvp.percentage = p;\n fvps.push(fvp);\n }\n }\n }\n /** sort the data depending on what is selected in the dropdowns */\n if (selectedSubCategory) {\n /** subcategory is more specific, so filter by this over category if possible */\n fvps = fvps.filter((f: IFrequentlyVisitedPlace) => {\n return f.categoryId === selectedSubCategory.naicsCode;\n });\n } else if (selectedCategory) {\n /** only a category is chosen, filter by this only */\n fvps = fvps.filter((f: IFrequentlyVisitedPlace) => {\n return f.categoryId === selectedCategory.naicsCode;\n });\n }\n if (selectedTimeElement !== null) {\n switch (selectedTimeElement) {\n case TimeElement.Anytime: {\n fvps = fvps.filter((f: IFrequentlyVisitedPlace) => {\n return (\n f.categoryId.toUpperCase() !== \"HOME\"\n && f.categoryId.toUpperCase() !== \"WORK\"\n );\n });\n fvps.sort(\n (a: IFrequentlyVisitedPlace, b: IFrequentlyVisitedPlace) => {\n if (a.visitCount < b.visitCount) return 1;\n if (a.visitCount > b.visitCount) return -1;\n return 0;\n }\n );\n break;\n }\n case TimeElement.Before: {\n fvps.sort(\n (a: IFrequentlyVisitedPlace, b: IFrequentlyVisitedPlace) => {\n if (a.beforeVisitCount < b.beforeVisitCount) return 1;\n if (a.beforeVisitCount > b.beforeVisitCount) return -1;\n return 0;\n }\n );\n break;\n }\n case TimeElement.After: {\n fvps.sort(\n (a: IFrequentlyVisitedPlace, b: IFrequentlyVisitedPlace) => {\n if (a.afterVisitCount < b.afterVisitCount) return 1;\n if (a.afterVisitCount > b.afterVisitCount) return -1;\n return 0;\n }\n );\n break;\n }\n }\n }\n\n return fvps.slice(0, numLocations);\n };\n\n const categoryChange = (catName: string): void => {\n const category: IBrandCategory = getFilteredPrimaryCategories().find(\n (c: IBrandCategory) => {\n return c.categoryName === catName;\n }\n );\n setSelectedCategory(category);\n };\n\n const subCategoryChange = (catName: string): void => {\n const category: IBrandCategory = getFilteredSubCategories().find(\n (c: IBrandCategory) => {\n return c.subcategoryName === catName;\n }\n );\n setSelectedSubCategory(category);\n setSelectedTimeElement(TimeElement.Anytime);\n };\n\n const timeChange = (timeElement: TimeElement): void => {\n setSelectedTimeElement(timeElement);\n };\n\n const filterInput = (input: string, option: ReactElement) => {\n return option.props.children\n .toString()\n .toLowerCase()\n .includes(input.toLowerCase());\n };\n\n const selectTopLocation = (place: IFrequentlyVisitedPlace): void => {\n const markersCopy: IMapMarker[] = [...store.mapMarkers].map(\n (m: IMapMarker) => {\n return {\n ...m,\n isSelected: place.storeId === m.id,\n };\n }\n );\n\n dispatch(setFvpMapMarkers(markersCopy));\n dispatch(setSelectedFVP(place));\n };\n\n const getMapMarkers = (numMarkersToGet: number): IMapMarker[] => {\n const markers: IMapMarker[] = [];\n store.jobs.forEach((job: IGCPBigQueryJob, jobIndex: number) => {\n const topLocations: IFrequentlyVisitedPlace[] = getTopLocations(\n numMarkersToGet,\n job.jobId\n );\n topLocations.map(\n (place: IFrequentlyVisitedPlace, locationIndex: number) => {\n if (place.latitude !== 0 || place.longitude !== 0) {\n const marker = new MapMarker(\n `${place.storeId}`,\n place.latitude,\n place.longitude\n );\n if (place.brand) {\n marker.icon = place.brand.logoPath;\n }\n marker.name = place.name.charAt(0);\n marker.rank = locationIndex + 1;\n marker.content = (\n \n {marker.rank}\n \n );\n markers.push(marker);\n }\n }\n );\n });\n return markers;\n };\n\n const getFvpPercentage = (\n place: IFrequentlyVisitedPlace,\n total: number\n ): number => {\n switch (selectedTimeElement) {\n case TimeElement.Anytime: {\n return place.visitCount / total;\n }\n case TimeElement.Before: {\n return place.beforeVisitCount / total;\n }\n case TimeElement.After: {\n return place.afterVisitCount / total;\n }\n default: {\n return 0;\n }\n }\n };\n\n const getFvpTotal = (jobId: string): number => {\n let runningTotal = 0;\n\n for (const data of props.fvpData) {\n for (const fvp of data) {\n if (fvp.jobId === jobId) {\n switch (selectedTimeElement) {\n case TimeElement.Anytime: {\n runningTotal += fvp.visitCount;\n break;\n }\n case TimeElement.Before: {\n runningTotal += fvp.beforeVisitCount;\n break;\n }\n case TimeElement.After: {\n runningTotal += fvp.afterVisitCount;\n break;\n }\n default: {\n //Should never hit this\n return 0;\n }\n }\n }\n }\n }\n\n return runningTotal;\n };\n\n const getTableColumns = (tableOption: TableOption, polygonColor: string) => [\n {\n title: \"Location\",\n dataIndex: null,\n render: (text: any, place: IFrequentlyVisitedPlace, index: number) => {\n return (\n \n \n {\n \n }\n \n\n \n
    {place.name}
    \n {place.address && place.city && place.state && place.zipcode && (\n
    \n {place.address}, {place.city} {place.state} {place.zipcode}\n
    \n )}\n \n \n );\n },\n },\n {\n title: \"Visitor %\",\n dataIndex: null,\n defaultSortOrder: \"descend\" as any,\n width: 115,\n render: (place: IFrequentlyVisitedPlace) => {\n return {place.percentage.toLocaleString()};\n },\n },\n {\n title: \"View\",\n dataIndex: null,\n width: 100,\n render: (place: IFrequentlyVisitedPlace) => {\n return (\n (place.latitude !== 0 || place.longitude !== 0) && (\n \n )\n );\n },\n },\n ];\n\n const getShareTableColumns = (tableOption: TableOption, polygonColor: string) => [\n {\n title: \"Rank\",\n dataIndex: null,\n width: 50,\n render: (text: any, place: IFrequentlyVisitedPlace, index: number) => {\n return
    {index + 1}
    ;\n },\n },\n {\n title: \"Name\",\n dataIndex: null,\n width: 225,\n render: (text: any, place: IFrequentlyVisitedPlace, index: number) => {\n return
    {place.name}
    ;\n },\n },\n {\n title: \"Address\",\n dataIndex: null,\n render: (text: any, place: IFrequentlyVisitedPlace, index: number) => {\n return
    {place.address}
    ;\n },\n },\n {\n title: \"City\",\n dataIndex: null,\n width: 115,\n render: (text: any, place: IFrequentlyVisitedPlace, index: number) => {\n return
    {place.city}
    ;\n },\n },\n {\n title: \"State\",\n dataIndex: null,\n width: 50,\n render: (text: any, place: IFrequentlyVisitedPlace, index: number) => {\n return
    {place.state}
    ;\n },\n },\n {\n title: \"Zip\",\n dataIndex: null,\n width: 65,\n render: (text: any, place: IFrequentlyVisitedPlace, index: number) => {\n return
    {place.zipcode}
    ;\n },\n },\n {\n title: \"Visitor %\",\n dataIndex: null,\n width: 65,\n defaultSortOrder: \"descend\" as any,\n render: (place: IFrequentlyVisitedPlace) => {\n return
    {place.percentage.toLocaleString()}
    ;\n },\n },\n ];\n\n const handleMarkerClick = (m: IMapMarker, jobId: string) => {\n const markersCopy: IMapMarker[] = [...store.mapMarkers].map(\n (mark: IMapMarker) => {\n return {\n ...mark,\n isSelected: mark.id === m.id,\n };\n }\n );\n\n const foundPlace = getTopLocations(maxNumLocations, jobId).find(\n (fvp: IFrequentlyVisitedPlace) => {\n return fvp.storeId === m.id;\n }\n );\n\n dispatch(setFvpMapMarkers(markersCopy));\n dispatch(setSelectedFVP(foundPlace));\n };\n\n const getTableDisplayStyle = (): CSSProperties => {\n const displayObj: CSSProperties = {\n display: store.jobs.length >= 1 ? \"flex\" : \"initial\",\n };\n if (windowSize.width < deviceWidth.desktop) {\n displayObj.flexDirection = \"column\";\n }\n return displayObj;\n };\n\n const handleReset = (): void => {\n const markersCopy: IMapMarker[] = [...store.mapMarkers].map(\n (m: IMapMarker) => {\n return {\n ...m,\n isSelected: false,\n };\n }\n );\n setSelectedSubCategory(null);\n setSelectedCategory(null);\n setSelectedTimeElement(TimeElement.Anytime);\n dispatch(setFvpMapMarkers(markersCopy));\n dispatch(setSelectedFVP(null));\n };\n\n const getmapLegend = (): JSX.Element[] => {\n const elements: JSX.Element[] = [];\n store.jobs.forEach((job: IGCPBigQueryJob, index: number) => {\n elements.push(\n
    \n \n {job.jobPolygon.name}\n
    \n );\n });\n return elements;\n };\n\n const onMapReady = () => {\n setMapReady(true);\n\n if (props.onMapReady) {\n props.onMapReady();\n }\n };\n\n const ref = useRef(null);\n\n const fvpMap =
    \n }\n mapElement={
    }\n markers={store.mapMarkers}\n polygons={polygons}\n onMapReady={onMapReady}\n renderType={props.renderType}\n />\n
    ;\n\n const chart = (\n
    \n \n
    \n Category\n \n {selectedCategory?.categoryName\n ? selectedCategory?.categoryName\n : \"No Selection\"}\n \n
    \n
    \n Subcategory\n \n {selectedSubCategory?.subcategoryName\n ? selectedSubCategory?.subcategoryName\n : \"No Selection\"}\n \n
    \n
    \n Time Range\n \n {timeElements[selectedTimeElement]?.name}\n \n
    \n
    \n
    \n \n {store.jobs[0].jobPolygon.name}\n \n place.storeId + place.name\n }\n />\n
    \n\n {store.jobs[1] && (\n <>\n
    \n \n {store.jobs[1].jobPolygon.name}\n \n place.storeId + place.name\n }\n />\n
    \n \n )}\n
    \n );\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, props.itemType)\n ) {\n const chartText = `Shows top 5 places that visitors to ${polygonNames[0]}${polygonNames.length > 1 && \" and \" + polygonNames[1]} visited during the specified time frame.`;\n \n registerRef(props.app.toString(), props.itemType.toString(), ref);\n registerElement(\n props.app.toString(),\n props.itemType.toString(),\n chartText,\n chart\n );\n\n // JA - Couldn't get this to work inside FrequentlyVisitedPlacesMap.tsx\n registerElement(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.FrequentlyVisitedPlacesMap,\n \"\",\n fvpMap\n );\n }\n\n return (\n
    \n {\n mapReady &&\n <>\n Frequently Visited Places\n\n \n Shows top 5 places that visitors to {...getHeaderAddressVerbiage()}{\" \"}\n visited during the specified time frame.\n
    \n\n \n \n {/*
    Category
    */}\n \n {getFilteredPrimaryCategories().map((cat: IBrandCategory) => {\n return (\n \n {cat.categoryName}\n \n );\n })}\n \n \n \n {/*
    Sub-Category
    */}\n \n {getFilteredSubCategories().map((cat: IBrandCategory) => {\n return (\n \n {cat.subcategoryName}\n \n );\n })}\n \n \n \n {/*
    Time Range
    */}\n \n {timeElements.map((t: TimeOption) => {\n return (\n \n {t.name}\n \n );\n })}\n \n \n \n
    \n
    \n \n {store.jobs[0].jobPolygon.name}\n \n place.storeId + place.name\n }\n rowClassName={(place: IFrequentlyVisitedPlace, index: number) =>\n place.storeId === store.selectedFVP?.storeId ? \"selected\" : \"\"\n }\n style={{\n marginBottom: \"26px\",\n width: \"100%\",\n }}\n />\n
    \n\n {store.jobs[1] && (\n <>\n
    \n
    \n \n {store.jobs[1].jobPolygon.name}\n \n place.storeId + place.name\n }\n rowClassName={(place: IFrequentlyVisitedPlace, index: number) =>\n place.storeId === store.selectedFVP?.storeId ? \"selected\" : \"\"\n }\n style={{\n marginBottom: \"26px\",\n width: \"100%\",\n }}\n />\n
    \n \n )}\n \n\n
    \n \n Reset\n \n
    \n \n }\n\n {fvpMap}\n\n {getmapLegend()}\n \n );\n};\n","import React, { memo, useEffect, useRef, useState } from \"react\";\nimport {\n GoogleMap,\n withGoogleMap,\n OverlayView,\n Marker,\n} from \"react-google-maps\";\nimport InfoBox from \"react-google-maps/lib/components/addons/InfoBox\";\nimport styled from \"styled-components\";\n\nimport { IMapMarker } from \"../../../../Models/IMapMarker\";\nimport { IPoint } from \"../../../../Models/IPoint\";\nimport { digitalShareElementText, generationStatus, isOutputSelected, registerElement, registerRef, setPendingRender } from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { delay, digitalShareMapRender } from \"../../../../Util/ScoutDigitalShareUtil\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { useSelector } from \"react-redux\";\nimport { gpsReportMapSelector } from \"../../../../Reducers/Selectors/GPSInsightsSelectors\";\n\ninterface IFrequentlyVisitedPlacesMapProps {\n markers: IMapMarker[];\n polygons: IPoint[][];\n onMapReady?: () => void;\n renderType?: RenderType;\n}\n\nconst StyledInfoBox = styled(InfoBox)``;\n\nconst FrequentlyVisitedPlacesMap = (props: IFrequentlyVisitedPlacesMapProps): JSX.Element => {\n\n /** misc */\n const googleMapOptions: google.maps.MapOptions = {\n disableDefaultUI: true,\n gestureHandling: \"greedy\",\n };\n\n /** state */\n const mapRef: React.MutableRefObject = useRef();\n const [polyCenters, setPolyCenters] = useState([]);\n const [shareTemplate, setShareTemplate] = useState(null);\n const [ref, setRef] = useState>(null);\n\n const {\n buxtonDeck,\n } = useSelector(gpsReportMapSelector);\n\n /** effects */\n useEffect(() => {\n /** adds the centroid of the polygon as a google point. */\n const polygonMapCenterPoints: google.maps.LatLng[] = [];\n for (const poly of props.polygons) {\n const bounds = new google.maps.LatLngBounds();\n for (const point of poly) {\n const gp = new google.maps.LatLng(point.y, point.x);\n bounds.extend(gp);\n }\n polygonMapCenterPoints.push(bounds.getCenter());\n }\n setPolyCenters(polygonMapCenterPoints);\n }, [props.polygons]);\n\n useEffect(() => {\n const timeoutPanTo = null;\n const timeoutFitBounds = null;\n if (mapRef.current) {\n /** if a marker is selected, pan to that one */\n const selectedMapMarker = props.markers.find((m: IMapMarker) => {\n return m.isSelected;\n });\n if (selectedMapMarker) {\n /* NOTE\n Something between the redux store and the google markers is causing an odd effect that moves the map focus.\n The only way I could stop that was to call fitMapBoundsToMarkers and reset the camera.\n Unable to fix the original issue, this is more of an \"elegant\" workaround.\n */\n // reset map zoom\n fitMapBoundsToMarkers(mapRef.current);\n const bounds = new google.maps.LatLngBounds();\n bounds.extend({\n lat: selectedMapMarker.lat,\n lng: selectedMapMarker.lng,\n });\n // small delay, then pan to selected marker\n setTimeout(() => {\n mapRef.current.panTo({\n lat: selectedMapMarker.lat,\n lng: selectedMapMarker.lng,\n });\n }, 500);\n // small delay, snap closer in. Setting a zoom prop is not working in this situation.\n setTimeout(() => {\n mapRef.current.fitBounds(bounds);\n }, 1000);\n } else {\n /** handles the zoom / center of the map to fit all markers */\n fitMapBoundsToMarkers(mapRef.current);\n }\n }\n // clean up\n return () => {\n clearTimeout(timeoutPanTo);\n clearTimeout(timeoutFitBounds);\n };\n }, [props.markers]);\n\n const getBoundsFittingAllItems = (): google.maps.LatLngBounds => {\n const bounds = new google.maps.LatLngBounds();\n /** extend bounds to fit all markers */\n for (const marker of props.markers) {\n bounds.extend(marker);\n }\n /** extend bounds to fit all polygon centroids */\n for (const poly of props.polygons) {\n for (const point of poly) {\n const gp = new google.maps.LatLng(point.y, point.x);\n bounds.extend(gp);\n }\n }\n return bounds;\n };\n\n const fitMapBoundsToMarkers = (map: GoogleMap): void => {\n const bounds: google.maps.LatLngBounds = getBoundsFittingAllItems();\n map.fitBounds(bounds);\n };\n\n useEffect(() => {\n let isStopped = false;\n let timeout = null;\n if (\n props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.FrequentlyVisitedPlacesMap\n )\n ) {\n // Tell the system we're starting to render.\n setPendingRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.FrequentlyVisitedPlacesMap,\n true\n );\n\n // Using a set timeout here to wait for the redraw() to take effect.\n timeout = setTimeout(() => {\n const run = async () => {\n const ref = React.createRef();\n\n // // Create an image from the map\n const el = document.querySelector(\"#fvp-map\") as HTMLElement;\n el.style.width = \"1250px\";\n el.style.height = \"700px\";\n\n digitalShareElementText.set(DigitalShareItemType.FrequentlyVisitedPlacesMap, \"\");\n\n // Waiting here so that images can show up on the progress screen.\n await delay(1000);\n\n if (\n // If the component has been cleaned up...\n isStopped\n // Or if there has been an error and the process has stopped...\n || generationStatus.get(DigitalShareAppType.Mobilytics) === false\n ) {\n // Then tell the system we're not exporting this component anymore\n // and don't do any more processing.\n setPendingRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.FrequentlyVisitedPlacesMap,\n false\n );\n }\n // Otherwise, if exporting should proceed...\n else {\n // Get the template element to plunk in the DOM so it can be accessed by the generator.\n const template = await digitalShareMapRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.FrequentlyVisitedPlacesMap,\n el,\n ref\n );\n\n setShareTemplate(template);\n setRef(ref);\n // Tell the system we're not rendering anymore (for cancellation cleanup).\n setPendingRender(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.FrequentlyVisitedPlacesMap,\n false\n );\n }\n };\n run();\n }, 100);\n }\n\n return () => {\n if (props.renderType === RenderType.DEFAULT) {\n isStopped = true;\n }\n\n clearTimeout(timeout);\n };\n\n }, [props.renderType]);\n\n useEffect(() => {\n if (ref && shareTemplate) {\n registerRef(\n DigitalShareAppType.Mobilytics,\n DigitalShareItemType.FrequentlyVisitedPlacesMap,\n ref\n );\n }\n }, [ref, shareTemplate]);\n\n return (\n
    \n
    \n \n {polyCenters.map((p: google.maps.LatLng, index: number) => {\n return (\n \n );\n })}\n\n {props.markers.map((m: IMapMarker, i: number) => {\n return (\n \n
    \n \n \n {/* this accounts for the info window close button being gone */}\n \n {m.rank}\n
    \n \n \n\n \n {m.icon ? (\n \n ) : (\n {m.name}\n )}\n \n \n \n );\n })}\n
    \n \n );\n};\n\nconst FrequentlyVisitedPlacesMapWithGoogleMap = withGoogleMap(FrequentlyVisitedPlacesMap);\nconst FrequentlyVisitedPlacesMapWithGoogleMapMemo = memo(FrequentlyVisitedPlacesMapWithGoogleMap, (prevProps, nextProps) => {\n const markersEqual = prevProps.markers === nextProps.markers;\n const polygonsEqual = prevProps.polygons === nextProps.polygons;\n const allEqual = markersEqual && polygonsEqual;\n\n return allEqual;\n});\nexport default FrequentlyVisitedPlacesMapWithGoogleMapMemo;","import React from \"react\";\n\ninterface PolygonCircleWithNumberProps {\n color: string;\n numberToDisplay: number;\n}\n\nconst PolygonCircleWithNumber = ({\n color,\n numberToDisplay,\n}: PolygonCircleWithNumberProps) => {\n return (\n \n {numberToDisplay}\n \n );\n};\n\nexport default PolygonCircleWithNumber;\n","import React, { FunctionComponent, useRef, useState } from \"react\";\n\nimport { BiMale } from \"@react-icons/all-files/bi/BiMale\";\nimport { VennChart, ReportH4, ChartBodyWrapper } from \"../../../Common\";\nimport { IGPSBenchmarkCommonData } from \"../../../../Models/Models\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { VisitorLoyaltySharing } from \"./VisitorLoyaltySharing\";\n\ninterface VisitorLoyaltyProps {\n location1Name: string;\n location2Name?: string;\n benchmarkCommonData?: IGPSBenchmarkCommonData;\n scrollableParentSelector: string;\n renderType?: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n}\n\nexport const VisitorLoyalty: FunctionComponent = (\n props: VisitorLoyaltyProps\n) => {\n const ref = useRef(null);\n const [vennActive, setVennActive] = useState(false);\n const { location1Name, location2Name, benchmarkCommonData } = props;\n let percent1 = 0;\n let percent2 = 0;\n let centralPercent = 0;\n benchmarkCommonData.visitorLoyalty.forEach((loyaltyData, i) => {\n const roundedValue = Math.round(loyaltyData.value * 100) / 100;\n if (loyaltyData.jobIds.length > 1) {\n centralPercent = roundedValue;\n } else if (percent1 === 0) {\n percent1 = roundedValue;\n } else {\n percent2 = roundedValue;\n }\n });\n\n const afterAnimateIn = () => {\n setVennActive(true);\n };\n\n const renderType\n = props.renderType === undefined ? RenderType.DEFAULT : props.renderType;\n\n const chartText = `Shows % of visitors observed at ${location1Name} only, % observed at ${location2Name} only, and % observed at both places.`;\n\n const Chart = (\n <>\n }\n centralPercent={centralPercent}\n location1Name={location1Name}\n location2Name={location2Name}\n isActive={vennActive}\n />\n \n );\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, DigitalShareItemType.VisitorLoyalty)\n ) {\n registerRef(props.app, DigitalShareItemType.VisitorLoyalty, ref);\n registerElement(\n props.app,\n DigitalShareItemType.VisitorLoyalty,\n \"\",\n \n );\n }\n\n return (\n <>\n \n Visitor Loyalty\n \n

    {chartText}

    \n \n {Chart}\n \n \n );\n};\n","import React from \"react\";\nimport { VennChart } from \"../../../Common\";\nimport { BiMale } from \"@react-icons/all-files/bi/BiMale\";\nimport { IGPSBenchmarkCommonData } from \"../../../../Models/IGPSData\";\n\ninterface VisitorLoyaltySharingProps {\n benchmarkCommonData: IGPSBenchmarkCommonData;\n polygons: string[];\n}\n\nexport const VisitorLoyaltySharing = ({\n benchmarkCommonData,\n polygons,\n}: VisitorLoyaltySharingProps) => {\n let percent1 = 0;\n let percent2 = 0;\n let centralPercent = 0;\n\n benchmarkCommonData.visitorLoyalty.forEach((loyaltyData, i) => {\n const roundedValue = Math.round(loyaltyData.value * 100) / 100;\n if (loyaltyData.jobIds.length > 1) {\n centralPercent = roundedValue;\n } else if (percent1 === 0) {\n percent1 = roundedValue;\n } else {\n percent2 = roundedValue;\n }\n });\n\n const chart = (\n <>\n }\n centralPercent={centralPercent}\n location1Name={polygons[0]}\n location2Name={polygons[1]}\n isActive={true}\n />\n \n );\n return (\n <>\n
    \n

    \n Shows the % of {polygons[0]}'s visitors also observed at {polygons[1]}{\" \"}\n (and vice versa).\n

    \n
    \n\n {chart}\n \n );\n};\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { IStickyNavItem } from \"../../../Models/IStickyNavItem\";\nimport ReportStickyNav from \"../../Common/ReportComponents/ReportStickyNav\";\nimport { colorNine } from \"../../../globalStyles\";\nimport { gpsShowVisitorBehaviors } from \"../../../Reducers/Selectors/GPSInsightsSelectors\";\n\ninterface IGPSStickyNav {\n stuckClass?: string;\n isSharing?: boolean;\n isScout?: boolean;\n}\n\nconst getNavItems = (showVisitorBehaviors: boolean, isSharing?: boolean, isScout?: boolean): IStickyNavItem[] => {\n const standardOffset = (isSharing || !isScout) ? -50: -110;\n const navItems: IStickyNavItem[] = [\n {\n toComponent: \"GPSTradeArea\",\n title: \"Trade Area\",\n offset: -500,\n color: colorNine,\n },\n {\n toComponent: \"GPSHHChar\",\n title: \"Household Characteristics\",\n offset: standardOffset,\n color: colorNine,\n },\n {\n toComponent: \"GPSVolume\",\n title: \"Volume\",\n offset: standardOffset,\n color: colorNine,\n },\n ];\n\n if (showVisitorBehaviors) {\n navItems.push({\n toComponent: \"GPSVisBeh\",\n title: \"Visitor Behaviors\",\n offset: standardOffset,\n color: colorNine,\n });\n }\n\n return navItems;\n};\n\nconst GPSStickyNav = (props: IGPSStickyNav): JSX.Element => {\n /** selectors */\n const showVisitorBehaviorsComponent: boolean = useSelector(gpsShowVisitorBehaviors);\n\n return (\n \n );\n};\n\nexport default GPSStickyNav;\n","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!./RechartsOverrides.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".recharts-scatter .recharts-scatter-symbol .recharts-symbols {\\n transition: .2s ease fill;\\n stroke: #adadad;\\n stroke-width: initial;\\n}\\n.recharts-scatter .recharts-scatter-symbol:hover .recharts-symbols {\\n fill:rgb(255, 131, 51); \\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import styled from \"styled-components\";\n\nexport const RetailMatchChartIndexPill = styled.div`\n color: rgb(255, 255, 255);\n border-radius: 50%;\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n line-height: 14px;\n`;\n","import React, { FunctionComponent } from \"react\";\n\nimport { LegendItem } from \"../../Styled/LegendItem\";\nimport { GoogleMapsMarker } from \"../../../../Common/GoogleMapsMarker/GoogleMapsMarker\";\nimport { BrandLogoSmall } from \"../BrandLogo/BrandLogoSmall\";\n\ninterface RetailMatchMapLegendProps {\n brandLogo: string;\n brandName: string;\n}\n\nconst defaultIconSize = {\n height: \"30px\",\n width: \"30px\",\n};\n\nexport const RetailMatchMapLegend: FunctionComponent\n = (props: RetailMatchMapLegendProps) => {\n return (\n \n \n Target Site\n \n \n {\" \"}\n Locations\n \n \n {\" \"}\n Trade Area\n \n \n );\n };\n","import styled from \"styled-components\";\n\nexport const LegendItem = styled.span`\n margin-right: 48px;\n`;\n","import React, { FunctionComponent, useState } from \"react\";\nimport { GenericIcon } from \"../../../../Common/GenericIcon/GenericIcon\";\n\ninterface BrandLogoBaseProps {\n brandLogo: string;\n brandName: string;\n height: string;\n width: string;\n}\n\nexport const BrandLogoBase: FunctionComponent = (\n props: BrandLogoBaseProps\n) => {\n return (\n \n \n \n );\n};\n","import React, { memo, FunctionComponent, useState, useEffect } from \"react\";\nimport { Logo } from \"./GenericIcon.Styles\";\nimport * as helpers from \"./GenericIcon.Helpers\";\n\ninterface IGenericIconProps {\n sourceText: string;\n}\n\nexport const GenericIcon: FunctionComponent = memo(\n (props) => {\n const [fallbackLogo, setFallbackLogo] = useState(null);\n\n const createFallbackLogo = () => {\n helpers.createGenericIcon(props.sourceText).then((createdLogo) => {\n setFallbackLogo(createdLogo);\n });\n };\n\n useEffect(createFallbackLogo, []);\n\n return fallbackLogo ? : null;\n }\n);\n","import styled from \"styled-components\";\n\nexport const Wrapper = styled.div`\n width: 100%;\n height: 200px;\n padding-left: 16px;\n padding-right: 16px;\n background: #e1e1e130;\n display: flex;\n align-items: center;\n position: relative;\n flex-direction: column;\n flex-grow: 1;\n justify-content: center;\n border-radius: 16px;\n`;\n\nexport const Logo = styled.img`\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n border: 1px solid #ededed;\n object-fit: contain;\n box-shadow: 0px 5px 20px 0px rgba(0, 0, 0, 0.08);\n flex-shrink: 0;\n border-radius: 4px;\n margin-bottom: 12px;\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IBrand } from \"../../../../Models/IBrand\";\nimport {\n IRetailMatchChartData,\n IStoreScoreRecord,\n} from \"../../../../Models/IRetailMatch\";\nimport { brandOverviewRecord } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport { GoogleMapsMarker, ReportH4 } from \"../../../Common\";\nimport { brandStores } from \"../Util/RetailMatchUtil\";\nimport { BrandLogoSmall } from \"./BrandLogo/BrandLogoSmall\";\nimport { IndexValuesDescription } from \"./IndexValuesDescription\";\n\ninterface LocationsAnalyzedSharingProps {\n brand: IBrand;\n benchmarkRecord: IStoreScoreRecord;\n chartData: IRetailMatchChartData;\n}\n\nconst StyledTable = styled.table`\n table-layout: fixed;\n width: 100%;\n\n tr {\n font-size: 12px;\n border: solid 1px #e4e4e4;\n\n &.header {\n height: 46px;\n background-color: #f5f5f5;\n }\n\n th {\n padding: 0 10px 0 10px;\n vertical-align: middle;\n font-weight: normal;\n }\n\n td {\n padding: 5px 0 5px 10px;\n vertical-align: middle;\n\n &.index-value {\n color: white;\n border: solid 1px #e4e4e4;\n text-align: center;\n }\n\n &.address {\n max-width: 100px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n`;\n\nconst TableTitleSpan = styled.span`\n margin-left: 6px;\n font-size: 15px;\n`;\n\nconst TableTitleWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n > div {\n color: #6d7278;\n }\n`;\n\nconst getIndexBackgroundColor = (index: number) => {\n if (index < 49) {\n return \"#e02020\";\n }\n\n if (index > 49 && index <= 100) {\n return \"#1ce180\";\n }\n\n return \"#2b8b49\";\n};\n\nconst summation = (a, b, c) => {\n return a + b + c;\n};\n\nconst getHighestSegmentOfScores = (\n scores: IStoreScoreRecord[],\n segmentLength: number\n) => {\n const highest = [];\n\n scores.forEach((score, index) => {\n if (index <= segmentLength - 1) {\n highest.push(score);\n }\n });\n\n return highest;\n};\n\nconst getMiddleSegmentOfScores = (\n scores: IStoreScoreRecord[],\n segmentLength: number\n) => {\n const startingIndex = Math.round(scores.length / 2) - 1;\n const middle = [];\n let count = 0;\n\n for (let i = startingIndex; count < segmentLength; i++) {\n middle.push(scores[i]);\n count += 1;\n }\n\n return middle;\n};\n\nconst getLowestSegmentOfScores = (\n scores: IStoreScoreRecord[],\n segmentLength: number\n) => {\n let count = 0;\n const lowest = [];\n\n for (let i = scores.length - 1; count < segmentLength; i--) {\n lowest.push(scores[i]);\n count += 1;\n }\n\n return lowest;\n};\n\nconst getSegmentLength = (\n scores: IStoreScoreRecord[],\n numberOfSegments: number\n) => {\n // Ideally we'd like at least 5 stores in a segment as per the design\n let segmentLength = 5;\n\n for (let i = segmentLength; i <= segmentLength && i >= 1; i -= 1) {\n const product = i * numberOfSegments;\n\n // Ensure the product of the segment length and number of segments does\n // not exceed the total amount of scores\n if (product <= scores.length) {\n segmentLength = i;\n break;\n }\n }\n\n return segmentLength;\n};\n\nconst segmentStoreScores = (scores: IStoreScoreRecord[]) => {\n // Check if there are no stores. If not,\n // return here\n if (scores.length === 0) {\n return {\n highest: [],\n middle: [],\n lowest: [],\n };\n }\n\n // Check if there's only one store to compare against. If so,\n // return this store as the highest segment\n if (scores.length === 1) {\n return {\n highest: [scores[0]],\n middle: [],\n lowest: [],\n };\n }\n\n // Determine the number of segments\n const numberOfSegments = scores.length >= 3 ? 3 : 2;\n\n // Determine segment length\n const segmentLength = getSegmentLength(scores, numberOfSegments);\n\n // Get the top 5 locations from the beginning of the array\n const highest = getHighestSegmentOfScores(scores, segmentLength);\n\n // Get the lowest 5 locations from the tail of the array\n const lowest = getLowestSegmentOfScores(scores, segmentLength);\n\n // Get middle locations based on the number of segments. If there's only 2,\n // set it to an empty array as we'll only have highest and lowest segments\n const middle\n = numberOfSegments === 3\n ? getMiddleSegmentOfScores(scores, segmentLength)\n : [];\n\n return {\n highest,\n middle,\n lowest,\n };\n};\n\nconst sortStoreScoresBySummationOfIndexValues = (\n scores: IStoreScoreRecord[]\n) => {\n return scores.sort((a, b) => {\n return (\n summation(b.ccCntIdx, b.ccPerHHCntIdx, b.ccCorrIdx)\n - summation(a.ccCntIdx, a.ccPerHHCntIdx, a.ccCorrIdx)\n );\n });\n};\n\nconst sortStoreScoresByIdealCustomerCount = (scores: IStoreScoreRecord[]) => {\n return scores.sort((a, b) => {\n return b.ccCntIdx - a.ccCntIdx;\n });\n};\n\nconst renderTable = (hasHeader = true, stores: IStoreScoreRecord[]) => {\n return (\n \n \n \n Address\n City\n State\n Zip\n Ideal Customer Count\n Ideal Customer Ratio\n Household Similarity\n Mobile Device Volume\n \n \n \n {stores\n .filter((store) => store)\n .map((store, index) => {\n return (\n \n {store.addr}\n {store.city}\n {store.st}\n {store.zip}\n \n {store.ccCntIdx}\n \n \n {store.ccPerHHCntIdx}\n \n \n {store.ccCorrIdx}\n \n {store.vCntIdx || \"N/A\"}\n \n );\n })}\n \n \n );\n};\n\nconst targetSiteTitle = (\n \n \n \n Your Target Site\n \n\n
    \n Index Values:\n \n \n \n
    \n
    \n);\n\nexport const LocationsAnalyzedSharing = ({\n brand,\n benchmarkRecord,\n chartData,\n}: LocationsAnalyzedSharingProps) => {\n const brandName = brand.brandName;\n const brandLogo = brand.logoPath;\n\n const storesForBrand = brandStores(chartData.storeScores, brand.brandId);\n\n const benchmarkScores = sortStoreScoresByIdealCustomerCount(storesForBrand);\n const benchmarkSegments = segmentStoreScores(benchmarkScores);\n\n const overviewRecord = brandOverviewRecord(brand.brandId, chartData.overview);\n\n const benchmarkSetTitle = (title: string, hasLogo = false) => {\n return (\n \n {hasLogo && (\n \n \n {brandName} Benchmark Set\n \n )}\n\n \n \n \n {title} Locations\n \n \n \n \n );\n };\n\n return (\n <>\n
    \n

    \n Which locations were selected for comparison?\n

    \n

    \n {overviewRecord.sampleCount || 0} similar {brandName} locations were\n selected to compare {benchmarkRecord.addr} based on urban density and\n proximity.\n

    \n
    \n\n {/* Target Site */}\n
    \n {targetSiteTitle}\n {renderTable(true, [benchmarkRecord])}\n
    \n\n {/* Top Locations */}\n {benchmarkSegments.highest && benchmarkSegments.highest.length > 0 && (\n
    \n {benchmarkSetTitle(`Top ${benchmarkSegments.highest.length}`, true)}\n {renderTable(false, benchmarkSegments.highest)}\n
    \n )}\n\n {/* Middle Locations */}\n {benchmarkSegments.middle && benchmarkSegments.middle.length > 0 && (\n
    \n {benchmarkSetTitle(`Middle ${benchmarkSegments.middle.length}`)}\n {renderTable(false, benchmarkSegments.middle)}\n
    \n )}\n\n {/* Lowest Locations */}\n {benchmarkSegments.lowest && benchmarkSegments.lowest.length > 0 && (\n
    \n {benchmarkSetTitle(`Bottom ${benchmarkSegments.lowest.length}`)}\n {renderTable(false, benchmarkSegments.lowest)}\n
    \n )}\n \n );\n};\n","import React, { CSSProperties } from \"react\";\n\ninterface IndexValuesDescriptionProps {\n range: string;\n description: string;\n color: string;\n styles?: CSSProperties;\n}\n\nexport const IndexValuesDescription = ({\n range,\n description,\n color,\n styles,\n}: IndexValuesDescriptionProps) => {\n return (\n
    \n \n \n {range} {description}\n \n
    \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport {\n createNewRetailMatchOverviewMap,\n setRetailMatchOverMapMarkers,\n} from \"../../../../Actions/ReportMapActions\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { IBrandSummaryData } from \"../../../../Models/IBrandSummaryData\";\nimport {\n IRetailMatchJobResult,\n IStoreScoreRecord,\n} from \"../../../../Models/IRetailMatch\";\nimport { retailMatchMultiBrandDataSelector } from \"../../../../Reducers/Selectors/RetailMatchSelectors\";\nimport { getBenchmarkAddressOverride } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport {\n ReportInnerWrapper,\n ReportMap,\n ReportScrollableSection,\n} from \"../../../Common\";\nimport { ReportMapWrapper } from \"../../../Common/Map/Styles/MapStyles\";\nimport { formatLongAddressFromRecord } from \"../Logic/SharedMethods\";\nimport {\n getBrandSummaryData,\n MAX_BRAND_COUNT_OPTIMIZATION_MODE,\n rankDataSort,\n} from \"../Util/RetailMatchUtil\";\nimport { createBrandMapMarker } from \"./Map/GoogleMapBrandMarker\";\nimport { getMapInfoWindowContentString } from \"./Map/MapUtil\";\nimport RetailMatchBrandCard from \"./RetailMatchBrandCard\";\nimport RetailMatchHeader from \"./RetailMatchHeader/RetailMatchHeader\";\nimport { RetailMatchIntroduction } from \"./RetailMatchIntroduction\";\ninterface IRetailMatchMultiBrandProps {\n jobResult: IRetailMatchJobResult;\n benchmarkRecord: IStoreScoreRecord;\n isSharing?: boolean;\n renderType: RenderType;\n onPrintClick: () => void;\n onShareClick: () => void;\n}\n\nconst mapDomId = \"retail-match-overview-map\";\n\nconst RetailMatchMultiBrand = (props: IRetailMatchMultiBrandProps) => {\n const dispatch = useDispatch();\n\n const [mapReady, setMapReady] = useState(false);\n\n const {\n map: retailMatchOverviewMap,\n markers: retailMatchOverviewMapMarkers,\n brand: selectedBrand,\n } = useSelector(retailMatchMultiBrandDataSelector);\n\n const addEventListenersToMarker = (\n marker: any,\n address: string,\n city: string,\n state: string\n ) => {\n const infoWindow = new google.maps.InfoWindow({\n content: getMapInfoWindowContentString(address, city, state),\n });\n\n marker.addListener(\"mouseover\", () =>\n infoWindow.open(retailMatchOverviewMap, marker)\n );\n marker.addListener(\"mouseout\", () => infoWindow.close());\n };\n\n const putMarkersOnMap = () => {\n const newMarkers: google.maps.Marker[] = [];\n\n if (retailMatchOverviewMap && props.jobResult.chartData.storeScores) {\n //Remove all existing markers first\n if (retailMatchOverviewMapMarkers?.length > 0) {\n for (const marker of retailMatchOverviewMapMarkers) {\n marker.setMap(null);\n }\n }\n\n //Store markers\n for (const store of props.jobResult.chartData.storeScores) {\n const brand = props.jobResult.job.brands.find((brand) => {\n return store.bid === brand.brandId;\n });\n\n if(brand) {\n const marker = createBrandMapMarker({\n map: retailMatchOverviewMap,\n latlng: { lat: store.lat, lng: store.lon },\n imgSrc: brand.logoPath,\n animation: google.maps.Animation.DROP,\n markerId: `rm-brand-marker-${store.sid}`,\n });\n addEventListenersToMarker(marker, store.addr, store.city, store.st);\n newMarkers.push(marker);\n } else {\n // Handle case where brand is undefined\n console.error(\"Brand not found for store:\", store);\n }\n }\n\n //Benchmark marker\n const benchmarkMarker = new google.maps.Marker({\n map: retailMatchOverviewMap,\n draggable: false,\n animation: google.maps.Animation.DROP,\n position: {\n lat: props.benchmarkRecord.lat,\n lng: props.benchmarkRecord.lon,\n },\n });\n addEventListenersToMarker(\n benchmarkMarker,\n props.benchmarkRecord.addr,\n props.benchmarkRecord.city,\n props.benchmarkRecord.st\n );\n newMarkers.push(benchmarkMarker);\n }\n\n dispatch(setRetailMatchOverMapMarkers(newMarkers));\n };\n\n useEffect(putMarkersOnMap, [\n retailMatchOverviewMap,\n props.jobResult.job.jobId,\n selectedBrand,\n ]);\n\n const benchmarkAddressOverride: IStoreScoreRecord\n = getBenchmarkAddressOverride(props.jobResult, props.benchmarkRecord);\n\n const longAddress = formatLongAddressFromRecord(benchmarkAddressOverride);\n\n //This is so I can maintain the order of brands between the overview section and the cards at the bottom\n //For some reason, the are not in the same order in both places\n const brandCardData: IBrandSummaryData[] = props.jobResult.job.brands.map(\n (brand) => {\n return getBrandSummaryData(brand, props.jobResult);\n }\n );\n\n const topNBrands = brandCardData\n .sort(rankDataSort)\n .slice(0, MAX_BRAND_COUNT_OPTIMIZATION_MODE);\n\n const onMapReady = () => {\n setMapReady(true);\n };\n\n return (\n \n {\n mapReady &&\n <>\n \n \n \n }\n \n \n \n \n \n \n {topNBrands.map((brandSummary, index) => {\n return (\n \n \n \n );\n })}\n \n \n );\n};\n\nexport default RetailMatchMultiBrand;\n","import { Button, Col, Popover, Row } from \"antd\";\nimport React from \"react\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { IBrandSummaryData } from \"../../../../Models/IBrandSummaryData\";\nimport { RetailMatchBrandCardBottomRow } from \"../Styled/RetailMatchBrandCardBottomRow\";\nimport { RetailMatchBrandCardWrapper } from \"../Styled/RetailMatchBrandCardWrapper\";\nimport { brandLinkURL, TOO_FEW_RECORD_EXPLANATION } from \"../Util/RetailMatchUtil\";\n\ninterface IRetailMatchBrandCardProps {\n jobId: string;\n rank: number;\n isSharing: boolean;\n brandSummary: IBrandSummaryData;\n}\n\nconst RetailMatchBrandCard = (props: IRetailMatchBrandCardProps): JSX.Element => {\n\n const location = useLocation();\n\n const button = (\n \n );\n\n return (\n \n \n \n \n \n \n \n \n

    \n #{props.rank}. {props.brandSummary.brand.brandName}\n

    \n \n
    \n \n \n {props.brandSummary.tooFewRecords ? (\n \n {button}\n \n ) : (\n \n {button}\n \n )}\n \n \n
    \n );\n};\n\nexport default RetailMatchBrandCard;\n","import { Row } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const RetailMatchBrandCardBottomRow = styled(Row)`\n position: absolute;\n bottom: 0;\n width: 100%;\n`;\n","import styled from \"styled-components\";\n\nexport const RetailMatchBrandCardWrapper = styled.div`\n width: 100%;\n height: 175px;\n text-align: center;\n margin-bottom: 12px;\n position: relative;\n`;\n","import styled from \"styled-components\";\nimport { ReportActionButton } from \"../../../Common\";\n\nexport const SiteDetailPhotoButtons = styled(ReportActionButton)`\n width: 100%;\n margin: 0 0 13px 0;\n`;\n","import { Button, Form, Modal, notification, Upload } from \"antd\";\nimport { RcFile } from \"antd/lib/upload\";\nimport React, { useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Dispatch } from \"redux\";\nimport { addImage } from \"../../../../../Actions/RetailMatchActions\";\nimport { beforeUploadFileCheck } from \"../../../../../Logic/FileLogic\";\nimport { IRetailMatchJob } from \"../../../../../Models/IRetailMatch\";\nimport { IAddRetailMatchImageRequest } from \"../../../../../Models/Requests/IAddRetailMatchImageRequest\";\nimport { BodyText } from \"../../../../Common/ReportStyles/Text\";\n\ninterface IRetailMatchIntroAddPhotoProps {\n job: IRetailMatchJob;\n visible: boolean;\n setVisible: (show: boolean) => void;\n}\n\nconst RetailMatchIntroAddPhoto = (props: IRetailMatchIntroAddPhotoProps) => {\n const dispatch: Dispatch = useDispatch();\n const { setVisible, job, visible } = props;\n\n const [photoUploadList, setPhotoUploadList] = useState([]);\n const [photosReadyForUpload, setPhotosReadyForUpload]\n = useState(false);\n const [loadingUpdateJob, setLoadingUpdateJob] = useState();\n\n const submitAddImageRequest = (): void => {\n setLoadingUpdateJob(true);\n const uploadPhoto: IAddRetailMatchImageRequest = {\n jobId: job.jobId,\n image: photoUploadList[0],\n };\n\n dispatch(\n addImage(uploadPhoto, () => {\n setLoadingUpdateJob(false);\n setVisible(false);\n setPhotoUploadList([]);\n setPhotosReadyForUpload(false);\n })\n );\n };\n\n const handleRemovePhoto = (file: RcFile): void => {\n //THE COMMENTED CODE HANDLES BULK UPLOADS\n\n // let currentList: RcFile[] = [...photoUploadList];\n // let fileIndex: number = currentList.indexOf(file);\n\n // currentList.splice(fileIndex, 1);\n\n // if (currentList.length < 1) {\n // setPhotosReadyForUpload(false);\n // }\n\n // setPhotoUploadList(currentList);\n setPhotosReadyForUpload(false);\n setPhotoUploadList([]);\n };\n\n const handleBeforeUpload = (file: RcFile): boolean => {\n // let currentList: RcFile[] = [...photoUploadList, file];\n\n if (beforeUploadFileCheck(file)) {\n setPhotoUploadList([file]);\n setPhotosReadyForUpload(true);\n\n return false;\n }\n\n return true;\n };\n\n return (\n setVisible(false)}\n footer={false}\n >\n \n handleBeforeUpload(file)}\n onRemove={(file: RcFile) => handleRemovePhoto(file)}\n >\n \n Select a photo to upload.\n \n \n {photosReadyForUpload ? (\n \n Click to upload\n \n ) : null}\n Accepted file types: .jpg, .jpeg, .png.\n \n \n );\n};\n\nexport default RetailMatchIntroAddPhoto;\n","import { Button, Modal } from \"antd\";\nimport TextArea from \"antd/lib/input/TextArea\";\nimport React, { useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { updateJob, updateSiteDetails } from \"../../../../../Actions/RetailMatchActions\";\nimport { IRetailMatchJob } from \"../../../../../Models/IRetailMatch\";\nimport { BodyText } from \"../../../../Common/ReportStyles/Text\";\n\ninterface RetailMatchIntroAddSiteDetailsProps {\n job: IRetailMatchJob;\n showAddSiteDetails: boolean;\n setShowAddSiteDetails: (show: boolean) => void;\n}\n\nconst RetailMatchIntroAddSiteDetails = (props: RetailMatchIntroAddSiteDetailsProps): JSX.Element => {\n const dispatch = useDispatch();\n const { job, setShowAddSiteDetails, showAddSiteDetails } = props;\n const [siteDetailsText, setSiteDetailsText] = useState(\"\");\n const [loadingUpdateJob, setLoadingUpdateJob] = useState();\n const maxLength = 750;\n\n const submitSiteDetailsUpdateRequest = () => {\n setLoadingUpdateJob(true);\n\n dispatch(\n updateSiteDetails(job.jobId, siteDetailsText, () => {\n setLoadingUpdateJob(false);\n setShowAddSiteDetails(false);\n })\n );\n };\n\n return (\n setShowAddSiteDetails(false)}\n footer={[\n maxLength}\n >\n Submit\n ,\n ]}\n >\n ) =>\n setSiteDetailsText(e.target.value)\n }\n />\n\n \n Character count: {siteDetailsText.length} / {maxLength}\n \n \n );\n};\n\nexport default RetailMatchIntroAddSiteDetails;\n","import { Button, Form, Modal, notification, Upload } from \"antd\";\nimport { RcFile } from \"antd/lib/upload\";\nimport React, { useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Dispatch } from \"redux\";\nimport { updateBrandLogo } from \"../../../../../Actions/RetailMatchActions\";\nimport { beforeUploadFileCheck } from \"../../../../../Logic/FileLogic\";\nimport { IBrand } from \"../../../../../Models/IBrand\";\nimport { IRetailMatchJob } from \"../../../../../Models/IRetailMatch\";\nimport { IRetailMatchUpdateBrandLogoRequest } from \"../../../../../Models/Requests/IRetailMatchUpdateBrandLogoRequest\";\nimport { BodyText } from \"../../../../Common/ReportStyles/Text\";\n\ninterface IRetailMatchIntroEditBrandLogoProps {\n job: IRetailMatchJob;\n brand: IBrand;\n visible: boolean;\n setVisible: (show: boolean) => void;\n}\n\nconst maxBrandLogoKB = 200;\n\nconst RetailMatchIntroEditBrandLogo = (\n props: IRetailMatchIntroEditBrandLogoProps\n) => {\n const dispatch: Dispatch = useDispatch();\n\n const [photoUploadList, setPhotoUploadList] = useState([]);\n const [photosReadyForUpload, setPhotosReadyForUpload]\n = useState(false);\n const [loadingUpdateJob, setLoadingUpdateJob] = useState();\n\n const submitAddImageRequest = (): void => {\n setLoadingUpdateJob(true);\n const request: IRetailMatchUpdateBrandLogoRequest = {\n jobId: props.job.jobId,\n brandId: props.brand.brandId,\n image: photoUploadList[0],\n };\n\n dispatch(\n updateBrandLogo(request, () => {\n setLoadingUpdateJob(false);\n props.setVisible(false);\n setPhotoUploadList([]);\n setPhotosReadyForUpload(false);\n })\n );\n };\n\n const handleRemovePhoto = (file: RcFile): void => {\n //THE COMMENTED CODE HANDLES BULK UPLOADS\n\n // let currentList: RcFile[] = [...photoUploadList];\n // let fileIndex: number = currentList.indexOf(file);\n\n // currentList.splice(fileIndex, 1);\n\n // if (currentList.length < 1) {\n // setPhotosReadyForUpload(false);\n // }\n\n // setPhotoUploadList(currentList);\n setPhotosReadyForUpload(false);\n setPhotoUploadList([]);\n };\n\n const handleBeforeUpload = (file: RcFile): boolean => {\n // let currentList: RcFile[] = [...photoUploadList, file];\n\n const maxBytes = 1024 * maxBrandLogoKB;\n\n if (file.size > maxBytes) {\n notification[\"error\"]({\n message: File too large,\n description: `Images must be ${maxBrandLogoKB} KB or smaller.`,\n onClick: () => {\n notification.destroy();\n },\n duration: 0,\n style: { cursor: \"pointer\" },\n });\n return false;\n }\n\n if (beforeUploadFileCheck(file)) {\n setPhotoUploadList([file]);\n setPhotosReadyForUpload(true);\n\n return false;\n }\n\n return true;\n };\n\n return (\n props.setVisible(false)}\n footer={false}\n >\n <>\n

    *Max file size: {maxBrandLogoKB} KB

    \n \n handleBeforeUpload(file)}\n onRemove={(file: RcFile) => handleRemovePhoto(file)}\n >\n \n Select a photo to upload.\n \n \n {photosReadyForUpload ? (\n \n Click to upload\n \n ) : null}\n Accepted file types: .jpg, .jpeg, .png.\n \n \n \n );\n};\n\nexport default RetailMatchIntroEditBrandLogo;\n","import React, { useState } from \"react\";\nimport { FiXCircle } from \"@react-icons/all-files/fi/FiXCircle\";\nimport { FiArrowLeft } from \"@react-icons/all-files/fi/FiArrowLeft\";\nimport { FiArrowRight } from \"@react-icons/all-files/fi/FiArrowRight\";\n\nimport { IRetailMatchJobImage } from \"../../../../../Models/Models\";\nimport { IntroGridBlockTwo } from \"../../Styled/RetailGrid\";\nimport {\n LightboxImageContainer,\n LightboxBackdrop,\n LightboxImage,\n Lightbox,\n} from \"../../Styled/PhotoCarouselLightbox\";\nimport { RetailMatchCarouselImage } from \"../../Styled/RetailMatchIntroStyles\";\n\nexport interface RetailMatchIntroPhotoCarouselProps {\n images: IRetailMatchJobImage[];\n showCarouselModal: boolean;\n setShowCarouselModal: (show: boolean) => void;\n}\n\nexport const RetailMatchIntroPhotoCarousel = (\n props: RetailMatchIntroPhotoCarouselProps\n) => {\n const { images, showCarouselModal, setShowCarouselModal } = props;\n\n const [selectedImageIndex, setSelectedImageIndex] = useState(0);\n\n const handleImageClick = (index: number) => {\n setSelectedImageIndex(index);\n setShowCarouselModal(true);\n };\n\n const handleRightArrowClick = (): void => {\n let nextIndex = selectedImageIndex + 1;\n\n if (nextIndex > images.length - 1) {\n nextIndex = 0;\n }\n\n setSelectedImageIndex(nextIndex);\n };\n\n const handleLeftArrowClick = (): void => {\n let nextIndex = selectedImageIndex - 1;\n\n if (nextIndex < 0) {\n nextIndex = images.length - 1;\n }\n setSelectedImageIndex(nextIndex);\n };\n\n return (\n <>\n \n {images.slice(0, 4).map((image: IRetailMatchJobImage, i: number) => (\n handleImageClick(i)}\n />\n ))}\n \n {showCarouselModal ? (\n \n setShowCarouselModal(false)}\n />\n \n \n \n \n \n \n \n {images.map((image: IRetailMatchJobImage, i: number) => (\n handleImageClick(i)}\n />\n ))}\n \n \n \n ) : null}\n \n );\n};\n","import styled from \"styled-components\";\nimport { device } from \"../../../../globalStyles/breakpoints\";\n\nexport const LightboxBackdrop = styled.div`\n position: fixed;\n height: 100%;\n background: rgba(0, 0, 0, 0.9);\n z-index: 4;\n left: 0;\n right: 0;\n top: 0;\n animation: fadeIn;\n animation-duration: 0.5s;\n`;\n\nexport const Lightbox = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 20px auto;\n width: 100%;\n`;\n\nexport const LightboxImageContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 20px;\n width: 100%;\n\n ${device.desktop} {\n width: 60%;\n }\n`;\n\nexport const LightboxImage = styled.div`\n width: 100%;\n height: 77vh;\n background-position: center;\n background-repeat: no-repeat;\n margin-left: 25px;\n margin-right: 25px;\n animation: fadeIn;\n animation-duration: 1.5s;\n`;\n","import React, { useState } from \"react\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport {\n IBrand,\n IRetailMatchJobResult,\n IRetailMatchOverview,\n IStoreScoreRecord,\n} from \"../../../../Models/Models\";\nimport { getDateBackVerbiage } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport { SiteDetailsContainer } from \"../Styled/RetailMatchIntroStyles\";\nimport { RetailMatchEditAddressModal } from \"./RetailMatchEditAddressModal\";\nimport RetailMatchIntroTextHeader from \"./RetailMatchIntroTextHeader\";\nimport RetailMatchIntroTextIndexBreakout from \"./RetailMatchIntroTextIndexBreakout\";\nimport RetailMatchMultiBrandIndexBreakout from \"./RetailMatchMultiBrandIndexBreakout\";\n\ninterface IRetailMatchIntroTextProps {\n multiBrand: boolean;\n jobResult: IRetailMatchJobResult;\n address: string;\n overview: IRetailMatchOverview[];\n isSharing: boolean;\n benchmarkAddressOverride: IStoreScoreRecord;\n brand: IBrand;\n renderType: RenderType;\n}\n\nexport const RetailMatchIntroText = ({\n jobResult,\n address,\n overview,\n isSharing,\n benchmarkAddressOverride,\n multiBrand,\n brand,\n renderType,\n}: IRetailMatchIntroTextProps): JSX.Element => {\n const job = jobResult?.job;\n\n const showSiteDetails = (): boolean => {\n if (!isSharing) return true;\n\n return job.siteDetails != null;\n };\n\n const [editAddressModalVisible, setEditAddressModalVisible]\n = useState(false);\n\n const overviewRecord = overview.find((record) => {\n return record.brandId === brand?.brandId;\n });\n\n return (\n <>\n setEditAddressModalVisible(false)}\n />\n setEditAddressModalVisible(true)}\n />\n {multiBrand ? (\n \n ) : (\n \n )}\n \n \n SITE DETAILS\n \n {!job.siteDetails || job.siteDetails.trim().length === 0\n ? `No details listed for this site.To add some, click 'Add Site Details'`\n : job.siteDetails}\n \n \n );\n};\n","import { Button, Form, Input, Modal } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport {\n getRetailMatchResultsSuccess,\n reverseGeocodeBenchmarks,\n setRetailMatchBenchmarkRecord,\n updateJob,\n} from \"../../../../Actions/RetailMatchActions\";\nimport {\n IRetailMatchJobResult,\n IStoreScoreRecord,\n} from \"../../../../Models/Models\";\nimport { retailMatchReportDataSelector } from \"../../../../Reducers/Selectors/RetailMatchSelectors\";\n\ninterface IRetailMatchEditAddressModalProps {\n visible: boolean;\n defaultAddress: string;\n defaultCity: string;\n defaultState: string;\n defaultZipcode: string;\n hide: () => void;\n}\n\ninterface IFormItemMetadata {\n label: string;\n value: string;\n validateStatus: \"\" | \"error\" | \"success\" | \"warning\" | \"validating\";\n onChange: (event: React.ChangeEvent) => void;\n}\n\nexport const RetailMatchEditAddressModal = (\n props: IRetailMatchEditAddressModalProps\n) => {\n /*********************************\n State\n *********************************/\n const dispatch = useDispatch();\n const { jobResult, benchmarkRecord } = useSelector(\n retailMatchReportDataSelector,\n shallowEqual\n );\n\n const [address, setAddress] = useState(props.defaultAddress);\n const [city, setCity] = useState(props.defaultCity);\n const [state, setState] = useState(props.defaultState);\n const [zipcode, setZipcode] = useState(props.defaultZipcode);\n const [isLoading, setIsLoading] = useState(false);\n\n /*********************************\n Event Handlers\n *********************************/\n const onAddressChange = (event: React.ChangeEvent) => {\n setAddress(event.target.value);\n };\n\n const onCityChange = (event: React.ChangeEvent) => {\n setCity(event.target.value);\n };\n\n const onStateChange = (event: React.ChangeEvent) => {\n setState(event.target.value);\n };\n\n const onZipcodeChange = (event: React.ChangeEvent) => {\n setZipcode(event.target.value);\n };\n\n const close = () => {\n props.hide();\n setTimeout(resetForm, 500);\n };\n\n const onSubmit = () => {\n submitUpdate(false);\n };\n\n const onAutoGenerate = () => {\n submitUpdate(true);\n };\n\n /*********************************\n Helpers\n *********************************/\n const resetForm = () => {\n setAddress(props.defaultAddress);\n setCity(props.defaultCity);\n setState(props.defaultState);\n setZipcode(props.defaultZipcode);\n };\n\n const submitUpdate = (autoGenerateAddress: boolean) => {\n const newAddress = autoGenerateAddress ? null : address;\n const newCity = autoGenerateAddress ? null : city;\n const newState = autoGenerateAddress ? null : state;\n const newZipcode = autoGenerateAddress ? null : zipcode;\n\n const newJobResult: IRetailMatchJobResult = {\n ...jobResult,\n job: {\n ...jobResult.job,\n addressOverride: newAddress,\n cityOverride: newCity,\n stateOverride: newState,\n zipcodeOverride: newZipcode,\n },\n };\n\n const newBenchmarkRecord: IStoreScoreRecord = {\n ...benchmarkRecord,\n addr: newAddress,\n city: newCity,\n st: newState,\n zip: newZipcode,\n };\n\n updateJobAndBenchmark(\n newJobResult,\n newBenchmarkRecord,\n autoGenerateAddress\n );\n };\n\n const updateJobAndBenchmark = (\n jobResult: IRetailMatchJobResult,\n benchmarkRecord: IStoreScoreRecord,\n autoGenerateAddress: boolean\n ) => {\n setIsLoading(true);\n dispatch(\n updateJob(jobResult.job, () => {\n if (autoGenerateAddress) {\n reverseGeocodeBenchmarks(jobResult, dispatch).then((rgBenchmark) => {\n dispatch(setRetailMatchBenchmarkRecord(rgBenchmark[0]));\n });\n } else {\n dispatch(setRetailMatchBenchmarkRecord(benchmarkRecord));\n }\n\n dispatch(getRetailMatchResultsSuccess(jobResult));\n setTimeout(() => {\n close();\n setIsLoading(false);\n }, 1000);\n })\n );\n };\n\n const validateStatus = (\n field: string\n ): \"\" | \"error\" | \"success\" | \"warning\" | \"validating\" => {\n return field?.trim() !== \"\" ? \"success\" : \"error\";\n };\n\n /*********************************\n Effects\n *********************************/\n useEffect(resetForm, [props.visible]);\n\n /*********************************\n Data\n *********************************/\n const formItems: IFormItemMetadata[] = [\n {\n label: \"Street Address\",\n value: address,\n onChange: onAddressChange,\n validateStatus: validateStatus(address),\n },\n {\n label: \"City\",\n value: city,\n onChange: onCityChange,\n validateStatus: validateStatus(city),\n },\n {\n label: \"State\",\n value: state,\n onChange: onStateChange,\n validateStatus: validateStatus(state),\n },\n {\n label: \"Zip code\",\n value: zipcode,\n onChange: onZipcodeChange,\n validateStatus: validateStatus(zipcode),\n },\n ];\n\n const formValid = formItems.every((item) => {\n return item.validateStatus === \"success\";\n });\n\n return (\n \n \n \n Find address for me\n \n \n Submit my changes\n \n \n }\n >\n
    \n {formItems.map((item) => {\n return (\n \n \n \n );\n })}\n \n \n );\n};\n","import { notification } from \"antd\";\nimport { ColumnProps } from \"antd/lib/table\";\nimport React, { useRef, useState, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { RetailMatchMetricLevel } from \"../../../../Enums/RetailMatchMetricLevel\";\nimport { IBrandOverviewTableRecord } from \"../../../../Models/IBrandOverviewTableRecord\";\nimport { IBrandSummaryData } from \"../../../../Models/IBrandSummaryData\";\nimport { IRetailMatchJobResult } from \"../../../../Models/IRetailMatch\";\nimport {\n retailMatchJobSelector,\n retailMatchLongAddressSelector,\n} from \"../../../../Reducers/Selectors/RetailMatchSelectors\";\nimport { getDateBackVerbiage } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport {\n getDigitalShareMapImage,\n getIsDigitalShare,\n} from \"../../../../Util/ScoutDigitalShareUtil\";\nimport {\n isOutputSelected,\n mapSnapshots,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport {\n getBrandSummaryData,\n brandLinkURL,\n MAX_BRAND_COUNT_OPTIMIZATION_MODE,\n rankDataSort,\n rankTableSort,\n TOO_FEW_RECORD_EXPLANATION,\n} from \"../Util/RetailMatchUtil\";\nimport RetailMatchBreakoutItem from \"./RetailMatchBreakoutItem\";\nimport RetailMatchIntroTextHeader from \"./RetailMatchIntroTextHeader\";\nimport { StyledTable } from \"./RetailMatchLocationsAnalyzed\";\n\ninterface IRetailMatchMultiBrandIndexBreakoutProps {\n jobResult: IRetailMatchJobResult;\n isSharing: boolean;\n renderType: RenderType;\n}\n\nconst brandSort = (\n a: IBrandOverviewTableRecord,\n b: IBrandOverviewTableRecord\n) => {\n if (a.brandSummary.overview.brandName < b.brandSummary.overview.brandName) {\n return -1;\n } else if (\n a.brandSummary.overview.brandName > b.brandSummary.overview.brandName\n ) {\n return 1;\n } else {\n return 0;\n }\n};\n\nconst custCountSort = (\n a: IBrandOverviewTableRecord,\n b: IBrandOverviewTableRecord\n) => {\n return (\n a.brandSummary.overview.coreCustomerCountIndex\n - b.brandSummary.overview.coreCustomerCountIndex\n );\n};\n\nconst custRatioSort = (\n a: IBrandOverviewTableRecord,\n b: IBrandOverviewTableRecord\n) => {\n return (\n a.brandSummary.overview.coreCustomerPerHouseholdIndex\n - b.brandSummary.overview.coreCustomerPerHouseholdIndex\n );\n};\n\nconst custSimSort = (\n a: IBrandOverviewTableRecord,\n b: IBrandOverviewTableRecord\n) => {\n return (\n a.brandSummary.overview.coreCustomerCorrelationIndex\n - b.brandSummary.overview.coreCustomerCorrelationIndex\n );\n};\n\nconst columns: ColumnProps[] = [\n {\n title: Rank,\n dataIndex: \"rank\",\n key: \"rank\",\n width: \"10%\",\n sorter: rankTableSort,\n },\n {\n title: Brand,\n dataIndex: \"brand\",\n key: \"brand\",\n width: \"30%\",\n sorter: brandSort,\n },\n {\n title: Ideal Customer Count,\n dataIndex: \"idealCustomerCount\",\n key: \"idealCustomerCount\",\n sorter: custCountSort,\n },\n {\n title: Ideal Customer Ratio,\n dataIndex: \"idealCustomerRatio\",\n key: \"idealCustomerRatio\",\n sorter: custRatioSort,\n },\n {\n title: Ideal Customer Similarity,\n dataIndex: \"idealCustomerSimilarity\",\n key: \"idealCustomerSimilarity\",\n sorter: custSimSort,\n },\n];\n\nconst NA =
    N/A
    ;\n\nconst RetailMatchMultiBrandIndexBreakout = (props: IRetailMatchMultiBrandIndexBreakoutProps): JSX.Element => {\n const history = useHistory();\n\n const brandSummaryData: IBrandSummaryData[] = props.jobResult.job.brands.map(\n (brand) => {\n return getBrandSummaryData(brand, props.jobResult);\n }\n );\n\n const topN = brandSummaryData\n .sort(rankDataSort)\n .slice(0, MAX_BRAND_COUNT_OPTIMIZATION_MODE);\n\n const onRowClick = (row: IBrandOverviewTableRecord) => {\n row.brandSummary.tooFewRecords\n ? notification.open({ message: TOO_FEW_RECORD_EXPLANATION })\n : history.push(\n brandLinkURL(\n history.location.pathname,\n props.isSharing,\n props.jobResult.job.jobId,\n row.brandSummary.brand.brandId\n )\n );\n // : history.push(`${history.location.pathname}/${row.brandSummary.brand.brandId}`);\n };\n\n const tableData: IBrandOverviewTableRecord[] = topN\n .map((brandSummary, index) => {\n return {\n key: brandSummary.brand.brandId,\n brandSummary: brandSummary,\n rank: brandSummary.overview?.rank || index,\n brand: (\n <>\n \n \n {brandSummary.brand.brandName}\n \n \n ),\n idealCustomerCount: brandSummary.tooFewRecords ? (\n NA\n ) : (\n \n ),\n idealCustomerRatio: brandSummary.tooFewRecords ? (\n NA\n ) : (\n \n ),\n idealCustomerSimilarity: brandSummary.tooFewRecords ? (\n NA\n ) : (\n \n ),\n };\n })\n .sort(rankTableSort);\n\n const [tableDataCopy, setTableDataCopy]\n = useState(tableData);\n const brandListRef = useRef();\n const jobResult = useSelector(retailMatchJobSelector);\n const longAddress = useSelector(retailMatchLongAddressSelector);\n\n useEffect(() => {\n if (\n getIsDigitalShare(props.renderType)\n && isOutputSelected(\n DigitalShareAppType.RetailMatch,\n DigitalShareItemType.BrandComparison\n )\n ) {\n const el = document.getElementById(\n \"retail-match-overview-map\"\n ) as HTMLElement;\n\n getDigitalShareMapImage(el, 310, 227).then((i) => {\n mapSnapshots.set(\"retail-match-overview-map\", i);\n const columnsCopy = Array.from(columns, (c) => Object.assign({}, c));\n columnsCopy.forEach((c) => delete c.sorter);\n\n registerRef(\n DigitalShareAppType.RetailMatch,\n DigitalShareItemType.BrandComparison,\n brandListRef\n );\n registerElement(\n DigitalShareAppType.RetailMatch,\n DigitalShareItemType.BrandComparison,\n \"\",\n
    \n \n \n
    \n );\n });\n }\n }, [props.renderType]);\n\n return (\n onRowClick(row)}\n onChange={(pagination, filter, sorter, extra) =>\n setTableDataCopy(extra.currentDataSource as IBrandOverviewTableRecord[])\n }\n scroll={{ y: 385 }}\n />\n );\n};\n\nexport default RetailMatchMultiBrandIndexBreakout;\n","import React from \"react\";\nimport { RetailMatchMetricLevel } from \"../../../../Enums/RetailMatchMetricLevel\";\nimport RetailMatchBreakoutItemBar from \"./RetailMatchBreakoutItemBar\";\nimport RetailMatchBreakoutItemWord from \"./RetailMatchBreakoutItemWord\";\n\ninterface IRetailMatchBreakoutItemProps {\n value: number;\n fontSize: number;\n metricLevel: RetailMatchMetricLevel;\n}\n\nconst RetailMatchBreakoutItem = (props: IRetailMatchBreakoutItemProps) => {\n return (\n <>\n \n \n \n );\n};\n\nexport default RetailMatchBreakoutItem;\n","import React from \"react\";\nimport {\n BreakoutItemBarInner,\n BreakoutItemBarOuter,\n} from \"../Styled/RetailMatchIntroStyles\";\n\ninterface IRetailMatchBreakoutItemBarProps {\n value: number;\n}\n\nconst RetailMatchBreakoutItemBar = (\n props: IRetailMatchBreakoutItemBarProps\n) => {\n return (\n \n \n \n );\n};\n\nexport default RetailMatchBreakoutItemBar;\n","import React from \"react\";\nimport { RetailMatchMetricLevel } from \"../../../../Enums/RetailMatchMetricLevel\";\nimport { getRetailMatchIndexColor } from \"../../../../Util/ColorUtil\";\nimport { getRetailMatchMetricVerbiage } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport { BreakoutItemVerbiage } from \"../Styled/RetailMatchIntroStyles\";\n\ninterface IRetailMatchBreakoutItemWordProps {\n value: number;\n fontSize: number;\n metricLevel: RetailMatchMetricLevel;\n}\n\nconst RetailMatchBreakoutItemWord = (\n props: IRetailMatchBreakoutItemWordProps\n) => {\n return (\n \n \n \n {getRetailMatchMetricVerbiage(props.value, props.metricLevel)}\n \n \n \n );\n};\n\nexport default RetailMatchBreakoutItemWord;\n","import React, { FunctionComponent } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\n\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport {\n IBrand,\n IRetailMatchJobResult,\n IStoreScoreRecord,\n} from \"../../../../Models/Models\";\nimport {\n retailMatchLongAddressSelector,\n retailMatchReportDataSelector,\n} from \"../../../../Reducers/Selectors/RetailMatchSelectors\";\nimport { getBenchmarkAddressOverride } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport { ReportInnerWrapper } from \"../../../Common\";\nimport RetailMatchHeader from \"./RetailMatchHeader/RetailMatchHeader\";\nimport RetailMatchHouseholdComposition from \"./RetailMatchHouseholdComposition\";\nimport { RetailMatchIntroduction } from \"./RetailMatchIntroduction\";\nimport { RetailMatchKeyMetrics } from \"./RetailMatchKeyMetrics\";\nimport { RetailMatchLocationsAnalyzed } from \"./RetailMatchLocationsAnalyzed\";\nimport { RetailMatchPsychProf } from \"./RetailMatchPsychProf\";\nimport { RetailMatchStickyNav } from \"./RetailMatchStickyNav\";\n\ninterface RetailMatchReportProps {\n isSharing?: boolean;\n renderType: RenderType;\n jobResult: IRetailMatchJobResult;\n brand: IBrand;\n isScout?: boolean;\n onPrintClick: () => void;\n onShareClick: () => void;\n}\n\nconst RetailMatchReport: FunctionComponent = (\n props: RetailMatchReportProps\n) => {\n const { isSharing, renderType, onPrintClick, onShareClick, brand } = props;\n\n const { jobResult, benchmarkRecord } = useSelector(\n retailMatchReportDataSelector,\n shallowEqual\n );\n\n const benchmarkAddressOverride: IStoreScoreRecord\n = getBenchmarkAddressOverride(jobResult, benchmarkRecord);\n const longAddress = useSelector(retailMatchLongAddressSelector);\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default RetailMatchReport;\n","import React, { FunctionComponent } from \"react\";\n\nimport {\n ReportH1,\n ReportScrollableSection,\n ReportChartGroup,\n sortMergedChartData,\n sortUYN,\n formatUYN,\n formatMarriedSingle,\n ReportSectionNumber,\n sortEducation,\n formatEducation,\n sortDwellingType,\n ReportSectionHeader,\n AnimatedReportCard,\n formatDwelling,\n ThreeColumnGrid,\n} from \"../../../Common/\";\nimport { colorTwoBright, colorTwoDark } from \"../../../../globalStyles\";\nimport { IRetailMatchChartSection } from \"../../../../Models/Models\";\nimport { mergeRetailMatchData } from \"../Logic/SharedMethods\";\nimport { TextFocus } from \"../Styled/RetailMatchHouseholdCompositionStyles\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { CHILD_HEIGHT } from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { HH_ATTR_STATIC_TEXT } from \"../../../../Util/ScoutDigitalShareUtil\";\nimport { brandOverviewRecord } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\n\nexport const getChartText = (\n sampleCount: number,\n locationAddress: string,\n brandName: string\n): JSX.Element => {\n return (\n \n \n Household characteristics of {locationAddress}{\" \"}\n \n COMPARED TO\n {\" \"}\n {sampleCount} existing similar {brandName} locations.\n \n {HH_ATTR_STATIC_TEXT}\n \n );\n};\n\nconst RetailMatchHouseholdComposition: FunctionComponent\n = (props: IRetailMatchChartSection) => {\n const { chartData, locationAddress } = props;\n\n const overviewRecord = brandOverviewRecord(\n props.brand.brandId,\n props.chartData.overview\n );\n\n const sampleCount: number = overviewRecord?.sampleCount;\n const brandName: string = props.brand.brandName;\n\n const brandConsumerViewRollups\n = props.chartData.brandConsumerViewRollups?.find((rollups) => {\n return rollups.id === props.brand.brandId;\n });\n\n return (\n \n \n 04\n Household Composition\n \n \n

    \n \n Household Characteristics of {locationAddress}\n {\" \"}\n \n COMPARED TO\n {\" \"}\n \n the {overviewRecord?.sampleCount.toLocaleString()} Existing\n Similar {overviewRecord?.brandName} Locations\n \n
    \n {HH_ATTR_STATIC_TEXT}\n

    \n \n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n\n \n getChartText(sampleCount, locationAddress, brandName)\n }\n />\n \n \n
    \n );\n };\n\nexport default RetailMatchHouseholdComposition;\n","import styled from \"styled-components\";\n\nexport const TextFocus = styled.span`\n font-size: 20px;\n font-weight: 900;\n`;\n","import React, { FunctionComponent, useRef } from \"react\";\n\nimport {\n ReportScrollableSection,\n ReportH1,\n ReportCard,\n IndexBar,\n ReportSectionNumber,\n ReportSectionHeader,\n} from \"../../../Common/\";\nimport { RetailMatchKeyMetricsWrapper } from \"../Styled/RetailMatchKeyMetricsStyles\";\nimport {\n IRetailMatchJobResult,\n IRetailMatchOverview,\n IStoreScoreRecord,\n} from \"../../../../Models/IRetailMatch\";\nimport { RetailMatchMetricLevel } from \"../../../../Enums/RetailMatchMetricLevel\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { RetailMatchKeyMetricsSharing } from \"./RetailMatchKeyMetricsSharing\";\nimport { IBrand } from \"../../../../Models/IBrand\";\nimport { brandOverviewRecord } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\n\ninterface RetailMatchKeyMetricsProps {\n brand: IBrand;\n jobResult: IRetailMatchJobResult;\n locationAddress: string;\n benchmarkAddressOverride: IStoreScoreRecord;\n renderType: RenderType;\n app?: DigitalShareAppType;\n itemType?: DigitalShareItemType;\n shareText?: string;\n}\n\nexport const RetailMatchKeyMetrics: FunctionComponent\n = (props: RetailMatchKeyMetricsProps) => {\n const ref = useRef();\n\n const overviewRecord = brandOverviewRecord(\n props.brand.brandId,\n props.jobResult.chartData.overview\n );\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, props.itemType)\n ) {\n registerRef(props.app.toString(), props.itemType.toString(), ref);\n registerElement(\n props.app.toString(),\n props.itemType.toString(),\n props.shareText,\n \n );\n }\n\n return (\n \n \n 01\n Key Metrics\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n };\n","import React, {\n FunctionComponent,\n useState,\n useEffect,\n createRef,\n RefObject,\n useRef,\n} from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { FiExternalLink } from \"@react-icons/all-files/fi/FiExternalLink\";\nimport { FiCheck } from \"@react-icons/all-files/fi/FiCheck\";\nimport { GiAchillesHeel } from \"@react-icons/all-files/gi/GiAchillesHeel\";\nimport styled from \"styled-components\";\nimport { Modal } from \"antd\";\n\nimport {\n ISegment,\n IProfileRecord,\n IRetailMatchChartData,\n IStoreScoreRecord,\n IBrand,\n} from \"../../../../Models/Models\";\nimport {\n ReportCheckbox,\n ReportH4,\n ReportH1,\n ReportScrollableSection,\n ReportSectionNumber,\n ReportSectionHeader,\n AnimatedReportCard,\n ColSegInfoWrapper,\n ColSegInfo,\n Menu,\n MenuLink,\n SegCell,\n SegCirc,\n SegBody,\n SegHead,\n SegImg,\n SegDetails,\n SegLink,\n useWindowResize,\n SegCircTextL,\n SegCircTextSm,\n SegCellTextL,\n SegCellTextSm,\n SegCellTextSmB,\n getPrettyNumber,\n SegCellTRAction,\n SegRow,\n SegContentSecHeader,\n SegFooterSubText,\n SegCardBreakoutContainer,\n SegCardBreakoutItem,\n SegCardBreakoutVerticalBreak,\n findSegIcon,\n SegCardRow,\n SegCardCol,\n SegCardSpacer,\n SegCardHead,\n SegCardHeaderRow,\n determinePropensityText,\n EmptyResultsCell,\n BuxTooltip,\n PsychProfSumm,\n} from \"../../../Common\";\nimport { CustomerBreakoutColors, deviceWidth } from \"../../../../globalStyles\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport { RenderType } from \"../../../../Enums/RenderType\";\nimport {\n isOutputSelected,\n registerElement,\n registerRef,\n} from \"../../../Common/DigitalShare/DigitalShareGenerator\";\nimport { DigitalShareAppType } from \"../../../../Enums/DigitalShareAppType\";\nimport { DigitalShareItemType } from \"../../../../Enums/DigitalShareItemType\";\nimport { RetailMatchPsychProfShare } from \"./RetailMatchPsychProfShare\";\nimport { brandOverviewRecord } from \"../../../../Util/RetailMatch/RetailMatchUtil\";\nimport { rmMosaicSegmentsSelector } from \"../../../../Reducers/Selectors/RetailMatchSelectors\";\n\ninterface RetailMatchPsychProfProps {\n locationAddress: string;\n brand: IBrand;\n chartData: IRetailMatchChartData;\n benchmarkRecord: IStoreScoreRecord;\n renderType: RenderType;\n app: DigitalShareAppType;\n itemType: DigitalShareItemType;\n}\n\ninterface ISegmentStore {\n segments: ISegment[];\n}\n\ninterface IProfRef {\n profile: IProfileRecord;\n ref: RefObject;\n}\n\ninterface IProfCardContent {\n segment: ISegment;\n siteSeg: IProfileRecord;\n brandSeg: IProfileRecord;\n}\n\nexport const RetailMatchPsychProf: FunctionComponent\n = (props: RetailMatchPsychProfProps) => {\n const { locationAddress, brand, chartData, benchmarkRecord } = props;\n const brandName = brand.brandName;\n\n const mosaicSegments = useSelector(rmMosaicSegmentsSelector);\n\n const siteProfileForBrand = props.chartData.siteProfile.filter((record) => {\n return record.brandId === brand.brandId || !record.brandId;\n });\n\n const brandProfile = props.chartData.brandProfiles.find((record) => {\n return record.id === brand.brandId;\n })?.profile;\n\n const overviewRecord = brandOverviewRecord(\n brand.brandId,\n chartData.overview\n );\n\n const propensityToolTipText = `Visitor propensity compares the distribution of segments observed at the selection to the distribution of segments across all households in the selection’s trade area. The ratio between these percentages for each segment defines the propensity for households of that segment to be a visitor to the selected place (as compared to all other households). For example, a propensity of 2.5 indicates the segment is 2.5 times more likely than the average household in the trade area to visit the selection. PRIMARY AND SECONDARY VISITOR HOUSEHOLDS HAVE A PROPENSITY OF GREATER THAN 1.0x AND REPRESENT MORE THAN 1% OF VISITORS.`;\n\n const [avgBrandHHCnt, segAvgBrandHHCnt] = useState(null);\n const [open, setIsMenuOpen] = useState();\n const [filters, setFilters] = useState([\"P\", \"S\"]);\n const [profRefData, setProfRefData] = useState(null);\n const [profRefDataRender, setProfRefDataRender]\n = useState(null);\n const [buttonText, setButtonText] = useState(\"\");\n const [visibleModal, setVisibleModal] = useState(false);\n const [modalContent, setModalContent] = useState(null);\n const [showPropensityColumn, setShowPropensityColumn]\n = useState(false);\n\n const windowSize = useWindowResize();\n const psychProfileRef = useRef();\n const psychSummaryRef = useRef();\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, DigitalShareItemType.PsychographicProfile)\n ) {\n registerRef(\n props.app,\n DigitalShareItemType.PsychographicProfile,\n psychProfileRef\n );\n registerElement(\n props.app,\n DigitalShareItemType.PsychographicProfile,\n null,\n \n );\n }\n\n if (\n featureFlags.DigitalShare\n && props.renderType === RenderType.DIGITAL_SHARE\n && isOutputSelected(props.app, DigitalShareItemType.PsychographicSummary)\n ) {\n registerRef(\n props.app,\n DigitalShareItemType.PsychographicSummary,\n psychSummaryRef\n );\n\n registerElement(\n props.app,\n DigitalShareItemType.PsychographicSummary,\n \"\",\n \n );\n }\n\n useEffect(() => {\n if (!avgBrandHHCnt && chartData) {\n segAvgBrandHHCnt(avgHHCnt());\n }\n\n if (!profRefData) {\n const tempArray: IProfRef[]\n = convertProfArrayToProfRefArray(siteProfileForBrand);\n setProfRefData(tempArray);\n const newSegments: IProfRef[] = filteredSegments(tempArray);\n setProfRefDataRender(newSegments);\n }\n }, []);\n\n useEffect(() => {\n if (profRefData) {\n const show: boolean = profRefData.every((data: IProfRef) => {\n return data.profile.index != null;\n });\n setShowPropensityColumn(show);\n }\n }, [profRefData]);\n\n useEffect(() => {\n if (profRefData && filters.length > 0) {\n const newSegments: IProfRef[] = filteredSegments(profRefData);\n setProfRefDataRender(newSegments);\n } else if (profRefData && profRefDataRender) {\n setProfRefDataRender(profRefData);\n }\n formatButtonText();\n }, [filters, props.brand.brandId]);\n\n useEffect(() => {\n if (modalContent) {\n setVisibleModal(true);\n }\n }, [modalContent]);\n\n function getTopProfiles(numToGet: number): IProfileRecord[] {\n const allProfiles: IProfileRecord[] = profRefDataRender.map(\n (p: IProfRef) => p.profile\n );\n if (showPropensityColumn) {\n allProfiles.sort((a: IProfileRecord, b: IProfileRecord) => {\n if (a.index > b.index) return -1;\n if (a.index < b.index) return 1;\n return 0;\n });\n } else {\n allProfiles.sort((a: IProfileRecord, b: IProfileRecord) => {\n if (a.pct > b.pct) return -1;\n if (a.pct < b.pct) return 1;\n return 0;\n });\n }\n\n return allProfiles.slice(0, numToGet);\n }\n\n const filteredSegments = (inSegments: IProfRef[]): IProfRef[] => {\n const newSegments = inSegments.filter((profRef) => {\n const matchingBrandProfileSegment = brandProfile?.find(\n (seg) => seg.seg === profRef.profile.seg\n );\n return filters.includes(matchingBrandProfileSegment?.core);\n });\n\n return newSegments;\n };\n\n const convertProfArrayToProfRefArray = (\n profArray: IProfileRecord[]\n ): IProfRef[] => {\n return profArray.map((prof: IProfileRecord) => {\n return { profile: prof, ref: createRef() };\n });\n };\n\n const setActive = (rowNum: number) => {\n const active = profRefData.find((profRef) =>\n profRef.ref.current?.classList.contains(\"active\")\n );\n if (active) {\n active.ref.current.classList.remove(\"active\");\n }\n if (rowNum !== null) {\n profRefData[rowNum].ref.current.classList.add(\"active\");\n }\n };\n\n function avgHHCnt(): number {\n let totalSum = 0;\n for (const score of chartData.storeScores) {\n totalSum += score.hhCnt;\n }\n return totalSum / chartData.storeScores.length;\n }\n\n const formatButtonText = () => {\n let fmtStr = \"All\";\n if (filters.length > 1) {\n fmtStr = \"Primary/Secondary\";\n } else if (filters.includes(\"P\")) {\n fmtStr = \"Primary\";\n } else if (filters.includes(\"S\")) {\n fmtStr = \"Secondary\";\n }\n setButtonText(fmtStr);\n };\n\n const handleMenuClick = (filterVal: \"P\" | \"S\") => {\n setIsMenuOpen(false);\n\n if (filterVal) {\n // Toggle filter off if already selected\n if (filters.includes(filterVal)) {\n const ind = filters.indexOf(filterVal);\n filters.splice(ind, 1);\n } else {\n filters.push(filterVal);\n }\n setFilters([...filters]);\n } else {\n setFilters([]);\n }\n };\n\n const calcHH = (hhPct: number, hhCnt: number): string => {\n return getPrettyNumber(Math.ceil(hhCnt * hhPct), 0);\n };\n\n const calcPctHH = (pct: number): string => {\n return getPrettyNumber(pct * 100, 2);\n };\n\n const StyledCheck = styled(FiCheck)`\n width: 17px;\n height: 17px;\n margin-right: 2px;\n flex-shrink: 0;\n `;\n\n const PctNumWrapper = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n height: 30px;\n `;\n\n return (\n \n \n 03\n Psychographic Profile\n \n \n \n {brandName}’s ideal customer segments based on lifestyle, life\n stage, behavioral, and consumer characteristics were identified\n based on mobile data observations of actual customers at the{\" \"}\n {overviewRecord?.sampleCount.toLocaleString()} {brandName}’s\n locations.\n \n \n \n Primary {brandName}’s Customer\n \n }\n text={`Households 20+% more likely to visit ${brandName} than the average household`}\n />\n \n Secondary {brandName}’s Customer\n \n }\n text={`Households up to 19% more likely to visit ${brandName} than the average household`}\n />\n \n Incidental {brandName}’s Customer\n \n }\n text={`Households less likely to visit ${brandName} than the average household`}\n />\n \n = 5 ? \"\" : \"too-short\"}`}\n >\n \n \n {windowSize.width < deviceWidth.desktop ? (\n \n \n {filters.includes(\"P\") ? : null}\n Primary\n \n }\n clickCallback={() => {\n handleMenuClick(\"P\");\n }}\n style={{ fontSize: \"12px\" }}\n />\n \n {filters.includes(\"S\") ? : null}\n Secondary\n \n }\n clickCallback={() => {\n handleMenuClick(\"S\");\n }}\n style={{ fontSize: \"12px\" }}\n />\n {filters.length === 0 ? : null}All\n }\n clickCallback={() => {\n handleMenuClick(null);\n }}\n style={{ fontSize: \"12px\" }}\n />\n \n ) : (\n <>\n Show:\n {\n handleMenuClick(\"P\");\n }}\n checked={filters.includes(\"P\") ? true : false}\n >\n Primary\n \n {\n handleMenuClick(\"S\");\n }}\n checked={filters.includes(\"S\") ? true : false}\n >\n Secondary\n \n {\n handleMenuClick(null);\n }}\n checked={filters.length === 0 ? true : false}\n >\n All\n \n \n )}\n \n \n Trade Area of
    \n {locationAddress}\n
    \n \n {windowSize.width < deviceWidth.desktop ? `VS` : `COMPARED TO`}\n \n \n Average Trade Area of\n
    \n \n {overviewRecord?.sampleCount} {brandName} Locations\n \n \n {showPropensityColumn && (\n \n \n Propensity to be a
    \n {brandName} Customer\n
    \n \n
    \n )}\n {!showPropensityColumn &&
    }\n
    \n \n \n {profRefDataRender && profRefDataRender.length > 0 ? (\n profRefDataRender.map((siteSegRef: IProfRef) => {\n const sourceOfTruthIdx: number\n = profRefData.indexOf(siteSegRef);\n const segment: ISegment = mosaicSegments.find(\n (seg: ISegment) => siteSegRef.profile.seg === seg.segmentKey\n );\n const brandSeg: IProfileRecord = brandProfile.find(\n (seg: IProfileRecord) => siteSegRef.profile.seg === seg.seg\n );\n\n return (\n \n {\n setModalContent({\n segment: segment,\n siteSeg: siteSegRef.profile,\n brandSeg: brandSeg,\n });\n }}\n style={{ cursor: \"pointer\" }}\n >\n
    \n \n
    \n
    \n {windowSize.width < deviceWidth.desktop ? (\n <>\n \n {siteSegRef.profile.seg}\n \n \n {segment.name}{\" \"}\n \n \n \n ) : (\n \n \n {siteSegRef.profile.seg}: {segment.name}\n \n
    \n {segment.description}\n
    \n \n \n View Details\n \n
    \n )}\n
    \n \n setActive(sourceOfTruthIdx)\n }\n onMouseLeave={\n windowSize.width < deviceWidth.desktop\n ? null\n : () => setActive(null)\n }\n >\n \n \n \n {calcHH(\n benchmarkRecord.hhCnt,\n siteSegRef.profile.pct\n )}\n \n households\n \n \n \n {calcPctHH(siteSegRef.profile.pct)}%\n \n of households\n \n \n \n
    \n
    \n \n \n \n {calcHH(avgBrandHHCnt, brandSeg.pct)}\n \n households\n \n \n \n {calcPctHH(brandSeg.pct)}%\n \n of households\n \n \n \n {showPropensityColumn && (\n <>\n \n \n {/* GB - see bug #11881. I suspect this is passing in null. */}\n \n {getPrettyNumber(brandSeg.index, 1)}X\n \n \n {determinePropensityText(\n brandSeg.core\n ).toUpperCase()}\n \n \n {\n setActive(sourceOfTruthIdx);\n }}\n >\n %\n \n \n \n )}\n {!showPropensityColumn &&
    }\n
    \n );\n })\n ) : (\n \n \n \n \n \n Ouch! No Results!\n \n \n )}\n
    \n {/* TODO - this needs to be in it's own component */}\n {\n setVisibleModal(false);\n }}\n footer={null}\n width=\"90%\"\n centered={true}\n bodyStyle={{ padding: \"40px 24px 24px\" }}\n style={{ maxWidth: \"900px\" }}\n >\n {modalContent && (\n <>\n \n
    \n \n
    \n
    \n \n {modalContent.segment.segmentKey}:{\" \"}\n {modalContent.segment.name}\n \n
    \n {modalContent.segment.description}\n
    \n
    \n
    \n
    \n Who We Are\n
    \n \n \n \n \n Index Value\n \n \n {modalContent.segment.segmentKey}%\n \n \n
    \n
    \n {modalContent.segment.segmentDetails.map((det) => {\n return (\n \n \n {findSegIcon(det.varNm)}\n {det.varNm}:\n \n {det.varVal}\n \n {det.idx}\n \n \n {getPrettyNumber(det.pct, 1)}%\n \n \n );\n })}\n
    \n
    \n \n \n {locationAddress}\n
    \n {modalContent.segment.segmentKey}s make up{\" \"}\n {calcHH(benchmarkRecord.hhCnt, modalContent.siteSeg.pct)} or{\" \"}\n {calcPctHH(modalContent.siteSeg.pct)}% of households\n
    \n \n \n \n {overviewRecord?.sampleCount} {brandName}’s Locations\n \n
    \n {modalContent.segment.segmentKey}s make up{\" \"}\n {calcHH(avgBrandHHCnt, modalContent.brandSeg.pct)} or{\" \"}\n {calcPctHH(modalContent.brandSeg.pct)}% of households\n
    \n \n \n \n {getPrettyNumber(modalContent.brandSeg.index, 1)}X{\" \"}\n {determinePropensityText(modalContent.brandSeg.core)}\n \n
    \n Propensity to be a {brandName} Customer\n
    \n
    \n \n *Index score of the characteristics representation in{\" \"}\n {modalContent.segment.segmentKey}s compared to the US\n population. Above 100 means the variable is over-represented\n compared to the US population. Numbers on the right show the\n percentage of {modalContent.segment.segmentKey}s that exhibit\n this characteristic.\n \n \n )}\n \n \n
    \n );\n };\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport { CustomerBreakoutColors } from \"../../../../globalStyles\";\nimport {\n IProfileRecord,\n ISegment,\n IStoreScoreRecord,\n} from \"../../../../Models/Models\";\nimport {\n determinePropensityText,\n getPrettyNumber,\n} from \"../../../Common/SharedActions\";\n\ninterface IRetailMatchPsychProfShareProps {\n brandName: string;\n locationAddress: string;\n sampleCount: number;\n showPropensityColumn: boolean;\n data: IProfileRecord[];\n segments: ISegment[];\n benchmarkRecord: IStoreScoreRecord;\n averageBrandHHCount: number;\n brandSegmentData: IProfileRecord[];\n}\n\nconst Header = styled(\"div\")`\n text-align: center;\n font-size: 15px;\n font-weight: bold;\n line-height: 20px;\n margin-bottom: 15px;\n`;\n\nconst BreakoutContainer = styled(\"div\")`\n border: 1px solid #e4e4e4;\n display: flex;\n justify-content: space-around;\n align-items: center;\n padding: 18px 21px;\n`;\n\nconst BreakoutItemContainer = styled(\"div\")`\n display: flex;\n flex-direction: column;\n text-align: center;\n align-items: center;\n`;\n\nconst TableHeaderContainer = styled(\"div\")`\n display: flex;\n justify-content: space-evenly;\n margin-bottom: 3px;\n`;\n\nconst TableContainer = styled(\"div\")`\n display: grid;\n border: 1px solid #ededed;\n`;\n\nconst TableCell = styled.div`\n display: flex;\n justify-content: space-between;\n height: 78px;\n`;\n\nconst CircleContainer = styled(\"div\")`\n margin: auto -22px auto 32px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n`;\n\nconst Circle = styled(\"div\")`\n padding: 10px;\n font-weight: bold;\n margin-bottom: 3px;\n height: 48px;\n width: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst Img = styled(\"img\")`\n width: 58px;\n height: 58px;\n display: inline-block;\n border-radius: 50%;\n object-fit: cover;\n object-position: center;\n margin-right: 11px;\n`;\n\nconst DataContainer = styled(\"div\")`\n margin-left: -15px;\n font-size: 12px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n`;\n\nconst BreakoutText = styled.div`\n display: flex;\n margin-bottom: 5px;\n font-size: 12px;\n font-weight: bolder;\n`;\n\nconst BreakoutHighlight = styled.div`\n height: 12px;\n width: 12px;\n border-radius: 50%;\n margin-right: 4px;\n background-color: ${(props: { breakoutColor: string }) =>\n props.breakoutColor};\n`;\n\nconst TradeAreaAddress = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n`;\n\nexport const RetailMatchPsychProfShare = (\n props: IRetailMatchPsychProfShareProps\n): JSX.Element => {\n const getSegment = (key: string): ISegment => {\n return props.segments.find((seg: ISegment) => {\n return seg.segmentKey === key;\n });\n };\n\n return (\n \n
    \n
    \n {props.brandName}’s ideal customer segments based on lifestyle, life\n stage, behavioral, and consumer characteristics were identified based\n on mobile data observations of actual customers at the{\" \"}\n {props.sampleCount.toLocaleString()} {props.brandName}’s locations.\n
    \n \n \n \n \n Primary {props.brandName}’s Customer\n \n
    \n Households 20+% more likely to visit {props.brandName} than the\n average household\n
    \n
    \n \n \n \n Secondary {props.brandName}’s Customer\n \n
    \n Households up to 19% more likely to visit {props.brandName} than\n the average household\n
    \n
    \n \n \n \n Incidental {props.brandName}’s Customer\n \n
    \n Households less likely to visit {props.brandName} than the average\n household\n
    \n
    \n
    \n
    \n
    \n \n \n \n Top 5 Profiles\n
    \n \n \n
    Trade Area of
    \n \n {props.locationAddress}\n \n \n \n COMPARED TO\n \n \n \n \n
    \n
    Average Trade Area of
    \n
    \n \n {props.sampleCount.toLocaleString()} {props.brandName}'s\n Locations\n \n
    \n
    \n {props.showPropensityColumn && (\n
    \n
    Propensity to be an
    \n
    \n {props.brandName}'s Customer\n
    \n
    \n )}\n \n \n \n {props.data.map((p: IProfileRecord, index: number) => {\n const brandSeg: IProfileRecord = props.brandSegmentData.find(\n (seg: IProfileRecord) => p.seg === seg.seg\n );\n const matchingSegment: ISegment = getSegment(p.seg);\n return (\n
    \n 0 && \"none\",\n borderBottom: index % 2 > 0 && \"none\",\n }}\n >\n \n \n
    \n
    \n \n {matchingSegment.segmentKey} {matchingSegment.name}\n \n
    \n
    \n {matchingSegment.description}\n
    \n
    \n
    \n \n
    \n \n {getPrettyNumber(\n Math.ceil(props.benchmarkRecord.hhCnt * p.pct),\n 0\n )}\n \n
    \n
    households
    \n
    \n\n \n\n \n
    \n \n {getPrettyNumber(\n Math.ceil(props.averageBrandHHCount * brandSeg.pct),\n 0\n )}\n \n
    \n
    households
    \n
    \n {props.showPropensityColumn && (\n \n \n {getPrettyNumber(brandSeg.index, 1)}X\n \n
    \n \n {determinePropensityText(brandSeg.core).toUpperCase()}\n \n
    \n
    \n )}\n \n \n );\n })}\n
    \n \n \n );\n};\n","import React from \"react\";\n\nimport { IStickyNavItem } from \"../../../../Models/IStickyNavItem\";\nimport { colorNine } from \"../../../../globalStyles\";\nimport ReportStickyNav from \"../../../Common/ReportComponents/ReportStickyNav\";\n\ninterface RetailMatchStickyNavProps {\n stuckClass: string;\n isSharing?: boolean;\n isScout?: boolean;\n}\nconst navItems = (isSharing?: boolean, isScout?: boolean) : IStickyNavItem[] => {\n const standardOffset = (isSharing || !isScout) ? -50: -110;\n return [\n {\n toComponent: \"RMIntroSeg\",\n title: \"Introduction\",\n offset: -500,\n color: colorNine,\n },\n {\n toComponent: \"RMKeyMetrics\",\n title: \"Key Metrics\",\n offset: standardOffset,\n color: colorNine,\n },\n {\n toComponent: \"RMLocationsAnalyzed\",\n title: \"Locations Analyzed\",\n offset: standardOffset,\n color: colorNine,\n },\n {\n toComponent: \"RMPotentialCustomerSimilarity\",\n title: \"Psychographic Profile\",\n offset: standardOffset,\n color: colorNine,\n },\n {\n toComponent: \"RMHouseholdComposition\",\n title: \"Household Composition\",\n offset: standardOffset,\n color: colorNine,\n },\n ];\n};\n\nexport const RetailMatchStickyNav = (props: RetailMatchStickyNavProps): JSX.Element => {\n return (\n \n );\n};\n","import { Layout, Menu } from \"antd\";\nimport * as React from \"react\";\nimport {\n Link,\n withRouter,\n Route,\n RouteComponentProps,\n Switch,\n} from \"react-router-dom\";\nimport { BuxTooltip } from \"../../Common/\";\n\nimport { hasFeature, enableTimeoutFeature } from \"../../../Actions/UserActions\";\nimport { getTranslation } from \"../../../Actions/VerbiageActions\";\nimport { IUser } from \"../../../Models/IUser\";\nimport {\n IBuxtonSupportTeamMember,\n IStore,\n ITerritory,\n ITerritoryType,\n ITerritoryTypePermission,\n IUserPreferences,\n IUserProfile,\n} from \"../../../Models/Models\";\nimport TerritoryManagement from \"./Components/TerritoryManagement\";\nimport UserManagement from \"./Components/UserManagement\";\nimport UserPreferences from \"./Components/UserPreferences\";\nimport UserProfile from \"./Components/UserProfile\";\nimport \"./UserSettings.css\";\nimport { UserSettingsMenuSelection, OktaGroups } from \"../../../Enums/Enums\";\nimport AccountTeam from \"./Components/AccountTeam\";\nimport { IOktaMFAFactor } from \"../../../Models/OktaModels/IOktaMFAFactor\";\nimport { ScoutFeature } from \"../../../Enums/ScoutFeature\";\nimport { AppArea } from \"../../../Enums/AppArea\";\nimport { IUserShareSettings } from \"../../../Models/IUserShareSettings\";\nimport {TimeoutManagement} from \"./Components/TimeoutManagement\";\n\nconst SubMenu = Menu.SubMenu;\n\ninterface IUserSettingsProps extends RouteComponentProps {\n user: IUser;\n userShareSettings: IUserShareSettings;\n allUsers: Array;\n userPreferences: IUserPreferences;\n userFranchiseeStores: Array;\n userFranchiseeTerritories: Array;\n territoryTypePermissions: Array;\n companySupportTeam: Array;\n communitySites: Array;\n allMFAFactors: IOktaMFAFactor[];\n selectedMFAFactorID: string;\n waitingForMFAResponse: boolean;\n mfaResult: string;\n showMfaEnrollmentModal: boolean;\n mfaEnrollmentModalText: string;\n mfaEnrollmentUpdatedThisSession: boolean;\n saveProfileLoading: boolean;\n getUserPreferences: () => void;\n updateUserPreferences: (userPreferences: IUserPreferences) => void;\n getUserFranchiseeStoreInformation: (userID: number) => void;\n getUserFranchiseeTerritoryInformation: (userID: number) => void;\n removeStoreFromFranchiseeUser: (userID: number, storeID: number) => void;\n removeTerritoryFromFranchiseeUser: (\n userID: number,\n territoryID: number\n ) => void;\n updateUserActiveStatus: (userID: number, activeStatus: boolean) => void;\n updateTerritoryTypeAdminOnlyProperty: (territoryType: ITerritoryType) => void;\n updateTerritoryTypeUserPermissions: (\n userID: number,\n territoryID: number,\n canView: boolean,\n canEdit: boolean\n ) => void;\n getTerritoryTypePermissions: (territoryTypeID: number) => void;\n updateUserProfile: (\n profileUpdateObj: IUserProfile,\n shareSettingsUpdateObj: IUserShareSettings\n ) => void;\n updateUserAvatar: (avatarImg: File) => void;\n deleteUserAvatar: (avatarStr: string) => void;\n updateShareImage: (shareImg: File) => void;\n deleteShareImage: (imgStr: string) => void;\n resetPassword: () => void;\n getCompanySupportTeam: () => void;\n getAllCommunitySites: () => void;\n updateTerritoryTypeUserPermissionsForAll: (\n territoryPermissions: Array\n ) => void;\n getCompanyTerritoryTypes: () => void;\n GetMFAFactors: (oktaUserID: string) => void;\n IssueMFAChallenge: (factor: IOktaMFAFactor) => void;\n IssuePushMFAChallenge: (factor: IOktaMFAFactor) => void;\n setAllMFAFactors: (factors: IOktaMFAFactor[]) => void;\n setSelectedFactorID: (id: string) => void;\n setWaitingForMFAResponse: (waiting: boolean) => void;\n SubmitMFAChallengeResponse: (\n factor: IOktaMFAFactor,\n response: string\n ) => void;\n PollForPushResponse: (factor: IOktaMFAFactor) => void;\n setShowMfaEnrollmentModal: (show: boolean) => void;\n setMfaEnrollmentUpdatedThisSession: (updated: boolean) => void;\n updateSessionTimeoutLength: (cid: number, newTimeoutLength: number) => void;\n}\n\ninterface IUserSettingsState {\n selectedMenuItem: UserSettingsMenuSelection;\n}\n\nclass UserSettings extends React.Component<\n IUserSettingsProps,\n IUserSettingsState\n> {\n private defaultOpenKeys: Array = [\n UserSettingsMenuSelection.ACCOUNT_INFORMATION.toString(),\n UserSettingsMenuSelection.COMPANY_MANAGEMENT.toString(),\n ];\n\n constructor(props: IUserSettingsProps) {\n super(props);\n\n const defaultSelectedMenuItem\n = this.props.user.oktaGroups.indexOf(OktaGroups.BUXTONCORP)\n === -1\n || this.props.user.oktaGroups.indexOf(\n OktaGroups.MULTIACCOUNTUSERS\n ) === -1\n ? UserSettingsMenuSelection.USER_PREFERENCES\n : UserSettingsMenuSelection.USER_PROFILE;\n\n this.state = {\n selectedMenuItem: defaultSelectedMenuItem,\n };\n }\n\n public render() {\n const accountInformationComponent: JSX.Element = (\n \n {this.props.user.oktaGroups.indexOf(\n OktaGroups.BUXTONCORP\n ) === -1\n && this.props.user.oktaGroups.indexOf(\n OktaGroups.MULTIACCOUNTUSERS\n ) === -1 && (\n \n User Profile\n \n \n )}\n \n Preferences\n \n \n \n Account Team\n \n \n \n );\n\n let userManagementSubMenuComponent: JSX.Element = null;\n const territoryWord = getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n true\n );\n\n if (\n this.props.user.isAdmin && hasFeature(this.props.user, ScoutFeature.AdminTools)\n ) {\n userManagementSubMenuComponent = (\n \n \n Users\n \n {hasFeature(this.props.user, ScoutFeature.Scout4)\n && \n {territoryWord}\n }\n { hasFeature(this.props.user, ScoutFeature.InactivityTimeout) &&\n \n User Timeout\n }\n \n );\n }\n\n return (\n \n \n
    \n \n \n {accountInformationComponent}\n {userManagementSubMenuComponent}\n \n \n \n \n {this.props.user.oktaGroups.indexOf(\n OktaGroups.BUXTONCORP\n ) === -1\n && this.props.user.oktaGroups.indexOf(\n OktaGroups.MULTIACCOUNTUSERS\n ) === -1 && (\n (\n \n )}\n />\n )}\n (\n \n )}\n />\n (\n \n )}\n />\n {\n this.props.user.isAdmin && hasFeature(this.props.user, ScoutFeature.AdminTools)\n && (\n \n )}\n />\n }\n {\n (this.props.user.isAdmin && hasFeature(this.props.user, ScoutFeature.AdminTools)) && hasFeature(this.props.user, ScoutFeature.Scout4)\n && (\n \n )}\n />\n }\n {\n (this.props.user.isAdmin && hasFeature(this.props.user, ScoutFeature.AdminTools)) && hasFeature(this.props.user, ScoutFeature.InactivityTimeout)\n && (\n \n )}\n />\n }\n \n \n
    \n
    \n
    \n );\n }\n\n private setSelectedMenuItem = (e): void => {\n const realKey: number = parseInt(e.key, 10); // parameters (thingToParse, base number)\n\n if (this.state.selectedMenuItem !== realKey) {\n // they clicked on a different section\n\n this.setState({\n selectedMenuItem: realKey,\n });\n }\n };\n\n private getDefaultSelectedKey = (): Array => {\n if (this.props.location.pathname.indexOf(\"ManageUsers\") > -1) {\n return [UserSettingsMenuSelection.USER_MANAGEMENT.toString()];\n } else if (this.props.location.pathname.indexOf(\"ManageTerritories\") > -1) {\n return [UserSettingsMenuSelection.TERRITORY_MANAGEMENT.toString()];\n } else if (this.props.location.pathname.indexOf(\"AccountTeam\") > -1) {\n return [UserSettingsMenuSelection.ACCOUNT_TEAM.toString()];\n } else if (this.props.location.pathname.indexOf(\"Preferences\") > -1) {\n return [UserSettingsMenuSelection.USER_PREFERENCES.toString()];\n } else {\n return [UserSettingsMenuSelection.USER_PROFILE.toString()];\n }\n };\n}\n\nexport default withRouter(UserSettings);\n","import { Checkbox, Modal, Switch, Table } from \"antd\";\nimport { CheckboxChangeEvent } from \"antd/es/checkbox\";\nimport * as React from \"react\";\nimport { getTranslation } from \"../../../../Actions/VerbiageActions\";\nimport { AppArea } from \"../../../../Enums/AppArea\";\nimport { TerritoryTypePermission } from \"../../../../Enums/Enums\";\nimport {\n ITerritoryType,\n ITerritoryTypePermission,\n IUser,\n} from \"../../../../Models/Models\";\n\ninterface ITerritoryManagementProps {\n user: IUser;\n territoryTypePermissions: Array;\n //companyTerritoryTypes: Array;\n\n updateTerritoryTypeAdminOnlyProperty: (territoryType: ITerritoryType) => void;\n updateTerritoryTypeUserPermissions: (\n userID: number,\n territoryTypeID: number,\n canView: boolean,\n canEdit: boolean\n ) => void;\n getTerritoryTypePermissions: (territoryTypeID: number) => void;\n updateTerritoryTypeUserPermissionsForAll: (\n territoryPermissions: Array\n ) => void;\n getCompanyTerritoryTypes: () => void;\n}\n\ninterface ITerritoryManagementState {\n allTerritoryTypes: Array;\n selectedTerritoryType: ITerritoryType;\n modalVisible: boolean;\n loadingTerritoryTypePermissions: boolean;\n}\n\ninterface IUserTerritoryPermissions extends IUser {\n userID: number;\n tTypeID: number;\n canEdit: boolean;\n canView: boolean;\n}\n\ninterface IUserCopy extends IUser {\n // for Ant Design table\n userType: string;\n loginStatusString: string;\n showingActiveStatusMenu: boolean;\n}\n\nclass TerritoryManagement extends React.Component<\n ITerritoryManagementProps,\n ITerritoryManagementState\n> {\n private allNonAdminUsers: IUser[] = [];\n private allAdminUsers: IUser[] = [];\n private readonly territoryTypeColumns: any[] = [\n {\n title: null,\n dataIndex: null,\n width: 50,\n render: (territoryType: ITerritoryType): JSX.Element => (\n \n \n \n ),\n },\n {\n title:\n getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n false\n ) + \" Type\",\n dataIndex: \"name\",\n sorter: (a: ITerritoryType, b: ITerritoryType) =>\n a.name && b.name && a.name.toLowerCase() < b.name.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: null,\n dataIndex: null, // what will show up in the UI\n render: (territoryType: ITerritoryType) => (\n
    \n this.manageTerritoryType(territoryType)}\n >\n Manage\n \n
    \n
    \n ),\n },\n ];\n\n /**\n *\n */\n constructor(props) {\n super(props);\n this.state = {\n allTerritoryTypes: [...this.props.user.company.territoryTypes.types],\n selectedTerritoryType: null,\n modalVisible: false,\n loadingTerritoryTypePermissions: false,\n };\n this.allNonAdminUsers = this.props.user.company.users.filter(\n (user: IUser) => !user.isAdmin\n );\n this.allAdminUsers = this.props.user.company.users.filter(\n (user: IUser) => user.isAdmin\n );\n }\n\n public componentDidMount() {\n this.props.getCompanyTerritoryTypes();\n }\n\n public componentWillReceiveProps(newProps: ITerritoryManagementProps) {\n if (this.state.loadingTerritoryTypePermissions) {\n this.setState({\n loadingTerritoryTypePermissions: false,\n });\n }\n if (newProps && newProps.user) {\n this.setState({\n allTerritoryTypes: [...newProps.user.company.territoryTypes.types],\n });\n }\n }\n\n public render() {\n const userTypes = this.allNonAdminUsers.map((user: IUserCopy): string => {\n if (user.isAdmin) {\n user.userType = \"Admin\";\n } else if (user.isFranchisee) {\n user.userType = \"Franchisee\";\n } else {\n user.userType = \"Standard\";\n }\n return user.userType;\n });\n // get unique user types - [\"Admin\", Standard\", \"Franchisee\"]\n const uniqueUserTypes = [...new Set(userTypes)]; // ts yells...but it works and it compiles\n // create object for Ant-Design Filtering\n const uniqueUserTypeFilters = uniqueUserTypes.map((type: string) => {\n return {\n text: type,\n value: type,\n };\n });\n\n const manageTerritoryColumns: Array = [\n {\n title: \"First Name\",\n dataIndex: \"firstName\",\n defaultSortOrder: \"ascend\",\n sorter: (a: IUserTerritoryPermissions, b: IUserTerritoryPermissions) =>\n a.firstName\n && b.firstName\n && a.firstName.toLowerCase() < b.firstName.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"Last Name\",\n dataIndex: \"lastName\",\n defaultSortOrder: \"ascend\",\n sorter: (a: IUserTerritoryPermissions, b: IUserTerritoryPermissions) =>\n a.lastName\n && b.lastName\n && a.lastName.toLowerCase() < b.lastName.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"User Type\",\n dataIndex: \"userType\",\n filters: uniqueUserTypeFilters,\n filterMultiple: true,\n defaultSortOrder: \"ascend\",\n onFilter: (value, record) => record.userType.indexOf(value) === 0,\n sorter: (a: IUserCopy, b: IUserCopy) =>\n a.userType\n && b.userType\n && a.userType.toLowerCase() < b.userType.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: null,\n dataIndex: null,\n width: 50,\n sorter: (a: IUserTerritoryPermissions, b: IUserTerritoryPermissions) =>\n a.canView < b.canView ? -1 : 1,\n render: (user: IUserTerritoryPermissions) => (\n
    \n \n this.territoryPermissionsOptionsChanged(\n user,\n event,\n TerritoryTypePermission.VIEW\n )\n }\n disabled={this.state.selectedTerritoryType.isAdminOnly}\n >\n View\n \n
    \n ),\n },\n {\n title: null,\n dataIndex: null,\n width: 50,\n sorter: (a: IUserTerritoryPermissions, b: IUserTerritoryPermissions) =>\n a.canEdit < b.canEdit ? -1 : 1,\n render: (user: IUserTerritoryPermissions) => (\n
    \n \n this.territoryPermissionsOptionsChanged(\n user,\n event,\n TerritoryTypePermission.EDIT\n )\n }\n disabled={this.state.selectedTerritoryType.isAdminOnly}\n >\n Edit\n \n
    \n ),\n },\n ];\n\n let territoryModal: JSX.Element | null = null;\n if (this.state.selectedTerritoryType) {\n territoryModal = (\n \n \n \n this.toggleTerritoryAdminMode(this.state.selectedTerritoryType)\n }\n >\n \n Admin Only\n \n
    \n \n this.toggleAllUsersPermissions(\n this.state.selectedTerritoryType,\n TerritoryTypePermission.VIEW\n )\n }\n disabled={this.state.selectedTerritoryType.isAdminOnly}\n >\n \n All View\n \n \n this.toggleAllUsersPermissions(\n this.state.selectedTerritoryType,\n TerritoryTypePermission.EDIT\n )\n }\n disabled={this.state.selectedTerritoryType.isAdminOnly}\n >\n \n All Edit\n \n
    \n \n\n user.userID.toString()}\n loading={this.state.loadingTerritoryTypePermissions}\n >\n \n );\n }\n\n let territoryTypesTable: JSX.Element | null = null;\n if (this.props.user.company.territoryTypes.types.length > 0) {\n territoryTypesTable = (\n tType.typeID.toString()}\n >\n );\n }\n\n const territoryWord = getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n true\n );\n\n return (\n
    \n {territoryModal}\n\n
    \n

    {territoryWord}

    \n \n
    \n\n {territoryTypesTable}\n
    \n );\n }\n\n private toggleAllUsersPermissions = (\n territoryType: ITerritoryType,\n action: TerritoryTypePermission\n ) => {\n this.setLoadingTerritoryTypePermissions(true);\n\n const permissionsCopy: ITerritoryTypePermission[] = [\n ...this.props.territoryTypePermissions,\n ];\n\n // add every user to the array with no permission\n this.allNonAdminUsers.forEach((user: IUser) => {\n const foundPermission: ITerritoryTypePermission = permissionsCopy.find(\n (permission: ITerritoryTypePermission) => {\n return permission.userID === user.userID;\n }\n );\n if (!foundPermission) {\n permissionsCopy.push({\n typeID: this.state.selectedTerritoryType.typeID,\n userID: user.userID,\n canView: false,\n canEdit: false,\n });\n }\n });\n\n switch (action) {\n case TerritoryTypePermission.VIEW:\n if (this.allUsersCanView(permissionsCopy)) {\n // take away view from everyone\n permissionsCopy.forEach((permission: ITerritoryTypePermission) => {\n let isAdmin = false;\n for (let i = 0; i < this.allAdminUsers.length; i++) {\n if (this.allAdminUsers[i].userID === permission.userID) {\n isAdmin = true;\n break;\n }\n }\n if (!isAdmin) {\n permission.canView = false;\n }\n });\n } else {\n // give view to everyone\n permissionsCopy.forEach((permission: ITerritoryTypePermission) => {\n permission.canView = true;\n });\n }\n break;\n case TerritoryTypePermission.EDIT:\n if (this.allUsersCanEdit(permissionsCopy)) {\n // take away edit from everyone\n permissionsCopy.forEach((permission: ITerritoryTypePermission) => {\n let isAdmin = false;\n for (let i = 0; i < this.allAdminUsers.length; i++) {\n if (this.allAdminUsers[i].userID === permission.userID) {\n isAdmin = true;\n break;\n }\n }\n if (!isAdmin) {\n permission.canEdit = false;\n }\n });\n } else {\n // give edit to everyone\n permissionsCopy.forEach((permission: ITerritoryTypePermission) => {\n permission.canEdit = true;\n });\n }\n break;\n }\n\n this.props.updateTerritoryTypeUserPermissionsForAll(permissionsCopy);\n };\n\n private userCanView = (user: IUserTerritoryPermissions) => {\n for (let i = 0; i < this.props.territoryTypePermissions.length; i++) {\n if (\n this.props.territoryTypePermissions[i].userID === user.userID\n && this.props.territoryTypePermissions[i].canView\n ) {\n return true;\n }\n }\n return false;\n };\n private userCanEdit = (user: IUserTerritoryPermissions) => {\n for (let i = 0; i < this.props.territoryTypePermissions.length; i++) {\n if (\n this.props.territoryTypePermissions[i].userID === user.userID\n && this.props.territoryTypePermissions[i].canEdit\n ) {\n return true;\n }\n }\n return false;\n };\n private allUsersCanView = (permissions: Array) => {\n const permissionsCopy: Array = [...permissions];\n // add every user to the array with no permission\n this.allNonAdminUsers.forEach((user: IUser) => {\n const foundPermission: ITerritoryTypePermission = permissionsCopy.find(\n (permission: ITerritoryTypePermission) => {\n return permission.userID === user.userID;\n }\n );\n if (!foundPermission) {\n permissionsCopy.push({\n typeID: this.state.selectedTerritoryType.typeID,\n userID: user.userID,\n canView: false,\n canEdit: false,\n });\n }\n });\n\n for (let i = 0; i < permissionsCopy.length; i++) {\n if (!permissionsCopy[i].canView) {\n return false;\n }\n }\n return true;\n };\n private allUsersCanEdit = (permissions: Array) => {\n const permissionsCopy: Array = [...permissions];\n // add every user to the array with no permission\n this.allNonAdminUsers.forEach((user: IUser) => {\n const foundPermission: ITerritoryTypePermission = permissionsCopy.find(\n (permission: ITerritoryTypePermission) => {\n return permission.userID === user.userID;\n }\n );\n if (!foundPermission) {\n permissionsCopy.push({\n typeID: this.state.selectedTerritoryType.typeID,\n userID: user.userID,\n canView: false,\n canEdit: false,\n });\n }\n });\n\n for (let i = 0; i < permissionsCopy.length; i++) {\n if (!permissionsCopy[i].canEdit) {\n return false;\n }\n }\n return true;\n };\n\n private manageTerritoryType = (territoryType: ITerritoryType): void => {\n this.setSelectedTerritoryType(territoryType);\n this.props.getTerritoryTypePermissions(territoryType.typeID);\n this.setModalVisible(true);\n };\n\n private setSelectedTerritoryType = (territoryType: ITerritoryType): void => {\n this.setState({\n selectedTerritoryType: territoryType,\n });\n };\n\n private handleModalCancelClick = (): void => {\n this.setModalVisible(false);\n };\n private handleModalOkClick = (): void => {\n this.setModalVisible(false);\n };\n\n private setModalVisible = (visible: boolean): void => {\n this.setState({\n modalVisible: visible,\n });\n };\n\n private setLoadingTerritoryTypePermissions = (loading: boolean) => {\n this.setState({\n loadingTerritoryTypePermissions: loading,\n });\n };\n\n private territoryPermissionsOptionsChanged = (\n user: IUserTerritoryPermissions,\n event: CheckboxChangeEvent,\n permissionType: TerritoryTypePermission\n ): void => {\n switch (permissionType) {\n case TerritoryTypePermission.VIEW:\n if (event.target.checked) {\n user.canView = true;\n } else {\n user.canView = false;\n }\n // set what they already have to send up to the server\n user.canEdit = this.userCanEdit(user);\n break;\n case TerritoryTypePermission.EDIT:\n if (event.target.checked) {\n user.canEdit = true;\n } else {\n user.canEdit = false;\n }\n // set what they already have to send up to the server\n user.canView = this.userCanView(user);\n break;\n }\n\n this.setLoadingTerritoryTypePermissions(true);\n\n user.tTypeID = this.state.selectedTerritoryType.typeID;\n\n this.props.updateTerritoryTypeUserPermissions(\n user.userID,\n this.state.selectedTerritoryType.typeID,\n user.canView,\n user.canEdit\n );\n };\n\n private toggleTerritoryAdminMode = (territoryType: ITerritoryType): void => {\n this.setLoadingTerritoryTypePermissions(true);\n\n const tTypeCopy: ITerritoryType = { ...territoryType };\n tTypeCopy.isAdminOnly = !tTypeCopy.isAdminOnly;\n\n this.props.updateTerritoryTypeAdminOnlyProperty(tTypeCopy);\n\n this.setState({\n selectedTerritoryType: tTypeCopy,\n });\n this.setLoadingTerritoryTypePermissions(false);\n };\n\n private territorySearchInputChanged = (\n event: React.ChangeEvent\n ): void => {\n const searchTerm: string = event.target.value.toLowerCase();\n\n if (searchTerm && searchTerm.length > 0) {\n const territoryTypeCopy: Array = [];\n for (\n let i = 0;\n i < this.props.user.company.territoryTypes.types.length;\n i++\n ) {\n if (\n this.props.user.company.territoryTypes.types[i].name\n .toLowerCase()\n .indexOf(searchTerm) > -1\n ) {\n territoryTypeCopy.push(\n this.props.user.company.territoryTypes.types[i]\n );\n }\n }\n\n this.setState({\n allTerritoryTypes: territoryTypeCopy,\n });\n } else {\n this.setState({\n allTerritoryTypes: this.props.user.company.territoryTypes.types,\n });\n }\n };\n\n private setUserTerritoryPermissionsUsersInitialValues =\n (): Array => {\n const usersWithTerritoryPermissions: Array = [\n ...(this.allNonAdminUsers as Array),\n ];\n\n this.props.territoryTypePermissions.forEach(\n (permission: ITerritoryTypePermission, permissionIndex: number) => {\n usersWithTerritoryPermissions.forEach(\n (user: IUserTerritoryPermissions, userIndex: number) => {\n if (user.userID === permission.userID) {\n user.canEdit = permission.canEdit;\n user.canView = permission.canView;\n }\n }\n );\n }\n );\n\n return usersWithTerritoryPermissions;\n };\n\n private filterChange(pagination, filters, sorter) {\n console.log(\"params\", pagination, filters, sorter);\n }\n}\n\nexport default TerritoryManagement;\n","import { Button, Dropdown, Icon, Menu, Modal, Popover, Table } from \"antd\";\nimport * as React from \"react\";\nimport { hasFeature } from \"../../../../Actions/UserActions\";\nimport { getTranslation } from \"../../../../Actions/VerbiageActions\";\nimport { AppArea } from \"../../../../Enums/AppArea\";\nimport { UserLoginStatus } from \"../../../../Enums/Enums\";\nimport { ScoutFeature } from \"../../../../Enums/ScoutFeature\";\nimport { IStore, ITerritory, IUser } from \"../../../../Models/Models\";\nimport ItemMap from \"./ItemMap\";\n\ninterface IUserManagementProps {\n user: IUser;\n allUsers: Array;\n userFranchiseeStores: Array;\n userFranchiseeTerritories: Array;\n\n getUserFranchiseeTerritoryInformation: (userID: number) => void;\n getUserFranchiseeStoreInformation: (userID: number) => void;\n removeStoreFromFranchiseeUser: (userID: number, storeID: number) => void;\n removeTerritoryFromFranchiseeUser: (\n userID: number,\n territoryID: number\n ) => void;\n updateUserActiveStatus: (userID: number, activeStatus: boolean) => void;\n}\n\ninterface IUserManagementState {\n allUsers: Array;\n userManagementModalVisible: boolean;\n userManagementItemMapModalVisible: boolean;\n areYouSureVisible: boolean;\n modalSection: IUserManagementModalSection;\n selectedUser: IUser | null;\n selectedStore: IStore | null;\n selectedTerritory: ITerritory | null;\n loadingUserManagementTable: boolean;\n}\n\nenum IUserManagementModalSection {\n STORES,\n TERRITORIES,\n}\n\ninterface IUserCopy extends IUser {\n // for Ant Design table\n userType: string;\n loginStatusString: string;\n showingActiveStatusMenu: boolean;\n}\n\nclass UserManagement extends React.Component<\n IUserManagementProps,\n IUserManagementState\n> {\n public wordStore: string = getTranslation(\n this.props.user.company.companyType,\n AppArea.LOCATIONS,\n false\n );\n public wordStores: string = getTranslation(\n this.props.user.company.companyType,\n AppArea.LOCATIONS,\n true\n );\n public wordTerritory: string = getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n false\n );\n public wordTerritories: string = getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n true\n );\n\n // get all user names\n private nameFilters = this.props.allUsers.map((user: IUser, index): {\n text: string;\n value: string;\n } => {\n return {\n text: user.fullName,\n value: user.fullName,\n };\n });\n // get all user login statuses - [\"Active\", \"Idle\", \"Idle\", \"Inactive\"]\n private userLoginStatuses = this.props.allUsers.map(\n (user: IUserCopy, index: number): string => {\n switch (user.loginStatus) {\n case UserLoginStatus.ACTIVE:\n user.loginStatusString = \"Active\";\n break;\n case UserLoginStatus.IDLE:\n user.loginStatusString = \"Idle\";\n break;\n case UserLoginStatus.NOT_LOGGED_IN:\n user.loginStatusString = \"Inactive\";\n break;\n }\n return user.loginStatusString;\n }\n );\n // for ant design\n private userActiveStatusMenus = this.props.allUsers.map(\n (user: IUserCopy, index: number): IUser => {\n user.showingActiveStatusMenu = false;\n return user;\n }\n );\n // get unique user login statuses - [\"Active\", Idle\", \"Inactive\"]\n private uniqueUserLoginStatuses = [...new Set(this.userLoginStatuses)]; // ts yells...but it works and it compiles\n // create object for Ant-Design Filtering\n private uniqueUserLoginStatusFilters = this.uniqueUserLoginStatuses.map(\n (type: string, index: number) => {\n return {\n text: type,\n value: type,\n };\n }\n );\n private readonly userManagementUserStoreColumns: any[] = [\n {\n title: `${this.wordStore} Name`,\n dataIndex: \"name\", // what will show up in the UI\n // filters: this.nameFilters,// must be array of objects\n // filterMultiple: false,\n // specify the condition of filtering result\n // here is that finding the name started with `value`\n sorter: (a, b) =>\n a.name && b.name && a.name.toLowerCase() < b.name.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: `${this.wordStore} Number`,\n dataIndex: \"storeNumber\", // what will show up in the UI\n defaultSortOrder: \"descend\",\n sorter: (a, b) =>\n a.storeNumber\n && b.storeNumber\n && a.storeNumber.toLowerCase() < b.storeNumber.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"City\",\n dataIndex: \"address.city\", // what will show up in the UI\n sorter: (a, b) =>\n a.address\n && b.address\n && a.address.city\n && b.address.city\n && a.address.city.toLowerCase() < b.address.city.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"State\",\n dataIndex: \"address.state\", // what will show up in the UI\n sorter: (a, b) =>\n a.address\n && b.address\n && a.address.state\n && b.address.date\n && a.address.state.toLowerCase() < b.address.state.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"Zip Code\",\n dataIndex: \"address.zip\", // what will show up in the UI\n sorter: (a, b) =>\n a.address\n && b.address\n && a.address.zip\n && b.address.zip\n && a.address.zip.toLowerCase() < b.address.zip.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: null,\n dataIndex: null,\n render: (store: IStore) => (\n
    \n this.confirmFranchiseeUserStoreUnassign(store)}\n >\n Unassign\n \n\n \n this.viewUserAssignedStore(store)}\n >\n \n
    \n ),\n },\n ];\n private readonly userManagementUserTerritoryColumns: any[] = [\n {\n title:\n getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n false\n ) + \" Name\",\n dataIndex: \"name\", // what will show up in the UI\n // filters: this.nameFilters,// must be array of objects\n // filterMultiple: false,\n // specify the condition of filtering result\n // here is that finding the name started with `value`\n defaultSortOrder: \"ascend\",\n sorter: (a: ITerritory, b: ITerritory) =>\n a.name && b.name && a.name.toLowerCase() < b.name.toLowerCase()\n ? -1\n : 1,\n },\n {\n title:\n getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n false\n ) + \" Type\",\n dataIndex: \"territoryType.name\", // what will show up in the UI\n sorter: (a: ITerritory, b: ITerritory) =>\n a.type && b.type && a.type.toLowerCase() < b.type.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"Display Label\",\n dataIndex: \"displayLabel\", // what will show up in the UI\n sorter: (a: ITerritory, b: ITerritory) =>\n a.displayLabel\n && b.displayLabel\n && a.displayLabel.toLowerCase() < b.displayLabel.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"Date Created\",\n dataIndex: \"createdDateTimeFriendly\", // what will show up in the UI\n sorter: (a: ITerritory, b: ITerritory) =>\n a.createdDateTimeFriendly\n && b.createdDateTimeFriendly\n && a.createdDateTimeFriendly < b.createdDateTimeFriendly\n ? -1\n : 1,\n },\n {\n title: null,\n dataIndex: null,\n render: (territory: ITerritory) => (\n
    \n \n this.confirmFranchiseeUserTerritoryUnassign(territory)\n }\n >\n Unassign\n \n\n \n this.viewUserAssignedTerritory(territory)}\n >\n \n
    \n ),\n },\n ];\n\n /**\n *\n */\n constructor(props) {\n super(props);\n\n this.state = {\n allUsers: [...this.props.allUsers],\n areYouSureVisible: false,\n userManagementModalVisible: false,\n userManagementItemMapModalVisible: false,\n modalSection: IUserManagementModalSection.STORES,\n selectedUser: null,\n selectedStore: null,\n selectedTerritory: null,\n loadingUserManagementTable: false,\n };\n }\n\n public componentWillReceiveProps() {\n if (this.state.loadingUserManagementTable) {\n this.setState({\n loadingUserManagementTable: false,\n });\n }\n // otherwise the data table will not update (it's data comes from state)\n if (this.props.allUsers) {\n this.setState({\n allUsers: this.props.allUsers,\n });\n }\n }\n\n public render() {\n // get all user types - [\"Admin\", \"Admin\", \"Standard\", \"Franchisee\"]\n const userTypes = this.props.allUsers.map(\n (user: IUserCopy, index): string => {\n if (user.isAdmin) {\n user.userType = \"Admin\";\n } else if (user.isFranchisee) {\n user.userType = \"Franchisee\";\n } else {\n user.userType = \"Standard\";\n }\n return user.userType;\n }\n );\n // get unique user types - [\"Admin\", Standard\", \"Franchisee\"]\n const uniqueUserTypes = [...new Set(userTypes)]; // ts yells...but it works and it compiles\n // create object for Ant-Design Filtering\n const uniqueUserTypeFilters = uniqueUserTypes.map(\n (type: string, index: number) => {\n return {\n text: type,\n value: type,\n };\n }\n );\n \n\n const userManagementColumns: any[] = [\n {\n title: \"Name\",\n dataIndex: \"fullName\",\n sorter: (a: IUser, b: IUser) =>\n a.fullName\n && b.fullName\n && a.fullName.toLowerCase() < b.fullName.toLowerCase()\n ? -1\n : 1,\n },\n {\n title: \"Title\",\n dataIndex: \"title\",\n sorter: (a: IUser, b: IUser) =>\n a.title && b.title && a.title.toLowerCase() < b.title.toLowerCase()\n ? -1\n : 1\n },\n {\n title: \"User Type\",\n dataIndex: \"userType\",\n filters: uniqueUserTypeFilters,\n filterMultiple: true,\n defaultSortOrder: \"ascend\",\n onFilter: (value, record) => record.userType.indexOf(value) === 0,\n sorter: (a: IUserCopy, b: IUserCopy) =>\n a.userType\n && b.userType\n && a.userType.toLowerCase() < b.userType.toLowerCase()\n ? -1\n : 1,\n },\n hasFeature(this.props.user, ScoutFeature.Scout4)\n ? {\n title: `# of ${this.wordStores}`,\n dataIndex: \"franchiseStoresCount\",\n sorter: (a: IUser, b: IUser) =>\n a.franchiseStoresCount - b.franchiseStoresCount,\n } : {},\n hasFeature(this.props.user, ScoutFeature.Scout4)\n ? {\n title: `# of ${this.wordTerritories}`,\n dataIndex: \"franchiseTerritoriesCount\",\n sorter: (a: IUser, b: IUser) =>\n a.franchiseTerritoriesCount - b.franchiseTerritoriesCount,\n } : {},\n {\n title: \"Status\",\n dataIndex: null,\n sorter: (a: IUser, b: IUser) =>\n a.isActive === b.isActive ? 0 : a.isActive ? -1 : 1,\n render: (user: IUserCopy): JSX.Element => (\n
    \n
    \n
    \n {user.isActive ? \"Active\" : \"Inactive\"}\n
    \n \n \n \n \n ),\n },\n {\n title: null,\n dataIndex: null,\n render: (user: IUser): JSX.Element | null =>\n user.isFranchisee && hasFeature(this.props.user, ScoutFeature.Scout4)? (\n
    \n this.manageUser(user)}\n >\n Manage\n \n
    \n
    \n ) : null,\n },\n ];\n \n\n let modalColumns = null;\n let modalData = [];\n\n if (this.state.modalSection === IUserManagementModalSection.STORES) {\n modalColumns = this.userManagementUserStoreColumns;\n modalData = this.props.userFranchiseeStores;\n } else if (\n this.state.modalSection === IUserManagementModalSection.TERRITORIES\n ) {\n modalColumns = this.userManagementUserTerritoryColumns;\n modalData = this.props.userFranchiseeTerritories;\n }\n\n let userModal: JSX.Element | null = null;\n let areYouSureModal: JSX.Element | null = null;\n let modalEmptyVerbiage = \"\";\n let modalEmptyIcon: JSX.Element = null;\n if (this.state.modalSection === IUserManagementModalSection.STORES) {\n modalEmptyVerbiage = \"Locations\";\n modalEmptyIcon = (\n
    \n );\n } else if (\n this.state.modalSection === IUserManagementModalSection.TERRITORIES\n ) {\n modalEmptyVerbiage = this.wordTerritories;\n modalEmptyIcon = (\n
    \n );\n }\n\n if (this.state.selectedUser) {\n userModal = (\n \n
    \n
      \n \n this.setUserManagementModalSection(\n IUserManagementModalSection.STORES\n )\n }\n >\n {this.wordStores}\n \n \n this.setUserManagementModalSection(\n IUserManagementModalSection.TERRITORIES\n )\n }\n >\n {this.wordTerritories}\n \n
    \n
    \n \n {modalEmptyIcon}\n

    No {modalEmptyVerbiage}

    \n

    \n This user does not have any assigned{\" \"}\n {modalEmptyVerbiage.toLowerCase()}.\n

    \n \n ),\n }}\n onChange={this.filterChange}\n rowKey={(item: IStore | ITerritory): string => item.id.toString()}\n >\n \n );\n }\n\n let userManagementMapItemModal: JSX.Element | null = null;\n if (this.state.userManagementItemMapModalVisible) {\n let mapItem: IStore | ITerritory = null;\n\n switch (this.state.modalSection) {\n case IUserManagementModalSection.STORES:\n mapItem = this.state.selectedStore;\n break;\n case IUserManagementModalSection.TERRITORIES:\n mapItem = this.state.selectedTerritory;\n break;\n }\n userManagementMapItemModal = (\n \n }\n mapElement={
    }\n item={mapItem}\n >\n \n );\n }\n\n switch (this.state.modalSection) {\n case IUserManagementModalSection.STORES:\n if (this.state.selectedStore && this.state.selectedUser) {\n areYouSureModal = (\n \n

    \n Are you sure you want to unassign{\" \"}\n {this.state.selectedStore.name} from{\" \"}\n {this.state.selectedUser.fullName}?\n

    \n \n );\n }\n break;\n\n case IUserManagementModalSection.TERRITORIES:\n if (this.state.selectedTerritory && this.state.selectedUser) {\n areYouSureModal = (\n \n

    \n Are you sure you want to unassign{\" \"}\n {this.state.selectedTerritory.name} from{\" \"}\n {this.state.selectedUser.fullName}?\n

    \n \n );\n }\n break;\n }\n\n return (\n
    \n {userModal}\n {areYouSureModal}\n {userManagementMapItemModal}\n\n
    \n

    Users

    \n \n
    \n\n user.userID.toString()}\n >\n
    \n );\n }\n\n private getItemMap = (itemRequested): JSX.Element => {\n // itemRequested must be either a store or territory\n return (\n }\n mapElement={
    }\n item={itemRequested}\n >\n );\n };\n\n private setUserManagementTableLoading = (loading: boolean) => {\n this.setState({\n loadingUserManagementTable: loading,\n });\n };\n\n private updateUserActiveStatus = (user: IUser): void => {\n this.setUserManagementTableLoading(true);\n this.props.updateUserActiveStatus(user.userID, !user.isActive);\n };\n\n private getUserActionsMenu = (user: IUserCopy): JSX.Element => {\n const menu = (\n this.updateUserActiveStatus(user)}>\n \n {user.isActive ? \"Deactivate User\" : \"Activate User\"}\n \n \n );\n\n return menu;\n };\n\n private getUserLoginStatusColor = (user: IUser): string => {\n switch (user.loginStatus) {\n case UserLoginStatus.ACTIVE:\n return \"circle green\";\n case UserLoginStatus.IDLE:\n case UserLoginStatus.NOT_LOGGED_IN:\n return \"circle grey\";\n }\n };\n\n private manageUser = (user: IUser): void => {\n this.setSelectedUser(user);\n this.openUserManagementModal();\n this.props.getUserFranchiseeStoreInformation(user.userID);\n this.props.getUserFranchiseeTerritoryInformation(user.userID);\n };\n\n private viewUserAssignedTerritory = (territory: ITerritory): void => {\n this.setSelectedTerritory(territory);\n this.setUserManagementMapItemModalVisiblity(true);\n };\n\n private viewUserAssignedStore = (store: IStore): void => {\n this.setSelectedStore(store);\n this.setUserManagementMapItemModalVisiblity(true);\n };\n\n private setSelectedUser = (user: IUser | null): void => {\n this.setState({\n selectedUser: user,\n });\n };\n\n private openUserManagementModal = (): void => {\n this.setUserManagementModalVisiblity(true);\n this.setUserManagementModalSection(IUserManagementModalSection.STORES);\n };\n\n private setUserManagementModalSection = (\n section: IUserManagementModalSection\n ): void => {\n this.setState({\n modalSection: section,\n });\n };\n\n private handleModalCancelClick = (): void => {\n this.setUserManagementModalVisiblity(false);\n };\n private handleModalOkClick = (): void => {\n this.setUserManagementModalVisiblity(false);\n };\n private handleAreYouSureCancel = (): void => {\n this.setAreYouSureVisibility(false);\n };\n private handleAreYouSureOk = (): void => {\n switch (this.state.modalSection) {\n case IUserManagementModalSection.STORES:\n this.props.removeStoreFromFranchiseeUser(\n this.state.selectedUser.userID,\n this.state.selectedStore.id\n );\n break;\n case IUserManagementModalSection.TERRITORIES:\n this.props.removeTerritoryFromFranchiseeUser(\n this.state.selectedUser.userID,\n this.state.selectedTerritory.id\n );\n break;\n default:\n break;\n }\n this.setAreYouSureVisibility(false);\n };\n\n private handleUserManagementMapItemModalOkClick = (): void => {\n this.setUserManagementMapItemModalVisiblity(false);\n };\n private handleUserManagementMapItemModalCancelClick = (): void => {\n this.setUserManagementMapItemModalVisiblity(false);\n };\n\n private setUserManagementModalVisiblity = (visible: boolean): void => {\n this.setState({\n userManagementModalVisible: visible,\n });\n };\n\n private setUserManagementMapItemModalVisiblity = (visible: boolean): void => {\n this.setState({\n userManagementItemMapModalVisible: visible,\n });\n };\n\n private setAreYouSureVisibility = (visible: boolean): void => {\n this.setState({\n areYouSureVisible: visible,\n });\n };\n\n private confirmFranchiseeUserStoreUnassign = (store: IStore): void => {\n this.setSelectedStore(store);\n this.setAreYouSureVisibility(true);\n };\n\n private confirmFranchiseeUserTerritoryUnassign = (\n territory: ITerritory\n ): void => {\n this.setSelectedTerritory(territory);\n this.setAreYouSureVisibility(true);\n };\n\n private setSelectedStore = (store: IStore): void => {\n this.setState({\n selectedStore: store,\n });\n };\n\n private setSelectedTerritory = (territory: ITerritory): void => {\n this.setState({\n selectedTerritory: territory,\n });\n };\n\n private userSearchInputChanged = (\n event: React.ChangeEvent\n ): void => {\n const searchTerm: string = event.target.value.toLowerCase();\n\n if (searchTerm && searchTerm.length > 0) {\n const userCopy: Array = [];\n for (let i = 0; i < this.props.allUsers.length; i++) {\n if (\n this.props.allUsers[i].fullName.toLowerCase().indexOf(searchTerm)\n > -1\n || (this.props.allUsers[i].title\n && this.props.allUsers[i].title.toLowerCase().indexOf(searchTerm) > -1)\n ) {\n userCopy.push(this.props.allUsers[i]);\n }\n }\n\n this.setState({\n allUsers: userCopy,\n });\n } else {\n this.setState({\n allUsers: this.props.allUsers,\n });\n }\n };\n\n private filterChange(pagination, filters, sorter) {\n console.log(\"params\", pagination, filters, sorter);\n }\n}\n\nexport default UserManagement;\n","import {\n Checkbox,\n Collapse,\n Dropdown,\n Icon,\n Input,\n Menu,\n Popover,\n Radio,\n Select,\n} from \"antd\";\nimport { CheckboxChangeEvent } from \"antd/es/checkbox\";\nimport { RadioChangeEvent } from \"antd/es/radio/interface\";\nimport React from \"react\";\nimport { SketchPicker } from \"react-color\";\n\nimport { hasFeature } from \"../../../../Actions/Actions\";\nimport {\n CollaborateOptions,\n CommunityMatchActivityColumn,\n CommunityMatchContactColumn,\n CompanyType,\n GeographyBorderThickness,\n GeographyType,\n GeographyTypeMeasurement,\n MatchArea,\n MatchView,\n PrintFileTypeOutput,\n PrintLegend,\n TerritoryDrawMode,\n ColorOptions,\n} from \"../../../../Enums/Enums\";\nimport { IUser } from \"../../../../Models/IUser\";\nimport { IStore, IUserPreferences } from \"../../../../Models/Models\";\nimport { Store } from \"../../../../Models/IStore\";\nimport { SearchArea } from \"../../../../Enums/SearchArea\";\nimport { getTranslation } from \"../../../../Actions/VerbiageActions\";\nimport { AppArea } from \"../../../../Enums/AppArea\";\nimport { ScoutFeature } from \"../../../../Enums/ScoutFeature\";\n\nimport DefaultLoginApp, { radioDefaultAppValues } from \"./DefaultLoginApp\";\n\ninterface LabeledValue {\n key: string;\n label: React.ReactNode;\n}\ndeclare type SelectValue =\n | string\n | string[]\n | number\n | number[]\n | LabeledValue\n | LabeledValue[];\n\ninterface IUserPreferencesProps {\n user: IUser;\n userPreferences: IUserPreferences;\n communitySites: Array;\n\n getUserPreferences: () => void;\n getAllCommunitySites: () => void;\n updateUserPreferences: (userPreferences: IUserPreferences) => void;\n}\n\ninterface IColor {\n r: number; // red\n g: number; // green\n b: number; // blue\n a: number; // opacity\n};\n\ninterface IUserPreferencesState {\n activityColumnPickerVisible: boolean;\n contactColumnPickerVisible: boolean;\n sizeValue: number;\n sizeIsValid: boolean;\n chosenColorHex: string;\n chosenActualColorHex: string;\n chosenColorRGBA: IColor;\n chosenActualColorRGBA: IColor;\n loadingUserPreferences: boolean;\n defaultApp: string;\n}\n\nclass UserPreferences extends React.Component<\n IUserPreferencesProps,\n IUserPreferencesState\n> {\n private timeout = null;\n private _defaultOpacity = 0.3;\n /**\n *\n */\n constructor(props: IUserPreferencesProps) {\n super(props);\n\n this.state = {\n activityColumnPickerVisible: false,\n contactColumnPickerVisible: false,\n sizeValue: 10,\n sizeIsValid: true,\n chosenColorHex: \"#00ace6\",\n chosenColorRGBA: {\n r: 0,\n g: 172,\n b: 230,\n a: this._defaultOpacity,\n },\n chosenActualColorHex: \"#00ace6\",\n chosenActualColorRGBA: {\n r: 0,\n g: 172,\n b: 230,\n a: this._defaultOpacity,\n },\n loadingUserPreferences: false,\n defaultApp: \"\",\n };\n }\n\n public componentDidMount(): void {\n this.props.getUserPreferences();\n if (this.props.user.company.companyType === CompanyType.COMMUNITY) {\n this.props.getAllCommunitySites();\n }\n }\n\n public componentWillReceiveProps(nextProps: IUserPreferencesProps): void {\n if (this.state.loadingUserPreferences) {\n this.setState({\n loadingUserPreferences: false,\n });\n }\n\n if (nextProps.userPreferences) {\n const hex: string = nextProps.userPreferences.defaultColor;\n if (hex) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n const rgba = {\n r: r,\n g: g,\n b: b,\n a: nextProps.userPreferences.defaultOpacity || this._defaultOpacity,\n };\n\n this.setState({\n chosenColorRGBA: rgba,\n });\n }\n const actualHex: string = nextProps.userPreferences.defaultActualColor;\n if (actualHex) {\n const r = parseInt(actualHex.slice(1, 3), 16);\n const g = parseInt(actualHex.slice(3, 5), 16);\n const b = parseInt(actualHex.slice(5, 7), 16);\n const rgba = {\n r: r,\n g: g,\n b: b,\n a:\n nextProps.userPreferences.defaultActualOpacity\n || this._defaultOpacity,\n };\n\n this.setState({\n chosenActualColorRGBA: rgba,\n });\n }\n const nextPropsDefaultLoginApp = nextProps.userPreferences.defaultLoginApp;\n if (nextPropsDefaultLoginApp && radioDefaultAppValues.indexOf(nextPropsDefaultLoginApp) >= 0) {\n this.setState({\n defaultApp: nextPropsDefaultLoginApp,\n });\n } else {\n // If null/doesn't exist in radio list then default to SCOUT\n const fallbackAppName = hasFeature(this.props.user, ScoutFeature.Scout4)\n ? \"SCOUT\"\n : \"PRODUCT_SELECTION\";\n this.setState({\n defaultApp: fallbackAppName,\n });\n }\n }\n }\n\n public render(): JSX.Element {\n if (this.props.userPreferences) {\n let defaultSearchArea: SearchArea = null;\n if (this.props.userPreferences.searchAreaDefaultInternet) {\n defaultSearchArea = SearchArea.INTERNET;\n } else if (this.props.userPreferences.searchAreaDefaultFiles) {\n defaultSearchArea = SearchArea.FILES;\n } else if (this.props.userPreferences.searchAreaDefaultLocations) {\n defaultSearchArea = SearchArea.LOCATIONS;\n } else if (this.props.userPreferences.searchAreaDefaultPushpins) {\n defaultSearchArea = SearchArea.PUSHPINS;\n } else if (this.props.userPreferences.searchAreaDefaultTerritories) {\n defaultSearchArea = SearchArea.TERRITORIES;\n }\n /* 11714, 11914 */\n if (defaultSearchArea === null) {\n if (\n this.props.user?.company\n && this.props.user.company.companyType\n === CompanyType.COMMERCIAL_REAL_ESTATE\n ) {\n defaultSearchArea = SearchArea.INTERNET;\n } else {\n defaultSearchArea = SearchArea.LOCATIONS;\n }\n }\n\n let defaultPrintType: PrintFileTypeOutput = PrintFileTypeOutput.PDF;\n if (this.props.userPreferences.printFileTypeOutputIsPng) {\n defaultPrintType = PrintFileTypeOutput.PNG;\n }\n\n let defaultActiveItemsLegendSetting: PrintLegend = PrintLegend.OFF;\n if (this.props.userPreferences.printDisplayActiveItemsLegend) {\n defaultActiveItemsLegendSetting = PrintLegend.ON;\n }\n\n let defaultMatchesView: MatchView = MatchView.GRID;\n if (this.props.userPreferences.defaultMatchViewIsList) {\n defaultMatchesView = MatchView.LIST;\n }\n\n let defaultMatchesTab: MatchArea = MatchArea.CONTACTS;\n if (this.props.userPreferences.defaultMatchAreaIsMyActivity) {\n defaultMatchesTab = MatchArea.MY_ACTIVITY;\n } else if (this.props.userPreferences.defaultMatchAreaIsFiles) {\n defaultMatchesTab = MatchArea.FILES;\n }\n\n let defaultTerritoryMode: TerritoryDrawMode = TerritoryDrawMode.FREE_DRAW;\n if (this.props.userPreferences.defaultTerritoryDrawModeIsGeography) {\n defaultTerritoryMode = TerritoryDrawMode.GEOGRAPHY;\n }\n\n let defaultUnitType: GeographyType = GeographyType.DRIVE_TIME;\n if (this.props.userPreferences.defaultToRing) {\n defaultUnitType = GeographyType.RING;\n }\n\n let defaultMeasurementType: GeographyTypeMeasurement\n = GeographyTypeMeasurement.MILE;\n if (this.props.userPreferences.measurementTypeIsKilometer) {\n defaultMeasurementType = GeographyTypeMeasurement.KILOMETER;\n }\n\n let defaultColorType: ColorOptions = ColorOptions.AUTO;\n if (!this.props.userPreferences.autoColorByDefault) {\n defaultColorType = ColorOptions.CUSTOM;\n }\n\n let defaultActualColorType: ColorOptions = ColorOptions.AUTO;\n if (\n this.props.userPreferences.defaultActualColor\n && !this.props.userPreferences.autoColorActualByDefault\n ) {\n defaultActualColorType = ColorOptions.CUSTOM;\n }\n\n let defaultCommunitySite: IStore = null;\n if (\n this.props.userPreferences.defaultSite\n && this.props.userPreferences.defaultSite.id !== 0\n ) {\n defaultCommunitySite = this.props.userPreferences.defaultSite;\n }\n\n // user has not set any preferences, set a default border thickness\n let defaultBorderThickness = true;\n if (\n !this.props.userPreferences.defaultBorderThicknessXThin\n && !this.props.userPreferences.defaultBorderThicknessThin\n && !this.props.userPreferences.defaultBorderThicknessMedium\n && !this.props.userPreferences.defaultBorderThicknessThick\n ) {\n defaultBorderThickness = false;\n }\n // user has not set any preferences, set a default actual border thickness\n let defaultActualBorderThickness = true;\n if (\n !this.props.userPreferences.defaultActualBorderThicknessXThin\n && !this.props.userPreferences.defaultActualBorderThicknessThin\n && !this.props.userPreferences.defaultActualBorderThicknessMedium\n && !this.props.userPreferences.defaultActualBorderThicknessThick\n ) {\n defaultActualBorderThickness = false;\n }\n\n const activityColumnMenu: JSX.Element = (\n \n \n Name\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.NAME,\n event\n )\n }\n >\n \n \n Date Created\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.DATE_CREATED,\n event\n )\n }\n >\n \n \n Activity Result\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.ACTIVITY_RESULT,\n event\n )\n }\n >\n \n \n Next Step\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.NEXT_STEP,\n event\n )\n }\n >\n \n \n Notes\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.NOTES,\n event\n )\n }\n >\n \n \n Created By\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.CREATED_BY,\n event\n )\n }\n >\n \n \n Due Date\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.DUE_DATE,\n event\n )\n }\n >\n \n \n Rating\n \n this.activityColumnDefaultsChange(\n CommunityMatchActivityColumn.RATING,\n event\n )\n }\n >\n \n \n );\n\n const contactColumnMenu: JSX.Element = (\n \n \n Name\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.NAME,\n event\n )\n }\n >\n \n \n Title\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.TITLE,\n event\n )\n }\n >\n \n \n Office Phone\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.OFFICE_PHONE,\n event\n )\n }\n >\n \n \n Cell Phone\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.CELL_PHONE,\n event\n )\n }\n >\n \n \n Email\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.EMAIL_ADDRESS,\n event\n )\n }\n >\n \n \n Added By\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.ADDED_BY,\n event\n )\n }\n >\n \n \n Address\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.ADDRESS,\n event\n )\n }\n >\n \n \n Linkedin\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.LINKEDIN,\n event\n )\n }\n >\n \n \n Region\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.REGION,\n event\n )\n }\n >\n \n \n Time Zone\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.TIME_ZONE,\n event\n )\n }\n >\n \n \n Notes\n \n this.contactColumnDefaultsChange(\n CommunityMatchContactColumn.NOTES,\n event\n )\n }\n >\n \n \n );\n\n const customColorPopover: JSX.Element = !this.props.userPreferences\n .autoColorByDefault\n ? \n }\n >\n \n \n : null;\n\n const customActualColorPopover: JSX.Element\n = defaultActualColorType === ColorOptions.CUSTOM ? (\n \n }\n >\n \n \n ) : null;\n\n const actualDRRingDetails: JSX.Element = (\n
    \n
    COLOR
    \n
    \n \n this.defaultActualColorOptionChange(event)\n }\n >\n \n this.defaultActualColorChange(event)\n }\n style={{ display: \"block\" }}\n >\n Auto Color\n \n Custom Color\n {customActualColorPopover}\n \n
    \n
    BORDER THICKNESS
    \n
    \n \n this.defaultActualBorderThicknessChange(\n GeographyBorderThickness.XTHIN\n )\n }\n >
    \n \n this.defaultActualBorderThicknessChange(\n GeographyBorderThickness.THIN\n )\n }\n >
    \n \n this.defaultActualBorderThicknessChange(\n GeographyBorderThickness.MEDIUM\n )\n }\n >\n \n this.defaultActualBorderThicknessChange(\n GeographyBorderThickness.THICK\n )\n }\n >\n \n
    EXPLORE
    \n
    \n \n this.activateActualDTChange(event)\n }\n >\n Turn on Actual Drive Time / Trade Area when I explore a location\n \n
    \n \n );\n\n const mapOptionsDetails: JSX.Element = (\n
    \n
    SIZE
    \n {/* this.defaultSizeChange(event)}>\n 10\n \n \n */}\n\n \n this.defaultSizeChange(value)\n }\n defaultValue={this.props.userPreferences.defaultSize}\n >\n\n
    UNIT TYPE
    \n \n this.defaultUnitTypeChange(event)\n }\n >\n \n Drive Time\n \n \n Ring\n \n \n\n
    MEASUREMENT
    \n \n this.defaultMeasurementTypeChange(event)\n }\n >\n \n Mile\n \n \n Kilometer\n \n \n\n
    COLOR
    \n
    \n \n this.defaultColorOptionChange(event)\n }\n >\n \n this.defaultColorChange(event)\n }\n style={{ display: \"block\" }}\n >\n Auto Color\n \n Custom Color\n {customColorPopover}\n \n
    \n\n
    BORDER THICKNESS
    \n
    \n \n this.defaultBorderThicknessChange(\n GeographyBorderThickness.XTHIN\n )\n }\n >
    \n \n this.defaultBorderThicknessChange(GeographyBorderThickness.THIN)\n }\n >
    \n \n this.defaultBorderThicknessChange(\n GeographyBorderThickness.MEDIUM\n )\n }\n >\n \n this.defaultBorderThicknessChange(\n GeographyBorderThickness.THICK\n )\n }\n >\n \n {hasFeature(this.props.user, ScoutFeature.Reports) && (\n <>\n
    REPORTING
    \n
    \n \n this.defaultAddToStudyAreaChange(event)\n }\n >\n Automatically add to Study Area\n \n
    \n \n )}\n \n );\n\n const territoryOptionDetails: JSX.Element = (\n
    \n
    MODE
    \n \n this.defaultTerritoryDrawModeChange(event)\n }\n >\n \n Free Draw\n \n \n Geography\n \n \n
    \n );\n\n const territoryWord = getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n false\n );\n const territoryWordPlural = getTranslation(\n this.props.user.company.companyType,\n AppArea.TERRITORIES,\n true\n );\n const territoryOptionsKey = `${territoryWord} Creation`;\n\n const territoryOptions: JSX.Element = hasFeature(this.props.user, ScoutFeature.Territories)\n && \n \n {territoryOptionDetails}\n \n \n ;\n\n const mapOptions: JSX.Element = (\n \n \n {mapOptionsDetails}\n \n \n );\n\n const actualDTRingSection: JSX.Element = hasFeature(this.props.user, ScoutFeature.StoreExplore)\n ? \n \n {actualDRRingDetails}\n \n \n : null;\n\n const mapActions: JSX.Element = hasFeature(this.props.user, ScoutFeature.Scout4) && (\n
    \n
    \n Map Actions\n
    \n {mapOptions}\n {actualDTRingSection}\n {territoryOptions}\n
    \n );\n\n const printOptions: JSX.Element = hasFeature(this.props.user, ScoutFeature.Toolbox)\n && hasFeature(this.props.user, ScoutFeature.Scout4)\n &&
    \n
    Print Options
    \n
    \n File Type\n \n this.printModeChanged(value)\n }\n >\n PDF\n PNG\n \n
    \n
    \n Display Active Items Legend\n \n this.printActiveItemsLegendChanged(value)\n }\n >\n On\n Off\n \n
    \n
    ;\n\n const searchOptions: JSX.Element = hasFeature(this.props.user, ScoutFeature.Scout4) && (\n
    \n
    Search Options
    \n \n \n
    \n
    DEFAULT AREA
    \n \n this.defaultSearchAreaChangeHandler(event)\n }\n >\n \n Internet\n \n \n Files\n \n \n {getTranslation(\n this.props.user.company.companyType,\n AppArea.LOCATIONS,\n true\n )}\n \n \n Pushpins\n \n \n {territoryWordPlural}\n \n \n
    \n
    \n
    \n
    \n );\n\n let communityOptions: JSX.Element | null = null;\n if (\n this.props.user.company.companyType === CompanyType.COMMUNITY\n && hasFeature(this.props.user, ScoutFeature.RetailMatch)\n && hasFeature(this.props.user, ScoutFeature.Scout4)\n ) {\n let communitySites: Array = null;\n communitySites = this.props.communitySites.map((store: IStore) => {\n return (\n \n {store.name}\n \n );\n });\n\n communityOptions = (\n
    \n
    Matches
    \n
    \n Default Site\n \n this.defaultSiteChange(value)\n }\n placeholder=\"Select from your Sites\"\n >\n {communitySites}\n \n
    \n
    \n Contacts Column Picker\n \n \n Choose Defaults \n \n \n
    \n
    \n Activity Column Picker\n \n \n Choose Defaults \n \n \n
    \n
    \n Default View\n \n this.defaultMatchesViewChange(value)\n }\n >\n Grid\n List\n \n
    \n
    \n Default Tab\n \n this.defaultMatchesAreaChange(value)\n }\n >\n \n Contacts\n \n \n My Activity\n \n Files\n \n
    \n
    \n );\n }\n\n return (\n
    \n
    \n \n Preferences\n
    \n \n {mapActions}\n {/* {collaborateOptions} */}\n {printOptions}\n {searchOptions}\n {communityOptions}\n
    \n \n );\n }\n\n return null;\n }\n\n private setLoadingUserPreferences(loading: boolean) {\n this.setState({\n loadingUserPreferences: loading,\n });\n }\n\n private colorIsValid(color: IColor): boolean {\n return color\n && color.r !== null\n && color.g !== null\n && color.b !== null\n && color.a !== null;\n };\n\n private getRgbaColor = (): string => {\n return this.colorIsValid(this.state.chosenColorRGBA)\n ? `rgb(${this.state.chosenColorRGBA.r}, ${this.state.chosenColorRGBA.g}, ${this.state.chosenColorRGBA.b}, ${this.state.chosenColorRGBA.a})`\n : `rgb(${0}, ${172}, ${230}, ${0.3})`;\n };\n\n private getActualRgbaColor = (): string => {\n return this.colorIsValid(this.state.chosenActualColorRGBA)\n ? `rgb(${this.state.chosenActualColorRGBA.r}, ${this.state.chosenActualColorRGBA.g}, ${this.state.chosenActualColorRGBA.b}, ${this.state.chosenActualColorRGBA.a})`\n : `rgb(${0}, ${172}, ${230}, ${0.3})`;\n };\n\n private defaultColorChange = (value): void => {\n clearTimeout(this.timeout);\n\n if (value) {\n this.timeout = setTimeout((): void => {\n this.setState({\n chosenColorHex: value.hex, // example - \"#bd10e0\"\n chosenColorRGBA: value.rgb, // example - rgb: {a: 0.64, b: 194, g: 227, r: 80}\n });\n\n const hexColorValue: string = value.hex || \"#00ace6\";\n const opacityValue: number = value.rgb\n ? value.rgb.a\n : this._defaultOpacity;\n\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultColor = hexColorValue;\n userPreferencesCopy.defaultOpacity = opacityValue;\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n }, 500);\n }\n };\n\n private defaultActualColorChange = (value): void => {\n clearTimeout(this.timeout);\n\n if (value) {\n this.timeout = setTimeout((): void => {\n this.setState({\n chosenActualColorHex: value.hex, // example - \"#bd10e0\"\n chosenActualColorRGBA: value.rgb, // example - rgb: {a: 0.64, b: 194, g: 227, r: 80}\n });\n\n const hexColorValue: string = value.hex || \"#00ace6\";\n const opacityValue: number = value.rgb\n ? value.rgb.a\n : this._defaultOpacity;\n\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultActualColor = hexColorValue;\n userPreferencesCopy.defaultActualOpacity = opacityValue;\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n }, 500);\n }\n };\n\n private defaultSizeChange = (event): void => {\n const inputValue = event.target.value; // save it for the setTimeout\n\n switch (typeof inputValue) {\n case \"number\":\n break;\n case \"string\":\n if (inputValue === \"custom\") {\n const customInput: HTMLInputElement = document.querySelector(\n \"#user-preferences-custom-size-input\"\n );\n customInput.value = null;\n }\n break;\n }\n\n const allValues: Array = inputValue.split(\",\");\n\n let inputIsValid = true;\n allValues.forEach((value: string) => {\n // less than 0, greater than 180, contains letters\n if (+value <= 0 || +value >= 180 || /[a-z]/i.test(value)) {\n inputIsValid = false;\n }\n });\n\n this.setState({\n sizeValue: inputValue,\n sizeIsValid: inputIsValid,\n });\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout((): void => {\n if (!inputValue || inputValue.trim().length === 0) {\n const tempValue = \"10\";\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n userPreferencesCopy.defaultSize = tempValue;\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n } else {\n if (inputIsValid) {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n userPreferencesCopy.defaultSize = inputValue;\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n }\n }\n }, 500);\n };\n\n private defaultBorderThicknessChange = (\n thickness: GeographyBorderThickness\n ): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultBorderThicknessXThin = false;\n userPreferencesCopy.defaultBorderThicknessThin = false;\n userPreferencesCopy.defaultBorderThicknessMedium = false;\n userPreferencesCopy.defaultBorderThicknessThick = false;\n\n switch (thickness) {\n case GeographyBorderThickness.XTHIN:\n userPreferencesCopy.defaultBorderThicknessXThin = true;\n break;\n case GeographyBorderThickness.THIN:\n userPreferencesCopy.defaultBorderThicknessThin = true;\n break;\n case GeographyBorderThickness.MEDIUM:\n userPreferencesCopy.defaultBorderThicknessMedium = true;\n break;\n case GeographyBorderThickness.THICK:\n userPreferencesCopy.defaultBorderThicknessThick = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultActualBorderThicknessChange = (\n thickness: GeographyBorderThickness\n ): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultActualBorderThicknessXThin = false;\n userPreferencesCopy.defaultActualBorderThicknessThin = false;\n userPreferencesCopy.defaultActualBorderThicknessMedium = false;\n userPreferencesCopy.defaultActualBorderThicknessThick = false;\n\n switch (thickness) {\n case GeographyBorderThickness.XTHIN:\n userPreferencesCopy.defaultActualBorderThicknessXThin = true;\n break;\n case GeographyBorderThickness.THIN:\n userPreferencesCopy.defaultActualBorderThicknessThin = true;\n break;\n case GeographyBorderThickness.MEDIUM:\n userPreferencesCopy.defaultActualBorderThicknessMedium = true;\n break;\n case GeographyBorderThickness.THICK:\n userPreferencesCopy.defaultActualBorderThicknessThick = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultSiteChange = (value): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n if (userPreferencesCopy.defaultSite === null) {\n userPreferencesCopy.defaultSite = new Store();\n }\n userPreferencesCopy.defaultSite.id = value;\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private setActivityColumnPickerVisiblity = (visible: boolean): void => {\n this.setState({\n activityColumnPickerVisible: visible,\n });\n };\n\n private setContactColumnPickerVisiblity = (visible: boolean): void => {\n this.setState({\n contactColumnPickerVisible: visible,\n });\n };\n\n private contactColumnDefaultsChange = (\n column: CommunityMatchContactColumn,\n event: CheckboxChangeEvent\n ): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n switch (column) {\n case CommunityMatchContactColumn.NAME:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnNameDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnNameDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.TITLE:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnTitleDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnTitleDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.OFFICE_PHONE:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnOfficePhoneDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnOfficePhoneDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.CELL_PHONE:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnCellPhoneDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnCellPhoneDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.EMAIL_ADDRESS:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnEmailAddressDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnEmailAddressDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.ADDED_BY:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnAddedByDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnAddedByDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.ADDRESS:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnAddressDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnAddressDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.LINKEDIN:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnLinkedinDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnLinkedinDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.REGION:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnRegionDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnRegionDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.TIME_ZONE:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnTimeZoneDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnTimeZoneDefaultVisible = false;\n }\n break;\n case CommunityMatchContactColumn.NOTES:\n if (event.target.checked) {\n userPreferencesCopy.contactColumnNotesDefaultVisible = true;\n } else {\n userPreferencesCopy.contactColumnNotesDefaultVisible = false;\n }\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private activityColumnDefaultsChange = (\n column: CommunityMatchActivityColumn,\n event: CheckboxChangeEvent\n ): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n switch (column) {\n case CommunityMatchActivityColumn.NAME:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnNameDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnNameDefaultVisible = false;\n }\n break;\n case CommunityMatchActivityColumn.DATE_CREATED:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnDateCreatedDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnDateCreatedDefaultVisible = false;\n }\n break;\n case CommunityMatchActivityColumn.ACTIVITY_RESULT:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnActivityResultDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnActivityResultDefaultVisible\n = false;\n }\n break;\n case CommunityMatchActivityColumn.NEXT_STEP:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnNextStepDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnNextStepDefaultVisible = false;\n }\n break;\n case CommunityMatchActivityColumn.NOTES:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnNotesDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnNotesDefaultVisible = false;\n }\n break;\n case CommunityMatchActivityColumn.CREATED_BY:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnCreatedByDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnCreatedByDefaultVisible = false;\n }\n break;\n case CommunityMatchActivityColumn.DUE_DATE:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnDueDateDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnDueDateDefaultVisible = false;\n }\n break;\n case CommunityMatchActivityColumn.RATING:\n if (event.target.checked) {\n userPreferencesCopy.activityColumnRatingDefaultVisible = true;\n } else {\n userPreferencesCopy.activityColumnRatingDefaultVisible = false;\n }\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultColorOptionChange = (event: RadioChangeEvent): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n switch (event.target.value) {\n case ColorOptions.AUTO: {\n userPreferencesCopy.autoColorByDefault = true;\n break;\n }\n case ColorOptions.CUSTOM: {\n userPreferencesCopy.autoColorByDefault = false;\n break;\n }\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultActualColorOptionChange = (event: RadioChangeEvent): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n switch (event.target.value) {\n case ColorOptions.AUTO: {\n userPreferencesCopy.autoColorActualByDefault = true;\n break;\n }\n case ColorOptions.CUSTOM: {\n userPreferencesCopy.autoColorActualByDefault = false;\n break;\n }\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultAddToStudyAreaChange = (event: CheckboxChangeEvent): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n if (event.target.checked) {\n userPreferencesCopy.addToStudyAreaByDefault = true;\n } else {\n userPreferencesCopy.addToStudyAreaByDefault = false;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private activateActualDTChange = (event: CheckboxChangeEvent): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n if (event.target.checked) {\n userPreferencesCopy.activateActualDTByDefault = true;\n } else {\n userPreferencesCopy.activateActualDTByDefault = false;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultMeasurementTypeChange = (event: RadioChangeEvent): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.measurementTypeIsMile = false;\n userPreferencesCopy.measurementTypeIsKilometer = false;\n\n switch (event.target.value) {\n case GeographyTypeMeasurement.MILE:\n userPreferencesCopy.measurementTypeIsMile = true;\n break;\n case GeographyTypeMeasurement.KILOMETER:\n userPreferencesCopy.measurementTypeIsKilometer = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultUnitTypeChange = (event: RadioChangeEvent): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultToDriveTime = false;\n userPreferencesCopy.defaultToRing = false;\n\n switch (event.target.value) {\n case GeographyType.DRIVE_TIME:\n userPreferencesCopy.defaultToDriveTime = true;\n break;\n case GeographyType.RING:\n userPreferencesCopy.defaultToRing = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultTerritoryDrawModeChange = (event: RadioChangeEvent): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultTerritoryDrawModeIsFreeDraw = false;\n userPreferencesCopy.defaultTerritoryDrawModeIsGeography = false;\n\n switch (event.target.value) {\n case TerritoryDrawMode.FREE_DRAW:\n userPreferencesCopy.defaultTerritoryDrawModeIsFreeDraw = true;\n break;\n case TerritoryDrawMode.GEOGRAPHY:\n userPreferencesCopy.defaultTerritoryDrawModeIsGeography = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultMatchesAreaChange = (value: SelectValue): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultMatchAreaIsContacts = false;\n userPreferencesCopy.defaultMatchAreaIsMyActivity = false;\n userPreferencesCopy.defaultMatchAreaIsFiles = false;\n\n switch (value) {\n case MatchArea.CONTACTS:\n userPreferencesCopy.defaultMatchAreaIsContacts = true;\n break;\n case MatchArea.MY_ACTIVITY:\n userPreferencesCopy.defaultMatchAreaIsMyActivity = true;\n break;\n case MatchArea.FILES:\n userPreferencesCopy.defaultMatchAreaIsFiles = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultMatchesViewChange = (value: SelectValue): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.defaultMatchViewIsGrid = false;\n userPreferencesCopy.defaultMatchViewIsList = false;\n\n switch (value) {\n case MatchView.GRID:\n userPreferencesCopy.defaultMatchViewIsGrid = true;\n break;\n case MatchView.LIST:\n userPreferencesCopy.defaultMatchViewIsList = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private printActiveItemsLegendChanged = (value: SelectValue): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n switch (value) {\n case PrintLegend.OFF:\n userPreferencesCopy.printDisplayActiveItemsLegend = false;\n break;\n case PrintLegend.ON:\n userPreferencesCopy.printDisplayActiveItemsLegend = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private defaultSearchAreaChangeHandler = (event: RadioChangeEvent) => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n userPreferencesCopy.searchAreaDefaultInternet = false;\n userPreferencesCopy.searchAreaDefaultFiles = false;\n userPreferencesCopy.searchAreaDefaultLocations = false;\n userPreferencesCopy.searchAreaDefaultPushpins = false;\n userPreferencesCopy.searchAreaDefaultTerritories = false;\n\n switch (event.target.value) {\n case SearchArea.INTERNET: {\n userPreferencesCopy.searchAreaDefaultInternet = true;\n break;\n }\n case SearchArea.FILES: {\n userPreferencesCopy.searchAreaDefaultFiles = true;\n break;\n }\n case SearchArea.LOCATIONS: {\n userPreferencesCopy.searchAreaDefaultLocations = true;\n break;\n }\n case SearchArea.PUSHPINS: {\n userPreferencesCopy.searchAreaDefaultPushpins = true;\n break;\n }\n case SearchArea.TERRITORIES: {\n userPreferencesCopy.searchAreaDefaultTerritories = true;\n break;\n }\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private printModeChanged = (value: SelectValue): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n userPreferencesCopy.printFileTypeOutputIsPdf = false;\n userPreferencesCopy.printFileTypeOutputIsPng = false;\n\n switch (value) {\n case PrintFileTypeOutput.PDF:\n userPreferencesCopy.printFileTypeOutputIsPdf = true;\n break;\n case PrintFileTypeOutput.PNG:\n userPreferencesCopy.printFileTypeOutputIsPng = true;\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private toggleCollaboration = (option: CollaborateOptions): void => {\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n\n switch (option) {\n /**\n * I know we could check to see what features they actually have and then only turn those on.\n * But - doing it this way will just be easier, so that when they are given a feature,\n * their settings will already be saved. They can change as desired.\n */\n case CollaborateOptions.ALL:\n if (this.allCollaborateOptionsOn()) {\n // turn them all off\n userPreferencesCopy.collaborateAOIThematics = false;\n userPreferencesCopy.collaborateLocationFilters = false;\n userPreferencesCopy.collaboratePushpins = false;\n userPreferencesCopy.collaborateReportHistory = false;\n userPreferencesCopy.collaborateTerritories = false;\n userPreferencesCopy.collaborateViewReports = false;\n if (this.props.user.company.companyType === CompanyType.COMMUNITY) {\n userPreferencesCopy.collaborateContactActivity = false;\n userPreferencesCopy.collaborateContacts = false;\n userPreferencesCopy.collaborateProspects = false;\n }\n } else {\n // turn them all on\n userPreferencesCopy.collaborateAOIThematics = true;\n userPreferencesCopy.collaborateLocationFilters = true;\n userPreferencesCopy.collaboratePushpins = true;\n userPreferencesCopy.collaborateReportHistory = true;\n userPreferencesCopy.collaborateTerritories = true;\n userPreferencesCopy.collaborateViewReports = true;\n if (this.props.user.company.companyType === CompanyType.COMMUNITY) {\n userPreferencesCopy.collaborateContactActivity = true;\n userPreferencesCopy.collaborateContacts = true;\n userPreferencesCopy.collaborateProspects = true;\n }\n }\n break;\n case CollaborateOptions.AOI_THEMATICS:\n userPreferencesCopy.collaborateAOIThematics\n = !userPreferencesCopy.collaborateAOIThematics;\n break;\n case CollaborateOptions.LOCATION_FILTERS:\n userPreferencesCopy.collaborateLocationFilters\n = !userPreferencesCopy.collaborateLocationFilters;\n break;\n case CollaborateOptions.PUSHPINS:\n userPreferencesCopy.collaboratePushpins\n = !userPreferencesCopy.collaboratePushpins;\n break;\n case CollaborateOptions.REPORT_HISTORY:\n userPreferencesCopy.collaborateReportHistory\n = !userPreferencesCopy.collaborateReportHistory;\n break;\n case CollaborateOptions.TERRITORIES:\n userPreferencesCopy.collaborateTerritories\n = !userPreferencesCopy.collaborateTerritories;\n break;\n case CollaborateOptions.VIEW_REPORTS:\n userPreferencesCopy.collaborateViewReports\n = !userPreferencesCopy.collaborateViewReports;\n break;\n case CollaborateOptions.CONTACT_ACTIVITY:\n userPreferencesCopy.collaborateContactActivity\n = !userPreferencesCopy.collaborateContactActivity;\n break;\n case CollaborateOptions.CONTACTS:\n userPreferencesCopy.collaborateContacts\n = !userPreferencesCopy.collaborateContacts;\n break;\n case CollaborateOptions.PROSPECTS:\n userPreferencesCopy.collaborateProspects\n = !userPreferencesCopy.collaborateProspects;\n break;\n default:\n break;\n }\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n };\n\n private allCollaborateOptionsOn = (): boolean => {\n return (\n this.props.userPreferences.collaborateAOIThematics\n && this.props.userPreferences.collaborateLocationFilters\n && this.props.userPreferences.collaboratePushpins\n && this.props.userPreferences.collaborateReportHistory\n && this.props.userPreferences.collaborateTerritories\n && this.props.userPreferences.collaborateViewReports\n );\n };\n private atLeastOneCollaborateOptionOn = (): boolean => {\n return (\n this.props.userPreferences.collaborateAOIThematics\n || this.props.userPreferences.collaborateLocationFilters\n || this.props.userPreferences.collaboratePushpins\n || this.props.userPreferences.collaborateReportHistory\n || this.props.userPreferences.collaborateTerritories\n || this.props.userPreferences.collaborateViewReports\n );\n };\n\n private defaultAppChange = (app: string): void => {\n this.setState({\n defaultApp: app\n });\n\n const userPreferencesCopy: IUserPreferences = {\n ...this.props.userPreferences,\n };\n userPreferencesCopy.defaultLoginApp = app;\n\n this.setLoadingUserPreferences(true);\n this.props.updateUserPreferences(userPreferencesCopy);\n }\n}\n\nexport default UserPreferences;\n","export enum SearchArea {\n INTERNET,\n FILES,\n LOCATIONS,\n PUSHPINS,\n TERRITORIES,\n}\n","import React from \"react\";\nimport {\n Collapse,\n Radio,\n} from \"antd\";\n\nimport { IUser } from \"../../../../Models/Models\";\nimport { ScoutFeature } from \"../../../../Enums/ScoutFeature\";\nimport { hasFeature } from \"../../../../Actions/Actions\";\n\n/*\n Using this little config to have a single point of data\n*/\nconst radioDefaultAppsConfig = [\n {\n value: \"PRODUCT_SELECTION\",\n text: \"Product Selection Screen\",\n style: {\n display: \"block\"\n },\n disabled: false\n },\n {\n value: \"span\",\n text: \"or launch directly into one of the following applications\",\n style: {\n display: \"block\",\n margin: \"5px 0\"\n }\n },\n {\n name: \"Scout4\",\n value: \"SCOUT\",\n text: \"SCOUT\",\n disabled: false\n },\n {\n name: \"RetailMatchReports\",\n value: \"MATCH\",\n text: \"Match\",\n disabled: false\n },\n {\n name: \"GpsInsights\",\n value: \"MOBILYTICS\",\n text: \"Mobilytics\",\n disabled: false\n },\n {\n name: \"IQ\",\n value: ScoutFeature.IQ,\n text: \"IQ\",\n disabled: false\n },\n {\n name: \"Factor\",\n value: ScoutFeature.Factor,\n text: \"Factor\",\n disabled: false\n },\n {\n text: \"Brand\",\n value: \"BRAND\",\n disabled: true\n },\n {\n text: \"Healthcare\",\n value: \"HEALTHCARE\",\n disabled: true\n },\n {\n text: \"Explore\",\n value: \"EXPLORE\",\n disabled: true\n }\n];\n// As explained above, using the config to generate a list of the values and validate the defaultLoginApp response from getUserPreferences\nexport const radioDefaultAppValues = radioDefaultAppsConfig.map((i) => i.value);\n\ninterface IDefaultLoginApp {\n user: IUser;\n defaultApp: string;\n defaultAppChange: (app: string) => void;\n}\n\nconst DefaultLoginApp = (props: IDefaultLoginApp): JSX.Element => {\n // Generate components from radioDefaultAppsConfig\n const radioComps: JSX.Element[] = [];\n for (const [i, v] of radioDefaultAppsConfig.entries()) {\n // disabled check\n let featureDisabled = v.disabled;\n if (v.name) {\n featureDisabled = !(hasFeature(props.user, ScoutFeature[v.name]));\n }\n\n if (v.value !== \"span\") {\n radioComps.push((\n \n {v.text}\n \n ));\n } else {\n radioComps.push((\n \n {v.text}\n \n ));\n }\n }\n\n return (\n
    \n
    \n Login Options\n
    \n \n \n \n props.defaultAppChange(e.target.value)\n }\n >\n {radioComps}\n \n \n \n
    \n );\n};\n\nexport default DefaultLoginApp;\n","/* eslint-disable react/no-unescaped-entities */\nimport {\n Avatar,\n Button,\n Form,\n Icon,\n Input,\n Modal,\n notification,\n Upload,\n Switch,\n Tooltip,\n} from \"antd\";\nimport { UploadChangeParam } from \"antd/es/upload/interface\";\nimport ImgCrop from \"antd-img-crop\";\nimport React from \"react\";\n\nimport { IUser, IUserProfile } from \"../../../../Models/Models\";\nimport { BuxTooltip } from \"../../../Common/\";\nimport { IOktaMFAFactor } from \"../../../../Models/OktaModels/IOktaMFAFactor\";\nimport MultiFactorModal from \"./MultiFactorModal\";\nimport { featureFlags } from \"../../../../Common/CurrentFeatureFlags\";\nimport TextArea from \"antd/lib/input/TextArea\";\nimport { IUserShareSettings } from \"../../../../Models/IUserShareSettings\";\nimport { topNavHeightPx } from \"../../../../View/Products/Constants/StyleConstants\";\nimport { hasFeature } from \"../../../../Actions/UserActions\";\nimport { ScoutFeature } from \"../../../../Enums/ScoutFeature\";\n\ninterface IUserProfileProps {\n user: IUser;\n userShareSettings: IUserShareSettings;\n allMFAFactors: IOktaMFAFactor[];\n selectedMFAFactorID: string;\n waitingForMFAResponse: boolean;\n mfaResult: string;\n showMfaEnrollmentModal: boolean;\n mfaEnrollmentModalText: string;\n mfaEnrollmentUpdatedThisSession: boolean;\n saveProfileLoading: boolean;\n updateUserProfile: (\n profileUpdateObj: IUserProfile,\n shareSettingsUpdateObj: IUserShareSettings\n ) => void;\n resetPassword: () => void;\n updateUserAvatar: (avatarImg: File) => void;\n deleteUserAvatar: (avatarStr: string) => void;\n updateShareImage: (shareImg: File) => void;\n deleteShareImage: (logoStr: string) => void;\n GetMFAFactors: (oktaUserID: string) => void;\n IssueMFAChallenge: (factor: IOktaMFAFactor) => void;\n IssuePushMFAChallenge: (factor: IOktaMFAFactor) => void;\n setAllMFAFactors: (factors: IOktaMFAFactor[]) => void;\n setSelectedFactorID: (id: string) => void;\n setWaitingForMFAResponse: (waiting: boolean) => void;\n SubmitMFAChallengeResponse: (\n factor: IOktaMFAFactor,\n response: string\n ) => void;\n PollForPushResponse: (factor: IOktaMFAFactor) => void;\n setShowMfaEnrollmentModal: (show: boolean) => void;\n setMfaEnrollmentUpdatedThisSession: (updated: boolean) => void;\n}\n\ninterface IUserProfileState {\n userCopy: IUser;\n userShareSettingsCopy: IUserShareSettings;\n // profile stuff\n userProfileIsValid: boolean;\n usernameValid: boolean;\n firstNameValid: boolean;\n lastNameValid: boolean;\n emailValid: boolean;\n phoneValid: boolean;\n // avatar\n avatarFileList: any[];\n avatarRemoveAreYouSureModalVisible: boolean;\n shareLogoRemoveAreYouSureModalVisible: boolean;\n //MFA\n multifactorEnabled: boolean;\n showMFADisableWarning: boolean;\n showMFAEntryModal: boolean;\n showMFAEnrollmentModal: boolean;\n shareReportLogoList: any[];\n}\n\nclass UserProfile extends React.Component<\n IUserProfileProps,\n IUserProfileState\n> {\n private profileUpdateObj: IUserProfile = {\n userName: null,\n firstName: null,\n lastName: null,\n emailAddress: null,\n phone: null,\n title: null,\n currentPassword: null,\n newPassword: null,\n mfaEnrollUnenroll: null,\n };\n private shareSettingsUpdateObj: IUserShareSettings = {\n disclaimer: null,\n };\n private showUploadListObj: {\n showPreviewIcon: boolean;\n showRemoveIcon: boolean;\n } = {\n showPreviewIcon: false,\n showRemoveIcon: true,\n };\n /**\n *\n */\n constructor(props: IUserProfileProps) {\n super(props);\n\n // set defaults\n this.state = {\n userCopy: { ...this.props.user },\n userShareSettingsCopy: { ...this.props.userShareSettings },\n userProfileIsValid: false,\n usernameValid: true,\n firstNameValid: true,\n lastNameValid: true,\n emailValid: true,\n phoneValid: true,\n avatarFileList: [],\n avatarRemoveAreYouSureModalVisible: false,\n shareLogoRemoveAreYouSureModalVisible: false,\n multifactorEnabled: false,\n showMFADisableWarning: false,\n showMFAEntryModal: false,\n showMFAEnrollmentModal: false,\n shareReportLogoList: [],\n };\n }\n\n public componentDidMount(): void {\n this.setState({ multifactorEnabled: this.userHasMfa(this.props.user) });\n }\n\n public componentDidUpdate(prevProps: IUserProfileProps): void {\n //check if the user changed their first name, last name or email and update intercom if they did\n if (\n this.props.user.firstName !== prevProps.user.firstName\n || this.props.user.lastName !== prevProps.user.lastName\n || this.props.user.email !== prevProps.user.email\n ) {\n (window as any).Intercom(\"update\", {\n name: this.props.user.firstName + \" \" + this.props.user.lastName,\n email: this.props.user.email,\n });\n }\n if (\n this.state.multifactorEnabled === false\n && this.props.mfaEnrollmentUpdatedThisSession\n ) {\n this.props.setMfaEnrollmentUpdatedThisSession(false);\n }\n //reset save button to disabled after successful update\n if (!this.props.saveProfileLoading && prevProps.saveProfileLoading) {\n this.resetProfileForm();\n }\n\n if (this.props.user.shareImage) {\n /** If the user has updated their share image */\n if (!prevProps.user.shareImage) {\n this.setState({\n shareReportLogoList: [],\n });\n }\n } else {\n /** If the user has removed their share image. */\n if (prevProps.user.shareImage) {\n this.setState({\n shareReportLogoList: [],\n });\n }\n }\n }\n\n public render(): JSX.Element {\n\n const hasImageUploadFeature = hasFeature(this.props.user, ScoutFeature.UserSettingsUploadImage);\n const hasMobilyticsPaidFeature = hasFeature(this.props.user, ScoutFeature.MobilyticsPaid);\n\n let avatarUploadButton: JSX.Element = null;\n if (this.state.avatarFileList.length === 0\n && !this.props.user.profileImage) {\n avatarUploadButton = (\n <>\n \n
    Upload
    \n \n );\n } else if (this.props.user.profileImage\n && this.state.avatarFileList.length === 0) {\n avatarUploadButton = (\n \n );\n }\n\n let shareLogoUploadButton: JSX.Element = null;\n if (this.state.shareReportLogoList.length === 0\n && !this.props.user.shareImage) {\n shareLogoUploadButton = (\n <>\n \n
    Upload
    \n \n );\n } else if (this.props.user.shareImage\n && this.state.shareReportLogoList.length === 0) {\n shareLogoUploadButton = (\n \n );\n }\n\n const avatarUploadArea: JSX.Element = featureFlags.DigitalShare.Footer\n ? (\n \n \n {avatarUploadButton}\n \n \n )\n : (\n \n {avatarUploadButton}\n \n );\n\n let shareLogoUploadArea: JSX.Element = null;\n shareLogoUploadArea = hasMobilyticsPaidFeature\n && featureFlags.DigitalShare.Footer\n ? (\n \n \n {shareLogoUploadButton}\n \n \n )\n : (\n \n {shareLogoUploadButton}\n \n );\n\n const userAvatarTrashCan: JSX.Element = this.props.user.profileImage\n && (\n this.toggleAreYouSureRemoveUserAvatar(true)}\n />\n );\n\n const shareLogoTrashCan: JSX.Element = hasMobilyticsPaidFeature\n && this.props.user.shareImage\n && (\n {\n if (!this.props.saveProfileLoading) {\n this.toggleAreYouSureRemoveShareLogo(true);\n }\n }}\n />\n );\n\n const mfaModal = this.props.allMFAFactors\n && this.props.allMFAFactors.length > 0\n && (\n \n );\n\n const mfaEnrollmentModal = (\n \n {this.props.mfaResult === \"ERROR\"\n ? \"Ok\"\n : \"Log out later\"}\n ,\n