{"version":3,"sources":["api/impl/ApiContext.js","api/impl/BaseEndpoint.js","api/impl/Urls.js","api/impl/AppSettingsEndpoint.js","app/util/downloadFile.js","app/Constants.js","api/impl/SiteEndpoint.js","api/impl/ExportEndpoint.js","api/impl/FilterEndpoint.js","lib/map/core/transfomer/index.js","api/impl/GeocodeEndpoint.js","api/impl/LayerEndpoint.js","api/impl/ProfileEndpoint.js","api/impl/SearchEndpoint.js","api/impl/SearchKeyEndpoint.js","api/index.js","app/config/keys.js","app/config/util/calcExtent.js","app/config/validate.js","app/config/index.js","app/config/isAllowDebug.js","app/components/analytics/GoogleAnalytics.js","app/components/dom/MetaTagsUpdater.js","app/components/dom/WindowDocumentTitle.js","lib/base/theme/impl/variables.js","lib/base/theme/impl/icon.js","lib/base/theme/impl/box.js","lib/base/theme/impl/breakpoint.js","lib/base/util/jss.js","lib/base/theme/impl/button.js","lib/base/theme/impl/color.js","lib/base/theme/impl/elevation.js","lib/base/theme/impl/input.js","lib/base/theme/impl/spacing.js","lib/base/theme/impl/typography.js","lib/base/theme/default.js","lib/base/util/propTypes.js","lib/base/text/Text.js","lib/base/text/Paragraph.js","lib/base/text/Link.js","lib/base/text/H1.js","lib/base/text/H2.js","lib/base/text/H3.js","lib/base/text/H4.js","lib/base/text/H5.js","lib/base/text/H6.js","lib/base/button/Button.js","lib/base/basic/Hr.js","lib/base/layout/Box.js","lib/base/layout/flex/Columns.js","lib/base/layout/flex/Column.js","lib/base/layout/flex/Row.js","lib/base/layout/flex/Rows.js","lib/base/transition/FadeInOut.js","app/util/browser.js","lib/base/basic/Modal.js","lib/base/layout/ScrollView.js","app/components/listener/WindowResizeListener.js","app/components/spinner/SpinnerOverlay.js","app/util/react.js","lib/base/table/grid/helper.js","lib/base/table/grid/Cell.js","app/components/icons/fontawesome/icons.js","lib/base/table/grid/FilterHeaderCell.js","lib/base/table/grid/FilterHeader.js","lib/base/table/grid/HorizontalScrollView.js","lib/base/table/grid/Paginator.js","lib/base/table/grid/CheckboxCell.js","lib/base/table/grid/Row.js","lib/base/table/grid/Rows.js","lib/base/table/grid/SortHeaderIcon.js","lib/base/table/grid/SortHeaderCell.js","lib/base/table/grid/SortHeader.js","lib/base/table/DataGrid.js","lib/base/drawer/Overlay.js","app/util/style.js","app/components/form/Select.js","app/components/about/WarehouseStatsContainer.js","app/components/text/HeadingText.js","app/routing/index.js","app/page/map/components/shared/panel/toolbar/buttons/ToolbarButton.js","app/page/map/components/shared/panel/toolbar/buttons/HelpButton.js","app/components/header/Link.js","app/components/header/createNavLink.js","app/components/header/ApplicationMenu.js","app/components/header/Header.js","app/page/base/BaseStandardPage.js","app/page/about/AboutPage.js","app/page/debugger/DebugPage.js","lib/map/core/Map.js","lib/map/core/layer/tile/ArcGISTileLayer.js","lib/map/core/layer/tile/WMSTileLayer.js","lib/map/core/layer/feature/ArcGISPolygonFeatureLayer.js","lib/map/core/layer/feature/ArcGISFeatureLayer.js","store/system/helper.js","lib/map/core/layer/feature/SqlServerLayer.js","lib/map/core/layer/tile/BingMapsTileLayer.js","lib/map/core/layer/tile/XYZLayer.js","lib/map/core/layer/FeaturesLayer.js","lib/map/core/overlay/BasicOverlay.js","lib/map/core/measure/MeasureTool.js","lib/map/index.js","app/util/entities/siteProfile.js","app/util/map.js","store/map/map.actionType.js","store/map/map.action.js","store/profile/profile.actionType.js","store/profile/profile.action.js","app/util/layers.js","app/util/urlParams.js","store/system/system.actionType.js","store/system/system.action.js","app/page/map/components/shared/layer/RootBaseLayer.js","app/page/map/components/shared/layer/marker/Pin.js","app/util/marker.js","app/util/feature.js","app/components/lv/Label.js","app/components/lv/Value.js","app/page/map/components/shared/layer/SiteFeaturesLayer.js","app/page/map-standalone/StandaloneMapPage.js","app/components/spinner/SpinnerPage.js","app/components/loading/PageLoading.js","app/util/format.js","app/page/map/components/shared/panel/ApplicationBuildStamp.js","app/components/touchable/TouchTarget.js","app/page/map/components/shared/panel/criteria/chip/CriteriaChip.js","app/page/map/components/shared/panel/criteria/chip/CurrentCriteriaChips.js","store/export/export.actionType.js","store/export/export.action.js","app/components/list/ListItemBox.js","app/page/map/components/shared/panel/export/ExportType.js","app/page/map/components/shared/panel/export/ExportGroup.js","app/page/map/components/shared/panel/export/ExportGroups.js","app/page/map/components/shared/panel/export/ExportPanel.js","app/components/spinner/SpinnerPanel.js","app/page/map/components/shared/panel/export/ExportContainer.js","app/page/map/components/shared/panel/help/HelpPanel.js","app/page/map/components/shared/panel/help/InfoPanel.js","app/page/map/components/shared/panel/layers/ArcGisLegend.js","app/page/map/components/shared/panel/layers/SqlSpatialLegend.js","app/page/map/components/shared/panel/layers/WMSLegend.js","app/page/map/components/shared/panel/layers/SelectableLayer.js","app/components/basic/Badge.js","app/page/map/components/shared/panel/layers/LayerSwitcher.js","lib/map/core/measure/uom.js","app/page/map/components/shared/panel/measure/MeasurePanel.js","app/page/map/components/shared/panel/results/EmptySiteListPanel.js","store/search/search.actionType.js","store/search/search.action.js","app/page/map/components/shared/panel/results/GeocodeAddressResult.js","app/components/profile/header/SiteNameAndAddress.js","app/page/map/components/shared/panel/results/SiteListItem.js","app/page/map/components/shared/panel/results/SitesListPanel.js","app/page/map/components/desktop/DesktopOmniContent.js","app/page/map/components/shared/panel/toolbar/buttons/ExportButton.js","api/impl/SiteSearchCriteria.js","app/page/map/components/shared/panel/toolbar/buttons/HomeButton.js","app/page/map/components/shared/panel/toolbar/buttons/MapLayersButton.js","app/page/map/components/shared/panel/toolbar/buttons/MeasureButton.js","app/page/map/components/shared/panel/toolbar/buttons/MyLocationButton.js","app/page/map/components/shared/panel/toolbar/UserDeniedGeoLocationModal.js","app/page/map/components/shared/panel/toolbar/Toolbar.js","app/components/form/SuggestSearchInput.js","app/page/map/components/shared/panel/search/SearchInput.js","app/page/map/components/shared/panel/search/ViewResultsButton.js","app/page/map/components/shared/panel/search/LocationlessSitesButton.js","app/page/map/components/desktop/DesktopSearchBar.js","app/components/tabs/Tab.js","app/components/form/Labeled.js","app/components/form/SuggestTextInput.js","app/page/map/components/shared/panel/criteria/attribute/AttributesSearchForm.js","app/page/map/components/shared/panel/criteria/filter/FilterGroup.js","app/page/map/components/shared/panel/criteria/filter/FiltersSearchForm.js","app/page/map/components/shared/panel/criteria/SearchOptionsPanel.js","app/page/map/components/desktop/slideout/SlideOutContainer.js","app/page/map/components/desktop/slideout/SlideOutContainerSearchCriteria.js","app/components/lv/LabelValuePair.js","app/components/profile/chemical/CasLink.js","app/components/profile/chemical/ChemicalMix.js","app/components/profile/chemical/ChemicalsDataGrid.js","app/components/profile/chemical/ChemicalsDataGridContainer.js","app/components/profile/ChemicalsContainer.js","app/util/label.js","app/components/download/DocumentLink.js","app/components/profile/compliance/ComplianceActionsDataGrid.js","app/components/profile/compliance/ComplianceActionsContainer.js","app/components/profile/compliance/component/ComplianceDataSection.js","app/components/profile/compliance/component/ComplianceDataSectionEmpty.js","app/components/profile/compliance/component/ComplianceDataTab.js","app/components/profile/compliance/EvaluationsDataGrid.js","app/components/profile/compliance/EvaluationsContainer.js","app/components/profile/compliance/ViolationsDataGrid.js","app/components/profile/compliance/ViolationsContainer.js","app/components/profile/ComplianceContainer.js","app/components/profile/documents/DocumentLink.js","app/components/profile/documents/DocumentsDataGrid.js","app/components/profile/documents/downloadViaWSL.js","app/components/profile/documents/DownloadSelectionsButton.js","app/components/profile/DocumentsContainer.js","app/util/string.js","app/components/profile/EnvironmentalInterestsDataGrid.js","app/components/profile/EnvironmentalInterestsContainer.js","app/components/profile/GenericContainer.js","app/util/tabs.js","app/components/tabs/Tabs.js","app/components/profile/header/ProfileTabs.js","app/components/panel/SectionPanel.js","app/components/text/HeadingBlockText.js","app/page/map/components/shared/panel/profile/InfoButton.js","app/components/card/Card.js","app/components/panel/None.js","app/components/lv/LabelValueTable.js","app/util/dom.js","app/components/profile/detail/ComponentPager.js","app/components/profile/detail/Affiliates.js","app/components/profile/detail/AlternateIDs.js","app/components/profile/detail/AlternateNames.js","app/components/profile/detail/EnvironmentalInterests.js","app/components/profile/detail/GeoPolitical.js","app/components/profile/detail/IndustryCodes.js","app/components/profile/detail/map/WindowSizeAwareMapContainer.js","app/components/profile/detail/map/MiniMap.js","app/components/profile/ProfileContainer.js","app/page/map/components/shared/layer/metadata/LayerMetadata.js","app/page/map/components/shared/layer/metadata/LayerMetadataContainer.js","app/page/map/components/shared/layer/SitesLayer.js","app/page/map/components/shared/layer/LayerMetadataOverlay.js","app/page/map/components/shared/layer/ReferenceLayers.js","app/components/profile/SiteMapContainer.js","app/page/map/components/shared/panel/profile/SiteProfileDetail.js","app/page/map/components/desktop/slideout/profile/body/SiteProfileDetailBody.js","app/components/form/TextInput.js","app/components/form/ParagraphInput.js","app/util/cookieHelper.js","app/components/modal/ClaimSitesModal.js","app/config/accountRoles.js","app/page/themes/ClaimSite.js","app/components/text/ResourceLabel.js","app/page/map/components/shared/panel/profile/SiteProfileSummary.js","app/page/map/components/desktop/slideout/profile/body/SiteProfileSummaryBody.js","app/page/map/components/desktop/slideout/profile/SlideOutSiteProfileBody.js","app/components/profile/header/ProfilePageLink.js","app/page/map/components/desktop/slideout/profile/header/BaseHeader.js","app/page/map/components/desktop/slideout/profile/header/SiteProfileDetailHeader.js","app/page/map/components/desktop/slideout/profile/header/SiteProfileSummaryHeader.js","app/page/map/components/desktop/slideout/profile/SlideOutSiteProfileHeader.js","app/page/map/components/desktop/slideout/profile/SlideOutSiteProfile.js","app/page/map/components/desktop/slideout/SlideOutContainerSiteProfile.js","app/page/map/components/desktop/DesktopOmniBox.js","app/page/map/components/mobile/button/OnMapButtonLayers.js","app/page/map/components/shared/layer/MyLocationLayer.js","app/page/map/components/shared/layer/SearchedGeolocationLayer.js","app/page/map/components/ConnectedMap.js","app/page/map/components/MapDesktopContainer.js","app/page/map/components/mobile/drawer/isViewing.js","app/page/map/components/mobile/profile/SiteProfileMobile.js","app/page/map/components/mobile/profile/SiteProfileQuickView.js","app/page/map/components/mobile/drawer/DrawerBar.js","app/page/map/components/mobile/drawer/DrawerBlind.js","app/page/map/components/mobile/drawer/BottomDrawerContainer.js","app/page/map/components/mobile/modal/ModalHelp.js","app/page/map/components/mobile/modal/ModalInfo.js","app/page/map/components/mobile/modal/ModalMapLayers.js","app/page/map/components/mobile/modal/ModalSearchCriteria.js","app/page/map/components/mobile/SearchBarMobile.js","app/page/map/components/MapMobileContainer.js","app/page/map/MapPage.js","app/page/not-found/NotFoundPage.js","app/page/profile/ProfilePage.js","app/pdf/map/ReportMap.js","lib/pdf/shared/colors.js","lib/pdf/shared/fonts.js","lib/pdf/shared/typography.js","lib/pdf/detail/document/footer.js","lib/pdf/detail/section/index.js","lib/pdf/detail/document/header.js","lib/pdf/detail/document/page.js","lib/pdf/detail/document/index.js","lib/pdf/detail/table/index.js","app/pdf/lv/Label.js","app/pdf/lv/Value.js","app/pdf/lv/LabelValuePair.js","app/pdf/lv/LabelValueTable.js","app/page/site-print/components/AlternateIDsSection.js","app/page/site-print/components/AlternateNamesSection.js","app/page/site-print/components/EnvironmentalInterests.js","app/page/site-print/components/GeopoliticalSection.js","app/page/site-print/components/SiteAffiliates.js","app/page/site-print/components/SiteCodesSection.js","app/page/site-print/components/SiteProfileDocument.js","app/page/site-print/SiteProfilePDFPage.js","app/page/site/components/SiteProfileContent.js","app/page/site/components/SiteProfileTabs.js","app/page/site/components/SiteProfileHeader.js","app/page/site/components/SiteProfileContainer.js","app/page/site/SiteProfilePage.js","app/polyfill/index.js","app/App.js","store/export/export.reducer.js","store/map/map.reducer.js","store/profile/profile.reducer.js","store/search/search.reducer.js","store/system/system.reducer.js","store/configureStore.js","index.js"],"names":["ApiContext","options","Object","classCallCheck","this","baseUrl","BaseEndpoint","apiContext","path","concat","context","url","fetch","assign","method","headers","Cache-Control","data","Content-Type","body","JSON","stringify","obj","parameters","keys","forEach","key","value","Array","arrayValue","push","subkey","encodeURIComponent","undefined","join","endpoints","AppSettings","GetAppSettings","GetDashboardList","GetDashboardChart","Export","All","DownloadCsv","DownloadZip","Geocode","Address","GeocodeLocal","Profile","GetProfileDetails","GetTier2Reports","GetTier2Chemicals","GetComplianceSummary","GetEnvInterests","GetComplianceEvaluations","GetComplianceViolations","GetComplianceActions","GetGeneric","GetDocuments","GetDocumentsAll","GetDocumentsCount","Layer","GetDatabaseLayers","GetSpatialLayerMetadata","GetFeatureLayerMetadata","LayerPreview","Site","GetSite","Search","ClaimSite","Suggest","SearchKey","Filter","SiteFilterCounts","AppSettingsEndpoint","json","settings","map","v","settingKey","settingValue","_this","esm_get","getPrototypeOf","prototype","call","Urls","then","response","toObject","downloadFileImproved","_x","_downloadFileImproved","apply","arguments","_callee","_ref","fileName","extension","onFetchBegin","onFetchEnd","onFetchError","docFetch","blob","msFileName","link","regenerator_default","a","wrap","_context","prev","next","sent","window","navigator","msSaveOrOpenBlob","msSaveBlob","abrupt","document","createElement","setAttribute","href","URL","createObjectURL","download","dispatchEvent","MouseEvent","bubbles","cancelable","view","t0","stop","downloadFile","_x2","_x3","_x4","_downloadFile","_callee2","_context2","r","status","catch","error","result","console","warn","detailErrorMessage","toast","position","POSITION","BOTTOM_RIGHT","DEFAULT_MAP_PADDING","SEARCH_DELAY_TIME_MS","MEDIA_BREAKPOINT","COLOR_BASE_PRIMARY","REGEX_USER_DENIED_GEOLOCATION_ERR_MESSAGE","ROUTE_SITE_PRINT","ROUTE_SITE_PROFILE","ROUTE_MAP","CACHE_EXPORT_GROUPS","toSearchResult","criteria","features","sites","f","coordZero","geometry","coordinates","coord","coords","fromLonLat","newFeature","Feature","Point","set","setId","id","bbox","props","properties","s","siteFeature","find","feature","get","sourceIdentifier","getId","isCluster","i","length","containsCoordinate","longitude","latitude","range","max","level4","level3","level2","level1","count","size","CLUSTER_RADIUS_PX","setFeatureClusterPixelSize","applyAdvancedCriteria","advanced","extra","term","k","isEmpty","SiteEndpoint","newCriteria","_objectSpread","cryptoObj","crypto","msCrypto","array","randValues","getRandomValues","Uint32Array","addFeature","info","CACHE_FILTER_GROUPS","ExportEndpoint","Promise","resolve","exportTypes","item","exportGroup","filter","index","self","indexOf","g","name","exportName","exportTypeId","displayOrder","exportDescr","exportGroups","ExportEndpoint_objectSpread","search","FilterEndpoint","filters","displayName","label","group","filterGroups","FilterEndpoint_objectSpread","toLonLatExtent","Map","transformExtent","getView","calculateExtent","getSize","Polygon","getExtent","View","toWebMercatorExtent","toWebMercatorCenter","transform","GeocodeEndpoint","address","myLocation","split","x","parseFloat","y","coordinatesDecimal","extent","confidence","entityType","point","reverse","ex","log","searchTerm","locationName","top","includeMetadataInResponse","queryResults","LayerEndpoint","cache","mapInfo","LayerEndpoint_objectSpread","toString","ProfileEndpoint","tier2ReportId","params","page","pageSize","sortBy","isAsc","safeOptions","isViolationsFound","isOpen","isFormal","AbortController","suggestionsAbortController","SearchEndpoint","searchKeyId","abort","signal","SearchKeyEndpoint","parseSearchKeyJson","searchKeys","sk","operatorCode","NSiteClient","configure","profile","appSettings","layer","geocode","site","searchkey","ConfigKeys","APPLICATION_ICON","APPLICATION_INITIALS","APPLICATION_NAME","APPLICATION_BASE_URL","BING_API_KEY","BUILD_BRANCH","BUILD_REVISION","BUILD_TIMESTAMP","CONDITIONALLY_HIDE_ORIG_SYS_ID","EXTENT","GOOGLE_ANALYTICS_KEY","IE_WARNING","INITIAL_GEOMETRY","MAX_ZOOM","MIN_ZOOM","NCORE_APPLICATION_NAME","NCORE_BASE_URL","SHOW_DOCUMENT_COUNT","HIDE_SOURCE_SITE_LINK","SITE_CLUSTER_FILL_COLOR","SITE_CLUSTER_STROKE_COLOR","START_PANEL","SUMMARIZE_EIS","ZOOM_TO_LOCATION_DESKTOP","ZOOM_TO_LOCATION_MOBILE","HEADER_COLOR_BACKGROUND","HEADER_COLOR_TEXT","HEADER_NAVIGATION","META_AUTHOR","META_DESCRIPTION","META_KEYWORDS","META_ROBOT_CONTENT","RECAPTCHA_SITE_KEY","LABEL_COMPLIANCE_EVALUATIONS","LABEL_COMPLIANCE_VIOLATIONS","LABEL_COMPLIANCE_ACTIONS","LABEL_ENVIRONMENTAL_INTERESTS","LABEL_AFFILIATES","LABEL_COMPLIANCE_HAS_VIOLATIONS","LABEL_COMPLIANCE_NO_VIOLATIONS","LABEL_VIOLATIONS_OPEN","LABEL_VIOLATIONS_CLOSED","LABEL_COMPLIANCE_ACTIONS_FORMAL","LABEL_COMPLIANCE_ACTIONS_INFORMAL","LABEL_DOCUMENTS","LABEL_TAB_PROFILE","LABEL_TAB_MAP","LABEL_TAB_COMPLIANCE","LABEL_TAB_DOCUMENTS","LABEL_TAB_CHEMICALS","LABEL_TAB_EI","LABEL_TAB_GENERIC","NCORE_FILE_URL","NCORE_PDF_URL","IS_PRODUCTION","DASHBOARD_STATISTICS","HELP_TEXT","ABOUT_TEXT_LEFT","ABOUT_TEXT_CENTER","DISCLAIMER_TEXT","GEOCODE_STATE_FILTER","GEOCODE_STRATEGY","initialGeometry","GeoJSON","readFeatures","getGeometry","ignoredKeys","validate","configKeys","values","c","setting","reportMissingServerSettings","includes","reportExtraneousServerSettings","convertLabelsToObject","labels","cfgGet","defaultWhenNotExists","config","getApplicationBaseUrl","initialize","fixedSettings","config_objectSpread","calcExtent","all","parse","serialize","getApplicationIcon","whenEmpty","getApplicationInitials","getApplicationName","getNcoreFileUrl","getNcorePdfUrl","getBingApiKey","getBuildBranch","getBuildRevision","getBuildTimestamp","getGoogleAnalyticsKey","getRecaptchaSiteKey","getHideSourceSiteLink","getHeaderColorBackground","getHeaderColorText","getHeaderNavigation","getIeWarning","getInitialGeometry","getLabel","getMetaAuthor","getMetaDescription","getMetaKeywords","getMetaRobotContent","getIsProduction","getMaxZoom","getMinZoom","getNCoreApplicationName","getNCoreBaseUrl","charAt","substring","getReportHeaderImageUrl","getSiteClusterFillColor","getSiteClusterStrokeColor","getStartPanel","isConditionallyHideOrigSysId","isShowDocumentCount","isSummarizeEIs","isZoomToLocationDesktop","isZoomToLocationMobile","isAllowDebug","location","hostname","GoogleAnalytics","possibleConstructorReturn","state","isInitialized","trackerNames","gaInitialize","Config","trackers","trackingId","trim","trackerName","replace","debug","gaOptions","ReactGA","setState","pathname","PureComponent","withRouter","MetaTagsUpdater","updateMetaTags","getElementById","WindowDocumentTitle","title","makeTitle","removeOnUnmount","Component","defaultProps","color","Color","COLOR_GRAY_LIGHT_1","lighten","hex","COLOR_GRAY_LIGHT_2","COLOR_GRAY_LIGHT_3","COLOR_GRAY_LIGHT_4","COLOR_GRAY_LIGHT_5","COLOR_GRAY_LIGHT_6","COLOR_GRAY_DARK_1","darken","COLOR_GRAY_DARK_2","COLOR_GRAY_DARK_3","COLOR_GRAY_DARK_4","COLOR_GRAY_DARK_5","COLOR_GRAY_DARK_6","COLOR_BLUE_LIGHT_1","COLOR_BLUE_LIGHT_2","COLOR_BLUE_LIGHT_3","COLOR_BLUE_LIGHT_4","COLOR_BLUE_LIGHT_5","COLOR_BLUE_LIGHT_6","COLOR_BLUE_DARK_1","COLOR_BLUE_DARK_2","COLOR_BLUE_DARK_3","COLOR_BLUE_DARK_4","COLOR_BLUE_DARK_5","COLOR_BLUE_DARK_6","COLOR_ORANGE_LIGHT_1","COLOR_ORANGE_LIGHT_2","COLOR_ORANGE_LIGHT_3","COLOR_ORANGE_LIGHT_4","COLOR_ORANGE_LIGHT_5","COLOR_ORANGE_LIGHT_6","COLOR_ORANGE_DARK_1","COLOR_ORANGE_DARK_2","COLOR_ORANGE_DARK_3","COLOR_ORANGE_DARK_4","COLOR_ORANGE_DARK_5","COLOR_ORANGE_DARK_6","COLOR_RED_LIGHT_1","COLOR_RED_LIGHT_2","COLOR_RED_LIGHT_3","COLOR_RED_LIGHT_4","COLOR_RED_LIGHT_5","COLOR_RED_LIGHT_6","COLOR_RED_DARK_1","COLOR_RED_DARK_2","COLOR_RED_DARK_3","COLOR_RED_DARK_4","COLOR_RED_DARK_5","COLOR_RED_DARK_6","COLOR_GREEN_LIGHT_1","COLOR_GREEN_LIGHT_2","COLOR_GREEN_LIGHT_3","COLOR_GREEN_LIGHT_4","COLOR_GREEN_LIGHT_5","COLOR_GREEN_LIGHT_6","COLOR_GREEN_DARK_1","COLOR_GREEN_DARK_2","COLOR_GREEN_DARK_3","COLOR_GREEN_DARK_4","COLOR_GREEN_DARK_5","COLOR_GREEN_DARK_6","COLOR_YELLOW_LIGHT_1","COLOR_YELLOW_LIGHT_2","COLOR_YELLOW_LIGHT_3","COLOR_YELLOW_LIGHT_4","COLOR_YELLOW_LIGHT_5","COLOR_YELLOW_LIGHT_6","COLOR_YELLOW_DARK_1","COLOR_YELLOW_DARK_2","COLOR_YELLOW_DARK_3","COLOR_YELLOW_DARK_4","COLOR_YELLOW_DARK_5","COLOR_YELLOW_DARK_6","COLOR_VIOLET_LIGHT_1","COLOR_VIOLET_LIGHT_2","COLOR_VIOLET_LIGHT_3","COLOR_VIOLET_LIGHT_4","COLOR_VIOLET_LIGHT_5","COLOR_VIOLET_LIGHT_6","COLOR_VIOLET_DARK_1","COLOR_VIOLET_DARK_2","COLOR_VIOLET_DARK_3","COLOR_VIOLET_DARK_4","COLOR_VIOLET_DARK_5","COLOR_VIOLET_DARK_6","COLOR_FUSCIA_LIGHT_1","COLOR_FUSCIA_LIGHT_2","COLOR_FUSCIA_LIGHT_3","COLOR_FUSCIA_LIGHT_4","COLOR_FUSCIA_LIGHT_5","COLOR_FUSCIA_LIGHT_6","COLOR_FUSCIA_DARK_1","COLOR_FUSCIA_DARK_2","COLOR_FUSCIA_DARK_3","COLOR_FUSCIA_DARK_4","COLOR_FUSCIA_DARK_5","COLOR_FUSCIA_DARK_6","ELEVATION_SHADOW_1","ELEVATION_SHADOW_2","ELEVATION_SHADOW_3","ELEVATION_SHADOW_4","ELEVATION_SHADOW_5","ELEVATION_SHADOW_6","SPACING_SMALLEST","Math","pow","SPACING_SMALLER","SPACING_SMALL","SPACING_MEDIUM","SPACING_LARGE","SPACING_LARGER","SPACING_LARGEST","BUTTON_DEFAULT_BORDER_COLOR","icon","default","box","backgroundColor","borderWidth","borderColor","min","breakpoints","phone","up","only","tablet","portrait","down","landscape","desktop","px","num","pxXY","jssSize","classes","jssColor","theme","jssColorLookup","colorVariant","base","variant","button","reset","margin","padding","border","font","background","outline","display","fontFamily","letterSpacing","textTransform","borderStyle","height","smallest","GRID_UNIT","fontSize","lineHeight","borderRadius","smaller","small","medium","large","larger","largest","gray","light1","light2","light3","light4","light5","light6","dark1","dark2","dark3","dark4","dark5","dark6","blue","red","green","impl_color","white","black","orange","yellow","violet","fuscia","primary","secondary","danger","success","elevation","shadow1","boxShadow","shadow2","shadow3","shadow4","shadow5","shadow6","input_objectSpread","typography","width","input","_ref2","textAreaMedium","resize","spacing","inset","stretch","squish","stack","core","grid","unit","x1","x2","x3","x4","x5","x6","weight","lightest","lighter","light","normal","heavy","heavier","heaviest","typography_objectSpread","fontWeight","paragraph","maxWidth","paddingBottom","h1","&::first-letter","marginLeft","h2","h3","h4","h5","h6","typographyImpl","breakpoint","inputImpl","PropTypes","oneOf","oneOfType","string","Text","text","className","react_default","renderClassNames","style","children","noselect","nowrap","elipsis","block","caps","bold","italic","underline","injectSheet","Text_objectSpread","userSelect","whiteSpace","overflow","textOverflow","fontStyle","textDecoration","Paragraph","indent","renderClassnames","Paragraph_objectSpread","textIndent","Link","anchor","_this$props","onClick","target","classNames","aria-label","Link_objectSpread","&:hover","cursor","&:focus","&:active","&:visited","H1","H1_objectSpread","H2","H2_objectSpread","H3","H3_objectSpread","H4","H4_objectSpread","H5","H5_objectSpread","H6","H6_objectSpread","Button","handleOnClick","e","disabled","pressed","type","fontColor","bgColor","backgoundColor","isDark","backgroundColorVariantByState","lightBackgoundColorByState","variantKey","Button_objectSpread","transition","&:disabled","& svg","marginRight","PROPS_WITH_CLASSNAMES","Hr","propName","prop","hr","propsAsClassnames","mBottom","mLeft","mRight","mTop","borderTop","marginTop","marginBottom","CHILD_BOX_SELECTOR","Box","inline","visible","ref","containerRef","borderColorVariant","bordered","borderSides","bgColorVariant","pad","pBottom","pLeft","pRight","pTop","textAlign","borderRight","borderBottom","borderLeft","sides","side","paddingTop","paddingRight","paddingLeft","CHILD_COLUMN_SELECTOR","Columns","vAlign","vAlignTop","vAlignCenter","vAlignBottom","vAlignStretch","hAlign","hAlignLeft","hAlignCenter","hAlignRight","hAlignSpaceBetween","hAlignSpaceAround","hAlignSpaceEven","directionReverse","columns","_columns","flexDirection","defineProperty","gutter","alignItems","justifyContent","flexWrap","Column","column","flex","alignSelf","Row","hAlignStretch","row","Rows","vAlignSpaceBetween","vAlignSpaceAround","vAlignSpaceEven","rows","FadeInOut","renderprops","native","items","on","from","opacity","enter","leave","FadeInOut_objectSpread","stiff","duration","clamp","springStyles","div","container","zIndex","isSmallScreen","screenWidth","documentElement","clientWidth","screenHeight","clientHeight","isDesktopScreen","isInternetExplorer","ua","userAgent","msie","parseInt","rv","edge","detectIE","Modal","handleOnClose","bind","assertThisInitialized","nextProps","prevState","nextState","onRequestClose","isFunction","isString","text_Text","Fragment","drawer_Overlay","transition_FadeInOut","desktopContainer","flex_Rows","flex_Row","layout_Box","flex_Columns","flex_Column","renderTitle","text_Link","overflowY","left","right","bottom","ScrollView","handleScroll","onScroll","scrollHeight","scrollTop","onScrollEnd","FUNC_DEBOUNCED_RESIZE","LISTENERS","WindowResizeListener","debounce","handleOnResize","addEventListener","onResize","idx","splice","removeEventListener","windowWidth","innerWidth","windowHeight","innerHeight","listener","React","SpinnerOverlay","_this$props$classes","containerWrapper","centered","xmlns","viewBox","preserveAspectRatio","cx","cy","fill","stroke","strokeWidth","strokeDasharray","attributeName","calcMode","keyTimes","dur","begin","repeatCount","domRect","reactRef","current","getBoundingClientRect","pageCount","total","ceil","hasNextPage","sumColumnWidths","sum","cellBorderStyle","Cell","tabIndex","align","hideBorderBottom","contain","faicon","faQuestion","spin","BaseFontAwesomeIcon","index_es","iconDefaultProps","IconSearch","faSearch","IconEmptyResults","IconClear","faTimes","IconErase","faEraser","IconSpinner","faSpinner","icons_objectSpread","IconChevronUp","faChevronUp","IconChevronDown","faChevronDown","IconChevronLeft","faChevronLeft","IconChevronRight","faChevronRight","IconFilter","faFilter","IconFilters","faSlidersH","IconMapMarker","faMapMarkerAlt","IconPlus","faPlus","IconMinus","faMinus","IconHome","faHome","IconList","faList","IconMyLocation","faCrosshairs","IconMapLayers","faMap","IconRuler","faRuler","IconElipsisV","faEllipsisV","IconFileDownload","faDownload","IconLinkExternal","faExternalLinkAlt","IconNoLocation","faEyeSlash","IconWithLocation","faEye","IconNcore","faEdit","IconPrint","faPrint","IconInfo","faInfoCircle","IconChemical","faFlask","IconCheck","faCheck","IconCME","faClipboardList","IconDocument","faFileAlt","IconSortNone","faSort","IconSortAsc","faSortUp","IconSortDesc","faSortDown","FilterHeaderCell","initialValue","handleOnChange","handleOnClear","callOnChange","debouncedCallOnChange","onChange","event","stopPropagation","onClear","filterIcon","data-icon","icons_IconFilter","clearIcon","icons_IconClear","rest","objectWithoutProperties","grid_Cell","renderInput","renderFilterIcon","renderClearIcon","&:focus + [data-icon=\"filter\"] > span","FilterHeader","FilterHeader_objectSpread","criteriaPropName","criteriaChanged","onCriteriaChange","_this2","toConsumableArray","hasSortSpacer","unshift","isValidElement","Extender","grid_FilterHeaderCell","inputValue","onSortChange","borderCollapse","HorizontalScrollView","horizontalScrollbarHidden","createRef","leftMoreIndicatorRef","rightMoreIndicatorRef","updateScrollbarState","updateScrollIndicators","debounceHandleOnScroll","prevProps","scrollWidth","snapshot","setTimeout","that","requestAnimationFrame","ReactDOM","findDOMNode","scrollbar","scrollLeft","offsetLeft","offsetWidth","moreIndicator","leftMoreIndicator","rightMoreIndicator","WindowResizeListener_WindowResizeListener","overflowX","-webkit-transform","Paginator","handleOnPreviousPage","handleOnNextPage","handleOnBlurPage","handleOnKeyPress","handleOnChangePage","handleOnChangePageSize","stateUpdate","nextPage","pageRequest","onPageChange","Number","isNumber","changePage","nextPageRequest","isPageValueInStateValid","hasPageValueChanged","select","sizes","icons_IconChevronLeft","onBlur","onKeyPress","toLocaleString","icons_IconChevronRight","rangeEnd","renderSelect","renderPaginator","renderCurrentPosition","renderMobile","renderDesktop","Paginator_objectSpread","minWidth","CheckboxCell","inputRef","indeterminate","checked","rowData","vAlignToFlex","isExtenderOpen","handleOnClickExtender","col","colIndex","cellValue","accessor","striped","rowStriped","selections","keyExtractor","onSelect","grid_CheckboxCell","isSelected","rowClassName","cell","subSection","renderSubsection","conditionallyHide","grid_Row","isStriped","isSortActive","colName","SortHeaderIcon","Icon","SortHeaderCell","onClickCell","headerLabel","canSort","renderLabel","grid_SortHeaderIcon","SortHeader","handleOnSortChange","handleOnSelectAll","onSelectAll","isAllSelected","isIndeterminate","selectedIds","dataIds","difference","differenceAB","_this$props2","filtersEnabled","SortHeaderCell_SortHeaderCell","DataGrid","handleOnPageChange","handleOnCriteriaChange","handleOnSelect","handleOnWindowResize","updateWidthState","getNextWidth","onRequestData","cb","_this3","newSelections","d","toAdd","containerRect","columnsWidth","_this$props3","showPaginationBottom","showPaginationTop","loading","spinner_SpinnerOverlay","grid_Paginator","grid_HorizontalScrollView","paginationVisible","grid_SortHeader","enableFiltering","grid_FilterHeader","grid_Rows","-webkit-overflow-scrolling","Overlay","handleOnClickClose","overlay","_len","_key","Select","choices","handleClearValue","containerLayout","labelExtractor","placeholder","canClear","icons_IconChevronDown","icons_IconChevronUp","caret","placeholderText","choice","selected","choiceBoxStyle","invalidBorderStyle","renderPlaceholder","renderCaret","Select_objectSpread","handleOnClickChoice","renderChoice","minHeight","& > *","WarehouseStatsContainer","selection","dashboards","dashboardChart","isLoading","handleOnChangeChart","fetchDashboardChart","nSITE","Api","system","getDashboardChart","err","form_Select","table_DataGrid","HeadingText","cloneElement","active","navigateToPanel","panel","nextPath","history","match","subPanel","navigateToSubPanel","siteId","tab","navigateToSite","_ref3","newPath","navigateCloseSubPanel","_ref4","navigateToMapHome","_ref5","navigateToResults","navigateToResultsDirect","_ref6","navigateToCriteria","navigateToFilters","navigateToSummary","navigateToMobileCardView","navigateToMobileProfileView","navigateToDetail","navigateToDetailTab","toHome","route","makeRouteFunc","ToolbarButton","inverse","circular","HelpButton","isPressed","textOnly","buttons_ToolbarButton","icons_IconInfo","header_Link_objectSpread","createNavLink","navItem","header_Link","ApplicationMenu","isMenuOpen","handleOnClickMenu","handleOnCloseMenu","menuItemColumns","iconColumn","renderMenuItem","buttons_HelpButton","links","icons_IconElipsisV","ApplicationMenu_objectSpread","renderHelpButton","basic_Hr","nav","maxHeight","&:active, &:visited","outlineColor","Header","isShowHamburgerMenu","handleOnClickHamburger","content","component","header","warning","applicationIcon","applicationInitials","bullet","applicationName","mobileOnly","MSInputMethodContext","documentMode","withApplicationLink","src","alt","react","header_ApplicationMenu","Header_objectSpread","hamburger","BaseStandardPage","header_Header","AboutPage","aboutRefLeft","aboutRefCenter","disclaimerRef","fetchData","innerHTML","getDashboardList","WarehouseStatsContainer_WarehouseStatsContainer","text_HeadingText","BaseStandardPage_BaseStandardPage","WindowDocumentTitle_WindowDocumentTitle","renderContent","DebugPage","main_default","displayObjectSize","displayDataTypes","sortKeys","enableClipboard","collapsed","sort","td","renderValue","table","colSpan","colHeader","calculateCenter","coordinate","rotation","getRotation","cosAngle","cos","sinAngle","sin","rotX","rotY","resolution","getResolution","projection","center","minZoom","maxZoom","minResolution","maxResolution","zoom","scaleLine","ScaleLine","units","OLMap","layers","loadTilesWhileInteracting","activeElement","blur","interactive","getInteractions","setActive","updateSize","setTarget","setMap","canFitMap","fitMap","centerMap","setMinResolution","setMaxResolution","setMaxZoom","setMinZoom","paddingUpdated","isPaddingEqual","centerPosition","newCenter","animate","fitOptions","constrainResolution","fit","Children","childElement","ArcGISTileLayer","handleOnTileLoadStart","tileLoadCounter","handleOnTileLoadEnd","onTilesLoadComplete","source","newSource","tileLayer","TileLayer","preload","Infinity","metadata","TileArcGISRestSource","crossOrigin","hidpi","getLayers","setVisible","setSource","removeLayer","random","WMSTileLayer","TileWMS","exceptions","LAYERS","layerName","styles","serverType","ArcGISPolygonFeatureLayer","vectorSource","VectorSource","vectorLayer","VectorLayer","onFeatureStyle","geoJsonFormat","handleOnAddFeature","handleOnCloseOverlay","addFeaturesToState","selectFilter","interactionSelect","condition","click","getFeatures","each","clear","addInteraction","onAddLayer","popuplateLayerFeatures","p","mapBrowserEvent","deselected","onRemoveLayer","fetchFeatureVectors","featureProjection","dataProjection","outFieldArray","metadataOutFields","layerType","kvp","itemTrimmed","FeaturesLayer_FeaturesLayer","handleOnAddLayer","onAddFeature","connect","ArcGISFeatureLayer","esriJsonFormat","EsriJSON","urlShowVal","addFeatures","urlFormatted","isDefaultExtentMyLocation","getMyCurrentLocation","successCallback","errorCallback","geolocation","getCurrentPosition","positionError","enableHighAccuracy","timeout","maximumAge","getMyCurrentLocationExtent","boundingExtent","isValidHexColor","RegExp","test","SqlServerLayer","sqlFeatures","activeFeatures","wktFormat","WKT","formatCriteria","isFetching","boundingBox","featureLayers","getZoom","leftBound","bottomBound","rightBound","topBound","getSpatialObjectsAbortController","getServerSpatialObjects","itemColor","readFeature","geographyWKT","olColor","slice","polygonStyle","Style","Fill","labelText","clusterCount","radius","pointStyle","Stroke","image","Circle","getType","setStyle","floor","BING_MAPS_BASE_TYPES","BING_MAPS_IMAGERY_SETS","imagerySetByBaseType","baseType","BingMapsTileLayer","BingMaps","apiKey","imagerySet","XYZLayer","XYZ","FeaturesLayer","onAfterPopulateFeatures","BasicOverlay","autoPan","autoPanAnimation","offset","setPosition","onClose","setElement","getOverlays","render","onMouseUp","renderBody","MeasureTool","isActive","drawingType","handleKeyup","handleOnDrawStart","handleOnDrawEnd","handleOnDrawGeometryChange","handleClearMeasurement","getInteriorPoint","getCoordinates","LineString","getLastCoordinate","CircleGeom","getCenter","configureDrawInteraction","removeOverlay","measurementOverlay","resetDrawInteraction","removeInteraction","drawInteraction","un","positioning","stopEvent","closer","appendChild","setBody","measurement","enableCloser","onclick","measurePolygon","measureLineString","measureCircle","lineString","getLength","val","convert","sup","polygon","area","getArea","circle","PI","getRadius","Draw","lineDash","onDrawActivated","onDrawDeactivated","removeDrawInteraction","addDrawInteraction","evt","newMeasurementOverlay","addOverlay","sketch","geom","measureGeometry","geometryCoordinates","getElement","setOffset","unByKey","overlays","o","removeFeature","toSiteNameAndAddress","siteProfile","profileFacilityDetail","siteName","facilityName","city","zip","zipCode","getSiteId","getSiteName","centerPositionWhenPanelIsOpen","SEARCH_RESULT_PANEL_WIDTH_PX","mapPadding","MAP_STARTUP_BEGIN","MAP_STARTUP_SUCCESS","MAP_STARTUP_ERROR","MAP_STARTUP_MESSAGE","RESET_MAP","RESET_SEARCH_INPUT","SELECT_MEASURE_TOOL","ZOOM_TO_EXTENT","ZOOM_TO_LOCATION","SET_MY_LOCATION_COORDS","SET_CENTER_ON_POSITION","SEARCH_INPUT_FOCUS_CHANGE","SET_INFO_PANEL_CONTENT","ACTIVE_BASE_LAYER","ACTIVE_REFERENCE_LAYERS","SEARCH_SITES_BEGIN","SEARCH_SITES_SUCCESS","SEARCH_SITES_ERROR","SELECT_SITE","DESELECT_SITE","SKIP_MAP_MOVE_SEARCH_ONCE","MULTIPLE_SITE_SELECT","FETCH_SEARCH_FILTER_COUNT_BEGIN","FETCH_SEARCH_FILTER_COUNT_SUCCESS","FETCH_SEARCH_FILTER_COUNT_ERROR","api","skipMapMoveSearchOnce","isSkip","payload","zoomToCenter","zoomToExtent","selectSite","deselectSite","setMyLocationCoords","lonLat","siteSearchAbortController","searchSitesIfNeeded","dispatch","searchSitesBegin","results","searchSitesSuccess","message","searchSites","searchFilterCountAbortController","searchFilterCountIfNeeded","getSiteFilterCounts","filterCounts","searchFilterCountSuccess","searchFilterCount","LOAD_PROFILE_DETAIL_BEGIN","LOAD_PROFILE_DETAIL_SUCCESS","LOAD_PROFILE_DETAIL_ERROR","FETCH_GENERIC_BEGIN","FETCH_GENERIC_SUCCESS","FETCH_GENERIC_ERROR","loadProfileDetailIfNeeded","getState","detail","getProfileDetails","profileDetail","found","getSiteBySourceIdentifier","loadProfileDetail","fetchGenericIfNeeded","generic","getGeneric","loadGenericSuccess","fetchGeneric","sortByDisplayOrder","layerA","layerB","b","isDefault","isBaseLayer","isNonBaseLayer","findAllBaseLayers","findDefaultBaseLayer","findDefaultReferenceLayer","mode","toLowerCase","getSiteIds","siteIds","getParameterByName","getAppMode","modeName","exec","decodeURIComponent","REPORT_ERROR","startMapSystemIfNeeded","askForPosition","startup","isStarting","dispatchMessage","startMapSystemMessage","reject","startTime","Date","system_action_objectSpread","buffer","getAll","activeBaseLayer","activeReferenceLayers","startMapSystemSuccess","startMapSystem","RootBaseLayer","bingApiKey","ArcGISTileLayer_ArcGISTileLayer","layerUrl","BingMapsTileLayer_BingMapsTileLayer","XYZLayer_XYZLayer","layerKey","Pin","newStyleSelected","fillColor","strokeColor","newStyleNotSelected","isHovered","featureColor","svg","renderToStaticMarkup","Pin_Pin","imgSize","webMercatorExtent","isSiteInCluster","profileToFeatures","profileFeature","isArray","format","geographyWkt","myLocationToFeature","positionFeature","setGeometry","lonLatAsFeature","Label","Value","empty","SiteFeaturesLayer","featuresLayer","featuresLayerRef","sourceColor","alpha","rgb","hexFill","tryColor","hexStroke","featureFillColor","featureOutlineColor","tile","featureStyle","featureName","BasicOverlay_BasicOverlay","overlayTitle","Label_Label","Value_Value","featureType","StandaloneMapPage","handleOnAfterPopulateFeatures","dispatchLoadMapSettings","dispatchFetchProfile","rootBaseLayer","_siteProfile$profileF","lib_map","RootBaseLayer_RootBaseLayer","layer_SiteFeaturesLayer","SpinnerPage","PageLoading","spinner_SpinnerPage","safeFormat","date","pattern","formatDate","ApplicationBuildStamp","isoDateString","isNaN","getTime","formatDateTime","buildBranch","buildRevision","buildTimestamp","prettyDate","buildStamp","TouchTarget","user-select","CriteriaChip","touchTarget","touchable_TouchTarget","onRemove","CurrentCriteriaChips","handleOnAdvanceFormCriteriaRemove","handleOnFiltersFormRemove","handleOnClickAdvancedSearch","handleOnClearCriteria","dispatchSearch","dispatchDeselectSite","CurrentCriteriaChips_objectSpread","executeSearch","filterValue","hasFilterCriteria","hasSiteAttributeCriteria","startCase","toUpperCase","chip_CriteriaChip","chips","renderSiteAttributeCriteriaAsChips","renderSelectedAsChips","hasAdvancedCriteria","renderAll","FETCH_EXPORTGROUPS_BEGIN","FETCH_EXPORTGROUPS_ERROR","FETCH_EXPORTGROUPS_SUCCESS","FETCH_EXPORTCSV_BEGIN","FETCH_EXPORTCSV_ERROR","FETCH_EXPORTCSV_SUCCESS","fetchExportGroupsIfNeeded","exportData","exportTypeGroups","fetchExportGroupsSuccess","fetchCsv","fetchExportCsvBegin","downloadCsv","ListItemBox","clusterHighlight","boxProps","containerInner","@media screen and (min-width: 600px)"," &:hover","ExportType","dispatchFetchCsv","list_ListItemBox","button_Button","icons_IconFileDownload","description","csv","ExportGroup","et","export_ExportType","ExportGroups","ExportPanel","activeExportGroup","exportListSize","element","showExportSelect","ExportGroup_ExportGroup","ExportGroups_ExportGroups","SpinnerPanel","ExportContainer","dispatchFetchExportGroupTypes","csvIsLoading","spinner_SpinnerPanel","ExportPanel_ExportPanel","HelpPanel","helpRef","InfoPanel","infoPanelContent","ArcGisLegend","legend","contentType","imageData","vCenter","SqlSpatialLegend","layerColor","canvas","ctx","getContext","fillStyle","fillRect","strokeRect","dataUrl","toDataURL","legendDesc","WMSLegend","layerLegendUrl","SelectableLayer","ArcGisLegend_ArcGisLegend","WMSLegend_WMSLegend","SqlSpatialLegend_SqlSpatialLegend","onSelectLayer","renderLegend","Badge","LayerSwitcher","referenceLayerGroupsSelected","referenceLayerGroups","handleOnChangeBaseLayer","handleOnChangeReferenceLayer","handleOnChangeReferenceLayerGroup","handleOnClickClear","uniq","groupName","groups","dispatchSelectBaseLayer","currentLayers","l","dispatchSelectReferenceLayers","hasGroupName","basic_Badge","choiceLabel","groupLayers","SelectableLayer_SelectableLayer","selectBaseLayer","FACTOR","round","number","mile","meters","feet","meter","m","kilometer","acre","unitsToArray","uom_objectSpread","areaUnitsAsArray","MeasurePanel","unitChoices","handleOnClickLine","handleOnClickCircle","handleOnClickPolygon","handleOnClickClearMeasurements","handleOnChangeUnit","dispatchSelectMeasureTool","handleOnClickTool","turnOn","tool","dispatchSelectTool","activeMeasureTool","updateUnitsSelect","_this4","onClickClearMeasurements","onUnitChange","isUnitsSelectable","_this5","_this6","text_Paragraph","icons_IconErase","EmptySiteListPanel","icons_IconEmptyResults","FETCH_SEARCH_KEYS_BEGIN","FETCH_SEARCH_KEYS_SUCCESS","FETCH_SEARCH_KEYS_ERROR","FETCH_GEOCODE_ADDRESS_BEGIN","FETCH_GEOCODE_ADDRESS_SUCCESS","FETCH_GEOCODE_ADDRESS_ERROR","FETCH_FILTERS_BEGIN","FETCH_FILTERS_SUCCESS","FETCH_FILTERS_ERROR","CLEAR_SEARCH_GEOCODE","CLEAR_SEARCH_GEOCODE_LOCAL","clearSearchGeocode","fetchSearchKeysIfNeeded","searchKey","fetchSearchKeysSuccess","fetchFiltersIfNeeded","fetchFiltersSuccess","geocodeAddressIfNeeded","shouldSuggest","geocodeAddressBegin","geocodeAddressSuccess","geocodeAddress","GeocodeAddressResult","handleOnClickResult","GeocodeAddressResult_objectSpread","dispatchClickGeocodeResult","dispatchClearGeocodeResult","doOnClick","hover","icons_IconMapMarker","SiteNameAndAddress","_this$props$site","SiteListItem","handleOnClickSite","onClickSite","isLocationLess","isInSelectedCluster","SiteNameAndAddress_SiteNameAndAddress","hasCme","icons_IconCME","hasDocument","icons_IconDocument","hasChemical","icons_IconChemical","icons_IconNoLocation","SitesListPanel","handleOnLoadMoreSites","dispatchSearchSitesDebounced","dispatchSearchSites","isSiteInView","isDirectToDetail","isNavigateToSummary","dispatchSkipMapMoveSearchOnce","dispatchZoomToCenter","siteCount","results_GeocodeAddressResult","EmptySiteListPanel_EmptySiteListPanel","selectedClusterSiteList","selectedSite","SiteListItem_SiteListItem","isMoreSitesToFetch","icons_IconSpinner","abs","shouldTakeWithoutClustering","takeWithoutClustering","DesktopOmniContent","panels","chip_CurrentCriteriaChips","results_SitesListPanel","export","export_ExportContainer","help","HelpPanel_HelpPanel","ApplicationBuildStamp_ApplicationBuildStamp","help_InfoPanel","layers_LayerSwitcher","measure","measure_MeasurePanel","springConfig","velocity","react_router","to","unique","activePanel","Z_INDEX_SEARCH_BAR","ExportButton","handleOnClickExportButton","SiteSearchCriteria","discardLocationlessFeatures","HomeButton","dispatchResetMap","icons_IconHome","MapLayersButton","icons_IconMapLayers","MeasureButton","handleOnClickMeasureButton","icons_IconRuler","MyLocationButton","handleOnClickMyLocation","handleOnPositionSuccess","handleOnPositionError","dispatchSetMyLocation","dispatchZoomToMyLocation","onUserDeniedError","dispatchReportError","icons_IconMyLocation","lonlat","UserDeniedGeoLocationModal","basic_Modal","Toolbar","isModalVisible","handleOnUserDeniedError","handleOnCloseModal","isMobile","UserDeniedGeoLocationModal_UserDeniedGeoLocationModal","buttons_HomeButton","buttons_MyLocationButton","buttons_MeasureButton","buttons_ExportButton","buttons_MapLayersButton","SuggestSearchInput","suggestions","doSuggest","handleOnBlur","debouncedDoSuggest","onRequestSuggestions","scheduleUpdate","getItemProps","highlightedIndex","itemContainer","highlighted","startIndex","lastIndex","formattedItem","downshift_esm","onStateChange","selectedItem","itemToString","downshift","getInputProps","esm","canShowPopper","placement","_ref3$style","menuRoot","renderSuggestions","SuggestSearchInput_objectSpread","SearchInput","debouncedDoSearch","doSearch","handleOnFocusInput","handleOnBlurInput","handleOnChangeTerm","handleOnClickSearchIcon","isResetNeeded","locationGeocode","dispatchZoomToExtent","dispatchSearchInputFocusChange","focus","isAdvancedCriteriaOpen","isSearchInputFocused","form_SuggestSearchInput","geocodeLocal","handleOnRemove","icons_IconFilters","icons_IconSearch","isFocused","searchInputFocusChange","&::placeholder","ViewResultsButton","handleOnClickCount","useGrouping","pluralize","icons_IconList","siteCountPluralized","LocationLessSitesButton","icons_IconWithLocation","DesktopSearchBar","Toolbar_Toolbar","search_SearchInput","search_ViewResultsButton","LocationlessSitesButton","Tab","Labeled","inputContainer","renderView","SuggestTextInput","hasValue","SuggestTextInput_objectSpread","AttributesSearchForm","attributes","AttributesSearchForm_objectSpread","advancedCritera","isEqual","newAttributes","onSubmit","newState","form_Labeled","form_SuggestTextInput","suggest","FilterGroup","hasSelections","handleOnClickTitle","some","totalCount","colOne","countHeader","colThree","renderRow","isChecked","renderRowCountCol","isFilterCountFetching","titleBox","renderHeader","extend","diplayNameComparator","nameLeft","nameRight","FiltersSearchForm","groupFilters","fc","filtersCount","filterGroup","getCount","getFiltersByGroup","filter_FilterGroup","getSelectedByGroup","renderFilterGroups","SearchOptionsPanel","handleShowAttributes","handleShowFilters","handleOnAdvancedFormSubmit","handleOnFiltersFormSelect","handleOnFiltersFormSelectAll","dispatchFetchSearchFilters","dispatchFetchSearchKeys","SearchOptionsPanel_objectSpread","add","advancedForm","isCriteriaActive","searchKeysIsFetching","AttributesSearchForm_AttributesSearchForm","isFiltersActive","filter_FiltersSearchForm","advancedCriteriaCount","filterCount","criteriaTitle","filterTitle","tabs_Tab","renderFormPanel","SlideOutContainer","isOpenFull","startLeft","startWidth","Tweezer","start","end","easing","easeInOutQuad","onWindowResize","forceUpdate","SlideOutContainerSearchCriteria","slideout_SlideOutContainer","criteria_SearchOptionsPanel","LabelValuePair","asValue","lab","hideEmpty","CasLink","mobileUrl","casNumber","ChemicalMix","footer","chemical","chemicalMix","componentPercentage","weightOrVolume","CasLink_CasLink","urlMobile","LabelValuePair_LabelValuePair","isEhs","CommonName","EHSName","ehsName","HazardTypes","hazardTypes","DotHazardClass","dotHazClass","CasNumber","HealthEffects","ChemicalsDataGrid","renderSubSection","detailColumn","ChemicalsDataGrid_CommonName","commonName","ChemicalsDataGrid_EHSName","ChemicalsDataGrid_HazardTypes","tier2HazardLabel","ChemicalsDataGrid_DotHazardClass","ChemicalsDataGrid_CasNumber","ChemicalsDataGrid_HealthEffects","tier2HealthEffectLabel","chemicalMixes","cm","chemical_ChemicalMix","tier2ChemicalMixSeq","renderSubSectionDetail","renderSubSectionChemicalMixes","icons_IconMinus","icons_IconPlus","maxDailyAmountRange","maxDailyAmountUnit","averageDailyAmountRange","averageDailyAmountUnit","daysOnSite","tier2PhysicalStateLabel","tier2ChemicalSeq","ChemicalsDataGridContainer","chemicals","DEFAULT_SORT_BY","handleOnRequestData","getChemicals","pageResponse","chemical_ChemicalsDataGrid","ChemicalsContainer","tier2reports","tier2reportSelected","handleOnChangeReport","getTier2Reports","report","reportPeriod","submissionDate","renderIntro","tier2ReportSeq","chemicalCount","ChemicalsDataGridContainer_ChemicalsDataGridContainer","labelsByKeySentenceForm","labelCapitalized","capitalizeFirstLetter","labelAsSentence","parts","substr","DocumentLink","documents","rel","docName","ComplianceActionsDataGrid","gridColumns","evaluation","action","enfActionDate","programCode","programDesc","evaluationUrl","origSysEnfActionId","enfActionDesc","notes","DocumentLink_DocumentLink","ComplianceActionsContainer","complianceActions","getComplianceActions","ComplianceActionsDataGrid_ComplianceActionsDataGrid","ComplianceDataSection","ComplianceDataSectionEmpty","ComplianceDataTab","activeTab","sections","EvaluationsDataGrid","evaluationDate","origSysEvalId","evaluationDesc","EvaluationsContainer","evaluations","getComplianceEvaluations","violationsFound","EvaluationsDataGrid_EvaluationsDataGrid","ViolationsDataGrid","violation","determinationDate","violationUrl","origSysViolationId","citations","citation","citationUrl","citationNarrative","ViolationsContainer","violations","getComplianceViolations","ViolationsDataGrid_ViolationsDataGrid","COMPLIANCE_TABS","ComplianceContainer","tabs","handleOnClickTab","handleOnChangeTab","getComplianceSummary","complianceSummary","tabData","evaluationSections","isShowTotalEvaluationsOnly","evaluationsCount","evaluationsViolationFoundCount","evaluationsViolationNotFoundCount","violationsSections","isShowTotalViolationsOnly","violationsTotal","violationsOpenCount","violationsClosedCount","actionsSections","isShowTotalComplianceActionsOnly","complianceActionsTotal","complianceActionsFormalCount","complianceActionsInformalCount","renderComplianceEvaluationsPanelTotal","renderComplianceEvaluationsPanelEach","ComplianceDataSectionEmpty_ComplianceDataSectionEmpty","ComplianceDataSection_ComplianceDataSection","EvaluationsContainer_EvaluationsContainer","foundCount","notFoundCount","foundTitle","notFoundTitle","renderViolationsPanelTotal","renderViolationsPanelEach","ViolationsContainer_ViolationsContainer","openCount","closedCount","openTitle","closedTitle","renderComplianceActionsTotal","renderComplianceActionsEach","ComplianceActionsContainer_ComplianceActionsContainer","formalCount","informalCount","formalTitle","informalTitle","component_ComplianceDataTab","isTabActive","renderTabs","renderComplianceEvaluationsPanel","renderViolationsPanel","renderComplianceActions","totalComplianceEvaluations","onClickLink","asyncToGenerator","mark","docUrl","ncoreFileBaseUrl","ncorePdfBaseUrl","hasPdfContent","docId","alert","doc","profileDocumentId","docDate","documents_DocumentLink_DocumentLink","DocumentsDataGrid","urlArchiveId","urlArchive","archiveId","fetchDocumentArchiveId","docs","credentials","Error","downloadViaWSL","_downloadViaWSL","archiveUrl","DownloadSelectionsButton","handleOnDownloadDocs","isDownloading","queryParams","loadDocPdfContent","isButtonDisabled","buttonText","DocumentsContainer","fetchCount","getDocuments","getDocumentsCount","getDocumentsAll","DownloadSelectionsButton_DownloadSelectionsButton","renderSelectAll","renderClearSelections","DocumentsDataGrid_DocumentsDataGrid","isNotBlank","str","isBlank","EnvironmentalInterestsDataGrid","ei","facilityPageUrl","programId","startDate","endDate","typeDesc","EnvironmentalInterestsContainer","parseDescriptionQueryParam","qs","ignoreQueryPrefix","getEnvInterests","EnvironmentalInterestsDataGrid_EnvironmentalInterestsDataGrid","GenericContainer","dispatchLoadGenericData","allTabs","tabCounts","profileLabel","mapLabel","complianceLabel","documentLabel","chemicalLabel","eiLabel","genericLabel","PROFILE_TAB_DETAIL","altId","PROFILE_TAB_MAP","featureCount","PROFILE_TAB_EI","environmentalInterestsCount","PROFILE_TAB_COMPLIANCE","complianceCount","PROFILE_TAB_DOCUMENTS","documentCount","PROFILE_TAB_CHEMICALS","PROFILE_TAB_GENERIC","genericCount","Tabs","t","ProfileTabs","handleOnTabClick","_this$props$match","goTo","currentTab","defaultTab","Tabs_Tabs","SectionPanel","titleSentence","titleLabelKey","heading","padded","HeadingBlockText","InfoButton","dispatchSetInfoPanelContent","infoText","setInfoPanelContent","Card","profile_InfoButton","None","LabelValueTable","None_None","keyFunc","labelFunc","valueFunc","getScrollParent","node","regex","_node","getComputedStyle","getPropertyValue","scroll","HTMLElement","SVGElement","ps","parents","parentNode","scrollingElement","scrollParent","ComponentPager","list","hasPrevious","hasNext","componentRef","handleOnPrevious","handleOnNext","scrollToTop","scrollable","goToPage","showingText","renderPagerButtons","Affiliates","affiliates","card","ComponentPager_ComponentPager","card_Card","affilTypeDesc","LabelValueTable_LabelValueTable","toLabelValueData","entityName","entityTitle","fullAddress","AlternateIDs","aliases","alias","aliasIdTypeDesc","aliasId","AlternateNames","alternateNames","alternateNameTypesLength","altName","aliasType","aliasName","EnvironmentalInterests","handleMoreInfoClick","_ref7","descriptionFilter","navigateToDetailEnvIntTab","environmentalInterests","reduce","arr","minStartDate","maxEndDate","summarize","typeDescLong","toLabelValueDataSummarized","eiStartDate","eiEndDate","lastInspectionDate","startDateDesc","endDateDesc","osDesc","GeoPolitical","facilityGeopolitical","geop","geoPolTypeVisible","geoPolTypeLabel","geoPolValue","IndustryCodes","sicCodes","naicsCodes","sic","sicDesc","naics","naicsDesc","WindowSizeAwareMapContainer","updateMapSize","callUpdateSize","mapCanvas","getElementsByTagName","isCanShowMap","MiniMap","querySelectorAll","touchAction","_this$props$profile$p","baseLayer","map_WindowSizeAwareMapContainer","ProfileContainer","siteProfileDetail","_siteProfileDetail$pr","map_MiniMap","panel_SectionPanel","detail_EnvironmentalInterests","profileEnvInt","detail_Affiliates","profileAffiliate","GeoPolitical_GeoPolitical","AlternateIDs_AlternateIDs","profileAliasId","AlternateNames_AlternateNames","profileAlias","IndustryCodes_IndustryCodes","profileSic","profileNaics","_siteProfileDetail$pr2","HeadingBlockText_HeadingBlockText","LayerMetadata","kv","LayerMetadataContainer","wmsUrl","fetchWMSMetadata","layerMetadataUrl","fetchESRIMEtadata","keyValuePairs","getFeatureMetadata","dbMetadata","remoteData","fieldAliases","getSqlSpatialMetadata","metadata_LayerMetadata","SitesLayer","handleMapMoveEnd","handleOnClickFeature","handleOnHoverFeature","handleSelectFilter","interactionHover","pointerMove","interactionClick","singleClick","multi","hitTolerance","toggleMoveEndListener","siteSelected","isSelectedFeature","isSkipMapMoveSearch","skipMapMoveSearch","mapOrEvent","dispatchResetSkipMapMoveSearchOnce","forceExtentSearchOnce","ADJUSTMENT_FOR_BOTH","adjustment","SEARCH_RESULT_PANEL_MARGIN_PX","calculateSearchExtent","newCriteriaForExtent","onLayerMove","querySelector","classList","remove","newStyleHovered","prevZoom","dispatchMultipleSiteSelect","site1","site2","sourceId","isSharesSourceId","SitesLayer_objectSpread","sitesLayer","clusterSites","LayerMetadataOverlay","layerMetadata","forEachFeatureAtPixel","pixel","forEachLayerAtPixel","getSource","getGetFeatureInfoUrl","INFO_FORMAT","metadata_LayerMetadataContainer","renderOverlayContents","ReferenceLayers","layerUrlShowVal","feature_ArcGISFeatureLayer","WMSTileLayer_WMSTileLayer","feature_SqlServerLayer","feature_ArcGISPolygonFeatureLayer","intersectField","SiteMapContainer","referenceLayers","layer_ReferenceLayers","LayerMetadataOverlay_LayerMetadataOverlay","SiteProfileDetail","ProfileContainer_ProfileContainer","profile_SiteMapContainer","profile_ComplianceContainer","DocumentsContainer_DocumentsContainer","ChemicalsContainer_ChemicalsContainer","profile_GenericContainer","profile_EnvironmentalInterestsContainer","SiteProfileDetailBody","profile_SiteProfileDetail","TextInput","handleOnKeypress","onKeypress","clickable","TextInput_objectSpread","ParagraphInput","textAreaInput","ParagraphInput_objectSpread","getCookieByName","cname","ca","cookie","ClaimSitesModal","headingText","bodyText","AccountRoles","longDescription","userData","handleOnClickClaim","handleOnNameChange","handleOnPhoneChange","handleOnEmailChange","handleOnAccessLevelChange","handleOnReasonChange","onVerify","onExpire","submitForm","captcha","recaptchaSiteKey","claimFormVisible","claimUserEmail","email","claimUserName","claimUserPhone","claimRequestReason","requestReason","claimAccountRoleType","claimEmailIsValid","claimPhoneIsValid","claimNameIsValid","claimReasonIsValid","claimAccessLevelIsValid","accountRoleTypeId","verified","isSubmitting","showModal","isValid","String","formParams","accountId","claimSite","errorMsg","responseStatus","insertUpdateList","modalBgColor","modalBodyText","modalHeadingText","ClaimSitesModal_ClaimSitesModal","icons_IconCheck","form_TextInput","form_ParagraphInput","captchaCont","reaptcha_dist_default","sitekey","ResourceLabel","resourceKey","SiteProfileSummary","handleOnClickCompliance","handleOnClickDocuments","handleOnClickEnvInt","nextTab","eis","ResourceLabel_ResourceLabel","renderEnvironmentalInterestsSummarized","renderEnvironmentalInterestsNotSummarized","renderComplianceRow","evalHasViolY","evalHasViolN","totalComplianceActions","complActTypeF","complActTypeI","totalComplianceViolations","violResolvedN","violResolvedY","totalDocuments","renderDocuments","renderDocumentsRow","renderEvaluations","renderViolations","renderActions","themes_ClaimSite","renderMap","renderTheme","renderEnvironmentalInterests","renderComplianceSummary","renderDocumentsSummary","SiteProfileSummaryBody","profile_SiteProfileSummary","SlideOutSiteProfileBody","showSummary","showDetail","SiteProfileDetailBody_SiteProfileDetailBody","SiteProfileSummaryBody_SiteProfileSummaryBody","ProfilePageLink","print","icons_IconPrint","icons_IconLinkExternal","BaseHeader","SiteProfileDetailHeader","handleOnShowLessInformation","ncoreBaseUrl","showSourceSiteLink","nCoreSiteUrl","header_BaseHeader","header_ProfilePageLink","icons_IconNcore","lowerBarContainer","hCenter","header_ProfileTabs","buttonContainer","SiteProfileSummaryHeader","handleOnShowMoreInformation","hRight","vBottom","SlideOutSiteProfileHeader","header_SiteProfileDetailHeader","header_SiteProfileSummaryHeader","SlideOutSiteProfile","SlideOutSiteProfileHeader_SlideOutSiteProfileHeader","SlideOutSiteProfileBody_SlideOutSiteProfileBody","SlideOutContainerSiteProfile","prevParams","profile_SlideOutSiteProfile","isShowSummary","isShowDetail","slideOutWidth","dispatchCalculateCenterOnPosition","renderContents","DesktopOmniBox","slideOutDimensions","handleWindowResize","updateSlideOutDimensions","rect","slideout_SlideOutContainerSearchCriteria","slideout_SlideOutContainerSiteProfile","DesktopSearchBar_DesktopSearchBar","desktop_DesktopOmniContent","OnMapButtonLayers","OnMapButtonLayers_objectSpread","MyLocationLayer","SearchedGeolocationLayer","ConnectedMap","sitesLayerFeatures","geocodePoint","measureToolUnit","measureToolRef","button_OnMapButtonLayers","layer_SitesLayer","layer_MyLocationLayer","SearchedGeolocationLayer_SearchedGeolocationLayer","MeasureTool_MeasureTool","MapDesktopContainer","handleOnClearMeasurements","handleOnUnitChange","clearMeasurements","desktop_DesktopOmniBox","components_ConnectedMap","onClearMeasurements","isViewingMap","isViewingResults","isViewingProfile","startsWith","isViewingCard","isViewingDetail","SiteProfileMobile","isProfileView","tabContainer","SiteProfileQuickView","onClickExpand","DrawerBar","what","withStyledText","isSearching","renderCount","DrawerBlind","nextPosition","updateContainerLayout","heightOpen","heightClosed","currentPosition","shouldUpdateContainerLayout","animateMobilePanelVisibilityRAF","reversed","pos","frame","BottomDrawerContainer","prevPath","profile_SiteProfileMobile","isSecondaryDrawerOpen","profile_SiteProfileQuickView","DrawerBlind_DrawerBlind","isPrimaryDrawerOpen","getPrimaryDrawerHeightOpen","renderPrimaryDrawerContents","renderSecondaryDrawerContents","drawer_DrawerBar","ModalHelp","ModalInfo","goBack","ModalMapLayers","ModalSearchCriteria","SearchBarMobile","modal_ModalSearchCriteria","modal_ModalMapLayers","modal_ModalHelp","modal_ModalInfo","MapMobileContainer","searchBarMobileRef","mobile_SearchBarMobile","mobileDrawerRow","drawer_BottomDrawerContainer","MapPage","PageLoading_PageLoading","mobileBody","components_MapMobileContainer","desktopBody","components_MapDesktopContainer","application","NotFoundPage","ProfilePage","ReportMap","mapRef","once","dataURL","onMapReady","renderSync","colors","getAttribute","applicationBaseUrl","origin","getFontSrc","Font","register","family","fontSizes","huge","headingSizes","styled","PdfText","_templateObject","semiBold","Root","footer_templateObject","MetadataRow","_templateObject2","PageNumberRow","_templateObject3","Separator","_templateObject4","PageNumber","typography_Text","fixed","pageNumber","totalPages","Footer","meta","footer_PageNumber","sectionMargins","underHeading","RootView","section_templateObject","Heading","section_templateObject2","section_templateObject3","Section","section_Hr","react_pdf_browser_es","header_templateObject","LeftView","header_templateObject2","RightView","header_templateObject3","Logo","Image","header_templateObject4","Title","SubTitle","subtitle","logo","header_RootView","header_Title","header_SubTitle","dataUri","Page","PageComponent","page_templateObject","Body","page_templateObject2","EntityDetailDocument","footerMeta","documentTitle","creator","producer","orientation","document_header_Header","footer_Footer","table_templateObject","table_templateObject2","shade","table_templateObject3","table_templateObject4","Table","table_RootView","table_Header","table_Cell","table_Row","cellText","LabelValuePair_templateObject","LabelValuePair_templateObject2","labelWidth","propTypes","LabelValuePair_templateObject3","valueWidth","LabelValuePair_RootView","LabelValuePair_LeftView","lv_Label_Label","LabelValuePair_RightView","lv_Value_Value","showIfEmpty","lv_LabelValuePair_LabelValuePair","AlternateIDsSection","_PureComponent","inherits","createClass","hasData","halfLength","dataLeftColumn","dataRightColumn","section","root","firstColumn","lv_LabelValueTable_LabelValueTable","StyleSheet","create","AlternateNamesSection","COLUMNS","GeopoliticalSection","geoPoliticalData","formatAddress","cityPretty","addressPretty","SiteAffiliates","SiteCodesSection","leftColumn","rightColumn","PrimaryInfoColumns","SiteProfileDocument_templateObject","PrimaryInfoMainColumn","SiteProfileDocument_templateObject2","PrimaryInfoAside","SiteProfileDocument_templateObject3","SiteProfileDocument","logoUrl","logoWidth","logoHeight","mapDataUrl","mapWidth","mapHeight","facility","detail_document","author","GeopoliticalSection_GeopoliticalSection","SiteCodesSection_SiteCodesSection","AlternateNamesSection_AlternateNamesSection","AlternateIDsSection_AlternateIDsSection","components_EnvironmentalInterests_EnvironmentalInterests","SiteAffiliates_SiteAffiliates","SiteProfilePDFPage","handleOnMapReady","handleOnLogoReady","hasMapBlob","hasHeaderLogo","map_ReportMap","onLoad","SiteProfileDocument_SiteProfileDocument","SiteProfileContent","SiteProfileTabs","SiteProfileHeader","components_SiteProfileTabs","SiteProfileContainer","SiteProfileHeader_SiteProfileHeader","SiteProfileContent_SiteProfileContent","SiteProfilePage","components_SiteProfileContainer","App","MetaTagsUpdater_MetaTagsUpdater","react_toastify","analytics_GoogleAnalytics","exact","SitePdfPage","initialState","idArray","export_reducer_objectSpread","serverSpatialLayer","map_reducer_objectSpread","isMapSelection","profile_reducer_objectSpread","search_reducer_objectSpread","localResults","errors","system_reducer_objectSpread","composeEnhancers","compose","configureStore","reducers","profileReducer","systemReducer","mapReducer","searchReducer","exportReducer","middleware","thunk","rootReducer","combineReducers","configureStore_objectSpread","createStore","applyMiddleware","nSiteApi","getAppSettings","src_objectSpread","store","es","react_router_dom","basename","lib","app_App"],"mappings":"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","file":"static/js/main.d43e0a26.chunk.js","sourcesContent":["/**\r\n * This context has various things all of the api endpoints will need in order execute correctly\r\n * and efficiently.\r\n *\r\n * As of right now it's just a placeholder and may go away - who knows how things will pan out.\r\n *\r\n * Potential things that could go in the context are:\r\n *\r\n * (1) Authentication state\r\n * (2) Cache(s)\r\n * (3) API configuration\r\n * (4) Provide a simple interface to the underlying api infrastructure.\r\n */\r\nexport default class ApiContext {\r\n constructor(options) {\r\n this.baseUrl = options.baseUrl;\r\n //this.baseUrl = 'http://localhost:5000/api';\r\n }\r\n\r\n configure() {\r\n return this;\r\n }\r\n}\r\n","/**\n * Superclass for all logical api endpoints providing common logic used in all endpoint subclasses.\n */\nexport default class BaseEndpoint {\n constructor(apiContext) {\n this.apiContext = apiContext;\n }\n\n /**\n * Returns the api context.\n * @returns {ApiContext} the api context.\n */\n get context() {\n return this.apiContext;\n }\n\n /**\n * Returns the full url path of the endpoint.\n *\n * @param path the relative path to the endpoint.\n * @returns {string} the complete url path.\n */\n url(path) {\n return `${this.context.baseUrl}${path}`;\n }\n\n /**\n * GET\n *\n * @param url the URL to fetch.\n * @param options additional options used to fetch.\n * @returns {Promise}\n */\n get(url, options) {\n return fetch(\n url,\n Object.assign(\n {\n method: \"GET\",\n headers: {\n \"Cache-Control\": \"no-store, no-cache\",\n },\n },\n options || {}\n )\n );\n }\n\n /**\n * POST\n *\n * @param url the URL to POST.\n * @param data params used to post.\n * @returns {Promise}\n */\n post(url, data) {\n return fetch(\n url,\n Object.assign({\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-store, no-cache\",\n },\n body: JSON.stringify(data),\n })\n );\n }\n\n /**\n * Transforms an object to a parameter string to use during URL construction. Each enumerable\n * property on the object is used at the parameter name and the property value is the value. An\n * example: const obj = { foo: 'bar', foo2: 'bar2' } would translate to: \"foo=bar&foo2=bar2\"\n *\n * @param obj the object parameters.\n * @returns {string} parameter string.\n */\n toParameterString(obj) {\n const parameters = [];\n\n Object.keys(obj).forEach(key => {\n const value = obj[key];\n\n if (value instanceof Array) {\n value.forEach(arrayValue => parameters.push(`${key}=${arrayValue}`));\n } else if (!(value instanceof Object)) {\n if (value !== undefined && value !== null) {\n parameters.push(`${key}=${encodeURIComponent(value)}`);\n }\n } else if (value instanceof Object) {\n Object.keys(value).forEach(subkey => {\n if (value[subkey]) {\n parameters.push(`${key}.${subkey}=${encodeURIComponent(value[subkey])}`);\n }\n });\n }\n });\n\n return parameters.join('&');\n }\n}\n","/**\n * Relative path to all the nSITE endpoints in one location.\n */\nconst endpoints = {\n AppSettings: {\n GetAppSettings: `/settings`,\n GetDashboardList: '/settings/dashboardlist',\n GetDashboardChart: '/settings/dashboardchart',\n },\n Export: {\n All: '/export/exportTypes',\n DownloadCsv: '/export/exportcsv',\n DownloadZip: '/export/exportzip',\n },\n Geocode: {\n Address: `/geocode/address`,\n GeocodeLocal: `/geocode/geocodeLocal`,\n },\n Profile: {\n GetProfileDetails: `/profile/details`,\n GetTier2Reports: `/profile/tier2reports`,\n GetTier2Chemicals: `/profile/tier2chemicals`,\n GetComplianceSummary: `/profile/compliance/summary`,\n GetEnvInterests: `/profile/env-interests`,\n GetComplianceEvaluations: `/profile/compliance/evaluations`,\n GetComplianceViolations: `/profile/compliance/violations`,\n GetComplianceActions: `/profile/compliance/actions`,\n GetGeneric: '/profile/generic',\n GetDocuments: '/profile/documents',\n GetDocumentsAll: '/profile/documents/all',\n GetDocumentsCount: '/profile/documents/count',\n },\n Layer: {\n All: `/layer/findall`,\n GetDatabaseLayers: `/layer/getDatabaseLayers`,\n GetSpatialLayerMetadata: `/layer/getSpatialLayerMetadata`,\n GetFeatureLayerMetadata: '/layer/getSqlSpatialFeatureMetadataById',\n LayerPreview: `/layer/layerPreview`,\n },\n Site: {\n GetSite: '/site',\n Search: '/site/sitecluster',\n ClaimSite: '/site/claimsite',\n },\n Search: {\n Suggest: '/search/suggest',\n },\n SearchKey: {\n All: '/searchkeys',\n },\n Filter: {\n All: '/filter/sitefilters',\n SiteFilterCounts: '/filter/sitefiltercounts',\n },\n};\n\nexport default endpoints;\n","import BaseEndpoint from './BaseEndpoint';\nimport Urls from './Urls';\n\n/**\n * AppSettings endpoint.\n */\nexport default class AppSettingsEndpoint extends BaseEndpoint {\n /**\n * Converts the array of settings from the API to an object.\n */\n toObject(json) {\n const settings = {};\n json.map(v => (settings[v.settingKey] = v.settingValue));\n return settings;\n }\n\n /**\n * Returns a promise resolving system app settings data.\n *\n * @returns {Promise} system app settings data.\n */\n getAppSettings() {\n const url = `${super.url(Urls.AppSettings.GetAppSettings)}`;\n\n return super\n .get(url)\n .then(response => response.json())\n .then(json => this.toObject(json));\n }\n\n getDashboardList() {\n const url = `${super.url(Urls.AppSettings.GetDashboardList)}`;\n\n return super.get(url).then(response => response.json());\n }\n\n getDashboardChart(key) {\n const url = `${super.url(Urls.AppSettings.GetDashboardChart)}?key=${key}`;\n\n return super.get(url).then(response => response.json());\n }\n}\n","/**\n * Downloads a file using the fetch api.\n * @param url the url of the file to fetch.\n * @param fileName the name of the file.\n * @param extension the file extension.\n * @param onFetchBegin callback before fetch starts.\n * @param onFetchEnd callback after fetch has completed.\n * @param onFetchError callback when an error occurs.\n * @returns {Promise}\n */\nimport { toast } from \"react-toastify\";\n\nexport async function downloadFileImproved({\n url,\n fileName,\n extension,\n onFetchBegin,\n onFetchEnd,\n onFetchError\n}) {\n try {\n if (onFetchBegin) {\n onFetchBegin();\n }\n\n const docFetch = await fetch(url);\n const blob = await docFetch.blob();\n\n if (onFetchEnd) {\n onFetchEnd();\n }\n\n if (window.navigator.msSaveOrOpenBlob) {\n let msFileName = extension ? fileName + extension : fileName;\n window.navigator.msSaveBlob(blob, msFileName);\n return true;\n }\n\n let link = document.createElement(\"a\");\n link.setAttribute(\"type\", \"hidden\");\n link.href = window.URL.createObjectURL(blob);\n link.download = typeof extension === \"string\" ? fileName + extension : fileName;\n link.dispatchEvent(new MouseEvent(`click`, { bubbles: true, cancelable: true, view: window }));\n return true;\n } catch (e) {\n if (onFetchError) {\n onFetchError(e);\n }\n }\n}\n\nexport async function downloadFile(url, fileName, extension) {\n const blob = await fetch(url)\n .then(r => {\n if (r.status !== 200) {\n throw r.json();\n }\n return r.blob();\n })\n .catch(error => {\n error.then(result => {\n console.warn(result.detailErrorMessage);\n toast.error(result.detailErrorMessage, {\n position: toast.POSITION.BOTTOM_RIGHT\n });\n });\n });\n const data = window.URL.createObjectURL(blob);\n\n if (window.navigator.msSaveOrOpenBlob) {\n let msFileName = extension ? fileName + extension : fileName;\n window.navigator.msSaveBlob(blob, msFileName);\n return true;\n }\n\n let link = document.createElement(\"a\");\n link.setAttribute(\"type\", \"hidden\");\n link.href = data;\n link.download = typeof extension === \"string\" ? fileName + extension : fileName;\n link.dispatchEvent(new MouseEvent(`click`, { bubbles: true, cancelable: true, view: window }));\n return true;\n}\n","/**\n * NO-OP Function\n */\nexport const NO_OP_FUNC = () => ({});\n/**\n * Default padding around around the map - prevent markers from sitting on the edge of the screen.\n */\nexport const DEFAULT_MAP_PADDING = [20, 20, 20, 20];\n/**\n * Screen width to break at for small screens.\n */\nexport const BREAKPOINT_WIDTH_PX = 800;\n/**\n * Screen height to break at for small screens.\n */\nexport const BREAKPOINT_HEIGHT_PX = 600;\n/**\n * Search delay in ms.\n */\nexport const SEARCH_DELAY_TIME_MS = 500;\n/**\n * The @media breakpoint the application will start to render for small screens.\n */\nexport const MEDIA_BREAKPOINT = `screen and (max-width: ${BREAKPOINT_WIDTH_PX}px), screen and (max-height: ${BREAKPOINT_HEIGHT_PX}px)`;\n/**\n * Width of the left search results panel. Especially needed for applying a padding to the search\n * extent.\n */\nexport const SEARCH_RESULT_PANEL_WIDTH_PX = 380;\n/**\n * Padding around the search result panel.\n */\nexport const SEARCH_RESULT_PANEL_MARGIN_PX = 16;\n/**\n * The number of pixels to offset the left extent of the map.\n */\nexport const LEFT_EXTENT_BUFFER_PX =\n SEARCH_RESULT_PANEL_WIDTH_PX + SEARCH_RESULT_PANEL_MARGIN_PX * 2;\n/**\n * The color of a selected marker.\n */\nexport const MARKER_SELECTED_COLOR = 'rgba(227,69,0, 0.9)';\n/**\n * The size of a selected marker.\n */\nexport const MARKER_SELECTED_SIZE = 32;\n/**\n * The size of a selected marker.\n */\nexport const MARKER_UN_SELECTED_SIZE = 30;\n/**\n * Size of cluster feature.\n */\nexport const CLUSTER_RADIUS_PX = 24;\n/**\n * Cluster color when hovered.\n */\nexport const CLUSTER_COLOR_HOVER = 'white';\n/**\n * Z-index - Header menu\n */\nexport const Z_INDEX_MAP_BUTTONS = 50;\n/**\n * Z-index - Mobile drawer primary\n */\nexport const Z_INDEX_MOBILE_DRAWER_BLIND_PRIMARY = 99;\n/**\n * Z-index - Mobile drawer secondary\n */\nexport const Z_INDEX_MOBILE_DRAWER_BLIND_SECONDARY = 101;\n/**\n * Z-index - Search bar\n */\nexport const Z_INDEX_SEARCH_BAR = 100;\n/**\n * Z-index - Header menu\n */\nexport const Z_INDEX_HEADER_MENU = 200;\n/**\n * Icon color on light background\n */\nexport const COLOR_ICON_ON_LIGHT = 'gray';\n/**\n * Icon color on light background\n */\nexport const COLOR_VARIANT_ICON_ON_LIGHT = 'dark3';\n/**\n * Color - Primary base color.\n */\nexport const COLOR_BASE_PRIMARY = 'blue';\n/**\n * Color - Selected list color.\n */\nexport const COLOR_BASE_ORANGE = 'orange';\n/**\n * Color - Primary variant color.\n */\nexport const COLOR_VARIANT_PRIMARY = 'base';\n/**\n * Color - Danger Color\n */\nexport const COLOR_BASE_RED = 'red';\n/**\n * The size of the text seen on the panel\n */\nexport const DEFAULT_TEXT_SIZE_DESCRIPTIONS = 'smaller';\n/**\n * Regex for matching user denied geolocation.\n */\nexport const REGEX_USER_DENIED_GEOLOCATION_ERR_MESSAGE = /user denied geolocation$/i;\n/**\n * Claim Site parameter\n */\nexport const CLAIM_SITE = 'claimsite';\n/**\n * Layer Preview Parameter\n */\nexport const LAYER_PREVIEW = 'previewlayer';\nexport const LAYER_PREVIEW_NAME = 'layerPreviewName';\nexport const LAYER_PREVIEW_TYPE = 'layerPreviewType';\nexport const DATA_HUB = 'datahub';\nexport const DATA_HUB_PREFIX = 'report:';\n/**\n * Routes\n */\nexport const ROUTE_HOME = '/';\nexport const ROUTE_NOT_FOUND = '/not-found';\nexport const ROUTE_ABOUT = '/about';\nexport const ROUTE_DEBUG = '/debug';\nexport const ROUTE_PROFILE = '/profile/:id';\nexport const ROUTE_SITE_PRINT = ['/site/:id/print'];\nexport const ROUTE_SITE_PROFILE = ['/site/:id/:tab', '/site/:id'];\nexport const ROUTE_MAP = [\n '/map/:panel/:subPanel/:id/:tab/:subTab',\n '/map/:panel/:subPanel/:id/:tab',\n '/map/:panel/:subPanel/:id',\n '/map/:panel/:subPanel',\n '/map/:panel',\n '/map',\n];\nexport const ROUTE_STANDALONE_MAP = '/standalone-map/:id';\n","import max from \"lodash/max\";\nimport { containsCoordinate } from \"ol/extent\";\nimport BaseEndpoint from \"./BaseEndpoint\";\nimport Urls from \"./Urls\";\nimport Point from \"ol/geom/Point\";\nimport { fromLonLat } from \"ol/proj\";\nimport Feature from \"ol/Feature\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { CLUSTER_RADIUS_PX } from \"../../app/Constants\";\n\n/**\n * Returns the source identifier from a site feature - a site feature that's seen on\n * the map.\n *\n * @param feature site feature.\n * @returns {*}\n */\nconst sourceIdentifier = feature => {\n if (feature) return feature.get(\"sourceIdentifier\");\n};\n\n/**\n * Logic to figure out the cluster size scaling. Find the max count and then put\n * each feature depending on it's count into the appropriate bucket.\n */\nconst setFeatureClusterPixelSize = features => {\n const maxCount = max(features.map(f => f.get(\"count\")));\n\n const range = maxCount / 5;\n const level4 = range * 4;\n const level3 = range * 3;\n const level2 = range * 2;\n const level1 = range;\n\n features.forEach(f => {\n const count = f.get(\"count\");\n\n if (count) {\n let size = CLUSTER_RADIUS_PX;\n\n if (count >= level4) {\n size = CLUSTER_RADIUS_PX * 1.4;\n } else if (count >= level3) {\n size = CLUSTER_RADIUS_PX * 1.2;\n } else if (count >= level2) {\n size = CLUSTER_RADIUS_PX * 1;\n } else if (count >= level1) {\n size = CLUSTER_RADIUS_PX * 0.9;\n } else {\n size = CLUSTER_RADIUS_PX * 0.8;\n }\n f.set(\"size\", size);\n }\n });\n};\n\n/**\n * Helper to transform the search result (sites & features) from the API to OpenLayers features.\n */\nconst toSearchResult = (json, criteria) => {\n const features = [];\n const sites = [];\n\n json.features.forEach(f => {\n /**\n * If feature doesn't have coordinates skip it, we won't map it\n */\n if (f.geometry.coordinates == null) {\n return;\n }\n let coordZero;\n if (\n f.geometry.coordinates.forEach(coord => {\n if (coord < 1 && coord > -1) {\n coordZero = true;\n return;\n }\n })\n );\n if (coordZero) {\n return;\n }\n /**\n * Create new OpenLayers feature and set the coordinates.\n */\n const coords = fromLonLat(f.geometry.coordinates);\n\n const newFeature = new Feature({\n geometry: new Point(coords)\n });\n\n newFeature.set(\"coords\", coords);\n\n /**\n * Feature ID is a server generated guid.\n */\n newFeature.setId(f.id);\n\n /**\n * Set the bounding box on the feature, when clicked we'll fit the map extent to it.\n */\n if (f.bbox) {\n newFeature.set(\"bbox\", f.bbox);\n }\n\n /**\n * Set each property onto the OL feature instance.\n */\n const props = f.properties;\n Object.keys(props).forEach(key => newFeature.set(key, props[key]));\n\n features.push(newFeature);\n });\n\n /**\n * For each site returned we need to identify the associated feature for easier lookup later on.\n */\n json.sites.forEach(s => {\n const siteFeature = features.find(f => sourceIdentifier(f) === s.sourceIdentifier);\n\n if (siteFeature) {\n /**\n * Site has a matching feature that's not a cluster.\n */\n s.feature = {\n id: siteFeature.getId(),\n coordinates: siteFeature.get(\"coords\"),\n isCluster: false\n };\n } else {\n /**\n * Site is in a cluster so find the first cluster feature and associate them.\n */\n for (let i = 0; i < features.length; i++) {\n const f = features[i];\n if (f.get(\"bbox\") && containsCoordinate(f.get(\"bbox\"), [s.longitude, s.latitude])) {\n s.feature = {\n id: f.getId(),\n coordinates: f.get(\"coords\"),\n isCluster: true\n };\n break;\n }\n }\n }\n\n sites.push(s);\n });\n\n setFeatureClusterPixelSize(features);\n\n return { features, sites, count: json.count, criteria };\n};\n\nconst addFeature = json => {\n let cryptoObj = window.crypto || window.msCrypto;\n let array = [];\n if (window.msCrypto) {\n let randValues = cryptoObj.getRandomValues(new Uint32Array(4));\n for (var i = 0; i < randValues.length; i++) {\n array.push(randValues[i]);\n }\n } else {\n array = cryptoObj.getRandomValues(new Uint32Array(4));\n }\n\n json.feature = {\n id: array.join(\"-\"), // random id is okay\n coordinates: [json.latitude, json.longitude],\n isCluster: false\n };\n return json;\n};\n\n/**\n * Helper to apply the advanced search criteria. The advanced criteria is embedded with the search\n * term as 'site_name: \"Ravine\".\n */\nexport const applyAdvancedCriteria = criteria => {\n if (!criteria.advanced) return criteria;\n\n const extra = [criteria.term];\n\n const pushOntoExtra = key => {\n if (!isEmpty(criteria.advanced[key])) {\n extra.push(encodeURIComponent(`${key}:\"${criteria.advanced[key]}\"`));\n }\n };\n\n Object.keys(criteria.advanced).forEach(k => pushOntoExtra(k));\n\n return Object.assign({}, criteria, { term: extra.join(\" \") });\n};\n\n/**\n * Endpoint to search for sites.\n */\nexport default class SiteEndpoint extends BaseEndpoint {\n /**\n * Returns a promise resolving an array of OpenLayers features.\n *\n * @param criteria the criteria used to search for sites.\n * @param options additional fetch options.\n * @returns {Promise} features\n */\n search(criteria, options) {\n const newCriteria = applyAdvancedCriteria({ ...criteria });\n\n const url = `${super.url(Urls.Site.Search)}?${super.toParameterString(newCriteria)}`;\n\n return super\n .get(url, options)\n .then(response => response.json())\n .then(json => {\n return toSearchResult(json, criteria);\n });\n }\n\n /**\n * Returns a promise resolving a single site\n *\n * @param sourceIdentifier the criteria used to search for sites.\n * @returns {Promise} array of site search results\n */\n getSiteBySourceIdentifier(sourceIdentifier) {\n const url = `${super.url(Urls.Site.GetSite)}?SourceIdentifier=${sourceIdentifier}`;\n return super\n .get(url)\n .then(response => response.json())\n .then(json => {\n return addFeature(json);\n });\n }\n\n /**\n * Posts a request to claim a site via nSite\n */\n claimSite(info) {\n const url = `${super.url(Urls.Site.ClaimSite)}`;\n return super\n .post(url, info)\n .then(response => response.json())\n .then(json => {\n return json;\n });\n }\n}\n","import BaseEndpoint from './BaseEndpoint';\r\nimport Urls from './Urls';\r\nimport { downloadFile } from '../../app/util/downloadFile';\r\nimport { applyAdvancedCriteria } from './SiteEndpoint';\r\n\r\nlet CACHE_EXPORT_GROUPS;\r\n\r\nconst parseJson = exportTypes => {\r\n // const groups = Array.from(new Set(exportTypes.map(f => f.exportGroup)));\r\n const groups = exportTypes\r\n .map(item => item.exportGroup)\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n\r\n return groups.map(g => ({\r\n name: g,\r\n exportTypes: exportTypes\r\n .filter(f => f.exportGroup === g)\r\n .map(f => ({\r\n exportName: f.exportName,\r\n exportTypeId: f.exportTypeId,\r\n displayOrder: f.displayOrder,\r\n exportDescr: f.exportDescr,\r\n })),\r\n }));\r\n};\r\n\r\n/**\r\n * Export endpoint.\r\n */\r\nexport default class ExportEndpoint extends BaseEndpoint {\r\n getAll() {\r\n if (CACHE_EXPORT_GROUPS) {\r\n return Promise.resolve(CACHE_EXPORT_GROUPS);\r\n }\r\n const url = `${super.url(Urls.Export.All)}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => parseJson(json))\r\n .then(exportGroups => {\r\n CACHE_EXPORT_GROUPS = exportGroups;\r\n return exportGroups;\r\n });\r\n }\r\n\r\n async downloadCsv(map, exportTypeId, fileName) {\r\n // add the remaining criteria\r\n const newCriteria = applyAdvancedCriteria({ ...map.search.criteria });\r\n\r\n let url = `${super.url(Urls.Export.DownloadCsv)}?${super.toParameterString(newCriteria)}`;\r\n\r\n url += exportTypeId ? `&exportTypeId=${encodeURIComponent(exportTypeId)}` : '';\r\n url += `&includeFilterCount=false`;\r\n return await downloadFile(url, fileName, '.zip');\r\n }\r\n}\r\n","import BaseEndpoint from \"./BaseEndpoint\";\nimport { applyAdvancedCriteria } from \"./SiteEndpoint\";\nimport Urls from \"./Urls\";\n\nlet CACHE_FILTER_GROUPS;\n\n/**\n * Transforms the filters json response to a format which this application expects. Basically it\n * group the filters based on the displayName property.\n *\n * @param filters json filters response\n * @returns {{name: any, filters: *}[]}\n */\nconst parseJson = filters => {\n //new Set isn't in our polyfill library so I had to take it out\n //const groups = Array.from(new Set(filters.map(f => f.displayName)));\n const groups = filters\n .map(item => item.displayName)\n .filter((value, index, self) => self.indexOf(value) === index);\n\n return groups.map(g => ({\n name: g,\n filters: filters\n .filter(f => f.displayName === g)\n .map(f => ({\n label: f.value,\n value: `${f.displayName}:${f.value}`,\n group: g\n }))\n }));\n};\n\n/**\n * Filter endpoint.\n */\nexport default class FilterEndpoint extends BaseEndpoint {\n /**\n * Returns a promise resolving filter data.\n *\n * @returns {Promise} filter data\n */\n getAll() {\n if (CACHE_FILTER_GROUPS) {\n return Promise.resolve(CACHE_FILTER_GROUPS);\n }\n\n const url = `${super.url(Urls.Filter.All)}`;\n\n return super\n .get(url)\n .then(response => response.json())\n .then(json => parseJson(json))\n .then(filterGroups => {\n CACHE_FILTER_GROUPS = filterGroups;\n return filterGroups;\n });\n }\n\n /**\n * Returns the row count for each filter for the given search criteria.\n *\n * @param criteria the site serarch criteria.\n */\n getSiteFilterCounts(criteria, options) {\n const newCriteria = applyAdvancedCriteria({ ...criteria });\n\n const url = `${super.url(Urls.Filter.SiteFilterCounts)}?${super.toParameterString(\n newCriteria\n )}`;\n\n return super\n .get(url, options)\n .then(response => response.json())\n .then(json => json);\n }\n}\n","import Map from 'ol/Map';\r\nimport View from 'ol/View';\r\nimport Polygon from 'ol/geom/Polygon';\r\nimport { transformExtent, transform } from 'ol/proj';\r\n\r\nexport const extent = obj => {\r\n if (obj instanceof Map) {\r\n return obj.getView().calculateExtent(obj.getSize());\r\n } else if (obj instanceof Polygon) {\r\n return obj.getExtent();\r\n } else if (obj instanceof View) {\r\n return obj.calculateExtent(obj.getSize());\r\n } else if (obj instanceof Array) {\r\n return obj;\r\n }\r\n console.warn(`Unable to return extents`, obj);\r\n};\r\n\r\nexport const toLonLatExtent = obj => {\r\n if (obj instanceof Map) {\r\n return transformExtent(obj.getView().calculateExtent(obj.getSize()), 'EPSG:3857', 'EPSG:4326');\r\n } else if (obj instanceof Polygon) {\r\n return transformExtent(obj.getExtent(), 'EPSG:3857', 'EPSG:4326');\r\n } else if (obj instanceof View) {\r\n return transformExtent(obj.calculateExtent(obj.getSize()), 'EPSG:3857', 'EPSG:4326');\r\n } else if (obj instanceof Array) {\r\n return transformExtent(obj, 'EPSG:3857', 'EPSG:4326');\r\n }\r\n console.warn(`Unable to transform to lon lat extents`, obj);\r\n};\r\n\r\nexport const toWebMercatorExtent = obj => {\r\n if (obj instanceof Map) {\r\n return transformExtent(obj.getView().calculateExtent(obj.getSize()), 'EPSG:4326', 'EPSG:3857');\r\n } else if (obj instanceof Polygon) {\r\n return transformExtent(obj.getExtent(), 'EPSG:4326', 'EPSG:3857');\r\n } else if (obj instanceof View) {\r\n return transformExtent(obj.calculateExtent(obj.getSize()), 'EPSG:4326', 'EPSG:3857');\r\n } else if (obj instanceof Array) {\r\n return transformExtent(obj, 'EPSG:4326', 'EPSG:3857');\r\n }\r\n console.warn(`Unable to transform to web mercator extents`, obj);\r\n};\r\n\r\nexport const toWebMercatorCenter = array => {\r\n return transform(array, 'EPSG:4326', 'EPSG:3857');\r\n};\r\n\r\nexport const toLonLatCenter = array => {\r\n return transform(array, 'EPSG:3857', 'EPSG:4326');\r\n};\r\n","import BaseEndpoint from \"./BaseEndpoint\";\nimport Urls from \"./Urls\";\nimport Point from \"ol/geom/Point\";\nimport { toWebMercatorCenter } from \"../../lib/map/core/transfomer\";\n\n/**\n * Geocode endpoint.\n */\nexport default class GeocodeEndpoint extends BaseEndpoint {\n /**\n * Returns a promise resolving geocode data.\n *\n * @returns {Promise} geocode data.\n */\n address(address, myLocation) {\n if (address === undefined || (typeof address === \"string\" && address.length === 0)) {\n return Promise.resolve({});\n }\n\n let latLonPattern = /(^\\s*-{1}\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?\\s*$)|(^\\s*\\d+(\\.\\d+)?\\s*,\\s*-{1}\\d+(\\.\\d+)?\\s*$)/;\n let isValidLatLon = address.search(latLonPattern) === -1 ? false : true;\n let url;\n if (isValidLatLon && address.split(\",\").length === 2) {\n let coordinates = address.split(\",\");\n let x = parseFloat(coordinates[0]);\n let y = parseFloat(coordinates[1]);\n let coordinatesDecimal = x > y ? [y, x] : [x, y];\n let point = new Point(coordinatesDecimal);\n let extent = point.getExtent();\n return Promise.resolve({\n name: \"Latitude / Longitude Coordinate\",\n confidence: null,\n entityType: null,\n point: coordinatesDecimal.reverse(),\n extent: extent\n });\n } else {\n url = `${super.url(Urls.Geocode.Address)}?address=${address}`;\n }\n\n if (myLocation) {\n url += `&userLocation=${myLocation[0]}&userLocation=${myLocation[1]}`;\n }\n\n return super\n .get(url, {})\n .then(response =>\n response.json().catch(ex => {\n console.log(ex);\n return {};\n })\n )\n .then(json => json);\n }\n\n geocodeLocal(searchTerm) {\n if (searchTerm === undefined || (typeof searchTerm === \"string\" && searchTerm.length === 0)) {\n return Promise.resolve({});\n }\n\n let criteria = {\n locationName: `/%${searchTerm}/%`,\n top: 10,\n includeMetadataInResponse: false\n };\n\n let url = `${super.url(Urls.Geocode.GeocodeLocal)}?${super.toParameterString(criteria)}`;\n\n return super\n .get(url, {})\n .then(response => response.json())\n .then(json => {\n json.queryResults.forEach(item => {\n item.label = item.locationName;\n });\n return json.queryResults;\n });\n }\n}\n","import BaseEndpoint from './BaseEndpoint';\nimport Urls from './Urls';\nimport { applyAdvancedCriteria } from './SiteEndpoint';\n\n/**\n * Layer endpoint.\n */\nexport default class LayerEndpoint extends BaseEndpoint {\n /**\n * Returns a promise resolving layer data.\n *\n * @returns {Promise} layer data\n */\n getAll() {\n const url = `${super.url(Urls.Layer.All)}`;\n return super\n .get(url, { cache: \"reload\" })\n .then(response => response.json())\n .then(json => json);\n }\n\n getSqlSpatialMetadata(mapInfo, options) {\n const newCriteria = applyAdvancedCriteria({ ...mapInfo });\n const url = `${super.url(Urls.Layer.GetSpatialLayerMetadata)}?${super.toParameterString(\n newCriteria\n )}`;\n\n return super\n .get(url, options)\n .then(response => response.json())\n .then(json => json);\n }\n\n getServerSpatialObjects(mapInfo, options) {\n const newCriteria = applyAdvancedCriteria({ ...mapInfo });\n\n const url = `${super.url(Urls.Layer.GetDatabaseLayers)}?${super.toParameterString(\n newCriteria\n )}`;\n\n return super\n .get(url, options)\n .then(response => response.json())\n .then(json => json);\n }\n\n getFeatureMetadata(id) {\n const url = `${super.url(Urls.Layer.GetFeatureLayerMetadata)}?id=${id.toString()}`;\n return super\n .get(url)\n .then(response => response.json())\n .then(json => json);\n }\n}\n","import BaseEndpoint from './BaseEndpoint';\r\nimport Urls from './Urls';\r\n\r\n/**\r\n * Profile endpoint.\r\n */\r\nexport default class ProfileEndpoint extends BaseEndpoint {\r\n /**\r\n * Returns a promise resolving profile detail data.\r\n *\r\n * @param sourceIdentifier the identifier for the lookup\r\n * @returns {Promise} profile detail data\r\n */\r\n getProfileDetails(sourceIdentifier) {\r\n const url = `${super.url(Urls.Profile.GetProfileDetails)}?SourceIdentifier=${sourceIdentifier}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getTier2Reports(sourceIdentifier) {\r\n const url = `${super.url(Urls.Profile.GetTier2Reports)}?SourceIdentifier=${sourceIdentifier}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getChemicals(tier2ReportId, options = {}) {\r\n const params = {\r\n tier2ReportId: tier2ReportId,\r\n page: options.page || 1,\r\n pageSize: options.pageSize || 10,\r\n sortBy: options.sortBy || 'CHEMICAL_NAME',\r\n isAsc: options.isAsc === undefined ? true : options.isAsc,\r\n criteria: options.criteria === undefined ? {} : options.criteria,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetTier2Chemicals)}?${super.toParameterString(params)}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getEnvInterests(sourceIdentifier, options) {\r\n const safeOptions = options || {};\r\n\r\n const params = {\r\n sourceIdentifier: sourceIdentifier,\r\n page: safeOptions.page || 1,\r\n pageSize: safeOptions.pageSize || 10,\r\n sortBy: safeOptions.sortBy || 'TYPE_DESC',\r\n isAsc: safeOptions.isAsc === undefined ? true : safeOptions.isAsc,\r\n criteria: safeOptions.criteria === undefined ? {} : safeOptions.criteria,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetEnvInterests)}?${super.toParameterString(params)}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getComplianceSummary(sourceIdentifier) {\r\n const url = `${super.url(\r\n Urls.Profile.GetComplianceSummary\r\n )}?sourceIdentifier=${sourceIdentifier}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getComplianceEvaluations(sourceIdentifier, options) {\r\n const safeOptions = options || {};\r\n\r\n const params = {\r\n sourceIdentifier: sourceIdentifier,\r\n isViolationsFound: options.isViolationsFound,\r\n page: safeOptions.page || 1,\r\n pageSize: safeOptions.pageSize || 10,\r\n sortBy: safeOptions.sortBy || 'EVALUATION_DATE',\r\n isAsc: safeOptions.isAsc === undefined ? true : safeOptions.isAsc,\r\n criteria: safeOptions.criteria === undefined ? {} : safeOptions.criteria,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetComplianceEvaluations)}?${super.toParameterString(\r\n params\r\n )}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getComplianceViolations(sourceIdentifier, options) {\r\n const safeOptions = options || {};\r\n\r\n const params = {\r\n sourceIdentifier: sourceIdentifier,\r\n isOpen: options.isOpen,\r\n page: safeOptions.page || 1,\r\n pageSize: safeOptions.pageSize || 10,\r\n sortBy: safeOptions.sortBy || 'DETERMINATION_DATE',\r\n isAsc: safeOptions.isAsc === undefined ? true : safeOptions.isAsc,\r\n criteria: safeOptions.criteria === undefined ? {} : safeOptions.criteria,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetComplianceViolations)}?${super.toParameterString(\r\n params\r\n )}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getComplianceActions(sourceIdentifier, options) {\r\n const safeOptions = options || {};\r\n\r\n const params = {\r\n sourceIdentifier: sourceIdentifier,\r\n isFormal: options.isFormal,\r\n page: safeOptions.page || 1,\r\n pageSize: safeOptions.pageSize || 10,\r\n sortBy: safeOptions.sortBy || 'ENF_ACTION_DATE',\r\n isAsc: safeOptions.isAsc === undefined ? true : safeOptions.isAsc,\r\n criteria: safeOptions.criteria === undefined ? {} : safeOptions.criteria,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetComplianceActions)}?${super.toParameterString(\r\n params\r\n )}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getDocuments(sourceIdentifier, options = {}) {\r\n const params = {\r\n sourceIdentifier: sourceIdentifier,\r\n page: options.page || 1,\r\n pageSize: options.pageSize || 10,\r\n sortBy: options.sortBy || 'DOC_DATE',\r\n isAsc: options.isAsc === undefined ? true : options.isAsc,\r\n criteria: options.criteria === undefined ? {} : options.criteria,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetDocuments)}?${super.toParameterString(params)}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getDocumentsCount(sourceIdentifier) {\r\n const params = {\r\n sourceIdentifier: sourceIdentifier,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetDocumentsCount)}?${super.toParameterString(params)}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getDocumentsAll(sourceIdentifier) {\r\n const params = {\r\n sourceIdentifier: sourceIdentifier,\r\n };\r\n\r\n const url = `${super.url(Urls.Profile.GetDocumentsAll)}?${super.toParameterString(params)}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n\r\n getGeneric(sourceIdentifier) {\r\n const url = `${super.url(Urls.Profile.GetGeneric)}?SourceIdentifier=${sourceIdentifier}`;\r\n\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n}\r\n","import BaseEndpoint from './BaseEndpoint';\r\nimport Urls from './Urls';\r\n\r\n/**\r\n * Get a reference to the AbortController class.\r\n */\r\nconst AbortController = window.AbortController;\r\nlet suggestionsAbortController = new AbortController();\r\n\r\n/**\r\n * Search endpoint.\r\n */\r\nexport default class SearchEndpoint extends BaseEndpoint {\r\n /**\r\n * Returns a promise resolving suggestions.\r\n *\r\n * @returns {Promise} suggestions\r\n */\r\n suggest(searchKeyId, term) {\r\n suggestionsAbortController.abort();\r\n suggestionsAbortController = new AbortController();\r\n\r\n const url = `${super.url(Urls.Search.Suggest)}?${super.toParameterString({\r\n key: searchKeyId,\r\n term: term,\r\n })}`;\r\n\r\n return super\r\n .get(url, { signal: suggestionsAbortController.signal })\r\n .then(response => response.json())\r\n .then(json => json);\r\n }\r\n}\r\n","import BaseEndpoint from './BaseEndpoint';\r\nimport Urls from './Urls';\r\n\r\n/**\r\n * Searchkey endpoint.\r\n */\r\nexport default class SearchKeyEndpoint extends BaseEndpoint {\r\n /**\r\n * Returns a promise resolving search key data.\r\n *\r\n * @returns {Promise} search key data\r\n */\r\n getAll() {\r\n const url = `${super.url(Urls.SearchKey.All)}`;\r\n\r\n /**\r\n * TODO Can we cache the data?\r\n */\r\n return super\r\n .get(url)\r\n .then(response => response.json())\r\n .then(json => this.parseSearchKeyJson(json));\r\n }\r\n\r\n parseSearchKeyJson(searchKeys) {\r\n return searchKeys.map(sk => ({\r\n id: sk.searchKeyId,\r\n key: sk.operatorCode,\r\n name: sk.displayName,\r\n }));\r\n }\r\n}\r\n","import ApiContext from './impl/ApiContext';\r\nimport AppSettingsEndpoint from './impl/AppSettingsEndpoint';\r\nimport ExportEndpoint from './impl/ExportEndpoint';\r\nimport FilterEndpoint from './impl/FilterEndpoint';\r\nimport GeocodeEndpoint from './impl/GeocodeEndpoint';\r\nimport LayerEndpoint from './impl/LayerEndpoint';\r\nimport ProfileEndpoint from './impl/ProfileEndpoint';\r\nimport SearchEndpoint from './impl/SearchEndpoint';\r\nimport SearchKeyEndpoint from './impl/SearchKeyEndpoint';\r\nimport SiteEndpoint from './impl/SiteEndpoint';\r\n\r\n/**\r\n * nSITE Javascript Client.\r\n */\r\nclass NSiteClient {\r\n constructor(options) {\r\n /**\r\n * The API context.\r\n */\r\n this.apiContext = new ApiContext({\r\n baseUrl: options.baseUrl,\r\n }).configure();\r\n\r\n /**\r\n * Endpoint cache - this is only necessary if the construction of endpoints are expensive.\r\n */\r\n this.endpoints = {\r\n profile: undefined,\r\n appSettings: undefined,\r\n layer: undefined,\r\n };\r\n }\r\n\r\n get geocode() {\r\n if (!this.endpoints.geocode) {\r\n this.endpoints.geocode = new GeocodeEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.geocode;\r\n }\r\n\r\n get profile() {\r\n if (!this.endpoints.profile) {\r\n this.endpoints.profile = new ProfileEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.profile;\r\n }\r\n\r\n get system() {\r\n if (!this.endpoints.appSettings) {\r\n this.endpoints.appSettings = new AppSettingsEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.appSettings;\r\n }\r\n\r\n get layer() {\r\n if (!this.endpoints.layer) {\r\n this.endpoints.layer = new LayerEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.layer;\r\n }\r\n\r\n get site() {\r\n if (!this.endpoints.site) {\r\n this.endpoints.site = new SiteEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.site;\r\n }\r\n\r\n get search() {\r\n if (!this.endpoints.search) {\r\n this.endpoints.search = new SearchEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.search;\r\n }\r\n\r\n get searchKey() {\r\n if (!this.endpoints.searchkey) {\r\n this.endpoints.searchkey = new SearchKeyEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.searchkey;\r\n }\r\n\r\n get filter() {\r\n if (!this.endpoints.filter) {\r\n this.endpoints.filter = new FilterEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.filter;\r\n }\r\n\r\n get exportGroups() {\r\n if (!this.endpoints.exportGroups) {\r\n this.endpoints.exportGroups = new ExportEndpoint(this.apiContext);\r\n }\r\n return this.endpoints.exportGroups;\r\n }\r\n}\r\n\r\nexport default NSiteClient;\r\n","/**\n * Config keys all in one place.\n */\nconst ConfigKeys = {\n APPLICATION_ICON: \"applicationIcon\",\n APPLICATION_INITIALS: \"applicationInitials\",\n APPLICATION_NAME: \"applicationName\",\n APPLICATION_BASE_URL: \"applicationBaseUrl\",\n BING_API_KEY: \"bingApiKey\",\n BUILD_BRANCH: \"buildBranch\",\n BUILD_REVISION: \"buildRevision\",\n BUILD_TIMESTAMP: \"buildTimestamp\",\n CONDITIONALLY_HIDE_ORIG_SYS_ID: \"conditionallyHideOrigSysId\",\n EXTENT: \"extent\",\n GOOGLE_ANALYTICS_KEY: \"googleAnalyticsKey\",\n IE_WARNING: \"ie11Warning\",\n INITIAL_GEOMETRY: \"initialGeometry\",\n MAX_ZOOM: \"maxZoom\",\n MIN_ZOOM: \"minZoom\",\n NCORE_APPLICATION_NAME: \"ncoreAppName\",\n NCORE_BASE_URL: \"ncoreBaseUrl\",\n SHOW_DOCUMENT_COUNT: \"showDocumentCount\",\n HIDE_SOURCE_SITE_LINK: \"hideSourceSiteLink\",\n SITE_CLUSTER_FILL_COLOR: \"siteClusterFillColor\",\n SITE_CLUSTER_STROKE_COLOR: \"siteClusterStrokeColor\",\n START_PANEL: \"startPanel\",\n SUMMARIZE_EIS: \"summarizeEIs\",\n ZOOM_TO_LOCATION_DESKTOP: \"zoomToLocDesktop\",\n ZOOM_TO_LOCATION_MOBILE: \"zoomToLocMobile\",\n HEADER_COLOR_BACKGROUND: \"header.color.background\",\n HEADER_COLOR_TEXT: \"header.color.text\",\n HEADER_NAVIGATION: \"header.navigation\",\n META_AUTHOR: \"metaAuthor\",\n META_DESCRIPTION: \"metaDescription\",\n META_KEYWORDS: \"metaKeywords\",\n META_ROBOT_CONTENT: \"metaRobotContent\",\n RECAPTCHA_SITE_KEY: \"recaptchaSiteKey\",\n LABEL_COMPLIANCE_EVALUATIONS: \"labels.compliance_evaluations\",\n LABEL_COMPLIANCE_VIOLATIONS: \"labels.compliance_violations\",\n LABEL_COMPLIANCE_ACTIONS: \"labels.compliance_actions\",\n LABEL_ENVIRONMENTAL_INTERESTS: \"labels.environmental_interests\",\n LABEL_AFFILIATES: \"labels.affiliates\",\n LABEL_COMPLIANCE_HAS_VIOLATIONS: \"labels.compliance_has_violations\",\n LABEL_COMPLIANCE_NO_VIOLATIONS: \"labels.compliance_no_violations\",\n LABEL_VIOLATIONS_OPEN: \"labels.violations_open\",\n LABEL_VIOLATIONS_CLOSED: \"labels.violations_closed\",\n LABEL_COMPLIANCE_ACTIONS_FORMAL: \"labels.compliance_formal\",\n LABEL_COMPLIANCE_ACTIONS_INFORMAL: \"labels.compliance_informal\",\n LABEL_DOCUMENTS: \"labels.documents\",\n LABEL_TAB_PROFILE: \"labels.profile_tab\",\n LABEL_TAB_MAP: \"labels.map_tab\",\n LABEL_TAB_COMPLIANCE: \"labels.compliance_tab\",\n LABEL_TAB_DOCUMENTS: \"labels.document_tab\",\n LABEL_TAB_CHEMICALS: \"labels.chemical_tab\",\n LABEL_TAB_EI: \"labels.ei_tab\",\n LABEL_TAB_GENERIC: \"labels.generic_tab\",\n NCORE_FILE_URL: \"ncoreDownloadDocUrl\",\n NCORE_PDF_URL: \"ncoreDownloadPdfUrl\",\n IS_PRODUCTION: \"isProduction\",\n\n /**\n * These keys are only used on the server side.\n *\n * See: DbAppSettingKey.cs\n */\n DASHBOARD_STATISTICS: \"dashboardStatistics\",\n HELP_TEXT: \"helpText\",\n ABOUT_TEXT_LEFT: \"aboutTextLeft\",\n ABOUT_TEXT_CENTER: \"aboutTextCenter\",\n DISCLAIMER_TEXT: \"disclaimerText\",\n GEOCODE_STATE_FILTER: \"geocodeStateFilter\",\n GEOCODE_STRATEGY: \"geocoder\"\n};\n\nexport default ConfigKeys;\n","import GeoJSON from 'ol/format/GeoJSON';\r\nimport { toWebMercatorExtent } from '../../../lib/map/core/transfomer';\r\n\r\nconst asGeometry = json => {\r\n const format = new GeoJSON();\r\n const features = format.readFeatures(json);\r\n return features[0].getGeometry();\r\n};\r\n\r\nconst extent = initialGeometry => {\r\n return toWebMercatorExtent(asGeometry(initialGeometry).getExtent());\r\n};\r\n\r\nexport default extent;\r\n","import get from 'lodash/get';\n\nimport ConfigKeys from './keys';\n\nconst ignoredKeys = ['header', 'labels'];\n\nconst reportMissingServerSettings = (configKeys, settings) => {\n configKeys.forEach(c => {\n const setting = get(settings, c);\n if (setting === undefined || setting == null) {\n console.error(`The application setting \"${c}\" is required.`);\n }\n });\n};\n\nconst reportExtraneousServerSettings = (configKeys, settings) => {\n Object.keys(settings).forEach(key => {\n if (!configKeys.includes(key) && !ignoredKeys.includes(key)) {\n console.warn(`The setting \"${key}\" is no longer required, remove it.`);\n }\n });\n};\n\n/**\n * Validate settings coming from the server and log warnings to the console.\n */\nexport const validate = settings => {\n const configKeys = Object.values(ConfigKeys);\n reportMissingServerSettings(configKeys, settings);\n reportExtraneousServerSettings(configKeys, settings);\n};\n","import get from \"lodash/get\";\nimport config from \"react-global-configuration\";\nimport ConfigKeys from \"./keys\";\nimport calcExtent from \"./util/calcExtent\";\nimport { validate } from \"./validate\";\n\nconst convertLabelsToObject = labels => {\n const obj = {};\n labels.forEach(label => (obj[label.key] = label.value));\n return obj;\n};\n\nconst initialize = settings => {\n /**\n * (1) Labels need to be converted to object from an array for easy access.\n * (2) Calculate extent based on initialGeometry setting.\n */\n const fixedSettings = {\n ...settings,\n labels: convertLabelsToObject(settings.labels),\n extent: calcExtent(get(settings, ConfigKeys.INITIAL_GEOMETRY))\n };\n\n validate(fixedSettings);\n config.set(fixedSettings);\n};\n\nconst all = () => JSON.parse(config.serialize());\n\n/**\n * Private function to get config value.\n */\nconst cfgGet = (key, defaultWhenNotExists) => {\n return config.get(key, defaultWhenNotExists);\n};\n\nconst isSummarizeEIs = (whenEmpty = false) => {\n return cfgGet(ConfigKeys.SUMMARIZE_EIS, whenEmpty);\n};\n\nconst getNCoreApplicationName = (whenEmpty = \"nCORE by Windsor Solutions\") => {\n return cfgGet(ConfigKeys.NCORE_APPLICATION_NAME, whenEmpty);\n};\n\nconst getNCoreBaseUrl = (whenEmpty = \"\") => {\n let baseUrl = cfgGet(ConfigKeys.NCORE_BASE_URL, whenEmpty);\n return baseUrl.charAt(baseUrl.length - 1) == \"/\"\n ? baseUrl.substring(0, baseUrl.length - 1)\n : baseUrl;\n};\n\nconst getApplicationName = (whenEmpty = \"nSITE Explorer by Windsor Solutions\") => {\n return cfgGet(ConfigKeys.APPLICATION_NAME, whenEmpty);\n};\n\nconst getApplicationIcon = (whenEmpty = \"logo.png\") => {\n return cfgGet(ConfigKeys.APPLICATION_ICON, whenEmpty);\n};\n\nconst getApplicationInitials = (whenEmpty = \"\") => {\n return cfgGet(ConfigKeys.APPLICATION_INITIALS, whenEmpty);\n};\n\nconst getMetaAuthor = (whenEmpty = \"Windsor Solutions, Inc.\") => {\n return cfgGet(ConfigKeys.META_AUTHOR, whenEmpty);\n};\n\nconst getMetaDescription = (\n whenEmpty = \"nSITE provides an integrated, cross-programmatic view of information for sites that are of environmental concern to the agency. Site data from each connected source system is presented as a single record, combining information from multiple program areas to create a holistic view of site activities that have an environmental impact.\"\n) => {\n return cfgGet(ConfigKeys.META_DESCRIPTION, whenEmpty);\n};\n\nconst getMetaKeywords = (whenEmpty = \"\") => {\n return cfgGet(ConfigKeys.META_KEYWORDS, whenEmpty);\n};\n\nconst getMetaRobotContent = (whenEmpty = \"\") => {\n console.log(cfgGet(ConfigKeys.IS_PRODUCTION));\n if (!cfgGet(ConfigKeys.IS_PRODUCTION)) {\n return \"NOFOLLOW, NOINDEX\"\n } else {\n return cfgGet(ConfigKeys.META_ROBOT_CONTENT, whenEmpty);\n }\n};\n\nconst getIsProduction = (whenEmpty = \"\") => {\n return cfgGet(ConfigKeys.IS_PRODUCTION, whenEmpty);\n};\n\nconst getHeaderColorBackground = (whenEmpty = \"blue\") => {\n return cfgGet(ConfigKeys.HEADER_COLOR_BACKGROUND, whenEmpty);\n};\n\nconst getHeaderColorText = (whenEmpty = \"white\") => {\n return cfgGet(ConfigKeys.HEADER_COLOR_TEXT, whenEmpty);\n};\n\nconst getHeaderNavigation = (whenEmpty = []) => {\n return cfgGet(ConfigKeys.HEADER_NAVIGATION, whenEmpty);\n};\n\nconst getIeWarning = (whenEmpty = \"\") => {\n return cfgGet(ConfigKeys.IE_WARNING, whenEmpty);\n};\n\n//\n// Default to all of USA?\n//\nconst getInitialGeometry = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.INITIAL_GEOMETRY, whenEmpty);\n};\n\nconst isZoomToLocationDesktop = (whenEmpty = false) => {\n return cfgGet(ConfigKeys.ZOOM_TO_LOCATION_DESKTOP, whenEmpty);\n};\n\nconst isZoomToLocationMobile = (whenEmpty = false) => {\n return cfgGet(ConfigKeys.ZOOM_TO_LOCATION_MOBILE, whenEmpty);\n};\n\nconst getExtent = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.EXTENT, whenEmpty);\n};\n\nconst getMinZoom = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.MIN_ZOOM, whenEmpty);\n};\n\nconst getMaxZoom = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.MAX_ZOOM, whenEmpty);\n};\n\nconst getSiteClusterFillColor = (whenEmpty = \"rgba(255, 0, 252, 0.7)\") => {\n return cfgGet(ConfigKeys.SITE_CLUSTER_FILL_COLOR, whenEmpty);\n};\n\nconst getSiteClusterStrokeColor = (whenEmpty = \"rgba(56, 0, 55, 0.9)\") => {\n return cfgGet(ConfigKeys.SITE_CLUSTER_STROKE_COLOR, whenEmpty);\n};\n\nconst getBingApiKey = (whenEmpty = \"\") => {\n return cfgGet(ConfigKeys.BING_API_KEY, whenEmpty);\n};\n\nconst getNcoreFileUrl = (whenEmpty = \"\") => {\n return cfgGet(ConfigKeys.NCORE_FILE_URL, whenEmpty);\n};\n\nconst getNcorePdfUrl = (whenEmpty = \"\") => {\n return cfgGet(ConfigKeys.NCORE_PDF_URL, whenEmpty);\n};\n\nconst getStartPanel = (whenEmpty = \"details\") => {\n return cfgGet(ConfigKeys.START_PANEL, whenEmpty);\n};\n\nconst getGoogleAnalyticsKey = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.GOOGLE_ANALYTICS_KEY, whenEmpty);\n};\n\nconst isConditionallyHideOrigSysId = (whenEmpty = false) => {\n return cfgGet(ConfigKeys.CONDITIONALLY_HIDE_ORIG_SYS_ID, whenEmpty);\n};\n\nconst isShowDocumentCount = (whenEmpty = false) => {\n return cfgGet(ConfigKeys.SHOW_DOCUMENT_COUNT, whenEmpty);\n};\n\nconst getBuildBranch = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.BUILD_BRANCH, whenEmpty);\n};\n\nconst getBuildRevision = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.BUILD_REVISION, whenEmpty);\n};\n\nconst getBuildTimestamp = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.BUILD_TIMESTAMP, whenEmpty);\n};\n\nconst getLabel = (key, whenEmpty = `{{${key}}}`) => {\n return cfgGet(key, whenEmpty);\n};\n\nconst getApplicationBaseUrl = () => {\n return cfgGet(ConfigKeys.APPLICATION_BASE_URL);\n};\n\nconst getReportHeaderImageUrl = () => {\n return `${getApplicationBaseUrl()}/logo-report-header.png`;\n};\n\nconst getRecaptchaSiteKey = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.RECAPTCHA_SITE_KEY, whenEmpty);\n};\n\nconst getHideSourceSiteLink = (whenEmpty = undefined) => {\n return cfgGet(ConfigKeys.HIDE_SOURCE_SITE_LINK, whenEmpty);\n};\n\nexport default {\n initialize,\n all,\n getApplicationIcon,\n getApplicationInitials,\n getApplicationName,\n getApplicationBaseUrl,\n getNcoreFileUrl,\n getNcorePdfUrl,\n getBingApiKey,\n getBuildBranch,\n getBuildRevision,\n getBuildTimestamp,\n getExtent,\n getGoogleAnalyticsKey,\n getRecaptchaSiteKey,\n getHideSourceSiteLink,\n getHeaderColorBackground,\n getHeaderColorText,\n getHeaderNavigation,\n getIeWarning,\n getInitialGeometry,\n getLabel,\n getMetaAuthor,\n getMetaDescription,\n getMetaKeywords,\n getMetaRobotContent,\n getIsProduction,\n getMaxZoom,\n getMinZoom,\n getNCoreApplicationName,\n getNCoreBaseUrl,\n getReportHeaderImageUrl,\n getSiteClusterFillColor,\n getSiteClusterStrokeColor,\n getStartPanel,\n isConditionallyHideOrigSysId,\n isShowDocumentCount,\n isSummarizeEIs,\n isZoomToLocationDesktop,\n isZoomToLocationMobile\n};\n","const isAllowDebug = () => {\r\n if (window && window.location) {\r\n const hostname = window.location.hostname || '';\r\n return hostname === 'localhost' || hostname.includes('windsorsolutions.biz');\r\n }\r\n return false;\r\n};\r\n\r\nexport default isAllowDebug;\r\n","import { PureComponent } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Config from \"../../config\";\nimport isAllowDebug from \"../../config/isAllowDebug\";\nimport ReactGA from \"react-ga4\";\n\nclass GoogleAnalytics extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n isInitialized: false,\n trackerNames: []\n };\n }\n\n componentDidMount() {\n this.gaInitialize();\n }\n\n gaInitialize() {\n if (Config.getGoogleAnalyticsKey()) {\n const keys = Config.getGoogleAnalyticsKey().split(\",\");\n const trackerNames = [];\n const trackers = keys.map(key => {\n const trackingId = key.trim();\n const trackerName = key.trim().replace(/[^0-9a-z]/gi, \"\");\n trackerNames.push(trackerName);\n\n return {\n trackingId: trackingId,\n debug: isAllowDebug(),\n gaOptions: {\n name: trackerName\n }\n };\n });\n\n ReactGA.initialize(trackers);\n\n this.setState({\n trackerNames: trackerNames,\n isInitialized: true\n });\n }\n }\n\n canRecord() {\n return this.state.isInitialized && this.state.trackerNames.length > 0;\n }\n\n currentPath(props) {\n const { location } = props;\n return location.pathname + location.search;\n }\n\n render() {\n return null;\n }\n}\n\nexport default withRouter(GoogleAnalytics);\n","import { PureComponent } from 'react';\nimport Config from '../../config';\n\nconst ID_META_AUTHOR = 'MetaAuthor';\nconst ID_META_DESC = 'MetaDescription';\nconst ID_META_KEYWORDS = 'MetaKeywords';\nconst ID_META_ROBOTS = 'MetaRobots';\n\nexport default class MetaTagsUpdater extends PureComponent {\n componentDidMount() {\n this.updateMetaTags();\n }\n\n componentDidUpdate() {\n this.updateMetaTags();\n }\n\n updateMetaTags() {\n document.getElementById(ID_META_AUTHOR).setAttribute('content', Config.getMetaAuthor());\n document.getElementById(ID_META_DESC).setAttribute('content', Config.getMetaDescription());\n document.getElementById(ID_META_KEYWORDS).setAttribute('content', Config.getMetaKeywords());\n document.getElementById(ID_META_ROBOTS).setAttribute('content', Config.getMetaRobotContent());\n }\n\n render() {\n return null;\n }\n}\n","import PropTypes from 'prop-types';\r\nimport { Component } from 'react';\r\nimport Config from '../../config';\r\n\r\nconst SEPARATOR = '\\u2022';\r\n\r\nexport default class WindowDocumentTitle extends Component {\r\n static propTypes = {\r\n title: PropTypes.string,\r\n removeOnUnmount: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n title: undefined,\r\n removeOnUnmount: false,\r\n };\r\n\r\n static makeTitle(title) {\r\n if (title) {\r\n return `${title} ${SEPARATOR} ${Config.getApplicationName()}`;\r\n }\r\n return Config.getApplicationName();\r\n }\r\n\r\n componentDidMount() {\r\n document.title = WindowDocumentTitle.makeTitle(this.props.title);\r\n }\r\n\r\n componentDidUpdate() {\r\n document.title = WindowDocumentTitle.makeTitle(this.props.title);\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.props.removeOnUnmount) {\r\n document.title = WindowDocumentTitle.makeTitle();\r\n }\r\n }\r\n\r\n render() {\r\n return null;\r\n }\r\n}\r\n","import Color from 'color';\r\n\r\n/*********************************************************************\r\n *\r\n * CORE\r\n *\r\n * The whole design system is designed to fit onto an 8pt grid. Everything\r\n * from margin & padding to font-size and line-height is based off of\r\n * this value. Because of this all elements on the screen will line up\r\n * beautifully and provide for consistent look and feel.\r\n *\r\n *********************************************************************/\r\n\r\n/**\r\n * The god unit - all things layout and sizing are based off this value, do not change.\r\n */\r\nexport const GRID_UNIT = 8;\r\n\r\nexport const GRID_UNIT_1X = GRID_UNIT;\r\nexport const GRID_UNIT_2X = GRID_UNIT * 2;\r\nexport const GRID_UNIT_3X = GRID_UNIT * 3;\r\nexport const GRID_UNIT_4X = GRID_UNIT * 4;\r\nexport const GRID_UNIT_5X = GRID_UNIT * 5;\r\nexport const GRID_UNIT_6X = GRID_UNIT * 6;\r\n\r\n/*********************************************************************\r\n *\r\n * COLOR\r\n *\r\n *********************************************************************/\r\n\r\n/**\r\n * Ratios to lighten and darken base colors.\r\n */\r\nexport const COLOR_LIGHTEN_1_RATIO = 0.82;\r\nexport const COLOR_LIGHTEN_2_RATIO = 0.595;\r\nexport const COLOR_LIGHTEN_3_RATIO = 0.371;\r\nexport const COLOR_LIGHTEN_4_RATIO = 0.223;\r\nexport const COLOR_LIGHTEN_5_RATIO = 0.148;\r\nexport const COLOR_LIGHTEN_6_RATIO = 0.075;\r\n\r\nexport const COLOR_DARKEN_6_RATIO = 0.52;\r\nexport const COLOR_DARKEN_5_RATIO = 0.37;\r\nexport const COLOR_DARKEN_4_RATIO = 0.296;\r\nexport const COLOR_DARKEN_3_RATIO = 0.226;\r\nexport const COLOR_DARKEN_2_RATIO = 0.148;\r\nexport const COLOR_DARKEN_1_RATIO = 0.075;\r\n\r\n/**\r\n * Base - Each color is related by triadic color scheme, a color is a triad of another.\r\n *\r\n */\r\nexport const COLOR_BASE_WHITE = '#FFFFFF';\r\nexport const COLOR_BASE_BLACK = '#000000';\r\nexport const COLOR_BASE_GRAY = '#828282';\r\nexport const COLOR_BASE_BLUE = '#228AE6';\r\nexport const COLOR_BASE_ORANGE = '#E67E22';\r\nexport const COLOR_BASE_RED = '#E62228';\r\nexport const COLOR_BASE_GREEN = '#8AE622';\r\nexport const COLOR_BASE_YELLOW = '#E6E022';\r\nexport const COLOR_BASE_VIOLET = '#7E22E6';\r\nexport const COLOR_BASE_FUSCIA = '#E6228A';\r\n\r\n/**\r\n * Grays: shades & tints\r\n */\r\nlet color = Color(COLOR_BASE_GRAY);\r\n\r\nexport const COLOR_GRAY_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_GRAY_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_GRAY_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_GRAY_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_GRAY_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_GRAY_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_GRAY_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_GRAY_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_GRAY_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_GRAY_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_GRAY_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_GRAY_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/**\r\n * Blues: shades & tints\r\n */\r\ncolor = Color(COLOR_BASE_BLUE);\r\n\r\nexport const COLOR_BLUE_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_BLUE_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_BLUE_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_BLUE_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_BLUE_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_BLUE_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_BLUE_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_BLUE_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_BLUE_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_BLUE_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_BLUE_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_BLUE_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/**\r\n * Oranges: shades & tints\r\n */\r\ncolor = Color(COLOR_BASE_ORANGE);\r\n\r\nexport const COLOR_ORANGE_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_ORANGE_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_ORANGE_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_ORANGE_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_ORANGE_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_ORANGE_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_ORANGE_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_ORANGE_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_ORANGE_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_ORANGE_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_ORANGE_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_ORANGE_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/**\r\n * Reds: shades & tints\r\n */\r\ncolor = Color(COLOR_BASE_RED);\r\n\r\nexport const COLOR_RED_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_RED_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_RED_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_RED_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_RED_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_RED_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_RED_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_RED_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_RED_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_RED_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_RED_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_RED_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/**\r\n * Greens: shades & tints\r\n */\r\ncolor = Color(COLOR_BASE_GREEN);\r\n\r\nexport const COLOR_GREEN_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_GREEN_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_GREEN_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_GREEN_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_GREEN_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_GREEN_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_GREEN_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_GREEN_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_GREEN_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_GREEN_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_GREEN_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_GREEN_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/**\r\n * Yellows: shades & tints\r\n */\r\ncolor = Color(COLOR_BASE_YELLOW);\r\n\r\nexport const COLOR_YELLOW_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_YELLOW_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_YELLOW_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_YELLOW_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_YELLOW_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_YELLOW_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_YELLOW_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_YELLOW_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_YELLOW_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_YELLOW_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_YELLOW_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_YELLOW_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/**\r\n * Purple: shades & tints\r\n */\r\ncolor = Color(COLOR_BASE_VIOLET);\r\n\r\nexport const COLOR_VIOLET_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_VIOLET_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_VIOLET_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_VIOLET_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_VIOLET_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_VIOLET_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_VIOLET_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_VIOLET_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_VIOLET_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_VIOLET_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_VIOLET_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_VIOLET_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/**\r\n * Fuscia: shades & tints\r\n */\r\ncolor = Color(COLOR_BASE_FUSCIA);\r\n\r\nexport const COLOR_FUSCIA_LIGHT_1 = color.lighten(COLOR_LIGHTEN_1_RATIO).hex();\r\nexport const COLOR_FUSCIA_LIGHT_2 = color.lighten(COLOR_LIGHTEN_2_RATIO).hex();\r\nexport const COLOR_FUSCIA_LIGHT_3 = color.lighten(COLOR_LIGHTEN_3_RATIO).hex();\r\nexport const COLOR_FUSCIA_LIGHT_4 = color.lighten(COLOR_LIGHTEN_4_RATIO).hex();\r\nexport const COLOR_FUSCIA_LIGHT_5 = color.lighten(COLOR_LIGHTEN_5_RATIO).hex();\r\nexport const COLOR_FUSCIA_LIGHT_6 = color.lighten(COLOR_LIGHTEN_6_RATIO).hex();\r\n\r\nexport const COLOR_FUSCIA_DARK_1 = color.darken(COLOR_DARKEN_1_RATIO).hex();\r\nexport const COLOR_FUSCIA_DARK_2 = color.darken(COLOR_DARKEN_2_RATIO).hex();\r\nexport const COLOR_FUSCIA_DARK_3 = color.darken(COLOR_DARKEN_3_RATIO).hex();\r\nexport const COLOR_FUSCIA_DARK_4 = color.darken(COLOR_DARKEN_4_RATIO).hex();\r\nexport const COLOR_FUSCIA_DARK_5 = color.darken(COLOR_DARKEN_5_RATIO).hex();\r\nexport const COLOR_FUSCIA_DARK_6 = color.darken(COLOR_DARKEN_6_RATIO).hex();\r\n\r\n/*********************************************************************\r\n *\r\n * TYPOGRAPHY\r\n *\r\n *********************************************************************/\r\n\r\n/**\r\n * Typeface\r\n *\r\n * Note: fonts are installed through npm (ie. typeface-open-sans) and\r\n * must be imported in your component.\r\n *\r\n * \r\n * import 'typeface-open-sans';\r\n * import 'typeface-open-sans-condensed';\r\n * \r\n *\r\n */\r\nexport const TYPE_FONT_FAMILY_SAN_SERIF = '\"Open Sans\", sans-serif';\r\nexport const TYPE_FONT_FAMILY_SERIF = ''; // TODO - Find and install a serif font.\r\nexport const TYPE_FONT_FAMILY_MONOSPACED = ''; // TODO - Find and install a monospaced font.\r\n\r\n/**\r\n * Font sizes smallest through largest.\r\n */\r\nexport const TYPE_FONT_SIZE_LARGEST = 32;\r\nexport const TYPE_FONT_SIZE_LARGER = 24;\r\nexport const TYPE_FONT_SIZE_LARGE = 18;\r\nexport const TYPE_FONT_SIZE_MEDIUM = 16;\r\nexport const TYPE_FONT_SIZE_SMALL = 14;\r\nexport const TYPE_FONT_SIZE_SMALLER = 13;\r\nexport const TYPE_FONT_SIZE_SMALLEST = 10;\r\nexport const TYPE_FONT_SIZE_DEFAULT = TYPE_FONT_SIZE_SMALL;\r\n\r\n/**\r\n * Font weight from thin/light to heavy/dark.\r\n */\r\nexport const TYPE_FONT_WEIGHT_LIGHTEST = 100;\r\nexport const TYPE_FONT_WEIGHT_LIGHTER = 300;\r\nexport const TYPE_FONT_WEIGHT_LIGHT = 300;\r\nexport const TYPE_FONT_WEIGHT_NORMAL = 400;\r\nexport const TYPE_FONT_WEIGHT_HEAVY = 600;\r\nexport const TYPE_FONT_WEIGHT_HEAVIER = 700;\r\nexport const TYPE_FONT_WEIGHT_HEAVIEST = 800;\r\nexport const TYPE_FONT_WEIGHT_DEFAULT = 400;\r\n\r\n/**\r\n * Default body text colors.\r\n */\r\nexport const TYPE_COLOR_DEFAULT = COLOR_GRAY_DARK_6;\r\nexport const TYPE_COLOR_MUTED = COLOR_GRAY_DARK_5;\r\n\r\n/**\r\n * Line height (aka \"leading\")\r\n */\r\nexport const TYPE_LINE_HEIGHT_RATIO = 1.5;\r\nexport const TYPE_LINE_HEIGHT_RATIO_HEADING = 1.25;\r\n\r\n/*********************************************************************\r\n *\r\n * ELEVATION\r\n *\r\n * For giving containers a sense of elevation with box shadows.\r\n *\r\n *********************************************************************/\r\n\r\nconst ELEVATION_SHADOW_ALPHA = '0.3';\r\n\r\n/**\r\n * Shadows - from low to high.\r\n */\r\nexport const ELEVATION_SHADOW_1 = `0 1px 2px 0 rgba(0,0,0,${ELEVATION_SHADOW_ALPHA})`;\r\nexport const ELEVATION_SHADOW_2 = `0 2px 4px 0 rgba(0,0,0,${ELEVATION_SHADOW_ALPHA})`;\r\nexport const ELEVATION_SHADOW_3 = `0 4px 8px 0 rgba(0,0,0,${ELEVATION_SHADOW_ALPHA})`;\r\nexport const ELEVATION_SHADOW_4 = `0 8px 16px 0 rgba(0,0,0,${ELEVATION_SHADOW_ALPHA})`;\r\nexport const ELEVATION_SHADOW_5 = `0 16px 32px 0 rgba(0,0,0,${ELEVATION_SHADOW_ALPHA})`;\r\nexport const ELEVATION_SHADOW_6 = `0 32px 64px 0 rgba(0,0,0,${ELEVATION_SHADOW_ALPHA})`;\r\n\r\n/*********************************************************************\r\n *\r\n * SPACING\r\n *\r\n * For giving containers margin, and padding.\r\n *\r\n *********************************************************************/\r\n\r\nconst SPACING_BASE = 2;\r\n\r\nexport const SPACING_SMALLEST = Math.pow(SPACING_BASE, 1); // 2\r\nexport const SPACING_SMALLER = Math.pow(SPACING_BASE, 2); // 4\r\nexport const SPACING_SMALL = Math.pow(SPACING_BASE, 3); // 8\r\nexport const SPACING_MEDIUM = Math.pow(SPACING_BASE, 4); // 16\r\nexport const SPACING_LARGE = Math.pow(SPACING_BASE, 5); // 32\r\nexport const SPACING_LARGER = Math.pow(SPACING_BASE, 6); // 64\r\nexport const SPACING_LARGEST = Math.pow(SPACING_BASE, 7); // 128\r\n\r\n/*********************************************************************\r\n *\r\n * BUTTONS\r\n *\r\n *********************************************************************/\r\n\r\nexport const BUTTON_DEFAULT_COLOR = COLOR_GRAY_DARK_2;\r\nexport const BUTTON_DEFAULT_BORDER_WIDTH = 2;\r\nexport const BUTTON_DEFAULT_BORDER_COLOR = BUTTON_DEFAULT_COLOR;\r\nexport const BUTTON_DEFAULT_BORDER_STYLE = 'solid';\r\n\r\n/**\r\n * Button size\r\n */\r\nexport const BUTTON_SIZE_SMALLEST_HEIGHT = GRID_UNIT * 1.5;\r\nexport const BUTTON_SIZE_SMALLEST_LINE_HEIGHT = GRID_UNIT;\r\nexport const BUTTON_SIZE_SMALLEST_FONT_SIZE = GRID_UNIT;\r\nexport const BUTTON_SIZE_SMALLEST_BORDER_WIDTH = 1;\r\nexport const BUTTON_SIZE_SMALLEST_PADDING_X = GRID_UNIT / 2;\r\nexport const BUTTON_SIZE_SMALLEST_PADDING_Y = 0;\r\nexport const BUTTON_SIZE_SMALLEST_RADIUS = 2;\r\n\r\nexport const BUTTON_SIZE_SMALLER_HEIGHT = GRID_UNIT * 2;\r\nexport const BUTTON_SIZE_SMALLER_LINE_HEIGHT = GRID_UNIT * 1.25;\r\nexport const BUTTON_SIZE_SMALLER_FONT_SIZE = BUTTON_SIZE_SMALLER_LINE_HEIGHT;\r\nexport const BUTTON_SIZE_SMALLER_BORDER_WIDTH = 1;\r\nexport const BUTTON_SIZE_SMALLER_PADDING_X = GRID_UNIT;\r\nexport const BUTTON_SIZE_SMALLER_PADDING_Y = 0;\r\nexport const BUTTON_SIZE_SMALLER_RADIUS = 2;\r\n\r\nexport const BUTTON_SIZE_SMALL_HEIGHT = GRID_UNIT * 2.5;\r\nexport const BUTTON_SIZE_SMALL_LINE_HEIGHT = GRID_UNIT * 1.5;\r\nexport const BUTTON_SIZE_SMALL_FONT_SIZE = BUTTON_SIZE_SMALL_LINE_HEIGHT;\r\nexport const BUTTON_SIZE_SMALL_BORDER_WIDTH = 1;\r\nexport const BUTTON_SIZE_SMALL_PADDING_X = GRID_UNIT * 1.5;\r\nexport const BUTTON_SIZE_SMALL_PADDING_Y = 0;\r\nexport const BUTTON_SIZE_SMALL_RADIUS = 2;\r\n\r\nexport const BUTTON_SIZE_MEDIUM_HEIGHT = GRID_UNIT * 3.5;\r\nexport const BUTTON_SIZE_MEDIUM_LINE_HEIGHT = GRID_UNIT * 1.75;\r\nexport const BUTTON_SIZE_MEDIUM_FONT_SIZE = BUTTON_SIZE_MEDIUM_LINE_HEIGHT;\r\nexport const BUTTON_SIZE_MEDIUM_BORDER_WIDTH = 1;\r\nexport const BUTTON_SIZE_MEDIUM_PADDING_X = GRID_UNIT * 3;\r\nexport const BUTTON_SIZE_MEDIUM_PADDING_Y = 0;\r\nexport const BUTTON_SIZE_MEDIUM_RADIUS = 2;\r\n\r\nexport const BUTTON_SIZE_LARGE_HEIGHT = GRID_UNIT * 4;\r\nexport const BUTTON_SIZE_LARGE_LINE_HEIGHT = GRID_UNIT * 1.75;\r\nexport const BUTTON_SIZE_LARGE_FONT_SIZE = BUTTON_SIZE_LARGE_LINE_HEIGHT;\r\nexport const BUTTON_SIZE_LARGE_BORDER_WIDTH = 1;\r\nexport const BUTTON_SIZE_LARGE_PADDING_X = GRID_UNIT * 4;\r\nexport const BUTTON_SIZE_LARGE_PADDING_Y = 0;\r\nexport const BUTTON_SIZE_LARGE_RADIUS = 2;\r\n\r\nexport const BUTTON_SIZE_LARGER_HEIGHT = GRID_UNIT * 5;\r\nexport const BUTTON_SIZE_LARGER_LINE_HEIGHT = GRID_UNIT * 1.75;\r\nexport const BUTTON_SIZE_LARGER_FONT_SIZE = BUTTON_SIZE_LARGER_LINE_HEIGHT;\r\nexport const BUTTON_SIZE_LARGER_BORDER_WIDTH = 2;\r\nexport const BUTTON_SIZE_LARGER_PADDING_X = GRID_UNIT * 5;\r\nexport const BUTTON_SIZE_LARGER_PADDING_Y = 0;\r\nexport const BUTTON_SIZE_LARGER_RADIUS = 2;\r\n\r\nexport const BUTTON_SIZE_LARGEST_HEIGHT = GRID_UNIT * 7;\r\nexport const BUTTON_SIZE_LARGEST_LINE_HEIGHT = GRID_UNIT * 1.75;\r\nexport const BUTTON_SIZE_LARGEST_FONT_SIZE = BUTTON_SIZE_LARGEST_LINE_HEIGHT;\r\nexport const BUTTON_SIZE_LARGEST_BORDER_WIDTH = 3;\r\nexport const BUTTON_SIZE_LARGEST_PADDING_X = GRID_UNIT * 6;\r\nexport const BUTTON_SIZE_LARGEST_PADDING_Y = 0;\r\nexport const BUTTON_SIZE_LARGEST_RADIUS = 2;\r\n\r\n/**\r\n * BOX\r\n */\r\nexport const BOX_DEFAULT_BACKGROUND_COLOR = 'transparent';\r\nexport const BOX_DEFAULT_BORDER_WIDTH = 1;\r\nexport const BOX_DEFAULT_BORDER_COLOR = COLOR_BASE_GRAY;\r\n\r\n/**\r\n * ICON\r\n */\r\nexport const ICON_DEFAULT_COLOR = COLOR_GRAY_DARK_4;\r\n","import { ICON_DEFAULT_COLOR } from './variables';\r\n\r\n/**\r\n * Icon defaults\r\n */\r\nconst icon = {\r\n default: {\r\n color: ICON_DEFAULT_COLOR,\r\n },\r\n};\r\n\r\nexport default icon;\r\n","import {\r\n BOX_DEFAULT_BACKGROUND_COLOR,\r\n BOX_DEFAULT_BORDER_COLOR,\r\n BOX_DEFAULT_BORDER_WIDTH,\r\n} from './variables';\r\n\r\n/**\r\n * Box, for putting things in.\r\n */\r\n\r\nconst box = {\r\n default: {\r\n backgroundColor: BOX_DEFAULT_BACKGROUND_COLOR,\r\n borderWidth: BOX_DEFAULT_BORDER_WIDTH,\r\n borderColor: BOX_DEFAULT_BORDER_COLOR,\r\n },\r\n};\r\n\r\nexport default box;\r\n","const PHONE = 599;\r\nconst TABLET_P = 899;\r\nconst TABLET_L = 1199;\r\nconst DESKTOP = 1799;\r\n\r\nconst min = size => `min-width: ${size}px`;\r\nconst max = size => `max-width: ${size}px`;\r\n\r\n/**\r\n * Defines the break point media selectors.\r\n */\r\nconst breakpoints = {\r\n phone: {\r\n up: min(PHONE),\r\n only: max(PHONE),\r\n },\r\n tablet: {\r\n portrait: {\r\n up: min(TABLET_P),\r\n down: max(TABLET_P),\r\n },\r\n landscape: {\r\n up: min(TABLET_L),\r\n down: max(TABLET_L),\r\n },\r\n },\r\n desktop: {\r\n up: min(DESKTOP),\r\n down: max(DESKTOP),\r\n },\r\n};\r\n\r\nexport default breakpoints;\r\n","/**\r\n * Format a number as a pixel for css propterties. For example, you will get '3px' when given 3.\r\n *\r\n * @param num the number to format.\r\n * @returns {string}\r\n */\r\nexport const px = num => `${num}px`;\r\n\r\n/**\r\n * Format a number as a pixel for css propterties. For example, you will get '3px 0px' when given 3.\r\n *\r\n * @param x the number to format.\r\n * @param y the number to format.\r\n * @returns {string}\r\n */\r\nexport const pxXY = (x, y) => `${y}px ${x}px`;\r\n\r\n/**\r\n * Returns the jss style from classes property on the given props object.\r\n *\r\n * The value is used as the key to lookup the style on the classes object.\r\n *\r\n * @param props the component props.\r\n */\r\nexport const jssSize = props => {\r\n return props.size ? props.classes[props.size] : undefined;\r\n};\r\n\r\n/**\r\n * Returns the color from the theme base on 'color' and 'colorVariant' props.\r\n *\r\n * @param theme\r\n * @param props\r\n * @returns {string}\r\n */\r\nexport const jssColor = (theme, props) => {\r\n return jssColorLookup(theme, props.color, props.colorVariant);\r\n};\r\n\r\n/**\r\n * Returns the color from the theme base on base and 'variant values.\r\n *\r\n * @param theme\r\n * @param base base color value - white, green, etc.\r\n * @param variant color variant - light1, light2, etc.\r\n * @returns {string}\r\n */\r\nexport const jssColorLookup = (theme, base, variant = 'base') => {\r\n if (base === 'white' || base === 'black') {\r\n return theme.color.base[base];\r\n } else if (base) {\r\n return theme.color[base][variant];\r\n }\r\n return undefined;\r\n};\r\n","import { px, pxXY } from '../../util/jss';\r\nimport {\r\n BUTTON_DEFAULT_BORDER_COLOR,\r\n BUTTON_DEFAULT_BORDER_STYLE,\r\n BUTTON_DEFAULT_BORDER_WIDTH,\r\n BUTTON_SIZE_LARGE_BORDER_WIDTH,\r\n BUTTON_SIZE_LARGE_FONT_SIZE,\r\n BUTTON_SIZE_LARGE_HEIGHT,\r\n BUTTON_SIZE_LARGE_LINE_HEIGHT,\r\n BUTTON_SIZE_LARGE_PADDING_X,\r\n BUTTON_SIZE_LARGE_PADDING_Y,\r\n BUTTON_SIZE_LARGE_RADIUS,\r\n BUTTON_SIZE_LARGER_BORDER_WIDTH,\r\n BUTTON_SIZE_LARGER_FONT_SIZE,\r\n BUTTON_SIZE_LARGER_HEIGHT,\r\n BUTTON_SIZE_LARGER_LINE_HEIGHT,\r\n BUTTON_SIZE_LARGER_PADDING_X,\r\n BUTTON_SIZE_LARGER_PADDING_Y,\r\n BUTTON_SIZE_LARGER_RADIUS,\r\n BUTTON_SIZE_LARGEST_BORDER_WIDTH,\r\n BUTTON_SIZE_LARGEST_FONT_SIZE,\r\n BUTTON_SIZE_LARGEST_HEIGHT,\r\n BUTTON_SIZE_LARGEST_LINE_HEIGHT,\r\n BUTTON_SIZE_LARGEST_PADDING_X,\r\n BUTTON_SIZE_LARGEST_PADDING_Y,\r\n BUTTON_SIZE_LARGEST_RADIUS,\r\n BUTTON_SIZE_MEDIUM_BORDER_WIDTH,\r\n BUTTON_SIZE_MEDIUM_FONT_SIZE,\r\n BUTTON_SIZE_MEDIUM_HEIGHT,\r\n BUTTON_SIZE_MEDIUM_LINE_HEIGHT,\r\n BUTTON_SIZE_MEDIUM_PADDING_X,\r\n BUTTON_SIZE_MEDIUM_PADDING_Y,\r\n BUTTON_SIZE_MEDIUM_RADIUS,\r\n BUTTON_SIZE_SMALL_BORDER_WIDTH,\r\n BUTTON_SIZE_SMALL_FONT_SIZE,\r\n BUTTON_SIZE_SMALL_HEIGHT,\r\n BUTTON_SIZE_SMALL_LINE_HEIGHT,\r\n BUTTON_SIZE_SMALL_PADDING_X,\r\n BUTTON_SIZE_SMALL_PADDING_Y,\r\n BUTTON_SIZE_SMALL_RADIUS,\r\n BUTTON_SIZE_SMALLER_BORDER_WIDTH,\r\n BUTTON_SIZE_SMALLER_FONT_SIZE,\r\n BUTTON_SIZE_SMALLER_HEIGHT,\r\n BUTTON_SIZE_SMALLER_LINE_HEIGHT,\r\n BUTTON_SIZE_SMALLER_PADDING_X,\r\n BUTTON_SIZE_SMALLER_PADDING_Y,\r\n BUTTON_SIZE_SMALLER_RADIUS,\r\n BUTTON_SIZE_SMALLEST_BORDER_WIDTH,\r\n BUTTON_SIZE_SMALLEST_FONT_SIZE,\r\n BUTTON_SIZE_SMALLEST_HEIGHT,\r\n BUTTON_SIZE_SMALLEST_LINE_HEIGHT,\r\n BUTTON_SIZE_SMALLEST_PADDING_X,\r\n BUTTON_SIZE_SMALLEST_PADDING_Y,\r\n BUTTON_SIZE_SMALLEST_RADIUS,\r\n TYPE_FONT_FAMILY_SAN_SERIF,\r\n} from './variables';\r\n\r\n/**\r\n * Button - the things that you press on the screen.\r\n *\r\n * size = [smallest, smaller, small, medium, large, larger, largest] - (height, font-size,\r\n * lineHeight) / layout\r\n *\r\n * type = [default, flat, alt] - (bg, border, text)\r\n * / style\r\n *\r\n * rounded= true|false - (radius)\r\n *\r\n * circle= true|false - (radius 50%, height =\r\n * width)\r\n *\r\n * color = [default, brand, primary, red, green, blue, orange]\r\n * / color\r\n *\r\n * state = [default, hover, active, disabled, focused]\r\n */\r\n\r\nconst button = {\r\n reset: {\r\n margin: 0,\r\n padding: 0,\r\n border: 'none',\r\n font: 'inherit',\r\n color: 'inherit',\r\n background: 'none',\r\n outline: 'none',\r\n display: 'inline-block',\r\n },\r\n\r\n base: {\r\n display: 'inline-block',\r\n fontFamily: TYPE_FONT_FAMILY_SAN_SERIF,\r\n color: 'inherit',\r\n background: 'none',\r\n outline: 'none',\r\n letterSpacing: px(0.75),\r\n textTransform: 'uppercase',\r\n borderWidth: BUTTON_DEFAULT_BORDER_WIDTH,\r\n borderColor: BUTTON_DEFAULT_BORDER_COLOR,\r\n borderStyle: BUTTON_DEFAULT_BORDER_STYLE,\r\n },\r\n\r\n height: {\r\n smallest: {\r\n height: px(BUTTON_SIZE_SMALLEST_HEIGHT),\r\n fontSize: px(BUTTON_SIZE_SMALLEST_FONT_SIZE),\r\n lineHeight: px(BUTTON_SIZE_SMALLEST_LINE_HEIGHT),\r\n borderWidth: px(BUTTON_SIZE_SMALLEST_BORDER_WIDTH),\r\n padding: pxXY(BUTTON_SIZE_SMALLEST_PADDING_X, BUTTON_SIZE_SMALLEST_PADDING_Y),\r\n borderRadius: px(BUTTON_SIZE_SMALLEST_RADIUS),\r\n },\r\n smaller: {\r\n height: px(BUTTON_SIZE_SMALLER_HEIGHT),\r\n fontSize: px(BUTTON_SIZE_SMALLER_FONT_SIZE),\r\n lineHeight: px(BUTTON_SIZE_SMALLER_LINE_HEIGHT),\r\n borderWidth: px(BUTTON_SIZE_SMALLER_BORDER_WIDTH),\r\n padding: pxXY(BUTTON_SIZE_SMALLER_PADDING_X, BUTTON_SIZE_SMALLER_PADDING_Y),\r\n borderRadius: px(BUTTON_SIZE_SMALLER_RADIUS),\r\n },\r\n small: {\r\n height: px(BUTTON_SIZE_SMALL_HEIGHT),\r\n fontSize: px(BUTTON_SIZE_SMALL_FONT_SIZE),\r\n lineHeight: px(BUTTON_SIZE_SMALL_LINE_HEIGHT),\r\n borderWidth: px(BUTTON_SIZE_SMALL_BORDER_WIDTH),\r\n padding: pxXY(BUTTON_SIZE_SMALL_PADDING_X, BUTTON_SIZE_SMALL_PADDING_Y),\r\n borderRadius: px(BUTTON_SIZE_SMALL_RADIUS),\r\n },\r\n medium: {\r\n height: px(BUTTON_SIZE_MEDIUM_HEIGHT),\r\n fontSize: px(BUTTON_SIZE_MEDIUM_FONT_SIZE),\r\n lineHeight: px(BUTTON_SIZE_MEDIUM_LINE_HEIGHT),\r\n borderWidth: px(BUTTON_SIZE_MEDIUM_BORDER_WIDTH),\r\n padding: pxXY(BUTTON_SIZE_MEDIUM_PADDING_X, BUTTON_SIZE_MEDIUM_PADDING_Y),\r\n borderRadius: px(BUTTON_SIZE_MEDIUM_RADIUS),\r\n },\r\n large: {\r\n height: px(BUTTON_SIZE_LARGE_HEIGHT),\r\n fontSize: px(BUTTON_SIZE_LARGE_FONT_SIZE),\r\n lineHeight: px(BUTTON_SIZE_LARGE_LINE_HEIGHT),\r\n borderWidth: px(BUTTON_SIZE_LARGE_BORDER_WIDTH),\r\n padding: pxXY(BUTTON_SIZE_LARGE_PADDING_X, BUTTON_SIZE_LARGE_PADDING_Y),\r\n borderRadius: px(BUTTON_SIZE_LARGE_RADIUS),\r\n },\r\n larger: {\r\n height: px(BUTTON_SIZE_LARGER_HEIGHT),\r\n fontSize: px(BUTTON_SIZE_LARGER_FONT_SIZE),\r\n lineHeight: px(BUTTON_SIZE_LARGER_LINE_HEIGHT),\r\n borderWidth: px(BUTTON_SIZE_LARGER_BORDER_WIDTH),\r\n padding: pxXY(BUTTON_SIZE_LARGER_PADDING_X, BUTTON_SIZE_LARGER_PADDING_Y),\r\n borderRadius: px(BUTTON_SIZE_LARGER_RADIUS),\r\n },\r\n largest: {\r\n height: px(BUTTON_SIZE_LARGEST_HEIGHT),\r\n fontSize: px(BUTTON_SIZE_LARGEST_FONT_SIZE),\r\n lineHeight: px(BUTTON_SIZE_LARGEST_LINE_HEIGHT),\r\n borderWidth: px(BUTTON_SIZE_LARGEST_BORDER_WIDTH),\r\n padding: pxXY(BUTTON_SIZE_LARGEST_PADDING_X, BUTTON_SIZE_LARGEST_PADDING_Y),\r\n borderRadius: px(BUTTON_SIZE_LARGEST_RADIUS),\r\n },\r\n },\r\n};\r\n\r\nexport default button;\r\n","import {\r\n COLOR_BASE_BLACK,\r\n COLOR_BASE_BLUE,\r\n COLOR_BASE_FUSCIA,\r\n COLOR_BASE_GRAY,\r\n COLOR_BASE_GREEN,\r\n COLOR_BASE_ORANGE,\r\n COLOR_BASE_RED,\r\n COLOR_BASE_VIOLET,\r\n COLOR_BASE_WHITE,\r\n COLOR_BASE_YELLOW,\r\n COLOR_BLUE_DARK_1,\r\n COLOR_BLUE_DARK_2,\r\n COLOR_BLUE_DARK_3,\r\n COLOR_BLUE_DARK_4,\r\n COLOR_BLUE_DARK_5,\r\n COLOR_BLUE_DARK_6,\r\n COLOR_BLUE_LIGHT_1,\r\n COLOR_BLUE_LIGHT_2,\r\n COLOR_BLUE_LIGHT_3,\r\n COLOR_BLUE_LIGHT_4,\r\n COLOR_BLUE_LIGHT_5,\r\n COLOR_BLUE_LIGHT_6,\r\n COLOR_FUSCIA_DARK_1,\r\n COLOR_FUSCIA_DARK_2,\r\n COLOR_FUSCIA_DARK_3,\r\n COLOR_FUSCIA_DARK_4,\r\n COLOR_FUSCIA_DARK_5,\r\n COLOR_FUSCIA_DARK_6,\r\n COLOR_FUSCIA_LIGHT_1,\r\n COLOR_FUSCIA_LIGHT_2,\r\n COLOR_FUSCIA_LIGHT_3,\r\n COLOR_FUSCIA_LIGHT_4,\r\n COLOR_FUSCIA_LIGHT_5,\r\n COLOR_FUSCIA_LIGHT_6,\r\n COLOR_GRAY_DARK_1,\r\n COLOR_GRAY_DARK_2,\r\n COLOR_GRAY_DARK_3,\r\n COLOR_GRAY_DARK_4,\r\n COLOR_GRAY_DARK_5,\r\n COLOR_GRAY_DARK_6,\r\n COLOR_GRAY_LIGHT_1,\r\n COLOR_GRAY_LIGHT_2,\r\n COLOR_GRAY_LIGHT_3,\r\n COLOR_GRAY_LIGHT_4,\r\n COLOR_GRAY_LIGHT_5,\r\n COLOR_GRAY_LIGHT_6,\r\n COLOR_GREEN_DARK_1,\r\n COLOR_GREEN_DARK_2,\r\n COLOR_GREEN_DARK_3,\r\n COLOR_GREEN_DARK_4,\r\n COLOR_GREEN_DARK_5,\r\n COLOR_GREEN_DARK_6,\r\n COLOR_GREEN_LIGHT_1,\r\n COLOR_GREEN_LIGHT_2,\r\n COLOR_GREEN_LIGHT_3,\r\n COLOR_GREEN_LIGHT_4,\r\n COLOR_GREEN_LIGHT_5,\r\n COLOR_GREEN_LIGHT_6,\r\n COLOR_ORANGE_DARK_1,\r\n COLOR_ORANGE_DARK_2,\r\n COLOR_ORANGE_DARK_3,\r\n COLOR_ORANGE_DARK_4,\r\n COLOR_ORANGE_DARK_5,\r\n COLOR_ORANGE_DARK_6,\r\n COLOR_ORANGE_LIGHT_1,\r\n COLOR_ORANGE_LIGHT_2,\r\n COLOR_ORANGE_LIGHT_3,\r\n COLOR_ORANGE_LIGHT_4,\r\n COLOR_ORANGE_LIGHT_5,\r\n COLOR_ORANGE_LIGHT_6,\r\n COLOR_RED_DARK_1,\r\n COLOR_RED_DARK_2,\r\n COLOR_RED_DARK_3,\r\n COLOR_RED_DARK_4,\r\n COLOR_RED_DARK_5,\r\n COLOR_RED_DARK_6,\r\n COLOR_RED_LIGHT_1,\r\n COLOR_RED_LIGHT_2,\r\n COLOR_RED_LIGHT_3,\r\n COLOR_RED_LIGHT_4,\r\n COLOR_RED_LIGHT_5,\r\n COLOR_RED_LIGHT_6,\r\n COLOR_VIOLET_DARK_1,\r\n COLOR_VIOLET_DARK_2,\r\n COLOR_VIOLET_DARK_3,\r\n COLOR_VIOLET_DARK_4,\r\n COLOR_VIOLET_DARK_5,\r\n COLOR_VIOLET_DARK_6,\r\n COLOR_VIOLET_LIGHT_1,\r\n COLOR_VIOLET_LIGHT_2,\r\n COLOR_VIOLET_LIGHT_3,\r\n COLOR_VIOLET_LIGHT_4,\r\n COLOR_VIOLET_LIGHT_5,\r\n COLOR_VIOLET_LIGHT_6,\r\n COLOR_YELLOW_DARK_1,\r\n COLOR_YELLOW_DARK_2,\r\n COLOR_YELLOW_DARK_3,\r\n COLOR_YELLOW_DARK_4,\r\n COLOR_YELLOW_DARK_5,\r\n COLOR_YELLOW_DARK_6,\r\n COLOR_YELLOW_LIGHT_1,\r\n COLOR_YELLOW_LIGHT_2,\r\n COLOR_YELLOW_LIGHT_3,\r\n COLOR_YELLOW_LIGHT_4,\r\n COLOR_YELLOW_LIGHT_5,\r\n COLOR_YELLOW_LIGHT_6,\r\n} from './variables';\r\n\r\nconst base = {\r\n white: COLOR_BASE_WHITE,\r\n black: COLOR_BASE_BLACK,\r\n blue: COLOR_BASE_BLUE,\r\n orange: COLOR_BASE_ORANGE,\r\n red: COLOR_BASE_RED,\r\n green: COLOR_BASE_GREEN,\r\n yellow: COLOR_BASE_YELLOW,\r\n violet: COLOR_BASE_VIOLET,\r\n fuscia: COLOR_BASE_FUSCIA,\r\n};\r\n\r\nconst gray = {\r\n light1: COLOR_GRAY_LIGHT_1,\r\n light2: COLOR_GRAY_LIGHT_2,\r\n light3: COLOR_GRAY_LIGHT_3,\r\n light4: COLOR_GRAY_LIGHT_4,\r\n light5: COLOR_GRAY_LIGHT_5,\r\n light6: COLOR_GRAY_LIGHT_6,\r\n base: COLOR_BASE_GRAY,\r\n dark1: COLOR_GRAY_DARK_1,\r\n dark2: COLOR_GRAY_DARK_2,\r\n dark3: COLOR_GRAY_DARK_3,\r\n dark4: COLOR_GRAY_DARK_4,\r\n dark5: COLOR_GRAY_DARK_5,\r\n dark6: COLOR_GRAY_DARK_6,\r\n};\r\n\r\nconst blue = {\r\n light1: COLOR_BLUE_LIGHT_1,\r\n light2: COLOR_BLUE_LIGHT_2,\r\n light3: COLOR_BLUE_LIGHT_3,\r\n light4: COLOR_BLUE_LIGHT_4,\r\n light5: COLOR_BLUE_LIGHT_5,\r\n light6: COLOR_BLUE_LIGHT_6,\r\n base: COLOR_BASE_BLUE,\r\n dark1: COLOR_BLUE_DARK_1,\r\n dark2: COLOR_BLUE_DARK_2,\r\n dark3: COLOR_BLUE_DARK_3,\r\n dark4: COLOR_BLUE_DARK_4,\r\n dark5: COLOR_BLUE_DARK_5,\r\n dark6: COLOR_BLUE_DARK_6,\r\n};\r\n\r\nconst orange = {\r\n light1: COLOR_ORANGE_LIGHT_1,\r\n light2: COLOR_ORANGE_LIGHT_2,\r\n light3: COLOR_ORANGE_LIGHT_3,\r\n light4: COLOR_ORANGE_LIGHT_4,\r\n light5: COLOR_ORANGE_LIGHT_5,\r\n light6: COLOR_ORANGE_LIGHT_6,\r\n base: COLOR_BASE_ORANGE,\r\n dark1: COLOR_ORANGE_DARK_1,\r\n dark2: COLOR_ORANGE_DARK_2,\r\n dark3: COLOR_ORANGE_DARK_3,\r\n dark4: COLOR_ORANGE_DARK_4,\r\n dark5: COLOR_ORANGE_DARK_5,\r\n dark6: COLOR_ORANGE_DARK_6,\r\n};\r\n\r\nconst red = {\r\n light1: COLOR_RED_LIGHT_1,\r\n light2: COLOR_RED_LIGHT_2,\r\n light3: COLOR_RED_LIGHT_3,\r\n light4: COLOR_RED_LIGHT_4,\r\n light5: COLOR_RED_LIGHT_5,\r\n light6: COLOR_RED_LIGHT_6,\r\n base: COLOR_BASE_RED,\r\n dark1: COLOR_RED_DARK_1,\r\n dark2: COLOR_RED_DARK_2,\r\n dark3: COLOR_RED_DARK_3,\r\n dark4: COLOR_RED_DARK_4,\r\n dark5: COLOR_RED_DARK_5,\r\n dark6: COLOR_RED_DARK_6,\r\n};\r\n\r\nconst green = {\r\n light1: COLOR_GREEN_LIGHT_1,\r\n light2: COLOR_GREEN_LIGHT_2,\r\n light3: COLOR_GREEN_LIGHT_3,\r\n light4: COLOR_GREEN_LIGHT_4,\r\n light5: COLOR_GREEN_LIGHT_5,\r\n light6: COLOR_GREEN_LIGHT_6,\r\n base: COLOR_BASE_GREEN,\r\n dark1: COLOR_GREEN_DARK_1,\r\n dark2: COLOR_GREEN_DARK_2,\r\n dark3: COLOR_GREEN_DARK_3,\r\n dark4: COLOR_GREEN_DARK_4,\r\n dark5: COLOR_GREEN_DARK_5,\r\n dark6: COLOR_GREEN_DARK_6,\r\n};\r\n\r\nconst yellow = {\r\n light1: COLOR_YELLOW_LIGHT_1,\r\n light2: COLOR_YELLOW_LIGHT_2,\r\n light3: COLOR_YELLOW_LIGHT_3,\r\n light4: COLOR_YELLOW_LIGHT_4,\r\n light5: COLOR_YELLOW_LIGHT_5,\r\n light6: COLOR_YELLOW_LIGHT_6,\r\n base: COLOR_BASE_YELLOW,\r\n dark1: COLOR_YELLOW_DARK_1,\r\n dark2: COLOR_YELLOW_DARK_2,\r\n dark3: COLOR_YELLOW_DARK_3,\r\n dark4: COLOR_YELLOW_DARK_4,\r\n dark5: COLOR_YELLOW_DARK_5,\r\n dark6: COLOR_YELLOW_DARK_6,\r\n};\r\n\r\nconst violet = {\r\n light1: COLOR_VIOLET_LIGHT_1,\r\n light2: COLOR_VIOLET_LIGHT_2,\r\n light3: COLOR_VIOLET_LIGHT_3,\r\n light4: COLOR_VIOLET_LIGHT_4,\r\n light5: COLOR_VIOLET_LIGHT_5,\r\n light6: COLOR_VIOLET_LIGHT_6,\r\n base: COLOR_BASE_VIOLET,\r\n dark1: COLOR_VIOLET_DARK_1,\r\n dark2: COLOR_VIOLET_DARK_2,\r\n dark3: COLOR_VIOLET_DARK_3,\r\n dark4: COLOR_VIOLET_DARK_4,\r\n dark5: COLOR_VIOLET_DARK_5,\r\n dark6: COLOR_VIOLET_DARK_6,\r\n};\r\n\r\nconst fuscia = {\r\n light1: COLOR_FUSCIA_LIGHT_1,\r\n light2: COLOR_FUSCIA_LIGHT_2,\r\n light3: COLOR_FUSCIA_LIGHT_3,\r\n light4: COLOR_FUSCIA_LIGHT_4,\r\n light5: COLOR_FUSCIA_LIGHT_5,\r\n light6: COLOR_FUSCIA_LIGHT_6,\r\n base: COLOR_BASE_FUSCIA,\r\n dark1: COLOR_FUSCIA_DARK_1,\r\n dark2: COLOR_FUSCIA_DARK_2,\r\n dark3: COLOR_FUSCIA_DARK_3,\r\n dark4: COLOR_FUSCIA_DARK_4,\r\n dark5: COLOR_FUSCIA_DARK_5,\r\n dark6: COLOR_FUSCIA_DARK_6,\r\n};\r\n\r\nexport default {\r\n base,\r\n gray,\r\n blue,\r\n orange,\r\n red,\r\n green,\r\n yellow,\r\n violet,\r\n fuscia,\r\n primary: blue,\r\n secondary: gray,\r\n danger: red,\r\n success: green,\r\n\r\n /**\r\n * TODO Are these needed?\r\n */\r\n //warning: yellow,\r\n //info: fuscia,\r\n //light: fuscia,\r\n //dark: fuscia,\r\n};\r\n","import {\r\n ELEVATION_SHADOW_1,\r\n ELEVATION_SHADOW_2,\r\n ELEVATION_SHADOW_3,\r\n ELEVATION_SHADOW_4,\r\n ELEVATION_SHADOW_5,\r\n ELEVATION_SHADOW_6,\r\n} from './variables';\r\n\r\n/**\r\n * Elevation, for giving containers a sense of elevation through shadows.\r\n */\r\n\r\nconst elevation = {\r\n shadow1: {\r\n boxShadow: ELEVATION_SHADOW_1,\r\n },\r\n shadow2: {\r\n boxShadow: ELEVATION_SHADOW_2,\r\n },\r\n shadow3: {\r\n boxShadow: ELEVATION_SHADOW_3,\r\n },\r\n shadow4: {\r\n boxShadow: ELEVATION_SHADOW_4,\r\n },\r\n shadow5: {\r\n boxShadow: ELEVATION_SHADOW_5,\r\n },\r\n shadow6: {\r\n boxShadow: ELEVATION_SHADOW_6,\r\n },\r\n};\r\n\r\nexport default elevation;\r\n","const SMALL = 24;\nconst MEDIUM = 32;\nconst LARGE = 40;\n\nconst reset = ({ color, typography }) => ({\n ...typography.base,\n border: \"none\",\n outline: \"none\",\n margin: 0,\n padding: 0,\n width: \"100%\"\n});\n\n/**\n * Values defining whitespace in a systematic way.\n */\nconst input = ({ color, typography }) => ({\n /**\n * Size related styles properties.\n */\n small: {\n ...reset({ color, typography }),\n height: `${SMALL}px`,\n lineHeight: `${SMALL}px`,\n fontSize: \"14px\"\n },\n\n medium: {\n ...reset({ color, typography }),\n height: `${MEDIUM}px`,\n lineHeight: `${MEDIUM}px`,\n fontSize: \"16px\"\n },\n\n large: {\n ...reset({ color, typography }),\n height: `${LARGE}px`,\n lineHeight: `${LARGE}px`,\n fontSize: \"18px\"\n },\n\n textAreaMedium: {\n ...reset({ color, typography }),\n height: `100%`,\n lineHeight: `${MEDIUM}px`,\n fontSize: \"16px\",\n resize: \"none\",\n border: \"none\"\n }\n});\n\nexport default input;\n","/**\r\n * Values defining whitespace in a systematic way using the 8pt grid.\r\n */\r\nimport {\r\n SPACING_LARGE,\r\n SPACING_LARGER,\r\n SPACING_LARGEST,\r\n SPACING_MEDIUM,\r\n SPACING_SMALL,\r\n SPACING_SMALLER,\r\n SPACING_SMALLEST,\r\n} from './variables';\r\n\r\nconst spacing = {\r\n /**\r\n * Apply padding or margin to a single side of an element.\r\n */\r\n smallest: `${SPACING_SMALLEST}px`,\r\n smaller: `${SPACING_SMALLER}px`,\r\n small: `${SPACING_SMALL}px`,\r\n medium: `${SPACING_MEDIUM}px`,\r\n large: `${SPACING_LARGE}px`,\r\n larger: `${SPACING_LARGER}px`,\r\n largest: `${SPACING_LARGEST}px`,\r\n\r\n /**\r\n * Use to assign margin or padding to elements.\r\n */\r\n inset: {\r\n /**\r\n * Equal spacing on all four sides.\r\n */\r\n smallest: `${SPACING_SMALLEST}px ${SPACING_SMALLEST}px ${SPACING_SMALLEST}px ${SPACING_SMALLEST}px`,\r\n smaller: `${SPACING_SMALLER}px ${SPACING_SMALLER}px ${SPACING_SMALLER}px ${SPACING_SMALLER}px`,\r\n small: `${SPACING_SMALL}px ${SPACING_SMALL}px ${SPACING_SMALL}px ${SPACING_SMALL}px`,\r\n medium: `${SPACING_MEDIUM}px ${SPACING_MEDIUM}px ${SPACING_MEDIUM}px ${SPACING_MEDIUM}px`,\r\n large: `${SPACING_LARGE}px ${SPACING_LARGE}px ${SPACING_LARGE}px ${SPACING_LARGE}px`,\r\n larger: `${SPACING_LARGER}px ${SPACING_LARGER}px ${SPACING_LARGER}px ${SPACING_LARGER}px`,\r\n largest: `${SPACING_LARGEST}px ${SPACING_LARGEST}px ${SPACING_LARGEST}px ${SPACING_LARGEST}px`,\r\n\r\n /**\r\n * Larger amount of spacing applied to left and right sides as if the element has been\r\n * stretched.\r\n */\r\n stretch: {\r\n smallest: `1px ${SPACING_SMALLEST}px 1px ${SPACING_SMALLEST}px`,\r\n smaller: `${SPACING_SMALLEST}px ${SPACING_SMALLER}px ${SPACING_SMALLEST}px ${SPACING_SMALLER}px`,\r\n small: `${SPACING_SMALLER}px ${SPACING_SMALL}px ${SPACING_SMALLER}px ${SPACING_SMALL}px`,\r\n medium: `${SPACING_SMALL}px ${SPACING_MEDIUM}px ${SPACING_SMALL}px ${SPACING_MEDIUM}px`,\r\n large: `${SPACING_MEDIUM}px ${SPACING_LARGE}px ${SPACING_MEDIUM}px ${SPACING_LARGE}px`,\r\n larger: `${SPACING_LARGE}px ${SPACING_LARGER}px ${SPACING_LARGE}px ${SPACING_LARGER}px`,\r\n largest: `${SPACING_LARGER}px ${SPACING_LARGEST}px ${SPACING_LARGER}px ${SPACING_LARGEST}px`,\r\n },\r\n\r\n /**\r\n * Smaller amount of spacing applied to left and right sides as if the element has been\r\n * squished.\r\n */\r\n squish: {\r\n smallest: `${SPACING_SMALLEST}px 1px ${SPACING_SMALLEST}px 1px`,\r\n smaller: `${SPACING_SMALLER}px ${SPACING_SMALLEST}px ${SPACING_SMALLER}px ${SPACING_SMALLEST}px`,\r\n small: `${SPACING_SMALL}px ${SPACING_SMALLER}px ${SPACING_SMALL}px ${SPACING_SMALLER}px`,\r\n medium: `${SPACING_MEDIUM}px ${SPACING_SMALL}px ${SPACING_MEDIUM}px ${SPACING_SMALL}px`,\r\n large: `${SPACING_LARGE}px ${SPACING_MEDIUM}px ${SPACING_LARGE}px ${SPACING_MEDIUM}px`,\r\n larger: `${SPACING_LARGER}px ${SPACING_LARGE}px ${SPACING_LARGER}px ${SPACING_LARGE}px`,\r\n largest: `${SPACING_LARGEST}px ${SPACING_LARGER}px ${SPACING_LARGEST}px ${SPACING_LARGER}px`,\r\n },\r\n },\r\n\r\n /**\r\n * Spacing applied to the bottom.\r\n */\r\n stack: {\r\n smallest: `0 0 ${SPACING_SMALLEST}px 0`,\r\n smaller: `0 0 ${SPACING_SMALLER}px 0`,\r\n small: `0 0 ${SPACING_SMALL}px 0`,\r\n medium: `0 0 ${SPACING_MEDIUM}px 0`,\r\n large: `0 0 ${SPACING_LARGE}px 0`,\r\n larger: `0 0 ${SPACING_LARGER}px 0`,\r\n largest: `0 0 ${SPACING_LARGEST}px 0`,\r\n },\r\n};\r\n\r\nexport default spacing;\r\n","import { px } from '../../util/jss';\r\nimport {\r\n TYPE_FONT_FAMILY_SAN_SERIF,\r\n TYPE_FONT_SIZE_DEFAULT,\r\n TYPE_FONT_SIZE_LARGE,\r\n TYPE_FONT_SIZE_LARGER,\r\n TYPE_FONT_SIZE_LARGEST,\r\n TYPE_FONT_SIZE_MEDIUM,\r\n TYPE_FONT_SIZE_SMALL,\r\n TYPE_FONT_SIZE_SMALLER,\r\n TYPE_FONT_SIZE_SMALLEST,\r\n TYPE_FONT_WEIGHT_DEFAULT,\r\n TYPE_FONT_WEIGHT_HEAVIER,\r\n TYPE_FONT_WEIGHT_HEAVIEST,\r\n TYPE_FONT_WEIGHT_HEAVY,\r\n TYPE_FONT_WEIGHT_LIGHT,\r\n TYPE_FONT_WEIGHT_LIGHTER,\r\n TYPE_FONT_WEIGHT_LIGHTEST,\r\n TYPE_FONT_WEIGHT_NORMAL,\r\n TYPE_LINE_HEIGHT_RATIO_HEADING,\r\n} from './variables';\r\n\r\n/**\r\n * TODO Heading font sizes\r\n */\r\n\r\nconst FONT_SIZE_UNIT = 0.0625;\r\n\r\nconst base = {\r\n fontFamily: TYPE_FONT_FAMILY_SAN_SERIF,\r\n};\r\n\r\nconst typography = ({ core }) => ({\r\n size: {\r\n smallest: TYPE_FONT_SIZE_SMALLEST,\r\n smaller: TYPE_FONT_SIZE_SMALLER,\r\n small: TYPE_FONT_SIZE_SMALL,\r\n medium: TYPE_FONT_SIZE_MEDIUM,\r\n large: TYPE_FONT_SIZE_LARGE,\r\n larger: TYPE_FONT_SIZE_LARGER,\r\n largest: TYPE_FONT_SIZE_LARGEST,\r\n default: TYPE_FONT_SIZE_DEFAULT,\r\n },\r\n\r\n weight: {\r\n lightest: TYPE_FONT_WEIGHT_LIGHTEST,\r\n lighter: TYPE_FONT_WEIGHT_LIGHTER,\r\n light: TYPE_FONT_WEIGHT_LIGHT,\r\n normal: TYPE_FONT_WEIGHT_NORMAL,\r\n heavy: TYPE_FONT_WEIGHT_HEAVY,\r\n heavier: TYPE_FONT_WEIGHT_HEAVIER,\r\n heaviest: TYPE_FONT_WEIGHT_HEAVIEST,\r\n default: TYPE_FONT_WEIGHT_DEFAULT,\r\n },\r\n\r\n base: {\r\n ...base,\r\n },\r\n\r\n smallest: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_SMALLEST),\r\n lineHeight: px(core.grid.unit.x2),\r\n fontWeight: TYPE_FONT_WEIGHT_NORMAL,\r\n },\r\n\r\n smaller: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_SMALLER),\r\n lineHeight: px(core.grid.unit.x2),\r\n fontWeight: TYPE_FONT_WEIGHT_NORMAL,\r\n },\r\n\r\n small: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_SMALL),\r\n lineHeight: px(core.grid.unit.x2),\r\n fontWeight: TYPE_FONT_WEIGHT_NORMAL,\r\n },\r\n\r\n medium: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_MEDIUM),\r\n lineHeight: px(core.grid.unit.x3),\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHTER,\r\n },\r\n\r\n large: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_LARGE),\r\n lineHeight: px(core.grid.unit.x3),\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHTER,\r\n },\r\n\r\n larger: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_LARGER),\r\n lineHeight: px(core.grid.unit.x4),\r\n fontWeight: TYPE_FONT_WEIGHT_NORMAL,\r\n },\r\n\r\n largest: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_LARGEST),\r\n lineHeight: px(core.grid.unit.x6),\r\n fontWeight: TYPE_FONT_WEIGHT_NORMAL,\r\n },\r\n\r\n paragraph: {\r\n ...base,\r\n fontSize: px(TYPE_FONT_SIZE_DEFAULT),\r\n lineHeight: px(core.grid.unit.x3),\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHTER,\r\n maxWidth: px(core.grid.unit.x2 * 38),\r\n paddingBottom: px(core.grid.unit.x2),\r\n },\r\n\r\n h1: {\r\n ...base,\r\n fontSize: `${96 * FONT_SIZE_UNIT}rem`,\r\n lineHeight: TYPE_LINE_HEIGHT_RATIO_HEADING,\r\n letterSpacing: -1.5,\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHTEST,\r\n\r\n '&::first-letter': {\r\n marginLeft: '-9px',\r\n },\r\n },\r\n\r\n h2: {\r\n ...base,\r\n fontSize: `${60 * FONT_SIZE_UNIT}rem`,\r\n lineHeight: TYPE_LINE_HEIGHT_RATIO_HEADING,\r\n letterSpacing: -0.5,\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHTER,\r\n\r\n '&::first-letter': {\r\n marginLeft: '-6px',\r\n },\r\n },\r\n\r\n h3: {\r\n ...base,\r\n fontSize: `${48 * FONT_SIZE_UNIT}rem`,\r\n lineHeight: TYPE_LINE_HEIGHT_RATIO_HEADING,\r\n letterSpacing: 0,\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHT,\r\n\r\n '&::first-letter': {\r\n marginLeft: '-4px',\r\n },\r\n },\r\n\r\n h4: {\r\n ...base,\r\n fontSize: `${34 * FONT_SIZE_UNIT}rem`,\r\n lineHeight: TYPE_LINE_HEIGHT_RATIO_HEADING,\r\n letterSpacing: 0.25,\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHT,\r\n\r\n '&::first-letter': {\r\n marginLeft: '-3px',\r\n },\r\n },\r\n\r\n h5: {\r\n ...base,\r\n fontSize: `${24 * FONT_SIZE_UNIT}rem`,\r\n lineHeight: TYPE_LINE_HEIGHT_RATIO_HEADING,\r\n letterSpacing: 0,\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHT,\r\n\r\n '&::first-letter': {\r\n marginLeft: '-1px',\r\n },\r\n },\r\n\r\n h6: {\r\n ...base,\r\n fontSize: `${20 * FONT_SIZE_UNIT}rem`,\r\n lineHeight: TYPE_LINE_HEIGHT_RATIO_HEADING,\r\n letterSpacing: 0.15,\r\n fontWeight: TYPE_FONT_WEIGHT_LIGHT,\r\n },\r\n});\r\nexport default typography;\r\n","import icon from './impl/icon';\r\nimport box from './impl/box';\r\nimport breakpoint from './impl/breakpoint';\r\nimport button from './impl/button';\r\nimport color from './impl/color';\r\nimport elevation from './impl/elevation';\r\nimport inputImpl from './impl/input';\r\nimport spacing from './impl/spacing';\r\nimport typographyImpl from './impl/typography';\r\nimport {\r\n GRID_UNIT_1X,\r\n GRID_UNIT_2X,\r\n GRID_UNIT_3X,\r\n GRID_UNIT_4X,\r\n GRID_UNIT_5X,\r\n GRID_UNIT_6X,\r\n} from './impl/variables';\r\n\r\n/**\r\n * Core\r\n */\r\nconst core = {\r\n grid: {\r\n unit: {\r\n x1: GRID_UNIT_1X,\r\n x2: GRID_UNIT_2X,\r\n x3: GRID_UNIT_3X,\r\n x4: GRID_UNIT_4X,\r\n x5: GRID_UNIT_5X,\r\n x6: GRID_UNIT_6X,\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Typography setup.\r\n */\r\nconst typography = typographyImpl({ core });\r\n\r\n/**\r\n * Input setup.\r\n */\r\nconst input = inputImpl({\r\n color,\r\n typography,\r\n});\r\n\r\n/**\r\n * Windsor react base library default theme - defined as an object literal. Each of the areas\r\n * (typography, spacing, etc.) of the theme are definied in separate objects and then included\r\n * here.\r\n *\r\n * Custom themes are created by overriding the values at a particular path on this object before\r\n * supplying it to the Jss ThemeProvider. An example of how to that would be:\r\n *\r\n * const myTheme = Object.assign({}, defaultTheme, myOverrides);\r\n *\r\n */\r\nconst theme = {\r\n core,\r\n color,\r\n typography,\r\n elevation,\r\n spacing,\r\n breakpoint,\r\n button,\r\n input,\r\n box,\r\n icon,\r\n};\r\nexport default theme;\r\n","import PropTypes from 'prop-types';\r\n\r\n/**\r\n * Defines the list of availble sizes.\r\n */\r\nexport const propTypeSize = PropTypes.oneOf([\r\n 'smallest',\r\n 'smaller',\r\n 'small',\r\n 'medium',\r\n 'large',\r\n 'larger',\r\n 'largest',\r\n]);\r\n\r\n/**\r\n * Defines the list of values for horizontal alignment.\r\n */\r\nexport const propTypeAlignHorizontal = PropTypes.oneOf(['left', 'right', 'center']);\r\n\r\n/**\r\n * Defines the list of values for vertical alignment.\r\n */\r\nexport const propTypeAlignVertical = PropTypes.oneOf(['top', 'bottom', 'center']);\r\n\r\n/**\r\n * Defines the list of availble base colors and grays.\r\n */\r\nexport const propTypeColor = PropTypes.oneOf([\r\n 'white',\r\n 'black',\r\n 'gray',\r\n 'blue',\r\n 'orange',\r\n 'red',\r\n 'green',\r\n 'yellow',\r\n 'violet',\r\n 'fuscia',\r\n 'primary',\r\n 'secondary',\r\n 'danger',\r\n 'success',\r\n]);\r\n\r\n/**\r\n * Defines the list of availble base color variants, light1, light2, etc.\r\n */\r\nexport const propTypeColorVariant = PropTypes.oneOf([\r\n 'base',\r\n 'light1',\r\n 'light2',\r\n 'light3',\r\n 'light4',\r\n 'light5',\r\n 'light6',\r\n 'dark1',\r\n 'dark2',\r\n 'dark3',\r\n 'dark4',\r\n 'dark5',\r\n 'dark6',\r\n 'gray1',\r\n 'gray2',\r\n 'gray3',\r\n 'gray4',\r\n 'gray5',\r\n 'gray6',\r\n 'gray7',\r\n 'gray8',\r\n 'gray9',\r\n 'gray10',\r\n]);\r\n\r\n/**\r\n * Defines the list of available border sides.\r\n */\r\nexport const propTypeBorderSides = PropTypes.oneOfType([PropTypes.string, PropTypes.array]);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor, jssSize } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant, propTypeSize } from '../util/propTypes';\r\n\r\n/**\r\n * A low-level component for a span of text.\r\n */\r\nclass Text extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Is a block element.\r\n */\r\n block: PropTypes.bool,\r\n\r\n /**\r\n * Bold.\r\n */\r\n bold: PropTypes.bool,\r\n\r\n /**\r\n * All capital letters.\r\n */\r\n caps: PropTypes.bool,\r\n\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * JSS classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Additional className to style the text.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Elipsis when text overflows.\r\n */\r\n elipsis: PropTypes.bool,\r\n\r\n /**\r\n * Italics\r\n */\r\n italic: PropTypes.bool,\r\n\r\n /**\r\n * Underlined\r\n */\r\n underline: PropTypes.bool,\r\n\r\n /**\r\n * Make text unselectable.\r\n */\r\n noselect: PropTypes.bool,\r\n\r\n /**\r\n * Do not allow text to wrap.\r\n */\r\n nowrap: PropTypes.bool,\r\n\r\n /**\r\n * Text size.\r\n */\r\n size: propTypeSize,\r\n\r\n /**\r\n * Title of the text when hovering.\r\n */\r\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n\r\n /**\r\n * Color white.\r\n *\r\n * @deprecated\r\n */\r\n white: PropTypes.bool,\r\n\r\n /**\r\n * Additional styles.\r\n */\r\n style: PropTypes.object,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n className: undefined,\r\n title: undefined,\r\n noselect: false,\r\n nowrap: false,\r\n elipsis: false,\r\n block: false,\r\n white: false,\r\n caps: false,\r\n bold: false,\r\n italic: false,\r\n underline: false,\r\n size: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n style: undefined,\r\n };\r\n\r\n renderClassNames() {\r\n return [\r\n /**\r\n * Base text styles.\r\n */\r\n this.props.classes.text,\r\n\r\n /**\r\n * Color.\r\n */\r\n this.props.color && this.props.classes.color,\r\n\r\n /**\r\n * Size.\r\n */\r\n jssSize(this.props),\r\n\r\n /**\r\n * Addiditonal style selector.\r\n */\r\n this.props.className,\r\n ].join(' ');\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n text: {\r\n ...theme.typography.base,\r\n display: props => (props.block ? 'block' : undefined),\r\n userSelect: props => (props.noselect ? 'none' : undefined),\r\n whiteSpace: props => (props.nowrap ? 'nowrap' : undefined),\r\n overflow: props => (props.elipsis ? 'hidden' : undefined),\r\n textOverflow: props => (props.elipsis ? 'ellipsis' : undefined),\r\n textTransform: props => (props.caps ? 'uppercase' : undefined),\r\n fontWeight: props => (props.bold ? '600' : undefined),\r\n fontStyle: props => (props.italic ? 'italic' : undefined),\r\n textDecoration: props => (props.underline ? 'underline' : undefined),\r\n },\r\n\r\n smallest: {\r\n ...theme.typography.smallest,\r\n },\r\n\r\n smaller: {\r\n ...theme.typography.smaller,\r\n },\r\n\r\n small: {\r\n ...theme.typography.small,\r\n },\r\n\r\n medium: {\r\n ...theme.typography.medium,\r\n },\r\n\r\n large: {\r\n ...theme.typography.large,\r\n },\r\n\r\n larger: {\r\n ...theme.typography.larger,\r\n },\r\n\r\n largest: {\r\n ...theme.typography.largest,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Text);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor, jssSize, px } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant, propTypeSize } from '../util/propTypes';\r\n\r\n/**\r\n * A paragraph of text.\r\n */\r\nclass Paragraph extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Additional className to style the text.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Indent the paragraph.\r\n */\r\n indent: PropTypes.bool,\r\n\r\n /**\r\n * Size of the text in the paragraph.\r\n */\r\n size: propTypeSize,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n className: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n indent: undefined,\r\n size: undefined,\r\n };\r\n\r\n renderClassnames() {\r\n return [\r\n /**\r\n * Base paragrash styles.\r\n */\r\n this.props.classes.paragraph,\r\n\r\n /**\r\n * Color.\r\n */\r\n this.props.color && this.props.classes.color,\r\n\r\n /**\r\n * Indent - yes or no.\r\n */\r\n this.props.indent && this.props.classes.indent,\r\n\r\n /**\r\n * Size.\r\n */\r\n jssSize(this.props),\r\n\r\n /**\r\n * Addiditonal style selector.\r\n */\r\n this.props.className,\r\n ].join(' ');\r\n }\r\n\r\n render() {\r\n return

{this.props.children}

;\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n paragraph: {\r\n ...theme.typography.paragraph,\r\n },\r\n\r\n indent: {\r\n textIndent: px(theme.core.grid.unit.x2),\r\n },\r\n\r\n smallest: {\r\n fontSize: theme.typography.size.smallest,\r\n },\r\n\r\n smaller: {\r\n fontSize: theme.typography.size.smaller,\r\n },\r\n\r\n small: {\r\n fontSize: theme.typography.size.small,\r\n },\r\n\r\n medium: {\r\n fontSize: theme.typography.size.medium,\r\n },\r\n\r\n large: {\r\n fontSize: theme.typography.size.large,\r\n },\r\n\r\n larger: {\r\n fontSize: theme.typography.size.larger,\r\n },\r\n\r\n largest: {\r\n fontSize: theme.typography.size.largest,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Paragraph);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { jssSize } from '../util/jss';\r\nimport { propTypeSize } from '../util/propTypes';\r\n\r\n/**\r\n * A link renders as an html anchor.\r\n */\r\nclass Link extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Should be a block element.\r\n */\r\n block: PropTypes.bool,\r\n\r\n /**\r\n * Bold text.\r\n */\r\n bold: PropTypes.bool,\r\n\r\n /**\r\n * Capitalize text.\r\n */\r\n caps: PropTypes.bool,\r\n\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * JSS classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Additional className to style the text.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Elipsis when text overflows\r\n */\r\n elipsis: PropTypes.bool,\r\n\r\n /**\r\n * Links to...\r\n */\r\n href: PropTypes.string,\r\n\r\n /**\r\n * Do not allow text to wrap.\r\n */\r\n nowrap: PropTypes.bool,\r\n\r\n /**\r\n * Links to...\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * Text size.\r\n */\r\n size: propTypeSize,\r\n\r\n /**\r\n * Title\r\n */\r\n title: PropTypes.string,\r\n\r\n /**\r\n * Href target\r\n */\r\n target: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n block: false,\r\n caps: false,\r\n children: undefined,\r\n className: undefined,\r\n elipsis: false,\r\n href: undefined,\r\n nowrap: false,\r\n onClick: undefined,\r\n size: undefined,\r\n title: undefined,\r\n target: undefined,\r\n };\r\n\r\n renderClassNames() {\r\n return [\r\n /**\r\n * Base anchor styles.\r\n */\r\n this.props.classes.anchor,\r\n\r\n /**\r\n * Size.\r\n */\r\n jssSize(this.props),\r\n\r\n /**\r\n * Addiditonal style selector.\r\n */\r\n this.props.className,\r\n ].join(' ');\r\n }\r\n\r\n render() {\r\n const { href, onClick, title, children, target } = this.props;\r\n\r\n const classNames = this.renderClassNames();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n anchor: {\r\n ...theme.typography.text,\r\n color: `${theme.color.blue.base} !important`,\r\n fontWeight: props => (props.bold ? 'bold' : undefined),\r\n display: props => (props.block ? 'block' : 'inline-block'),\r\n userSelect: 'none',\r\n whiteSpace: props => (props.nowrap ? 'nowrap' : undefined),\r\n textOverflow: props => (props.elipsis ? 'ellipsis' : undefined),\r\n overflow: props => (props.elipsis ? 'hidden' : undefined),\r\n textTransform: props => (props.caps ? 'uppercase' : undefined),\r\n textDecoration: 'none',\r\n\r\n '&:hover': {\r\n color: `${theme.color.blue.dark4} !important`,\r\n cursor: props => (props.onClick ? 'pointer' : undefined),\r\n },\r\n\r\n '&:focus': {\r\n color: `${theme.color.blue.dark4} !important`,\r\n },\r\n\r\n '&:active': {\r\n color: `${theme.color.blue.dark4} !important`,\r\n },\r\n\r\n '&:visited': {\r\n color: `${theme.color.blue.base}`,\r\n },\r\n },\r\n\r\n smallest: {\r\n ...theme.typography.smallest,\r\n },\r\n\r\n smaller: {\r\n ...theme.typography.smaller,\r\n },\r\n\r\n small: {\r\n ...theme.typography.small,\r\n },\r\n\r\n medium: {\r\n ...theme.typography.medium,\r\n },\r\n\r\n large: {\r\n ...theme.typography.large,\r\n },\r\n\r\n larger: {\r\n ...theme.typography.larger,\r\n },\r\n\r\n largest: {\r\n ...theme.typography.largest,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Link);\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../util/propTypes';\r\n\r\nclass H1 extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n h1: {\r\n ...theme.typography.h1,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(H1);\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../util/propTypes';\r\n\r\nclass H2 extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n h2: {\r\n ...theme.typography.h2,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(H2);\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../util/propTypes';\r\n\r\nclass H3 extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n h3: {\r\n ...theme.typography.h3,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(H3);\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../util/propTypes';\r\n\r\nclass H4 extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n h4: {\r\n ...theme.typography.h4,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(H4);\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../util/propTypes';\r\n\r\nclass H5 extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n h5: {\r\n ...theme.typography.h5,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(H5);\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../util/propTypes';\r\n\r\nclass H6 extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Text color - blue, red, green, gray, etc.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Variant of text color - light3, light6, dark2, etc.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n color: undefined,\r\n colorVariant: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n h6: {\r\n ...theme.typography.h6,\r\n },\r\n\r\n color: {\r\n color: props => props.color && jssColor(theme, props),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(H6);\r\n","import Color from 'color';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColorLookup } from '../util/jss';\r\nimport { propTypeColor, propTypeSize } from '../util/propTypes';\r\n\r\nclass Button extends Component {\r\n static propTypes = {\r\n /**\r\n * Display as block.\r\n */\r\n block: PropTypes.bool,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Additional cass class name to apply.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Color scheme of the button.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Disable button.\r\n */\r\n disabled: PropTypes.bool,\r\n\r\n /**\r\n * onClick handler.\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * Size of button.\r\n */\r\n size: propTypeSize,\r\n\r\n /**\r\n * Inline style.\r\n */\r\n style: PropTypes.object,\r\n\r\n /**\r\n * The type of button. One of default, flat, or alt.\r\n */\r\n type: PropTypes.oneOf(['default', 'flat', 'alt']),\r\n\r\n /**\r\n * Button is depressed.\r\n */\r\n pressed: PropTypes.bool,\r\n\r\n /**\r\n * Other props to consider:\r\n *\r\n * round\r\n * circle\r\n * block\r\n * raised\r\n */\r\n };\r\n\r\n static defaultProps = {\r\n color: 'gray',\r\n state: 'default',\r\n type: 'default',\r\n size: 'medium',\r\n disabled: false,\r\n };\r\n\r\n handleOnClick = e => {\r\n if (!this.props.disabled) {\r\n this.props.onClick(e);\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n button: {\r\n ...theme.button.reset,\r\n ...theme.button.base,\r\n //...theme.elevation.shadow1, TODO - Parameterize as 'raised'...\r\n color: props => fontColor(theme, props),\r\n fontWeight: props => fontWeight(theme, props),\r\n borderWidth: props => borderWidth(theme, props),\r\n borderColor: props => borderColor(theme, props),\r\n backgroundColor: props => backgoundColor(theme, props),\r\n\r\n transition: 'all 0.2s ease 0s',\r\n\r\n '&:hover': {\r\n cursor: props => (props.disabled ? 'not-allowed' : 'pointer'),\r\n backgroundColor: props => backgoundColor(theme, props, 'hover'),\r\n color: props => fontColor(theme, props, 'hover'),\r\n borderColor: props => borderColor(theme, props, 'hover'),\r\n },\r\n\r\n '&:focus': {\r\n backgroundColor: props => backgoundColor(theme, props, 'focus'),\r\n color: props => fontColor(theme, props, 'focus'),\r\n borderColor: props => color(theme, props, 'focus'),\r\n },\r\n\r\n '&:active': {\r\n backgroundColor: props => backgoundColor(theme, props, 'active'),\r\n color: props => fontColor(theme, props, 'active'),\r\n borderColor: props => color(theme, props, 'active'),\r\n },\r\n\r\n '&:disabled': {\r\n backgroundColor: props => backgoundColor(theme, props),\r\n color: props => fontColor(theme, props),\r\n borderColor: props => color(theme, props),\r\n },\r\n\r\n '& svg': {\r\n marginRight: theme.spacing.smaller,\r\n },\r\n },\r\n\r\n pressed: {\r\n backgroundColor: props => backgoundColor(theme, props, 'hover'),\r\n color: props => fontColor(theme, props, 'hover'),\r\n borderColor: props => borderColor(theme, props, 'hover'),\r\n },\r\n\r\n smallest: {\r\n ...theme.button.height.smallest,\r\n },\r\n\r\n smaller: {\r\n ...theme.button.height.smaller,\r\n },\r\n\r\n small: {\r\n ...theme.button.height.small,\r\n },\r\n\r\n medium: {\r\n ...theme.button.height.medium,\r\n },\r\n\r\n large: {\r\n ...theme.button.height.large,\r\n },\r\n\r\n larger: {\r\n ...theme.button.height.larger,\r\n },\r\n\r\n largest: {\r\n ...theme.button.height.largest,\r\n },\r\n\r\n block: {\r\n width: '100%',\r\n },\r\n});\r\n\r\n/**\r\n * Ensure contrast, when the base color is dark return 'light1', else 'dark6'.\r\n */\r\nconst fontColor = (theme, props, state) => {\r\n if (props.disabled && state === 'hover') return undefined;\r\n\r\n const bgColor = Color(backgoundColor(theme, props, state));\r\n\r\n switch (props.type) {\r\n case 'default':\r\n return bgColor.darken(0.2).isDark()\r\n ? color(theme, props, props.disabled ? 'light2' : 'light1')\r\n : color(theme, props, props.disabled ? 'dark5' : 'dark6');\r\n case 'flat':\r\n return color(theme, props, props.disabled ? 'light4' : 'base');\r\n case 'alt':\r\n return color(theme, props, props.disabled ? 'light4' : 'base');\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst fontWeight = (theme, props, state) => {\r\n switch (props.type) {\r\n case 'default':\r\n return props.disabled ? 300 : 400;\r\n case 'flat':\r\n return props.disabled ? 500 : 700;\r\n case 'alt':\r\n return props.disabled ? 300 : 500;\r\n default:\r\n return 400;\r\n }\r\n};\r\n\r\nconst backgroundColorVariantByState = (theme, props, state) => {\r\n switch (state) {\r\n case 'hover':\r\n return 'dark2';\r\n case 'focus':\r\n return 'dark2';\r\n case 'active':\r\n return 'dark2';\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst backgoundColor = (theme, props, state) => {\r\n if (props.disabled && state) return undefined;\r\n\r\n switch (props.type) {\r\n case 'default':\r\n return color(\r\n theme,\r\n props,\r\n !props.disabled ? state && backgroundColorVariantByState(theme, props, state) : 'light4'\r\n );\r\n case 'flat':\r\n return state && lightBackgoundColorByState(theme, props, state);\r\n case 'alt':\r\n return state && lightBackgoundColorByState(theme, props, state);\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst lightBackgoundColorByState = (theme, props, state) => {\r\n switch (state) {\r\n case 'hover':\r\n return color(theme, props, 'light1');\r\n case 'focus':\r\n return color(theme, props, 'light1');\r\n case 'active':\r\n return color(theme, props, 'light1');\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst borderWidth = (theme, props) => {\r\n switch (props.type) {\r\n case 'default':\r\n return 0;\r\n case 'flat':\r\n return 0;\r\n case 'alt':\r\n return undefined;\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst borderColor = (theme, props, state) => {\r\n if (props.disabled) {\r\n return color(theme, props, 'base');\r\n }\r\n\r\n switch (state) {\r\n case 'hover':\r\n return color(theme, props, 'dark2');\r\n case 'focus':\r\n return color(theme, props, 'dark2');\r\n case 'active':\r\n return color(theme, props, 'dark2');\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst color = (theme, props, variantKey) => {\r\n return jssColorLookup(theme, props.color, variantKey);\r\n};\r\n\r\nexport default injectSheet(styles)(Button);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColor, px } from '../util/jss';\r\nimport { propTypeColor, propTypeColorVariant, propTypeSize } from '../util/propTypes';\r\n\r\nconst PROPS_WITH_CLASSNAMES = ['stack', 'margin', 'mTop', 'mRight', 'mBottom', 'mLeft'];\r\n\r\n/**\r\n * Basic horizontal rule with options for color and spacing.\r\n */\r\nclass Hr extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Css classname.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Background color.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * Background color variant.\r\n */\r\n colorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * The amount of margin to apply..\r\n */\r\n margin: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the bottom.\r\n */\r\n mBottom: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the left side.\r\n */\r\n mLeft: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the right side.\r\n */\r\n mRight: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the top.\r\n */\r\n mTop: propTypeSize,\r\n\r\n /**\r\n * Is this box stacked - one on top of another.\r\n */\r\n stack: propTypeSize,\r\n\r\n /**\r\n * Thickness in px.\r\n */\r\n width: PropTypes.number,\r\n };\r\n\r\n static defaultProps = {\r\n className: undefined,\r\n color: 'gray',\r\n colorVariant: 'light2',\r\n margin: undefined,\r\n mBottom: undefined,\r\n mLeft: undefined,\r\n mRight: undefined,\r\n mTop: undefined,\r\n stack: undefined,\r\n width: 1,\r\n };\r\n\r\n propsAsClassnames() {\r\n return PROPS_WITH_CLASSNAMES.filter(propName => this.props[propName] !== undefined).map(\r\n prop => this.props.classes[prop]\r\n );\r\n }\r\n\r\n renderClassnames() {\r\n const classNames = [this.props.classes.hr].concat(this.propsAsClassnames());\r\n\r\n classNames.push(this.props.className);\r\n\r\n return classNames.join(' ');\r\n }\r\n\r\n render() {\r\n return
;\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n hr: {\r\n display: 'block',\r\n height: props => px(props.width),\r\n border: 0,\r\n borderTop: props => `${px(props.width)} solid ${jssColor(theme, props)}`,\r\n padding: 0,\r\n margin: 0,\r\n },\r\n\r\n margin: {\r\n margin: props => theme.spacing[props.margin],\r\n },\r\n\r\n mTop: {\r\n marginTop: props => theme.spacing[props.mTop],\r\n },\r\n\r\n mRight: {\r\n marginRight: props => theme.spacing[props.mRight],\r\n },\r\n\r\n mBottom: {\r\n marginBottom: props => theme.spacing[props.mBottom],\r\n },\r\n\r\n mLeft: {\r\n marginLeft: props => theme.spacing[props.mLeft],\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Hr);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColorLookup, px } from '../util/jss';\r\nimport {\r\n propTypeAlignHorizontal,\r\n propTypeBorderSides,\r\n propTypeColor,\r\n propTypeColorVariant,\r\n propTypeSize,\r\n} from '../util/propTypes';\r\n\r\nconst PROPS_WITH_CLASSNAMES = [\r\n 'stack',\r\n 'pad',\r\n 'margin',\r\n 'mTop',\r\n 'mRight',\r\n 'mBottom',\r\n 'mLeft',\r\n 'pTop',\r\n 'pBottom',\r\n 'pRight',\r\n 'pLeft',\r\n 'textAlign',\r\n];\r\n\r\nexport const CHILD_BOX_SELECTOR = 'WndJssBox'; // name it something to avoid naming clashes.\r\n\r\n/**\r\n * A box is a low-level component with many convenience properties for styling a div. You can apply\r\n * margin, padding, borders, and a background color to a box.\r\n */\r\nclass Box extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Border color.\r\n */\r\n borderColor: propTypeColor,\r\n\r\n /**\r\n * Border color variant.\r\n */\r\n borderColorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Bordered - Turns on the borders with the defaults.\r\n */\r\n bordered: PropTypes.bool,\r\n\r\n /**\r\n * Borders\r\n */\r\n borderSides: propTypeBorderSides,\r\n\r\n /**\r\n * Border thickness in px.\r\n */\r\n borderWidth: PropTypes.number,\r\n\r\n /**\r\n * Background color.\r\n */\r\n bgColor: propTypeColor,\r\n\r\n /**\r\n * Background color variant.\r\n */\r\n bgColorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Css classname.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * React ref callback to the root container.\r\n */\r\n containerRef: PropTypes.object,\r\n\r\n /**\r\n * Display the box inline.\r\n */\r\n inline: PropTypes.bool,\r\n\r\n /**\r\n * The amount of margin to apply to this box.\r\n */\r\n margin: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the bottom of this box.\r\n */\r\n mBottom: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the left side of this box.\r\n */\r\n mLeft: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the right side of this box.\r\n */\r\n mRight: propTypeSize,\r\n\r\n /**\r\n * The amount of margin to apply to the top of this box.\r\n */\r\n mTop: propTypeSize,\r\n\r\n /**\r\n * OnClick function.\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * The amount of padding to apply to this box.\r\n */\r\n pad: propTypeSize,\r\n\r\n /**\r\n * The amount of padding to apply to the bottom of this box.\r\n */\r\n pBottom: propTypeSize,\r\n\r\n /**\r\n * The amount of padding to apply to the left side of this box.\r\n */\r\n pLeft: propTypeSize,\r\n\r\n /**\r\n * The amount of padding to apply to the right side of this box.\r\n */\r\n pRight: propTypeSize,\r\n\r\n /**\r\n * The amount of padding to apply to the top of this box.\r\n */\r\n pTop: propTypeSize,\r\n\r\n /**\r\n * Is this box stacked - one on top of another.\r\n */\r\n stack: propTypeSize,\r\n\r\n /**\r\n * Custom css style object.\r\n */\r\n style: PropTypes.object,\r\n\r\n /**\r\n * Align text - left, center, or right.\r\n */\r\n textAlign: propTypeAlignHorizontal,\r\n\r\n /**\r\n * Title to show on hover.\r\n */\r\n title: PropTypes.string,\r\n\r\n /**\r\n * Whether or not Box is visible.\r\n */\r\n visible: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n borderColor: undefined,\r\n borderColorVariant: undefined,\r\n bordered: undefined,\r\n borderSides: undefined,\r\n borderWidth: undefined,\r\n bgColor: undefined,\r\n bgColorVariant: undefined,\r\n children: undefined,\r\n classes: undefined,\r\n className: undefined,\r\n containerRef: undefined,\r\n inline: undefined,\r\n margin: undefined,\r\n mBottom: undefined,\r\n mLeft: undefined,\r\n mRight: undefined,\r\n mTop: undefined,\r\n onClick: undefined,\r\n pad: undefined,\r\n pBottom: undefined,\r\n pLeft: undefined,\r\n pRight: undefined,\r\n pTop: undefined,\r\n stack: undefined,\r\n style: undefined,\r\n textAlign: undefined,\r\n title: undefined,\r\n visible: true,\r\n };\r\n\r\n propsAsClassnames() {\r\n return PROPS_WITH_CLASSNAMES.filter(propName => this.props[propName] !== undefined).map(\r\n prop => this.props.classes[prop]\r\n );\r\n }\r\n\r\n renderClassnames() {\r\n const classNames = [\r\n CHILD_BOX_SELECTOR,\r\n this.props.classes.box,\r\n this.props.classes.border,\r\n this.props.classes.background,\r\n ].concat(this.propsAsClassnames());\r\n\r\n if (this.props.inline) {\r\n classNames.push(this.props.classes.inline);\r\n }\r\n\r\n classNames.push(this.props.className);\r\n\r\n return classNames.join(' ');\r\n }\r\n\r\n render() {\r\n if (!this.props.visible) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Returns the background color from props.\r\n */\r\nconst backgroundColor = (theme, props) => {\r\n if (props.bgColor) {\r\n return {\r\n backgroundColor: jssColorLookup(theme, props.bgColor, props.bgColorVariant),\r\n };\r\n }\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Returns the border based on the props or the default width from the theme.\r\n */\r\nconst borderWidth = (theme, props) => {\r\n return props.borderWidth ? props.borderWidth : theme.box.default.borderWidth;\r\n};\r\n\r\n/**\r\n * Returns the border color from props or default border from the theme.\r\n */\r\nconst borderColor = (theme, props) => {\r\n if (props.borderColor) {\r\n return jssColorLookup(theme, props.borderColor, props.borderColorVariant);\r\n }\r\n return theme.box.default.borderColor;\r\n};\r\n\r\n/**\r\n * Returns which sides to border based on the props.\r\n */\r\nconst borderSides = (theme, props) => {\r\n if (props.borderSides) {\r\n const sides = props.borderSides;\r\n\r\n if (typeof sides === 'string') {\r\n if (sides === 'all') {\r\n return ['top', 'right', 'bottom', 'left'];\r\n }\r\n\r\n return [sides];\r\n }\r\n\r\n return props.borderSides;\r\n }\r\n\r\n return 'all';\r\n};\r\n\r\n/**\r\n * Returns a style object based on the border related props.\r\n */\r\nconst borderStyle = (theme, props) => {\r\n /**\r\n * Return right away when bordered=false\r\n */\r\n if (props.bordered !== undefined && props.bordered === false) {\r\n return {\r\n borderTop: 'none',\r\n borderRight: 'none',\r\n borderBottom: 'none',\r\n borderLeft: 'none',\r\n };\r\n }\r\n\r\n /**\r\n * If any border property is set.\r\n */\r\n if (props.bordered || props.borderColor || props.borderSides || props.borderWidth) {\r\n const sides = borderSides(theme, props);\r\n const color = borderColor(theme, props);\r\n const width = borderWidth(theme, props);\r\n\r\n if (sides === 'all') {\r\n return {\r\n border: `${px(width)} solid ${color}`,\r\n };\r\n } else {\r\n const style = {};\r\n sides.forEach(side => (style[`border-${side}`] = `${px(width)} solid ${color}`));\r\n return style;\r\n }\r\n }\r\n\r\n return {\r\n borderTop: 'none',\r\n borderRight: 'none',\r\n borderBottom: 'none',\r\n borderLeft: 'none',\r\n };\r\n};\r\n\r\nconst styles = theme => ({\r\n box: {\r\n '&:hover': {\r\n cursor: props => (props.onClick !== undefined ? 'pointer' : undefined),\r\n },\r\n },\r\n\r\n inline: {\r\n display: 'inline-block',\r\n },\r\n\r\n border: props => borderStyle(theme, props),\r\n\r\n background: props => backgroundColor(theme, props),\r\n\r\n stack: {\r\n margin: props => theme.spacing.stack[props.stack],\r\n },\r\n\r\n pad: {\r\n padding: props => theme.spacing[props.pad],\r\n },\r\n\r\n margin: {\r\n margin: props => theme.spacing[props.margin],\r\n },\r\n\r\n mTop: {\r\n marginTop: props => theme.spacing[props.mTop],\r\n },\r\n\r\n mRight: {\r\n marginRight: props => theme.spacing[props.mRight],\r\n },\r\n\r\n mBottom: {\r\n marginBottom: props => theme.spacing[props.mBottom],\r\n },\r\n\r\n mLeft: {\r\n marginLeft: props => theme.spacing[props.mLeft],\r\n },\r\n\r\n pTop: {\r\n paddingTop: props => theme.spacing[props.pTop],\r\n },\r\n\r\n pBottom: {\r\n paddingBottom: props => theme.spacing[props.pBottom],\r\n },\r\n\r\n pRight: {\r\n paddingRight: props => theme.spacing[props.pRight],\r\n },\r\n\r\n pLeft: {\r\n paddingLeft: props => theme.spacing[props.pLeft],\r\n },\r\n\r\n textAlign: {\r\n textAlign: props => props.textAlign,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Box);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { propTypeSize } from '../../util/propTypes';\r\n\r\nexport const CHILD_COLUMN_SELECTOR = 'WndJssColumn'; // name it something to avoid naming clashes.\r\n\r\n/**\r\n * A parent flex box container component for use in column-based layouts.\r\n */\r\nclass Columns extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Css classname.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * React ref callback to the root container.\r\n */\r\n containerRef: PropTypes.object,\r\n\r\n /**\r\n * The size of the gutter between columns.\r\n */\r\n gutter: propTypeSize,\r\n\r\n /**\r\n * Horizontal alignment.\r\n *\r\n * [left|center|right|space-between|space-around|space-even]\r\n */\r\n hAlign: PropTypes.oneOf([\r\n 'left',\r\n 'center',\r\n 'right',\r\n 'space-between',\r\n 'space-around',\r\n 'space-even',\r\n ]),\r\n\r\n /**\r\n * Inline flex box\r\n */\r\n inline: PropTypes.bool,\r\n\r\n /**\r\n * OnClick\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * Reverse the rows bottom to top.\r\n */\r\n reverse: PropTypes.bool,\r\n\r\n /**\r\n * Stretch to full height.\r\n */\r\n stretch: PropTypes.bool,\r\n\r\n /**\r\n * Container style.\r\n */\r\n style: PropTypes.object,\r\n\r\n /**\r\n * Vertical alignment. For this property to have any affect you'll need to set a height.\r\n *\r\n * [top|center|bottom|stretch]\r\n */\r\n vAlign: PropTypes.oneOf(['top', 'center', 'bottom', 'stretch']),\r\n\r\n /**\r\n * Wrap.\r\n */\r\n wrap: PropTypes.bool,\r\n };\r\n\r\n propsAsClassnames() {\r\n const classNames = [];\r\n\r\n switch (this.props.vAlign) {\r\n case 'top':\r\n classNames.push(this.props.classes.vAlignTop);\r\n break;\r\n case 'center':\r\n classNames.push(this.props.classes.vAlignCenter);\r\n break;\r\n case 'bottom':\r\n classNames.push(this.props.classes.vAlignBottom);\r\n break;\r\n case 'stretch':\r\n classNames.push(this.props.classes.vAlignStretch);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n switch (this.props.hAlign) {\r\n case 'left':\r\n classNames.push(this.props.classes.hAlignLeft);\r\n break;\r\n case 'center':\r\n classNames.push(this.props.classes.hAlignCenter);\r\n break;\r\n case 'right':\r\n classNames.push(this.props.classes.hAlignRight);\r\n break;\r\n case 'space-between':\r\n classNames.push(this.props.classes.hAlignSpaceBetween);\r\n break;\r\n case 'space-around':\r\n classNames.push(this.props.classes.hAlignSpaceAround);\r\n break;\r\n case 'space-even':\r\n classNames.push(this.props.classes.hAlignSpaceEven);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (this.props.reverse) {\r\n classNames.push(this.props.classes.directionReverse);\r\n }\r\n\r\n if (this.props.wrap) {\r\n classNames.push(this.props.classes.wrap);\r\n }\r\n\r\n if (this.props.stretch) {\r\n classNames.push(this.props.classes.stretch);\r\n }\r\n\r\n return classNames;\r\n }\r\n\r\n render() {\r\n const classNames = [this.props.classes.columns].concat(this.propsAsClassnames());\r\n\r\n classNames.push(this.props.className);\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n columns: {\r\n display: props => (props.inline ? 'inline-flex' : 'flex'),\r\n flexDirection: 'row',\r\n\r\n '&:hover': {\r\n cursor: props => props.onClick && 'pointer',\r\n },\r\n\r\n [`& > div[class*=\"${CHILD_COLUMN_SELECTOR}\"]`]: {\r\n marginRight: props => (props.gutter ? theme.spacing[props.gutter] : undefined),\r\n },\r\n\r\n [`& > div[class*=\"${CHILD_COLUMN_SELECTOR}\"]:last-of-type`]: {\r\n marginRight: props => (props.gutter ? 0 : undefined),\r\n },\r\n },\r\n\r\n vAlignTop: {\r\n alignItems: 'flex-start',\r\n },\r\n\r\n vAlignCenter: {\r\n alignItems: 'center',\r\n },\r\n\r\n vAlignBottom: {\r\n alignItems: 'flex-end',\r\n },\r\n\r\n vAlignStretch: {\r\n alignItems: 'stretch',\r\n },\r\n\r\n hAlignLeft: {\r\n justifyContent: 'flex-start',\r\n },\r\n\r\n hAlignCenter: {\r\n justifyContent: 'center',\r\n },\r\n\r\n hAlignRight: {\r\n justifyContent: 'flex-end',\r\n },\r\n\r\n hAlignSpaceBetween: {\r\n justifyContent: 'space-between',\r\n },\r\n\r\n hAlignSpaceAround: {\r\n justifyContent: 'space-around',\r\n },\r\n\r\n hAlignSpaceEven: {\r\n justifyContent: 'space-evenly',\r\n },\r\n\r\n directionReverse: {\r\n flexDirection: 'row-reverse',\r\n },\r\n\r\n wrap: {\r\n flexWrap: 'wrap',\r\n },\r\n\r\n stretch: {\r\n height: '100%',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Columns);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { CHILD_COLUMN_SELECTOR } from './Columns';\r\n\r\nclass Column extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Css classname.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Container style.\r\n */\r\n style: PropTypes.object,\r\n\r\n /**\r\n * Shorthand form for flex-grow, flex-shrink & flex-basis.\r\n */\r\n flex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n\r\n /**\r\n * Vertical alignment.\r\n *\r\n * [top|center|bottom|stretch]\r\n */\r\n vAlign: PropTypes.oneOf(['top', 'center', 'bottom', 'stretch']),\r\n\r\n /**\r\n * OnClick function.\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * React ref callback to the root container.\r\n */\r\n containerRef: PropTypes.object,\r\n\r\n /**\r\n * Title to show on hover.\r\n */\r\n title: PropTypes.string,\r\n };\r\n\r\n propsAsClassnames() {\r\n const classNames = [];\r\n\r\n switch (this.props.vAlign) {\r\n case 'top':\r\n classNames.push(this.props.classes.vAlignTop);\r\n break;\r\n case 'center':\r\n classNames.push(this.props.classes.vAlignCenter);\r\n break;\r\n case 'bottom':\r\n classNames.push(this.props.classes.vAlignBottom);\r\n break;\r\n case 'stretch':\r\n classNames.push(this.props.classes.vAlignStretch);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return classNames;\r\n }\r\n\r\n render() {\r\n const classNames = [\r\n CHILD_COLUMN_SELECTOR, // so the parents Columns componet can find this and add gutter\r\n this.props.classes.column,\r\n ].concat(this.propsAsClassnames());\r\n classNames.push(this.props.className);\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n column: {\r\n flex: props => props.flex || '0 1 auto',\r\n\r\n '&:hover': {\r\n cursor: props => props.onClick && 'pointer',\r\n },\r\n },\r\n\r\n vAlignTop: {\r\n alignSelf: 'flex-start',\r\n },\r\n\r\n vAlignBottom: {\r\n alignSelf: 'flex-end',\r\n },\r\n\r\n vAlignCenter: {\r\n alignSelf: 'center',\r\n },\r\n\r\n vAlignStretch: {\r\n alignSelf: 'stretch',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Column);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\n\r\nclass Row extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * React ref callback to the root container.\r\n */\r\n containerRef: PropTypes.object,\r\n\r\n /**\r\n * Shorthand form for flex-grow, flex-shrink & flex-basis.\r\n */\r\n flex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n\r\n /**\r\n * Horizontal alignment.\r\n *\r\n * [left|center|right|stretch]\r\n */\r\n hAlign: PropTypes.oneOf(['left', 'center', 'right', 'stretch']),\r\n\r\n /**\r\n * OnClick function.\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * Container style.\r\n */\r\n style: PropTypes.object,\r\n };\r\n\r\n propsAsClassnames() {\r\n const classNames = [];\r\n\r\n switch (this.props.hAlign) {\r\n case 'left':\r\n classNames.push(this.props.classes.hAlignLeft);\r\n break;\r\n case 'center':\r\n classNames.push(this.props.classes.hAlignCenter);\r\n break;\r\n case 'right':\r\n classNames.push(this.props.classes.hAlignRight);\r\n break;\r\n case 'stretch':\r\n classNames.push(this.props.classes.hAlignStretch);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return classNames;\r\n }\r\n\r\n render() {\r\n const classNames = [this.props.classes.row].concat(this.propsAsClassnames());\r\n classNames.push(this.props.className);\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n row: {\r\n flex: props => props.flex || '0 1 auto',\r\n\r\n '&:hover': {\r\n cursor: props => props.onClick && 'pointer',\r\n },\r\n },\r\n\r\n hAlignLeft: {\r\n alignSelf: 'flex-start',\r\n },\r\n\r\n hAlignRight: {\r\n alignSelf: 'flex-end',\r\n },\r\n\r\n hAlignCenter: {\r\n alignSelf: 'center',\r\n },\r\n\r\n hAlignStretch: {\r\n alignSelf: 'stretch',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Row);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\n\r\n/**\r\n * A parent flex box container component for use in row-based layouts.\r\n */\r\nclass Rows extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Css classname.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * React ref callback to the root container.\r\n */\r\n containerRef: PropTypes.object,\r\n\r\n /**\r\n * Horizontal alignment.\r\n *\r\n * [left|center|right|stretch]\r\n */\r\n hAlign: PropTypes.oneOf(['left', 'center', 'right', 'stretch']),\r\n\r\n /**\r\n * Inline flex box\r\n */\r\n inline: PropTypes.bool,\r\n\r\n /**\r\n * OnClick\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * Reverse the rows bottom to top.\r\n */\r\n reverse: PropTypes.bool,\r\n\r\n /**\r\n * Stretch to 100% height.\r\n */\r\n stretch: PropTypes.bool,\r\n\r\n /**\r\n * Container style.\r\n */\r\n style: PropTypes.object,\r\n\r\n /**\r\n * Vertical alignment. For this property to have any affect you'll need to set a height.\r\n *\r\n * [top|center|bottom|space-between|space-around|space-even]\r\n */\r\n vAlign: PropTypes.oneOf([\r\n 'top',\r\n 'center',\r\n 'bottom',\r\n 'space-between',\r\n 'space-around',\r\n 'space-even',\r\n ]),\r\n };\r\n\r\n propsAsClassnames() {\r\n const classNames = [];\r\n\r\n switch (this.props.hAlign) {\r\n case 'left':\r\n classNames.push(this.props.classes.hAlignLeft);\r\n break;\r\n case 'center':\r\n classNames.push(this.props.classes.hAlignCenter);\r\n break;\r\n case 'right':\r\n classNames.push(this.props.classes.hAlignRight);\r\n break;\r\n case 'stretch':\r\n classNames.push(this.props.classes.hAlignStretch);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n switch (this.props.vAlign) {\r\n case 'top':\r\n classNames.push(this.props.classes.vAlignTop);\r\n break;\r\n case 'center':\r\n classNames.push(this.props.classes.vAlignCenter);\r\n break;\r\n case 'bottom':\r\n classNames.push(this.props.classes.vAlignBottom);\r\n break;\r\n case 'space-between':\r\n classNames.push(this.props.classes.vAlignSpaceBetween);\r\n break;\r\n case 'space-around':\r\n classNames.push(this.props.classes.vAlignSpaceAround);\r\n break;\r\n case 'space-even':\r\n classNames.push(this.props.classes.vAlignSpaceEven);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (this.props.reverse) {\r\n classNames.push(this.props.classes.directionReverse);\r\n }\r\n\r\n if (this.props.stretch) {\r\n classNames.push(this.props.classes.stretch);\r\n }\r\n\r\n return classNames;\r\n }\r\n\r\n render() {\r\n const classNames = [this.props.classes.rows].concat(this.propsAsClassnames());\r\n\r\n classNames.push(this.props.className);\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n rows: {\r\n display: props => (props.inline ? 'inline-flex' : 'flex'),\r\n flexDirection: 'column',\r\n\r\n '&:hover': {\r\n cursor: props => props.onClick && 'pointer',\r\n },\r\n },\r\n\r\n hAlignLeft: {\r\n alignItems: 'flex-start',\r\n },\r\n\r\n hAlignRight: {\r\n alignItems: 'flex-end',\r\n },\r\n\r\n hAlignCenter: {\r\n alignItems: 'center',\r\n },\r\n\r\n hAlignStretch: {\r\n alignItems: 'stretch',\r\n },\r\n\r\n vAlignTop: {\r\n justifyContent: 'flex-start',\r\n },\r\n\r\n vAlignCenter: {\r\n justifyContent: 'center',\r\n },\r\n\r\n vAlignBottom: {\r\n justifyContent: 'flex-end',\r\n },\r\n\r\n vAlignSpaceBetween: {\r\n justifyContent: 'space-between',\r\n },\r\n\r\n vAlignSpaceAround: {\r\n justifyContent: 'space-around',\r\n },\r\n\r\n vAlignSpaceEven: {\r\n justifyContent: 'space-evenly',\r\n },\r\n\r\n directionReverse: {\r\n flexDirection: 'column-reverse',\r\n },\r\n\r\n stretch: {\r\n height: '100%',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Rows);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { animated, config, Transition } from 'react-spring/renderprops';\r\n\r\n/**\r\n * A CSS transition component to fade children in and out.\r\n */\r\nclass FadeInOut extends Component {\r\n static propTypes = {\r\n /**\r\n * Child component to slide in/out.\r\n */\r\n children: PropTypes.any.isRequired,\r\n\r\n /**\r\n * On - enter or exit the transition.\r\n */\r\n on: PropTypes.bool.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {on =>\r\n on &&\r\n (springStyles => (\r\n \r\n {this.props.children}\r\n \r\n ))\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n container: {\r\n position: 'absolute',\r\n zIndex: props => props.zIndex,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(FadeInOut);\r\n","import { BREAKPOINT_HEIGHT_PX, BREAKPOINT_WIDTH_PX } from '../Constants';\r\n\r\n/**\r\n * Helper function to determine if screen is small.\r\n */\r\nexport const isSmallScreen = () => {\r\n const screenWidth = document.documentElement.clientWidth;\r\n const screenHeight = document.documentElement.clientHeight;\r\n return screenWidth < BREAKPOINT_WIDTH_PX || screenHeight < BREAKPOINT_HEIGHT_PX;\r\n};\r\n\r\n/**\r\n * Helper function to determine if screen is desktop.\r\n */\r\nexport const isDesktopScreen = () => {\r\n return !isSmallScreen();\r\n};\r\n\r\n/**\r\n * Returns whether or not this device is a touch device.\r\n */\r\nexport const isTouchDevice = () => {\r\n return 'ontouchstart' in document.documentElement;\r\n};\r\n\r\n/**\r\n * Returns version of IE or false when browser is not Internet Explorer.\r\n */\r\nexport const detectIE = () => {\r\n const ua = window.navigator.userAgent;\r\n\r\n const msie = ua.indexOf('MSIE ');\r\n\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n const trident = ua.indexOf('Trident/');\r\n\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n const rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n const edge = ua.indexOf('Edge/');\r\n\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n};\r\n\r\n/**\r\n * Returns true when browser is Internet Explorer, false otherwise.\r\n *\r\n * @returns {boolean} true when browser is Internet Explorer, false otherwise.\r\n */\r\nexport const isInternetExplorer = () => {\r\n return detectIE() !== false;\r\n};\r\n","import isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { COLOR_BASE_PRIMARY } from '../../../app/Constants';\nimport { Overlay } from '../index';\nimport Box from '../layout/Box';\nimport Column from '../layout/flex/Column';\nimport Columns from '../layout/flex/Columns';\nimport Row from '../layout/flex/Row';\nimport Rows from '../layout/flex/Rows';\nimport Link from '../text/Link';\nimport Text from '../text/Text';\nimport FadeInOut from '../transition/FadeInOut';\nimport { isSmallScreen } from '../../../app/util/browser';\nimport { propTypeColor } from '../util/propTypes';\n\nclass Modal extends Component {\n static propTypes = {\n children: PropTypes.node,\n\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n isOpen: PropTypes.bool.isRequired,\n\n onRequestClose: PropTypes.func,\n\n zIndex: PropTypes.number,\n\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n bgColor: propTypeColor,\n };\n\n static defaultProps = {\n zIndex: 999,\n title: undefined,\n bgColor: COLOR_BASE_PRIMARY,\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const nextState = prevState;\n\n if (prevState.isOpen !== nextProps.isOpen) {\n nextState.isOpen = nextProps.isOpen;\n }\n\n return nextState;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n isOpen: props.isOpen || false,\n };\n\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n handleOnClose() {\n if (this.props.onRequestClose) {\n this.props.onRequestClose();\n } else {\n this.setState({ isOpen: false });\n }\n }\n\n renderTitle() {\n if (isFunction(this.props.title)) {\n return this.props.title();\n } else if (isString(this.props.title)) {\n return (\n \n {this.props.title}\n \n );\n }\n return null;\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n \n {this.renderTitle()}\n \n \n Done\n \n \n \n \n \n \n {this.props.children}\n \n \n \n \n \n );\n }\n}\n\nconst styles = () => ({\n container: {\n backgroundColor: 'white',\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: props => props.zIndex,\n },\n desktopContainer: {\n backgroundColor: 'white',\n position: 'Fixed',\n left: '50%',\n top: '50%',\n width: 500,\n marginLeft: -50,\n },\n});\n\nexport default injectSheet(styles)(Modal);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\n\r\nclass ScrollView extends Component {\r\n static propTypes = {\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.object.isRequired,\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n /**\r\n * Css classname.\r\n */\r\n className: PropTypes.string,\r\n\r\n onScrollEnd: PropTypes.func,\r\n\r\n onScroll: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n onScrollEnd: undefined,\r\n onScroll: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleScroll = this.handleScroll.bind(this);\r\n }\r\n\r\n handleScroll(e) {\r\n // onScroll\r\n if (this.props.onScroll) {\r\n this.props.onScroll();\r\n }\r\n\r\n // onScrollEnd\r\n const isScrollEnd = e.target.scrollHeight - e.target.scrollTop - e.target.clientHeight < 1;\r\n\r\n if (isScrollEnd && this.props.onScrollEnd) {\r\n this.props.onScrollEnd();\r\n }\r\n }\r\n\r\n render() {\r\n const { container } = this.props.classes;\r\n\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n overflowY: 'auto',\r\n height: '100%',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(ScrollView);\r\n","import debounce from 'lodash/debounce';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\n/**\r\n * List of resize listeners.\r\n */\r\nconst LISTENERS = [];\r\n\r\n/**\r\n * The debounced function instance.\r\n */\r\nlet FUNC_DEBOUNCED_RESIZE;\r\n\r\n/**\r\n * Time to rebounce in ms.\r\n */\r\nconst DEBOUNCE_TIME = 300;\r\n\r\n/**\r\n * React component for listening to window resize events.\r\n *\r\n * Inspired by...\r\n *\r\n * https://github.com/cesarandreu/react-window-resize-listener\r\n */\r\nexport default class WindowResizeListener extends React.Component {\r\n static propTypes = {\r\n /**\r\n * Resize handler.\r\n */\r\n onResize: PropTypes.func.isRequired,\r\n };\r\n\r\n /**\r\n * Setup the debounced function if not already and push the onResize prop onto the statck of\r\n * listeners.\r\n */\r\n componentDidMount() {\r\n /**\r\n * Defer creating debouncedResize until it's mounted. This allows users to change DEBOUNCE_TIME\r\n * if they want If there's no listeners, we need to attach the window listener.\r\n */\r\n if (!LISTENERS.length) {\r\n FUNC_DEBOUNCED_RESIZE = debounce(this.handleOnResize, DEBOUNCE_TIME);\r\n //FUNC_DEBOUNCED_RESIZE = this.handleOnResize;\r\n window.addEventListener('resize', FUNC_DEBOUNCED_RESIZE, false);\r\n }\r\n\r\n LISTENERS.push(this.props.onResize);\r\n FUNC_DEBOUNCED_RESIZE();\r\n }\r\n\r\n /**\r\n * Update the listener stack with the update onResize func prop.\r\n */\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.onResize !== this.props.onResize) {\r\n const idx = LISTENERS.indexOf(this.props.onResize);\r\n LISTENERS.splice(idx, 1, nextProps.onResize);\r\n }\r\n }\r\n\r\n /**\r\n * Cleanup.\r\n */\r\n componentWillUnmount() {\r\n const idx = LISTENERS.indexOf(this.props.onResize);\r\n\r\n LISTENERS.splice(idx, 1);\r\n if (!LISTENERS.length) {\r\n window.removeEventListener('resize', FUNC_DEBOUNCED_RESIZE, false);\r\n }\r\n }\r\n\r\n /**\r\n * Never update, unless the onResize func changes.\r\n */\r\n shouldComponentUpdate(nextProps) {\r\n return nextProps.onResize !== this.props.onResize;\r\n }\r\n\r\n /**\r\n * Resize handler - gets the window size and calls each listener.\r\n */\r\n handleOnResize() {\r\n const windowWidth =\r\n window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n\r\n const windowHeight =\r\n window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n\r\n LISTENERS.forEach(function(listener) {\r\n listener({\r\n windowWidth: windowWidth,\r\n windowHeight: windowHeight,\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n return null;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\n\r\nclass SpinnerOverlay extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n };\r\n\r\n render() {\r\n const { containerWrapper, container, centered } = this.props.classes;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n containerWrapper: {\r\n position: 'absolute',\r\n backgroundColor: 'rgba(0,0,0,0.25)',\r\n zIndex: 500,\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n height: '100%',\r\n width: '100%',\r\n\r\n '&:hover': {\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n\r\n container: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%',\r\n },\r\n\r\n centered: {\r\n flex: 1,\r\n textAlign: 'center',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SpinnerOverlay);\r\n","/**\r\n * Helper to get the dom rect from a react ref.\r\n */\r\nexport const domRect = reactRef => {\r\n return reactRef && reactRef.current && reactRef.current.getBoundingClientRect();\r\n};\r\n","import sum from 'lodash/sum';\r\nimport { jssColorLookup } from '../../util/jss';\r\n\r\n/**\r\n * Returns the total number of pages based on the total number of records and page size.\r\n */\r\nexport const pageCount = (pageSize, total) => {\r\n return Math.ceil(total / pageSize);\r\n};\r\n\r\n/**\r\n * Returns true when there's a previous page to navigate to.\r\n */\r\nexport const hasPreviousPage = (page, pageSize, total) => {\r\n return page > 1;\r\n};\r\n\r\n/**\r\n * Returns true when there's a next page to navigate to.\r\n */\r\nexport const hasNextPage = (page, pageSize, total) => {\r\n return page < pageCount(pageSize, total);\r\n};\r\n\r\n/**\r\n * Returns the sum of all column widths.\r\n */\r\nexport const sumColumnWidths = columns => {\r\n return sum(columns.map(c => c.width));\r\n};\r\n\r\n/**\r\n * Returns cell border style.\r\n *\r\n * (eg.) 1px solid #efefef\r\n */\r\nexport const cellBorderStyle = theme => {\r\n return `1px solid ${jssColorLookup(theme, 'primary', 'light2')}`;\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { jssColorLookup } from '../../util/jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../../util/propTypes';\r\nimport { cellBorderStyle } from './helper';\r\n\r\nclass Cell extends Component {\r\n static propTypes = {\r\n /**\r\n * Text alignment.\r\n */\r\n align: PropTypes.oneOf(['left', 'center', 'right']),\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Cell width. Default is 200.\r\n */\r\n width: PropTypes.number,\r\n\r\n /**\r\n * Click handler.\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * Background color.\r\n */\r\n bgColor: propTypeColor,\r\n\r\n /**\r\n * Background color variant.\r\n */\r\n bgColorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Disable border bottom.\r\n */\r\n hideBorderBottom: PropTypes.bool,\r\n\r\n /**\r\n * Tabindex to allow user's to focus element.\r\n */\r\n tabIndex: PropTypes.number,\r\n };\r\n\r\n static defaultProps = {\r\n width: 200,\r\n align: 'left',\r\n onClick: undefined,\r\n bgColor: undefined,\r\n bgColorVariant: undefined,\r\n hideBorderBottom: false,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n position: 'relative',\r\n contain: 'layout',\r\n width: props => `${props.width}px`,\r\n borderRight: cellBorderStyle(theme),\r\n borderBottom: props => !props.hideBorderBottom && cellBorderStyle(theme),\r\n backgroundColor: props =>\r\n props.bgColor && jssColorLookup(theme, props.bgColor, props.bgColorVariant),\r\n overflow: 'hidden',\r\n padding: theme.spacing.smaller,\r\n textAlign: props => props.align,\r\n\r\n '&:hover': {\r\n cursor: props => (props.onClick ? 'pointer' : undefined),\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Cell);\r\n","import { faEdit } from '@fortawesome/free-regular-svg-icons/faEdit';\nimport { faCheckSquare } from '@fortawesome/free-regular-svg-icons/faCheckSquare';\nimport { faSquare } from '@fortawesome/free-regular-svg-icons/faSquare';\nimport { faArrowCircleLeft } from '@fortawesome/free-solid-svg-icons/faArrowCircleLeft';\nimport { faArrowCircleRight } from '@fortawesome/free-solid-svg-icons/faArrowCircleRight';\nimport { faBinoculars } from '@fortawesome/free-solid-svg-icons/faBinoculars';\nimport { faCaretLeft } from '@fortawesome/free-solid-svg-icons/faCaretLeft';\nimport { faCaretRight } from '@fortawesome/free-solid-svg-icons/faCaretRight';\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\nimport { faClipboardList } from '@fortawesome/free-solid-svg-icons/faClipboardList';\nimport { faChevronUp } from '@fortawesome/free-solid-svg-icons/faChevronUp';\nimport { faAngleDoubleUp } from '@fortawesome/free-solid-svg-icons/faAngleDoubleUp';\nimport { faAngleDoubleDown } from '@fortawesome/free-solid-svg-icons/faAngleDoubleDown';\nimport { faCompress } from '@fortawesome/free-solid-svg-icons/faCompress';\nimport { faCrosshairs } from '@fortawesome/free-solid-svg-icons/faCrosshairs';\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\nimport { faEraser } from '@fortawesome/free-solid-svg-icons/faEraser';\nimport { faExpand } from '@fortawesome/free-solid-svg-icons/faExpand';\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\nimport { faEyeSlash } from '@fortawesome/free-solid-svg-icons/faEyeSlash';\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\nimport { faFlask } from '@fortawesome/free-solid-svg-icons/faFlask';\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\nimport { faMap } from '@fortawesome/free-solid-svg-icons/faMap';\nimport { faMapMarkerAlt } from '@fortawesome/free-solid-svg-icons/faMapMarkerAlt';\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\nimport { faFilePdf } from '@fortawesome/free-solid-svg-icons/faFilePdf';\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\nimport { faPrint } from '@fortawesome/free-solid-svg-icons/faPrint';\nimport { faQuestion } from '@fortawesome/free-solid-svg-icons/faQuestion';\nimport { faRuler } from '@fortawesome/free-solid-svg-icons/faRuler';\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\nimport { faUsersCog } from '@fortawesome/free-solid-svg-icons/faUsersCog';\nimport { faSlidersH } from '@fortawesome/free-solid-svg-icons/faSlidersH';\nimport { faSort } from '@fortawesome/free-solid-svg-icons/faSort';\nimport { faSortUp } from '@fortawesome/free-solid-svg-icons/faSortUp';\nimport { faSortDown } from '@fortawesome/free-solid-svg-icons/faSortDown';\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport injectSheet from 'react-jss';\nimport { jssColor } from '../../../../lib/base/util/jss';\nimport { propTypeColor, propTypeColorVariant } from '../../../../lib/base/util/propTypes';\n\n/**\n * Prop types defintion.\n */\nconst propTypes = {\n color: PropTypes.string,\n colorVariant: PropTypes.string,\n faicon: PropTypes.object.isRequired,\n spin: PropTypes.bool,\n size: PropTypes.string,\n visible: PropTypes.bool,\n};\n\nconst defaultProps = {\n color: undefined,\n colorVariant: undefined,\n faicon: faQuestion,\n spin: false,\n size: undefined,\n visible: true,\n};\n\n/**\n * Jss style function to inject BaseFontAwesomeIcon with.\n */\nconst styles = theme => ({\n color: props => {\n return {\n color: props.color ? jssColor(theme, props) : theme.icon.default.color,\n };\n },\n visible: props => {\n return {\n display: props.visible ? '' : 'none',\n };\n },\n});\n\n/**\n * Base font awesome component.\n */\nconst BaseFontAwesomeIcon = injectSheet(styles)(props => {\n return (\n \n \n \n );\n});\n\nBaseFontAwesomeIcon.propTypes = propTypes;\nBaseFontAwesomeIcon.defaultProps = defaultProps;\n\nconst iconPropTypes = {\n /**\n * Icon color.\n */\n color: propTypeColor,\n\n /**\n * Icon color.\n */\n colorVariant: propTypeColorVariant,\n\n /**\n * Should icon spin?\n */\n spin: PropTypes.bool,\n\n /**\n * Size of icon -\n */\n size: PropTypes.oneOf([\n 'lg',\n 'xs',\n 'sm',\n '1x',\n '2x',\n '3x',\n '4x',\n '5x',\n '6x',\n '7x',\n '8x',\n '9x',\n '10x',\n ]),\n\n /**\n * Icon visibility.\n */\n visible: PropTypes.bool,\n};\n\nconst iconDefaultProps = {\n /**\n * Should icon spin?\n */\n spin: false,\n\n /**\n * Size of icon - css font size (px, em, etc.)\n */\n size: '1x',\n};\n\n/**\n * Search icon.\n */\nexport const IconSearch = props => (\n \n);\nIconSearch.propTypes = iconPropTypes;\nIconSearch.defaultProps = iconDefaultProps;\n\n/**\n * Empty results icon.\n */\nexport const IconEmptyResults = props => (\n \n);\nIconEmptyResults.propTypes = iconPropTypes;\nIconEmptyResults.defaultProps = iconDefaultProps;\n\n/**\n * Clear icon.\n */\nexport const IconClear = props => (\n \n);\nIconClear.propTypes = iconPropTypes;\nIconClear.defaultProps = iconDefaultProps;\n\n/**\n * Eraser icon.\n */\nexport const IconErase = props => (\n \n);\nIconErase.propTypes = iconPropTypes;\nIconErase.defaultProps = iconDefaultProps;\n\n/**\n * Spinner icon.\n */\nexport const IconSpinner = props => (\n \n);\nIconSpinner.propTypes = iconPropTypes;\nIconSpinner.defaultProps = { ...iconDefaultProps };\nIconSpinner.defaultProps.spin = true;\n\n/**\n * Explore icon.\n */\nexport const IconExplore = props => (\n \n);\nIconExplore.propTypes = iconPropTypes;\nIconExplore.defaultProps = iconDefaultProps;\n\n/**\n * Chevron icon.\n */\nexport const IconChevronUp = props => (\n \n);\nIconChevronUp.propTypes = iconPropTypes;\nIconChevronUp.defaultProps = { ...iconDefaultProps };\n\n/**\n * Chevron icon.\n */\nexport const IconChevronDown = props => (\n \n);\nIconChevronDown.propTypes = iconPropTypes;\nIconChevronDown.defaultProps = { ...iconDefaultProps };\n\n/**\n * Chevron icon.\n */\nexport const IconChevronLeft = props => (\n \n);\nIconChevronLeft.propTypes = iconPropTypes;\nIconChevronLeft.defaultProps = { ...iconDefaultProps };\n\n/**\n * Chevron icon.\n */\nexport const IconChevronRight = props => (\n \n);\nIconChevronRight.propTypes = iconPropTypes;\nIconChevronRight.defaultProps = { ...iconDefaultProps };\n\n/**\n * Double angle down\n */\nexport const IconAngleDoubleDown = props => (\n \n);\nIconAngleDoubleDown.propTypes = iconPropTypes;\nIconAngleDoubleDown.defaultProps = { ...iconDefaultProps };\n\n/**\n * Double angle up\n */\nexport const IconAngleDoubleUp = props => (\n \n);\nIconAngleDoubleUp.propTypes = iconPropTypes;\nIconAngleDoubleUp.defaultProps = { ...iconDefaultProps };\n\n/**\n * Filter icon.\n */\nexport const IconFilter = props => (\n \n);\nIconFilter.propTypes = iconPropTypes;\nIconFilter.defaultProps = iconDefaultProps;\n\n/**\n * Filters icon.\n */\nexport const IconFilters = props => (\n \n);\nIconFilters.propTypes = iconPropTypes;\nIconFilters.defaultProps = iconDefaultProps;\n\n/**\n * Map marker.\n */\nexport const IconMapMarker = props => (\n \n);\nIconMapMarker.propTypes = iconPropTypes;\nIconMapMarker.defaultProps = iconDefaultProps;\n\n/**\n * Plus icon.\n */\nexport const IconPlus = props => (\n \n);\nIconPlus.propTypes = iconPropTypes;\nIconPlus.defaultProps = iconDefaultProps;\n\n/**\n * Minus icon.\n */\nexport const IconMinus = props => (\n \n);\nIconMinus.propTypes = iconPropTypes;\nIconMinus.defaultProps = iconDefaultProps;\n\n/**\n * Home icon.\n */\nexport const IconHome = props => (\n \n);\nIconHome.propTypes = iconPropTypes;\nIconHome.defaultProps = iconDefaultProps;\n\n/**\n * List icon.\n */\nexport const IconList = props => (\n \n);\nIconList.propTypes = iconPropTypes;\nIconList.defaultProps = iconDefaultProps;\n\n/**\n * MyLocation icon.\n */\nexport const IconMyLocation = props => (\n \n);\nIconMyLocation.propTypes = iconPropTypes;\nIconMyLocation.defaultProps = iconDefaultProps;\n\n/**\n * Map layers icon.\n */\nexport const IconMapLayers = props => (\n \n);\nIconMapLayers.propTypes = iconPropTypes;\nIconMapLayers.defaultProps = iconDefaultProps;\n\n/**\n * Ruler icon.\n */\nexport const IconRuler = props => (\n \n);\nIconRuler.propTypes = iconPropTypes;\nIconRuler.defaultProps = iconDefaultProps;\n\n/**\n * cog-user\n */\nexport const IconUsersCog = props => (\n \n);\nIconUsersCog.propTypes = iconPropTypes;\nIconUsersCog.defaultProps = iconDefaultProps;\n\n/**\n * Enter fullscreen icon.\n */\nexport const IconFullscreen = props => (\n \n);\nIconFullscreen.propTypes = iconPropTypes;\nIconFullscreen.defaultProps = iconDefaultProps;\n\n/**\n * Exit fullscreen icon.\n */\nexport const IconFullscreenExit = props => (\n \n);\nIconFullscreenExit.propTypes = iconPropTypes;\nIconFullscreenExit.defaultProps = iconDefaultProps;\n\n/**\n * Checkbox Off.\n */\nexport const IconCheckboxOff = props => (\n \n);\nIconCheckboxOff.propTypes = iconPropTypes;\nIconCheckboxOff.defaultProps = iconDefaultProps;\n\n/**\n * Checkbox On.\n */\nexport const IconCheckboxOn = props => (\n \n);\nIconCheckboxOn.propTypes = iconPropTypes;\nIconCheckboxOn.defaultProps = iconDefaultProps;\n\n/**\n * Vertical Ellipsis\n */\nexport const IconElipsisV = props => (\n \n);\nIconElipsisV.propTypes = iconPropTypes;\nIconElipsisV.defaultProps = iconDefaultProps;\n\n/**\n * Arrow Circle Left\n */\nexport const IconArrowCircleLeft = props => (\n \n);\nIconArrowCircleLeft.propTypes = iconPropTypes;\nIconArrowCircleLeft.defaultProps = iconDefaultProps;\n\n/**\n * Arrow Circle Right\n */\nexport const IconArrowCircleRight = props => (\n \n);\nIconArrowCircleRight.propTypes = iconPropTypes;\nIconArrowCircleRight.defaultProps = iconDefaultProps;\n\n/**\n * Download export files.\n */\nexport const IconFileDownload = props => (\n \n);\nIconFileDownload.propTypes = iconPropTypes;\nIconFileDownload.defaultProps = iconDefaultProps;\n\n/**\n * An icon for an external link.\n */\nexport const IconLinkExternal = props => (\n \n);\nIconLinkExternal.propTypes = iconPropTypes;\nIconLinkExternal.defaultProps = iconDefaultProps;\n\n/**\n * An Icon Indicating no user location\n */\nexport const IconNoLocation = props => (\n \n);\nIconNoLocation.propTypes = iconPropTypes;\nIconNoLocation.defaultProps = iconDefaultProps;\n\n/**\n * Icon indicating user to show visible sites\n */\nexport const IconWithLocation = props => (\n \n);\nIconWithLocation.propTypes = iconPropTypes;\nIconWithLocation.defaultProps = iconDefaultProps;\n\n/**\n * Icon linking to nCore\n */\nexport const IconNcore = props => (\n \n);\nIconNcore.propTypes = iconPropTypes;\nIconNcore.defaultProps = iconDefaultProps;\n\n/**\n * Icon indicating user to show visible sites\n */\nexport const IconPrint = props => (\n \n);\nIconPrint.propTypes = iconPropTypes;\nIconPrint.defaultProps = iconDefaultProps;\n\n/**\n * Icon left caret\n */\nexport const IconCaretLeft = props => (\n \n);\nIconCaretLeft.propTypes = iconPropTypes;\nIconCaretLeft.defaultProps = iconDefaultProps;\n\n/**\n * Icon right caret\n */\nexport const IconCaretRight = props => (\n \n);\nIconCaretRight.propTypes = iconPropTypes;\nIconCaretRight.defaultProps = iconDefaultProps;\n\n/**\n * Icon indicating user to show visible sites\n */\nexport const IconInfo = props => (\n \n);\nIconInfo.propTypes = iconPropTypes;\nIconInfo.defaultProps = iconDefaultProps;\n\n/**\n * Icon representing chemicals\n */\nexport const IconChemical = props => (\n \n);\nIconChemical.propTypes = iconPropTypes;\nIconChemical.defaultProps = iconDefaultProps;\n\n/**\n * Checkmark Icon\n */\nexport const IconCheck = props => (\n \n);\nIconCheck.propTypes = iconPropTypes;\nIconCheck.defaultProps = iconDefaultProps;\n\n/**\n * Icon representing cme\n */\nexport const IconCME = props => (\n \n);\nIconCME.propTypes = iconPropTypes;\nIconCME.defaultProps = iconDefaultProps;\n\n/**\n * Icon representing document\n */\nexport const IconDocument = props => (\n \n);\nIconDocument.propTypes = iconPropTypes;\nIconDocument.defaultProps = iconDefaultProps;\n\n/**\n * Icon not sorted\n */\nexport const IconSortNone = props => (\n \n);\nIconSortNone.propTypes = iconPropTypes;\nIconSortNone.defaultProps = iconDefaultProps;\n\n/**\n * Icon sort ascending\n */\nexport const IconSortAsc = props => (\n \n);\nIconSortAsc.propTypes = iconPropTypes;\nIconSortAsc.defaultProps = iconDefaultProps;\n\n/**\n * Icon sort descending\n */\nexport const IconSortDesc = props => (\n \n);\nIconSortDesc.propTypes = iconPropTypes;\nIconSortDesc.defaultProps = iconDefaultProps;\n\n/**\n * Icon pdf\n */\nexport const IconPdf = props => (\n \n);\nIconPdf.propTypes = iconPropTypes;\nIconPdf.defaultProps = iconDefaultProps;\n","import debounce from 'lodash/debounce';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { IconClear, IconFilter } from '../../../../app/components/icons';\r\nimport { COLOR_BASE_PRIMARY } from '../../../../app/Constants';\r\nimport { propTypeColor, propTypeColorVariant } from '../../util/propTypes';\r\nimport Cell from './Cell';\r\n\r\nclass FilterHeaderCell extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Column definition.\r\n */\r\n column: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Called when filter value changes.\r\n */\r\n onChange: PropTypes.func,\r\n\r\n /**\r\n * Called when filter is cleared.\r\n */\r\n onClear: PropTypes.func,\r\n\r\n /**\r\n * Background color.\r\n */\r\n bgColor: propTypeColor,\r\n\r\n /**\r\n * Background color variant.\r\n */\r\n bgColorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Value of the criteria\r\n */\r\n initialValue: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n onChange: undefined,\r\n onClear: undefined,\r\n bgColor: 'primary',\r\n bgColorVariant: 'light1',\r\n initialValue: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n value: props.initialValue || '',\r\n };\r\n\r\n this.handleOnChange = this.handleOnChange.bind(this);\r\n this.handleOnClear = this.handleOnClear.bind(this);\r\n this.callOnChange = this.callOnChange.bind(this);\r\n this.debouncedCallOnChange = debounce(this.callOnChange, 500);\r\n }\r\n\r\n callOnChange() {\r\n if (this.props.onChange) {\r\n this.props.onChange(this.props.column, this.state.value);\r\n }\r\n }\r\n\r\n handleOnChange(event) {\r\n this.setState(\r\n {\r\n value: event.target.value,\r\n },\r\n this.debouncedCallOnChange\r\n );\r\n }\r\n\r\n handleOnClear(event) {\r\n event.stopPropagation();\r\n\r\n if (this.props.onClear) {\r\n this.setState({\r\n value: '',\r\n });\r\n\r\n this.props.onClear(this.props.column);\r\n }\r\n }\r\n\r\n renderFilterIcon() {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n renderClearIcon() {\r\n if (!this.state.value) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n renderInput() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { column, classes, ...rest } = this.props;\r\n\r\n return (\r\n \r\n
\r\n {this.renderInput()}\r\n {this.renderFilterIcon()}\r\n {this.renderClearIcon()}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n position: 'relative',\r\n },\r\n\r\n input: {\r\n width: 'calc(100% - 2px)',\r\n borderRadius: '3px',\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light2']}`,\r\n backgroundColor: 'white',\r\n overflow: 'hidden',\r\n padding: theme.spacing.smaller,\r\n paddingLeft: '34px',\r\n paddingRight: '24px',\r\n lineHeight: '18px',\r\n fontSize: '14px',\r\n color: '#282828',\r\n\r\n '&:focus': {\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light4']}`,\r\n outline: 0,\r\n },\r\n\r\n '&:focus + [data-icon=\"filter\"] > span': {\r\n color: theme.color[COLOR_BASE_PRIMARY]['light2'],\r\n },\r\n },\r\n\r\n filterIcon: {\r\n position: 'absolute',\r\n bottom: 0,\r\n lineHeight: '30px',\r\n paddingLeft: '12px',\r\n },\r\n\r\n clearIcon: {\r\n position: 'absolute',\r\n right: 0,\r\n bottom: 0,\r\n lineHeight: '30px',\r\n paddingRight: '12px',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(FilterHeaderCell);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport Cell from './Cell';\r\nimport FilterHeaderCell from './FilterHeaderCell';\r\nimport { cellBorderStyle, sumColumnWidths } from './helper';\r\n\r\nclass FilterHeader extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Columns definition.\r\n */\r\n columns: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Property to sort by.\r\n */\r\n criteria: PropTypes.object,\r\n\r\n /**\r\n * Called when the sort has changed.\r\n */\r\n onCriteriaChange: PropTypes.func,\r\n\r\n /**\r\n * Add a spacer to account for checkbox cell found in other rows.\r\n */\r\n hasSortSpacer: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n sortBy: undefined,\r\n isAsc: undefined,\r\n onSortChange: undefined,\r\n criteria: {},\r\n onCriteriaChange: () => {},\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleOnChange = this.handleOnChange.bind(this);\r\n this.handleOnClear = this.handleOnClear.bind(this);\r\n }\r\n\r\n handleOnChange(column, value) {\r\n const criteria = { ...this.props.criteria };\r\n criteria[column.criteriaPropName] = value;\r\n this.criteriaChanged(criteria);\r\n }\r\n\r\n handleOnClear(column) {\r\n const criteria = { ...this.props.criteria };\r\n delete criteria[column.criteriaPropName];\r\n this.criteriaChanged(criteria);\r\n }\r\n\r\n criteriaChanged(criteria) {\r\n if (this.props.onCriteriaChange) {\r\n this.props.onCriteriaChange(criteria);\r\n }\r\n }\r\n\r\n inputValue(column) {\r\n if (this.props.criteria) {\r\n return this.props.criteria[column.criteriaPropName];\r\n }\r\n }\r\n\r\n render() {\r\n const columns = [...this.props.columns];\r\n\r\n if (this.props.hasSortSpacer) {\r\n columns.unshift();\r\n }\r\n\r\n return (\r\n
\r\n {columns.map((column, index) => {\r\n if (React.isValidElement(column)) {\r\n return column;\r\n }\r\n\r\n if (column.Extender) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n borderTop: cellBorderStyle(theme),\r\n borderLeft: cellBorderStyle(theme),\r\n width: props => sumColumnWidths(props.columns),\r\n borderCollapse: 'collapse',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(FilterHeader);\r\n","import debounce from 'lodash/debounce';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport injectSheet from 'react-jss';\r\nimport WindowResizeListener from '../../../../app/components/listener/WindowResizeListener';\r\n\r\nclass HorizontalScrollView extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * The column definitions.\r\n */\r\n columns: PropTypes.array.isRequired,\r\n\r\n /**\r\n * The children nodes to render.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Is pagination visible?\r\n */\r\n paginationVisible: PropTypes.bool.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n horizontalScrollbarHidden: undefined,\r\n };\r\n\r\n this.containerRef = React.createRef();\r\n this.leftMoreIndicatorRef = React.createRef();\r\n this.rightMoreIndicatorRef = React.createRef();\r\n\r\n this.updateScrollbarState = this.updateScrollbarState.bind(this);\r\n this.updateScrollIndicators = this.updateScrollIndicators.bind(this);\r\n this.debounceHandleOnScroll = debounce(this.updateScrollIndicators, 100);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.horizontalScrollbarHidden === undefined) {\r\n this.updateScrollbarState();\r\n }\r\n }\r\n\r\n getSnapshotBeforeUpdate(prevProps, prevState) {\r\n return {\r\n scrollWidth: this.containerRef.current.scrollWidth,\r\n clientWidth: this.containerRef.current.clientWidth,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n if (\r\n prevState.scrollWidth !== snapshot.scrollWidth ||\r\n prevState.clientWidth !== snapshot.clientWidth\r\n ) {\r\n this.updateScrollbarState();\r\n }\r\n }\r\n\r\n updateScrollbarState() {\r\n /**\r\n * Check scrollbar visibility.\r\n */\r\n if (this.containerRef && this.containerRef.current) {\r\n const scrollWidth = this.containerRef.current.scrollWidth;\r\n const clientWidth = this.containerRef.current.clientWidth;\r\n this.setState({\r\n scrollWidth,\r\n clientWidth,\r\n horizontalScrollbarHidden: clientWidth === scrollWidth,\r\n });\r\n }\r\n\r\n setTimeout(this.updateScrollIndicators, 100);\r\n }\r\n\r\n updateScrollIndicators() {\r\n const that = this;\r\n\r\n window.requestAnimationFrame(function() {\r\n if (!that.containerRef || !that.containerRef.current) {\r\n return;\r\n }\r\n\r\n const container = ReactDOM.findDOMNode(that.containerRef.current);\r\n const left = ReactDOM.findDOMNode(that.leftMoreIndicatorRef.current);\r\n const right = ReactDOM.findDOMNode(that.rightMoreIndicatorRef.current);\r\n\r\n const scrollbar = {\r\n scrollLeft: container.scrollLeft,\r\n offsetLeft: container.offsetLeft,\r\n offsetWidth: container.offsetWidth,\r\n scrollWidth: container.scrollWidth,\r\n clientWidth: container.clientWidth,\r\n isVisible: container.offsetWidth <= container.scrollWidth,\r\n isLeftIndicatorVisible: container.scrollLeft !== 0,\r\n isRightIndicatorVisible:\r\n container.scrollWidth - (container.scrollLeft + container.offsetWidth) > 0,\r\n };\r\n\r\n left.style.display = scrollbar.isLeftIndicatorVisible ? 'block' : 'none';\r\n right.style.display = scrollbar.isRightIndicatorVisible ? 'block' : 'none';\r\n });\r\n }\r\n\r\n render() {\r\n this.updateScrollIndicators();\r\n\r\n const style = {\r\n borderLeft: this.state.horizontalScrollbarHidden ? 'none' : undefined,\r\n borderRight: this.state.horizontalScrollbarHidden ? 'none' : undefined,\r\n };\r\n\r\n const { moreIndicator, leftMoreIndicator, rightMoreIndicator } = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n  \r\n
\r\n \r\n {this.props.children}\r\n \r\n \r\n  \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n overflowY: 'hidden',\r\n overflowX: 'auto',\r\n '-webkit-transform': 'translateZ(0)',\r\n },\r\n\r\n moreIndicator: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n top: 0,\r\n height: '100%',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n padding: theme.spacing.smaller,\r\n },\r\n\r\n leftMoreIndicator: {\r\n left: 0,\r\n boxShadow: 'inset 7px 0 12px -7px rgba(0,0,0,0.4)',\r\n },\r\n\r\n rightMoreIndicator: {\r\n right: 0,\r\n boxShadow: 'inset -7px 0 12px -7px rgba(0,0,0,0.4)',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(HorizontalScrollView);\r\n","import PropTypes from 'prop-types';\r\nimport isNumber from 'lodash/isNumber';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport Columns from '../../layout/flex/Columns';\r\nimport Column from '../../layout/flex/Column';\r\nimport Text from '../../text/Text';\r\nimport { hasNextPage, hasPreviousPage, pageCount } from './helper';\r\nimport { propTypeColor } from '../../util/propTypes';\r\nimport { IconChevronLeft, IconChevronRight } from '../../../../app/components/icons';\r\nimport { jssColorLookup } from '../../util/jss';\r\nimport Box from '../../layout/Box';\r\nimport { isSmallScreen } from '../../../../app/util/browser';\r\nimport Rows from '../../layout/flex/Rows';\r\n\r\nclass Paginator extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * The column definitions.\r\n */\r\n columns: PropTypes.array.isRequired,\r\n\r\n /**\r\n * The base color of the paginator.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * The page number.\r\n */\r\n page: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The page size.\r\n */\r\n pageSize: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Total number of records.\r\n */\r\n total: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The available page sizes to choose from.\r\n */\r\n sizes: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Page changed callback\r\n */\r\n onPageChange: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Width of the container.\r\n */\r\n width: PropTypes.number,\r\n };\r\n\r\n static defaultProps = {\r\n sizes: [5, 10, 20, 25, 50, 100],\r\n };\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.stateUpdate) {\r\n return {\r\n stateUpdate: false,\r\n };\r\n }\r\n\r\n const nextState = prevState;\r\n\r\n if (prevState.page !== nextProps.page) {\r\n nextState.page = nextProps.page;\r\n }\r\n\r\n return nextState;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n page: props.page,\r\n pageSize: props.pageSize,\r\n total: props.total,\r\n };\r\n\r\n this.handleOnPreviousPage = this.handleOnPreviousPage.bind(this);\r\n this.handleOnNextPage = this.handleOnNextPage.bind(this);\r\n this.handleOnBlurPage = this.handleOnBlurPage.bind(this);\r\n this.handleOnKeyPress = this.handleOnKeyPress.bind(this);\r\n this.handleOnChangePage = this.handleOnChangePage.bind(this);\r\n this.handleOnChangePageSize = this.handleOnChangePageSize.bind(this);\r\n }\r\n\r\n nextPageRequest(nextPage) {\r\n return {\r\n page: nextPage || this.props.page,\r\n pageSize: this.props.pageSize,\r\n };\r\n }\r\n\r\n changePage(pageRequest) {\r\n if (this.props.onPageChange) {\r\n this.props.onPageChange(pageRequest);\r\n }\r\n }\r\n\r\n isPageValueInStateValid() {\r\n const page = Number.parseInt(this.state.page, 10);\r\n\r\n if (!isNumber(page)) {\r\n return false;\r\n }\r\n\r\n return page >= 1 && page <= pageCount(this.props.pageSize, this.props.total);\r\n }\r\n\r\n hasPageValueChanged() {\r\n return this.props.page !== this.state.page;\r\n }\r\n\r\n handleOnPreviousPage() {\r\n this.changePage(this.nextPageRequest(this.state.page - 1));\r\n }\r\n\r\n handleOnNextPage() {\r\n this.changePage(this.nextPageRequest(this.state.page + 1));\r\n }\r\n\r\n handleOnBlurPage() {\r\n if (this.isPageValueInStateValid() && this.hasPageValueChanged()) {\r\n this.changePage(this.nextPageRequest(Number.parseInt(this.state.page, 10)));\r\n } else {\r\n this.setState({ page: this.props.page });\r\n }\r\n }\r\n\r\n handleOnChangePage(event) {\r\n this.setState({\r\n stateUpdate: true,\r\n page: event.target.value,\r\n });\r\n }\r\n\r\n handleOnChangePageSize(event) {\r\n const nextPageSize = Number.parseInt(event.target.value, 10);\r\n\r\n const pageRequest = {\r\n page: 1,\r\n pageSize: nextPageSize,\r\n };\r\n\r\n this.changePage(pageRequest);\r\n }\r\n\r\n handleOnKeyPress(event) {\r\n if (event.key === 'Enter') {\r\n this.handleOnBlurPage();\r\n }\r\n }\r\n\r\n renderSelect() {\r\n return (\r\n \r\n {this.props.sizes.map(size => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n renderPaginator() {\r\n const textSize = 'smaller';\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Page:\r\n \r\n \r\n \r\n \r\n \r\n of\r\n \r\n \r\n \r\n {pageCount(this.props.pageSize, this.props.total).toLocaleString()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderCurrentPosition(hAlign) {\r\n const textSize = 'smaller';\r\n\r\n const rangeEnd =\r\n this.props.total < this.props.page * this.props.pageSize\r\n ? this.props.total\r\n : this.props.page * this.props.pageSize;\r\n\r\n return (\r\n \r\n \r\n {(this.props.page - 1) * this.props.pageSize + 1}\r\n \r\n \r\n -\r\n \r\n \r\n {rangeEnd}\r\n \r\n \r\n of\r\n \r\n \r\n {this.props.total.toLocaleString()}\r\n \r\n \r\n );\r\n }\r\n\r\n renderDesktop() {\r\n return (\r\n
\r\n \r\n {this.renderSelect()}\r\n {this.renderPaginator()}\r\n {this.renderCurrentPosition()}\r\n \r\n
\r\n );\r\n }\r\n\r\n renderMobile() {\r\n return (\r\n
\r\n \r\n {this.renderPaginator()}\r\n \r\n \r\n {this.renderSelect()}\r\n \r\n {this.renderCurrentPosition('center')}\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n return isSmallScreen() ? this.renderMobile() : this.renderDesktop();\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n width: props => props.width,\r\n padding: theme.spacing.smaller,\r\n },\r\n\r\n input: {\r\n ...theme.input.small,\r\n ...theme.typography.small,\r\n border: props => `1px solid ${theme.color[props.color]['light2']}`,\r\n textAlign: 'center',\r\n minWidth: '50px',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n\r\n select: {\r\n ...theme.input.small,\r\n ...theme.typography.small,\r\n border: props => `1px solid ${theme.color[props.color]['light2']}`,\r\n backgroundColor: 'white',\r\n height: '24px',\r\n maxWidth: '100px',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n\r\n button: {\r\n ...theme.button.reset,\r\n height: '24px',\r\n lineHeight: '24px',\r\n color: 'white',\r\n fontSize: '14px',\r\n padding: `0 ${theme.spacing.medium}`,\r\n backgroundColor: props => jssColorLookup(theme, props.color),\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Paginator);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { propTypeColor, propTypeColorVariant } from '../../util/propTypes';\r\nimport Cell from './Cell';\r\n\r\nclass CheckboxCell extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Called when checkbox changes.\r\n */\r\n onChange: PropTypes.func,\r\n\r\n /**\r\n * Row data object.\r\n */\r\n rowData: PropTypes.object,\r\n\r\n /**\r\n * Whether or not the checkbox is checked on.\r\n */\r\n checked: PropTypes.bool,\r\n\r\n /**\r\n * Checkbox is indeterminate state.\r\n */\r\n indeterminate: PropTypes.bool,\r\n\r\n /**\r\n * Do not show bottom border.\r\n */\r\n hideBorderBottom: PropTypes.bool,\r\n\r\n /**\r\n * Background color.\r\n */\r\n bgColor: propTypeColor,\r\n\r\n /**\r\n * Background color variant.\r\n */\r\n bgColorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Vertical alignment.\r\n */\r\n vAlign: PropTypes.oneOf(['top', 'center', 'bottom', 'stretch']),\r\n };\r\n\r\n static defaultProps = {\r\n onChange: undefined,\r\n checked: false,\r\n hideBorderBottom: false,\r\n vAlign: 'top',\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.inputRef = React.createRef();\r\n this.handleOnChange = this.handleOnChange.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n this.inputRef.current.indeterminate = this.props.indeterminate;\r\n\r\n if (this.props.checked) {\r\n this.inputRef.current.indeterminate = false;\r\n }\r\n }\r\n\r\n handleOnChange(event) {\r\n this.props.onChange(this.props.rowData, event.target.checked);\r\n }\r\n\r\n renderInput() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { classes, ...rest } = this.props;\r\n return (\r\n \r\n
{this.renderInput()}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst vAlignToFlex = props => {\r\n switch (props.vAlign) {\r\n case 'top':\r\n return 'flex-start';\r\n case 'bottom':\r\n return 'flex-end';\r\n default:\r\n return props.vAlign;\r\n }\r\n};\r\n\r\nconst styles = theme => ({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n alignItems: props => vAlignToFlex(props),\r\n height: '100%',\r\n },\r\n\r\n input: {\r\n transform: 'scale(1.2)',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(CheckboxCell);\r\n","import isFunction from 'lodash/isFunction';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport Text from '../../text/Text';\r\nimport Cell from './Cell';\r\nimport CheckboxCell from './CheckboxCell';\r\nimport { cellBorderStyle, sumColumnWidths } from './helper';\r\n\r\nclass Row extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Columns definition.\r\n */\r\n columns: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Function to extract the row id.\r\n */\r\n keyExtractor: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Renders subsection when extender is open.\r\n */\r\n renderSubsection: PropTypes.func,\r\n\r\n /**\r\n * Data for this row only.\r\n */\r\n rowData: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Add zebra-striping to row.\r\n */\r\n striped: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * conditionally hide a field in the row or subsection\r\n */\r\n conditionallyHide: PropTypes.bool,\r\n\r\n /**\r\n * Callback when a row is selected.\r\n */\r\n onSelect: PropTypes.func,\r\n\r\n /**\r\n * The selected entities.\r\n */\r\n selections: PropTypes.array,\r\n };\r\n\r\n static defaultProps = {\r\n renderSubsection: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isExtenderOpen: false,\r\n };\r\n\r\n this.handleOnClickExtender = this.handleOnClickExtender.bind(this);\r\n }\r\n\r\n handleOnClickExtender() {\r\n this.setState({ isExtenderOpen: !this.state.isExtenderOpen });\r\n }\r\n\r\n cell(row, col, colIndex) {\r\n if (React.isValidElement(col)) {\r\n return col;\r\n }\r\n\r\n if (isFunction(col.Extender)) {\r\n return (\r\n \r\n {col.Extender(row, this.state.isExtenderOpen)}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {this.cellValue(row, col)}\r\n \r\n );\r\n }\r\n\r\n cellValue(rowData, column) {\r\n if (column.accessor) {\r\n if (isFunction(column.accessor)) {\r\n return column.accessor(rowData);\r\n }\r\n return rowData[column.accessor];\r\n }\r\n return null;\r\n }\r\n\r\n rowClassName() {\r\n return [this.props.classes.row, this.props.striped ? this.props.classes.rowStriped : ''].join(\r\n ' '\r\n );\r\n }\r\n\r\n isSelected() {\r\n const { rowData, selections, keyExtractor } = this.props;\r\n const id = keyExtractor(rowData);\r\n const found = selections.find(s => id === keyExtractor(s));\r\n return found !== undefined;\r\n }\r\n\r\n render() {\r\n const columns = [...this.props.columns];\r\n\r\n if (this.props.onSelect) {\r\n columns.unshift(\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n
\r\n {columns.map((col, colIndex) => this.cell(this.props.rowData, col, colIndex))}\r\n
\r\n {this.state.isExtenderOpen && (\r\n
\r\n {this.props.renderSubsection(this.props.rowData, this.props.conditionallyHide)}\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n row: {\r\n flex: 0,\r\n borderLeft: cellBorderStyle(theme),\r\n width: props => `${sumColumnWidths(props.columns)}px`,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n borderCollapse: 'collapse',\r\n },\r\n\r\n rowStriped: {\r\n backgroundColor: '#efefef',\r\n },\r\n\r\n subSection: {\r\n flex: 0,\r\n width: props => `${sumColumnWidths(props.columns)}px`,\r\n borderBottom: cellBorderStyle(theme),\r\n borderLeft: cellBorderStyle(theme),\r\n borderRight: cellBorderStyle(theme),\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Row);\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport Row from './Row';\n\nclass Rows extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Columns definition.\n */\n columns: PropTypes.array.isRequired,\n\n /**\n * Data grid data.\n */\n data: PropTypes.array.isRequired,\n\n /**\n * Function to extract the row id.\n */\n keyExtractor: PropTypes.func.isRequired,\n\n /**\n * Adds zebra-striping to rows.\n */\n striped: PropTypes.bool,\n\n /**\n * Function to render subsection when extender is open.\n */\n renderSubsection: PropTypes.func,\n\n /**\n * Callback when a row is selected.\n */\n onSelect: PropTypes.func,\n\n /**\n * The selected entities.\n */\n selections: PropTypes.array,\n };\n\n constructor() {\n super();\n this.containerRef = React.createRef();\n }\n\n isStriped(index) {\n return this.props.striped && index % 2 !== 0;\n }\n\n render() {\n return (\n
\n {this.props.data &&\n this.props.data.map((row, index) => {\n return (\n \n );\n })}\n
\n );\n }\n}\n\nconst styles = theme => ({\n container: {\n display: 'flex 1 0 auto',\n flexDirection: 'column',\n },\n});\n\nexport default injectSheet(styles)(Rows);\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { IconSortAsc, IconSortDesc, IconSortNone } from '../../../../app/components/icons';\r\nimport { COLOR_BASE_PRIMARY, COLOR_ICON_ON_LIGHT } from '../../../../app/Constants';\r\n\r\nconst isSortActive = props => props.sortBy === props.column.colName;\r\n\r\nclass SortHeaderIcon extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss provided property.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Column definition.\r\n */\r\n column: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Property to sort by.\r\n */\r\n sortBy: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Is sort ascending order.\r\n */\r\n isAsc: PropTypes.bool.isRequired,\r\n };\r\n\r\n render() {\r\n const { classes, column, sortBy } = this.props;\r\n\r\n if (!column.colName) {\r\n return null;\r\n }\r\n\r\n let Icon = IconSortNone;\r\n let color = COLOR_ICON_ON_LIGHT;\r\n let colorVariant = 'light3';\r\n\r\n if (sortBy === column.colName) {\r\n Icon = this.props.isAsc ? IconSortAsc : IconSortDesc;\r\n color = COLOR_BASE_PRIMARY;\r\n colorVariant = 'dark3';\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light1'],\r\n padding: theme.spacing.small,\r\n borderRadius: '3px',\r\n border: props =>\r\n isSortActive(props)\r\n ? `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light3']}`\r\n : `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light1']}`,\r\n\r\n '&:hover': {\r\n border: props =>\r\n isSortActive(props)\r\n ? `1px solid ${theme.color[COLOR_BASE_PRIMARY]['dark5']}`\r\n : `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light3']}`,\r\n transition: 'all 350ms',\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SortHeaderIcon);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Columns } from '../../index';\r\nimport Column from '../../layout/flex/Column';\r\nimport Text from '../../text/Text';\r\nimport { propTypeColor, propTypeColorVariant } from '../../util/propTypes';\r\nimport Cell from './Cell';\r\nimport SortHeaderIcon from './SortHeaderIcon';\r\n\r\nexport default class SortHeaderCell extends Component {\r\n static propTypes = {\r\n /**\r\n * Text alignment.\r\n */\r\n align: PropTypes.oneOf(['left', 'center', 'right']),\r\n\r\n /**\r\n * Column definition.\r\n */\r\n column: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Click handler.\r\n */\r\n onClickCell: PropTypes.func,\r\n\r\n /**\r\n * Background color.\r\n */\r\n bgColor: propTypeColor,\r\n\r\n /**\r\n * Background color variant.\r\n */\r\n bgColorVariant: propTypeColorVariant,\r\n\r\n /**\r\n * Property to sort by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is sort ascending order.\r\n */\r\n isAsc: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n align: 'left',\r\n onClickCell: undefined,\r\n bgColor: 'primary',\r\n bgColorVariant: 'light1',\r\n sortBy: undefined,\r\n isAsc: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleOnClick = this.handleOnClick.bind(this);\r\n }\r\n\r\n handleOnClick(event) {\r\n event.stopPropagation();\r\n if (this.props.onClickCell) {\r\n this.props.onClickCell(this.props.column);\r\n }\r\n }\r\n\r\n renderLabel() {\r\n return (\r\n \r\n {this.props.column.headerLabel}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { sortBy, isAsc, column, ...rest } = this.props;\r\n\r\n const canSort = column.colName && this.props.onClickCell;\r\n\r\n return (\r\n \r\n \r\n {this.renderLabel()}\r\n {canSort && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import difference from 'lodash/difference';\r\nimport PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport Cell from './Cell';\r\nimport CheckboxCell from './CheckboxCell';\r\nimport { cellBorderStyle, sumColumnWidths } from './helper';\r\nimport SortHeaderCell from './SortHeaderCell';\r\n\r\nclass SortHeader extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Columns definition.\r\n */\r\n columns: PropTypes.array.isRequired,\r\n\r\n /**\r\n * The data grid rows.\r\n */\r\n data: PropTypes.array,\r\n\r\n /**\r\n * Property to sort by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is sort ascending order.\r\n */\r\n isAsc: PropTypes.bool,\r\n\r\n /**\r\n * Called when the sort has changed.\r\n */\r\n onSortChange: PropTypes.func,\r\n\r\n /**\r\n * Are filters enabled? Disables the bottom border when they are.\r\n */\r\n filtersEnabled: PropTypes.bool,\r\n\r\n /**\r\n * The selected entities.\r\n */\r\n selections: PropTypes.array,\r\n\r\n /**\r\n * Callback when all rows are selected.\r\n */\r\n onSelectAll: PropTypes.func,\r\n\r\n /**\r\n * Function to extract the row id.\r\n */\r\n keyExtractor: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n sortBy: undefined,\r\n isAsc: undefined,\r\n data: [],\r\n selections: [],\r\n filtersEnabled: true,\r\n onSortChange: undefined,\r\n onSelectAll: undefined,\r\n keyExtractor: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleOnSortChange = this.handleOnSortChange.bind(this);\r\n this.handleOnSelectAll = this.handleOnSelectAll.bind(this);\r\n }\r\n\r\n handleOnSortChange(column) {\r\n if (this.props.onSortChange) {\r\n this.props.onSortChange(column);\r\n }\r\n }\r\n\r\n handleOnSelectAll() {\r\n if (this.props.onSelectAll) {\r\n const { data, selections } = this.props;\r\n const isAllSelected = this.isAllSelected(data, selections);\r\n\r\n this.props.onSelectAll({\r\n isAllSelected: isAllSelected,\r\n indeterminate: this.isIndeterminate(data, selections, isAllSelected),\r\n });\r\n }\r\n }\r\n\r\n isAllSelected(data, selections) {\r\n const { keyExtractor } = this.props;\r\n\r\n if (!keyExtractor) {\r\n return false;\r\n }\r\n\r\n const selectedIds = selections.map(s => keyExtractor(s));\r\n const dataIds = data.map(s => keyExtractor(s));\r\n const differenceAB = difference(dataIds, selectedIds);\r\n\r\n return differenceAB.length === 0;\r\n }\r\n\r\n isIndeterminate(data, selections, isAllSelected) {\r\n const { keyExtractor } = this.props;\r\n\r\n if (!keyExtractor || isAllSelected) {\r\n return false;\r\n }\r\n\r\n const selectedIds = selections.map(s => keyExtractor(s));\r\n const dataIds = data.map(s => keyExtractor(s));\r\n const differenceAB = difference(dataIds, selectedIds);\r\n\r\n if (differenceAB.length === dataIds.length) {\r\n return false;\r\n }\r\n\r\n return differenceAB.length < dataIds.length;\r\n }\r\n\r\n render() {\r\n const { data, sortBy, isAsc, selections, filtersEnabled, onSelectAll, classes } = this.props;\r\n\r\n const columns = [...this.props.columns];\r\n\r\n if (onSelectAll) {\r\n const isAllSelected = this.isAllSelected(data, selections);\r\n const isIndeterminate = this.isIndeterminate(data, selections, isAllSelected);\r\n\r\n columns.unshift(\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n {columns.map((column, index) => {\r\n if (React.isValidElement(column)) {\r\n return column;\r\n }\r\n\r\n if (column.Extender) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n borderTop: cellBorderStyle(theme),\r\n borderLeft: cellBorderStyle(theme),\r\n width: props => sumColumnWidths(props.columns),\r\n borderCollapse: 'collapse',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SortHeader);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport WindowResizeListener from '../../../app/components/listener/WindowResizeListener';\r\nimport SpinnerOverlay from '../../../app/components/spinner/SpinnerOverlay';\r\nimport { domRect } from '../../../app/util/react';\r\nimport Box from '../layout/Box';\r\nimport { propTypeColor } from '../util/propTypes';\r\nimport FilterHeader from './grid/FilterHeader';\r\nimport { sumColumnWidths } from './grid/helper';\r\nimport HorizontalScrollView from './grid/HorizontalScrollView';\r\nimport Paginator from './grid/Paginator';\r\nimport Rows from './grid/Rows';\r\nimport SortHeader from './grid/SortHeader';\r\n\r\nclass DataGrid extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * The base color of the data grid.\r\n */\r\n color: propTypeColor,\r\n\r\n /**\r\n * The columns.\r\n */\r\n columns: PropTypes.array,\r\n\r\n /**\r\n * The data to display.\r\n */\r\n data: PropTypes.array,\r\n\r\n /**\r\n * Function to extract the row id.\r\n */\r\n keyExtractor: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Callback to load data on request.\r\n */\r\n onRequestData: PropTypes.func,\r\n\r\n /**\r\n * Current page to display.\r\n */\r\n page: PropTypes.number,\r\n\r\n /**\r\n * The number of rows in each page.\r\n */\r\n pageSize: PropTypes.number,\r\n\r\n /**\r\n * Total numbers of records.\r\n */\r\n total: PropTypes.number,\r\n\r\n /**\r\n * Is data loading.\r\n */\r\n loading: PropTypes.bool,\r\n\r\n /**\r\n * Show top pagination?\r\n */\r\n showPaginationTop: PropTypes.bool,\r\n\r\n /**\r\n * Show bottom pagination?\r\n */\r\n showPaginationBottom: PropTypes.bool,\r\n\r\n /**\r\n * Add zebra-striping to rows.\r\n */\r\n striped: PropTypes.bool,\r\n\r\n /**\r\n * Renders subsection when extender is open.\r\n */\r\n renderSubsection: PropTypes.func,\r\n\r\n /**\r\n * The property name to sort the results by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is the sort ascending?\r\n */\r\n isAsc: PropTypes.bool,\r\n\r\n /**\r\n * The search criteria.\r\n */\r\n criteria: PropTypes.object,\r\n\r\n /**\r\n * Callback when a row is selected.\r\n */\r\n onSelect: PropTypes.func,\r\n\r\n /**\r\n * Enable filters\r\n */\r\n enableFiltering: PropTypes.bool,\r\n\r\n /**\r\n * Pre-selections\r\n */\r\n selections: PropTypes.array,\r\n };\r\n\r\n static defaultProps = {\r\n color: 'primary',\r\n loading: false,\r\n showPaginationTop: false,\r\n showPaginationBottom: true,\r\n striped: false,\r\n keyExtractor: row => row.id,\r\n sortBy: undefined,\r\n isAsc: true,\r\n criteria: {},\r\n onSelect: undefined,\r\n enableFiltering: true,\r\n selections: [],\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selections: props.selections || [],\r\n };\r\n this.containerRef = React.createRef();\r\n this.handleOnPageChange = this.handleOnPageChange.bind(this);\r\n this.handleOnSortChange = this.handleOnSortChange.bind(this);\r\n this.handleOnCriteriaChange = this.handleOnCriteriaChange.bind(this);\r\n this.handleOnSelect = this.handleOnSelect.bind(this);\r\n this.handleOnSelectAll = this.handleOnSelectAll.bind(this);\r\n this.handleOnWindowResize = this.handleOnWindowResize.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.containerRef && this.containerRef.current) {\r\n this.updateWidthState();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.width !== this.getNextWidth()) {\r\n this.updateWidthState();\r\n }\r\n\r\n if (prevState.selections !== this.props.selections) {\r\n this.setState({\r\n selections: this.props.selections,\r\n });\r\n }\r\n }\r\n\r\n handleOnSortChange(column) {\r\n const isAsc = this.props.sortBy === column.colName ? !this.props.isAsc : true;\r\n\r\n if (this.props.onRequestData) {\r\n this.props.onRequestData({\r\n page: 1,\r\n pageSize: this.props.pageSize,\r\n sortBy: column.colName,\r\n isAsc: isAsc,\r\n criteria: this.props.criteria,\r\n });\r\n }\r\n }\r\n\r\n handleOnPageChange({ page, pageSize }) {\r\n if (this.props.onRequestData) {\r\n this.props.onRequestData({\r\n page: page,\r\n pageSize: pageSize,\r\n sortBy: this.props.sortBy,\r\n isAsc: this.props.isAsc,\r\n criteria: this.props.criteria,\r\n });\r\n }\r\n }\r\n\r\n handleOnCriteriaChange(criteria) {\r\n if (this.props.onRequestData) {\r\n this.props.onRequestData({\r\n page: 1,\r\n pageSize: this.props.pageSize,\r\n sortBy: this.props.sortBy,\r\n isAsc: this.props.isAsc,\r\n criteria: criteria,\r\n });\r\n }\r\n }\r\n\r\n handleOnSelect(rowData, checked) {\r\n const { keyExtractor, onSelect } = this.props;\r\n\r\n if (!onSelect) {\r\n return undefined;\r\n }\r\n\r\n const cb = (onSelect, selections) => onSelect && onSelect(selections);\r\n\r\n if (checked) {\r\n this.setState(\r\n prevState => ({\r\n selections: [...prevState.selections, rowData],\r\n }),\r\n () => cb(onSelect, this.state.selections)\r\n );\r\n } else {\r\n const id = keyExtractor(rowData);\r\n this.setState(\r\n prevState => ({\r\n selections: prevState.selections.filter(s => keyExtractor(s) !== id),\r\n }),\r\n () => cb(onSelect, this.state.selections)\r\n );\r\n }\r\n }\r\n\r\n handleOnSelectAll({ isAllSelected, indeterminate }) {\r\n const { onSelect, data, keyExtractor } = this.props;\r\n\r\n const cb = (onSelect, selections) => onSelect && onSelect(selections);\r\n\r\n let newSelections = [];\r\n\r\n if (isAllSelected) {\r\n const dataIds = data.map(d => keyExtractor(d));\r\n newSelections = this.state.selections.filter(s => !dataIds.includes(keyExtractor(s)));\r\n } else if (!isAllSelected || indeterminate) {\r\n const selectedIds = this.state.selections.map(s => keyExtractor(s));\r\n const toAdd = data.filter(d => !selectedIds.includes(keyExtractor(d)));\r\n newSelections = [...this.state.selections, ...toAdd];\r\n } else {\r\n newSelections = [...this.state.selections];\r\n }\r\n\r\n this.setState(\r\n () => ({\r\n selections: newSelections,\r\n }),\r\n () => cb(onSelect, this.state.selections)\r\n );\r\n }\r\n\r\n handleOnWindowResize() {\r\n this.updateWidthState();\r\n }\r\n\r\n getNextWidth() {\r\n const containerRect = domRect(this.containerRef);\r\n\r\n if (containerRect) {\r\n const columnsWidth = sumColumnWidths(this.props.columns);\r\n return columnsWidth < containerRect.width ? columnsWidth : containerRect.width;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n updateWidthState() {\r\n this.setState({\r\n width: this.getNextWidth(),\r\n });\r\n }\r\n\r\n render() {\r\n const { showPaginationBottom, showPaginationTop } = this.props;\r\n\r\n return (\r\n
\r\n \r\n\r\n {this.props.loading && }\r\n\r\n {showPaginationTop && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n\r\n {this.props.enableFiltering && (\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n {showPaginationBottom && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n position: 'relative',\r\n '-webkit-overflow-scrolling': 'touch',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(DataGrid);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { FadeInOut } from '../index';\r\n\r\n/**\r\n * A fullscreen translucent overlay the will fade in or out when the boolean value of the 'on'\r\n * property changes.\r\n */\r\nclass Overlay extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * JSS classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Whether or not the overlay is turned on.\r\n */\r\n on: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Callback when overlay is clicked, typically used to to turn overlay off.\r\n */\r\n onClick: PropTypes.func,\r\n\r\n /**\r\n * Z-Index of overlay.\r\n */\r\n zIndex: PropTypes.number,\r\n };\r\n\r\n static defaultProps = {\r\n onClick: undefined,\r\n zIndex: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleOnClickClose = this.handleOnClickClose.bind(this);\r\n }\r\n\r\n /**\r\n * Handles when overlay is clicked, calls onClick prop.\r\n */\r\n handleOnClickClose(event) {\r\n if (this.props.onClick) {\r\n this.props.onClick(event);\r\n }\r\n }\r\n\r\n render() {\r\n const { overlay } = this.props.classes;\r\n\r\n return (\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n /**\r\n * The overlay styles.\r\n */\r\n overlay: {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n height: '100%',\r\n width: '100%',\r\n zIndex: props => props.zIndex,\r\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Overlay);\r\n","/**\n * Joins an array strings separated by a space.\n */\nexport const join = (...classNames) => classNames.join(' ');\n","import PropTypes from \"prop-types\";\nimport React, { PureComponent } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { animated, config, Transition } from \"react-spring/renderprops\";\nimport { COLOR_BASE_PRIMARY, COLOR_BASE_RED } from \"../../Constants\";\nimport { join } from \"../../util/style\";\nimport { IconChevronDown, IconChevronUp, IconClear } from \"../icons\";\nimport { theme } from \"../../../lib/base\";\n\nclass Select extends PureComponent {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n /**\n * The selected value.\n */\n value: PropTypes.any,\n /**\n * Placeholder text.\n */\n placeholder: PropTypes.string,\n /**\n * Handle when selected choice has changed.\n */\n onChange: PropTypes.func,\n /**\n * Is choice panel open?\n */\n isOpen: PropTypes.bool,\n /**\n * Arrayy of choices.\n */\n choices: PropTypes.array.isRequired,\n /**\n * Key extractor for each choice.\n */\n keyExtractor: PropTypes.func.isRequired,\n /**\n * Label extractor for each choice.\n */\n labelExtractor: PropTypes.func.isRequired,\n /**\n * Renders each choice.\n */\n renderChoice: PropTypes.func.isRequired,\n /**\n * Width of the select.\n */\n width: PropTypes.string,\n /**\n * Can clear the selection.\n */\n canClear: PropTypes.bool.isRequired,\n /**\n * requiredBorderStyle (validation indicator)\n */\n invalidBorderStyle: PropTypes.bool\n };\n\n static defaultProps = {\n children: undefined,\n onChange: undefined,\n isOpen: false,\n width: undefined,\n canClear: false,\n invalidBorderStyle: undefined\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n isOpen: props.isOpen,\n choices: props.choices\n };\n\n this.container = React.createRef();\n\n this.handleOnClick = this.handleOnClick.bind(this);\n this.handleClearValue = this.handleClearValue.bind(this);\n }\n\n componentDidMount() {\n this.setState({\n containerLayout: this.container.current.getBoundingClientRect()\n });\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.choices !== prevProps.choices) {\n this.setState({ choices: this.props.choices });\n }\n }\n\n handleOnClick(event) {\n this.setState({ isOpen: !this.state.isOpen });\n event.stopPropagation();\n }\n\n handleOnClickChoice(event, item, index) {\n this.props.onChange(event, item, index);\n }\n\n handleClearValue(event) {\n this.props.onChange(event, undefined, undefined);\n event.stopPropagation();\n }\n\n isSelected(item, index) {\n return (\n this.props.value &&\n this.props.keyExtractor(item, index) === this.props.keyExtractor(this.props.value, index)\n );\n }\n\n renderPlaceholder() {\n if (this.props.value) {\n return this.props.labelExtractor(this.props.value);\n }\n return this.props.placeholder;\n }\n\n renderCaret() {\n if (this.props.value && this.props.canClear) {\n return (\n \n \n \n );\n }\n\n return this.state.isOpen ? (\n \n ) : (\n \n );\n }\n\n render() {\n const {\n container,\n choices,\n placeholder,\n caret,\n placeholderText,\n choice,\n selected\n } = this.props.classes;\n\n const containerBoxStyle =\n this.props.width !== undefined\n ? {\n minWidth: this.props.width\n }\n : {};\n\n const choiceBoxStyle =\n this.state.containerLayout !== undefined\n ? {\n top: this.state.containerLayout.height,\n left: 0\n }\n : {};\n\n const borderColor = this.props.invalidBorderStyle\n ? {\n border: `1px solid ${theme.color[COLOR_BASE_RED].light4}`\n }\n : {\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY].light4}`\n };\n\n return (\n \n
\n
{this.renderPlaceholder()}
\n
{this.renderCaret()}
\n
\n \n {on =>\n on &&\n (springStyles => (\n \n {this.state.choices.map((item, index) => {\n return (\n this.handleOnClickChoice(e, item, index)}\n >\n {this.props.renderChoice(item, index)}\n
\n );\n })}\n \n ))\n }\n \n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n display: \"inline-block\",\n position: \"relative\",\n minHeight: \"48px\",\n width: \"100%\",\n padding: \"16px\",\n paddingLeft: \"16px\",\n backgroundColor: \"white\",\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY].light4}`,\n\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n\n pressed: {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY].light4,\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY].light4}`\n },\n\n placeholder: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\"\n },\n\n placeholderText: {\n flex: 1\n },\n\n caret: {\n flex: 0,\n marginLeft: \"16px\"\n },\n\n choices: {\n position: \"absolute\",\n zIndex: 999,\n backgroundColor: \"white\",\n overflow: \"hidden\",\n overflowY: \"auto\",\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY].light4}`,\n marginBottom: \"24px\",\n marginLeft: \"-1px\",\n width: \"calc(100% + 2px)\",\n ...theme.elevation.shadow3\n },\n\n choice: {\n minHeight: \"48px\",\n width: \"100%\",\n padding: \"8px 16px\",\n display: \"flex\",\n alignItems: \"center\",\n\n \"&:hover\": {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY].light2\n },\n\n \"& > *\": {\n display: \"block\",\n width: \"100%\"\n }\n },\n\n selected: {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY].light4,\n\n \"&:hover\": {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY].light5\n }\n }\n});\n\nexport default injectSheet(styles)(Select);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, DataGrid } from '../../../lib/base';\r\nimport Select from '../form/Select';\r\n\r\nconst api = () => window.nSITE.Api;\r\n\r\nexport default class WarehouseStatsContainer extends Component {\r\n static propTypes = {\r\n /**\r\n * List of dashboards from the API.\r\n */\r\n dashboards: PropTypes.array.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selection: props.dashboards ? props.dashboards[0] : undefined,\r\n dashboardChart: undefined,\r\n isLoading: false,\r\n };\r\n\r\n this.handleOnChangeChart = this.handleOnChangeChart.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchDashboardChart();\r\n }\r\n\r\n handleOnChangeChart(event, choice) {\r\n this.setState({ selection: choice }, this.fetchDashboardChart);\r\n }\r\n\r\n fetchDashboardChart() {\r\n this.setState({ isLoading: true });\r\n\r\n api()\r\n .system.getDashboardChart(this.state.selection.key)\r\n .then(dashboardChart => {\r\n this.setState({\r\n dashboardChart,\r\n isLoading: false,\r\n });\r\n })\r\n .catch(err => {\r\n this.setState({\r\n error: err,\r\n isLoading: false,\r\n });\r\n });\r\n }\r\n\r\n columns() {\r\n return [\r\n {\r\n headerLabel: 'Identifier',\r\n accessor: 'key',\r\n width: 300,\r\n },\r\n {\r\n headerLabel: 'Quantity',\r\n accessor: row => (row.value ? row.value.toLocaleString() : '—'),\r\n width: 130,\r\n align: 'right',\r\n },\r\n ];\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n

Data Warehouse Statistics

\r\n
\r\n\r\n {this.props.dashboards.length > 1 && (\r\n \r\n choice.key}\r\n labelExtractor={choice => choice.value}\r\n renderChoice={choice => choice.value}\r\n />\r\n \r\n )}\r\n\r\n {this.state.dashboardChart && (\r\n \r\n row.key}\r\n showPaginationBottom={false}\r\n enableFiltering={false}\r\n striped\r\n />\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Text } from '../../../lib/base';\r\nimport injectSheet from 'react-jss';\r\nimport Box from '../../../lib/base/layout/Box';\r\nimport { COLOR_BASE_PRIMARY, COLOR_VARIANT_PRIMARY } from '../../../app/Constants';\r\n\r\n/**\r\n * Pre-styled text component for headings.\r\n */\r\nclass HeadingText extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children text node.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Hover title\r\n */\r\n title: PropTypes.string,\r\n\r\n /**\r\n * Text size.\r\n */\r\n size: PropTypes.string,\r\n\r\n /**\r\n * Icon.\r\n */\r\n icon: PropTypes.node,\r\n\r\n /**\r\n * Capitalize\r\n */\r\n caps: PropTypes.bool,\r\n\r\n /**\r\n * Underline heading\r\n */\r\n underline: PropTypes.bool,\r\n\r\n /**\r\n * Active\r\n */\r\n active: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n title: undefined,\r\n caps: false,\r\n };\r\n\r\n render() {\r\n if (!this.props.children) {\r\n return null;\r\n }\r\n\r\n let Icon;\r\n\r\n if (this.props.icon) {\r\n Icon = React.cloneElement(this.props.icon, {\r\n color: 'blue',\r\n });\r\n }\r\n\r\n const { selected } = this.props.classes;\r\n\r\n return (\r\n \r\n {this.props.icon !== undefined && (\r\n \r\n {Icon}\r\n \r\n )}\r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n selected: {\r\n borderBottom: `4px solid ${theme.color[COLOR_BASE_PRIMARY][COLOR_VARIANT_PRIMARY]}`,\r\n\r\n '&:hover': {\r\n borderBottom: `4px solid ${theme.color[COLOR_BASE_PRIMARY]['dark3']}`,\r\n },\r\n },\r\n\r\n '&:hover': {\r\n borderBottom: `4px solid ${theme.color[COLOR_BASE_PRIMARY][COLOR_VARIANT_PRIMARY]}`,\r\n transition: 'all 350ms',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(HeadingText);\r\n","/**\n * Helper to create new route functions.\n *\n * @param history\n * @param path\n * @returns {function()}\n */\nimport Config from \"../config\";\nimport { ROUTE_HOME } from \"../Constants\";\nimport { isSmallScreen } from \"../util/browser\";\n\nconst makeRouteFunc = (history, path) => {\n const route = {\n pathname: path\n };\n return () => history.push(route);\n};\n\nexport const defaultMapRoutePath = () => {\n if (!isSmallScreen()) {\n return \"/map/\" + Config.getStartPanel();\n }\n return \"/map\";\n};\n\n/**\n * Map page related routing helper functions.\n */\nconst navigateToPanel = ({ history, match, location }, panel) => {\n const { subPanel } = match.params;\n let nextPath;\n\n if (match.params && match.params.id) {\n nextPath =\n subPanel !== undefined ? `/map/${panel}/${subPanel}/${match.params.id}` : `/map/${panel}`;\n } else {\n nextPath = subPanel !== undefined ? `/map/${panel}/${panel}` : `/map/${panel}`;\n }\n history.push({\n pathname: nextPath,\n search: location.search\n });\n};\n\nconst navigateToSubPanel = ({ history, match, location }, subPanel, siteId, tab) => {\n const { panel } = match.params;\n let nextPath;\n if (match.params && match.params.siteId && match.params.tab) {\n nextPath =\n panel !== undefined ? `/map/${panel}/${subPanel}/${siteId}/${tab}` : `/map/results/${subPanel}`;\n } else {\n nextPath =\n panel !== undefined ? `/map/${panel}/${subPanel}` : `/map/results/${subPanel}`;\n }\n\n \n history.push({\n pathname: nextPath\n });\n};\n\nconst navigateToSite = ({ history, match, location }, subPanel, siteId, tab) => {\n const params = match.params;\n\n const panel = params.panel !== undefined ? params.panel : \"results\";\n\n const newPath =\n tab !== undefined\n ? `/map/${panel}/${subPanel}/${siteId}/${tab}`\n : `/map/${panel}/${subPanel}/${siteId}`;\n\n history.push({\n pathname: newPath\n });\n};\n\nexport const navigateCloseSubPanel = ({ history, match }) => {\n const params = match.params;\n\n const newPath = params.panel !== undefined ? `/map/${params.panel}` : \"/map\";\n\n history.push({\n pathname: newPath\n });\n};\n\nexport const navigateToMapHome = ({ history }) => {\n history.push({\n pathname: \"/map\"\n });\n};\n\nexport const navigateToInfo = props => navigateToPanel(props, \"info\");\n\nexport const navigateToHelp = props => navigateToPanel(props, \"help\");\n\nexport const navigateToResults = props => navigateToPanel(props, \"results\");\n\nexport const navigateToResultsDirect = ({ history }) => {\n history.push({\n pathname: \"/map/results\"\n });\n};\n\nexport const navigateToMeasure = props => navigateToPanel(props, \"measure\");\n\nexport const navigateToLayers = props => navigateToPanel(props, \"layers\");\n\nexport const navigateToExport = props => navigateToPanel(props, \"export\");\n\nexport const navigateToCriteria = props => navigateToSubPanel(props, \"criteria\");\n\nexport const navigateToFilters = props => navigateToSubPanel(props, \"filters\");\n\nexport const navigateToSummary = (props, siteId) =>\n navigateToSite(props, \"summary\", siteId, undefined);\n\nexport const navigateToMobileCardView = (props, siteId) =>\n navigateToSite(props, \"card\", siteId, undefined);\n\nexport const navigateToMobileProfileView = (props, siteId) =>\n navigateToSite(props, \"profile\", siteId, undefined);\n\nexport const navigateToDetail = (props, siteId) =>\n navigateToSite(props, \"detail\", siteId, undefined);\n\nexport const navigateToDetailTab = (props, siteId, tab) =>\n navigateToSite(props, \"detail\", siteId, tab);\n\nexport const navigateToDetailEnvIntTab = ({ history, match }, siteId, descriptionFilter) => {\n history.push({\n pathname: `/map/results/detail/${siteId}/ei`,\n search: `?description=${encodeURIComponent(descriptionFilter)}`\n });\n};\n\n/**\n * Public: React router functions to navigate to pages.\n */\nexport const toHome = history => makeRouteFunc(history, ROUTE_HOME);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box } from '../../../../../../../../lib/base';\r\nimport { COLOR_BASE_PRIMARY, MEDIA_BREAKPOINT } from '../../../../../../../Constants';\r\n\r\nclass ToolbarButton extends Component {\r\n static propTypes = {\r\n /**\r\n * Circular button?\r\n */\r\n circular: PropTypes.bool,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Click handler.\r\n */\r\n onClick: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Icon.\r\n */\r\n icon: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Inverse the colors of the button.\r\n */\r\n inverse: PropTypes.bool,\r\n\r\n /**\r\n * Title when hovering.\r\n */\r\n title: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Is the tool this button represents active?\r\n */\r\n active: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n inverse: false,\r\n };\r\n\r\n render() {\r\n const { inverse, classes } = this.props;\r\n\r\n const { active, container } = classes;\r\n\r\n const Icon = React.cloneElement(this.props.icon, {\r\n color: !inverse ? 'white' : COLOR_BASE_PRIMARY,\r\n });\r\n\r\n return (\r\n \r\n {Icon}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n minWidth: '36px',\r\n borderRadius: props => (props.circular ? '24px' : undefined),\r\n textAlign: 'center',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: props => !props.inverse && theme.color[COLOR_BASE_PRIMARY]['dark2'],\r\n },\r\n },\r\n\r\n active: {\r\n backgroundColor: props => !props.inverse && theme.color[COLOR_BASE_PRIMARY]['dark4'],\r\n\r\n '&:hover': {\r\n backgroundColor: props => !props.inverse && theme.color[COLOR_BASE_PRIMARY]['dark2'],\r\n },\r\n },\r\n\r\n [`@media ${MEDIA_BREAKPOINT}`]: {\r\n container: {\r\n padding: theme.spacing.medium,\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(ToolbarButton);\r\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router';\nimport Link from '../../../../../../../../lib/base/text/Link';\nimport { IconInfo } from '../../../../../../../components/icons/fontawesome/icons';\nimport { navigateToHelp, navigateToResults } from '../../../../../../../routing';\nimport ToolbarButton from './ToolbarButton';\n\nclass HelpButton extends PureComponent {\n static propTypes = {\n /**\n * Inverse the colors of the button.\n */\n inverse: PropTypes.bool,\n\n /**\n * Button shows only text.\n */\n textOnly: PropTypes.bool,\n\n /**\n * Click handler.\n */\n onClick: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.handleOnClick = this.handleOnClick.bind(this);\n }\n\n handleOnClick() {\n if (this.isPressed()) {\n navigateToResults(this.props);\n } else {\n navigateToHelp(this.props);\n }\n\n if (this.props.onClick) {\n this.props.onClick();\n }\n }\n\n isPressed() {\n const { params } = this.props.match;\n return params.panel === 'help';\n }\n\n render() {\n if (this.props.textOnly) {\n return (\n \n Help\n \n );\n }\n\n return (\n }\n />\n );\n }\n}\n\nexport default withRouter(HelpButton);\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\n\r\n/**\r\n * A low-level component for a span of text.\r\n */\r\nclass Link extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * JSS classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n /**\r\n * Links to...\r\n */\r\n href: PropTypes.string,\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node,\r\n /**\r\n * Additional className to style the text.\r\n */\r\n className: PropTypes.string,\r\n /**\r\n * Title\r\n */\r\n title: PropTypes.string,\r\n /**\r\n * Target\r\n */\r\n target: PropTypes.string,\r\n /**\r\n * Do not allow text to wrap.\r\n */\r\n nowrap: PropTypes.bool,\r\n /**\r\n * Elipsis when text overflows\r\n */\r\n elipsis: PropTypes.bool,\r\n /**\r\n * Should be a block element.\r\n */\r\n block: PropTypes.bool,\r\n /**\r\n * Click handler, overrides href.\r\n */\r\n onClick: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n className: undefined,\r\n title: undefined,\r\n nowrap: false,\r\n elipsis: false,\r\n block: false,\r\n target: '_self',\r\n onClick: undefined,\r\n };\r\n\r\n render() {\r\n const { href, onClick, target, title, classes, className, children } = this.props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n anchor: {\r\n ...theme.typography.text,\r\n display: props => (props.block ? 'block' : 'inline-block'),\r\n color: theme.color.base.white,\r\n textDecoration: 'none',\r\n whiteSpace: props => (props.nowrap ? 'nowrap' : undefined),\r\n textOverflow: props => (props.elipsis ? 'ellipsis' : undefined),\r\n overflow: props => (props.elipsis ? 'hidden' : undefined),\r\n padding: props => props.padding,\r\n\r\n '&:hover': {\r\n color: theme.color.base.white,\r\n cursor: props => (props.onClick ? 'pointer' : undefined),\r\n },\r\n\r\n '&:focus': {\r\n color: theme.color.base.white,\r\n },\r\n\r\n '&:active': {\r\n color: theme.color.base.white,\r\n },\r\n\r\n '&:visited': {\r\n color: theme.color.base.white,\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Link);\r\n","import React from 'react';\r\nimport Link from './Link';\r\n\r\nexport const createNavLink = (history, navItem, className) => {\r\n if (navItem.route) {\r\n return (\r\n history.push({ pathname: navItem.route })}\r\n className={className}\r\n title={navItem.name}\r\n >\r\n {navItem.name}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {navItem.name}\r\n \r\n );\r\n }\r\n};\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { withRouter } from 'react-router-dom';\nimport { animated, config, Transition } from 'react-spring/renderprops';\nimport { Overlay, Row, Rows } from '../../../lib/base';\nimport Hr from '../../../lib/base/basic/Hr';\nimport Column from '../../../lib/base/layout/flex/Column';\nimport Columns from '../../../lib/base/layout/flex/Columns';\nimport Config from '../../config';\nimport { COLOR_BASE_PRIMARY, Z_INDEX_HEADER_MENU } from '../../Constants';\nimport HelpButton from '../../page/map/components/shared/panel/toolbar/buttons/HelpButton';\nimport ToolbarButton from '../../page/map/components/shared/panel/toolbar/buttons/ToolbarButton';\nimport { IconElipsisV } from '../icons';\nimport { createNavLink } from './createNavLink';\n\nclass ApplicationMenu extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n isMenuOpen: false,\n };\n\n this.handleOnClickMenu = this.handleOnClickMenu.bind(this);\n this.handleOnCloseMenu = this.handleOnCloseMenu.bind(this);\n }\n\n /**\n * Toggle the hamburger menu.\n */\n handleOnClickMenu() {\n this.setState({ isMenuOpen: !this.state.isMenuOpen });\n }\n\n handleOnCloseMenu() {\n this.setState({ isMenuOpen: false });\n }\n\n renderMenuItem(icon, link) {\n return (\n \n \n {icon}\n \n {link}\n \n );\n }\n\n renderHelpButton() {\n return this.renderMenuItem(\n ,\n \n );\n }\n\n render() {\n const { links, link } = this.props.classes;\n\n return (\n \n }\n />\n\n \n\n
\n \n {on =>\n on &&\n (springStyles => (\n \n \n {this.renderHelpButton()}\n
\n {Config.getHeaderNavigation().map((nav, index) => (\n \n {this.renderMenuItem(null, createNavLink(this.props.history, nav, link))}\n \n ))}\n
\n
\n ))\n }\n \n
\n
\n );\n }\n}\n\nconst styles = theme => ({\n menuItemColumns: {\n minHeight: '48px',\n },\n\n links: {\n position: 'absolute',\n minWidth: '200px',\n ...theme.elevation.shadow3,\n zIndex: Z_INDEX_HEADER_MENU,\n top: 10,\n right: 10,\n backgroundColor: theme.color.base.white,\n textAlign: 'left',\n maxHeight: '300px',\n overflowY: 'auto',\n },\n\n link: {\n ...theme.typography.small,\n paddingTop: theme.spacing.small,\n paddingBottom: theme.spacing.small,\n margin: theme.spacing.smaller,\n color: theme.color.base.blue,\n\n '&:active, &:visited': {\n textDecoration: 'none',\n color: theme.color.base.blue,\n },\n\n '&:hover': {\n color: theme.color.base.blue,\n },\n\n '&:focus': {\n outlineColor: theme.color.base.blue,\n },\n },\n\n iconColumn: {\n minWidth: '48px',\n },\n});\n\nexport default withRouter(injectSheet(styles)(ApplicationMenu));\n","import PropTypes from 'prop-types';\nimport React, { Component, Fragment } from 'react';\nimport injectSheet from 'react-jss';\nimport { withRouter } from 'react-router-dom';\nimport { Column, Columns, Row, Rows, Text } from '../../../lib/base';\nimport Config from '../../config';\nimport { MEDIA_BREAKPOINT } from '../../Constants';\nimport { toHome } from '../../routing';\nimport { isSmallScreen } from '../../util/browser';\nimport ApplicationMenu from './ApplicationMenu';\nimport { createNavLink } from './createNavLink';\nimport Link from './Link';\n\nclass Header extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = { isShowHamburgerMenu: false };\n this.handleOnClickHamburger = this.handleOnClickHamburger.bind(this);\n }\n\n /**\n * Updates component from props that have changed.\n *\n * (1) Meta theme color - Changes chrome address bar color.\n *\n * TODO Extract to a separate component.\n */\n componentDidMount() {\n const meta = document.getElementById('meta-theme-color');\n meta.content = Config.getHeaderColorBackground();\n }\n\n /**\n * Wraps a component with a link to this application's url.\n */\n withApplicationLink(component) {\n return (\n \n {component}\n \n );\n }\n\n /**\n * Toggle the hamburger menu.\n */\n handleOnClickHamburger() {\n this.setState({ isShowHamburgerMenu: !this.state.isShowHamburgerMenu });\n }\n\n render() {\n const {\n container,\n header,\n warning,\n applicationIcon,\n applicationInitials,\n bullet,\n applicationName,\n links,\n link,\n mobileOnly,\n } = this.props.classes;\n\n return (\n \n \n \n {!!window.MSInputMethodContext && !!document.documentMode && (\n \n {Config.getIeWarning()}\n \n )}\n\n {Config.getHeaderNavigation().map((nav, index) => (\n \n {createNavLink(this.props.history, nav, link)}\n \n ))}\n \n \n \n \n {Config.getApplicationIcon() && (\n \n {this.withApplicationLink(\n \n )}\n \n )}\n\n {Config.getApplicationInitials() && (\n \n \n {this.withApplicationLink(\n {Config.getApplicationInitials()}\n )}\n \n \n \n \n \n )}\n\n \n {this.withApplicationLink({Config.getApplicationName()})}\n \n\n \n \n \n \n \n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n ...theme.elevation.shadow1,\n height: '88px',\n\n [`@media ${MEDIA_BREAKPOINT}`]: {\n height: '44px',\n },\n },\n\n /**\n * The header background and text colors can be defined in the settings object.\n */\n header: {\n height: '44px',\n backgroundColor: Config.getHeaderColorBackground() || theme.color.base.blue,\n color: Config.getHeaderColorText() || theme.color.base.white,\n },\n\n mobileOnly: {\n display: 'none',\n },\n\n applicationIcon: {\n height: '24px',\n margin: theme.spacing.inset.stretch.medium,\n },\n\n applicationInitials: {\n fontWeight: theme.typography.weight.heavier,\n letterSpacing: 1.5,\n paddingLeft: Config.getApplicationIcon() ? undefined : '1em',\n },\n\n bullet: {\n padding: theme.spacing.inset.stretch.small,\n fontWeight: theme.typography.weight.heaviest,\n color: Config.getHeaderColorText() || theme.color.base.white,\n },\n\n applicationName: {\n minWidth: 0,\n },\n\n warning: {\n textAlign: 'left',\n paddingRight: '2em',\n },\n\n links: {\n height: '44px',\n backgroundColor: theme.color.gray.dark5,\n color: theme.color.base.white,\n whiteSpace: 'nowrap',\n overflowY: 'hidden',\n overflowX: 'auto',\n justifyContent: 'flex-end',\n '-webkit-overflow-scrolling': 'touch',\n },\n\n link: {\n padding: theme.spacing.inset.stretch.medium,\n margin: theme.spacing.smaller,\n fontSize: '14px',\n\n '&:active, &:visited': {\n textDecoration: 'none',\n color: theme.color.base.white,\n },\n\n '&:hover': {\n color: theme.color.base.blue,\n },\n\n '&:focus': {\n outlineColor: theme.color.base.blue,\n },\n },\n\n [`@media ${MEDIA_BREAKPOINT}`]: {\n mobileOnly: {\n display: 'block',\n },\n\n links: {\n display: 'none',\n },\n\n applicationInitials: {\n display: 'none',\n },\n\n bullet: {\n display: 'none',\n },\n\n hamburger: {\n display: 'block',\n padding: '0 8px',\n },\n },\n});\n\nexport default withRouter(injectSheet(styles)(Header));\n","import PropTypes from 'prop-types';\r\nimport React, { Fragment, PureComponent } from 'react';\r\nimport Header from '../../components/header/Header';\r\n\r\nexport default class BaseStandardPage extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box, Column, Columns, Row, Rows } from '../../../lib/base';\r\nimport WarehouseStatsContainer from '../../components/about/WarehouseStatsContainer';\r\nimport WindowDocumentTitle from '../../components/dom/WindowDocumentTitle';\r\nimport HeadingText from '../../components/text/HeadingText';\r\nimport Config from '../../config';\r\nimport { isSmallScreen } from '../../util/browser';\r\nimport BaseStandardPage from '../base/BaseStandardPage';\r\n\r\nconst api = () => window.nSITE.Api;\r\n\r\nclass AboutPage extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.aboutRefLeft = React.createRef();\r\n this.aboutRefCenter = React.createRef();\r\n this.disclaimerRef = React.createRef();\r\n\r\n this.state = {\r\n dashboards: undefined,\r\n isLoading: true,\r\n error: undefined,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData() {\r\n fetch(Config.getApplicationBaseUrl() + '/content/aboutLeft')\r\n .then(response => response.text())\r\n .then(text => {\r\n if (this.aboutRefLeft && this.aboutRefLeft.current) {\r\n this.aboutRefLeft.current.innerHTML = text;\r\n }\r\n });\r\n\r\n fetch(Config.getApplicationBaseUrl() + '/content/aboutCenter')\r\n .then(response => response.text())\r\n .then(text => {\r\n if (this.aboutRefCenter && this.aboutRefCenter.current) {\r\n this.aboutRefCenter.current.innerHTML = text;\r\n }\r\n });\r\n\r\n fetch(Config.getApplicationBaseUrl() + '/content/aboutDisclaimer')\r\n .then(response => response.text())\r\n .then(text => {\r\n if (this.disclaimerRef && this.disclaimerRef.current) {\r\n this.disclaimerRef.current.innerHTML = text;\r\n }\r\n });\r\n\r\n this.setState({ isLoading: true });\r\n\r\n api()\r\n .system.getDashboardList()\r\n .then(dashboards => {\r\n this.setState({\r\n dashboards,\r\n isLoading: false,\r\n });\r\n })\r\n .catch(err => {\r\n this.setState({\r\n error: err,\r\n isLoading: false,\r\n });\r\n });\r\n }\r\n\r\n renderContent() {\r\n if (isSmallScreen()) {\r\n return (\r\n \r\n \r\n  \r\n \r\n \r\n  \r\n \r\n \r\n {this.state.dashboards && (\r\n \r\n )}\r\n \r\n Disclaimer\r\n \r\n  \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
 
\r\n
\r\n \r\n
 
\r\n
\r\n \r\n {this.state.dashboards && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n Disclaimer\r\n \r\n  \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.renderContent()}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n maxWidth: {\r\n maxWidth: '1200px',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(AboutPage);\r\n","import React, { PureComponent } from 'react';\r\nimport ReactJSON from 'react-json-view';\r\nimport injectSheet from 'react-jss';\r\nimport WindowDocumentTitle from '../../components/dom/WindowDocumentTitle';\r\nimport Config from '../../config';\r\nimport BaseStandardPage from '../base/BaseStandardPage';\r\n\r\nclass DebugPage extends PureComponent {\r\n renderValue(value) {\r\n if (typeof value === 'object') {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (typeof value === 'boolean') {\r\n return value === true ? 'true' : 'false';\r\n }\r\n\r\n return value;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const settings = Config.all();\r\n const keys = Object.keys(settings).sort();\r\n\r\n const rows = keys.map(key => {\r\n return (\r\n \r\n {key}\r\n {this.renderValue(settings[key])}\r\n \r\n );\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rows}\r\n
\r\n
Application Settings
\r\n
KeyValue
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n table: {\r\n marginTop: '24px',\r\n marginBottom: '24px',\r\n maxWidth: '1200px',\r\n margin: '0 auto',\r\n fontSize: '13px',\r\n },\r\n\r\n header: {\r\n fontSize: '24px',\r\n fontWeight: 'bold',\r\n padding: '8px',\r\n },\r\n\r\n colHeader: {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n backgroundColor: '#efefef',\r\n textAlign: 'left',\r\n padding: '8px',\r\n },\r\n\r\n td: {\r\n padding: '8px',\r\n border: '1px solid #efefef',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(DebugPage);\r\n","import ScaleLine from 'ol/control/ScaleLine';\nimport OLMap from 'ol/Map';\nimport View from 'ol/View';\nimport PropTypes from 'prop-types';\nimport React, { Children, Component } from 'react';\nimport { DEFAULT_MAP_PADDING } from '../../../app/Constants';\n\nconst DEFAULT_DURATION = 350;\n\n/**\n * Top-level component for displaying a map.\n *\n * The most interesting aspect about this component is that it creates an instance of an OpenLayers\n * Map and stores it as an instance variable on the component. To use this component you will need\n * to add the ol.css file yourself.\n *\n * this.map = new Map({})\n *\n * This component will operate on that instance variable at various points in it's lifecycle.\n * Primarily what this component does is react to property changes by updating that map instance\n * variable. For instance, if the changes we'll need to handle that property\n * change and update the map instance by calling the OpenLayers Map API. For example:\n *\n * this.map.setZoom(x);\n *\n */\nclass Map extends Component {\n /**\n * List of properties this component accepts. The usage of PropTypes is for type checking of the\n * properties.\n *\n */\n static propTypes = {\n /**\n * Children components.\n */\n children: PropTypes.node,\n /**\n * Dom id where the map will be mounted. The id should not change between between renders.\n */\n id: PropTypes.string.isRequired,\n /**\n * Width of the map, can be a string or number. Defaults\n * to 100%.\n */\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * Height of the map, can be a string or number.Defaults\n * to 100%.\n */\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * The center location of the map as Web Mercator projection.\n */\n center: PropTypes.array,\n /**\n * The [X,Y] of the map view to position the center on.\n */\n centerPosition: PropTypes.array,\n /**\n * The zoom level of the map.\n */\n zoom: PropTypes.number,\n /**\n * The minimum zoom level of the map.\n */\n minResolution: PropTypes.number,\n /**\n * The maximum zoom level of the map.\n */\n maxResolution: PropTypes.number,\n /**\n * max zoom level from db\n */\n maxZoom: PropTypes.number,\n /**\n * min zoom level from db\n */\n minZoom: PropTypes.number,\n /**\n * The type of units the controls will use for distance and area. US is the\n * default.\n */\n units: PropTypes.string,\n /**\n * Is scaline visible on the map? Default is true.\n */\n scaleLine: PropTypes.bool,\n /**\n * The extent of the map as Web Mercator projection.\n */\n extent: PropTypes.array,\n /**\n * The padding around the map fitting the extent.\n */\n padding: PropTypes.array,\n /**\n * Interactive, yes or no.\n */\n interactive: PropTypes.bool,\n };\n\n /**\n * Default property values for those that are not required.\n */\n static defaultProps = {\n children: undefined,\n center: [-122.419416, 37.774929], // san francisco, why not?\n centerPosition: undefined,\n zoom: 13,\n maxZoom: undefined,\n minZoom: 1,\n width: '100%',\n minResolution: 0.3,\n maxResolution: undefined,\n height: '100%',\n units: 'us',\n scaleLine: true,\n extent: undefined,\n padding: DEFAULT_MAP_PADDING,\n interactive: true,\n };\n\n /**\n * ~~ React Lifecycle ~~\n *\n * New in v16.3\n *\n * @see https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops\n */\n static getDerivedStateFromProps(nextProps, prevState) {\n const nextState = prevState;\n\n if (prevState.width !== nextProps.width) {\n nextState.width = nextProps.width;\n }\n\n if (prevState.height !== nextProps.height) {\n nextState.height = nextProps.height;\n }\n\n return nextState;\n }\n\n /**\n * The constructor is where you setup the component's internal state. Component state is where you\n * internally store data this component needs in order to fulfil it's purpose. This is also where\n * the map instance is created.\n */\n constructor(props) {\n super(props);\n\n /**\n * Initial state supplied by props.\n */\n this.state = {\n width: props.width,\n height: props.height,\n };\n\n /**\n * Initializes a new View and Map instance on 'this' that is used later in the lifecycle\n * when/if this component properties are updated. This is NOT typically what you'll see in\n * React components - we're wrapping the OpenLayers 4 library.\n */\n this.view = new View({\n projection: 'EPSG:3857',\n center: props.center,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n minResolution: props.minResolution,\n maxResolution: props.maxResolution,\n zoom: props.zoom,\n });\n\n /**\n * Scale-line to show rough y-axis distances.\n */\n this.scaleLine = new ScaleLine({\n units: props.units,\n });\n\n this.map = new OLMap({\n view: this.view,\n layers: [],\n loadTilesWhileInteracting: true,\n });\n\n /**\n * blur focus on map click so the keyboard hides\n */\n this.map.on('click', function() {\n if (document.activeElement) {\n document.activeElement.blur();\n }\n });\n\n /**\n * Remove the default interactions if non-interactive map.\n */\n if (!this.props.interactive) {\n this.map.getInteractions().forEach(i => i.setActive(false));\n }\n\n this.updateSize = this.updateSize.bind(this);\n }\n\n /**\n * ~~ React Lifecycle ~~\n *\n * After the components mounts in React land apply the map instance to a dom target - in this\n * case a dom element id.\n */\n componentDidMount() {\n this.map.setTarget(this.props.id);\n\n /**\n * Add scale-line to map.\n */\n if (this.props.scaleLine) {\n this.scaleLine.setMap(this.map);\n }\n\n if (this.canFitMap()) {\n this.fitMap(true);\n } else {\n this.centerMap();\n }\n }\n\n /**\n * ~~ React Lifecycle ~~\n *\n * Handle when Map component properties have been updated by parent components. Note that we only\n * care about the properties that make sense to have changed during the lifecycle of the \n * such as width, height, or zoom. Prior to React v16.3 this logic would have been seen in the\n * componentWillReceiveProps() lifecycle function. Also note, this logic depends on the state\n * being updated with the new values (ie. zoom, width, height) by the getDerivedStateFromProps()\n * function, which again is new in v16.3. Google it to know more.\n *\n * minResolution - Prevents blank tiles when zooming to clusters that very\n * close together.\n */\n componentDidUpdate(prevProps, prevState, snapshot) {\n /**\n * Set the view properties.\n */\n if (prevProps.minResolution !== this.props.minResolution) {\n this.view.setMinResolution(this.props.minResolution);\n }\n\n if (prevProps.maxResolution !== this.props.maxResolution) {\n this.view.setMaxResolution(this.props.maxResolution);\n }\n\n if (prevProps.maxZoom !== this.props.maxZoom) {\n this.view.setMaxZoom(this.props.maxZoom);\n }\n\n if (prevProps.minZoom !== this.props.minZoom) {\n this.view.setMinZoom(this.props.minZoom);\n }\n\n /**\n * Update the map size by detecting width/height prop changes.\n */\n if (prevProps.width !== this.props.width || prevProps.height !== this.props.height) {\n this.map.updateSize();\n }\n\n const paddingUpdated = !this.isPaddingEqual(prevProps.padding, this.props.padding);\n\n /**\n * Extent.\n */\n if (prevProps.extent !== this.props.extent || paddingUpdated) {\n this.fitMap(true);\n }\n /**\n * Zoom\n */\n // if (prevProps.zoom !== this.props.zoom) {\n // this.view.animate({\n // duration: DEFAULT_DURATION,\n // center: this.props.center,\n // zoom: this.props.zoom,\n // });\n // }\n\n /**\n * Center the view on a coordinate.\n */\n if (prevProps.center !== this.props.center) {\n this.centerMap();\n }\n }\n\n isPaddingEqual(left, right) {\n return (\n left[0] === right[0] && left[1] === right[1] && left[2] === right[2] && left[3] === right[3]\n );\n }\n\n /**\n * ~~ React Lifecycle ~~\n *\n * The intent here is to clean up after ourselves and avoid memory leaks. I'm not certain that\n * would be the case if we haven't implemented the logic below, just wanted to point it out by\n * providing it anyways.\n */\n componentWillUnmount() {\n this.map.setTarget(undefined);\n this.map = undefined;\n this.view = undefined;\n }\n\n calculateCenter = (coordinate, size, position) => {\n // calculate rotated position\n const rotation = this.view.getRotation();\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n const resolution = this.view.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n const centerX = rotX * cosAngle - rotY * sinAngle;\n const centerY = rotY * cosAngle + rotX * sinAngle;\n return [centerX, centerY];\n };\n\n centerMap() {\n if (this.props.centerPosition) {\n const newCenter = this.calculateCenter(\n this.props.center,\n this.map.getSize(),\n this.props.centerPosition\n );\n\n this.view.animate({\n duration: DEFAULT_DURATION,\n center: newCenter,\n });\n } else {\n this.view.animate({\n duration: DEFAULT_DURATION,\n center: this.props.center,\n });\n }\n }\n\n canFitMap() {\n return this.props.extent !== undefined;\n }\n\n fitMap(constrain = false) {\n const fitOptions = {\n constrainResolution: constrain,\n duration: DEFAULT_DURATION,\n padding: this.props.padding,\n maxZoom: this.props.maxZoom,\n };\n\n this.view.fit(this.props.extent, fitOptions);\n }\n\n updateSize() {\n this.map.updateSize();\n }\n\n /**\n * ~~ React Lifecycle ~~\n *\n * Renders the map using the internal state and provided properties.\n */\n render() {\n const style = {\n width: this.state.width,\n height: this.state.height,\n };\n\n const { id, children } = this.props;\n\n /**\n * Below is not something you will typically use in your components.\n *\n * Anyways, map over the child components, clone them and append an additional 'map' property\n * which is the map instance we created in the constructor. Child components like LayerBingMaps\n * will add themselves to the provided map instance.\n */\n return (\n
\n {Children.map(children, childElement => {\n if (React.isValidElement(childElement)) {\n return React.cloneElement(childElement, {\n map: this.map,\n });\n } else {\n return childElement;\n }\n })}\n
\n );\n }\n}\n\nexport default Map;\n","import TileLayer from \"ol/layer/Tile\";\nimport Map from \"ol/Map\";\nimport TileArcGISRestSource from \"ol/source/TileArcGISRest\";\nimport PropTypes from \"prop-types\";\nimport { Component } from \"react\";\n\n/**\n * Base layer component for viewing ArcGIS tiles.\n */\nexport default class ArcGISTileLayer extends Component {\n static propTypes = {\n /**\n * A unique key to identify this layer.\n */\n id: PropTypes.any.isRequired,\n\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n\n /**\n * Metadata object.\n */\n metadata: PropTypes.object,\n\n /**\n * The opacity of the tiles.\n */\n opacity: PropTypes.number,\n\n /**\n * ArcGIS Rest parameters\n */\n params: PropTypes.object,\n\n /**\n * ArcGIS Rest service URL for a Map Service or Image Service. The url should include\n * /MapServer or /ImageServer.\n */\n url: PropTypes.string.isRequired,\n\n /**\n * Whether or not the layer is visible.\n */\n visible: PropTypes.bool,\n\n /**\n * The z-index for layer rendering. At rendering time, the layers will be ordered, first by\n * Z-index and then by position. The default Z-index is 0.\n */\n zIndex: PropTypes.number,\n\n /**\n * min zoom for layer\n */\n minZoom: PropTypes.number,\n\n /**\n * Max zoom for layer\n */\n maxZoom: PropTypes.number,\n\n /**\n * Called after all tiles loaded.\n */\n onTilesLoadComplete: PropTypes.func,\n\n /**\n * Extent of the map\n */\n extent: PropTypes.array\n };\n\n static defaultProps = {\n id: Math.random() * 1000000 + \"\",\n map: undefined,\n opacity: 1,\n params: {},\n visible: true,\n zIndex: 999,\n minZoom: 1,\n maxZoom: undefined\n };\n\n constructor(props) {\n super(props);\n\n const source = this.newSource(props);\n\n this.tileLayer = new TileLayer({\n preload: Infinity,\n id: props.id,\n visible: props.visible,\n extent: props.extent,\n opacity: props.opacity,\n zIndex: props.zIndex,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n source: source\n });\n\n this.tileLoadCounter = 0;\n\n /**\n * Metadata is set for layer use.\n */\n if (props.metadata) {\n this.tileLayer.set(\"metadata\", props.metadata);\n }\n\n if (props.onTilesLoadComplete) {\n source.on(\"tileloadstart\", this.handleOnTileLoadStart);\n source.on(\"tileloadend\", this.handleOnTileLoadEnd);\n }\n }\n\n handleOnTileLoadStart = () => {\n this.tileLoadCounter = this.tileLoadCounter + 1;\n };\n\n handleOnTileLoadEnd = () => {\n this.tileLoadCounter = this.tileLoadCounter - 1;\n if (this.tileLoadCounter === 0) {\n this.props.onTilesLoadComplete();\n }\n };\n\n newSource(props) {\n return new TileArcGISRestSource({\n url: props.url,\n crossOrigin: \"anonymous\",\n params: props.params,\n hidpi: false\n });\n }\n\n componentDidMount() {\n this.props.map.getLayers().push(this.tileLayer);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.visible !== this.props.visible) {\n this.tileLayer.setVisible(this.props.visible);\n }\n\n if (prevProps.url !== this.props.url) {\n this.tileLayer.setSource(this.newSource(this.props));\n }\n }\n\n componentWillUnmount() {\n this.props.map.removeLayer(this.tileLayer);\n this.tileLayer = undefined;\n }\n\n render() {\n return null;\n }\n}\n","import { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Map from 'ol/Map';\r\nimport TileLayer from 'ol/layer/Tile';\r\nimport TileWMS from 'ol/source/TileWMS';\r\n\r\n/**\r\n * Base layer component for viewing WMS tiles.\r\n */\r\nexport default class WMSTileLayer extends Component {\r\n static propTypes = {\r\n /**\r\n * A unique key to identify this layer.\r\n */\r\n id: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The instance of map this layer is attached to. The map instance\r\n * will be provided to the component automatically when used as a\r\n * child component of the .\r\n */\r\n map: PropTypes.instanceOf(Map),\r\n\r\n /**\r\n * Metadata object.\r\n */\r\n metadata: PropTypes.object,\r\n\r\n /**\r\n * The opacity of the tiles.\r\n */\r\n opacity: PropTypes.number,\r\n\r\n /**\r\n * ArcGIS Rest parameters\r\n */\r\n params: PropTypes.object,\r\n\r\n /**\r\n * ArcGIS Rest service URL for a Map Service or Image Service. The url should include\r\n * /MapServer or /ImageServer.\r\n */\r\n url: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Whether or not the layer is visible.\r\n */\r\n visible: PropTypes.bool,\r\n\r\n /**\r\n * The z-index for layer rendering. At rendering time, the layers will be ordered, first by\r\n * Z-index and then by position. The default Z-index is 0.\r\n */\r\n zIndex: PropTypes.number,\r\n\r\n /**\r\n * WMS server type\r\n */\r\n serverType: PropTypes.string,\r\n\r\n /**\r\n * WMS layer name\r\n */\r\n layerName: PropTypes.string,\r\n\r\n /**\r\n * layer opacity\r\n */\r\n };\r\n\r\n static defaultProps = {\r\n id: Math.random() * 1000000 + '',\r\n map: undefined,\r\n opacity: 1,\r\n params: { exceptions: 'application/vnd.ogc.se_inimage' },\r\n visible: true,\r\n zIndex: 999,\r\n serverType: 'geoserver',\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n // https://openlayers.org/en/latest/examples/wms-tiled.html\r\n this.tileLayer = new TileLayer({\r\n id: props.id,\r\n opacity: props.opacity,\r\n visible: props.visible,\r\n zIndex: props.zIndex,\r\n source: new TileWMS({\r\n url: props.url,\r\n crossOrigin: 'anonymous',\r\n params: { exceptions: 'application/vnd.ogc.se_inimage', LAYERS: this.props.layerName },\r\n styles: [],\r\n serverType: props.serverType,\r\n transition: 0,\r\n }),\r\n });\r\n\r\n /**\r\n * Metadata is set for layer use.\r\n */\r\n if (props.metadata) {\r\n this.tileLayer.set('metadata', props.metadata);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.map.getLayers().push(this.tileLayer);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n if (prevProps.visible !== this.props.visible) {\r\n this.tileLayer.setVisible(this.props.visible);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.map.removeLayer(this.tileLayer);\r\n this.tileLayer = undefined;\r\n }\r\n\r\n render() {\r\n return null;\r\n }\r\n}\r\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport Map from \"ol/Map\";\nimport PropTypes from \"prop-types\";\nimport VectorSource from \"ol/source/Vector\";\nimport Select from \"ol/interaction/Select\";\nimport { click } from \"ol/events/condition\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport GeoJSON from \"ol/format/GeoJSON\";\nimport { toLonLatExtent } from \"../../../../../lib/map/core/transfomer\";\nimport { BasicOverlay, FeaturesLayer } from \"../../../../../lib/map\";\n// import Label from '../../../../../components/lv/Label';\n\n/**\n * Layer component for displaying an array of Openlayers features.\n */\nclass ArcGISPolygonFeatureLayer extends Component {\n /**\n * Property types.\n */\n static propTypes = {\n /**\n * Features to display in this layer.\n */\n features: PropTypes.array,\n /**\n * A unique key to indentify this layer.\n */\n id: PropTypes.number,\n /**\n * layer name\n */\n name: PropTypes.string,\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n /**\n * Called when the feature is just about to be added to the vector source.\n */\n onAddFeature: PropTypes.func,\n /**\n * Called when layer has been added to the map.\n */\n onAddLayer: PropTypes.func,\n /**\n * The style function applied to each feature.\n */\n onFeatureStyle: PropTypes.func,\n /**\n * Called when layer has been removed from the map.\n */\n onRemoveLayer: PropTypes.func,\n /**\n * Called after vector source populated with features.\n */\n onAfterPopulateFeatures: PropTypes.func,\n /**\n * Whether or not this layer is visible.\n */\n visible: PropTypes.bool,\n /**\n * The z-index to order this layer in the map layers stack.\n */\n zIndex: PropTypes.number,\n\n /**\n * current extent of the map\n */\n extent: PropTypes.array,\n\n /**\n * layer url from db\n */\n url: PropTypes.string,\n /**\n * Whether or not the layer is interactive.\n */\n interactive: PropTypes.bool,\n /**\n * metadata out fields\n */\n metadataOutFields: PropTypes.string\n };\n\n /**\n * Default properties for those props that are not required.\n */\n static defaultProps = {\n features: undefined,\n id: Math.random() * 1000000 + \"\",\n map: undefined,\n onAddFeature: undefined,\n onAddLayer: undefined,\n onFeatureStyle: undefined,\n interactive: true,\n onRemoveLayer: undefined,\n visible: true,\n zIndex: 999\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n position: undefined,\n features: undefined\n };\n /**\n * Provides source of features for vector layers.\n */\n this.vectorSource = new VectorSource();\n\n /**\n * The layer hosting the source vector.\n */\n this.vectorLayer = new VectorLayer({\n id: props.id,\n visible: props.visible,\n source: this.vectorSource,\n style: props.onFeatureStyle,\n zIndex: props.zIndex\n });\n\n this.geoJsonFormat = new GeoJSON();\n\n this.handleOnSelect = this.handleOnSelect.bind(this);\n this.handleOnAddFeature = this.handleOnAddFeature.bind(this);\n this.handleOnCloseOverlay = this.handleOnCloseOverlay.bind(this);\n this.addFeaturesToState = this.addFeaturesToState.bind(this);\n this.selectFilter = this.selectFilter.bind(this);\n\n this.interactionSelect = new Select({\n condition: click,\n filter: this.selectFilter\n });\n }\n\n selectFilter(feature, layer) {\n if (this.state.features && this.state.features.length > 0) {\n return this.state.features.includes(feature);\n }\n\n return false;\n }\n\n handleOnAddFeature(feature) {\n // feature.setStyle(SiteFeaturesLayer.featureStyle(feature, false));\n }\n\n addFeaturesToState(features) {\n this.setState({\n features: features\n });\n }\n\n handleOnCloseOverlay() {\n this.setState({\n position: undefined,\n feature: undefined\n });\n\n this.interactionSelect.getFeatures().forEach(each => {\n // each.setStyle(SiteFeaturesLayer.featureStyle(each, false));\n });\n this.interactionSelect.getFeatures().clear();\n }\n\n overlayTitle() {\n return this.props.layerName;\n }\n\n componentDidMount() {\n this.interactionSelect.on(\"select\", this.handleOnSelect);\n this.props.map.addInteraction(this.interactionSelect);\n\n this.props.map.getLayers().push(this.vectorLayer);\n\n if (this.props.onAddLayer) {\n this.props.onAddLayer(this.vectorLayer);\n }\n\n this.popuplateLayerFeatures();\n }\n\n handleOnSelect(e) {\n const that = this;\n const p = e.mapBrowserEvent.coordinate;\n\n e.deselected.forEach(function(each) {\n that.setState({\n position: undefined,\n feature: undefined\n });\n // each.setStyle(SiteFeaturesLayer.featureStyle(each, false));\n });\n\n e.selected.forEach(function(each) {\n that.setState({\n position: p,\n feature: each\n });\n // each.setStyle(SiteFeaturesLayer.featureStyle(each, true));\n });\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.visible !== prevProps.visible) {\n this.vectorLayer.setVisible(this.props.visible);\n if (this.props.visible) {\n this.popuplateLayerFeatures();\n }\n }\n }\n\n componentWillUnmount() {\n this.props.map.removeLayer(this.vectorLayer);\n\n if (this.props.removeLayer) {\n this.props.onRemoveLayer(this.vectorLayer);\n }\n\n this.vectorSource = null;\n this.vectorLayer = null;\n }\n\n /**\n * Adds the features to the vector layer.\n */\n popuplateLayerFeatures() {\n var self = this;\n let stdExtent = toLonLatExtent(this.props.extent);\n this.fetchFeatureVectors(this.props.url, this.props.extent)\n .then(response => {\n self.vectorSource.clear();\n\n var features = self.geoJsonFormat.readFeatures(response, {\n featureProjection: \"EPSG:3857\",\n dataProjection: \"EPSG:4326\"\n });\n\n features.forEach(function(feature) {\n let outFieldArray = self.props.metadataOutFields.split(\",\");\n let info = {\n layerType: \"arcgisvector\",\n layerName: self.props.layerName,\n id: feature.id,\n kvp: []\n };\n if (outFieldArray.length > 0) {\n outFieldArray.forEach(function(item) {\n let itemTrimmed = item.trim();\n info.kvp.push({\n key: itemTrimmed,\n value: feature.get(itemTrimmed)\n });\n });\n }\n feature.set(\"metadata\", info);\n });\n this.addFeaturesToState(features);\n })\n .catch(error => console.log(error));\n }\n\n fetchFeatureVectors(url, extent) {\n let urlFormatted = url + `query?where=1%3D1&outFields=*&returnGeometry=true&f=geojson`;\n\n return fetch(urlFormatted)\n .then(response => response.json())\n .catch(() => console.log(\"error at fetchFeatureVectors\"));\n }\n\n render() {\n return (\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n extent: state.map.extent,\n zoom: state.map.zoom\n };\n}\n\nexport default connect(mapStateToProps)(ArcGISPolygonFeatureLayer);\n","import { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport Map from \"ol/Map\";\nimport PropTypes from \"prop-types\";\nimport VectorSource from \"ol/source/Vector\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport EsriJSON from \"ol/format/EsriJSON\";\n\n/**\n * Layer component for displaying an array of Openlayers features.\n */\nclass ArcGISFeatureLayer extends Component {\n /**\n * Property types.\n */\n static propTypes = {\n /**\n * Features to display in this layer.\n */\n features: PropTypes.array,\n /**\n * A unique key to indentify this layer.\n */\n id: PropTypes.any.isRequired,\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n /**\n * Called when the feature is just about to be added to the vector source.\n */\n onAddFeature: PropTypes.func,\n /**\n * Called when layer has been added to the map.\n */\n urlShowVal: PropTypes.string,\n /**\n * Url show values for the layer\n */\n onAddLayer: PropTypes.func,\n /**\n * The style function applied to each feature.\n */\n onFeatureStyle: PropTypes.func,\n /**\n * Called when layer has been removed from the map.\n */\n onRemoveLayer: PropTypes.func,\n /**\n * Called after vector source populated with features.\n */\n onAfterPopulateFeatures: PropTypes.func,\n /**\n * Whether or not this layer is visible.\n */\n visible: PropTypes.bool,\n /**\n * The z-index to order this layer in the map layers stack.\n */\n zIndex: PropTypes.number,\n\n /**\n * current extent of the map\n */\n extent: PropTypes.array,\n\n /**\n * layer url from db\n */\n url: PropTypes.string\n };\n\n /**\n * Default properties for those props that are not required.\n */\n static defaultProps = {\n features: undefined,\n id: Math.random() * 1000000 + \"\",\n map: undefined,\n onAddFeature: undefined,\n onAddLayer: undefined,\n onFeatureStyle: undefined,\n onRemoveLayer: undefined,\n visible: true,\n zIndex: 999\n };\n\n constructor(props) {\n super(props);\n\n /**\n * Provides source of features for vector layers.\n */\n this.vectorSource = new VectorSource();\n\n /**\n * The layer hosting the source vector.\n */\n this.vectorLayer = new VectorLayer({\n id: props.id,\n visible: props.visible,\n source: this.vectorSource,\n style: props.onFeatureStyle,\n zIndex: props.zIndex\n });\n\n this.esriJsonFormat = new EsriJSON();\n }\n\n componentDidMount() {\n this.props.map.getLayers().push(this.vectorLayer);\n\n if (this.props.onAddLayer) {\n this.props.onAddLayer(this.vectorLayer);\n }\n\n this.popuplateLayerFeatures();\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.visible !== prevProps.visible) {\n this.vectorLayer.setVisible(this.props.visible);\n }\n\n if (this.props.visible) {\n this.popuplateLayerFeatures();\n }\n }\n\n componentWillUnmount() {\n this.props.map.removeLayer(this.vectorLayer);\n\n if (this.props.removeLayer) {\n this.props.onRemoveLayer(this.vectorLayer);\n }\n\n this.vectorSource = null;\n this.vectorLayer = null;\n }\n\n /**\n * Adds the features to the vector layer.\n */\n popuplateLayerFeatures() {\n var self = this;\n this.fetchFeatureVectors(\n self.props.url,\n self.props.map.getView().calculateExtent(),\n self.props.urlShowVal\n )\n .then(response => {\n self.vectorSource.clear();\n\n var features = self.esriJsonFormat.readFeatures(response, {\n featureProjection: \"102100\"\n });\n\n self.vectorSource.addFeatures(features);\n })\n .catch(error => console.log(error));\n }\n\n fetchFeatureVectors(url, extent, urlShowVal) {\n let urlFormatted =\n url +\n `/${urlShowVal}/query?f=json&returnGeometry=true&spatialRel=esriSpatialRelIntersects&` +\n `geometry={\"xmin\":${extent[0]},\"ymin\":${extent[1]},\"xmax\":${extent[2]},\"ymax\":${\n extent[3]\n },\"spatialReference\":{\"wkid\":102100}}&` +\n `geometryType=esriGeometryEnvelope&inSR=102100&outFields=*&outSR=102100&maxRecordCount=500`;\n\n return fetch(urlFormatted)\n .then(response => response.json())\n .catch(() => console.log(\"error at fetchFeatureVectors\"));\n }\n\n render() {\n return this.props.children || null;\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n extent: state.map.extent,\n zoom: state.map.zoom\n };\n}\n\nexport default connect(mapStateToProps)(ArcGISFeatureLayer);\n","import { boundingExtent, containsCoordinate } from 'ol/extent';\nimport Config from '../../app/config';\nimport { isDesktopScreen, isSmallScreen } from '../../app/util/browser';\nimport { toWebMercatorCenter } from '../../lib/map/core/transfomer';\n\nexport const isDefaultExtentMyLocation = () => {\n return (\n (Config.isZoomToLocationDesktop() && isDesktopScreen()) ||\n (Config.isZoomToLocationMobile() && isSmallScreen())\n );\n};\n\nexport const getMyCurrentLocation = (successCallback, errorCallback) => {\n const positionOptions = {\n enableHighAccuracy: false,\n timeout: 10000,\n maximumAge: 3600000,\n };\n\n if (navigator && navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n position => {\n successCallback([position.coords.longitude, position.coords.latitude]);\n },\n positionError => {\n errorCallback && errorCallback(positionError);\n },\n positionOptions\n );\n } else {\n successCallback(undefined);\n }\n};\n\nexport const getMyCurrentLocationExtent = (extent, coords) => {\n const current = toWebMercatorCenter(coords);\n const isWithinExtent = containsCoordinate(extent, current);\n if (isWithinExtent) {\n return boundingExtent([current, current]);\n }\n return extent;\n};\n\nexport const isValidHexColor = color => {\n const regExColor = RegExp(\"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$\");\n return regExColor.test(color);\n};\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport Map from \"ol/Map\";\nimport PropTypes from \"prop-types\";\nimport VectorSource from \"ol/source/Vector\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport WKT from \"ol/format/WKT\";\nimport Style from \"ol/style/Style\";\nimport Text from \"ol/style/Text\";\nimport Fill from \"ol/style/Fill\";\nimport Stroke from \"ol/style/Stroke\";\nimport Circle from \"ol/style/Circle\";\nimport * as olColor from \"ol/color\";\nimport { click } from \"ol/events/condition\";\nimport Select from \"ol/interaction/Select\";\nimport { isValidHexColor } from \"../../../../../store/system/helper\";\n\n/**\n * Needs to be function in order to delay access - when the page intially loads window.nSITE.Api is\n * undefined.\n */\nconst api = () => window.nSITE.Api;\n\n/**\n * Layer component for displaying an array of Openlayers features.\n */\nclass SqlServerLayer extends Component {\n /**\n * Property types.\n */\n static propTypes = {\n /**\n * A unique key to indentify this layer.\n */\n id: PropTypes.any.isRequired,\n /**\n * Layer Name\n */\n layerName: PropTypes.string.isRequired,\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n /**\n * Called when the feature is just about to be added to the vector source.\n */\n onAddFeature: PropTypes.func,\n /**\n * Called when layer has been added to the map.\n */\n onAddLayer: PropTypes.func,\n /**\n * The style function applied to each feature.\n */\n onFeatureStyle: PropTypes.func,\n /**\n * Called when layer has been removed from the map.\n */\n onRemoveLayer: PropTypes.func,\n /**\n * Whether or not this layer is visible.\n */\n visible: PropTypes.bool,\n /**\n * The z-index to order this layer in the map layers stack.\n */\n zIndex: PropTypes.number,\n /**\n * current extent of the map\n */\n extent: PropTypes.array,\n\n /**\n * The layer opacity for the polygons\n */\n opacity: PropTypes.number,\n\n /**\n * Whether or not the layer is interactive.\n */\n interactive: PropTypes.bool\n };\n\n /**\n * Default properties for those props that are not required.\n */\n static defaultProps = {\n features: undefined,\n id: Math.random() * 1000000 + \"\",\n map: undefined,\n onAddFeature: undefined,\n onAddLayer: undefined,\n onFeatureStyle: undefined,\n onRemoveLayer: undefined,\n visible: true,\n zIndex: 999,\n opacity: 0.6,\n interactive: true\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n position: undefined,\n sqlFeatures: undefined,\n name: undefined,\n };\n\n /**\n * Provides source of features for vector layers.\n */\n this.vectorSource = new VectorSource();\n\n /**\n * The layer hosting the source vector.\n */\n this.vectorLayer = new VectorLayer({\n id: props.id,\n visible: props.visible,\n source: this.vectorSource,\n style: props.onFeatureStyle,\n zIndex: props.zIndex,\n opacity: props.opacity,\n name: props.layerName,\n activeFeatures: this.state.sqlFeatures\n });\n\n this.wktFormat = new WKT();\n this.formatCriteria = this.formatCriteria.bind(this);\n this.isFetching = false;\n\n this.interactionSelect = new Select({\n condition: click,\n filter: function(feature) {\n return feature.get(\"metadata\") && !feature.get(\"metadata\").isCluster;\n }\n });\n }\n\n componentDidMount() {\n this.props.map.getLayers().push(this.vectorLayer);\n\n if (this.props.onAddLayer) {\n this.props.onAddLayer(this.vectorLayer);\n }\n\n this.popuplateLayerFeatures();\n if (this.props.interactive) {\n this.props.map.addInteraction(this.interactionSelect);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.popuplateLayerFeatures();\n }\n\n componentWillUnmount() {\n this.props.map.removeLayer(this.vectorLayer);\n\n if (this.props.removeLayer) {\n this.props.onRemoveLayer(this.vectorLayer);\n }\n\n this.vectorSource = null;\n this.vectorLayer = null;\n }\n\n formatCriteria() {\n if (!this.props.criteria.boundingBox) {\n return null;\n }\n return {\n screenWidth: this.props.criteria.screenWidth,\n screenHeight: this.props.criteria.screenHeight,\n featureLayers: this.props.id,\n zoom: this.props.map.getView().getZoom(),\n leftBound: this.props.criteria.boundingBox[0],\n bottomBound: this.props.criteria.boundingBox[1],\n rightBound: this.props.criteria.boundingBox[2],\n topBound: this.props.criteria.boundingBox[3]\n };\n }\n\n /**\n * Adds the features to the vector layer.\n */\n\n popuplateLayerFeatures() {\n let AbortController = window.AbortController;\n\n if (this.isFetching && this.getSpatialObjectsAbortController) {\n this.getSpatialObjectsAbortController.abort();\n }\n this.isFetching = true;\n this.getSpatialObjectsAbortController = new AbortController();\n\n var self = this;\n let mapInfo = this.formatCriteria();\n api()\n .layer.getServerSpatialObjects(mapInfo, {\n signal: this.getSpatialObjectsAbortController.signal\n })\n .then(function(response) {\n self.vectorSource.clear();\n\n var features = [];\n response.forEach(item => {\n var feature = self.wktFormat.readFeature(item.geographyWKT, {\n dataProjection: \"EPSG:4326\",\n featureProjection: \"EPSG:3857\"\n });\n\n let itemColor;\n\n if (item.color) {\n itemColor = item.color.indexOf(\"#\") > -1 ? item.color : \"#\" + item.color;\n if (!isValidHexColor(itemColor)) {\n return;\n }\n } else {\n itemColor = \"#FFFFFF\";\n }\n let color = olColor.asArray(itemColor);\n color = color.slice();\n color[3] = item.opacity; // change the alpha of the color\n\n let polygonStyle = new Style({\n fill: new Fill({\n color: color\n })\n });\n\n let labelText = item.isCluster ? item.clusterCount.toString() : \"\";\n let radius = item.radius ? item.radius : 7;\n let pointStyle = new Style({\n fill: new Fill({\n color: color\n }),\n stroke: new Stroke({\n color: \"black\",\n width: 2\n }),\n image: new Circle({\n radius: radius,\n fill: new Fill({\n color: color\n }),\n stroke: new Stroke({\n color: \"black\",\n width: 2\n })\n }),\n text: new Text({\n font: \"12px Calibri,sans-serif\",\n overflow: true,\n fill: new Fill({\n color: \"#000\"\n }),\n stroke: new Stroke({\n color: \"#fff\",\n width: 3\n }),\n text: labelText\n })\n });\n if (feature.getGeometry().getType() === \"Point\") {\n feature.setStyle(pointStyle);\n } else {\n feature.setStyle(polygonStyle);\n }\n item.layerType = \"sqlSpatial\";\n item.layerName = self.vectorLayer.get(\"name\");\n item.id = Math.floor(Math.random() * 10000);\n feature.set(\"metadata\", item);\n\n features.push(feature);\n });\n\n self.vectorSource.addFeatures(features);\n self.isFetching = false;\n })\n .catch(error => console.log(error));\n }\n\n render() {\n return this.props.children || null;\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n extent: state.map.extent,\n zoom: state.map.zoom\n };\n}\n\nexport default connect(mapStateToProps)(SqlServerLayer);\n","import TileLayer from \"ol/layer/Tile\";\nimport Map from \"ol/Map\";\nimport BingMaps from \"ol/source/BingMaps\";\nimport PropTypes from \"prop-types\";\nimport { Component } from \"react\";\n\n/**\n * Base map types.\n */\nconst BING_MAPS_BASE_TYPES = [\"street\", \"satellite\", \"hybrid\", \"road\"];\n\n/**\n * Imagery set for each base map type.\n */\nconst BING_MAPS_IMAGERY_SETS = [\n \"Aerial\",\n \"AerialWithLabels\",\n \"AerialWithLabelsOnDemand\",\n \"CanvasDark\",\n \"CanvasLight\",\n \"CanvasGray\",\n \"Road\",\n \"RoadOnDemand\"\n];\n\nconst imagerySetByBaseType = baseType => {\n switch (baseType) {\n case BING_MAPS_BASE_TYPES[0]:\n case BING_MAPS_BASE_TYPES[3]:\n return BING_MAPS_IMAGERY_SETS[6];\n case BING_MAPS_BASE_TYPES[1]:\n return BING_MAPS_IMAGERY_SETS[0];\n case BING_MAPS_BASE_TYPES[2]:\n return BING_MAPS_IMAGERY_SETS[1];\n default:\n return BING_MAPS_IMAGERY_SETS[0];\n }\n};\n\nexport default class BingMapsTileLayer extends Component {\n static propTypes = {\n /**\n * Bing Maps API key.\n */\n apiKey: PropTypes.string.isRequired,\n /**\n * A unique key to indentify this layer.\n */\n id: PropTypes.any.isRequired,\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n /**\n * Base layer type - street, satellite, hybrid.\n */\n type: PropTypes.oneOf(BING_MAPS_BASE_TYPES),\n /**\n * Whether or not the layer is visible.\n */\n visible: PropTypes.bool,\n /**\n * The z-index for layer rendering. At rendering time, the layers will be ordered, first by\n * Z-index and then by position. The default Z-index is 0.\n */\n zIndex: PropTypes.number.isRequired,\n /**\n * Called after all tiles loaded.\n */\n onTilesLoadComplete: PropTypes.func\n };\n\n static defaultProps = {\n map: undefined,\n type: undefined,\n visible: true\n };\n\n constructor(props) {\n super(props);\n\n const source = this.newSource(props);\n\n this.tileLayer = new TileLayer({\n id: props.id,\n visible: props.visible,\n zIndex: props.zIndex,\n minZoom: 1,\n maxZoom: undefined,\n source: source\n });\n\n this.tileLoadCounter = 0;\n\n if (props.onTilesLoadComplete) {\n source.on(\"tileloadstart\", this.handleOnTileLoadStart);\n source.on(\"tileloadend\", this.handleOnTileLoadEnd);\n }\n }\n\n newSource(props) {\n return new BingMaps({\n key: props.apiKey,\n crossOrigin: \"anonymous\",\n imagerySet: imagerySetByBaseType(props.type),\n hidpi: false\n });\n }\n\n handleOnTileLoadStart = () => {\n this.tileLoadCounter = this.tileLoadCounter + 1;\n };\n\n handleOnTileLoadEnd = () => {\n this.tileLoadCounter = this.tileLoadCounter - 1;\n if (this.tileLoadCounter === 0) {\n this.props.onTilesLoadComplete();\n }\n };\n\n componentDidMount() {\n this.props.map.getLayers().push(this.tileLayer);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.visible !== this.props.visible) {\n this.tileLayer.setVisible(this.props.visible);\n }\n\n if (prevProps.type !== this.props.type) {\n this.tileLayer.setSource(this.newSource(this.props));\n }\n }\n\n componentWillUnmount() {\n this.props.map.removeLayer(this.tileLayer);\n this.tileLayer = undefined;\n }\n\n render() {\n return null;\n }\n}\n","import TileLayer from \"ol/layer/Tile\";\nimport XYZ from \"ol/source/XYZ\";\nimport Map from \"ol/Map\";\nimport PropTypes from \"prop-types\";\nimport { Component } from \"react\";\n\n/**\n * Base layer component for viewing ArcGIS tiles.\n */\nexport default class XYZLayer extends Component {\n static propTypes = {\n /**\n * A unique key to identify this layer.\n */\n id: PropTypes.any.isRequired,\n\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n\n /**\n * Metadata object.\n */\n metadata: PropTypes.object,\n\n /**\n * The opacity of the tiles.\n */\n opacity: PropTypes.number,\n\n /**\n * ArcGIS Rest parameters\n */\n params: PropTypes.object,\n\n /**\n * ArcGIS Rest service URL for a Map Service or Image Service. The url should include\n * /MapServer or /ImageServer.\n */\n url: PropTypes.string.isRequired,\n\n /**\n * Whether or not the layer is visible.\n */\n visible: PropTypes.bool,\n\n /**\n * The z-index for layer rendering. At rendering time, the layers will be ordered, first by\n * Z-index and then by position. The default Z-index is 0.\n */\n zIndex: PropTypes.number,\n\n /**\n * min zoom for layer\n */\n minZoom: PropTypes.number,\n\n /**\n * Max zoom for layer\n */\n maxZoom: PropTypes.number,\n\n /**\n * Called after all tiles loaded.\n */\n onTilesLoadComplete: PropTypes.func,\n\n /**\n * Extent of the map\n */\n extent: PropTypes.array\n };\n\n static defaultProps = {\n id: Math.random() * 1000000 + \"\",\n map: undefined,\n opacity: 1,\n params: {},\n visible: true,\n zIndex: 999,\n minZoom: 1,\n maxZoom: 20\n };\n\n constructor(props) {\n super(props);\n\n const source = this.newSource(props);\n\n this.tileLayer = new TileLayer({\n preload: Infinity,\n id: props.id,\n visible: props.visible,\n extent: props.extent,\n opacity: props.opacity,\n zIndex: props.zIndex,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n source: source\n });\n\n this.tileLoadCounter = 0;\n\n /**\n * Metadata is set for layer use.\n */\n if (props.metadata) {\n this.tileLayer.set(\"metadata\", props.metadata);\n }\n\n if (props.onTilesLoadComplete) {\n source.on(\"tileloadstart\", this.handleOnTileLoadStart);\n source.on(\"tileloadend\", this.handleOnTileLoadEnd);\n }\n }\n\n handleOnTileLoadStart = () => {\n this.tileLoadCounter = this.tileLoadCounter + 1;\n };\n\n handleOnTileLoadEnd = () => {\n this.tileLoadCounter = this.tileLoadCounter - 1;\n if (this.tileLoadCounter === 0) {\n this.props.onTilesLoadComplete();\n }\n };\n\n newSource(props) {\n return new XYZ({\n url: props.url,\n maxZoom: props.maxZoom,\n crossOrigin: \"anonymous\",\n params: props.params\n });\n }\n\n componentDidMount() {\n this.props.map.getLayers().push(this.tileLayer);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.visible !== this.props.visible) {\n this.tileLayer.setVisible(this.props.visible);\n }\n\n if (prevProps.url !== this.props.url) {\n this.tileLayer.setSource(this.newSource(this.props));\n }\n }\n\n componentWillUnmount() {\n this.props.map.removeLayer(this.tileLayer);\n this.tileLayer = undefined;\n }\n\n render() {\n return null;\n }\n}\n","import VectorLayer from 'ol/layer/Vector';\r\nimport Map from 'ol/Map';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport PropTypes from 'prop-types';\r\nimport { Component } from 'react';\r\n\r\n/**\r\n * Layer component for displaying an array of Openlayers features.\r\n */\r\nexport default class FeaturesLayer extends Component {\r\n /**\r\n * Property types.\r\n */\r\n static propTypes = {\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node,\r\n /**\r\n * Features to display in this layer.\r\n */\r\n features: PropTypes.array,\r\n /**\r\n * A unique key to indentify this layer.\r\n */\r\n id: PropTypes.string,\r\n /**\r\n * The instance of map this layer is attached to. The map instance\r\n * will be provided to the component automatically when used as a\r\n * child component of the .\r\n */\r\n map: PropTypes.instanceOf(Map),\r\n /**\r\n * Called when the feature is just about to be added to the vector source.\r\n */\r\n onAddFeature: PropTypes.func,\r\n /**\r\n * Called when layer has been added to the map.\r\n */\r\n onAddLayer: PropTypes.func,\r\n /**\r\n * The style function applied to each feature.\r\n */\r\n onFeatureStyle: PropTypes.func,\r\n /**\r\n * Called when layer has been removed from the map.\r\n */\r\n onRemoveLayer: PropTypes.func,\r\n /**\r\n * Called after vector source populated with features.\r\n */\r\n onAfterPopulateFeatures: PropTypes.func,\r\n /**\r\n * Whether or not this layer is visible.\r\n */\r\n visible: PropTypes.bool,\r\n /**\r\n * The z-index to order this layer in the map layers stack.\r\n */\r\n zIndex: PropTypes.number,\r\n };\r\n\r\n /**\r\n * Default properties for those props that are not required.\r\n */\r\n static defaultProps = {\r\n children: null,\r\n features: undefined,\r\n id: Math.random() * 1000000 + '',\r\n map: undefined,\r\n onAddFeature: undefined,\r\n onAddLayer: undefined,\r\n onFeatureStyle: undefined,\r\n onRemoveLayer: undefined,\r\n visible: true,\r\n zIndex: 999,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n /**\r\n * Provides source of features for vector layers.\r\n */\r\n this.vectorSource = new VectorSource();\r\n\r\n /**\r\n * The layer hosting the source vector.\r\n */\r\n this.vectorLayer = new VectorLayer({\r\n id: props.id,\r\n visible: props.visible,\r\n source: this.vectorSource,\r\n style: props.onFeatureStyle,\r\n zIndex: props.zIndex,\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.props.map.getLayers().push(this.vectorLayer);\r\n\r\n if (this.props.onAddLayer) {\r\n this.props.onAddLayer(this.vectorLayer);\r\n }\r\n\r\n this.popuplateLayerFeatures();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.visible !== prevProps.visible) {\r\n this.vectorLayer.setVisible(this.props.visible);\r\n }\r\n\r\n if (this.props.visible && this.props.features !== prevProps.features) {\r\n this.popuplateLayerFeatures();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.map.removeLayer(this.vectorLayer);\r\n\r\n if (this.props.onRemoveLayer) {\r\n this.props.onRemoveLayer(this.vectorLayer);\r\n }\r\n\r\n this.vectorSource = null;\r\n this.vectorLayer = null;\r\n }\r\n\r\n /**\r\n * Adds the features to the vector layer.\r\n */\r\n popuplateLayerFeatures() {\r\n this.vectorSource.clear();\r\n\r\n if (this.props.features && this.props.features.length > 0) {\r\n this.props.features.forEach(f => {\r\n if (this.props.onAddFeature) {\r\n this.props.onAddFeature(f);\r\n }\r\n this.vectorSource.addFeature(f);\r\n });\r\n\r\n if (this.props.onAfterPopulateFeatures) {\r\n this.props.onAfterPopulateFeatures({ vectorSource: this.vectorSource });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return this.props.children || null;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport OMap from 'ol/Map';\r\nimport Overlay from 'ol/Overlay';\r\nimport './overlay.css';\r\nimport { Text } from '../../../base';\r\nimport { COLOR_BASE_PRIMARY } from '../../../../app/Constants';\r\n\r\n/**\r\n * Basic map overlay component for displaying info above a map\r\n * in a popup window form. The popup will pan with the map.\r\n */\r\nexport default class BasicOverlay extends Component {\r\n static propTypes = {\r\n map: PropTypes.instanceOf(OMap),\r\n children: PropTypes.node,\r\n position: PropTypes.array,\r\n title: PropTypes.string,\r\n onClose: PropTypes.func,\r\n render: PropTypes.func.isRequired,\r\n key: PropTypes.number,\r\n };\r\n\r\n static defaultProps = {\r\n map: undefined,\r\n position: undefined,\r\n title: '',\r\n onClose: undefined,\r\n render: undefined,\r\n key: Math.random(),\r\n };\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const nextState = prevState;\r\n\r\n if (prevState.position !== nextProps.position) {\r\n nextState.position = nextProps.position;\r\n }\r\n\r\n return nextState;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n position: props.position,\r\n };\r\n\r\n this.containerRef = React.createRef();\r\n\r\n this.overlay = new Overlay({\r\n position: props.position,\r\n autoPan: true,\r\n autoPanAnimation: {\r\n duration: 250,\r\n },\r\n offset: [0, -10],\r\n });\r\n\r\n this.handleOnClose = this.handleOnClose.bind(this);\r\n }\r\n\r\n handleOnClose() {\r\n this.overlay.setPosition(undefined);\r\n\r\n if (this.props.onClose) {\r\n this.props.onClose();\r\n }\r\n\r\n return false;\r\n }\r\n\r\n componentDidMount() {\r\n this.overlay.setElement(this.containerRef.current);\r\n this.overlay.setMap(this.props.map);\r\n this.props.map.getOverlays().push(this.overlay);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n if (prevProps.position !== this.props.position) {\r\n this.overlay.setPosition(this.state.position);\r\n }\r\n }\r\n\r\n renderBody() {\r\n if (this.state.position) {\r\n return this.props.render();\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n \r\n {this.props.title}\r\n \r\n \r\n
\r\n ✖\r\n
\r\n
\r\n
{this.renderBody()}
\r\n
\r\n );\r\n }\r\n}\r\n","import CircleGeom from 'ol/geom/Circle';\nimport LineString from 'ol/geom/LineString';\nimport Polygon from 'ol/geom/Polygon';\nimport Draw from 'ol/interaction/Draw';\nimport VectorLayer from 'ol/layer/Vector';\nimport Map from 'ol/Map';\nimport { unByKey } from 'ol/Observable';\nimport Overlay from 'ol/Overlay';\nimport VectorSource from 'ol/source/Vector';\nimport { getArea, getLength } from 'ol/sphere';\nimport Circle from 'ol/style/Circle';\nimport Fill from 'ol/style/Fill';\nimport Stroke from 'ol/style/Stroke';\nimport Style from 'ol/style/Style';\nimport PropTypes from 'prop-types';\nimport { Component } from 'react';\n\nimport './measure.css';\n\n/**\n * Drawing types this measurement tool supports.\n */\nexport const TOOL_TYPE_LINE = 'LineString';\nexport const TOOL_TYPE_CIRCLE = 'Circle';\nexport const TOOL_TYPE_POLYGON = 'Polygon';\n\n/**\n * Overlay type name - create new overlays with a 'type' so that we can easily delete them later\n * when the measurements are cleared.\n */\nconst OVERLAY_TYPE_NAME = 'wnd-measure-tool-overlay';\n\nexport default class MeasureTool extends Component {\n /**\n * List of properties this component accepts. The usage of PropTypes is for type checking of the\n * properties.\n *\n */\n static propTypes = {\n /**\n * Map instance, set automatically when this component is a child of \n */\n map: PropTypes.instanceOf(Map),\n /**\n * Unit of measure.\n */\n unit: PropTypes.shape({\n label: PropTypes.string.isRequired,\n convert: PropTypes.func.isRequired,\n }),\n /**\n * Called when drawing tool is activated.\n */\n onDrawActivated: PropTypes.func,\n /**\n * Called when drawing tool is de-activated.\n */\n onDrawDeactivated: PropTypes.func,\n /**\n * The index where to insert the vector layer of drawings.\n */\n zIndex: PropTypes.number.isRequired,\n /**\n * The active measure tool (line, circle, or polygon)\n */\n drawingType: PropTypes.oneOf([TOOL_TYPE_LINE, TOOL_TYPE_CIRCLE, TOOL_TYPE_POLYGON]),\n };\n\n static defaultProps = {\n map: undefined,\n unit: undefined,\n onDrawActivated: undefined,\n onDrawDeactivated: undefined,\n drawingType: undefined,\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const nextState = prevState;\n\n if (prevState.drawingType !== nextProps.drawingType) {\n nextState.drawingType = nextProps.drawingType;\n nextState.isActive = nextProps.drawingType !== undefined;\n }\n\n return nextState;\n }\n\n /**\n * Returns the coordinates based on the type of geometry passed in.\n */\n static geometryCoordinates(geometry) {\n if (geometry instanceof Polygon) {\n return geometry.getInteriorPoint().getCoordinates();\n } else if (geometry instanceof LineString) {\n return geometry.getLastCoordinate();\n } else if (geometry instanceof CircleGeom) {\n return geometry.getCenter();\n }\n }\n\n constructor(props) {\n super(props);\n\n /**\n * Internal state of this component.\n */\n this.state = {\n isActive: props.drawingType !== undefined,\n drawingType: props.drawingType,\n };\n\n /**\n * Vector source - where the drawing data will stored.\n */\n this.vectorSource = new VectorSource();\n\n /**\n * Vector layer - Hosts the vector source and is attached to the map as a layer. These styles\n * are for the measurement drawings that are added to the layer once the measurement\n * interaction is complete.\n */\n this.vectorLayer = new VectorLayer({\n source: this.vectorSource,\n zIndex: props.zIndex,\n style: new Style({\n fill: new Fill({\n color: 'rgba(255, 255, 255, 0.2)',\n }),\n stroke: new Stroke({\n color: '#ffcc33',\n width: 2,\n }),\n image: new Circle({\n radius: 7,\n fill: new Fill({\n color: '#ffcc33',\n }),\n }),\n }),\n });\n\n /**\n * Bind hanlders to this.\n */\n this.handleKeyup = this.handleKeyup.bind(this);\n this.handleOnDrawStart = this.handleOnDrawStart.bind(this);\n this.handleOnDrawEnd = this.handleOnDrawEnd.bind(this);\n this.handleOnDrawGeometryChange = this.handleOnDrawGeometryChange.bind(this);\n this.handleClearMeasurement = this.handleClearMeasurement.bind(this);\n }\n\n /**\n * Adds the vector layer to the map after this component has been mounted.\n */\n componentDidMount() {\n this.props.map.getLayers().push(this.vectorLayer);\n this.configureDrawInteraction(this.state.drawingType);\n }\n\n /**\n * Props or state has been updated.\n */\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.drawingType !== this.props.drawingType) {\n this.props.map.removeOverlay(this.measurementOverlay);\n this.resetDrawInteraction();\n }\n }\n\n /**\n * Cleanup.\n */\n componentWillUnmount() {\n document.removeEventListener('keyup', this.handleKeyup);\n this.props.map.removeOverlay(this.measurementOverlay);\n this.props.map.removeInteraction(this.drawInteraction);\n this.props.map.removeLayer(this.vectorLayer);\n this.drawInteraction.un('drawstart', this.handleOnDrawStart);\n this.drawInteraction.un('drawend', this.handleOnDrawEnd);\n this.drawInteraction = undefined;\n this.vectorLayer = undefined;\n }\n\n /**\n * Creates a new measurement overlay, this overlay is the tooltip with the value of the\n * measurement and close button.\n */\n newMeasurementOverlay() {\n /**\n * Create overlay instance. We also set a 'type' property so we can easily get a handle of all\n * the measurement overlays that may have been created, we'll need to do this when clearing ALL\n * measurements from the map.\n */\n const measurementOverlay = new Overlay({\n offset: [0, -15],\n positioning: 'bottom-center',\n stopEvent: true,\n });\n measurementOverlay.set('type', OVERLAY_TYPE_NAME, true);\n\n /**\n * DOM elements used to display the measurement value/label tooltip bubble.\n */\n const container = document.createElement('div');\n const body = document.createElement('div');\n const closer = document.createElement('span');\n container.className = 'wnd_react_map_measure_tooltip wnd_react_map_measure_tooltip_measurement';\n body.className = 'wnd_react_map_measure_tooltip_body';\n container.appendChild(body);\n container.appendChild(closer);\n measurementOverlay.setElement(container);\n\n /**\n * Adds a 'setBody' function so the draw event handler can easily update the contents with a\n * measurement value.\n */\n measurementOverlay.setBody = measurement => {\n body.innerHTML = measurement;\n };\n\n /**\n * Provides a link user to delete measurement.\n */\n measurementOverlay.enableCloser = () => {\n closer.innerHTML = '×';\n closer.className = 'wnd_react_map_measure_tooltip_closer';\n closer.onclick = e => {\n this.handleClearMeasurement(e, measurementOverlay);\n };\n };\n\n return measurementOverlay;\n }\n\n /**\n * Measure the drawing geometry - length or area.\n */\n measureGeometry(geometry) {\n if (geometry instanceof Polygon) {\n return this.measurePolygon(geometry);\n } else if (geometry instanceof LineString) {\n return this.measureLineString(geometry);\n } else if (geometry instanceof CircleGeom) {\n return this.measureCircle(geometry);\n }\n }\n\n /**\n * Measure the length of a LineString.\n */\n measureLineString(lineString) {\n const length = getLength(lineString);\n const val = this.props.unit.convert(length);\n const sup = this.props.unit.label;\n return `${val} ${sup}`;\n }\n\n /**\n * Measure the area of the polygon.\n */\n measurePolygon(polygon) {\n const area = getArea(polygon);\n const val = this.props.unit.convert(area);\n const sup = this.props.unit.label;\n return `${val} ${sup}`;\n }\n\n /**\n * Measure the area of the circle.\n */\n measureCircle(circle) {\n const area = Math.PI * circle.getRadius() * circle.getRadius();\n const val = this.props.unit.convert(area);\n const sup = this.props.unit.label;\n return `${val} ${sup}`;\n }\n\n /**\n * Configures the drawing interaction by setting various styles of the drawing. These are the\n * styles when actively drawing the measurement.\n */\n configureDrawInteraction(drawingType) {\n this.drawInteraction = new Draw({\n source: this.vectorSource,\n type: drawingType,\n style: new Style({\n fill: new Fill({\n color: 'rgba(255, 255, 255, 0.2)',\n }),\n stroke: new Stroke({\n color: 'rgba(0, 0, 0, 0.8)',\n lineDash: [10, 10],\n width: 4,\n }),\n image: new Circle({\n radius: 5,\n stroke: new Stroke({\n color: 'rgba(0, 0, 0, 0.7)',\n }),\n fill: new Fill({\n color: 'rgba(255, 255, 255, 0.2)',\n }),\n }),\n }),\n });\n }\n\n /**\n * Adds the drawing interaction to the map.\n */\n addDrawInteraction() {\n if (this.props.onDrawActivated) {\n this.props.onDrawActivated();\n }\n\n this.props.map.addInteraction(this.drawInteraction);\n this.drawInteraction.on('drawstart', this.handleOnDrawStart);\n this.drawInteraction.on('drawend', this.handleOnDrawEnd);\n }\n\n /**\n * Remove the drawing interaction from the map and notify listeners.\n */\n removeDrawInteraction() {\n this.props.map.removeInteraction(this.drawInteraction);\n\n if (this.props.onDrawDeactivated) {\n this.props.onDrawDeactivated();\n }\n }\n\n /**\n * Resets the drawing interaction.\n */\n resetDrawInteraction() {\n this.removeDrawInteraction();\n this.configureDrawInteraction(this.state.drawingType);\n if (this.state.isActive) {\n this.addDrawInteraction();\n }\n }\n\n /**\n * Handler to setup the measurement overlay when the user starts to draw.\n */\n handleOnDrawStart(evt) {\n document.addEventListener('keyup', this.handleKeyup);\n this.measurementOverlay = this.newMeasurementOverlay();\n this.measurementOverlay.set('feature', evt.feature);\n this.props.map.addOverlay(this.measurementOverlay);\n this.sketch = evt.feature;\n this.listener = this.sketch.getGeometry().on('change', this.handleOnDrawGeometryChange);\n }\n\n /**\n * Handler to update the current measurement overlay while the user is drawing.\n */\n handleOnDrawGeometryChange(evt) {\n const geom = evt.target;\n this.measurementOverlay.setBody(this.measureGeometry(geom));\n this.measurementOverlay.setPosition(MeasureTool.geometryCoordinates(geom));\n }\n\n /**\n * Handler when drawing is done - cleanup.\n */\n handleOnDrawEnd() {\n this.measurementOverlay.enableCloser();\n this.measurementOverlay.getElement().className =\n 'wnd_react_map_measure_tooltip wnd_react_map_measure_tooltip_static';\n this.measurementOverlay.setOffset([0, -7]);\n this.sketch = null;\n this.measurementOverlay = null;\n document.removeEventListener('keyup', this.handleKeyup);\n unByKey(this.listener);\n }\n\n /**\n * When the \"Escape\" key is pressed reset the active measurement drawing - let the user start\n * over.\n */\n handleKeyup(event) {\n if (event.key === 'Escape') {\n if (this.measurementOverlay) {\n this.props.map.removeOverlay(this.measurementOverlay);\n this.resetDrawInteraction();\n }\n }\n }\n\n /**\n * Handles click to clear measurement drawings.\n */\n clearMeasurements() {\n /**\n * Collect and delete the measurement overlays.\n */\n const overlays = [];\n this.props.map.getOverlays().forEach(o => overlays.push(o));\n\n overlays\n .filter(o => o.get('type') === OVERLAY_TYPE_NAME)\n .forEach(o => this.props.map.removeOverlay(o));\n\n this.vectorSource.clear(true);\n }\n\n /**\n * Handles click to remove a single measurement drawing.\n */\n handleClearMeasurement(evt, measurementOverlay) {\n this.vectorSource.removeFeature(measurementOverlay.get('feature'));\n this.props.map.removeOverlay(measurementOverlay);\n }\n\n /**\n * Render\n */\n render() {\n return null;\n }\n}\n","import Map from \"./core/Map\";\n\nexport default Map;\nexport { default as ArcGISTileLayer } from \"./core/layer/tile/ArcGISTileLayer\";\nexport { default as WMSTileLayer } from \"./core/layer/tile/WMSTileLayer\";\nexport {\n default as ArcGISPolygonFeatureLayer\n} from \"./core/layer/feature/ArcGISPolygonFeatureLayer\";\nexport { default as ArcGISFeatureLayer } from \"./core/layer/feature/ArcGISFeatureLayer\";\nexport { default as SqlServerLayer } from \"./core/layer/feature/SqlServerLayer\";\nexport { default as BingMapsTileLayer } from \"./core/layer/tile/BingMapsTileLayer\";\nexport { default as XYZLayer } from \"./core/layer/tile/XYZLayer\";\nexport { default as FeaturesLayer } from \"./core/layer/FeaturesLayer\";\nexport { default as BasicOverlay } from \"./core/overlay/BasicOverlay\";\nexport { default as MeasureTool } from \"./core/measure/MeasureTool\";\n","/**\r\n * Returns a site name and address data object.\r\n *\r\n * @param siteProfile the site profile data from the server.\r\n */\r\nexport const toSiteNameAndAddress = siteProfile => {\r\n const { profileFacilityDetail } = siteProfile;\r\n\r\n return {\r\n siteName: profileFacilityDetail.facilityName,\r\n address: profileFacilityDetail.address,\r\n city: profileFacilityDetail.city,\r\n zip: profileFacilityDetail.zipCode,\r\n state: profileFacilityDetail.state,\r\n };\r\n};\r\n\r\nexport const getSiteId = siteProfile => {\r\n if (siteProfile && siteProfile.profileFacilityDetail) {\r\n return siteProfile.profileFacilityDetail.sourceIdentifier;\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const getSiteName = siteProfile => {\r\n if (siteProfile && siteProfile.profileFacilityDetail) {\r\n return siteProfile.profileFacilityDetail.facilityName;\r\n }\r\n return undefined;\r\n};\r\n","import {\r\n DEFAULT_MAP_PADDING,\r\n LEFT_EXTENT_BUFFER_PX,\r\n SEARCH_RESULT_PANEL_MARGIN_PX,\r\n SEARCH_RESULT_PANEL_WIDTH_PX,\r\n} from '../Constants';\r\nimport { isSmallScreen } from './browser';\r\n\r\n/**\r\n * Calculate the position of where to center the map when the intermediate panel is open.\r\n */\r\nexport const centerPositionWhenPanelIsOpen = () => {\r\n /**\r\n * No need to adjust when in small screen.\r\n */\r\n if (isSmallScreen()) return undefined;\r\n\r\n const screenWidth = document.documentElement.clientWidth;\r\n const leftOffsetWhenOpen = SEARCH_RESULT_PANEL_WIDTH_PX * 2 + SEARCH_RESULT_PANEL_MARGIN_PX * 2;\r\n const x = (screenWidth + leftOffsetWhenOpen) / 2;\r\n const y = document.documentElement.clientHeight / 2;\r\n return [x, y];\r\n};\r\n\r\n/**\r\n * Calculate map padding based on screen size - add extra left padding for large screens.\r\n */\r\nexport const mapPadding = () =>\r\n isSmallScreen() ? DEFAULT_MAP_PADDING : [20, 20, 20, LEFT_EXTENT_BUFFER_PX];\r\n\r\n/**\r\n * Calculates the extent of the map to search with depending on screen size.\r\n */\r\nexport const calculateSearchExtent = map => {\r\n const extent = map.getView().calculateExtent(map.getSize());\r\n const resolution = map.getView().getResolution();\r\n\r\n /**\r\n * Only apply left padding to extent on desktop mode.\r\n */\r\n if (!isSmallScreen()) {\r\n const adjustment =\r\n resolution * SEARCH_RESULT_PANEL_WIDTH_PX + SEARCH_RESULT_PANEL_MARGIN_PX * 2;\r\n extent[0] = extent[0] < 0 ? extent[0] + adjustment : extent[0] - adjustment;\r\n } else {\r\n /**\r\n * adjust extent for bottom header and top search bar.\r\n *\r\n * TODO revisit padding of small devices.\r\n */\r\n const ADJUSTMENT_FOR_BOTH = resolution * 10;\r\n extent[1] = extent[1] > 0 ? extent[1] + ADJUSTMENT_FOR_BOTH : extent[1] - ADJUSTMENT_FOR_BOTH;\r\n extent[3] = extent[3] > 0 ? extent[3] - ADJUSTMENT_FOR_BOTH : extent[3] + ADJUSTMENT_FOR_BOTH;\r\n }\r\n\r\n return extent;\r\n};\r\n","/**\r\n * Map startup.\r\n */\r\nexport const MAP_STARTUP_BEGIN = 'MAP_STARTUP_BEGIN';\r\nexport const MAP_STARTUP_SUCCESS = 'MAP_STARTUP_SUCCESS';\r\nexport const MAP_STARTUP_ERROR = 'MAP_STARTUP_ERROR';\r\nexport const MAP_STARTUP_MESSAGE = 'MAP_STARTUP_MESSAGE';\r\n\r\n/**\r\n * Map related actions.\r\n */\r\nexport const RESET_MAP = 'RESET_MAP';\r\nexport const RESET_SEARCH_INPUT = 'RESET_SEARCH_INPUT';\r\nexport const SELECT_MEASURE_TOOL = 'SELECT_MEASURE_TOOL';\r\nexport const ZOOM_TO_EXTENT = 'ZOOM_TO_EXTENT';\r\nexport const ZOOM_TO_LOCATION = 'ZOOM_TO_LOCATION';\r\nexport const SET_MY_LOCATION_COORDS = 'SET_MY_LOCATION_COORDS';\r\nexport const SET_CENTER_ON_POSITION = 'SET_CENTER_ON_POSITION';\r\nexport const SEARCH_INPUT_FOCUS_CHANGE = 'SEARCH_INPUT_FOCUS_CHANGE';\r\nexport const SET_INFO_PANEL_CONTENT = 'SET_INFO_PANEL_CONTENT';\r\n\r\n/**\r\n * Map layer selections.\r\n */\r\nexport const ACTIVE_BASE_LAYER = 'ACTIVE_BASE_LAYER';\r\nexport const ACTIVE_REFERENCE_LAYERS = 'ACTIVE_REFERENCE_LAYERS';\r\n/**\r\n * Search sites.\r\n */\r\nexport const SEARCH_SITES_BEGIN = 'SEARCH_SITES_BEGIN';\r\nexport const SEARCH_SITES_SUCCESS = 'SEARCH_SITES_SUCCESS';\r\nexport const SEARCH_SITES_ERROR = 'SEARCH_SITES_ERROR';\r\n\r\nexport const SELECT_SITE = 'SELECT_SITE';\r\nexport const DESELECT_SITE = 'DESELECT_SITE';\r\nexport const SKIP_MAP_MOVE_SEARCH_ONCE = 'SKIP_MAP_MOVE_SEARCH_ONCE';\r\n\r\n/**\r\n * Highlight sites in list when the user cannot zoom further\r\n */\r\nexport const MULTIPLE_SITE_SELECT = 'MULTIPLE_SITE_SELECT';\r\n\r\n/**\r\n * Fetch search filter counts.\r\n */\r\nexport const FETCH_SEARCH_FILTER_COUNT_BEGIN = 'FETCH_SEARCH_FILTER_COUNT_BEGIN';\r\nexport const FETCH_SEARCH_FILTER_COUNT_SUCCESS = 'FETCH_SEARCH_FILTER_COUNT_SUCCESS';\r\nexport const FETCH_SEARCH_FILTER_COUNT_ERROR = 'FETCH_SEARCH_FILTER_COUNT_ERROR';\r\n","import Config from '../../app/config';\r\nimport { centerPositionWhenPanelIsOpen } from '../../app/util/map';\r\nimport {\r\n ACTIVE_BASE_LAYER,\r\n ACTIVE_REFERENCE_LAYERS,\r\n DESELECT_SITE,\r\n FETCH_SEARCH_FILTER_COUNT_BEGIN,\r\n FETCH_SEARCH_FILTER_COUNT_ERROR,\r\n FETCH_SEARCH_FILTER_COUNT_SUCCESS,\r\n MULTIPLE_SITE_SELECT,\r\n RESET_MAP,\r\n RESET_SEARCH_INPUT,\r\n SEARCH_INPUT_FOCUS_CHANGE,\r\n SEARCH_SITES_BEGIN,\r\n SEARCH_SITES_ERROR,\r\n SEARCH_SITES_SUCCESS,\r\n SELECT_MEASURE_TOOL,\r\n SELECT_SITE,\r\n SET_CENTER_ON_POSITION,\r\n SET_INFO_PANEL_CONTENT,\r\n SET_MY_LOCATION_COORDS,\r\n SKIP_MAP_MOVE_SEARCH_ONCE,\r\n ZOOM_TO_EXTENT,\r\n ZOOM_TO_LOCATION,\r\n} from './map.actionType';\r\n\r\n/**\r\n * Get a reference to the AbortController class.\r\n */\r\nconst AbortController = window.AbortController;\r\n\r\n/**\r\n * Needs to be function in order to delay access - when the page intially loads window.nSITE.Api is\r\n * undefined.\r\n */\r\nconst api = () => window.nSITE.Api;\r\n\r\n/**\r\n * //////////////////////////////////////////////////////\r\n * ////\r\n * //// Map related events.\r\n * ////\r\n * //////////////////////////////////////////////////////\r\n */\r\n\r\nexport function skipMapMoveSearchOnce(isSkip) {\r\n return {\r\n type: SKIP_MAP_MOVE_SEARCH_ONCE,\r\n payload: {\r\n isSkip: isSkip,\r\n },\r\n };\r\n}\r\n\r\nexport function zoomToCenter(coordinates, zoom) {\r\n return {\r\n type: ZOOM_TO_LOCATION,\r\n payload: {\r\n coordinates,\r\n zoom,\r\n },\r\n };\r\n}\r\n\r\nexport function zoomToExtent(extent) {\r\n return {\r\n type: ZOOM_TO_EXTENT,\r\n payload: {\r\n extent,\r\n },\r\n };\r\n}\r\n\r\nexport function resetSearchInput() {\r\n return {\r\n type: RESET_SEARCH_INPUT,\r\n };\r\n}\r\n\r\nexport function setInfoPanelContent(content) {\r\n return {\r\n type: SET_INFO_PANEL_CONTENT,\r\n payload: {\r\n content,\r\n },\r\n };\r\n}\r\n\r\nexport function selectBaseLayer(layer) {\r\n return {\r\n type: ACTIVE_BASE_LAYER,\r\n payload: {\r\n layer,\r\n },\r\n };\r\n}\r\n\r\nexport function selectReferenceLayers(layers) {\r\n return {\r\n type: ACTIVE_REFERENCE_LAYERS,\r\n payload: {\r\n layers: [...layers],\r\n },\r\n };\r\n}\r\n\r\nexport function resetMap() {\r\n return dispatch => {\r\n /**\r\n * Get the original mapExtent and nudge one of the extent values so the component can\r\n * recognize the change in property value. This is only necessary when the extent in the store\r\n * hasn't changed. This would occur if the user had only panned the map because in this case\r\n * the extent value in the store is only changed when an interaction changes that value such as\r\n * clicking on a site feature to which we zoom to.\r\n */\r\n const extent = Config.getExtent().slice(0);\r\n extent[3] = extent[3] + 0.0000000000000001;\r\n\r\n dispatch({\r\n type: RESET_MAP,\r\n payload: {\r\n extent: extent,\r\n },\r\n });\r\n };\r\n}\r\n\r\nexport function selectMeasureTool(type) {\r\n return {\r\n type: SELECT_MEASURE_TOOL,\r\n payload: {\r\n activeMeasureTool: type,\r\n },\r\n };\r\n}\r\n\r\nexport function selectSite(site, options) {\r\n return {\r\n type: SELECT_SITE,\r\n payload: {\r\n site,\r\n options,\r\n },\r\n };\r\n}\r\n\r\nexport function searchInputFocusChange(isFocused) {\r\n return {\r\n type: SEARCH_INPUT_FOCUS_CHANGE,\r\n payload: {\r\n isFocused,\r\n },\r\n };\r\n}\r\n\r\nexport function deselectSite() {\r\n return {\r\n type: DESELECT_SITE,\r\n };\r\n}\r\n\r\nexport function multipleSiteSelect(sites) {\r\n return {\r\n type: MULTIPLE_SITE_SELECT,\r\n payload: {\r\n selectedClusterSiteList: sites,\r\n },\r\n };\r\n}\r\n\r\nexport function setMyLocationCoords(lonLat) {\r\n return {\r\n type: SET_MY_LOCATION_COORDS,\r\n payload: {\r\n coordinates: lonLat,\r\n },\r\n };\r\n}\r\n\r\nexport function setCenterOnPosition() {\r\n return {\r\n type: SET_CENTER_ON_POSITION,\r\n payload: {\r\n position: centerPositionWhenPanelIsOpen(),\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * //////////////////////////////////////////////////////\r\n * ////\r\n * //// Search sites\r\n * ////\r\n * //////////////////////////////////////////////////////\r\n */\r\n\r\n/**\r\n * At each keyup a new api fetch is made to load the site search. If there's a fetch in flight we\r\n * need to abort it so that we ensure the last request is the only one in flight so we abort the\r\n * previous fetch.\r\n */\r\nlet siteSearchAbortController = new AbortController();\r\n\r\nexport function searchSitesIfNeeded(criteria) {\r\n return dispatch => {\r\n /**\r\n * If we're currently fetching site features, abort the fetch and start over.\r\n */\r\n siteSearchAbortController.abort();\r\n\r\n /**\r\n * Setup an AbortController and get a handle to the abort signal. We pass the signal into the\r\n * fetch so that we cancel this request in the future (see above) if we need to.\r\n */\r\n siteSearchAbortController = new AbortController();\r\n\r\n return dispatch(searchSites(criteria, { signal: siteSearchAbortController.signal }));\r\n };\r\n}\r\n\r\nexport function searchSites(criteria, options) {\r\n return dispatch => {\r\n dispatch(searchSitesBegin(criteria));\r\n api()\r\n .site.search(criteria, options)\r\n .then(results => dispatch(searchSitesSuccess(results)))\r\n .catch(err => {\r\n if (err.name !== 'AbortError') {\r\n dispatch(searchSitesError(err.message));\r\n }\r\n });\r\n };\r\n}\r\n\r\nexport function searchSitesBegin(criteria) {\r\n return {\r\n type: SEARCH_SITES_BEGIN,\r\n payload: {\r\n criteria,\r\n },\r\n };\r\n}\r\n\r\nexport function searchSitesSuccess(results) {\r\n return {\r\n type: SEARCH_SITES_SUCCESS,\r\n payload: {\r\n features: results.features,\r\n sites: results.sites,\r\n criteria: results.criteria,\r\n count: results.count,\r\n },\r\n };\r\n}\r\n\r\nexport function searchSitesError(message) {\r\n return {\r\n type: SEARCH_SITES_ERROR,\r\n payload: {\r\n error: message,\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * //////////////////////////////////////////////////////\r\n * ////\r\n * //// Get site search filters count.\r\n * ////\r\n * //////////////////////////////////////////////////////\r\n */\r\nlet searchFilterCountAbortController = new AbortController();\r\n\r\nexport function searchFilterCountIfNeeded(criteria) {\r\n return dispatch => {\r\n /**\r\n * If we're currently fetching site filter counts, abort the fetch and start over.\r\n */\r\n searchFilterCountAbortController.abort();\r\n\r\n /**\r\n * Setup an AbortController and get a handle to the abort signal. We pass the signal into the\r\n * fetch so that we cancel this request in the future (see above) if we need to.\r\n */\r\n searchFilterCountAbortController = new AbortController();\r\n\r\n return dispatch(\r\n searchFilterCount(criteria, { signal: searchFilterCountAbortController.signal })\r\n );\r\n };\r\n}\r\n\r\nfunction searchFilterCount(criteria, options) {\r\n return dispatch => {\r\n dispatch(searchFilterCountBegin());\r\n api()\r\n .filter.getSiteFilterCounts(criteria, options)\r\n .then(results => dispatch(searchFilterCountSuccess(results)))\r\n .catch(err => {\r\n if (err.name !== 'AbortError') {\r\n dispatch(searchFilterCountError(err.message));\r\n }\r\n });\r\n };\r\n}\r\n\r\nexport function searchFilterCountBegin() {\r\n return {\r\n type: FETCH_SEARCH_FILTER_COUNT_BEGIN,\r\n };\r\n}\r\n\r\nexport function searchFilterCountSuccess(results) {\r\n return {\r\n type: FETCH_SEARCH_FILTER_COUNT_SUCCESS,\r\n payload: {\r\n filterCounts: results,\r\n },\r\n };\r\n}\r\n\r\nexport function searchFilterCountError(message) {\r\n return {\r\n type: FETCH_SEARCH_FILTER_COUNT_ERROR,\r\n payload: {\r\n error: message,\r\n },\r\n };\r\n}\r\n","/**\r\n * Load profile detail data.\r\n */\r\nexport const LOAD_PROFILE_DETAIL_BEGIN = 'LOAD_PROFILE_DETAIL_BEGIN';\r\nexport const LOAD_PROFILE_DETAIL_SUCCESS = 'LOAD_PROFILE_DETAIL_SUCCESS';\r\nexport const LOAD_PROFILE_DETAIL_ERROR = 'LOAD_PROFILE_DETAIL_ERROR';\r\n\r\n/**\r\n * Fetch generic data.\r\n */\r\nexport const FETCH_GENERIC_BEGIN = 'FETCH_GENERIC_BEGIN';\r\nexport const FETCH_GENERIC_SUCCESS = 'FETCH_GENERIC_SUCCESS';\r\nexport const FETCH_GENERIC_ERROR = 'FETCH_GENERIC_ERROR';\r\n","import get from 'lodash/get';\r\nimport { getSiteId } from '../../app/util/entities/siteProfile';\r\nimport { selectSite } from '../map/map.action';\r\nimport {\r\n FETCH_GENERIC_BEGIN,\r\n FETCH_GENERIC_ERROR,\r\n FETCH_GENERIC_SUCCESS,\r\n LOAD_PROFILE_DETAIL_BEGIN,\r\n LOAD_PROFILE_DETAIL_ERROR,\r\n LOAD_PROFILE_DETAIL_SUCCESS,\r\n} from './profile.actionType';\r\n\r\n/**\r\n * Needs to be function in order to delay access. When the code intially loads window.nSITE.Api is\r\n * undefined.\r\n */\r\nconst api = () => window.nSITE.Api;\r\n\r\n/**\r\n * //////////////////////////////////////////////////////\r\n * ////\r\n * //// Profile detail actions\r\n * ////\r\n * //////////////////////////////////////////////////////\r\n */\r\n\r\nexport function loadProfileDetailIfNeeded(sourceIdentifier) {\r\n return (dispatch, getState) => {\r\n if (shouldLoadProfileDetail(getState())) {\r\n return dispatch(loadProfileDetail(sourceIdentifier, getState()));\r\n }\r\n return undefined;\r\n };\r\n}\r\n\r\nfunction shouldLoadProfileDetail(state) {\r\n return !state.profile.detail.isLoading;\r\n}\r\n\r\nfunction loadProfileDetail(sourceIdentifier, state) {\r\n return dispatch => {\r\n dispatch(loadProfileDetailBegin());\r\n api()\r\n .profile.getProfileDetails(sourceIdentifier)\r\n .then(profileDetail => {\r\n const sites = get(state, 'map.search.sites');\r\n\r\n if (sites) {\r\n const found = sites.find(s => s.sourceIdentifier === getSiteId(profileDetail));\r\n\r\n if (found) {\r\n dispatch(selectSite(found));\r\n } else {\r\n api()\r\n .site.getSiteBySourceIdentifier(getSiteId(profileDetail))\r\n .then(site => {\r\n dispatch(selectSite(site));\r\n });\r\n }\r\n }\r\n\r\n dispatch(loadProfileDetailSuccess(profileDetail));\r\n })\r\n .catch(err => dispatch(loadProfileDetailError(err.message)));\r\n };\r\n}\r\n\r\nfunction loadProfileDetailBegin() {\r\n return {\r\n type: LOAD_PROFILE_DETAIL_BEGIN,\r\n };\r\n}\r\n\r\nfunction loadProfileDetailSuccess(detail) {\r\n return {\r\n type: LOAD_PROFILE_DETAIL_SUCCESS,\r\n payload: { detail },\r\n };\r\n}\r\n\r\nfunction loadProfileDetailError(message) {\r\n return {\r\n type: LOAD_PROFILE_DETAIL_ERROR,\r\n payload: { error: message },\r\n };\r\n}\r\n\r\n/**\r\n * //////////////////////////////////////////////////////\r\n * ////\r\n * //// Profile Generic\r\n * ////\r\n * //////////////////////////////////////////////////////\r\n */\r\n\r\nexport function fetchGenericIfNeeded(sourceIdentifier) {\r\n return (dispatch, getState) => {\r\n if (shouldGeneric(getState())) {\r\n return dispatch(fetchGeneric(sourceIdentifier));\r\n }\r\n return undefined;\r\n };\r\n}\r\n\r\nfunction shouldGeneric(state) {\r\n return !state.profile.generic.isLoading;\r\n}\r\n\r\nfunction fetchGeneric(sourceIdentifier) {\r\n return dispatch => {\r\n dispatch(loadGenericBegin());\r\n\r\n api()\r\n .profile.getGeneric(sourceIdentifier)\r\n .then(generic => {\r\n dispatch(loadGenericSuccess(generic));\r\n })\r\n .catch(err => dispatch(loadGenericError(err.message)));\r\n };\r\n}\r\n\r\nfunction loadGenericBegin() {\r\n return {\r\n type: FETCH_GENERIC_BEGIN,\r\n };\r\n}\r\n\r\nfunction loadGenericSuccess(generic) {\r\n return {\r\n type: FETCH_GENERIC_SUCCESS,\r\n payload: { generic },\r\n };\r\n}\r\n\r\nfunction loadGenericError(message) {\r\n return {\r\n type: FETCH_GENERIC_ERROR,\r\n payload: { error: message },\r\n };\r\n}\r\n","/*******************************************************************************\n *\n * Utility functions to work with the array of layers coming back from the nSITE api.\n *\n *******************************************************************************/\n\nimport { LAYER_PREVIEW, DATA_HUB, DATA_HUB_PREFIX } from \"../Constants\";\nimport { layer } from \"@fortawesome/fontawesome-svg-core\";\n\n/**\n * Helper to sort layers by displayOrder property.\n */\nexport const sortByDisplayOrder = (layerA, layerB) => {\n const a = layerA.displayOrder;\n const b = layerB.displayOrder;\n\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n};\n\n/**\n * Is default layer.\n */\nconst isDefault = layer => layer.isDefault;\n\n/**\n * Is base layer.\n */\nconst isBaseLayer = layer => layer.isBaseLayer;\n\n/**\n * Is non-base layer.\n */\nconst isNonBaseLayer = layer => !layer.isBaseLayer;\n\n/**\n * Is non-base layer.\n */\nconst hasGroupName = groupName => layer => layer.groupName === groupName;\n\n/**\n * Base layers.\n */\nexport const findAllBaseLayers = layers => layers.filter(isBaseLayer).sort(sortByDisplayOrder);\n\n/**\n * Default base layer.\n */\nexport const findDefaultBaseLayer = layers => findAllBaseLayers(layers).filter(isDefault)[0];\n\n/**\n * Default reference layers.\n */\nexport const findDefaultReferenceLayer = (layers, mode) => {\n let layerName = null;\n if (mode.name === LAYER_PREVIEW) {\n layers.map(layer => {\n if (!layer.isBaseLayer) {\n layer.isDefault = false;\n }\n });\n layerName = mode.layerName;\n if (layerName && layerName.toLowerCase().indexOf(DATA_HUB_PREFIX) > -1) {\n layers.push({\n layerName: mode.layerName,\n layerType: DATA_HUB,\n displayOrder: 1000,\n isDefault: true,\n isBaseLayer: false,\n id: Math.random() * 1000,\n opacity: 0.8\n });\n }\n }\n return layers.filter(function(layer) {\n return layerName === layer.layerName;\n });\n};\n\n/**\n * Non base layers.\n */\nexport const findAllNonBaseLayers = layers =>\n layers.filter(isNonBaseLayer).sort(sortByDisplayOrder);\n\n/**\n * Non base layers by group name.\n */\nexport const findAllNonBaseLayersByGroupName = (layers, groupName) =>\n layers.filter(hasGroupName(groupName)).sort(sortByDisplayOrder);\n","import { LAYER_PREVIEW, LAYER_PREVIEW_NAME, LAYER_PREVIEW_TYPE } from \"../Constants\";\n\n/**\n * Returns tab objects with name, visible, id\n *\n * @returns {*|String}}\n */\nexport const getSiteIds = () => {\n let siteIds = getParameterByName('siteIds');\n return siteIds ? `site_id: \"${siteIds}\"` : '';\n};\n\nexport const getAppMode = () => {\n let modeName = getParameterByName(\"mode\");\n let mode = {};\n if (modeName) {\n mode = {\n name: modeName,\n layerName: getParameterByName(LAYER_PREVIEW_NAME),\n layerType: getParameterByName(LAYER_PREVIEW_TYPE)\n };\n }\n return mode;\n};\n\nexport const getParameterByName = (name, url) => {\n if (!url) {\n url = window.location.href;\n }\n\n // eslint-disable-next-line\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n\n const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n\n if (!results[2]) {\n return '';\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n};\n","/**\r\n * System-wide UI related events.\r\n */\r\nexport const REPORT_ERROR = 'REPORT_ERROR';\r\n","import { buffer } from 'ol/extent';\nimport Config from '../../app/config';\nimport { findDefaultBaseLayer, findDefaultReferenceLayer } from '../../app/util/layers';\nimport { getSiteIds, getAppMode } from '../../app/util/urlParams';\nimport { setMyLocationCoords } from '../map/map.action';\nimport {\n MAP_STARTUP_BEGIN,\n MAP_STARTUP_ERROR,\n MAP_STARTUP_MESSAGE,\n MAP_STARTUP_SUCCESS,\n} from '../map/map.actionType';\nimport {\n getMyCurrentLocation,\n getMyCurrentLocationExtent,\n isDefaultExtentMyLocation,\n} from './helper';\nimport { REPORT_ERROR } from './system.actionType';\n\n/**\n * Needs to be function in order to delay access - when the page intially loads window.nSITE.Api is\n * undefined.\n */\nconst api = () => window.nSITE.Api;\n\n/**\n * //////////////////////////////////////////////////////\n * ////\n * //// Load Map Settings\n * ////\n * //////////////////////////////////////////////////////\n */\n\nexport function startMapSystemIfNeeded(options = { askForPosition: true }) {\n return (dispatch, getState) => {\n if (shouldStartMapSystem(getState())) {\n return dispatch(startMapSystem(options));\n }\n return undefined;\n };\n}\n\nfunction shouldStartMapSystem(state) {\n return !state.map.startup.isStarting;\n}\n\nfunction startMapSystem(options) {\n return dispatch => {\n dispatch(startMapSystemBegin());\n\n /**\n * Begin the startup process by creating a 'context' object literal to hold data as we progress\n * through the promise chain.\n */\n const start = () =>\n new Promise((resolve, reject) => {\n try {\n resolve({\n startTime: new Date(),\n extent: Config.getExtent(),\n });\n } catch (err) {\n reject(err);\n }\n });\n\n /**\n * We're going to attempt to ask the user for current coordinates. We'll use\n * the coordinates to center the map. When the app settings tell us NOT to\n * zoom to my location we'll call getMyCurrentLocation within a setTimeout\n * to not block the screen from loading.\n */\n const askUserCoordinates = context =>\n new Promise(resolve => {\n if (!options.askForPosition) {\n resolve(context);\n }\n\n if (isDefaultExtentMyLocation()) {\n getMyCurrentLocation(\n coords => {\n // bufferValue should probably be an app setting.\n const bufferValue = 250;\n resolve(\n Object.assign({}, context, {\n myLocation: coords,\n extent: buffer(getMyCurrentLocationExtent(context.extent, coords), bufferValue),\n })\n );\n },\n () => {\n console.log(\"Unable to obtain user's current location\");\n }\n );\n } else {\n setTimeout(() => {\n getMyCurrentLocation(\n coords => {\n dispatch(setMyLocationCoords(coords));\n },\n () => {\n console.log(\"Unable to obtain user's current location\");\n }\n );\n }, 0);\n\n resolve(context);\n }\n });\n\n /**\n * Load map layers data from the server.\n */\n const loadMapLayerSettings = context =>\n api()\n .layer.getAll()\n .then(layers => {\n return {\n ...context,\n layers,\n map: {\n activeBaseLayer: findDefaultBaseLayer(layers), // default selected base layer.\n activeReferenceLayers: findDefaultReferenceLayer(layers, getAppMode()), // selected reference layers - none to start with.\n },\n };\n });\n\n /**\n * Get and parse url params\n */\n const parseUrlParams = function(context) {\n return {\n ...context,\n search: {\n criteria: {\n term: getSiteIds(),\n },\n },\n };\n };\n\n /**\n * Helper to dispatch startup messages.\n */\n const dispatchMessage = message => status =>\n new Promise(resolve => {\n dispatch(startMapSystemMessage(message));\n resolve(status);\n });\n\n /**\n * Tie is all together.\n */\n start()\n .then(parseUrlParams)\n .then(dispatchMessage(\"Asking for user's location.\"))\n .then(askUserCoordinates)\n .then(dispatchMessage('Retrieving map layers.'))\n .then(loadMapLayerSettings)\n .then(dispatchMessage('Map initialization complete, lets go.'))\n .then(context => {\n if (context.myLocation) {\n dispatch(setMyLocationCoords(context.myLocation));\n }\n dispatch(startMapSystemSuccess(context));\n })\n .catch(err => {\n console.error(err);\n dispatch(startMapSystemError(err.message));\n });\n };\n}\n\nfunction startMapSystemBegin() {\n return {\n type: MAP_STARTUP_BEGIN,\n };\n}\n\nfunction startMapSystemSuccess(context) {\n return {\n type: MAP_STARTUP_SUCCESS,\n payload: {\n layers: context.layers,\n map: context.map,\n search: context.search,\n extent: context.extent,\n center: context.center,\n },\n };\n}\n\nfunction startMapSystemError(message) {\n return {\n type: MAP_STARTUP_ERROR,\n payload: {\n error: message,\n },\n };\n}\n\nfunction startMapSystemMessage(message) {\n return {\n type: MAP_STARTUP_MESSAGE,\n payload: {\n message,\n },\n };\n}\n\n/**\n * //////////////////////////////////////////////////////\n * ////\n * //// System-wide UI related actions.\n * ////\n * //////////////////////////////////////////////////////\n */\n\nexport function reportError(error) {\n return {\n type: REPORT_ERROR,\n payload: {\n error,\n },\n };\n}\n","import Map from \"ol/Map\";\nimport PropTypes from \"prop-types\";\nimport React, { PureComponent } from \"react\";\nimport { ArcGISTileLayer, BingMapsTileLayer, XYZLayer } from \"../../../../../../lib/map\";\n\nexport default class RootBaseLayer extends PureComponent {\n static propTypes = {\n /**\n * The map instance will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n\n /**\n * Root or bottom-most layer seen on the map.\n */\n layer: PropTypes.shape({\n id: PropTypes.any.isRequired,\n layerType: PropTypes.string.isRequired,\n layerName: PropTypes.string.isRequired,\n displayOrder: PropTypes.number.isRequired,\n opacity: PropTypes.number.isRequired,\n layerUrl: PropTypes.string,\n layerUrlShowVal: PropTypes.string,\n baseType: PropTypes.any\n }),\n\n /**\n * Api key for Bing Map services.\n */\n bingApiKey: PropTypes.string,\n\n /**\n * Called after all tiles have loaded.\n */\n onTilesLoadComplete: PropTypes.func\n };\n\n render() {\n const { map, layer, bingApiKey } = this.props;\n\n if (!layer) {\n return null;\n }\n\n switch (layer.layerType.toLowerCase()) {\n case \"arcgis93rest\":\n case \"arcgis\":\n return (\n \n );\n case \"bing\":\n return (\n \n );\n case \"xyz\":\n return (\n \n );\n default:\n return null;\n }\n }\n}\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\n\r\nexport default class Pin extends Component {\r\n static propTypes = {\r\n /**\r\n * Color.\r\n */\r\n color: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Size\r\n */\r\n size: PropTypes.number.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import Circle from 'ol/style/Circle';\nimport Fill from 'ol/style/Fill';\nimport Icon from 'ol/style/Icon';\nimport Stroke from 'ol/style/Stroke';\nimport Style from 'ol/style/Style';\nimport Text from 'ol/style/Text';\nimport React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport {\n CLUSTER_COLOR_HOVER,\n MARKER_SELECTED_COLOR,\n MARKER_SELECTED_SIZE,\n MARKER_UN_SELECTED_SIZE,\n} from '../Constants';\nimport Pin from '../page/map/components/shared/layer/marker/Pin';\nimport { isCluster } from './feature';\nimport { isInternetExplorer } from './browser';\n\nexport const newStyleSelected = (feature, fillColor, strokeColor) => {\n return style(feature, false, true, fillColor, strokeColor);\n};\n\nexport const newStyleNotSelected = (feature, fillColor, strokeColor) => {\n return style(feature, false, false, fillColor, strokeColor);\n};\n\nexport const newStyleHovered = (feature, fillColor, strokeColor) => {\n return style(feature, true, false, fillColor, strokeColor);\n};\n\nconst style = (feature, isHovered, isSelected, fillColor, strokeColor) => {\n const isClusterFeature = isCluster(feature);\n const label = isClusterFeature ? feature.get('count').toLocaleString() : '';\n\n return new Style({\n image: image(feature, isHovered, isSelected, fillColor, strokeColor),\n text: new Text({\n text: label,\n font: '12px Calibri,sans-serif',\n fill: new Fill({\n color: strokeColor,\n }),\n }),\n });\n};\n\nconst image = (feature, isHovered, isSelected, fillColor, strokeColor) => {\n let featureColor;\n\n if (isHovered) {\n featureColor = CLUSTER_COLOR_HOVER;\n } else if (isSelected) {\n featureColor = MARKER_SELECTED_COLOR;\n } else {\n featureColor = fillColor;\n }\n\n /**\n * Color circle when a cluster else use an svg image.\n */\n if (isCluster(feature)) {\n return new Circle({\n radius: isHovered ? feature.get('size') + 2 : feature.get('size'),\n stroke: new Stroke({\n color: strokeColor,\n }),\n fill: new Fill({\n color: featureColor,\n }),\n });\n } else {\n const svg = renderToStaticMarkup(\n \n );\n\n let src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);\n\n if (isInternetExplorer()) {\n src = 'http://maps.google.com/mapfiles/ms/icons/blue.png';\n }\n\n return new Icon({\n src: src,\n imgSize: isSelected\n ? [MARKER_SELECTED_SIZE, MARKER_SELECTED_SIZE]\n : [MARKER_UN_SELECTED_SIZE, MARKER_UN_SELECTED_SIZE],\n anchor: [0.5, 1],\n offset: [0, 0],\n });\n }\n};\n","import { containsCoordinate } from 'ol/extent';\r\nimport Feature from 'ol/Feature';\r\nimport WKT from 'ol/format/WKT';\r\nimport Point from 'ol/geom/Point';\r\nimport Circle from 'ol/style/Circle';\r\nimport Fill from 'ol/style/Fill';\r\nimport Stroke from 'ol/style/Stroke';\r\nimport Style from 'ol/style/Style';\r\nimport { toWebMercatorCenter, toWebMercatorExtent } from '../../lib/map/core/transfomer';\r\nimport { COLOR_BASE_PRIMARY } from '../Constants';\r\nimport { newStyleNotSelected } from '../util/marker';\r\n\r\n/**\r\n * Returns the source identifier from a site feature - a site feature that's seen on\r\n * the map.\r\n *\r\n * @param feature site feature.\r\n * @returns {*}\r\n */\r\nexport const sourceIdentifier = feature => {\r\n if (feature) return feature.get('sourceIdentifier');\r\n};\r\n\r\n/**\r\n * Returns the source identifier from a site feature - a site feature that's seen on\r\n * the map.\r\n *\r\n * @param feature site feature.\r\n * @returns {*}\r\n */\r\nexport const bbox = feature => {\r\n if (feature) return feature.get('bbox');\r\n};\r\n\r\n/**\r\n * Util function to determine if feature is a cluster - a cluster that's seen on\r\n * the map.\r\n *\r\n * @param feature site feature.\r\n * @returns {*}\r\n */\r\nexport const isCluster = feature => {\r\n return bbox(feature) !== undefined;\r\n};\r\n\r\n/**\r\n * Returns the extent of the feature (should be a cluster) as Web Mercator extent.\r\n *\r\n * @param feature\r\n */\r\nexport const webMercatorExtent = feature => {\r\n return toWebMercatorExtent(bbox(feature));\r\n};\r\n\r\n/**\r\n * Returns whether or not site is in the feature cluster.\r\n *\r\n * @param site site to test.\r\n * @param feature feature to feature.\r\n * @returns {boolean} whether or not site is in the feature cluster.\r\n */\r\nexport const isSiteInCluster = (site, feature) => {\r\n if (site && site.feature && isCluster(feature)) {\r\n return containsCoordinate(webMercatorExtent(feature), site.feature.coordinates);\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Does this site have the same feature id as this feature?\r\n */\r\nexport const isSharesSourceId = (site, feature) => {\r\n return site && feature && site.sourceIdentifier === sourceIdentifier(feature);\r\n};\r\n\r\n/**\r\n * Are both sites the same.\r\n */\r\nexport const isSitesEqual = (site1, site2) => {\r\n return site1 && site2 && site1.sourceIdentifier === site2.sourceIdentifier;\r\n};\r\n\r\n/**\r\n * Converts a site profile features to OpenLayers features.\r\n *\r\n * @param profile site profile\r\n * @returns {Array} open layers feature instances.\r\n */\r\nexport const profileToFeatures = profile => {\r\n if (profile && profile.profileFeature && Array.isArray(profile.profileFeature)) {\r\n const features = [];\r\n const format = new WKT();\r\n\r\n profile.profileFeature.forEach(f => {\r\n const feature = format.readFeature(f.geographyWkt, {\r\n dataProjection: 'EPSG:4326',\r\n featureProjection: 'EPSG:3857',\r\n });\r\n\r\n feature.setId(f.geographyWkt);\r\n feature.set('profileFeature', f);\r\n features.push(feature);\r\n });\r\n\r\n return features;\r\n }\r\n\r\n return [];\r\n};\r\n\r\n/**\r\n * Returns a single element array of features to place on the map for the given lonlat coordinates.\r\n */\r\nexport const myLocationToFeature = lonLat => {\r\n const positionFeature = new Feature();\r\n\r\n const styles = [\r\n new Style({\r\n image: new Circle({\r\n radius: 14,\r\n fill: new Fill({\r\n color: 'rgba(51, 153, 204, 0.3)',\r\n }),\r\n }),\r\n }),\r\n new Style({\r\n image: new Circle({\r\n radius: 6,\r\n fill: new Fill({\r\n color: 'rgba(51, 153, 204, 0.9)',\r\n }),\r\n stroke: new Stroke({\r\n color: '#fff',\r\n width: 2,\r\n }),\r\n }),\r\n }),\r\n ];\r\n\r\n positionFeature.setStyle(styles);\r\n positionFeature.setGeometry(lonLat ? new Point(toWebMercatorCenter(lonLat)) : null);\r\n return positionFeature;\r\n};\r\n\r\nexport const lonLatAsFeature = lonLat => {\r\n const positionFeature = new Feature();\r\n positionFeature.setGeometry(lonLat ? new Point(toWebMercatorCenter(lonLat)) : null);\r\n positionFeature.setStyle(newStyleNotSelected(positionFeature, COLOR_BASE_PRIMARY));\r\n return positionFeature;\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Text } from '../../../lib/base';\r\n\r\nexport default class Label extends Component {\r\n static propTypes = {\r\n /**\r\n * Label to render.\r\n */\r\n label: PropTypes.string.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.label}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Text } from '../../../lib/base';\r\n\r\nexport default class Value extends Component {\r\n static propTypes = {\r\n /**\r\n * Value is empty.\r\n */\r\n empty: PropTypes.bool,\r\n\r\n /**\r\n * Value to render.\r\n */\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n };\r\n\r\n static defaultProps = {\r\n empty: false,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import Color from \"color\";\nimport { click } from \"ol/events/condition\";\nimport Select from \"ol/interaction/Select\";\nimport Map from \"ol/Map\";\nimport Circle from \"ol/style/Circle\";\nimport Fill from \"ol/style/Fill\";\nimport Stroke from \"ol/style/Stroke\";\nimport Style from \"ol/style/Style\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { BasicOverlay, FeaturesLayer } from \"../../../../../../lib/map\";\nimport { profileToFeatures } from \"../../../../../util/feature\";\nimport Columns from \"../../../../../../lib/base/layout/flex/Columns\";\nimport Column from \"../../../../../../lib/base/layout/flex/Column\";\nimport Box from \"../../../../../../lib/base/layout/Box\";\nimport Label from \"../../../../../components/lv/Label\";\nimport Value from \"../../../../../components/lv/Value\";\n\nconst SELECTED_STROKE = \"FF8C00\";\n\n/**\n * Site Feature layer\n */\nclass SiteFeaturesLayer extends Component {\n /**\n * Property types.\n */\n static propTypes = {\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n\n /**\n * Whether or not site feature layer is visible on the map.\n */\n visible: PropTypes.bool,\n\n /**\n * Where to insert the layer.\n */\n zIndex: PropTypes.number,\n\n /**\n * Called after vector layer populates with features.\n */\n onAfterPopulateFeatures: PropTypes.func,\n\n /**\n * Whether or not the layer is interactive.\n */\n interactive: PropTypes.bool\n };\n\n /**\n * Default properties for those props that are not required.\n */\n static defaultProps = {\n map: undefined,\n visible: true,\n zIndex: undefined,\n interactive: true\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const nextState = prevState;\n\n if (prevState.profile !== nextProps.profile) {\n nextState.profile = nextProps.profile;\n nextState.features = profileToFeatures(nextProps.profile);\n }\n\n if (prevState.visible !== nextProps.visible) {\n nextState.visible = nextProps.visible;\n }\n\n return nextState;\n }\n\n static tryColor(sourceColor) {\n return `#${sourceColor + \"FFFFFF\"}`.substring(0, 7);\n }\n\n static lighten(color, isSelected) {\n try {\n return Color(color)\n .alpha(isSelected ? 0.9 : 0.7)\n .rgb()\n .string();\n } catch (err) {\n console.log(\"unable to parse siteFeatureLayer color \" + color);\n }\n }\n\n static fill(hexFill, isSelected) {\n return SiteFeaturesLayer.lighten(SiteFeaturesLayer.tryColor(hexFill), isSelected);\n }\n\n static stroke(hexStroke, isSelected) {\n return SiteFeaturesLayer.tryColor(isSelected ? SELECTED_STROKE : hexStroke);\n }\n\n static featureStyle(feature, isSelected) {\n const profileFeature = feature.get(\"profileFeature\");\n\n const fill = SiteFeaturesLayer.fill(profileFeature.featureFillColor, isSelected);\n const stroke = SiteFeaturesLayer.stroke(profileFeature.featureOutlineColor, isSelected);\n\n return new Style({\n fill: new Fill({\n color: fill\n }),\n stroke: new Stroke({\n color: stroke,\n width: isSelected ? 3 : 2\n }),\n image: new Circle({\n radius: isSelected ? 9 : 7,\n fill: new Fill({\n color: fill\n }),\n stroke: new Stroke({\n color: stroke,\n width: isSelected ? 3 : 2\n })\n })\n });\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n profile: props.profile,\n features: profileToFeatures(props.profile),\n position: undefined,\n visible: props.visible,\n featuresLayer: undefined\n };\n\n this.selectFilter = this.selectFilter.bind(this);\n\n this.interactionSelect = new Select({\n condition: click,\n filter: this.selectFilter\n });\n\n this.featuresLayerRef = React.createRef();\n\n this.handleOnAddLayer = this.handleOnAddLayer.bind(this);\n this.handleOnAddFeature = this.handleOnAddFeature.bind(this);\n this.handleOnSelect = this.handleOnSelect.bind(this);\n this.handleOnCloseOverlay = this.handleOnCloseOverlay.bind(this);\n }\n\n componentDidMount() {\n this.interactionSelect.on(\"select\", this.handleOnSelect);\n\n if (this.props.interactive) {\n this.props.map.addInteraction(this.interactionSelect);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.visible !== this.props.visible) {\n this.tile.setVisible(this.props.visible);\n\n if (this.props.visible && this.props.interactive) {\n this.props.map.addInteraction(this.interactionSelect);\n } else {\n this.props.map.removeInteraction(this.interactionSelect);\n }\n }\n }\n\n selectFilter(feature, layer) {\n if (this.state.features && this.state.features.length > 0) {\n return this.state.features.includes(feature);\n }\n\n return false;\n }\n\n handleOnSelect(e) {\n const that = this;\n const p = e.mapBrowserEvent.coordinate;\n\n e.deselected.forEach(function(each) {\n that.setState({\n position: undefined,\n feature: undefined\n });\n each.setStyle(SiteFeaturesLayer.featureStyle(each, false));\n });\n\n e.selected.forEach(function(each) {\n that.setState({\n position: p,\n feature: each\n });\n each.setStyle(SiteFeaturesLayer.featureStyle(each, true));\n });\n }\n\n handleOnAddLayer(layer) {\n this.setState({ featuresLayer: layer });\n }\n\n handleOnCloseOverlay() {\n this.setState({\n position: undefined,\n feature: undefined\n });\n\n this.interactionSelect.getFeatures().forEach(each => {\n each.setStyle(SiteFeaturesLayer.featureStyle(each, false));\n });\n this.interactionSelect.getFeatures().clear();\n }\n\n handleOnAddFeature(feature) {\n feature.setStyle(SiteFeaturesLayer.featureStyle(feature, false));\n }\n\n overlayTitle() {\n const profileFeature = this.state.feature && this.state.feature.get(\"profileFeature\");\n\n if (!profileFeature) {\n return \"No feature selected.\";\n }\n\n return `Site feature: ${profileFeature.featureName || \"\"}`;\n }\n\n render() {\n return (\n \n {this.props.interactive && (\n {\n const profileFeature = this.state.feature && this.state.feature.get(\"profileFeature\");\n\n if (!profileFeature) {\n return No feature selected.;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }}\n />\n )}\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n profile: state.profile.detail.data,\n isLoading: state.profile.detail.isLoading,\n error: state.profile.detail.error\n };\n}\n\nexport default connect(mapStateToProps)(SiteFeaturesLayer);\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Map from '../../../lib/map';\r\nimport { toWebMercatorCenter } from '../../../lib/map/core/transfomer';\r\nimport { loadProfileDetailIfNeeded } from '../../../store/profile/profile.action';\r\nimport { startMapSystemIfNeeded } from '../../../store/system/system.action';\r\nimport Config from '../../config';\r\nimport { DEFAULT_MAP_PADDING } from '../../Constants';\r\nimport RootBaseLayer from '../map/components/shared/layer/RootBaseLayer';\r\nimport SiteFeaturesLayer from '../map/components/shared/layer/SiteFeaturesLayer';\r\n\r\nclass StandaloneMapPage extends PureComponent {\r\n static propTypes = {\r\n match: PropTypes.object,\r\n dispatchLoadMapSettings: PropTypes.func.isRequired,\r\n dispatchFetchProfile: PropTypes.func.isRequired,\r\n isStarting: PropTypes.bool,\r\n siteProfile: PropTypes.object,\r\n minResolution: PropTypes.number,\r\n maxResolution: PropTypes.number,\r\n rootBaseLayer: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.handleOnAfterPopulateFeatures = this.handleOnAfterPopulateFeatures.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const { params } = this.props.match; // 143125 | 27200\r\n this.props.dispatchLoadMapSettings();\r\n this.props.dispatchFetchProfile(params.id);\r\n }\r\n\r\n handleOnAfterPopulateFeatures({ vectorSource }) {\r\n this.setState({\r\n extent: vectorSource.getExtent(),\r\n });\r\n }\r\n\r\n render() {\r\n const { isStarting, siteProfile, minResolution, maxResolution, rootBaseLayer } = this.props;\r\n\r\n if (isStarting) {\r\n return null;\r\n }\r\n\r\n if (siteProfile === undefined) {\r\n return
Site not found.
;\r\n }\r\n\r\n const { longitude, latitude } = siteProfile.profileFacilityDetail;\r\n\r\n if (!longitude || !latitude) {\r\n return null;\r\n }\r\n\r\n const center = toWebMercatorCenter([longitude, latitude]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n const isMapStarting = state.map.startup.isStarting || state.map.startup.isStarting === undefined;\r\n\r\n return {\r\n isStarting: isMapStarting || state.profile.detail.isLoading,\r\n siteProfile: state.profile.detail.data,\r\n message: state.map.startup.message,\r\n error: state.map.startup.error,\r\n minResolution: state.map.minResolution,\r\n maxResolution: state.map.maxResolution,\r\n rootBaseLayer: state.map.activeBaseLayer,\r\n activeReferenceLayers: state.map.activeReferenceLayers,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n dispatchLoadMapSettings: () => {\r\n dispatch(startMapSystemIfNeeded());\r\n },\r\n dispatchFetchProfile: id => {\r\n dispatch(loadProfileDetailIfNeeded(id));\r\n },\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(StandaloneMapPage);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Text } from '../../../lib/base';\r\n\r\n/**\r\n * A full screen page loading spinner.\r\n */\r\nclass SpinnerPage extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n };\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render() {\r\n const { container, message } = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {this.props.message}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n margin: 'auto',\r\n height: '400px',\r\n width: '300px',\r\n zIndex: '100',\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n message: {\r\n width: '100%',\r\n textAlign: 'center',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SpinnerPage);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport SpinnerPage from '../spinner/SpinnerPage';\r\n\r\nexport default class PageLoading extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Loading message\r\n */\r\n message: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n message: 'Loading',\r\n };\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import format from 'date-fns/format';\r\n\r\nconst safeFormat = (date, pattern) => {\r\n if (!date) {\r\n return '';\r\n }\r\n return format(date, pattern);\r\n};\r\n\r\nexport const formatDate = date => {\r\n return safeFormat(date, 'MM/DD/YYYY');\r\n};\r\n\r\nexport const formatDateTime = date => {\r\n return safeFormat(date, 'MM/DD/YYYY hh:mm ZZ');\r\n};\r\n","import React, { PureComponent } from 'react';\r\nimport { Text } from '../../../../../../lib/base';\r\nimport Config from '../../../../../config';\r\nimport { formatDateTime } from '../../../../../util/format';\r\n\r\nexport default class ApplicationBuildStamp extends PureComponent {\r\n prettyDate(isoDateString) {\r\n const date = new Date(Date.parse(isoDateString));\r\n\r\n if (Object.prototype.toString.call(date) !== '[object Date]' || Number.isNaN(date.getTime())) {\r\n return '??/??/????';\r\n }\r\n\r\n return formatDateTime(date);\r\n }\r\n\r\n buildStamp() {\r\n const buildBranch = Config.getBuildBranch();\r\n const buildRevision = Config.getBuildRevision();\r\n const buildTimestamp = Config.getBuildTimestamp();\r\n return `ver: ${buildBranch}/${buildRevision} - ${this.prettyDate(buildTimestamp)}`;\r\n }\r\n\r\n render() {\r\n return {this.buildStamp()};\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\n\r\nclass TouchTarget extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n children: PropTypes.node.isRequired,\r\n\r\n onClick: PropTypes.func.isRequired,\r\n\r\n stretch: PropTypes.bool,\r\n\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Make text unselectable.\r\n */\r\n noselect: PropTypes.bool,\r\n\r\n /**\r\n * The minimum width width and height in px.\r\n */\r\n size: PropTypes.string,\r\n\r\n styles: PropTypes.object,\r\n };\r\n\r\n static defaultProps = {\r\n stretch: false,\r\n className: undefined,\r\n size: '48px',\r\n };\r\n\r\n render() {\r\n const { container } = this.props.classes;\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n display: props => (!props.stretch ? 'inline-flex' : 'flex'),\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n minHeight: props => props.size,\r\n minWidth: props => props.size,\r\n 'user-select': props => (props.noselect ? 'none' : undefined),\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(TouchTarget);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Text } from '../../../../../../../../lib/base';\r\nimport { IconClear } from '../../../../../../../components/icons';\r\nimport { COLOR_BASE_PRIMARY } from '../../../../../../../Constants';\r\nimport TouchTarget from '../../../../../../../components/touchable/TouchTarget';\r\nimport { Columns, Column } from '../../../../../../../../lib/base';\r\n\r\nclass CriteriaChip extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n label: PropTypes.string.isRequired,\r\n\r\n onRemove: PropTypes.func.isRequired,\r\n\r\n onClick: PropTypes.func.isRequired,\r\n };\r\n\r\n render() {\r\n const { container, touchTarget } = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.props.label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n borderRadius: `16px`,\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light2'],\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['dark2']}`,\r\n paddingLeft: theme.spacing.small,\r\n\r\n '&:hover': {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light3'],\r\n },\r\n },\r\n\r\n touchTarget: {\r\n minWidth: '32px',\r\n minHeight: '32px',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(CriteriaChip);\r\n","import startCase from 'lodash/startCase';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { Box, Columns } from '../../../../../../../../lib/base';\nimport {\n deselectSite,\n searchFilterCountIfNeeded,\n searchSitesIfNeeded,\n} from '../../../../../../../../store/map/map.action';\nimport { navigateToCriteria, navigateToFilters } from '../../../../../../../routing';\nimport CriteriaChip from './CriteriaChip';\n\nclass CurrentCriteriaChips extends Component {\n constructor(props) {\n super(props);\n this.handleOnAdvanceFormCriteriaRemove = this.handleOnAdvanceFormCriteriaRemove.bind(this);\n this.handleOnFiltersFormRemove = this.handleOnFiltersFormRemove.bind(this);\n this.handleOnClickAdvancedSearch = this.handleOnClickAdvancedSearch.bind(this);\n this.handleOnClearCriteria = this.handleOnClearCriteria.bind(this);\n }\n\n executeSearch(criteria) {\n this.props.dispatchSearch(criteria);\n this.props.dispatchDeselectSite();\n }\n\n /**\n * Submits the search when site attribute is removed.\n */\n handleOnAdvanceFormCriteriaRemove(event, key) {\n event.stopPropagation();\n const criteria = { ...this.props.criteria };\n delete criteria.advanced[key];\n this.executeSearch(criteria);\n }\n\n /**\n * Removes the filter and executes a new search.\n */\n handleOnFiltersFormRemove(event, filterValue) {\n event.stopPropagation();\n const criteria = this.props.criteria;\n criteria.filters = criteria.filters.filter(f => f !== filterValue);\n this.executeSearch(criteria);\n }\n\n handleOnClearCriteria() {\n const criteria = { ...this.props.criteria };\n criteria.advanced = {};\n criteria.filters = [];\n this.executeSearch(criteria);\n }\n\n hasFilterCriteria() {\n const { filters } = this.props.criteria;\n return filters && filters.length > 0;\n }\n\n hasSiteAttributeCriteria() {\n const { advanced } = this.props.criteria;\n return (\n Object.keys(advanced).filter(key => advanced[key] && advanced[key].length > 0).length > 0\n );\n }\n\n hasAdvancedCriteria() {\n return this.hasFilterCriteria() || this.hasSiteAttributeCriteria();\n }\n\n handleOnClickAdvancedSearch(type) {\n if (type === 'filter') {\n navigateToFilters(this.props);\n } else {\n navigateToCriteria(this.props);\n }\n }\n\n label(key) {\n return startCase(key).toUpperCase() + ': ' + this.props.criteria.advanced[key];\n }\n\n renderSelectedAsChips() {\n return this.props.criteria.filters.map(f => (\n \n this.handleOnClickAdvancedSearch('filter')}\n onRemove={event => this.handleOnFiltersFormRemove(event, f)}\n />\n \n ));\n }\n\n renderSiteAttributeCriteriaAsChips() {\n const { advanced } = this.props.criteria;\n\n return Object.keys(advanced)\n .filter(key => advanced[key] && advanced[key].length > 0)\n .map(key => (\n \n this.handleOnAdvanceFormCriteriaRemove(event, key)}\n />\n \n ));\n }\n\n renderAll() {\n const chips = [];\n chips.push(this.renderSiteAttributeCriteriaAsChips());\n chips.push(this.renderSelectedAsChips());\n return chips;\n }\n\n render() {\n if (!this.hasAdvancedCriteria()) return null;\n\n return (\n \n \n {this.renderAll()}\n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n criteria: { ...state.map.search.criteria },\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSearch: criteria => {\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n },\n dispatchDeselectSite: () => {\n dispatch(deselectSite());\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(CurrentCriteriaChips)\n);\n","/**\r\n * Load export data\r\n */\r\n\r\nexport const FETCH_EXPORTGROUPS_BEGIN = 'FETCH_EXPORTGROUPS_BEGIN';\r\nexport const FETCH_EXPORTGROUPS_ERROR = 'FETCH_EXPORTGROUPS_ERROR';\r\nexport const FETCH_EXPORTGROUPS_SUCCESS = 'FETCH_EXPORTGROUPS_SUCCESS';\r\n\r\nexport const FETCH_EXPORTCSV_BEGIN = 'FETCH_EXPORTCSV_BEGIN';\r\nexport const FETCH_EXPORTCSV_ERROR = 'FETCH_EXPORTCSV_ERROR';\r\nexport const FETCH_EXPORTCSV_SUCCESS = 'FETCH_EXPORTCSV_SUCCESS';\r\n","import {\r\n FETCH_EXPORTGROUPS_BEGIN,\r\n FETCH_EXPORTGROUPS_ERROR,\r\n FETCH_EXPORTGROUPS_SUCCESS,\r\n FETCH_EXPORTCSV_BEGIN,\r\n FETCH_EXPORTCSV_ERROR,\r\n FETCH_EXPORTCSV_SUCCESS,\r\n} from './export.actionType';\r\n\r\n/**\r\n *\r\n */\r\nconst api = () => window.nSITE.Api;\r\n\r\nexport function fetchExportGroupsIfNeeded() {\r\n return (dispatchEvent, getState) => {\r\n if (shouldFetchExportGroups(getState())) {\r\n return dispatchEvent(fetchExportGroups());\r\n }\r\n return undefined;\r\n };\r\n}\r\n\r\nfunction shouldFetchExportGroups(state) {\r\n return !state.exportData.exportTypeGroups.isLoading;\r\n}\r\n\r\nfunction fetchExportGroups() {\r\n return dispatch => {\r\n dispatch(fetchExportGroupsBegin());\r\n api()\r\n .exportGroups.getAll()\r\n .then(results => dispatch(fetchExportGroupsSuccess(results)))\r\n .catch(err => dispatch(fetchExportGroupsError(err.message)));\r\n };\r\n}\r\n\r\nfunction fetchExportGroupsSuccess(results) {\r\n return {\r\n type: FETCH_EXPORTGROUPS_SUCCESS,\r\n payload: { results },\r\n };\r\n}\r\n\r\nfunction fetchExportGroupsBegin() {\r\n return {\r\n type: FETCH_EXPORTGROUPS_BEGIN,\r\n };\r\n}\r\n\r\nfunction fetchExportCsvBegin(exportTypeId) {\r\n return {\r\n type: FETCH_EXPORTCSV_BEGIN,\r\n payload: exportTypeId,\r\n };\r\n}\r\n\r\nfunction fetchExportCsvError(message) {\r\n return {\r\n type: FETCH_EXPORTCSV_ERROR,\r\n payload: { error: message },\r\n };\r\n}\r\n\r\nfunction fetchExportCsvSuccess() {\r\n return {\r\n type: FETCH_EXPORTCSV_SUCCESS,\r\n };\r\n}\r\n\r\nfunction fetchExportGroupsError(message) {\r\n return {\r\n type: FETCH_EXPORTGROUPS_ERROR,\r\n payload: { error: message },\r\n };\r\n}\r\n\r\nexport function fetchCsv(exportTypeId, fileName) {\r\n return (dispatch, getState) => {\r\n dispatch(fetchExportCsvBegin(exportTypeId));\r\n api()\r\n .exportGroups.downloadCsv(getState().map, exportTypeId, fileName)\r\n .then(results => dispatch(fetchExportCsvSuccess()))\r\n .catch(err => dispatch(fetchExportCsvError(err.message)));\r\n };\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box } from '../../../lib/base';\r\nimport {\r\n COLOR_BASE_PRIMARY,\r\n COLOR_VARIANT_PRIMARY,\r\n COLOR_BASE_ORANGE,\r\n MEDIA_BREAKPOINT,\r\n} from '../../Constants';\r\nimport injectSheet from 'react-jss';\r\n\r\nclass ListItemBox extends Component {\r\n static propTypes = {\r\n ...Box.propTypes,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Child component.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * List item is active.\r\n */\r\n active: PropTypes.bool,\r\n\r\n /**\r\n * List item is in cluster select\r\n */\r\n clusterHighlight: PropTypes.bool,\r\n };\r\n\r\n render() {\r\n const { active, clusterHighlight, className, ...boxProps } = this.props;\r\n\r\n return (\r\n \r\n
{this.props.children}
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n paddingLeft: `calc(${theme.spacing.medium} - 4px)`,\r\n borderLeft: `4px solid white`,\r\n\r\n '@media screen and (min-width: 600px)': {\r\n ' &:hover': {\r\n paddingLeft: props => (props.onClick ? `calc(${theme.spacing.medium} - 4px)` : undefined),\r\n backgroundColor: props =>\r\n props.onClick ? theme.color[COLOR_BASE_PRIMARY]['light1'] : undefined,\r\n borderLeft: props =>\r\n props.onClick ? `4px solid ${theme.color[COLOR_BASE_PRIMARY]['dark3']}` : undefined,\r\n transition: 'background-color 350ms, border-left 350ms',\r\n },\r\n },\r\n },\r\n\r\n active: {\r\n paddingLeft: `calc(${theme.spacing.medium} - 4px)`,\r\n borderLeft: `4px solid ${theme.color[COLOR_BASE_PRIMARY][COLOR_VARIANT_PRIMARY]}`,\r\n\r\n '&:hover': {\r\n backgroundColor: props =>\r\n props.onClick ? theme.color[COLOR_BASE_PRIMARY]['light1'] : undefined,\r\n borderLeft: props =>\r\n props.onClick ? `4px solid ${theme.color[COLOR_BASE_PRIMARY]['dark3']}` : undefined,\r\n transition: 'background-color 350ms, border-left 350ms',\r\n },\r\n },\r\n\r\n [`@media ${MEDIA_BREAKPOINT}`]: {\r\n containerInner: {\r\n borderBottom: `1px solid #efefef`,\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(ListItemBox);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Button, Text } from '../../../../../../../lib/base';\r\nimport HeadingText from '../../../../../../components/text/HeadingText';\r\nimport { connect } from 'react-redux';\r\nimport { fetchCsv } from '../../../../../../../store/export/export.action';\r\nimport injectSheet from 'react-jss';\r\nimport Box from '../../../../../../../lib/base/layout/Box';\r\nimport { IconFileDownload } from '../../../../../../components/icons/fontawesome/icons';\r\nimport Columns from '../../../../../../../lib/base/layout/flex/Columns';\r\nimport Column from '../../../../../../../lib/base/layout/flex/Column';\r\nimport ListItemBox from '../../../../../../components/list/ListItemBox';\r\nimport { COLOR_BASE_PRIMARY, DEFAULT_TEXT_SIZE_DESCRIPTIONS } from '../../../../../../Constants';\r\n\r\nclass ExportType extends Component {\r\n static propTypes = {\r\n name: PropTypes.string.isRequired,\r\n\r\n id: PropTypes.string.isRequired,\r\n\r\n description: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n description: '',\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.downloadCsv = this.downloadCsv.bind(this);\r\n }\r\n\r\n downloadCsv() {\r\n this.props.dispatchFetchCsv(this.props.id, this.props.name);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {this.props.name}\r\n \r\n \r\n \r\n Download\r\n \r\n \r\n \r\n \r\n {this.props.description}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isLoading: state.exportData.csv.isLoading,\r\n error: state.exportData.csv.error,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n dispatchFetchCsv: (id, fileName) => {\r\n dispatch(fetchCsv(id, fileName));\r\n },\r\n };\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n marginLeft: `-${theme.spacing.medium}`,\r\n marginRight: `-${theme.spacing.medium}`,\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(injectSheet(styles)(ExportType));\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport ExportType from './ExportType';\r\n\r\nexport default class ExportGroup extends Component {\r\n static propTypes = {\r\n exportTypes: PropTypes.array.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.exportTypes.map((et, index) => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport ExportType from './ExportType';\r\nimport HeadingText from '../../../../../../components/text/HeadingText';\r\n\r\nexport default class ExportGroups extends Component {\r\n static propTypes = {\r\n exportGroups: PropTypes.array.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.exportGroups.map((ex, index) => (\r\n
\r\n {ex.name}\r\n
\r\n {ex.exportTypes.map((et, index) => (\r\n \r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box } from '../../../../../../../lib/base';\r\nimport ExportGroup from './ExportGroup';\r\nimport ExportGroups from './ExportGroups';\r\nimport Select from '../../../../../../components/form/Select';\r\nimport HeadingText from '../../../../../../components/text/HeadingText';\r\n\r\nexport default class ExportPanel extends Component {\r\n static propTypes = {\r\n /**\r\n * Export groups to display.\r\n */\r\n exportGroups: PropTypes.array.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n activeExportGroup: props.exportGroups[0],\r\n };\r\n\r\n this.handleOnChange = this.handleOnChange.bind(this);\r\n }\r\n\r\n handleOnChange(event, exportGroup) {\r\n this.setState({ activeExportGroup: exportGroup });\r\n }\r\n\r\n render() {\r\n const { activeExportGroup } = this.state;\r\n\r\n const label = choice => {\r\n return {choice.name};\r\n };\r\n\r\n let exportListSize = 0;\r\n this.props.exportGroups.forEach(element => {\r\n exportListSize += element.exportTypes.length;\r\n });\r\n const showExportSelect = exportListSize > 29;\r\n\r\n return (\r\n \r\n {showExportSelect && (\r\n \r\n choice.name}\r\n labelExtractor={choice => label(choice)}\r\n renderChoice={choice => label(choice)}\r\n />\r\n \r\n \r\n )}\r\n {!showExportSelect && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\n\r\nclass SpinnerPanel extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n };\r\n\r\n render() {\r\n const { container, centered } = this.props.classes;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%',\r\n\r\n '&:hover': {\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n centered: {\r\n flex: 1,\r\n textAlign: 'center',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SpinnerPanel);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Text } from '../../../../../../../lib/base';\r\nimport ExportPanel from './ExportPanel';\r\nimport { fetchExportGroupsIfNeeded } from '../../../../../../../store/export/export.action';\r\nimport SpinnerPanel from '../../../../../../components/spinner/SpinnerPanel';\r\n\r\nclass ExportContainer extends Component {\r\n componentDidMount() {\r\n this.props.dispatchFetchExportGroupTypes();\r\n }\r\n\r\n render() {\r\n if (this.props.isLoading || this.props.csvIsLoading) {\r\n return ;\r\n }\r\n\r\n if (this.props.error) {\r\n return {this.props.error};\r\n }\r\n\r\n if (this.props.exportGroups) {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isLoading: state.exportData.exportTypeGroups.isLoading,\r\n csvIsLoading: state.exportData.csv.isLoading,\r\n error: state.exportData.exportTypeGroups.error,\r\n exportGroups: state.exportData.exportTypeGroups.data,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n dispatchFetchExportGroupTypes: () => {\r\n dispatch(fetchExportGroupsIfNeeded());\r\n },\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ExportContainer);\r\n","import React, { Component } from 'react';\nimport { Box } from '../../../../../../../lib/base';\nimport Config from '../../../../../../config';\nimport { getAppMode } from '../../../../../../util/urlParams';\n\nexport default class HelpPanel extends Component {\n constructor(props) {\n super(props);\n this.helpRef = React.createRef();\n }\n\n componentDidMount() {\n let mode = getAppMode();\n\n fetch(Config.getApplicationBaseUrl() + `/content/help?mode=${mode.name}`)\n .then(response => response.text())\n .then(text => {\n if (this.helpRef && this.helpRef.current) {\n this.helpRef.current.innerHTML = text;\n }\n });\n }\n\n render() {\n return  ;\n }\n}\n","import React, { Component } from 'react';\r\nimport { Box, Text } from '../../../../../../../lib/base';\r\nimport connect from 'react-redux/es/connect/connect';\r\n\r\nclass InfoPanel extends Component {\r\n render() {\r\n return (\r\n \r\n {this.props.infoPanelContent}\r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n infoPanelContent: state.map.infoPanelContent,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(InfoPanel);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, Column, Columns, Text } from '../../../../../../../lib/base';\r\nimport { DEFAULT_TEXT_SIZE_DESCRIPTIONS } from '../../../../../../Constants';\r\n\r\nexport default class ArcGisLegend extends Component {\r\n static propTypes = {\r\n /**\r\n * Legend data.\r\n */\r\n legend: PropTypes.object.isRequired,\r\n };\r\n\r\n render() {\r\n const { legend } = this.props;\r\n\r\n const src = `data:${legend.contentType};base64,${legend.imageData}`;\r\n\r\n return (\r\n \r\n \r\n {legend.label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Box, Column, Columns, Text } from '../../../../../../../lib/base';\nimport { DEFAULT_TEXT_SIZE_DESCRIPTIONS } from '../../../../../../Constants';\nimport { isValidHexColor } from '../../../../../../../store/system/helper'\n\nexport default class SqlSpatialLegend extends Component {\n static propTypes = {\n /**\n * Legend data.\n */\n layer: PropTypes.object.isRequired,\n };\n\n render() {\n const { layer } = this.props;\n let canvas = document.createElement(\"CANVAS\");\n let ctx = canvas.getContext(\"2d\");\n canvas.width = 20;\n canvas.height = 20;\n let layerColor;\n if (layer.color) {\n layerColor = layer.color.indexOf(\"#\") > -1 ? layer.color : \"#\" + layer.color;\n if (!isValidHexColor(layerColor)) {\n layerColor = \"#FFFFFF\";\n }\n } else {\n return null;\n }\n ctx.fillStyle = layerColor;\n ctx.fillRect(0, 0, 20, 20);\n ctx.strokeRect(0, 0, 20, 20);\n let dataUrl = canvas.toDataURL();\n\n return (\n \n \n {layer.legendDesc}\n \n \n \n \n \n \n \n );\n }\n}\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, Column, Columns, Text } from '../../../../../../../lib/base';\r\nimport { DEFAULT_TEXT_SIZE_DESCRIPTIONS } from '../../../../../../Constants';\r\n\r\nexport default class WMSLegend extends Component {\r\n static propTypes = {\r\n /**\r\n * layer data.\r\n */\r\n layer: PropTypes.object.isRequired,\r\n };\r\n\r\n render() {\r\n const { layer } = this.props;\r\n\r\n return (\r\n \r\n \r\n {/* add a legend description */}\r\n {layer.legendDesc}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Box } from '../../../../../../../lib/base';\nimport ListItemBox from '../../../../../../components/list/ListItemBox';\nimport HeadingText from '../../../../../../components/text/HeadingText';\nimport ArcGisLegend from './ArcGisLegend';\nimport SqlSpatialLegend from './SqlSpatialLegend';\nimport WMSLegend from './WMSLegend';\n\nexport default class SelectableLayer extends Component {\n static propTypes = {\n onSelectLayer: PropTypes.func.isRequired,\n\n layer: PropTypes.object.isRequired,\n\n selected: PropTypes.bool.isRequired,\n };\n\n renderLegend(layer) {\n if (\n layer.layerType.toLowerCase() === 'arcgis' &&\n layer.legend &&\n layer.legend.length &&\n layer.legend[0].imageData\n ) {\n return layer.legend.map((legend, index) => );\n } else if (layer.layerType.toLowerCase() === 'wms') {\n return ;\n } else if (layer.layerType.toLowerCase() === \"sqlspatial\" && layer.color) {\n return ;\n } else {\n return;\n }\n }\n\n render() {\n const { layer, onSelectLayer, selected } = this.props;\n\n const title = `${selected ? 'Hide' : 'Show'} this layer on the map.`;\n\n return (\n onSelectLayer(layer)}\n active={selected}\n pTop=\"medium\"\n pBottom=\"medium\"\n >\n \n {layer.layerName}\n {this.renderLegend(layer)}\n \n \n );\n }\n}\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Text } from '../../../lib/base';\r\nimport { COLOR_BASE_PRIMARY } from '../../Constants';\r\n\r\nclass Badge extends Component {\r\n static propTypes = {\r\n /**\r\n * Badge content.\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n };\r\n\r\n render() {\r\n if (!this.props.children) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n display: 'inline-block',\r\n padding: `${theme.spacing.smaller} ${theme.spacing.small}`,\r\n borderRadius: '12px',\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['base'],\r\n color: 'white',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Badge);\r\n","import uniq from \"lodash/uniq\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Box, Button, Text } from \"../../../../../../../lib/base\";\nimport { selectBaseLayer, selectReferenceLayers } from \"../../../../../../../store/map/map.action\";\nimport Select from \"../../../../../../components/form/Select\";\nimport HeadingText from \"../../../../../../components/text/HeadingText\";\nimport {\n findAllBaseLayers,\n findAllNonBaseLayers,\n findAllNonBaseLayersByGroupName\n} from \"../../../../../../util/layers\";\nimport SelectableLayer from \"./SelectableLayer\";\nimport Columns from \"../../../../../../../lib/base/layout/flex/Columns\";\nimport Column from \"../../../../../../../lib/base/layout/flex/Column\";\nimport Badge from \"../../../../../../components/basic/Badge\";\nimport { COLOR_BASE_PRIMARY } from \"../../../../../../Constants\";\nimport { IconClear } from \"../../../../../../components/icons/fontawesome/icons\";\n\n/**\n * Provides controls to toggle map layers.\n */\nclass LayerSwitcher extends Component {\n static propTypes = {\n /**\n * Connected...\n */\n layers: PropTypes.array.isRequired,\n\n /**\n * Connected...\n */\n activeBaseLayer: PropTypes.object.isRequired,\n\n /**\n * Connected...\n */\n activeReferenceLayers: PropTypes.array.isRequired\n };\n\n static groups(props) {\n return uniq(findAllNonBaseLayers(props.layers).map(layer => layer.groupName)).sort();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (prevState.referenceLayerGroups === undefined && nextProps.layers) {\n return {\n referenceLayerGroups: LayerSwitcher.groups(nextProps)\n };\n }\n\n return null;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n referenceLayerGroupsSelected: undefined,\n referenceLayerGroups: undefined\n };\n\n this.handleOnChangeBaseLayer = this.handleOnChangeBaseLayer.bind(this);\n this.handleOnChangeReferenceLayer = this.handleOnChangeReferenceLayer.bind(this);\n this.handleOnChangeReferenceLayerGroup = this.handleOnChangeReferenceLayerGroup.bind(this);\n this.handleOnClickClear = this.handleOnClickClear.bind(this);\n }\n\n /**\n * Handler for changing the base layer, only one is active\n * at a time.\n */\n handleOnChangeBaseLayer(event, layer) {\n this.props.dispatchSelectBaseLayer(layer);\n }\n\n /**\n * Handler for selecting one or more non-base layers.\n */\n handleOnChangeReferenceLayer(layer) {\n const isLayerVisible =\n this.props.activeReferenceLayers.find(selected => selected.id === layer.id) !== undefined;\n\n if (!isLayerVisible) {\n const currentLayers = this.props.activeReferenceLayers;\n currentLayers.push(layer);\n\n this.props.dispatchSelectReferenceLayers(currentLayers);\n } else {\n const currentLayers = this.props.activeReferenceLayers.filter(l => l.id !== layer.id);\n\n this.props.dispatchSelectReferenceLayers(currentLayers);\n }\n }\n\n /**\n * Handles layer group changes.\n */\n handleOnChangeReferenceLayerGroup(event, groupName) {\n this.setState({\n referenceLayerGroupsSelected: groupName\n });\n }\n\n handleOnClickClear() {\n this.props.dispatchSelectReferenceLayers([]);\n }\n\n groupLayers() {\n return findAllNonBaseLayersByGroupName(\n this.props.layers,\n this.state.referenceLayerGroupsSelected\n );\n }\n\n choiceLabel(groupName) {\n const count = this.props.activeReferenceLayers.filter(layer => layer.groupName === groupName)\n .length;\n\n if (count > 0) {\n return (\n
\n \n \n {groupName}\n \n \n \n {count.toLocaleString()}\n \n \n \n
\n );\n }\n\n return {groupName};\n }\n\n render() {\n return (\n \n \n \n \n Base Layer\n \n\n choice.id}\n labelExtractor={choice => choice.layerName}\n renderChoice={choice =>
{choice.layerName}
}\n />\n
\n\n \n \n Map Layers\n \n\n \n choice}\n labelExtractor={choice => this.choiceLabel(choice)}\n renderChoice={choice => this.choiceLabel(choice)}\n />\n \n\n {this.props.activeReferenceLayers.length > 0 && (\n \n \n Clear\n \n \n )}\n\n
\n {this.groupLayers().map(layer => {\n const isSelected =\n this.props.activeReferenceLayers.find(l => l.id === layer.id) !== undefined;\n\n return (\n \n \n \n );\n })}\n
\n
\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n layers: state.system.layers.data,\n activeBaseLayer: state.map.activeBaseLayer,\n activeReferenceLayers: state.map.activeReferenceLayers,\n mode: state.system.mode\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSelectBaseLayer: layer => {\n dispatch(selectBaseLayer(layer));\n },\n\n dispatchSelectReferenceLayers: currentLayers => {\n dispatch(selectReferenceLayers(currentLayers));\n }\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LayerSwitcher);\n","/**\r\n * Math.round setup for the conversion functions.\r\n */\r\nconst PRECISION = 2;\r\nconst FACTOR = Math.pow(10, PRECISION);\r\n\r\nconst round = number => {\r\n return Math.round(number * FACTOR) / FACTOR;\r\n};\r\n\r\n/**\r\n * Functions to convert meters squared to:\r\n *\r\n * 'miles', 'feet', 'kilometers', 'meters', 'acres'\r\n *\r\n */\r\nconst metersSquaredToSquareMiles = meters => round(meters * 0.0000003861);\r\nconst metersSquaredToSquareFoot = meters => round(meters * 10.76389379999997864);\r\nconst metersSquaredToSquareKilometer = meters => round(meters / 1000000);\r\nconst metersSquaredToAcres = meters => round(meters * 0.00024711);\r\n\r\n/**\r\n * Functions to convert meters length to:\r\n *\r\n * 'miles', 'feet', 'kilometers', 'meters', 'acres'\r\n */\r\nconst metersToMiles = meters => round(meters * 0.00062137);\r\nconst metersToFeet = meters => round(meters * 3.2808);\r\nconst metersToKilometers = meters => round(meters / 1000);\r\n\r\n/**\r\n * An object literal of units organized for type of measurement. Each unit has a label and convert\r\n * property used to convert from meters.\r\n */\r\nexport const units = {\r\n area: {\r\n mile: {\r\n convert: metersSquaredToSquareMiles,\r\n label: 'miles²',\r\n },\r\n feet: {\r\n convert: metersSquaredToSquareFoot,\r\n label: 'feet²',\r\n },\r\n meter: {\r\n convert: m => round(m),\r\n label: 'meters²',\r\n },\r\n kilometer: {\r\n convert: metersSquaredToSquareKilometer,\r\n label: 'kilometers²',\r\n },\r\n acre: {\r\n convert: metersSquaredToAcres,\r\n label: 'acres',\r\n },\r\n },\r\n length: {\r\n mile: {\r\n convert: metersToMiles,\r\n label: 'miles',\r\n },\r\n feet: {\r\n convert: metersToFeet,\r\n label: 'feet',\r\n },\r\n meter: {\r\n convert: m => round(m),\r\n label: 'meters',\r\n },\r\n kilometer: {\r\n convert: metersToKilometers,\r\n label: 'kilometers',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Helper to covert a 'units' object literal to an array.\r\n */\r\nconst unitsToArray = units =>\r\n Object.keys(units).map(k => ({\r\n id: k,\r\n ...units[k],\r\n }));\r\n\r\n/**\r\n * Returns an array of area type units.\r\n */\r\nexport const areaUnitsAsArray = () => unitsToArray(units.area);\r\n\r\n/**\r\n * Returns an array of length type units.\r\n */\r\nexport const lengthUnitsAsArray = () => unitsToArray(units.length);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Box, Button, Column, Columns, Paragraph } from '../../../../../../../lib/base';\r\nimport {\r\n TOOL_TYPE_CIRCLE,\r\n TOOL_TYPE_LINE,\r\n TOOL_TYPE_POLYGON,\r\n} from '../../../../../../../lib/map/core/measure/MeasureTool';\r\nimport {\r\n areaUnitsAsArray,\r\n lengthUnitsAsArray,\r\n} from '../../../../../../../lib/map/core/measure/uom';\r\nimport { selectMeasureTool } from '../../../../../../../store/map/map.action';\r\nimport HeadingText from '../../../../../../components/text/HeadingText';\r\nimport {\r\n COLOR_BASE_PRIMARY,\r\n COLOR_VARIANT_PRIMARY,\r\n DEFAULT_TEXT_SIZE_DESCRIPTIONS,\r\n} from '../../../../../../Constants';\r\nimport Select from '../../../../../../components/form/Select';\r\nimport { IconErase } from '../../../../../../components/icons/fontawesome/icons';\r\n\r\nclass MeasurePanel extends Component {\r\n static propTypes = {\r\n /**\r\n * The active drawing tool.\r\n */\r\n activeMeasureTool: PropTypes.string,\r\n\r\n /**\r\n * Called when measurements are cleared.\r\n */\r\n onClickClearMeasurements: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Called when unit selection changes.\r\n */\r\n onUnitChange: PropTypes.func.isRequired,\r\n };\r\n\r\n componentWillUnmount() {\r\n const dispatchSelectTool = () => this.props.dispatchSelectMeasureTool();\r\n dispatchSelectTool(undefined);\r\n }\r\n\r\n static defaultProps = {\r\n children: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n unit: undefined,\r\n unitChoices: areaUnitsAsArray(),\r\n };\r\n\r\n this.handleOnClickLine = this.handleOnClickLine.bind(this);\r\n this.handleOnClickCircle = this.handleOnClickCircle.bind(this);\r\n this.handleOnClickPolygon = this.handleOnClickPolygon.bind(this);\r\n this.handleOnClickClearMeasurements = this.handleOnClickClearMeasurements.bind(this);\r\n this.handleOnChangeUnit = this.handleOnChangeUnit.bind(this);\r\n }\r\n\r\n handleOnClickLine(event) {\r\n this.handleOnClickTool(event, TOOL_TYPE_LINE);\r\n }\r\n\r\n handleOnClickCircle(event, turnOn) {\r\n this.handleOnClickTool(event, TOOL_TYPE_CIRCLE);\r\n }\r\n\r\n handleOnClickPolygon(event, turnOn) {\r\n this.handleOnClickTool(event, TOOL_TYPE_POLYGON);\r\n }\r\n\r\n handleOnClickTool(event, tool) {\r\n const dispatchSelectTool = tool => this.props.dispatchSelectMeasureTool(tool);\r\n\r\n const turnOff = tool === this.props.activeMeasureTool;\r\n\r\n if (turnOff) {\r\n dispatchSelectTool(undefined);\r\n this.updateUnitsSelect(event, undefined);\r\n } else {\r\n dispatchSelectTool(tool);\r\n this.updateUnitsSelect(event, tool);\r\n }\r\n }\r\n\r\n handleOnClickClearMeasurements(event) {\r\n this.props.onClickClearMeasurements(event);\r\n // turn off measuring tool\r\n const dispatchSelectTool = () => this.props.dispatchSelectMeasureTool();\r\n dispatchSelectTool(undefined);\r\n this.updateUnitsSelect(event, undefined);\r\n }\r\n\r\n isPressed(tool) {\r\n return this.props.activeMeasureTool === tool;\r\n }\r\n\r\n handleOnChangeUnit(event, choice, index) {\r\n this.setState({ unit: choice });\r\n if (this.props.onUnitChange) {\r\n this.props.onUnitChange(event, choice);\r\n }\r\n }\r\n\r\n updateUnitsSelect(event, tool) {\r\n let isUnitsSelectable;\r\n let unitChoices;\r\n let unit = this.state.unit;\r\n\r\n switch (tool) {\r\n case TOOL_TYPE_LINE:\r\n isUnitsSelectable = true;\r\n unitChoices = lengthUnitsAsArray();\r\n break;\r\n\r\n case TOOL_TYPE_POLYGON:\r\n case TOOL_TYPE_CIRCLE:\r\n isUnitsSelectable = true;\r\n unitChoices = areaUnitsAsArray();\r\n break;\r\n\r\n default:\r\n isUnitsSelectable = false;\r\n break;\r\n }\r\n\r\n if (!this.state.unit) {\r\n unit = unitChoices[0];\r\n } else if (\r\n unitChoices &&\r\n unitChoices.find(c => c.label === this.state.unit.label) === undefined\r\n ) {\r\n unit = unitChoices[0];\r\n }\r\n\r\n if (unit !== this.state.unit) {\r\n this.props.onUnitChange(event, unit);\r\n }\r\n\r\n this.setState({\r\n isUnitsSelectable,\r\n unitChoices,\r\n unit,\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Measure Tool\r\n \r\n\r\n \r\n Select the line, circle, or polygon tool below and then click the map to measure your\r\n first point - double-click to complete the measurement.\r\n \r\n\r\n \r\n \r\n this.handleOnClickLine(e)}\r\n color={COLOR_BASE_PRIMARY}\r\n colorVariant={COLOR_VARIANT_PRIMARY}\r\n pressed={this.isPressed(TOOL_TYPE_LINE)}\r\n >\r\n Line\r\n \r\n \r\n \r\n this.handleOnClickCircle(e)}\r\n color={COLOR_BASE_PRIMARY}\r\n colorVariant={COLOR_VARIANT_PRIMARY}\r\n pressed={this.isPressed(TOOL_TYPE_CIRCLE)}\r\n >\r\n Circle\r\n \r\n \r\n \r\n this.handleOnClickPolygon(e)}\r\n color={COLOR_BASE_PRIMARY}\r\n colorVariant={COLOR_VARIANT_PRIMARY}\r\n pressed={this.isPressed(TOOL_TYPE_POLYGON)}\r\n >\r\n Polygon\r\n \r\n \r\n \r\n\r\n {this.state.isUnitsSelectable && (\r\n \r\n choice.id}\r\n labelExtractor={choice => choice.label}\r\n renderChoice={choice =>
{choice.label}
}\r\n />\r\n
\r\n )}\r\n \r\n \r\n \r\n Clear Measurements\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n activeMeasureTool: state.map.activeMeasureTool,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n dispatchSelectMeasureTool: tool => {\r\n dispatch(selectMeasureTool(tool));\r\n },\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(MeasurePanel);\r\n","import React, { Component } from 'react';\r\nimport { Box, Text } from '../../../../../../../lib/base';\r\nimport { IconEmptyResults } from '../../../../../../components/icons/fontawesome/icons';\r\nimport { COLOR_BASE_PRIMARY, DEFAULT_TEXT_SIZE_DESCRIPTIONS } from '../../../../../../Constants';\r\n\r\nexport default class EmptySiteListPanel extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n Sorry, we couldn't find any results matching your search criteria.\r\n \r\n \r\n \r\n \r\n Try zooming out on the map or updating your search criteria to be less restrictive.\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","/**\n * Fetch search keys advanced search.\n */\nexport const FETCH_SEARCH_KEYS_BEGIN = 'FETCH_SEARCH_KEYS_BEGIN';\nexport const FETCH_SEARCH_KEYS_SUCCESS = 'FETCH_SEARCH_KEYS_SUCCESS';\nexport const FETCH_SEARCH_KEYS_ERROR = 'FETCH_SEARCH_KEYS_ERROR';\n/**\n * Geocode\n */\nexport const FETCH_GEOCODE_ADDRESS_BEGIN = 'FETCH_GEOCODE_ADDRESS_BEGIN';\nexport const FETCH_GEOCODE_ADDRESS_SUCCESS = 'FETCH_GEOCODE_ADDRESS_SUCCESS';\nexport const FETCH_GEOCODE_ADDRESS_ERROR = 'FETCH_GEOCODE_ADDRESS_ERROR';\n/**\n * Fetch search keys advanced search.\n */\nexport const FETCH_FILTERS_BEGIN = 'FETCH_FILTERS_BEGIN';\nexport const FETCH_FILTERS_SUCCESS = 'FETCH_FILTERS_SUCCESS';\nexport const FETCH_FILTERS_ERROR = 'FETCH_FILTERS_ERROR';\n/**\n * Clear search geocode object\n */\nexport const CLEAR_SEARCH_GEOCODE = 'CLEAR_SEARCH_GEOCODE';\nexport const CLEAR_SEARCH_GEOCODE_LOCAL = 'CLEAR_SEARCH_GEOCODE_LOCAL';\n","import {\n CLEAR_SEARCH_GEOCODE,\n CLEAR_SEARCH_GEOCODE_LOCAL,\n FETCH_FILTERS_BEGIN,\n FETCH_FILTERS_ERROR,\n FETCH_FILTERS_SUCCESS,\n FETCH_GEOCODE_ADDRESS_BEGIN,\n FETCH_GEOCODE_ADDRESS_ERROR,\n FETCH_GEOCODE_ADDRESS_SUCCESS,\n FETCH_SEARCH_KEYS_BEGIN,\n FETCH_SEARCH_KEYS_ERROR,\n FETCH_SEARCH_KEYS_SUCCESS,\n} from './search.actionType';\n\n/**\n * Needs to be function in order to delay access. When the code intially loads window.nSITE.Api is\n * undefined.\n */\nconst api = () => window.nSITE.Api;\n\nexport function clearSearchGeocode() {\n return {\n type: CLEAR_SEARCH_GEOCODE,\n };\n}\n\nexport function clearSearchGeocodeLocal() {\n return {\n type: CLEAR_SEARCH_GEOCODE_LOCAL\n };\n}\n\n/**\n * //////////////////////////////////////////////////////\n * ////\n * //// Fetch all search keys\n * ////\n * //////////////////////////////////////////////////////\n */\nexport function fetchSearchKeysIfNeeded() {\n return (dispatch, getState) => {\n if (shouldFetchSearchKeys(getState())) {\n return dispatch(fetchSearchKeys());\n }\n return undefined;\n };\n}\n\nfunction shouldFetchSearchKeys(state) {\n return !state.search.searchKeys.isFetching;\n}\n\nfunction fetchSearchKeys() {\n return dispatch => {\n dispatch(fetchSearchKeysBegin());\n api()\n .searchKey.getAll()\n .then(results => dispatch(fetchSearchKeysSuccess(results)))\n .catch(err => dispatch(fetchSearchKeysError(err.message)));\n };\n}\n\nfunction fetchSearchKeysBegin() {\n return {\n type: FETCH_SEARCH_KEYS_BEGIN,\n };\n}\n\nfunction fetchSearchKeysSuccess(results) {\n return {\n type: FETCH_SEARCH_KEYS_SUCCESS,\n payload: { results },\n };\n}\n\nfunction fetchSearchKeysError(message) {\n return {\n type: FETCH_SEARCH_KEYS_ERROR,\n payload: { error: message },\n };\n}\n\n/**\n * //////////////////////////////////////////////////////\n * ////\n * //// Fetch all filters\n * ////\n * //////////////////////////////////////////////////////\n */\n\nexport function fetchFiltersIfNeeded() {\n return (dispatch, getState) => {\n if (shouldFetchFilters(getState())) {\n return dispatch(fetchFilters());\n }\n return undefined;\n };\n}\n\nfunction shouldFetchFilters(state) {\n return !state.search.filters.isFetching;\n}\n\nfunction fetchFilters() {\n return dispatch => {\n dispatch(fetchFiltersBegin());\n api()\n .filter.getAll()\n .then(results => dispatch(fetchFiltersSuccess(results)))\n .catch(err => dispatch(fetchFiltersError(err.message)));\n };\n}\n\nfunction fetchFiltersBegin() {\n return {\n type: FETCH_FILTERS_BEGIN,\n };\n}\n\nfunction fetchFiltersSuccess(results) {\n return {\n type: FETCH_FILTERS_SUCCESS,\n payload: { results },\n };\n}\n\nfunction fetchFiltersError(message) {\n return {\n type: FETCH_FILTERS_ERROR,\n payload: { error: message },\n };\n}\n\n/**\n * //////////////////////////////////////////////////////\n * ////\n * //// Geocode Address\n * ////\n * //////////////////////////////////////////////////////\n */\n\nexport function geocodeAddressIfNeeded(address) {\n return (dispatch, getState) => {\n const state = getState();\n if (shouldSuggest(state)) {\n return dispatch(geocodeAddress(address, state.map.myLocation));\n }\n return undefined;\n };\n}\n\nfunction shouldSuggest(state) {\n return !state.search.geocode.isFetching;\n}\n\nfunction geocodeAddress(address, myLocation) {\n return dispatch => {\n dispatch(geocodeAddressBegin(address));\n\n api()\n .geocode.address(address, myLocation)\n .then(results => {\n dispatch(geocodeAddressSuccess(results));\n })\n .catch(err => {\n dispatch(geocodeAddressError(err.message));\n });\n };\n}\n\nfunction geocodeAddressBegin(address) {\n return {\n type: FETCH_GEOCODE_ADDRESS_BEGIN,\n payload: {\n address,\n },\n };\n}\n\nfunction geocodeAddressSuccess(results) {\n return {\n type: FETCH_GEOCODE_ADDRESS_SUCCESS,\n payload: {\n results,\n },\n };\n}\n\nfunction geocodeAddressError(message) {\n return {\n type: FETCH_GEOCODE_ADDRESS_ERROR,\n payload: {\n error: message,\n },\n };\n}\n","import isEmpty from \"lodash/isEmpty\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router\";\nimport { Box, Column, Columns, Text } from \"../../../../../../../lib/base\";\nimport { jssColorLookup } from \"../../../../../../../lib/base/util/jss\";\nimport { toWebMercatorExtent } from \"../../../../../../../lib/map/core/transfomer\";\nimport {\n resetSearchInput,\n searchFilterCountIfNeeded,\n searchSitesIfNeeded,\n zoomToExtent\n} from \"../../../../../../../store/map/map.action\";\nimport { clearSearchGeocode } from \"../../../../../../../store/search/search.action\";\nimport { IconClear, IconMapMarker } from \"../../../../../../components/icons\";\nimport {\n COLOR_BASE_PRIMARY,\n COLOR_ICON_ON_LIGHT,\n COLOR_VARIANT_ICON_ON_LIGHT\n} from \"../../../../../../Constants\";\nimport { navigateToResultsDirect } from \"../../../../../../routing\";\n\nclass GeocodeAddressResult extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Handle geocode result click.\n */\n dispatchClickGeocodeResult: PropTypes.func.isRequired,\n\n /**\n * Handle clearing of geocode result.\n */\n dispatchClearGeocodeResult: PropTypes.func.isRequired,\n\n /**\n * The search criteria.\n */\n criteria: PropTypes.object,\n\n /**\n * The geocode result.\n */\n result: PropTypes.object\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.handleOnClickResult = this.handleOnClickResult.bind(this);\n this.handleOnClickClear = this.handleOnClickClear.bind(this);\n }\n\n handleOnClickResult(event, extent) {\n navigateToResultsDirect(this.props);\n const criteria = { ...this.props.criteria, term: \"\" };\n this.props.dispatchClickGeocodeResult(toWebMercatorExtent(extent), criteria);\n }\n\n handleOnClickClear(e) {\n e.stopPropagation();\n const criteria = { ...this.props.criteria, term: \"\" };\n this.props.dispatchClearGeocodeResult(criteria);\n }\n\n render() {\n if (isEmpty(this.props.result)) return null;\n\n const doOnClick = e =>\n this.handleOnClickResult(e, this.props.result.extent, this.props.result.point);\n\n return (\n \n \n \n \n Zoom To:\n \n \n \n \n \n \n \n \n \n {this.props.result.name}\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst styles = theme => ({\n hover: {\n \"&:hover\": {\n cursor: \"pointer\",\n backgroundColor: jssColorLookup(theme, \"blue\", \"light1\")\n }\n }\n});\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n result: state.search.geocode.data,\n zoom: state.map.zoom\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchClickGeocodeResult: (extent, criteria) => {\n dispatch(zoomToExtent(extent));\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n },\n dispatchClearGeocodeResult: () => {\n dispatch(clearSearchGeocode());\n }\n };\n}\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(injectSheet(styles)(GeocodeAddressResult))\n);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, Text } from '../../../../lib/base';\r\nimport HeadingText from '../../text/HeadingText';\r\n\r\nexport default class SiteNameAndAddress extends Component {\r\n static propTypes = {\r\n /**\r\n * Site to display.\r\n */\r\n site: PropTypes.shape({\r\n siteName: PropTypes.string,\r\n address: PropTypes.string,\r\n city: PropTypes.string,\r\n zip: PropTypes.string,\r\n state: PropTypes.string,\r\n }).isRequired,\r\n };\r\n\r\n render() {\r\n if (!this.props.site) {\r\n return null;\r\n }\r\n\r\n const { siteName, address, city, state, zip } = this.props.site;\r\n\r\n return (\r\n \r\n \r\n {siteName}\r\n \r\n \r\n {address}\r\n \r\n \r\n \r\n {city} {state} {zip}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport { Box, Text } from '../../../../../../../lib/base';\r\nimport Column from '../../../../../../../lib/base/layout/flex/Column';\r\nimport Columns from '../../../../../../../lib/base/layout/flex/Columns';\r\nimport {\r\n IconChemical,\r\n IconCME,\r\n IconDocument,\r\n IconNoLocation,\r\n} from '../../../../../../components/icons/fontawesome/icons';\r\nimport ListItemBox from '../../../../../../components/list/ListItemBox';\r\nimport SiteNameAndAddress from '../../../../../../components/profile/header/SiteNameAndAddress';\r\n\r\nexport default class SiteListItem extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * The site list item.\r\n */\r\n site: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Called when site item is clicked.\r\n */\r\n onClickSite: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Is site list item selected?\r\n */\r\n isSelected: PropTypes.bool.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleOnClickSite = this.handleOnClickSite.bind(this);\r\n }\r\n\r\n handleOnClickSite() {\r\n this.props.onClickSite(this.props.site);\r\n }\r\n\r\n render() {\r\n const { site, isSelected } = this.props;\r\n\r\n const isLocationLess =\r\n (site.latitude === null && site.longitude === null) ||\r\n (site.latitude === 0 && site.longitude === 0);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {site.hasCme && (\r\n \r\n \r\n \r\n )}\r\n {site.hasDocument && (\r\n \r\n \r\n \r\n )}\r\n {site.hasChemical && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {isLocationLess && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n No location, not seen on the map.\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import debounce from \"lodash/debounce\";\nimport PropTypes from \"prop-types\";\nimport React, { Component, Fragment } from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport { Box } from \"../../../../../../../lib/base\";\nimport Button from \"../../../../../../../lib/base/button/Button\";\nimport {\n searchFilterCountIfNeeded,\n searchSitesIfNeeded,\n skipMapMoveSearchOnce,\n zoomToCenter\n} from \"../../../../../../../store/map/map.action\";\nimport { IconSpinner } from \"../../../../../../components/icons/fontawesome/icons\";\nimport { COLOR_BASE_PRIMARY, SEARCH_DELAY_TIME_MS } from \"../../../../../../Constants\";\nimport {\n navigateCloseSubPanel,\n navigateToDetail,\n navigateToDetailTab,\n navigateToSummary\n} from \"../../../../../../routing\";\nimport { isSmallScreen } from \"../../../../../../util/browser\";\nimport EmptySiteListPanel from \"./EmptySiteListPanel\";\nimport GeocodeAddressResult from \"./GeocodeAddressResult\";\nimport SiteListItem from \"./SiteListItem\";\n\nclass SitesListPanel extends Component {\n static propTypes = {\n /**\n * Sites.\n */\n sites: PropTypes.array,\n\n /**\n * Selected site.\n */\n selected: PropTypes.object,\n\n /**\n * Count for all sites\n */\n count: PropTypes.number,\n\n /**\n * Zoom level\n */\n zoom: PropTypes.number,\n\n /**\n * get selected cluster site list to highlight left hand results\n */\n selectedClusterSiteList: PropTypes.array,\n\n /**\n * Flag to go directly to details, instead of summary panel.\n */\n isDirectToDetail: PropTypes.bool.isRequired,\n dispatchZoomToCenter: PropTypes.func,\n dispatchSkipMapMoveSearchOnce: PropTypes.func\n };\n\n static defaultProps = {\n sites: undefined,\n count: undefined,\n selected: undefined,\n isDirectToDetail: false\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnLoadMoreSites = this.handleOnLoadMoreSites.bind(this);\n this.handleOnClickSite = this.handleOnClickSite.bind(this);\n\n this.dispatchSearchSitesDebounced = debounce(\n this.props.dispatchSearchSites,\n SEARCH_DELAY_TIME_MS\n );\n }\n\n handleOnLoadMoreSites() {\n this.dispatchSearchSitesDebounced(this.props.criteria, true);\n navigateCloseSubPanel(this.props);\n }\n\n handleOnClickSite(site) {\n if (this.isSiteInView(site)) {\n navigateCloseSubPanel(this.props);\n } else {\n const { params } = this.props.match;\n if (this.props.isDirectToDetail && params.subPanel === undefined) {\n navigateToDetail(this.props, site.sourceIdentifier);\n } else if (this.isNavigateToSummary(params)) {\n navigateToSummary(this.props, site.sourceIdentifier);\n } else if (params.tab !== undefined) {\n navigateToDetailTab(this.props, site.sourceIdentifier, params.tab);\n } else {\n navigateToDetail(this.props, site.sourceIdentifier);\n }\n\n if (site.latitude != null && site.longitude != null) {\n if (!isSmallScreen()) {\n this.props.dispatchSkipMapMoveSearchOnce();\n this.props.dispatchZoomToCenter(site, this.props.zoom);\n }\n }\n }\n }\n\n isNavigateToSummary(params) {\n return (\n params.subPanel === \"summary\" ||\n params.subPanel === \"criteria\" ||\n params.subPanel === \"filters\" ||\n params.subPanel === undefined\n );\n }\n\n isSiteInView(site) {\n const { params } = this.props.match;\n return site.sourceIdentifier === params.id;\n }\n\n isMoreSitesToFetch() {\n return this.props.siteCount < this.props.count;\n }\n\n render() {\n if (!this.props.sites) {\n return null;\n }\n\n if (this.props.sites.length === 0) {\n return (\n \n \n \n \n );\n }\n\n return (\n \n \n\n {/*TODO Move into redux action function*/}\n\n {this.props.selectedClusterSiteList &&\n this.props.sites.forEach(site => {\n let selectedSite = this.props.selectedClusterSiteList.find(selectedSite => {\n return selectedSite.sourceIdentifier === site.sourceIdentifier;\n });\n\n if (selectedSite) {\n selectedSite.isInSelectedCluster = true;\n }\n })}\n\n {this.props.sites.map(site => (\n \n ))}\n\n {this.isMoreSitesToFetch() && (\n \n \n \n )}\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n zoom: state.map.zoom,\n criteria: state.map.search.criteria,\n isFetching: state.map.search.isFetching,\n sites: state.map.search.sites,\n count: state.map.search.count,\n siteCount: state.map.search.sites && state.map.search.sites.length,\n selectedClusterSiteList: state.map.search.selectedClusterSiteList\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSkipMapMoveSearchOnce: () => {\n dispatch(skipMapMoveSearchOnce(true));\n },\n\n dispatchZoomToCenter: (site, zoom) => {\n if (\n site.feature &&\n Math.abs(site.feature.coordinates[0]) > 1 &&\n Math.abs(site.feature.coordinates[1]) > 1\n ) {\n dispatch(zoomToCenter(site.feature.coordinates, zoom));\n }\n },\n dispatchSearchSites: (criteria, shouldTakeWithoutClustering) => {\n /**\n * Incrementally grab additional sites every time the user scrolls to the bottom of the site\n * list (reset on map move)\n */\n if (shouldTakeWithoutClustering && criteria.takeWithoutClustering < 800) {\n criteria.takeWithoutClustering += 100;\n }\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n }\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(SitesListPanel)\n);\n","import PropTypes from 'prop-types';\nimport React, { Component, Fragment } from 'react';\nimport injectSheet from 'react-jss';\nimport { Redirect, withRouter } from 'react-router-dom';\nimport { animated, config, Transition } from 'react-spring/renderprops';\nimport { Box, Row, Rows } from '../../../../../lib/base';\nimport { Z_INDEX_SEARCH_BAR } from '../../../../Constants';\nimport ApplicationBuildStamp from '../shared/panel/ApplicationBuildStamp';\nimport CurrentCriteriaChips from '../shared/panel/criteria/chip/CurrentCriteriaChips';\nimport ExportContainer from '../shared/panel/export/ExportContainer';\nimport HelpPanel from '../shared/panel/help/HelpPanel';\nimport InfoPanel from '../shared/panel/help/InfoPanel';\nimport LayerSwitcher from '../shared/panel/layers/LayerSwitcher';\nimport MeasurePanel from '../shared/panel/measure/MeasurePanel';\nimport SitesListPanel from '../shared/panel/results/SitesListPanel';\n\nclass DesktopOmniContent extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Called clear measurements is clicked.\n */\n onClickClearMeasurements: PropTypes.func.isRequired,\n\n /**\n * Called when measure tool unit selection changes.\n */\n onUnitChange: PropTypes.func.isRequired,\n };\n\n panels = {\n results: (\n \n \n \n \n ),\n\n export: ,\n\n help: (\n \n \n \n \n \n \n \n \n \n \n \n \n ),\n info: (\n \n \n \n ),\n layers: ,\n measure: (\n \n ),\n };\n\n springConfig = { ...config.stiff, velocity: 9, clamp: true };\n\n render() {\n const { container } = this.props.classes;\n\n const params = this.props.match.params;\n\n if (params.panel === undefined) {\n return ;\n }\n\n return (\n
\n \n {activePanel => style => (\n \n {this.panels[activePanel]}\n \n )}\n \n
\n );\n }\n}\n\nconst styles = () => ({\n container: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n zIndex: Z_INDEX_SEARCH_BAR - 1,\n },\n\n panel: {\n height: '100%',\n overflowY: 'auto',\n backgroundColor: 'white',\n },\n});\n\nexport default withRouter(injectSheet(styles)(DesktopOmniContent));\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router';\nimport { IconFileDownload } from '../../../../../../../components/icons/fontawesome/icons';\nimport { navigateToExport, navigateToResults } from '../../../../../../../routing';\n\nimport ToolbarButton from './ToolbarButton';\n\nclass ExportButton extends PureComponent {\n constructor(props) {\n super(props);\n this.handleOnClickExportButton = this.handleOnClickExportButton.bind(this);\n }\n\n handleOnClickExportButton() {\n if (this.isPressed()) {\n navigateToResults(this.props);\n } else {\n navigateToExport(this.props);\n }\n }\n\n isPressed() {\n const { params } = this.props.match;\n return params.panel === 'export';\n }\n\n render() {\n return (\n }\n />\n );\n }\n}\n\nexport default withRouter(ExportButton);\n","/**\r\n * A dto object for site search criteria\r\n */\r\nexport default class SiteSearchCriteria {\r\n constructor(criteria = {}) {\r\n this.advanced = criteria.advanced || {};\r\n this.filters = criteria.filters || [];\r\n this.boundingBox = criteria.bbox;\r\n this.type = criteria.type || 'search';\r\n this.term = criteria.term || '';\r\n this.discardLocationlessFeatures =\r\n criteria.discardLocationlessFeatures === undefined\r\n ? true\r\n : criteria.discardLocationlessFeatures;\r\n this.screenWidth = document.documentElement.clientWidth;\r\n this.screenHeight = document.documentElement.clientHeight;\r\n this.takeWithoutClustering = criteria.takeWithoutClustering || null;\r\n this.zoom = criteria.zoom || null;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport SiteSearchCriteria from '../../../../../../../../api/impl/SiteSearchCriteria';\nimport Link from '../../../../../../../../lib/base/text/Link';\nimport {\n deselectSite,\n resetMap,\n searchFilterCountIfNeeded,\n searchSitesIfNeeded,\n} from '../../../../../../../../store/map/map.action';\nimport { clearSearchGeocode } from '../../../../../../../../store/search/search.action';\nimport { IconHome } from '../../../../../../../components/icons';\nimport { navigateToMapHome, navigateToResultsDirect } from '../../../../../../../routing';\nimport { isDesktopScreen, isSmallScreen } from '../../../../../../../util/browser';\nimport ToolbarButton from './ToolbarButton';\n\nclass HomeButton extends Component {\n static propTypes = {\n /**\n * Circular button?\n */\n circular: PropTypes.bool,\n\n /**\n * Inverse the colors of the button.\n */\n inverse: PropTypes.bool,\n\n /**\n * Button shows only text\n */\n textOnly: PropTypes.bool,\n\n /**\n * Resets the map.\n */\n dispatchResetMap: PropTypes.func,\n };\n\n static defaultProps = {\n inverse: false,\n textOnly: false,\n };\n\n constructor(props) {\n super(props);\n this.handleOnClick = this.handleOnClick.bind(this);\n }\n\n handleOnClick() {\n const criteria = new SiteSearchCriteria({\n bbox: this.props.criteria.boundingBox,\n });\n this.props.dispatchResetMap(criteria);\n\n if (isDesktopScreen()) {\n navigateToResultsDirect(this.props);\n } else if (isSmallScreen()) {\n navigateToMapHome(this.props);\n }\n }\n\n render() {\n if (this.props.textOnly) {\n return (\n \n Home\n \n );\n }\n\n return (\n }\n />\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchResetMap: criteria => {\n dispatch(clearSearchGeocode());\n dispatch(deselectSite());\n dispatch(resetMap());\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(HomeButton)\n);\n","import PropTypes from \"prop-types\";\nimport React, { PureComponent } from \"react\";\nimport { withRouter } from \"react-router\";\nimport { IconMapLayers } from \"../../../../../../../components/icons\";\nimport { navigateToLayers, navigateToResults } from \"../../../../../../../routing\";\nimport ToolbarButton from \"./ToolbarButton\";\n\nclass MapLayersButton extends PureComponent {\n static propTypes = {\n /**\n * Circular button?\n */\n circular: PropTypes.bool,\n match: PropTypes.object\n };\n\n static defaultProps = {\n circular: false\n };\n\n constructor(props) {\n super(props);\n this.handleOnClick = this.handleOnClick.bind(this);\n }\n\n handleOnClick() {\n if (this.isPressed()) {\n navigateToResults(this.props);\n } else {\n navigateToLayers(this.props);\n }\n }\n\n isPressed() {\n const { params } = this.props.match;\n return params.panel === \"layers\";\n }\n\n render() {\n return (\n }\n />\n );\n }\n}\n\nexport default withRouter(MapLayersButton);\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router';\nimport { IconRuler } from '../../../../../../../components/icons';\nimport { navigateToMeasure, navigateToResults } from '../../../../../../../routing';\nimport ToolbarButton from './ToolbarButton';\n\nclass MeasureButton extends PureComponent {\n constructor(props) {\n super(props);\n this.handleOnClickMeasureButton = this.handleOnClickMeasureButton.bind(this);\n }\n\n handleOnClickMeasureButton() {\n if (this.isPressed()) {\n navigateToResults(this.props);\n } else {\n navigateToMeasure(this.props);\n }\n }\n\n isPressed() {\n const { params } = this.props.match;\n return params.panel === 'measure';\n }\n\n render() {\n return (\n }\n />\n );\n }\n}\n\nexport default withRouter(MeasureButton);\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { toWebMercatorCenter } from '../../../../../../../../lib/map/core/transfomer';\nimport { setMyLocationCoords, zoomToCenter } from '../../../../../../../../store/map/map.action';\nimport { reportError } from '../../../../../../../../store/system/system.action';\nimport { IconMyLocation } from '../../../../../../../components/icons';\nimport ToolbarButton from './ToolbarButton';\nimport Link from '../../../../../../../../lib/base/text/Link';\nimport { REGEX_USER_DENIED_GEOLOCATION_ERR_MESSAGE } from '../../../../../../../Constants';\n\nclass MyLocationButton extends Component {\n static propTypes = {\n /**\n * Circular button?\n */\n circular: PropTypes.bool,\n\n /**\n * Inverse the colors of the button.\n */\n inverse: PropTypes.bool,\n\n /**\n * Button shows only text\n */\n textOnly: PropTypes.bool,\n\n /**\n * Handle geo-location request errors.\n */\n onUserDeniedError: PropTypes.func.isRequired,\n\n /**\n * Handle getting user location and zooming there\n */\n dispatchSetMyLocation: PropTypes.func,\n dispatchZoomToMyLocation: PropTypes.func,\n };\n\n static defaultProps = {\n inverse: false,\n textOnly: false,\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnClickMyLocation = this.handleOnClickMyLocation.bind(this);\n this.handleOnPositionSuccess = this.handleOnPositionSuccess.bind(this);\n this.handleOnPositionError = this.handleOnPositionError.bind(this);\n }\n\n handleOnClickMyLocation() {\n if (navigator && navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n this.handleOnPositionSuccess,\n this.handleOnPositionError,\n {\n enableHighAccuracy: true,\n timeout: 5000,\n }\n );\n }\n }\n\n handleOnPositionSuccess(position) {\n this.props.dispatchSetMyLocation([position.coords.longitude, position.coords.latitude]);\n this.props.dispatchZoomToMyLocation(\n toWebMercatorCenter([position.coords.longitude, position.coords.latitude])\n );\n }\n\n handleOnPositionError(err) {\n if (err.message.match(REGEX_USER_DENIED_GEOLOCATION_ERR_MESSAGE)) {\n this.props.onUserDeniedError(err);\n } else {\n this.props.dispatchReportError(err);\n }\n }\n\n render() {\n if (this.props.textOnly) {\n return (\n \n Show your location\n \n );\n }\n\n return (\n }\n />\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {};\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSetMyLocation: lonlat => {\n dispatch(setMyLocationCoords(lonlat));\n },\n dispatchZoomToMyLocation: coordinates => {\n dispatch(zoomToCenter(coordinates, 12));\n },\n dispatchReportError: err => {\n dispatch(reportError(err));\n },\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(MyLocationButton);\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { Box, Text } from \"../../../../../../../lib/base\";\nimport Modal from \"../../../../../../../lib/base/basic/Modal\";\nimport HeadingText from \"../../../../../../components/text/HeadingText\";\n\nexport default class UserDeniedGeoLocationModal extends Component {\n static propTypes = {\n /**\n * Close modal callback.\n */\n onRequestClose: PropTypes.func.isRequired,\n\n /**\n * Is modal visible\n */\n visible: PropTypes.bool.isRequired\n };\n\n render() {\n return (\n User Denied GeoLocation}\n isOpen={this.props.visible}\n onRequestClose={this.props.onRequestClose}\n >\n \n \n We tried to zoom to your current location but it looks like you have disabled\n geo-location requests for this website.\n \n \n \n );\n }\n}\n","import React, { Component } from 'react';\nimport { Box, Column, Columns } from '../../../../../../../lib/base';\nimport { COLOR_BASE_PRIMARY, COLOR_VARIANT_PRIMARY } from '../../../../../../Constants';\nimport ExportButton from './buttons/ExportButton';\n\nimport HomeButton from './buttons/HomeButton';\nimport MapLayersButton from './buttons/MapLayersButton';\nimport MeasureButton from './buttons/MeasureButton';\nimport MyLocationButton from './buttons/MyLocationButton';\nimport { isSmallScreen } from '../../../../../../util/browser';\nimport ApplicationMenu from '../../../../../../components/header/ApplicationMenu';\nimport UserDeniedGeoLocationModal from './UserDeniedGeoLocationModal';\nimport HelpButton from './buttons/HelpButton';\n\nexport default class Toolbar extends Component {\n constructor(props) {\n super(props);\n\n this.state = { isModalVisible: false };\n\n this.handleOnUserDeniedError = this.handleOnUserDeniedError.bind(this);\n this.handleOnCloseModal = this.handleOnCloseModal.bind(this);\n }\n\n handleOnUserDeniedError() {\n this.setState({ isModalVisible: true });\n }\n\n handleOnCloseModal() {\n this.setState({ isModalVisible: false });\n }\n\n render() {\n const isMobile = isSmallScreen();\n\n return (\n \n \n \n \n \n {!isMobile && (\n \n \n \n )}\n\n \n \n \n\n {!isMobile && (\n \n \n \n )}\n\n {!isMobile && (\n \n \n \n )}\n\n \n \n \n\n {!isMobile && (\n \n \n \n )}\n \n \n\n \n {isMobile && (\n \n \n \n )}\n \n \n \n );\n }\n}\n","import Downshift from \"downshift\";\nimport debounce from \"lodash/debounce\";\nimport PropTypes from \"prop-types\";\nimport React, { Fragment, PureComponent } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { Manager, Popper, Reference } from \"react-popper\";\nimport { Column, Columns } from \"../../../lib/base\";\nimport { COLOR_BASE_PRIMARY, SEARCH_DELAY_TIME_MS, MEDIA_BREAKPOINT } from \"../../Constants\";\nimport { IconSpinner } from \"../icons\";\n\nclass SuggestSearchInput extends PureComponent {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Additional css for container.\n */\n className: PropTypes.string,\n\n /**\n * The value of the input.\n */\n value: PropTypes.string,\n\n /**\n * Handle input value changes.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Handle when value is cleared.\n */\n onClear: PropTypes.func,\n\n /**\n * Handle when input is blurred.\n */\n onBlur: PropTypes.func,\n\n /**\n * Called when a suggestion item is selected.\n */\n onSelect: PropTypes.func,\n\n /**\n * Handle on input keypress.\n */\n onKeyPress: PropTypes.func,\n\n /**\n * Called when suggestions are wanted.\n */\n onRequestSuggestions: PropTypes.func,\n\n /**\n * placeholder text\n */\n placeholderText: PropTypes.string\n };\n\n static defaultProps = {\n children: null,\n placeholderText: \"\"\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n term: props.value || \"\",\n suggestions: [],\n isLoading: false\n };\n\n this.doSuggest = this.doSuggest.bind(this);\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n this.handleOnKeyPress = this.handleOnKeyPress.bind(this);\n this.debouncedDoSuggest = debounce(this.doSuggest, SEARCH_DELAY_TIME_MS);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.term !== this.props.value) {\n this.setState({ term: this.props.value || \"\" });\n }\n }\n\n doSuggest(term) {\n if (this.props.onRequestSuggestions) {\n this.setState({ isLoading: true });\n this.props\n .onRequestSuggestions(term)\n .then(suggestions => {\n this.setState({ suggestions, isLoading: false });\n if (this.scheduleUpdate) {\n this.scheduleUpdate();\n }\n })\n .catch(err => {\n if (err.name !== \"AbortError\") {\n this.setState({ isLoading: false });\n }\n });\n }\n }\n\n handleOnChange(value) {\n this.props.onChange(value);\n this.setState({ term: value }, () => {\n this.debouncedDoSuggest(this.state.term);\n });\n }\n\n handleOnBlur(event) {\n this.props.onBlur(event);\n }\n\n hasValue(inputValue) {\n return inputValue && inputValue.length > 0;\n }\n\n renderSuggestions(getItemProps, highlightedIndex) {\n const suggestions = this.state.suggestions || [];\n\n return suggestions.map((item, index) => {\n const classNames = [this.props.classes.itemContainer];\n\n if (highlightedIndex === index) {\n classNames.push(this.props.classes.highlighted);\n }\n\n const startIndex = item.label.toUpperCase().indexOf(this.state.term.toUpperCase());\n const lastIndex = startIndex + this.state.term.length;\n\n let formattedItem = item.label;\n\n if (startIndex !== -1) {\n formattedItem = (\n \n {item.label.slice(0, startIndex)}\n \n {item.label.substring(startIndex, lastIndex)}\n \n {item.label.slice(lastIndex)}\n \n );\n }\n\n return (\n \n {formattedItem}\n \n );\n });\n }\n\n handleOnKeyPress(event) {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n if (event.key === \"Enter\") {\n event.target.blur();\n }\n }\n }\n\n canShowPopper(isOpen) {\n return isOpen && this.state.suggestions.length > 0;\n }\n\n render() {\n return (\n {\n this.props.onSelect(selection);\n }}\n onStateChange={({ inputValue }) => {\n if (inputValue !== undefined) {\n if (typeof inputValue === \"object\") {\n this.handleOnChange(inputValue.label);\n return inputValue.label;\n } else {\n this.handleOnChange(inputValue);\n return inputValue;\n }\n }\n }}\n selectedItem={this.state.term}\n itemToString={item => {\n if (typeof item === \"object\") {\n return item.label;\n } else {\n return item || \"\";\n }\n }}\n >\n {downshift => {\n const { isOpen, getInputProps, getItemProps, highlightedIndex, selectedItem } = downshift;\n\n return (\n
\n \n \n {({ ref }) => {\n return (\n
\n \n \n \n \n {this.state.isLoading && (\n \n \n \n )}\n \n
\n );\n }}\n
\n {this.canShowPopper(isOpen) && (\n \n {({ ref, style: { top, left, position, transform }, scheduleUpdate }) => {\n this.scheduleUpdate = scheduleUpdate;\n return (\n \n {this.renderSuggestions(getItemProps, highlightedIndex, selectedItem)}\n
\n );\n }}\n \n )}\n \n \n );\n }}\n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n padding: theme.spacing.medium\n },\n menuRoot: {\n zIndex: 1000,\n width: \"100%\",\n backgroundColor: \"white\",\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY][\"light3\"]}`,\n ...theme.elevation.shadow2\n },\n itemContainer: {\n padding: `${theme.spacing.small} ${theme.spacing.small}`,\n fontSize: \"15px\",\n\n \"&:hover\": {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY][\"light2\"]\n }\n },\n highlighted: {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY][\"light2\"]\n },\n bold: {\n fontWeight: 600,\n display: \"inline-block\",\n borderBottom: \"1px solid black\",\n lineHeight: \"18px\"\n },\n [`@media ${MEDIA_BREAKPOINT}`]: {\n container: {\n border: \"none\"\n }\n }\n});\n\nexport default injectSheet(styles)(SuggestSearchInput);\n","import debounce from \"lodash/debounce\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router\";\nimport { Box, Column, Columns } from \"../../../../../../../lib/base\";\nimport {\n deselectSite,\n searchFilterCountIfNeeded,\n searchInputFocusChange,\n searchSitesIfNeeded,\n setMyLocationCoords,\n zoomToExtent\n} from \"../../../../../../../store/map/map.action\";\nimport { geocodeAddressIfNeeded } from \"../../../../../../../store/search/search.action\";\nimport {\n IconClear,\n IconFilters,\n IconSearch,\n IconSpinner\n} from \"../../../../../../components/icons\";\nimport {\n COLOR_BASE_PRIMARY,\n COLOR_ICON_ON_LIGHT,\n COLOR_VARIANT_ICON_ON_LIGHT,\n MEDIA_BREAKPOINT,\n SEARCH_DELAY_TIME_MS\n} from \"../../../../../../Constants\";\nimport {\n navigateCloseSubPanel,\n navigateToCriteria,\n navigateToResults,\n navigateToResultsDirect\n} from \"../../../../../../routing\";\nimport SuggestSearchInput from \"../../../../../../components/form/SuggestSearchInput\";\nimport WKT from \"ol/format/WKT\";\n\nconst api = () => window.nSITE.Api;\n\nclass SearchInput extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Connected search criteria.\n */\n criteria: PropTypes.object.isRequired,\n\n /**\n * Zoom to extent\n */\n dispatchZoomToExtent: PropTypes.func,\n };\n\n static defaultProps = {};\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const nextState = prevState;\n\n if (prevState.stateUpdate) {\n return {\n stateUpdate: false\n };\n }\n\n if (nextProps.isResetNeeded) {\n nextState.term = \"\";\n }\n\n return nextState;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n term: props.criteria.term\n };\n\n /**\n * Create Refs\n */\n this.input = React.createRef();\n\n /**\n * Setup search function for debouncing.\n */\n this.debouncedDoSearch = debounce(this.doSearch, SEARCH_DELAY_TIME_MS);\n\n /**\n * Bind handlers.\n */\n this.handleOnFocusInput = this.handleOnFocusInput.bind(this);\n this.handleOnBlurInput = this.handleOnBlurInput.bind(this);\n this.handleOnChangeTerm = this.handleOnChangeTerm.bind(this);\n this.handleOnSelect = this.handleOnSelect.bind(this);\n this.handleOnPositionSuccess = this.handleOnPositionSuccess.bind(this);\n this.handleOnClickAdvancedSearch = this.handleOnClickAdvancedSearch.bind(this);\n this.handleOnClickSearchIcon = this.handleOnClickSearchIcon.bind(this);\n this.handleOnClickClear = this.handleOnClickClear.bind(this);\n }\n\n doSearch(term) {\n const criteria = Object.assign({}, this.props.criteria, { term });\n this.props.dispatchSearch(criteria);\n this.props.dispatchDeselectSite();\n navigateToResultsDirect(this.props);\n }\n\n handleOnChangeTerm(value) {\n this.setState({ term: value, stateUpdate: true }, () => {\n this.debouncedDoSearch(this.state.term);\n });\n }\n\n handleOnSelect(item) {\n let wkt = new WKT();\n let feat = wkt.readFeature(item.locationGeocode);\n let extent = feat\n .getGeometry()\n .transform(\"EPSG:4326\", \"EPSG:3857\")\n .getExtent();\n this.props.dispatchZoomToExtent(extent);\n }\n\n handleOnBlurInput() {\n this.props.dispatchSearchInputFocusChange(false);\n }\n\n handleOnFocusInput(event) {\n this.props.dispatchSearchInputFocusChange(true);\n\n if (navigator && navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n position => this.handleOnPositionSuccess(event, position),\n err => {\n console.log(err);\n },\n { enableHighAccuracy: true, timeout: 10000, maximumAge: 3600000 }\n );\n }\n }\n\n handleOnClickSearchIcon(event) {\n this.input.current.focus();\n }\n\n handleOnClickClear(event) {\n this.setState({ term: \"\", stateUpdate: true }, () => {\n this.doSearch(\"\");\n });\n }\n\n isAdvancedCriteriaOpen() {\n const { params } = this.props.match;\n\n return params.subPanel === \"criteria\" || params.subPanel === \"filters\";\n }\n\n handleOnClickAdvancedSearch() {\n if (this.isAdvancedCriteriaOpen()) {\n navigateCloseSubPanel(this.props);\n } else {\n navigateToCriteria(this.props);\n }\n }\n\n handleOnPositionSuccess(event, position) {\n this.props.dispatchSetMyLocation([position.coords.longitude, position.coords.latitude]);\n }\n\n render() {\n const { container, input } = this.props.classes;\n\n return (\n \n \n \n api().geocode.geocodeLocal(value)}\n onChange={event => this.handleOnChangeTerm(event)}\n onSelect={value => this.handleOnSelect(value)}\n onClear={event => this.handleOnRemove(event)}\n onBlur={this.handleOnBlurInput}\n onKeyPress={this.handleOnKeyPress}\n value={this.state.term}\n placeholderText=\"Search By Keyword\"\n className={input}\n />\n \n\n {this.props.isFetching && (\n \n \n \n \n \n )}\n\n \n \n \n \n \n\n {!this.state.term && (\n \n \n \n \n \n )}\n\n {this.state.term && (\n \n \n \n \n \n )}\n \n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n padding: theme.spacing.medium\n },\n\n input: {\n width: \"100%\",\n border: \"none\",\n fontSize: \"20px\",\n color: theme.color.gray.dark2,\n\n \"&:focus\": {\n outline: \"none\"\n },\n\n \"&::placeholder\": {\n color: theme.color.gray.light2\n }\n },\n\n [`@media ${MEDIA_BREAKPOINT}`]: {\n container: {\n border: \"none\"\n }\n }\n});\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n isSearchInputFocused: state.map.isSearchInputFocused,\n isResetNeeded: state.map.search.isResetNeeded,\n isFetching: state.map.search.isFetching\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSearchInputFocusChange: isFocused => {\n dispatch(searchInputFocusChange(isFocused));\n },\n dispatchZoomToExtent: extent => {\n dispatch(zoomToExtent(extent));\n },\n dispatchSearch: criteria => {\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n dispatch(geocodeAddressIfNeeded(criteria.term));\n },\n dispatchDeselectSite: () => {\n dispatch(deselectSite());\n },\n dispatchSetMyLocation: lonlat => {\n dispatch(setMyLocationCoords(lonlat));\n }\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(injectSheet(styles)(SearchInput))\n);\n","import pluralize from 'pluralize';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { Button, Text } from '../../../../../../../lib/base';\nimport Box from '../../../../../../../lib/base/layout/Box';\nimport { IconList } from '../../../../../../components/icons/fontawesome/icons';\nimport { COLOR_BASE_PRIMARY, DEFAULT_TEXT_SIZE_DESCRIPTIONS } from '../../../../../../Constants';\nimport { navigateToResults } from '../../../../../../routing';\n\nclass ViewResultsButton extends Component {\n constructor(props) {\n super(props);\n this.handleOnClickCount = this.handleOnClickCount.bind(this);\n }\n\n handleOnClickCount() {\n navigateToResults(this.props);\n }\n\n siteCountPluralized() {\n const { count } = this.props;\n\n if (count) {\n return `${count.toLocaleString({ useGrouping: true })} ${pluralize('site', count)}`;\n } else {\n return '0 sites';\n }\n }\n\n render() {\n const count = this.props.count && this.props.count.toLocaleString();\n const params = this.props.match.params;\n\n if (this.props.count && params.panel !== 'results') {\n return (\n \n {`Search results (${count})`}\n \n );\n }\n\n return (\n \n \n {this.siteCountPluralized()} found\n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n count: state.map.search.count,\n };\n}\n\nexport default withRouter(connect(mapStateToProps)(ViewResultsButton));\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport {\n searchFilterCountIfNeeded,\n searchSitesIfNeeded,\n} from '../../../../../../../store/map/map.action';\nimport { navigateToResults } from '../../../../../../routing';\nimport { isSmallScreen } from '../../../../../../util/browser';\nimport { Box, Text } from '../../../../../../../lib/base';\nimport { DEFAULT_TEXT_SIZE_DESCRIPTIONS, COLOR_BASE_PRIMARY } from '../../../../../../Constants';\nimport ToolbarButton from '../toolbar/buttons/ToolbarButton';\nimport {\n IconNoLocation,\n IconWithLocation,\n} from '../../../../../../components/icons/fontawesome/icons';\n\nclass LocationLessSitesButton extends Component {\n static propTypes = {\n classes: PropTypes.object,\n /**\n * Search criteria.\n */\n criteria: PropTypes.object.isRequired,\n /**\n * triggers search site sp\n */\n dispatchSearchSites: PropTypes.func,\n\n circular: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n this.handleOnClick = this.handleOnClick.bind(this);\n }\n\n handleOnClick() {\n /**\n * We're making a copy of the current criteria and toggling the discardLocationlessFeatures\n * property - then search with the new criteria.\n */\n const criteria = Object.assign({}, this.props.criteria, {\n discardLocationlessFeatures: !this.props.criteria.discardLocationlessFeatures,\n });\n\n this.props.dispatchSearchSites(criteria);\n\n if (!isSmallScreen()) {\n navigateToResults(this.props);\n }\n }\n\n render() {\n if (isSmallScreen()) {\n if (this.props.criteria.discardLocationlessFeatures) {\n return (\n }\n active={false}\n />\n );\n } else {\n return (\n }\n circular={this.props.circular}\n active={true}\n />\n );\n }\n } else {\n if (this.props.criteria.discardLocationlessFeatures) {\n return (\n \n \n Show sites with no locations\n \n \n );\n } else {\n return (\n \n \n Hide sites with no location\n \n \n );\n }\n }\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSearchSites: criteria => {\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n },\n };\n}\n\nconst styles = theme => ({\n text: {\n '&:hover': {\n color: theme.color[COLOR_BASE_PRIMARY]['base'],\n },\n },\n});\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(injectSheet(styles)(LocationLessSitesButton))\n);\n","import React, { Component } from 'react';\nimport { Box } from '../../../../../lib/base';\nimport Toolbar from '../shared/panel/toolbar/Toolbar';\nimport SearchInput from '../shared/panel/search/SearchInput';\nimport ViewResultsButton from '../shared/panel/search/ViewResultsButton';\nimport LocationlessSitesButton from '../shared/panel/search/LocationlessSitesButton';\n\nexport default class DesktopSearchBar extends Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Text } from '../../../lib/base';\r\nimport { COLOR_BASE_PRIMARY, COLOR_VARIANT_PRIMARY } from '../../Constants';\r\n\r\nclass Tab extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Tab id.\r\n */\r\n id: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Tab name.\r\n */\r\n name: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Tab title.\r\n */\r\n title: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Active tab.\r\n */\r\n active: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Click handler.\r\n */\r\n onClick: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Determine whether to show or hide tab\r\n */\r\n visible: PropTypes.bool,\r\n\r\n /**\r\n * Bold.\r\n */\r\n bold: PropTypes.bool,\r\n };\r\n\r\n render() {\r\n const { container, selected } = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n {this.props.name}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n padding: theme.spacing.inset.stretch.medium,\r\n borderBottom: `4px solid transparent`,\r\n textAlign: 'center',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light2'],\r\n borderBottom: `4px solid ${theme.color[COLOR_BASE_PRIMARY]['dark2']}`,\r\n },\r\n display: props => (props.visible ? '' : 'none'),\r\n },\r\n\r\n selected: {\r\n borderBottom: `4px solid ${theme.color[COLOR_BASE_PRIMARY][COLOR_VARIANT_PRIMARY]}`,\r\n\r\n '&:hover': {\r\n borderBottom: `4px solid ${theme.color[COLOR_BASE_PRIMARY]['dark3']}`,\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Tab);\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { Box, Text } from '../../../lib/base';\nimport { COLOR_BASE_PRIMARY } from '../../Constants';\nimport { propTypeColor } from '../../../lib/base/util/propTypes';\nimport { jssColorLookup } from '../../../lib/base/util/jss';\n\nclass Labeled extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n /**\n * border color\n */\n borderColor: propTypeColor,\n /**\n *\n */\n renderView: PropTypes.func.isRequired,\n /**\n * Label for the input field.\n */\n label: PropTypes.string.isRequired,\n };\n\n static defaultProps = {\n borderColor: COLOR_BASE_PRIMARY,\n };\n\n render() {\n const { container, label, inputContainer } = this.props.classes;\n\n return (\n \n \n \n {this.props.label}\n \n {this.props.renderView()}\n \n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n position: 'relative',\n },\n\n label: {\n position: 'absolute',\n backgroundColor: theme.color.base.white,\n top: 4,\n left: 8,\n lineHeight: '12px',\n fontSize: '12px',\n padding: '0 4px',\n },\n\n inputContainer: {},\n});\n\nexport default injectSheet(styles)(Labeled);\n","import Downshift from 'downshift';\r\nimport debounce from 'lodash/debounce';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Fragment, PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Manager, Popper, Reference } from 'react-popper';\r\nimport { Column, Columns } from '../../../lib/base';\r\nimport { COLOR_BASE_PRIMARY, SEARCH_DELAY_TIME_MS } from '../../Constants';\r\nimport { IconClear, IconSpinner } from '../icons';\r\n\r\nclass SuggestTextInput extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * The value of the input.\r\n */\r\n value: PropTypes.string,\r\n\r\n /**\r\n * Handle input value changes.\r\n */\r\n onChange: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Handle when value is cleared.\r\n */\r\n onClear: PropTypes.func,\r\n\r\n /**\r\n * Handle when input is blurred.\r\n */\r\n onBlur: PropTypes.func,\r\n\r\n /**\r\n * Called when a suggestion item is selected.\r\n */\r\n onSelect: PropTypes.func,\r\n\r\n /**\r\n * Handle on input keypress.\r\n */\r\n onKeyPress: PropTypes.func,\r\n\r\n /**\r\n * Called when suggestions are wanted.\r\n */\r\n onRequestSuggestions: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n children: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n term: props.value || '',\r\n suggestions: [],\r\n isLoading: false,\r\n };\r\n\r\n this.doSuggest = this.doSuggest.bind(this);\r\n this.handleOnChange = this.handleOnChange.bind(this);\r\n this.handleOnBlur = this.handleOnBlur.bind(this);\r\n this.handleOnClear = this.handleOnClear.bind(this);\r\n this.handleOnKeyPress = this.handleOnKeyPress.bind(this);\r\n this.debouncedDoSuggest = debounce(this.doSuggest, SEARCH_DELAY_TIME_MS);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.term !== this.props.value) {\r\n this.setState({ term: this.props.value || '' });\r\n }\r\n }\r\n\r\n doSuggest(term) {\r\n if (this.props.onRequestSuggestions) {\r\n this.setState({ isLoading: true });\r\n this.props\r\n .onRequestSuggestions(term)\r\n .then(suggestions => {\r\n this.setState({ suggestions, isLoading: false });\r\n if (this.scheduleUpdate) {\r\n this.scheduleUpdate();\r\n }\r\n })\r\n .catch(err => {\r\n if (err.name !== 'AbortError') {\r\n this.setState({ isLoading: false });\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleOnChange(value) {\r\n this.props.onChange(value);\r\n this.setState({ term: value }, () => {\r\n this.debouncedDoSuggest(this.state.term);\r\n });\r\n }\r\n\r\n handleOnBlur(event) {\r\n this.props.onBlur(event);\r\n }\r\n\r\n hasValue(inputValue) {\r\n return inputValue && inputValue.length > 0;\r\n }\r\n\r\n handleOnClear(event) {\r\n const v = '';\r\n this.setState({ term: v });\r\n this.props.onChange(v);\r\n\r\n if (this.props.onClear) {\r\n this.props.onClear(event);\r\n }\r\n }\r\n\r\n renderSuggestions(getItemProps, highlightedIndex) {\r\n const suggestions = this.state.suggestions || [];\r\n\r\n return suggestions.map((item, index) => {\r\n const classNames = [this.props.classes.itemContainer];\r\n\r\n if (highlightedIndex === index) {\r\n classNames.push(this.props.classes.highlighted);\r\n }\r\n\r\n const startIndex = item.toUpperCase().indexOf(this.state.term.toUpperCase());\r\n const lastIndex = startIndex + this.state.term.length;\r\n\r\n let formattedItem = item;\r\n\r\n if (startIndex !== -1) {\r\n formattedItem = (\r\n \r\n {item.slice(0, startIndex)}\r\n {item.substring(startIndex, lastIndex)}\r\n {item.slice(lastIndex)}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {formattedItem}\r\n \r\n );\r\n });\r\n }\r\n\r\n handleOnKeyPress(event) {\r\n if (this.props.onKeyPress) {\r\n this.props.onKeyPress(event);\r\n if (event.key === 'Enter') {\r\n event.target.blur();\r\n }\r\n }\r\n }\r\n\r\n canShowPopper(isOpen) {\r\n return isOpen && this.state.suggestions.length > 0;\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n this.props.onSelect(selection);\r\n }}\r\n onStateChange={({ inputValue }) => {\r\n if (inputValue !== undefined) {\r\n this.handleOnChange(inputValue);\r\n return inputValue;\r\n }\r\n }}\r\n selectedItem={this.state.term}\r\n itemToString={item => item || ''}\r\n >\r\n {downshift => {\r\n const {\r\n isOpen,\r\n getInputProps,\r\n getItemProps,\r\n highlightedIndex,\r\n selectedItem,\r\n inputValue,\r\n } = downshift;\r\n\r\n return (\r\n
\r\n \r\n \r\n {({ ref }) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {this.state.isLoading && (\r\n \r\n \r\n \r\n )}\r\n {this.hasValue(inputValue) && (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n }}\r\n
\r\n {this.canShowPopper(isOpen) && (\r\n \r\n {({ ref, style: { top, left, position, transform }, scheduleUpdate }) => {\r\n this.scheduleUpdate = scheduleUpdate;\r\n return (\r\n \r\n {this.renderSuggestions(getItemProps, highlightedIndex, selectedItem)}\r\n
\r\n );\r\n }}\r\n \r\n )}\r\n \r\n \r\n );\r\n }}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n padding: `${theme.spacing.small} ${theme.spacing.small}`,\r\n height: '48px',\r\n },\r\n input: {\r\n ...theme.input.medium,\r\n },\r\n menuRoot: {\r\n zIndex: 1000,\r\n width: '100%',\r\n backgroundColor: 'white',\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light3']}`,\r\n ...theme.elevation.shadow2,\r\n },\r\n itemContainer: {\r\n padding: `${theme.spacing.small} ${theme.spacing.small}`,\r\n fontSize: '15px',\r\n\r\n '&:hover': {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light2'],\r\n },\r\n },\r\n highlighted: {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light2'],\r\n },\r\n bold: {\r\n fontWeight: 600,\r\n display: 'inline-block',\r\n borderBottom: '1px solid black',\r\n lineHeight: '18px',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SuggestTextInput);\r\n","import isEqual from 'lodash/isEqual';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport Labeled from '../../../../../../../components/form/Labeled';\r\nimport SuggestTextInput from '../../../../../../../components/form/SuggestTextInput';\r\n\r\nconst api = () => window.nSITE.Api;\r\n\r\nexport default class AttributesSearchForm extends Component {\r\n static propTypes = {\r\n /**\r\n * Array of search attributes.\r\n */\r\n searchKeys: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Search criteria.\r\n */\r\n advancedCritera: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Called when form is submitted.\r\n */\r\n onSubmit: PropTypes.func.isRequired,\r\n };\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.stateUpdate) {\r\n return {\r\n stateUpdate: false,\r\n };\r\n }\r\n\r\n if (!isEqual(prevState.attributes, nextProps.advancedCritera)) {\r\n return {\r\n attributes: { ...nextProps.advancedCritera },\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n attributes: { ...props.advancedCritera },\r\n };\r\n\r\n this.handleOnChange = this.handleOnChange.bind(this);\r\n this.handleOnRemove = this.handleOnRemove.bind(this);\r\n this.handleOnKeyPress = this.handleOnKeyPress.bind(this);\r\n }\r\n\r\n handleOnChange(key, value) {\r\n const newAttributes = this.state.attributes;\r\n\r\n if (!value) {\r\n delete newAttributes[key];\r\n } else {\r\n newAttributes[key] = value;\r\n }\r\n\r\n this.setState({\r\n attributes: newAttributes,\r\n stateUpdate: true,\r\n });\r\n }\r\n\r\n handleOnSelect(key, value) {\r\n this.handleOnChange(key, value);\r\n this.props.onSubmit(this.state.attributes);\r\n }\r\n\r\n handleOnBlur(event, key) {\r\n if (this.props.advancedCritera[key] !== this.state.attributes[key]) {\r\n this.props.onSubmit(this.state.attributes);\r\n }\r\n }\r\n\r\n handleOnRemove(event, key) {\r\n const newState = { ...this.state.attributes };\r\n delete newState[key];\r\n\r\n this.setState({ attributes: newState }, () => {\r\n this.props.onSubmit(newState);\r\n });\r\n }\r\n\r\n handleOnKeyPress(event) {\r\n if (event.key === 'Enter') {\r\n this.props.onSubmit(this.state.attributes);\r\n }\r\n }\r\n\r\n render() {\r\n const { searchKeys } = this.props;\r\n\r\n if (!searchKeys) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {searchKeys.map(sk => (\r\n (\r\n api().search.suggest(sk.id, value)}\r\n onChange={value => this.handleOnChange(sk.key, value)}\r\n onSelect={value => this.handleOnSelect(sk.key, value)}\r\n onClear={event => this.handleOnRemove(event, sk.key)}\r\n onBlur={(event, value) => this.handleOnBlur(event, sk.key, value)}\r\n onKeyPress={this.handleOnKeyPress}\r\n value={this.state.attributes[sk.key]}\r\n />\r\n )}\r\n />\r\n ))}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box, Column, Columns, Text } from '../../../../../../../../lib/base';\r\nimport { IconChevronDown, IconChevronUp, IconSpinner } from '../../../../../../../components/icons';\r\nimport HeadingText from '../../../../../../../components/text/HeadingText';\r\nimport { COLOR_BASE_PRIMARY } from '../../../../../../../Constants';\r\n\r\nclass FilterGroup extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Name of filter group.\r\n */\r\n name: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Array of filters to display.\r\n */\r\n filters: PropTypes.array,\r\n\r\n /**\r\n * Selected filters.\r\n */\r\n selected: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Is the app currently fetching the latest filter count?\r\n */\r\n isFilterCountFetching: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Called when a filter is selected.\r\n */\r\n onSelect: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Called when to select all filters.\r\n */\r\n onSelectAll: PropTypes.func.isRequired,\r\n };\r\n\r\n static hasSelections(props) {\r\n const filters = props.filters.map(f => f.value);\r\n const selected = props.selected;\r\n return selected.some(selection => filters.includes(selection));\r\n }\r\n\r\n static isAllSelected(props) {\r\n return props.filters.length === props.selected.length;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = { collapsed: !FilterGroup.hasSelections(props) };\r\n\r\n this.handleOnClickTitle = this.handleOnClickTitle.bind(this);\r\n this.handleOnSelect = this.handleOnSelect.bind(this);\r\n this.handleOnSelectAll = this.handleOnSelectAll.bind(this);\r\n }\r\n\r\n handleOnSelectAll(event) {\r\n this.props.onSelectAll(this.props.filters.map(f => f.value), event.target.checked);\r\n }\r\n\r\n handleOnSelect(event, value) {\r\n this.props.onSelect(value, event.target.checked);\r\n }\r\n\r\n handleOnClickTitle() {\r\n this.setState({ collapsed: !this.state.collapsed });\r\n }\r\n\r\n isChecked(filterValue) {\r\n return this.props.selected.includes(filterValue);\r\n }\r\n\r\n renderHeader() {\r\n const totalCount = this.props.selected && this.props.selected.length;\r\n return (\r\n \r\n \r\n e.stopPropagation()}\r\n onChange={e => this.handleOnSelectAll(e)}\r\n />\r\n \r\n \r\n {this.props.name}\r\n {totalCount > 0 && (\r\n \r\n {totalCount}\r\n \r\n )}\r\n \r\n \r\n {this.state.collapsed ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n\r\n renderBody() {\r\n if (this.state.collapsed) {\r\n const selectedFilters = this.props.filters.filter(f => this.props.selected.includes(f.value));\r\n\r\n return selectedFilters.map(f => {\r\n return (\r\n \r\n \r\n \r\n );\r\n });\r\n } else {\r\n return this.props.filters.map(f => {\r\n return (\r\n \r\n \r\n \r\n );\r\n });\r\n }\r\n }\r\n\r\n renderRow(checked, value, label, count) {\r\n return (\r\n \r\n \r\n this.handleOnSelect(e, value)}\r\n />\r\n \r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n {this.renderRowCountCol(count)}\r\n \r\n \r\n );\r\n }\r\n\r\n renderRowCountCol(count) {\r\n if (this.props.isFilterCountFetching) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n {count.toLocaleString()}\r\n \r\n );\r\n }\r\n }\r\n\r\n render() {\r\n const { titleBox } = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n {this.renderHeader()}\r\n \r\n {this.renderBody()}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n titleBox: {\r\n '&:hover': {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light2'],\r\n },\r\n },\r\n\r\n row: {\r\n '&:hover': {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light2'],\r\n },\r\n },\r\n\r\n count: {\r\n display: 'inline-block',\r\n padding: `${theme.spacing.smaller} ${theme.spacing.small}`,\r\n borderRadius: '12px',\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light3'],\r\n color: theme.color[COLOR_BASE_PRIMARY]['dark6'],\r\n },\r\n\r\n countHeader: {\r\n extend: 'count',\r\n marginLeft: theme.spacing.small,\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light3'],\r\n color: theme.color[COLOR_BASE_PRIMARY]['dark6'],\r\n },\r\n\r\n colOne: {\r\n minWidth: '25px',\r\n textAlign: 'left',\r\n },\r\n\r\n colThree: {\r\n minWidth: '50px',\r\n textAlign: 'right',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(FilterGroup);\r\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { Box, Text } from \"../../../../../../../../lib/base\";\nimport SpinnerPanel from \"../../../../../../../components/spinner/SpinnerPanel\";\nimport FilterGroup from \"./FilterGroup\";\n\n/**\n * Comparator to sort filters based on display name.\n * @param left filter A\n * @param right filter B\n */\nconst diplayNameComparator = (left, right) => {\n const nameLeft = left.label && left.label.toUpperCase(); // ignore upper and lowercase\n const nameRight = right.label && right.label.toUpperCase(); // ignore upper and lowercase\n if (nameLeft < nameRight) {\n return -1;\n }\n if (nameLeft > nameRight) {\n return 1;\n }\n // names must be equal\n return 0;\n};\n\nclass FiltersSearchForm extends Component {\n static propTypes = {\n /**\n * Selected filters.\n */\n selected: PropTypes.array.isRequired,\n\n /**\n * Filters count\n */\n filtersCount: PropTypes.array,\n\n /**\n * Called when a filter is selected.\n */\n onSelect: PropTypes.func.isRequired,\n\n /**\n * filters\n */\n filters: PropTypes.array,\n\n /**\n * Called when to select all filters.\n */\n onSelectAll: PropTypes.func.isRequired,\n\n /**\n * Called when filter crieria is removed.\n */\n onRemove: PropTypes.func.isRequired,\n\n /**\n * Is the app currently fetching the latest filter count?\n */\n isFilterCountFetching: PropTypes.bool.isRequired,\n\n /**\n * Is the filter panel currently visible\n */\n panelVisible: PropTypes.bool\n };\n\n constructor(props) {\n super(props);\n this.handleOnRemove = this.handleOnRemove.bind(this);\n }\n\n handleOnRemove(event, filterValue) {\n event.stopPropagation();\n this.props.onRemove(filterValue);\n }\n\n getSelectedByGroup(group) {\n const groupFilters = group.filters.map(f => f.value);\n const selected = this.props.selected;\n return selected\n .filter(selection => groupFilters.includes(selection))\n .sort(diplayNameComparator);\n }\n\n getCount(filter) {\n const fc = this.props.filtersCount.find(\n fc => filter.label === fc.filter && filter.group === fc.filterGroup\n );\n if (!fc) return undefined;\n return fc.count;\n }\n\n getFiltersByGroup(group) {\n const filterCounts = this.props.filtersCount && this.props.filtersCount.map(fc => fc.filter);\n\n return group.filters\n .filter(f => filterCounts && filterCounts.includes(f.label))\n .sort(diplayNameComparator)\n .map(f => ({\n value: f.value,\n label: f.label,\n count: this.getCount(f)\n }));\n }\n\n renderFilterGroups() {\n if (!this.props.filters) {\n return null;\n }\n\n /**\n * Get an array of filter groups and filter the empty ones.\n */\n const filterGroups = this.props.filters\n .map(group => {\n const filters = this.getFiltersByGroup(group);\n\n return filters.length > 0\n ? {\n filters: filters,\n name: group.name\n }\n : undefined;\n })\n .filter(group => group !== undefined);\n\n if (filterGroups.length === 0 && this.props.isFilterCountFetching) {\n return ;\n }\n\n /**\n * Map the filterGroups to \n */\n if (filterGroups.length > 0 || this.props.isFilterCountFetching) {\n return filterGroups.map(group => (\n \n ));\n }\n\n /**\n * Return empty state when there are no filter groups.\n */\n return No Filters.;\n }\n\n render() {\n return {this.renderFilterGroups()};\n }\n}\n\nexport default withRouter(FiltersSearchForm);\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport { Box, Column, Columns, Row, Rows, Text } from '../../../../../../../lib/base';\nimport {\n deselectSite,\n searchFilterCountIfNeeded,\n searchSitesIfNeeded,\n} from '../../../../../../../store/map/map.action';\nimport {\n fetchFiltersIfNeeded,\n fetchSearchKeysIfNeeded,\n} from '../../../../../../../store/search/search.action';\nimport SpinnerOverlay from '../../../../../../components/spinner/SpinnerOverlay';\nimport Tab from '../../../../../../components/tabs/Tab';\nimport { COLOR_BASE_PRIMARY } from '../../../../../../Constants';\nimport {\n navigateToCriteria,\n navigateToFilters,\n navigateToResults,\n} from '../../../../../../routing';\nimport AttributesSearchForm from './attribute/AttributesSearchForm';\nimport FiltersSearchForm from './filter/FiltersSearchForm';\n\nclass SearchOptionsPanel extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n /**\n * Handlers for controlling the search inputs.\n */\n this.handleShowAttributes = this.handleShowAttributes.bind(this);\n this.handleShowFilters = this.handleShowFilters.bind(this);\n\n /**\n * Handlers for site attributes form.\n */\n this.handleOnAdvancedFormSubmit = this.handleOnAdvancedFormSubmit.bind(this);\n\n /**\n * Handlers for filters form.\n */\n this.handleOnFiltersFormSelect = this.handleOnFiltersFormSelect.bind(this);\n this.handleOnFiltersFormSelectAll = this.handleOnFiltersFormSelectAll.bind(this);\n this.handleOnFiltersFormRemove = this.handleOnFiltersFormRemove.bind(this);\n }\n\n componentDidMount() {\n this.props.dispatchFetchSearchFilters();\n this.props.dispatchFetchSearchKeys();\n }\n\n executeSearch(criteria) {\n this.props.dispatchSearch(criteria);\n this.props.dispatchDeselectSite();\n // navigateToResults(this.props);\n }\n\n isCriteriaActive() {\n const params = this.props.match.params;\n return params.subPanel === 'criteria';\n }\n\n isFiltersActive() {\n const params = this.props.match.params;\n return params.subPanel === 'filters';\n }\n\n /**\n * Updates the filter criteria and executes a new search.\n */\n handleOnFiltersFormSelect(filter, checked) {\n const criteria = { ...this.props.criteria };\n\n if (checked) {\n criteria.filters.push(filter);\n } else {\n criteria.filters = criteria.filters.filter(f => f !== filter);\n }\n\n this.executeSearch(criteria);\n }\n\n /**\n * Updates the filters and executes a new search.\n */\n handleOnFiltersFormSelectAll(filters, checked) {\n const criteria = { ...this.props.criteria };\n\n if (checked) {\n const add = filters.filter(f => !criteria.filters.includes(f));\n criteria.filters = criteria.filters.concat(add);\n } else {\n criteria.filters = criteria.filters.filter(f => !filters.includes(f));\n }\n\n this.executeSearch(criteria);\n }\n\n /**\n * Removes the filter and executes a new search.\n */\n handleOnFiltersFormRemove(filterValue) {\n const criteria = { ...this.props.criteria };\n criteria.filters = criteria.filters.filter(f => f !== filterValue);\n this.executeSearch(criteria);\n }\n\n /**\n * Submits the search when site attribute form is submitted.\n */\n handleOnAdvancedFormSubmit(advancedForm) {\n const criteria = { ...this.props.criteria };\n criteria.advanced = advancedForm;\n this.props.dispatchSearch(criteria);\n this.props.dispatchDeselectSite();\n navigateToResults(this.props);\n }\n\n /**\n * Show the site attributes search form.\n */\n handleShowAttributes() {\n navigateToCriteria(this.props);\n }\n\n /**\n * Show the filters search from.\n */\n handleShowFilters() {\n navigateToFilters(this.props);\n }\n\n renderFormPanel() {\n if (this.isCriteriaActive()) {\n if (this.props.searchKeysIsFetching) {\n return ;\n }\n\n if (this.props.searchKeys) {\n return (\n \n );\n }\n }\n\n if (this.isFiltersActive()) {\n return (\n \n );\n }\n\n return null;\n }\n\n render() {\n const advancedCriteriaCount = Object.keys(this.props.criteria.advanced).length;\n const filterCount = this.props.criteria.filters.length;\n const criteriaTitle = `Criteria (${advancedCriteriaCount})`;\n const filterTitle = `Filters (${filterCount})`;\n\n return (\n \n \n \n \n \n \n \n \n \n Filters ( 0}>{filterCount})\n \n \n \n \n \n \n {this.renderFormPanel()}\n \n \n );\n }\n}\n\nconst styles = () => ({\n [`@media all and (-ms-high-contrast:none)`]: {\n body: {\n minHeight: '100vh',\n },\n },\n});\n\nfunction mapStateToProps(state) {\n return {\n searchKeys: state.search.searchKeys.data,\n searchKeysIsFetching: state.search.searchKeys.isFetching,\n filters: state.search.filters.data,\n criteria: state.map.search.criteria,\n filtersCount: state.map.searchFilterCount.data,\n isFilterCountFetching: state.map.searchFilterCount.isFetching,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchFetchSearchKeys: () => {\n dispatch(fetchSearchKeysIfNeeded());\n },\n dispatchFetchSearchFilters: () => {\n dispatch(fetchFiltersIfNeeded());\n },\n dispatchSearch: criteria => {\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n },\n dispatchDeselectSite: () => {\n dispatch(deselectSite());\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(injectSheet(styles)(SearchOptionsPanel))\n);\n","import { easeInOutQuad } from 'ez.js';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport Tweezer from 'tweezer.js';\r\nimport WindowResizeListener from '../../../../../components/listener/WindowResizeListener';\r\nimport { SEARCH_RESULT_PANEL_MARGIN_PX } from '../../../../../Constants';\r\n\r\n/**\r\n * An absolutely positioned div that slides in/out from the left. The div can slide out to\r\n * an intermediate position and then can extend out even further to full screen width.\r\n */\r\nclass SlideOutContainer extends Component {\r\n static propTypes = {\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * The css 'top' position.\r\n */\r\n top: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The height of the container div.\r\n */\r\n height: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The left position of the container div.\r\n */\r\n left: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The width of the container div.\r\n */\r\n width: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Is the slide out panel open.\r\n */\r\n isOpen: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Is the slide out panel fully open.\r\n */\r\n isOpenFull: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Z-Index css property.\r\n */\r\n zIndex: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Function to call on window resize events.\r\n */\r\n onWindowResize: PropTypes.func,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.containerRef = React.createRef();\r\n this.handleOnWindowResize = this.handleOnWindowResize.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n let to = {};\r\n\r\n if (this.props.isOpenFull) {\r\n const screenWidth = document.documentElement.clientWidth;\r\n to.width = screenWidth - this.props.width - SEARCH_RESULT_PANEL_MARGIN_PX;\r\n to.left = this.props.left;\r\n } else if (this.props.isOpen) {\r\n to.width = this.props.width;\r\n to.left = this.props.left;\r\n } else {\r\n to.width = 0;\r\n to.left = 0;\r\n }\r\n\r\n this.animate(to);\r\n }\r\n\r\n animate(to) {\r\n const durationMs = 250;\r\n\r\n const style = this.containerRef.current.style;\r\n const startLeft = Number.parseInt(style.left.replace(/px/i, ''), 10);\r\n const startWidth = Number.parseInt(style.width.replace(/px/i, ''), 10);\r\n\r\n /**\r\n * Tween left style property.\r\n */\r\n new Tweezer({\r\n start: startLeft,\r\n end: to.left,\r\n duration: durationMs,\r\n easing: easeInOutQuad,\r\n })\r\n .on('tick', value => {\r\n if (this.containerRef && this.containerRef.current) {\r\n this.containerRef.current.style.left = `${value}px`;\r\n }\r\n })\r\n .begin();\r\n\r\n /**\r\n * Tween width style property.\r\n */\r\n new Tweezer({\r\n start: startWidth,\r\n end: to.width,\r\n duration: durationMs,\r\n easing: easeInOutQuad,\r\n })\r\n .on('tick', value => {\r\n if (this.containerRef && this.containerRef.current) {\r\n this.containerRef.current.style.width = `${value}px`;\r\n }\r\n })\r\n .begin();\r\n }\r\n\r\n handleOnWindowResize() {\r\n if (this.props.onWindowResize) {\r\n this.props.onWindowResize();\r\n }\r\n this.forceUpdate();\r\n }\r\n\r\n render() {\r\n const styles = {\r\n zIndex: this.props.zIndex,\r\n position: 'absolute',\r\n backgroundColor: 'white',\r\n top: this.props.top,\r\n height: this.props.height,\r\n left: `${SEARCH_RESULT_PANEL_MARGIN_PX}px`,\r\n boxShadow: '0 2px 4px 0 rgba(0, 0, 0, 0.4)',\r\n };\r\n\r\n return (\r\n
\r\n \r\n
{this.props.children}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n body: {\r\n height: '100%',\r\n overflow: 'hidden',\r\n overflowY: props => (props.isOpen || props.isOpenFull ? 'auto' : 'hidden'),\r\n boxShadow: 'inset 7px 0 9px -7px rgba(0,0,0,0.4)',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SlideOutContainer);\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport Box from '../../../../../../lib/base/layout/Box';\nimport Column from '../../../../../../lib/base/layout/flex/Column';\nimport Columns from '../../../../../../lib/base/layout/flex/Columns';\nimport Row from '../../../../../../lib/base/layout/flex/Row';\nimport Rows from '../../../../../../lib/base/layout/flex/Rows';\nimport { IconClear } from '../../../../../components/icons';\nimport HeadingText from '../../../../../components/text/HeadingText';\nimport TouchTarget from '../../../../../components/touchable/TouchTarget';\nimport SearchOptionsPanel from '../../shared/panel/criteria/SearchOptionsPanel';\nimport { navigateCloseSubPanel } from '../../../../../routing';\nimport SlideOutContainer from './SlideOutContainer';\n\nclass SlideOutContainerSearchCriteria extends Component {\n static propTypes = {\n /**\n * The css 'top' position.\n */\n top: PropTypes.number.isRequired,\n\n /**\n * The css 'width' position.\n */\n width: PropTypes.number.isRequired,\n\n /**\n * The height of the container div.\n */\n height: PropTypes.number.isRequired,\n\n /**\n * Z-Index of slide out panel.\n */\n zIndex: PropTypes.number.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n isOpen() {\n const { params } = this.props.match;\n return params.subPanel === 'criteria' || params.subPanel === 'filters';\n }\n\n handleOnClose() {\n navigateCloseSubPanel(this.props);\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n Advanced Search Criteria\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default withRouter(SlideOutContainerSearchCriteria);\n","import format from 'date-fns/format';\r\nimport isFunction from 'lodash/isFunction';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box } from '../../../lib/base';\r\nimport Label from './Label';\r\nimport Value from './Value';\r\n\r\nexport default class LabelValuePair extends Component {\r\n static propTypes = {\r\n /**\r\n * Label.\r\n */\r\n label: PropTypes.string,\r\n\r\n /**\r\n * Value.\r\n */\r\n value: PropTypes.any,\r\n\r\n /**\r\n * Hide label value pair when the value is empty.\r\n */\r\n hideEmpty: PropTypes.bool.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n label: '',\r\n value: undefined,\r\n hideEmpty: false,\r\n };\r\n\r\n static asValue(value) {\r\n if (value instanceof Date) {\r\n return format(value, 'MM/DD/YYYY');\r\n }\r\n return value;\r\n }\r\n\r\n static isEmpty(value) {\r\n if (!value) return true;\r\n\r\n if (typeof value === 'string') {\r\n return value.trim().length === 0;\r\n } else if (Array.isArray(value)) {\r\n return value.length === 0;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static renderValue(val) {\r\n if (isFunction(val)) {\r\n return val();\r\n } else if (Array.isArray(val)) {\r\n return val.map((v, index) => );\r\n } else {\r\n if (this.isEmpty(val)) {\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n }\r\n\r\n render() {\r\n const val = LabelValuePair.asValue(this.props.value);\r\n const lab = this.props.label;\r\n\r\n if (this.props.hideEmpty && LabelValuePair.isEmpty(val)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {LabelValuePair.renderValue(val)}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport { Link } from '../../../../lib/base';\r\nimport { isSmallScreen } from '../../../util/browser';\r\n\r\nexport default class CasLink extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * The url to the CAS.\r\n */\r\n url: PropTypes.string,\r\n\r\n /**\r\n * The mobile url to the CAS.\r\n */\r\n mobileUrl: PropTypes.string,\r\n\r\n /**\r\n * The CAS number to construct link with.\r\n */\r\n casNumber: PropTypes.string,\r\n };\r\n\r\n render() {\r\n const url = isSmallScreen() ? this.props.mobileUrl : this.props.url;\r\n\r\n return (\r\n \r\n {this.props.casNumber}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box, Column, Columns, Text } from '../../../../lib/base';\r\nimport { COLOR_BASE_PRIMARY } from '../../../Constants';\r\nimport Label from '../../lv/Label';\r\nimport LabelValuePair from '../../lv/LabelValuePair';\r\nimport CasLink from './CasLink';\r\n\r\nclass ChemicalMix extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * The chemical to which this chemical mix belongs to.\r\n */\r\n chemical: PropTypes.object.isRequired,\r\n\r\n /**\r\n * The chemical mix to render.\r\n */\r\n chemicalMix: PropTypes.object.isRequired,\r\n };\r\n\r\n render() {\r\n const { container, header, footer } = this.props.classes;\r\n\r\n const { chemical, chemicalMix } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n {chemicalMix.component}\r\n \r\n \r\n \r\n \r\n {chemicalMix.componentPercentage}%\r\n \r\n \r\n {chemicalMix.weightOrVolume}\r\n \r\n \r\n \r\n \r\n \r\n {chemical && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n width: '220px',\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light2']}`,\r\n },\r\n\r\n header: {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light1'],\r\n textAlign: 'center',\r\n padding: theme.spacing.smaller,\r\n minHeight: '42px',\r\n },\r\n\r\n footer: {\r\n paddingTop: theme.spacing.medium,\r\n borderTop: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light2']}`,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(ChemicalMix);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box, Column, Columns, DataGrid } from '../../../../lib/base';\r\nimport { COLOR_BASE_PRIMARY } from '../../../Constants';\r\nimport { IconMinus, IconPlus } from '../../icons';\r\nimport HeadingText from '../../text/HeadingText';\r\nimport ChemicalMix from '../chemical/ChemicalMix';\r\nimport CasLink from './CasLink';\r\nimport { isSmallScreen } from '../../../util/browser';\r\nimport LabelValuePair from '../../lv/LabelValuePair';\r\nimport Label from '../../lv/Label';\r\n\r\nconst CommonName = ({ name }) => {\r\n return ;\r\n};\r\n\r\nconst EHSName = ({ ehsName }) => {\r\n return ;\r\n};\r\n\r\nconst HazardTypes = ({ hazardTypes }) => {\r\n return ;\r\n};\r\n\r\nconst DotHazardClass = ({ dotHazClass }) => {\r\n return ;\r\n};\r\n\r\nconst CasNumber = ({ number, url, mobileUrl }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst HealthEffects = ({ value }) => {\r\n return ;\r\n};\r\n\r\nclass ChemicalsDataGrid extends Component {\r\n static propTypes = {\r\n /**\r\n * The data set.\r\n */\r\n data: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Is data loading.\r\n */\r\n isLoading: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Callback to fetch data.\r\n */\r\n onRequestData: PropTypes.func.isRequired,\r\n\r\n /**\r\n * The page number of the data set.\r\n */\r\n page: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The page size of the data set.\r\n */\r\n pageSize: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Total number of records in data set.\r\n */\r\n total: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The property name to sort the results by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is the sort ascending?\r\n */\r\n isAsc: PropTypes.bool,\r\n\r\n /**\r\n * The criteria object.\r\n */\r\n criteria: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.renderSubSection = this.renderSubSection.bind(this);\r\n }\r\n\r\n renderSubSectionDetail(chemical) {\r\n const { detailColumn } = this.props.classes;\r\n\r\n return isSmallScreen() ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderSubSectionChemicalMixes(chemical) {\r\n if (chemical.chemicalMixes.length === 0) {\r\n return ;\r\n }\r\n\r\n return isSmallScreen() ? (\r\n
\r\n \r\n \r\n {chemical.chemicalMixes.map(cm => (\r\n \r\n ))}\r\n
\r\n ) : (\r\n
\r\n \r\n \r\n \r\n {chemical.chemicalMixes.map(cm => (\r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n );\r\n }\r\n\r\n renderSubSection(chemical) {\r\n return (\r\n \r\n {this.renderSubSectionDetail(chemical)}\r\n {this.renderSubSectionChemicalMixes(chemical)}\r\n \r\n );\r\n }\r\n\r\n columns() {\r\n return [\r\n {\r\n headerLabel: '',\r\n Extender: (chemical, isOpen) => {\r\n return (\r\n \r\n {isOpen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n },\r\n width: 32,\r\n },\r\n\r\n {\r\n headerLabel: 'Name',\r\n accessor: 'chemicalName',\r\n width: 350,\r\n colName: 'CHEMICAL_NAME',\r\n criteriaPropName: 'chemicalName',\r\n },\r\n\r\n {\r\n headerLabel: 'Max Daily Amount / Unit',\r\n accessor: chemical => `${chemical.maxDailyAmountRange} ${chemical.maxDailyAmountUnit}`,\r\n width: 220,\r\n colName: 'MAX_DAILY_AMOUNT_RANGE',\r\n criteriaPropName: 'maxDailyAmountRange',\r\n },\r\n\r\n {\r\n headerLabel: 'Avg Daily Amount / Unit',\r\n accessor: chemical =>\r\n `${chemical.averageDailyAmountRange} ${chemical.averageDailyAmountUnit}`,\r\n width: 220,\r\n colName: 'AVERAGE_DAILY_AMOUNT_RANGE',\r\n criteriaPropName: 'averageDailyAmountRange',\r\n },\r\n\r\n {\r\n headerLabel: 'Days Onsite',\r\n accessor: chemical => chemical.daysOnSite,\r\n width: 125,\r\n colName: 'DAYS_ONSITE',\r\n criteriaPropName: 'daysOnSite',\r\n },\r\n\r\n {\r\n headerLabel: 'Physical State(S)',\r\n accessor: chemical => chemical.tier2PhysicalStateLabel,\r\n width: 165,\r\n colName: 'TIER2_PHYSICAL_STATE_LABEL',\r\n criteriaPropName: 'tier2PhysicalStateLabel',\r\n },\r\n ];\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Chemicals\r\n \r\n row.tier2ChemicalSeq}\r\n onRequestData={this.props.onRequestData}\r\n page={this.props.page}\r\n pageSize={this.props.pageSize}\r\n total={this.props.total}\r\n sortBy={this.props.sortBy}\r\n isAsc={this.props.isAsc}\r\n criteria={this.props.criteria}\r\n loading={this.props.isLoading}\r\n striped\r\n showPaginationBottom={this.props.total > 5}\r\n renderSubsection={this.renderSubSection}\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n detailColumn: {\r\n width: `calc(33% - ${theme.spacing.medium})`,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(ChemicalsDataGrid);\r\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { Text } from '../../../../lib/base';\nimport SpinnerPanel from '../../spinner/SpinnerPanel';\nimport ChemicalsDataGrid from './ChemicalsDataGrid';\n\nconst api = () => window.nSITE.Api;\n\nexport default class ChemicalsDataGridContainer extends PureComponent {\n static propTypes = {\n /**\n * Tier2 report to look up.\n */\n tier2ReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n chemicals: undefined,\n isInitialized: false,\n isLoading: true,\n error: undefined,\n page: 1,\n pageSize: 10,\n total: undefined,\n sortBy: ChemicalsDataGrid.DEFAULT_SORT_BY,\n isAsc: false,\n criteria: {},\n };\n\n this.handleOnRequestData = this.handleOnRequestData.bind(this);\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.tier2ReportId !== this.props.tier2ReportId) {\n this.fetchData();\n }\n }\n\n fetchData() {\n this.setState({ isLoading: true });\n\n api()\n .profile.getChemicals(this.props.tier2ReportId, {\n page: this.state.page,\n pageSize: this.state.pageSize,\n total: this.state.total,\n sortBy: this.state.sortBy,\n isAsc: this.state.isAsc,\n criteria: this.state.criteria,\n })\n .then(pageResponse => {\n this.setState({\n chemicals: pageResponse.data,\n page: pageResponse.page,\n pageSize: pageResponse.pageSize,\n total: pageResponse.total,\n sortBy: pageResponse.sortBy,\n isAsc: pageResponse.isAsc,\n criteria: pageResponse.criteria,\n isLoading: false,\n isInitialized: true,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnRequestData({ page, pageSize, sortBy, isAsc, criteria }) {\n this.setState(\n {\n page: page || this.state.page,\n pageSize: pageSize || this.state.pageSize,\n sortBy: sortBy || this.state.sortBy,\n isAsc: isAsc === undefined ? true : isAsc,\n criteria: criteria || this.state.criteria,\n },\n this.fetchData\n );\n }\n\n render() {\n if (this.state.error) {\n return {JSON.stringify(this.state.error)};\n }\n\n if (this.state.isInitialized) {\n return (\n \n );\n }\n\n return ;\n }\n}\n","import format from 'date-fns/format';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, Column, Columns, Text } from '../../../lib/base';\r\nimport Select from '../../components/form/Select';\r\nimport LabelValuePair from '../../components/lv/LabelValuePair';\r\nimport HeadingText from '../../components/text/HeadingText';\r\nimport { formatDate } from '../../util/format';\r\nimport SpinnerPanel from '../spinner/SpinnerPanel';\r\nimport ChemicalsDataGridContainer from './chemical/ChemicalsDataGridContainer';\r\n\r\nconst api = () => window.nSITE.Api;\r\n\r\nexport default class ChemicalsContainer extends Component {\r\n static propTypes = {\r\n /**\r\n * The source id of the site.\r\n */\r\n sourceIdentifier: PropTypes.string.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isInitialized: false,\r\n isLoading: true,\r\n error: undefined,\r\n tier2reports: undefined,\r\n tier2reportSelected: undefined,\r\n };\r\n\r\n this.handleOnChangeReport = this.handleOnChangeReport.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData() {\r\n this.setState({ isLoading: true });\r\n\r\n api()\r\n .profile.getTier2Reports(this.props.sourceIdentifier)\r\n .then(tier2reports => {\r\n this.setState({\r\n tier2reports: tier2reports,\r\n tier2reportSelected: tier2reports[0],\r\n error: undefined,\r\n isLoading: false,\r\n isInitialized: true,\r\n });\r\n })\r\n .catch(err => {\r\n this.setState({\r\n error: err,\r\n isLoading: false,\r\n });\r\n });\r\n }\r\n\r\n handleOnChangeReport(event, choice) {\r\n this.setState({ tier2reportSelected: choice });\r\n }\r\n\r\n renderIntro() {\r\n if (this.state.tier2reports.length > 1) {\r\n return (\r\n \r\n \r\n Select Reporting Period\r\n \r\n \r\n );\r\n } else {\r\n const report = this.state.tier2reports[0];\r\n\r\n return (\r\n \r\n \r\n Chemical Storage\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n render() {\r\n if (!this.state.isInitialized) {\r\n return null;\r\n }\r\n\r\n if (this.state.error) {\r\n return {this.state.error};\r\n }\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n if (this.state.tier2reports.length === 0) {\r\n return (\r\n \r\n No chemicals were found.\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {this.renderIntro()}\r\n\r\n {this.state.tier2reports.length > 1 && (\r\n choice.tier2ReportSeq}\r\n labelExtractor={choice =>\r\n `${choice.reportPeriod} - Sumbitted On: ${format(\r\n choice.submissionDate,\r\n 'MM/DD/YYYY'\r\n )} (${choice.chemicalCount})`\r\n }\r\n renderChoice={choice =>\r\n `${choice.reportPeriod} - Sumbitted On: ${format(\r\n choice.submissionDate,\r\n 'MM/DD/YYYY'\r\n )} (${choice.chemicalCount})`\r\n }\r\n />\r\n )}\r\n\r\n {this.state.tier2reportSelected && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n","/**\r\n * Labels by key object.\r\n */\r\nimport Config from '../config';\r\n\r\n/**\r\n * Labels by key object in sentence form.\r\n */\r\nlet labelsByKeySentenceForm = {};\r\n\r\nexport const label = (key, whenEmpty) => {\r\n return Config.getLabel(key, whenEmpty);\r\n};\r\n\r\nexport const labelCapitalized = (key, whenEmpty) => {\r\n return capitalizeFirstLetter(Config.getLabel(key, whenEmpty));\r\n};\r\n\r\nexport const labelAsSentence = (key, whenEmpty) => {\r\n const label = Config.getLabel(key, whenEmpty);\r\n\r\n if (labelsByKeySentenceForm[key]) {\r\n return labelsByKeySentenceForm[key];\r\n }\r\n\r\n const parts = label.split(' ');\r\n parts[0] = parts[0].charAt(0).toUpperCase() + parts[0].substr(1);\r\n labelsByKeySentenceForm[key] = parts.join(' ');\r\n return labelsByKeySentenceForm[key];\r\n};\r\n\r\nconst capitalizeFirstLetter = string => {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Text } from '../../../lib/base';\r\nimport Label from '../lv/Label';\r\n\r\nexport default class DocumentLink extends Component {\r\n static propTypes = {\r\n /**\r\n * Document object\r\n */\r\n documents: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Header for linked files\r\n */\r\n label: PropTypes.string.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.documents.length > 0 &&
\r\n );\r\n }\r\n}\r\n","import format from 'date-fns/format';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, DataGrid, Text } from '../../../../lib/base';\r\nimport Config from '../../../config';\r\nimport { COLOR_BASE_PRIMARY } from '../../../Constants';\r\nimport DocumentLink from '../../download/DocumentLink';\r\nimport { IconMinus, IconPlus } from '../../icons';\r\nimport LabelValuePair from '../../lv/LabelValuePair';\r\n\r\nexport default class ComplianceActionsDataGrid extends Component {\r\n static DEFAULT_SORT_BY = 'ENF_ACTION_DATE';\r\n\r\n static propTypes = {\r\n /**\r\n * The chemicals data set.\r\n */\r\n data: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Is tier2 data loading.\r\n */\r\n isLoading: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Callback to fetch data.\r\n */\r\n onRequestData: PropTypes.func.isRequired,\r\n\r\n /**\r\n * The page number of the data set.\r\n */\r\n page: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The page size of the data set.\r\n */\r\n pageSize: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Total number of records in data set.\r\n */\r\n total: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The property name to sort the results by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is the sort ascending?\r\n */\r\n isAsc: PropTypes.bool,\r\n\r\n /**\r\n * The criteria object.\r\n */\r\n criteria: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.gridColumns = [\r\n {\r\n headerLabel: '',\r\n Extender: (evaluation, isOpen) => {\r\n return (\r\n \r\n {isOpen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n },\r\n width: 32,\r\n },\r\n\r\n {\r\n headerLabel: 'Enforcement Date',\r\n accessor: action => format(action.enfActionDate, 'MM/DD/YYYY'),\r\n width: 175,\r\n colName: 'ENF_ACTION_DATE',\r\n criteriaPropName: 'date',\r\n },\r\n\r\n {\r\n headerLabel: 'Program',\r\n accessor: action => `${action.programCode} - ${action.programDesc}`,\r\n width: 500,\r\n colName: 'PROGRAM_CODE',\r\n criteriaPropName: 'program',\r\n },\r\n\r\n {\r\n headerLabel: 'Type',\r\n accessor: 'enfActionType',\r\n width: 300,\r\n colName: 'ENF_ACTION_TYPE',\r\n criteriaPropName: 'type',\r\n },\r\n ];\r\n\r\n this.renderSubsection = this.renderSubsection.bind(this);\r\n }\r\n\r\n columns() {\r\n return this.gridColumns;\r\n }\r\n\r\n renderSubsection(rowData) {\r\n const conditionallyHide = Config.isConditionallyHideOrigSysId();\r\n\r\n return (\r\n \r\n {(rowData.evaluationUrl || conditionallyHide) && (\r\n \r\n \r\n {rowData.origSysEnfActionId}\r\n \r\n \r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n row.id}\r\n onRequestData={this.props.onRequestData}\r\n page={this.props.page}\r\n pageSize={this.props.pageSize}\r\n total={this.props.total}\r\n sortBy={this.props.sortBy}\r\n isAsc={this.props.isAsc}\r\n criteria={this.props.criteria}\r\n loading={this.props.isLoading}\r\n striped\r\n showPaginationBottom={this.props.total > 5}\r\n renderSubsection={this.renderSubsection}\r\n />\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { Text } from '../../../../lib/base';\nimport SpinnerPanel from '../../spinner/SpinnerPanel';\nimport ComplianceActionsDataGrid from './ComplianceActionsDataGrid';\n\nconst api = () => window.nSITE.Api;\n\nexport default class ComplianceActionsContainer extends PureComponent {\n static propTypes = {\n /**\n * Source identifier to look up.\n */\n sourceIdentifier: PropTypes.string.isRequired,\n\n /**\n * Filter compliance actions on whether formal or informal.\n */\n isFormal: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n complianceActions: undefined,\n isInitialized: false,\n isLoading: true,\n error: undefined,\n page: 1,\n pageSize: 10,\n total: undefined,\n sortBy: ComplianceActionsDataGrid.DEFAULT_SORT_BY,\n isAsc: false,\n criteria: {},\n };\n\n this.handleOnRequestData = this.handleOnRequestData.bind(this);\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n fetchData() {\n this.setState({ isLoading: true });\n\n api()\n .profile.getComplianceActions(this.props.sourceIdentifier, {\n isFormal: this.props.isFormal,\n page: this.state.page,\n pageSize: this.state.pageSize,\n total: this.state.total,\n sortBy: this.state.sortBy,\n isAsc: this.state.isAsc,\n criteria: this.state.criteria,\n })\n .then(pageResponse => {\n this.setState({\n complianceActions: pageResponse.data,\n page: pageResponse.page,\n pageSize: pageResponse.pageSize,\n total: pageResponse.total,\n sortBy: pageResponse.sortBy,\n isAsc: pageResponse.isAsc,\n criteria: pageResponse.criteria,\n isLoading: false,\n isInitialized: true,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnRequestData({ page, pageSize, sortBy, isAsc, criteria }) {\n this.setState(\n {\n page: page || this.state.page,\n pageSize: pageSize || this.state.pageSize,\n sortBy: sortBy || this.state.sortBy,\n isAsc: isAsc === undefined ? true : isAsc,\n criteria: criteria || this.state.criteria,\n },\n this.fetchData\n );\n }\n\n render() {\n if (this.state.error) {\n return {JSON.stringify(this.state.error)};\n }\n\n if (this.state.isInitialized) {\n return (\n \n );\n }\n\n return ;\n }\n}\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport { Box } from '../../../../../lib/base';\r\nimport HeadingText from '../../../text/HeadingText';\r\n\r\nexport default class ComplianceDataSection extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Section title.\r\n */\r\n title: PropTypes.string.isRequired,\r\n\r\n /**\r\n * Is visible on the screen.\r\n */\r\n visible: PropTypes.bool.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.props.title}\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport { Box, Text } from '../../../../../lib/base';\r\n\r\nexport default class ComplianceDataSectionEmpty extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Children.\r\n */\r\n children: PropTypes.string.isRequired,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box, Column, Columns, Text } from '../../../../../lib/base';\r\nimport { COLOR_BASE_PRIMARY, COLOR_VARIANT_PRIMARY } from '../../../../Constants';\r\nimport HeadingText from '../../../text/HeadingText';\r\n\r\nclass ComplianceDataTab extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Tab is active.\r\n */\r\n active: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Tab title.\r\n */\r\n title: PropTypes.string.isRequired,\r\n\r\n /**\r\n * An array of sections each having a label and value property.\r\n */\r\n sections: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.string.isRequired,\r\n count: PropTypes.number.isRequired,\r\n })\r\n ).isRequired,\r\n\r\n /**\r\n * onClick handler.\r\n */\r\n onClick: PropTypes.func,\r\n };\r\n\r\n render() {\r\n const { activeTab, tab } = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.props.title}\r\n \r\n \r\n {this.props.sections.map(s => (\r\n \r\n \r\n \r\n {s.label}\r\n \r\n \r\n \r\n {s.count || 0}\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n tab: {\r\n minHeight: '120px',\r\n height: '100%',\r\n padding: theme.spacing.medium,\r\n backgroundColor: 'transparent',\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['light2']}`,\r\n '&:hover': {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light1'],\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['dark3']}`,\r\n transition: 'all 350ms',\r\n },\r\n },\r\n\r\n activeTab: {\r\n extend: 'tab',\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light1'],\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY][COLOR_VARIANT_PRIMARY]}`,\r\n\r\n '&:hover': {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light1'],\r\n border: `1px solid ${theme.color[COLOR_BASE_PRIMARY]['dark3']}`,\r\n transition: 'all 350ms',\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(ComplianceDataTab);\r\n","import format from 'date-fns/format';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, DataGrid, Text } from '../../../../lib/base';\r\nimport Config from '../../../config';\r\nimport { COLOR_BASE_PRIMARY } from '../../../Constants';\r\nimport DocumentLink from '../../download/DocumentLink';\r\nimport { IconMinus, IconPlus } from '../../icons';\r\nimport LabelValuePair from '../../lv/LabelValuePair';\r\n\r\nexport default class EvaluationsDataGrid extends Component {\r\n static DEFAULT_SORT_BY = 'EVALUATION_DATE';\r\n\r\n static propTypes = {\r\n /**\r\n * The data set.\r\n */\r\n data: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Is data loading.\r\n */\r\n isLoading: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Callback to fetch data.\r\n */\r\n onRequestData: PropTypes.func.isRequired,\r\n\r\n /**\r\n * The page number of the data set.\r\n */\r\n page: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The page size of the data set.\r\n */\r\n pageSize: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Total number of records in data set.\r\n */\r\n total: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The property name to sort the results by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is the sort ascending?\r\n */\r\n isAsc: PropTypes.bool,\r\n\r\n /**\r\n * The criteria object.\r\n */\r\n criteria: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.gridColumns = [\r\n {\r\n Extender: (evaluation, isOpen) => {\r\n return (\r\n \r\n {isOpen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n },\r\n headerLabel: '',\r\n width: 32,\r\n },\r\n\r\n {\r\n headerLabel: 'Date',\r\n accessor: evaluation => format(evaluation.evaluationDate, 'MM/DD/YYYY'),\r\n width: 150,\r\n colName: 'EVALUATION_DATE',\r\n criteriaPropName: 'date',\r\n },\r\n\r\n {\r\n headerLabel: 'Program',\r\n accessor: evaluation => `${evaluation.programCode} - ${evaluation.programDesc}`,\r\n width: 500,\r\n colName: 'PROGRAM_CODE',\r\n criteriaPropName: 'program',\r\n },\r\n\r\n {\r\n headerLabel: 'Type',\r\n accessor: 'evaluationType',\r\n colName: 'EVALUATION_TYPE',\r\n criteriaPropName: 'type',\r\n width: 300,\r\n },\r\n ];\r\n\r\n this.renderSubsection = this.renderSubsection.bind(this);\r\n }\r\n\r\n columns() {\r\n return this.gridColumns;\r\n }\r\n\r\n renderSubsection(rowData) {\r\n const conditionallyHide = Config.isConditionallyHideOrigSysId();\r\n\r\n return (\r\n \r\n {(rowData.evaluationUrl || conditionallyHide) && (\r\n \r\n \r\n {rowData.origSysEvalId}\r\n \r\n \r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n row.id}\r\n onRequestData={this.props.onRequestData}\r\n page={this.props.page}\r\n pageSize={this.props.pageSize}\r\n total={this.props.total}\r\n sortBy={this.props.sortBy}\r\n isAsc={this.props.isAsc}\r\n criteria={this.props.criteria}\r\n loading={this.props.isLoading}\r\n striped\r\n showPaginationBottom={this.props.total > 5}\r\n renderSubsection={this.renderSubsection}\r\n />\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport SpinnerPanel from '../../spinner/SpinnerPanel';\nimport EvaluationsDataGrid from './EvaluationsDataGrid';\n\nconst api = () => window.nSITE.Api;\n\nexport default class EvaluationsContainer extends PureComponent {\n static propTypes = {\n /**\n * Source identifier to look up.\n */\n sourceIdentifier: PropTypes.string.isRequired,\n\n /**\n * Filter evaluations on whether violations were found or not found.\n */\n violationsFound: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n evaluations: undefined,\n isInitialized: false,\n isLoading: true,\n error: undefined,\n page: 1,\n pageSize: 10,\n total: undefined,\n sortBy: EvaluationsDataGrid.DEFAULT_SORT_BY,\n isAsc: false,\n criteria: {},\n };\n\n this.handleOnRequestData = this.handleOnRequestData.bind(this);\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n fetchData() {\n this.setState({ isLoading: true });\n\n api()\n .profile.getComplianceEvaluations(this.props.sourceIdentifier, {\n isViolationsFound: this.props.violationsFound,\n page: this.state.page,\n pageSize: this.state.pageSize,\n total: this.state.total,\n sortBy: this.state.sortBy,\n isAsc: this.state.isAsc,\n criteria: this.state.criteria,\n })\n .then(pageResponse => {\n this.setState({\n evaluations: pageResponse.data,\n page: pageResponse.page,\n pageSize: pageResponse.pageSize,\n total: pageResponse.total,\n sortBy: pageResponse.sortBy,\n isAsc: pageResponse.isAsc,\n criteria: pageResponse.criteria,\n isLoading: false,\n isInitialized: true,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnRequestData({ page, pageSize, sortBy, isAsc, criteria }) {\n this.setState(\n {\n page: page || this.state.page,\n pageSize: pageSize || this.state.pageSize,\n sortBy: sortBy || this.state.sortBy,\n isAsc: isAsc === undefined ? true : isAsc,\n criteria: criteria || this.state.criteria,\n },\n this.fetchData\n );\n }\n\n render() {\n if (this.state.isInitialized) {\n return (\n \n );\n }\n\n return ;\n }\n}\n","import format from 'date-fns/format';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box, DataGrid, Text } from '../../../../lib/base';\r\nimport Config from '../../../config';\r\nimport { COLOR_BASE_PRIMARY } from '../../../Constants';\r\nimport DocumentLink from '../../download/DocumentLink';\r\nimport { IconMinus, IconPlus } from '../../icons';\r\nimport Label from '../../lv/Label';\r\nimport LabelValuePair from '../../lv/LabelValuePair';\r\n\r\nexport default class ViolationsDataGrid extends Component {\r\n static DEFAULT_SORT_BY = 'DETERMINATION_DATE';\r\n\r\n static propTypes = {\r\n /**\r\n * The chemicals data set.\r\n */\r\n data: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Is tier2 data loading.\r\n */\r\n isLoading: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Callback to fetch data.\r\n */\r\n onRequestData: PropTypes.func.isRequired,\r\n\r\n /**\r\n * The page number of the data set.\r\n */\r\n page: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The page size of the data set.\r\n */\r\n pageSize: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Total number of records in data set.\r\n */\r\n total: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The property name to sort the results by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is the sort ascending?\r\n */\r\n isAsc: PropTypes.bool,\r\n\r\n /**\r\n * The criteria object.\r\n */\r\n criteria: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.gridColumns = [\r\n {\r\n headerLabel: '',\r\n Extender: (violation, isOpen) => {\r\n return (\r\n \r\n {isOpen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n },\r\n width: 32,\r\n },\r\n\r\n {\r\n headerLabel: 'Determination Date',\r\n accessor: violation => format(violation.determinationDate, 'MM/DD/YYYY'),\r\n width: 200,\r\n colName: 'DETERMINATION_DATE',\r\n criteriaPropName: 'date',\r\n },\r\n\r\n {\r\n headerLabel: 'Program',\r\n accessor: violation => `${violation.programCode} - ${violation.programDesc}`,\r\n width: 600,\r\n colName: 'PROGRAM_DESC',\r\n criteriaPropName: 'program',\r\n },\r\n ];\r\n\r\n this.renderSubsection = this.renderSubsection.bind(this);\r\n }\r\n\r\n columns() {\r\n return this.gridColumns;\r\n }\r\n\r\n renderSubsection(rowData) {\r\n const conditionallyHide = Config.isConditionallyHideOrigSysId();\r\n\r\n return (\r\n \r\n {(rowData.evaluationUrl || conditionallyHide) && (\r\n \r\n \r\n {rowData.origSysViolationId}\r\n \r\n \r\n }\r\n />\r\n )}\r\n \r\n\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n row.id}\r\n onRequestData={this.props.onRequestData}\r\n page={this.props.page}\r\n pageSize={this.props.pageSize}\r\n sortBy={this.props.sortBy}\r\n isAsc={this.props.isAsc}\r\n criteria={this.props.criteria}\r\n total={this.props.total}\r\n loading={this.props.isLoading}\r\n striped\r\n showPaginationBottom={this.props.total > 5}\r\n renderSubsection={this.renderSubsection}\r\n />\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport SpinnerPanel from '../../spinner/SpinnerPanel';\nimport ViolationsDataGrid from './ViolationsDataGrid';\n\nconst api = () => window.nSITE.Api;\n\nexport default class ViolationsContainer extends PureComponent {\n static propTypes = {\n /**\n * Source identifier to look up.\n */\n sourceIdentifier: PropTypes.string.isRequired,\n\n /**\n * Filter evaluations on whether violations were found or not found.\n */\n isOpen: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n violations: undefined,\n isInitialized: false,\n isLoading: true,\n error: undefined,\n page: 1,\n pageSize: 10,\n total: undefined,\n sortBy: ViolationsDataGrid.DEFAULT_SORT_BY,\n isAsc: false,\n criteria: {},\n };\n\n this.handleOnRequestData = this.handleOnRequestData.bind(this);\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n fetchData() {\n this.setState({ isLoading: true });\n\n api()\n .profile.getComplianceViolations(this.props.sourceIdentifier, {\n isOpen: this.props.isOpen,\n page: this.state.page,\n pageSize: this.state.pageSize,\n total: this.state.total,\n sortBy: this.state.sortBy,\n isAsc: this.state.isAsc,\n criteria: this.state.criteria,\n })\n .then(pageResponse => {\n this.setState({\n violations: pageResponse.data,\n page: pageResponse.page,\n pageSize: pageResponse.pageSize,\n total: pageResponse.total,\n sortBy: pageResponse.sortBy,\n isAsc: pageResponse.isAsc,\n criteria: pageResponse.criteria,\n isLoading: false,\n isInitialized: true,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnRequestData({ page, pageSize, sortBy, isAsc, criteria }) {\n this.setState(\n {\n page: page || this.state.page,\n pageSize: pageSize || this.state.pageSize,\n sortBy: sortBy || this.state.sortBy,\n isAsc: isAsc === undefined ? true : isAsc,\n criteria: criteria || this.state.criteria,\n },\n this.fetchData\n );\n }\n\n render() {\n if (this.state.isInitialized) {\n return (\n \n );\n }\n\n return ;\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Box, Column, Columns, Text } from '../../../lib/base';\nimport SpinnerPanel from '../../components/spinner/SpinnerPanel';\nimport ConfigKeys from '../../config/keys';\nimport { isSmallScreen } from '../../util/browser';\nimport { label, labelCapitalized } from '../../util/label';\nimport Select from '../form/Select';\nimport HeadingText from '../text/HeadingText';\nimport ComplianceActionsContainer from './compliance/ComplianceActionsContainer';\nimport ComplianceDataSection from './compliance/component/ComplianceDataSection';\nimport ComplianceDataSectionEmpty from './compliance/component/ComplianceDataSectionEmpty';\nimport ComplianceDataTab from './compliance/component/ComplianceDataTab';\nimport EvaluationsContainer from './compliance/EvaluationsContainer';\nimport ViolationsContainer from './compliance/ViolationsContainer';\n\nconst COMPLIANCE_TABS = ['EVALUATIONS', 'VIOLATIONS', 'COMPLIANCE_ACTIONS'];\n\nconst api = () => window.nSITE.Api;\n\nclass ComplianceContainer extends Component {\n static propTypes = {\n /**\n * The source identifier.\n */\n sourceIdentifier: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n sourceIdentifier: undefined,\n isLoading: true,\n tabs: undefined,\n activeTab: undefined,\n };\n\n this.handleOnClickTab = this.handleOnClickTab.bind(this);\n this.handleOnChangeTab = this.handleOnChangeTab.bind(this);\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.sourceIdentifier !== this.props.sourceIdentifier) {\n this.fetchData();\n }\n }\n\n handleOnClickTab(tab) {\n this.setState({ activeTab: tab });\n }\n\n handleOnChangeTab(event, tab) {\n this.setState({ activeTab: tab });\n }\n\n fetchData() {\n api()\n .profile.getComplianceSummary(this.props.sourceIdentifier)\n .then(complianceSummary => {\n const tabs = this.tabData(complianceSummary);\n\n this.setState({\n complianceSummary,\n tabs,\n isLoading: false,\n activeTab: tabs[0],\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n tabData(complianceSummary) {\n if (!complianceSummary) {\n return;\n }\n\n const tabs = [];\n\n const evaluationSections = complianceSummary.isShowTotalEvaluationsOnly\n ? [{ label: 'Total', count: this.props.evaluationsCount }]\n : [\n {\n label: label(ConfigKeys.LABEL_COMPLIANCE_HAS_VIOLATIONS, 'Violations Found'),\n count: complianceSummary.evaluationsViolationFoundCount,\n },\n {\n label: label(ConfigKeys.LABEL_COMPLIANCE_NO_VIOLATIONS, 'Violations Not Found'),\n count: complianceSummary.evaluationsViolationNotFoundCount,\n },\n ];\n\n const violationsSections = complianceSummary.isShowTotalViolationsOnly\n ? [{ label: 'Total', count: complianceSummary.violationsTotal }]\n : [\n {\n label: label(ConfigKeys.LABEL_VIOLATIONS_OPEN, 'Open'),\n count: complianceSummary.violationsOpenCount,\n },\n {\n label: label(ConfigKeys.LABEL_VIOLATIONS_CLOSED, 'Closed'),\n count: complianceSummary.violationsClosedCount,\n },\n ];\n\n const actionsSections = complianceSummary.isShowTotalComplianceActionsOnly\n ? [{ label: 'Total', count: complianceSummary.complianceActionsTotal }]\n : [\n {\n label: label(ConfigKeys.LABEL_COMPLIANCE_ACTIONS_FORMAL, 'Formal'),\n count: complianceSummary.complianceActionsFormalCount,\n },\n {\n label: label(ConfigKeys.LABEL_COMPLIANCE_ACTIONS_INFORMAL, 'Informal'),\n count: complianceSummary.complianceActionsInformalCount,\n },\n ];\n\n tabs.push({\n id: COMPLIANCE_TABS[0],\n title: labelCapitalized(ConfigKeys.LABEL_COMPLIANCE_EVALUATIONS, 'Evaluations'),\n sections: evaluationSections,\n });\n\n tabs.push({\n id: COMPLIANCE_TABS[1],\n title: labelCapitalized(ConfigKeys.LABEL_COMPLIANCE_VIOLATIONS, 'Violations'),\n sections: violationsSections,\n });\n\n tabs.push({\n id: COMPLIANCE_TABS[2],\n title: labelCapitalized(ConfigKeys.LABEL_COMPLIANCE_ACTIONS, 'Compliance Actions'),\n sections: actionsSections,\n });\n\n return tabs;\n }\n\n isTabActive(tab) {\n return this.state.activeTab && this.state.activeTab.id === tab.id;\n }\n\n renderComplianceEvaluationsPanel() {\n return this.state.complianceSummary.isShowTotalEvaluationsOnly\n ? this.renderComplianceEvaluationsPanelTotal(this.state.complianceSummary)\n : this.renderComplianceEvaluationsPanelEach(this.state.complianceSummary);\n }\n\n renderComplianceEvaluationsPanelTotal() {\n const count = this.props.evaluationsCount;\n\n if (count === 0) {\n return (\n No compliance evaluations found.\n );\n }\n\n return (\n 0} title=\"Total\">\n \n \n );\n }\n\n renderComplianceEvaluationsPanelEach(complianceSummary) {\n const foundCount = complianceSummary.evaluationsViolationFoundCount;\n const notFoundCount = complianceSummary.evaluationsViolationNotFoundCount;\n\n if (foundCount === 0 && notFoundCount === 0) {\n return (\n No compliance evaluations found.\n );\n } else {\n const foundTitle =\n label(ConfigKeys.LABEL_COMPLIANCE_HAS_VIOLATIONS, 'Violations Found') + ` (${foundCount})`;\n const notFoundTitle =\n label(ConfigKeys.LABEL_COMPLIANCE_NO_VIOLATIONS, 'Violations Not Found') +\n ` (${notFoundCount})`;\n\n return (\n \n 0} title={foundTitle}>\n \n \n 0} title={notFoundTitle}>\n \n \n \n );\n }\n }\n\n renderViolationsPanel() {\n return this.state.complianceSummary.isShowTotalViolationsOnly\n ? this.renderViolationsPanelTotal(this.state.complianceSummary)\n : this.renderViolationsPanelEach(this.state.complianceSummary);\n }\n\n renderViolationsPanelTotal(complianceSummary) {\n const count = complianceSummary.violationsTotal;\n\n if (count === 0) {\n return No violations found.;\n }\n\n return (\n 0} title=\"Total\">\n \n \n );\n }\n\n renderViolationsPanelEach(complianceSummary) {\n const openCount = complianceSummary.violationsOpenCount;\n const closedCount = complianceSummary.violationsClosedCount;\n\n if (openCount === 0 && closedCount === 0) {\n return No violations found.;\n } else {\n const openTitle = label(ConfigKeys.LABEL_VIOLATIONS_OPEN, 'Open') + ` (${openCount})`;\n const closedTitle = label(ConfigKeys.LABEL_VIOLATIONS_CLOSED, 'Closed') + ` (${closedCount})`;\n\n return (\n \n 0} title={openTitle}>\n \n \n 0} title={closedTitle}>\n \n \n \n );\n }\n }\n\n renderComplianceActions() {\n return this.state.complianceSummary.isShowTotalComplianceActionsOnly\n ? this.renderComplianceActionsTotal(this.state.complianceSummary)\n : this.renderComplianceActionsEach(this.state.complianceSummary);\n }\n\n renderComplianceActionsTotal(complianceSummary) {\n const count = complianceSummary.complianceActionsTotal;\n\n if (count === 0) {\n return No compliance actions found.;\n }\n\n return (\n 0} title=\"Total\">\n \n \n );\n }\n\n renderComplianceActionsEach(complianceSummary) {\n const formalCount = complianceSummary.complianceActionsFormalCount;\n const informalCount = complianceSummary.complianceActionsInformalCount;\n\n if (formalCount === 0 && informalCount === 0) {\n return No compliance actions found.;\n } else {\n const formalTitle =\n label(ConfigKeys.LABEL_COMPLIANCE_ACTIONS_FORMAL, 'Formal') + ` (${formalCount})`;\n const informalTitle =\n label(ConfigKeys.LABEL_COMPLIANCE_ACTIONS_INFORMAL, 'Informal') + ` (${informalCount})`;\n\n return (\n \n 0} title={formalTitle}>\n \n \n 0} title={informalTitle}>\n \n \n \n );\n }\n }\n\n renderTabs() {\n if (isSmallScreen()) {\n const label = choice => (\n \n {choice.title}\n {choice.sections.map(s => (\n \n \n \n {s.label}\n \n \n \n {s.count || 0}\n \n \n \n \n ))}\n \n );\n\n return (\n choice.id}\n labelExtractor={choice => label(choice)}\n renderChoice={choice => label(choice)}\n />\n );\n } else {\n return (\n \n {this.state.tabs.map(tab => (\n \n this.handleOnClickTab(tab)}\n sections={tab.sections}\n />\n \n ))}\n \n );\n }\n }\n\n render() {\n if (this.state.isLoading) {\n return ;\n }\n\n if (this.state.error) {\n return {this.state.error};\n }\n\n if (!this.state.tabs) {\n return null;\n }\n\n return (\n \n {this.renderTabs()}\n\n \n {this.state.activeTab.id === COMPLIANCE_TABS[0] &&\n this.renderComplianceEvaluationsPanel()}\n\n {this.state.activeTab.id === COMPLIANCE_TABS[1] && this.renderViolationsPanel()}\n\n {this.state.activeTab.id === COMPLIANCE_TABS[2] && this.renderComplianceActions()}\n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n evaluationsCount: state.profile.detail.data.profileFacilityDetail.totalComplianceEvaluations,\n };\n}\n\nexport default connect(mapStateToProps)(ComplianceContainer);\n","import PropTypes from \"prop-types\";\nimport React, { Fragment, PureComponent } from \"react\";\nimport { Link, Text } from \"../../../../lib/base\";\nimport { downloadFileImproved } from \"../../../util/downloadFile\";\nimport { IconSpinner } from \"../../icons\";\nimport Config from \"../../../config\";\n\nexport default class DocumentLink extends PureComponent {\n static propTypes = {\n /**\n * Children components.\n */\n document: PropTypes.object.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n isFetching: false\n };\n this.ncoreFileBaseUrl = Config.getNcoreFileUrl();\n this.ncorePdfBaseUrl = Config.getNcorePdfUrl();\n }\n\n onClickLink = async () => {\n const { document } = this.props;\n let docUrl = \"\";\n if (this.ncoreFileBaseUrl || this.ncorePdfBaseUrl) {\n docUrl = document.hasPdfContent ? this.ncorePdfBaseUrl : this.ncoreFileBaseUrl;\n docUrl += document.docId;\n } else {\n docUrl = document.url;\n }\n return downloadFileImproved({\n url: docUrl,\n fileName: document.docName,\n onFetchBegin: () => this.setState({ isFetching: true }),\n onFetchEnd: () => this.setState({ isFetching: false }),\n onFetchError: e =>\n window.alert(`Unable to download the file ${document.docName}. ${e.message}`)\n });\n };\n\n render() {\n const { document } = this.props;\n\n return (\n \n {document.docName}\n {this.state.isFetching && (\n \n {\" \"}\n \n \n )}\n \n );\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { DataGrid } from '../../../../lib/base';\nimport { formatDate } from '../../../util/format';\nimport DocumentLink from './DocumentLink';\n\nconst keyExtractor = (doc) => doc.profileDocumentId;\n\nconst columns = [\n {\n headerLabel: 'Date',\n accessor: document => formatDate(document.docDate),\n width: 140,\n colName: 'DOC_DATE',\n criteriaPropName: 'date',\n },\n {\n headerLabel: 'File',\n accessor: doc => ,\n width: 300,\n colName: 'DOC_NAME',\n criteriaPropName: 'file',\n },\n {\n headerLabel: 'Type',\n accessor: 'docType',\n width: 250,\n colName: 'DOC_TYPE',\n criteriaPropName: 'type',\n },\n {\n headerLabel: 'Description',\n accessor: 'docDesc',\n width: 500,\n colName: 'DOC_DESC',\n criteriaPropName: 'description',\n },\n];\n\nexport default class DocumentsDataGrid extends Component {\n static propTypes = {\n /**\n * The chemicals data set.\n */\n data: PropTypes.array.isRequired,\n\n /**\n * Is tier2 data loading.\n */\n isLoading: PropTypes.bool.isRequired,\n\n /**\n * Callback to fetch data.\n */\n onRequestData: PropTypes.func.isRequired,\n\n /**\n * The page number of the data set.\n */\n page: PropTypes.number.isRequired,\n\n /**\n * The page size of the data set.\n */\n pageSize: PropTypes.number.isRequired,\n\n /**\n * Total number of records in data set.\n */\n total: PropTypes.number.isRequired,\n\n /**\n * The property name to sort the results by.\n */\n sortBy: PropTypes.string,\n\n /**\n * Is the sort ascending?\n */\n isAsc: PropTypes.bool,\n\n /**\n * The criteria object.\n */\n criteria: PropTypes.object,\n\n /**\n * Callback when a row is selected.\n */\n onSelect: PropTypes.func,\n\n /**\n * Pre-selections\n */\n selections: PropTypes.array,\n };\n\n render() {\n return (\n \n );\n }\n}\n","/**\n * Downloads a zipped collection of files from submitted doc ids\n * docs should be in the format { id: int, loadDocPdfContent: bool }\n */\nimport Config from \"../../../config\";\nimport { downloadFile } from \"../../../util/downloadFile\";\n\nconst urlArchiveId = () => {\n return `${Config.getNCoreBaseUrl()}/ss/documentcontentarchives`;\n};\n\nconst urlArchive = archiveId => {\n return `${Config.getNCoreBaseUrl()}/DownloadDocumentArchive/${archiveId}`;\n};\n\nconst fetchDocumentArchiveId = async (url, docs) => {\n const response = await fetch(url, {\n method: \"POST\",\n mode: \"cors\",\n credentials: \"same-origin\",\n body: JSON.stringify(docs)\n });\n const json = await response.json();\n\n if (!json.queryResults) {\n console.error(\"Server failed while creating the archive.\", docs);\n throw Error(\"Server failed while creating the archive.\");\n }\n\n return json.queryResults[0].archiveId;\n};\n\nexport async function downloadViaWSL(docs) {\n try {\n const url = urlArchiveId();\n const archiveId = await fetchDocumentArchiveId(url, docs);\n const archiveUrl = urlArchive(archiveId);\n return downloadFile(archiveUrl, \"documents.zip\");\n } catch (e) {\n window.alert(\"Unable to download document archive. \" + e.message);\n console.error(e);\n return false;\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Fragment, PureComponent } from 'react';\nimport { Button } from '../../../../lib/base';\nimport { COLOR_BASE_PRIMARY } from '../../../Constants';\nimport { IconSpinner } from '../../icons';\nimport { downloadViaWSL } from './downloadViaWSL';\n\nexport default class DownloadSelectionsButton extends PureComponent {\n static propTypes = {\n /**\n * Document selections\n */\n children: PropTypes.node,\n };\n\n static defaultProps = {\n selections: [],\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n isLoading: false,\n };\n\n this.handleOnDownloadDocs = this.handleOnDownloadDocs.bind(this);\n }\n\n async handleOnDownloadDocs() {\n this.setState({ isDownloading: true });\n\n try {\n let queryParams = this.props.selections.map(document => ({\n id: document.docId,\n loadDocPdfContent: document.hasPdfContent,\n }));\n\n await downloadViaWSL({ queryParams });\n\n this.setState({ isDownloading: false });\n } catch (e) {\n window.alert('An error occurred while downloading documents. ' + e.message);\n this.setState({ isDownloading: false });\n }\n }\n\n isButtonDisabled() {\n return this.props.selections.length === 0;\n }\n\n buttonText() {\n return `Download ${this.props.selections.length} documents`;\n }\n\n render() {\n return (\n \n {this.buttonText()}\n {this.state.isDownloading && (\n \n {' '}\n \n \n )}\n \n );\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Box, Column, Columns, Link, Text } from '../../../lib/base';\nimport SpinnerPanel from '../spinner/SpinnerPanel';\nimport DocumentsDataGrid from './documents/DocumentsDataGrid';\nimport DownloadSelectionsButton from './documents/DownloadSelectionsButton';\n\nconst api = () => window.nSITE.Api;\n\nexport default class DocumentsContainer extends Component {\n static DEFAULT_SORT_BY = 'DOC_DATE';\n\n static propTypes = {\n /**\n * Source identifier to look up.\n */\n sourceIdentifier: PropTypes.string,\n /**\n * Application settings.\n */\n settings: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n documents: undefined,\n isInitialized: false,\n isLoading: true,\n error: undefined,\n page: 1,\n pageSize: 10,\n total: undefined,\n sortBy: DocumentsDataGrid.DEFAULT_SORT_BY,\n isAsc: false,\n criteria: {},\n selections: [],\n count: 0,\n };\n\n this.handleOnRequestData = this.handleOnRequestData.bind(this);\n this.handleOnSelect = this.handleOnSelect.bind(this);\n this.handleOnSelectAll = this.handleOnSelectAll.bind(this);\n this.handleOnClear = this.handleOnClear.bind(this);\n }\n\n componentDidMount() {\n this.fetchData();\n this.fetchCount();\n }\n\n fetchData() {\n this.setState({ isLoading: true });\n\n api()\n .profile.getDocuments(this.props.sourceIdentifier, {\n page: this.state.page,\n pageSize: this.state.pageSize,\n total: this.state.total,\n sortBy: this.state.sortBy,\n isAsc: this.state.isAsc,\n criteria: this.state.criteria,\n })\n .then(pageResponse => {\n this.setState({\n documents: pageResponse.data,\n page: pageResponse.page,\n pageSize: pageResponse.pageSize,\n total: pageResponse.total,\n sortBy: pageResponse.sortBy,\n isAsc: pageResponse.isAsc,\n criteria: pageResponse.criteria,\n isLoading: false,\n isInitialized: true,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnRequestData({ page, pageSize, sortBy, isAsc, criteria }) {\n this.setState(\n {\n page: page || this.state.page,\n pageSize: pageSize || this.state.pageSize,\n sortBy: sortBy || this.state.sortBy,\n isAsc: isAsc === undefined ? true : isAsc,\n criteria: criteria || this.state.criteria,\n },\n this.fetchData\n );\n }\n\n fetchCount() {\n this.setState({\n isLoading: true,\n });\n\n api()\n .profile.getDocumentsCount(this.props.sourceIdentifier)\n .then(count => {\n this.setState({\n count: count,\n isLoading: false,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnSelect(selections) {\n this.setState({\n selections: selections,\n });\n }\n\n handleOnSelectAll() {\n this.setState({\n isLoading: true,\n });\n\n api()\n .profile.getDocumentsAll(this.props.sourceIdentifier)\n .then(documents => {\n this.setState({\n selections: documents,\n isLoading: false,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnClear() {\n this.setState({\n selections: [],\n });\n }\n\n renderSelectAll() {\n if (this.state.count === this.state.selections.length) {\n return (\n \n Select All {this.state.count} Documents\n \n );\n }\n\n return (\n \n Select All {this.state.count} Documents\n \n );\n }\n\n renderClearSelections() {\n if (this.state.selections.length > 0) {\n return (\n \n Clear Selections\n \n );\n }\n\n return Clear Selections;\n }\n\n render() {\n if (this.state.isInitialized) {\n return (\n \n \n \n \n \n \n {this.renderSelectAll()}\n {this.renderClearSelections()}\n \n \n \n \n );\n }\n\n return ;\n }\n}\n","/**\n * Returns true when the string is null, undefined, or empty string.\n *\n * @param str the specimen\n * @returns {boolean} is blank\n */\nexport const isBlank = str => !str || str.trim().length === 0;\n\n/**\n * Returns true when the string is not null, not undefined, or not an empty string.\n *\n * @param str the specimen\n * @returns {boolean} is blank\n */\nexport const isNotBlank = str => !isBlank(str);\n\n/**\n * validates a string as an email\n */\nexport const isEmail = str => {\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(str).toLowerCase());\n};\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { DataGrid } from '../../../lib/base';\r\nimport Link from '../../../lib/base/text/Link';\r\nimport { formatDate } from '../../util/format';\r\nimport { isNotBlank } from '../../util/string';\r\n\r\nexport default class EnvironmentalInterestsDataGrid extends Component {\r\n static DEFAULT_SORT_BY = 'TYPE_DESC';\r\n\r\n static propTypes = {\r\n /**\r\n * The data set.\r\n */\r\n data: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Is data loading.\r\n */\r\n isLoading: PropTypes.bool.isRequired,\r\n\r\n /**\r\n * Callback to fetch data.\r\n */\r\n onRequestData: PropTypes.func.isRequired,\r\n\r\n /**\r\n * The page number of the data set.\r\n */\r\n page: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The page size of the data set.\r\n */\r\n pageSize: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Total number of records in data set.\r\n */\r\n total: PropTypes.number.isRequired,\r\n\r\n /**\r\n * The property name to sort the results by.\r\n */\r\n sortBy: PropTypes.string,\r\n\r\n /**\r\n * Is the sort ascending?\r\n */\r\n isAsc: PropTypes.bool,\r\n\r\n /**\r\n * The criteria object.\r\n */\r\n criteria: PropTypes.object,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.gridColumns = [\r\n {\r\n headerLabel: 'Description',\r\n accessor: 'typeDesc',\r\n colName: 'TYPE_DESC',\r\n width: 200,\r\n criteriaPropName: 'description',\r\n },\r\n {\r\n headerLabel: 'Source System',\r\n accessor: 'osDesc',\r\n colName: 'OS_DESC',\r\n width: 200,\r\n criteriaPropName: 'sourceSystem',\r\n },\r\n {\r\n headerLabel: 'Program Id',\r\n accessor: ei => {\r\n if (isNotBlank(ei.facilityPageUrl)) {\r\n return (\r\n \r\n {ei.programId}\r\n \r\n );\r\n }\r\n\r\n return ei.programId;\r\n },\r\n colName: 'PROGRAM_ID',\r\n width: 130,\r\n criteriaPropName: 'programId',\r\n },\r\n {\r\n headerLabel: 'Start Date',\r\n accessor: item => formatDate(item.startDate),\r\n colName: 'START_DATE',\r\n width: 130,\r\n criteriaPropName: 'startDate',\r\n },\r\n {\r\n headerLabel: 'End Date',\r\n accessor: item => formatDate(item.endDate),\r\n colName: 'END_DATE',\r\n width: 130,\r\n criteriaPropName: 'endDate',\r\n },\r\n {\r\n headerLabel: 'Long Description',\r\n accessor: 'typeDescLong',\r\n colName: 'TYPE_DESC_LONG',\r\n width: 600,\r\n criteriaPropName: 'longDescription',\r\n },\r\n ];\r\n }\r\n\r\n columns() {\r\n return this.gridColumns;\r\n }\r\n\r\n render() {\r\n return (\r\n `${row.typeDesc}-${row.programId}-${row.sourceIdentifier}`}\r\n onRequestData={this.props.onRequestData}\r\n page={this.props.page}\r\n pageSize={this.props.pageSize}\r\n total={this.props.total}\r\n sortBy={this.props.sortBy}\r\n isAsc={this.props.isAsc}\r\n criteria={this.props.criteria}\r\n loading={this.props.isLoading}\r\n striped\r\n showPaginationBottom={this.props.total > 5}\r\n />\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport qs from 'qs';\nimport React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport SpinnerPanel from '../spinner/SpinnerPanel';\nimport EnvironmentalInterestsDataGrid from './EnvironmentalInterestsDataGrid';\n\nconst api = () => window.nSITE.Api;\n\nclass EnvironmentalInterestsContainer extends Component {\n static propTypes = {\n /**\n * Source identifier to look up.\n */\n sourceIdentifier: PropTypes.string.isRequired,\n };\n\n static parseDescriptionQueryParam(props) {\n const params = qs.parse(props.location.search, { ignoreQueryPrefix: true });\n return params.description;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n data: undefined,\n isInitialized: false,\n isLoading: false,\n error: undefined,\n page: 1,\n pageSize: 5,\n total: undefined,\n sortBy: EnvironmentalInterestsDataGrid.DEFAULT_SORT_BY,\n isAsc: true,\n criteria: {\n description: EnvironmentalInterestsContainer.parseDescriptionQueryParam(props),\n },\n };\n\n this.handleOnRequestData = this.handleOnRequestData.bind(this);\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n fetchData() {\n this.setState({ isLoading: true });\n\n api()\n .profile.getEnvInterests(this.props.sourceIdentifier, {\n page: this.state.page,\n pageSize: this.state.pageSize,\n total: this.state.total,\n sortBy: this.state.sortBy,\n isAsc: this.state.isAsc,\n criteria: this.state.criteria,\n })\n .then(pageResponse => {\n this.setState({\n data: pageResponse.data,\n page: pageResponse.page,\n pageSize: pageResponse.pageSize,\n total: pageResponse.total,\n sortBy: pageResponse.sortBy,\n isAsc: pageResponse.isAsc,\n criteria: pageResponse.criteria,\n isLoading: false,\n isInitialized: true,\n });\n })\n .catch(err => {\n this.setState({\n error: err,\n isLoading: false,\n });\n });\n }\n\n handleOnRequestData({ page, pageSize, sortBy, isAsc, criteria }) {\n this.setState(\n {\n page: page || this.state.page,\n pageSize: pageSize || this.state.pageSize,\n sortBy: sortBy || this.state.sortBy,\n isAsc: isAsc === undefined ? true : isAsc,\n criteria: criteria || this.state.criteria,\n },\n this.fetchData\n );\n }\n\n render() {\n if (this.state.isInitialized) {\n return (\n \n );\n }\n return ;\n }\n}\n\nexport default withRouter(EnvironmentalInterestsContainer);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { fetchGenericIfNeeded } from '../../../store/profile/profile.action';\r\n\r\nclass GenericContainer extends Component {\r\n static propTypes = {\r\n /**\r\n * Generic Tab.\r\n */\r\n sourceIdentifier: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {};\r\n\r\n componentDidMount() {\r\n this.props.dispatchLoadGenericData(this.props.sourceIdentifier);\r\n }\r\n\r\n render() {\r\n /**\r\n * The data is coming through but until we have a use case for this generic tab I'm going to leave it here.\r\n */\r\n\r\n return
{/* this.props.generic */}
;\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isLoading: state.profile.generic.isLoading,\r\n error: state.profile.generic.error,\r\n generic: state.profile.generic.data,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n dispatchLoadGenericData: sourceIdentifier => {\r\n dispatch(fetchGenericIfNeeded(sourceIdentifier));\r\n },\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(GenericContainer);\r\n","import {\r\n PROFILE_TAB_CHEMICALS,\r\n PROFILE_TAB_COMPLIANCE,\r\n PROFILE_TAB_DETAIL,\r\n PROFILE_TAB_DOCUMENTS,\r\n PROFILE_TAB_EI,\r\n PROFILE_TAB_GENERIC,\r\n PROFILE_TAB_MAP,\r\n} from '../components/profile/header/ProfileTabs';\r\nimport ConfigKeys from '../config/keys';\r\nimport { isSmallScreen } from '../util/browser';\r\nimport { label } from './label';\r\n\r\nexport const allTabs = tabCounts => {\r\n const profileLabel = label(ConfigKeys.LABEL_TAB_PROFILE);\r\n const mapLabel = label(ConfigKeys.LABEL_TAB_MAP);\r\n const complianceLabel = label(ConfigKeys.LABEL_TAB_COMPLIANCE);\r\n const documentLabel = label(ConfigKeys.LABEL_TAB_DOCUMENTS);\r\n const chemicalLabel = label(ConfigKeys.LABEL_TAB_CHEMICALS);\r\n const eiLabel = label(ConfigKeys.LABEL_TAB_EI);\r\n const genericLabel = label(ConfigKeys.LABEL_TAB_GENERIC);\r\n\r\n return [\r\n {\r\n id: PROFILE_TAB_DETAIL,\r\n altId: 'profile',\r\n title: profileLabel,\r\n name: profileLabel,\r\n visible: true,\r\n },\r\n {\r\n id: PROFILE_TAB_MAP,\r\n altId: 'map',\r\n title: mapLabel,\r\n name: mapLabel,\r\n visible: !isSmallScreen() && tabCounts.featureCount > 0,\r\n },\r\n {\r\n id: PROFILE_TAB_EI,\r\n altId: 'ei',\r\n title: eiLabel,\r\n name: eiLabel,\r\n visible: tabCounts.environmentalInterestsCount > 0,\r\n },\r\n {\r\n id: PROFILE_TAB_COMPLIANCE,\r\n altId: 'compliance',\r\n title: complianceLabel,\r\n name: complianceLabel,\r\n visible: tabCounts.complianceCount > 0,\r\n },\r\n {\r\n id: PROFILE_TAB_DOCUMENTS,\r\n altId: 'documents',\r\n title: documentLabel,\r\n name: documentLabel,\r\n visible: tabCounts.documentCount > 0,\r\n },\r\n {\r\n id: PROFILE_TAB_CHEMICALS,\r\n altId: 'chemicals',\r\n title: chemicalLabel,\r\n name: chemicalLabel,\r\n visible: tabCounts.chemicalCount > 0,\r\n },\r\n {\r\n id: PROFILE_TAB_GENERIC,\r\n altId: 'generic',\r\n title: genericLabel,\r\n name: genericLabel,\r\n visible: tabCounts.genericCount > 0, //service will need to be expanded to include\r\n },\r\n ];\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Column, Columns } from '../../../lib/base';\r\nimport Tab from './Tab';\r\n\r\n/**\r\n * Renders an array id/name pairs as tabs.\r\n */\r\nexport default class Tabs extends Component {\r\n static propTypes = {\r\n /**\r\n * Tab configuration.\r\n */\r\n tabs: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n title: PropTypes.string,\r\n count: PropTypes.number,\r\n })\r\n ).isRequired,\r\n\r\n /**\r\n * Active tab.\r\n */\r\n active: PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n title: PropTypes.string,\r\n count: PropTypes.number,\r\n }),\r\n\r\n /**\r\n * Function to call when tab is clicked.\r\n */\r\n onClick: PropTypes.func.isRequired,\r\n };\r\n\r\n render() {\r\n const { tabs, active } = this.props;\r\n\r\n return (\r\n \r\n {tabs.map(t => (\r\n \r\n this.props.onClick(t)}\r\n />\r\n \r\n ))}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { allTabs } from '../../../util/tabs';\nimport Tabs from '../../tabs/Tabs';\n\n/**\n * Identifiers for each individual tab.\n */\nexport const PROFILE_TAB_DETAIL = 'profile';\nexport const PROFILE_TAB_MAP = 'map';\nexport const PROFILE_TAB_COMPLIANCE = 'compliance';\nexport const PROFILE_TAB_DOCUMENTS = 'documents';\nexport const PROFILE_TAB_CHEMICALS = 'chemicals';\nexport const PROFILE_TAB_GENERIC = 'generic';\nexport const PROFILE_TAB_EI = 'ei';\n\n/**\n * Tab specific for the profile tabs.\n */\nclass ProfileTabs extends Component {\n constructor(props) {\n super(props);\n this.handleOnTabClick = this.handleOnTabClick.bind(this);\n }\n\n goTo(tab) {\n const { path, params } = this.props.match;\n\n if (path.includes(':tab')) {\n return path\n .replace(':panel', params.panel)\n .replace(':subPanel', params.subPanel)\n .replace(':id', params.id)\n .replace(':tab', tab.altId);\n } else {\n return (\n path\n .replace(':panel', params.panel)\n .replace(':subPanel', params.subPanel)\n .replace(':id', params.id) +\n '/' +\n tab.altId\n );\n }\n }\n\n handleOnTabClick(tab) {\n const { history, location } = this.props;\n\n history.push({\n pathname: this.goTo(tab),\n search: location.search,\n });\n }\n\n render() {\n const { tabCounts } = this.props;\n const { params } = this.props.match;\n const currentTab = params.tab;\n const tabs = allTabs(tabCounts);\n const activeTab = tabs.find(tab => tab.altId === currentTab);\n const defaultTab = tabs.find(tab => tab.altId === 'profile');\n\n return ;\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n tabCounts: state.profile.detail.data.tabCounts,\n };\n}\n\nexport default withRouter(connect(mapStateToProps)(ProfileTabs));\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box, Hr } from '../../../lib/base';\r\nimport { MEDIA_BREAKPOINT } from '../../Constants';\r\nimport { labelAsSentence } from '../../util/label';\r\nimport HeadingText from '../text/HeadingText';\r\n\r\nclass SectionPanel extends Component {\r\n static propTypes = {\r\n /**\r\n * Children components to render.\r\n */\r\n\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Title\r\n */\r\n title: PropTypes.string,\r\n\r\n /**\r\n * Title\r\n */\r\n titleLabelKey: PropTypes.string,\r\n\r\n /**\r\n * Pad left and right sides of content.\r\n */\r\n padded: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n padded: false,\r\n };\r\n\r\n render() {\r\n const { body } = this.props.classes;\r\n\r\n const titleSentence = this.props.titleLabelKey\r\n ? labelAsSentence(this.props.titleLabelKey)\r\n : this.props.title;\r\n\r\n return (\r\n \r\n \r\n \r\n {titleSentence}\r\n \r\n \r\n
\r\n
{this.props.children}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n body: {\r\n paddingLeft: props => (props.padded ? theme.spacing.medium : undefined),\r\n paddingRight: props => (props.padded ? theme.spacing.medium : undefined),\r\n },\r\n\r\n [`@media ${MEDIA_BREAKPOINT}`]: {\r\n heading: {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n\r\n body: {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SectionPanel);\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport Box from '../../../lib/base/layout/Box';\r\nimport HeadingText from './HeadingText';\r\n\r\n/**\r\n * Pre-styled text component for headings.\r\n */\r\nexport default class HeadingBlockText extends Component {\r\n static propTypes = {\r\n /**\r\n * Hover title\r\n */\r\n title: PropTypes.string,\r\n\r\n /**\r\n * Text size.\r\n */\r\n size: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n title: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.title}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport connect from 'react-redux/es/connect/connect';\nimport { withRouter } from 'react-router-dom';\nimport { setInfoPanelContent } from '../../../../../../../store/map/map.action';\nimport { IconInfo } from '../../../../../../components/icons/fontawesome/icons';\nimport { COLOR_BASE_PRIMARY, NO_OP_FUNC } from '../../../../../../Constants';\nimport { navigateToInfo } from '../../../../../../routing';\n\nclass InfoButton extends Component {\n static propTypes = {\n /**\n * Info text to display\n */\n infoText: PropTypes.string,\n\n /**\n * Redux connected function.\n */\n dispatchSetInfoPanelContent: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.handleOnClick = this.handleOnClick.bind(this);\n }\n\n handleOnClick(e) {\n e.stopPropagation();\n navigateToInfo(this.props);\n this.props.dispatchSetInfoPanelContent(this.props.infoText);\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSetInfoPanelContent: content => {\n dispatch(setInfoPanelContent(content));\n },\n };\n}\n\nconst styles = theme => ({\n icon: {\n padding: `${theme.spacing.small} ${theme.spacing.small}`,\n textAlign: 'right',\n\n '&:hover': {\n cursor: 'pointer',\n color: theme.color[COLOR_BASE_PRIMARY]['dark2'],\n },\n },\n});\n\nexport default withRouter(\n connect(\n NO_OP_FUNC,\n mapDispatchToProps\n )(injectSheet(styles)(InfoButton))\n);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Row, Rows } from '../../../lib/base';\r\nimport InfoButton from '../../page/map/components/shared/panel/profile/InfoButton';\r\nimport HeadingText from '../text/HeadingText';\r\n\r\nclass Card extends Component {\r\n static propTypes = {\r\n /**\r\n * Additional css for container.\r\n */\r\n className: PropTypes.string,\r\n\r\n /**\r\n * Card title.\r\n */\r\n title: PropTypes.string.isRequired,\r\n\r\n /**\r\n * info text for side panel\r\n */\r\n infoText: PropTypes.string,\r\n\r\n /**\r\n * ViewPort render function.\r\n */\r\n renderBody: PropTypes.func.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n value: undefined,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {this.props.title}\r\n {this.props.infoText && }\r\n \r\n \r\n \r\n
{this.props.renderBody()}
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n header: {\r\n padding: `${theme.spacing.small} ${theme.spacing.smallest}`,\r\n backgroundColor: theme.color['gray']['light1'],\r\n },\r\n\r\n body: {\r\n padding: `${theme.spacing.small} ${theme.spacing.smallest}`,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(Card);\r\n","import React, { Component } from 'react';\r\nimport { Text } from '../../../lib/base';\r\n\r\nexport default class None extends Component {\r\n render() {\r\n return None.;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport None from '../panel/None';\r\nimport LabelValuePair from './LabelValuePair';\r\nimport Box from '../../../lib/base/layout/Box';\r\n\r\n/**\r\n * Component that renders a list of data in label/value format. Each row consist of a single label\r\n * value pair.\r\n */\r\nexport default class LabelValueTable extends Component {\r\n static propTypes = {\r\n /**\r\n * The data for the table.\r\n */\r\n data: PropTypes.array,\r\n\r\n /**\r\n * Func that takes a single element from the array and returns the label for that row.\r\n */\r\n labelFunc: PropTypes.func,\r\n\r\n /**\r\n * Func that takes a single element from the array and returns the value for that row.\r\n */\r\n valueFunc: PropTypes.func,\r\n\r\n /**\r\n * Func to generate the key.\r\n */\r\n keyFunc: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n data: [],\r\n labelFunc: row => row.label,\r\n valueFunc: row => row.value,\r\n keyFunc: undefined,\r\n };\r\n\r\n render() {\r\n if (this.props.data.length === 0) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const { keyFunc, labelFunc, valueFunc } = this.props;\r\n\r\n return this.props.data.map((row, index) => (\r\n \r\n ));\r\n }\r\n}\r\n","/**\r\n * Returns the first scrollable parent.\r\n *\r\n * \r\n * const $yourElement = document.querySelector('.your-class-or-selector');\r\n * getScrollParent($yourElement);\r\n * \r\n *\r\n * @param node\r\n * @returns {*}\r\n */\r\nexport const getScrollParent = node => {\r\n const regex = /(auto|scroll)/;\r\n const parents = (_node, ps) => {\r\n if (_node.parentNode === null) {\r\n return ps;\r\n }\r\n return parents(_node.parentNode, ps.concat([_node]));\r\n };\r\n\r\n const style = (_node, prop) => getComputedStyle(_node, null).getPropertyValue(prop);\r\n const overflow = _node =>\r\n style(_node, 'overflow') + style(_node, 'overflow-y') + style(_node, 'overflow-x');\r\n const scroll = _node => regex.test(overflow(_node));\r\n\r\n const scrollParent = _node => {\r\n if (!(_node instanceof HTMLElement || _node instanceof SVGElement)) {\r\n return;\r\n }\r\n\r\n const ps = parents(_node.parentNode, []);\r\n\r\n for (let i = 0; i < ps.length; i += 1) {\r\n if (scroll(ps[i])) {\r\n return ps[i];\r\n }\r\n }\r\n\r\n return document.scrollingElement || document.documentElement;\r\n };\r\n\r\n return scrollParent(node);\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Columns from '../../../../lib/base/layout/flex/Columns';\r\nimport Column from '../../../../lib/base/layout/flex/Column';\r\nimport Button from '../../../../lib/base/button/Button';\r\nimport { COLOR_BASE_PRIMARY, COLOR_VARIANT_PRIMARY } from '../../../Constants';\r\nimport { IconChevronLeft, IconChevronRight } from '../../icons/fontawesome/icons';\r\nimport { Box, Text } from '../../../../lib/base';\r\nimport { getScrollParent } from '../../../util/dom';\r\n\r\nexport default class ComponentPager extends Component {\r\n static propTypes = {\r\n /**\r\n * Number of components to show per page.\r\n */\r\n pageSize: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Items to page.\r\n */\r\n items: PropTypes.array.isRequired,\r\n\r\n /**\r\n * Renderer\r\n */\r\n render: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Should this component scroll to top after paging.\r\n */\r\n scrollToTop: PropTypes.bool.isRequired,\r\n };\r\n\r\n static defaultProps = {\r\n scrollToTop: true,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const page = 0;\r\n\r\n const start = page * props.pageSize;\r\n const end = start + props.pageSize;\r\n\r\n this.state = {\r\n page: page,\r\n list: props.items ? props.items.slice(start, end) : [],\r\n total: props.items ? props.items.length : 0,\r\n hasPrevious: false,\r\n hasNext: true,\r\n };\r\n\r\n this.componentRef = React.createRef();\r\n\r\n this.handleOnPrevious = this.handleOnPrevious.bind(this);\r\n this.handleOnNext = this.handleOnNext.bind(this);\r\n }\r\n\r\n goToPage(page) {\r\n const start = page * this.props.pageSize;\r\n const end = start + this.props.pageSize;\r\n const total = this.state.total;\r\n\r\n this.setState({\r\n page: page,\r\n list: (this.props.items && this.props.items.slice(start, end)) || [],\r\n hasPrevious: page > 0,\r\n hasNext: (page + 1) * this.props.pageSize <= total,\r\n });\r\n\r\n if (this.props.scrollToTop) {\r\n const scrollable = getScrollParent(this.componentRef.current);\r\n\r\n if (scrollable) {\r\n scrollable.scrollTop = 0;\r\n }\r\n }\r\n }\r\n\r\n handleOnPrevious() {\r\n this.goToPage(this.state.page - 1);\r\n }\r\n\r\n handleOnNext() {\r\n this.goToPage(this.state.page + 1);\r\n }\r\n\r\n showingText() {\r\n const start = this.state.page * this.props.pageSize + 1;\r\n let end = (this.state.page + 1) * this.props.pageSize;\r\n end = end >= this.state.total ? this.state.total : end;\r\n const total = this.state.total;\r\n\r\n return `Showing ${start}-${end} of ${total}`;\r\n }\r\n\r\n renderPagerButtons() {\r\n return (\r\n
\r\n \r\n \r\n \r\n Prev {this.props.pageSize}\r\n \r\n \r\n \r\n \r\n Next {this.props.pageSize} \r\n \r\n \r\n \r\n \r\n {this.showingText()}\r\n \r\n
\r\n );\r\n }\r\n\r\n render() {\r\n if (!this.props.items) {\r\n return null;\r\n }\r\n\r\n if (this.props.items && this.props.items.length <= this.props.pageSize) {\r\n return this.props.render(this.props.items);\r\n }\r\n\r\n return (\r\n
\r\n {this.props.render(this.state.list)}\r\n {this.renderPagerButtons()}\r\n
\r\n );\r\n }\r\n}\r\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport injectSheet from \"react-jss\";\nimport Card from \"../../card/Card\";\nimport LabelValueTable from \"../../lv/LabelValueTable\";\nimport None from \"../../panel/None\";\nimport { MEDIA_BREAKPOINT } from \"../../../Constants\";\nimport ComponentPager from \"./ComponentPager\";\n\nclass Affiliates extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Affiliates.\n */\n affiliates: PropTypes.arrayOf(\n PropTypes.shape({\n sourceIdentifier: PropTypes.string,\n envIntId: PropTypes.number,\n entityName: PropTypes.string,\n entityTitle: PropTypes.string,\n address: PropTypes.string,\n city: PropTypes.string,\n state: PropTypes.string,\n country: PropTypes.string,\n zipCode: PropTypes.string,\n county: PropTypes.string,\n phone: PropTypes.string,\n affilTypeDesc: PropTypes.string,\n fullAddress: PropTypes.string\n })\n )\n };\n\n static defaultProps = {\n affiliates: []\n };\n\n static address(a) {\n const parts = [];\n if (a.city && a.city.trim()) {\n parts.push(a.city || \"\");\n }\n if ((a.state && a.state.trim()) || (a.zipCode && a.zipCode.trim())) {\n parts.push(`${a.state || \"\"} ${a.zipCode || \"\"}`);\n }\n return [a.address, parts.join(\", \")];\n }\n\n static toLabelValueData(a) {\n const data = [];\n\n if (a.entityName && a.entityName.trim().length > 0) {\n data.push({ label: \"Name\", value: a.entityName });\n }\n\n if (a.entityTitle && a.entityTitle.trim().length > 0) {\n data.push({ label: \"Title\", value: a.entityTitle });\n }\n\n if (a.phone && a.phone.trim().length > 0) {\n data.push({ label: \"Phone\", value: a.phone });\n }\n\n if (a.fullAddress && a.fullAddress.trim().length > 0) {\n data.push({ label: \"Address\", value: Affiliates.address(a) });\n }\n\n return data;\n }\n\n render() {\n if (this.props.affiliates.length === 0) {\n return ;\n }\n\n const { container, card } = this.props.classes;\n\n return (\n (\n
\n {items.map((a, index) => (\n (\n
\n \n
\n )}\n >\n ))}\n
\n )}\n />\n );\n }\n}\n\nconst styles = theme => ({\n container: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\"\n },\n card: {\n width: \"100%\",\n minHeight: \"130px\",\n marginRight: theme.spacing.large,\n marginBottom: theme.spacing.medium\n },\n [`@media all and (-ms-high-contrast:none)`]: {\n card: {\n minHeight: \"400px\"\n }\n },\n\n entityName: {\n margin: theme.spacing.stack.large\n },\n\n [`@media (min-width: 1600px)`]: {\n card: {\n width: `calc(50% - ${theme.spacing.large})`\n }\n },\n\n [`@media ${MEDIA_BREAKPOINT}`]: {\n card: {\n width: \"100%\",\n marginRight: 0\n }\n }\n});\n\nexport default injectSheet(styles)(Affiliates);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box } from '../../../../lib/base';\r\nimport Columns from '../../../../lib/base/layout/flex/Columns';\r\nimport Column from '../../../../lib/base/layout/flex/Column';\r\nimport Value from '../../lv/Value';\r\nimport Label from '../../lv/Label';\r\nimport None from '../../panel/None';\r\nimport ComponentPager from './ComponentPager';\r\n\r\nexport default class AlternateIDs extends Component {\r\n static propTypes = {\r\n /**\r\n * Alias IDs\r\n */\r\n aliases: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n aliasId: PropTypes.string,\r\n aliasIdTypeDesc: PropTypes.string,\r\n })\r\n ),\r\n };\r\n\r\n static defaultProps = {\r\n aliases: [],\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.aliases.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n (\r\n
\r\n {items.map((alias, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n
\r\n )}\r\n />\r\n
\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { Box } from '../../../../lib/base';\r\nimport Columns from '../../../../lib/base/layout/flex/Columns';\r\nimport Column from '../../../../lib/base/layout/flex/Column';\r\nimport Value from '../../lv/Value';\r\nimport Label from '../../lv/Label';\r\nimport None from '../../panel/None';\r\nimport ComponentPager from './ComponentPager';\r\n\r\nexport default class AlternateNames extends Component {\r\n static propTypes = {\r\n /**\r\n * Alias IDs\r\n */\r\n alternateNames: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n aliasType: PropTypes.string,\r\n aliasName: PropTypes.string,\r\n })\r\n ),\r\n };\r\n\r\n static defaultProps = {\r\n alternateNames: [],\r\n };\r\n\r\n render() {\r\n if (this.props.alternateNames.length === 0) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n let alternateNameTypesLength = this.props.alternateNames.filter(altName => {\r\n return altName.aliasType;\r\n }).length;\r\n return (\r\n
\r\n (\r\n
\r\n {alternateNameTypesLength > 0 && (\r\n \r\n \r\n )}\r\n {items.map((alias, index) => (\r\n \r\n {alternateNameTypesLength > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {alternateNameTypesLength === 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ))}\r\n
\r\n )}\r\n />\r\n
\r\n );\r\n }\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport Link from '../../../../lib/base/text/Link';\nimport Config from '../../../config';\nimport { MEDIA_BREAKPOINT } from '../../../Constants';\nimport { navigateToDetailEnvIntTab } from '../../../routing';\nimport { getSiteId } from '../../../util/entities/siteProfile';\nimport { formatDate } from '../../../util/format';\nimport { isNotBlank } from '../../../util/string';\nimport Card from '../../card/Card';\nimport LabelValueTable from '../../lv/LabelValueTable';\nimport Value from '../../lv/Value';\nimport None from '../../panel/None';\nimport ComponentPager from './ComponentPager';\n\nclass EnvironmentalInterests extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Environmental Interests\n */\n environmentalInterests: PropTypes.arrayOf(\n PropTypes.shape({\n sourceIdentifier: PropTypes.string,\n envIntId: PropTypes.number,\n programId: PropTypes.string,\n startDateDesc: PropTypes.string,\n startDate: PropTypes.string,\n endDate: PropTypes.string,\n typeDesc: PropTypes.string,\n typeDescLong: PropTypes.string,\n contactName: PropTypes.string,\n contactPhone: PropTypes.string,\n facilityPageUrl: PropTypes.string,\n lastInspectionDate: PropTypes.string,\n envIntNotes: PropTypes.string,\n osDesc: PropTypes.string,\n endDateDesc: PropTypes.string,\n })\n ),\n\n /**\n * Site profile data.\n */\n siteProfile: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.handleMoreInfoClick = this.handleMoreInfoClick.bind(this);\n }\n\n static defaultProps = {\n environmentalInterests: [],\n };\n\n handleMoreInfoClick(event, description) {\n navigateToDetailEnvIntTab(this.props, getSiteId(this.props.siteProfile), description);\n event.stopPropagation();\n }\n\n static toLabelValueData(ei) {\n const data = [];\n let eiStartDate = ei.startDate ? new Date(ei.startDate) : null;\n let eiEndDate = ei.endDate ? new Date(ei.endDate) : null;\n let lastInspectionDate = ei.lastInspectionDate ? new Date(ei.lastInspectionDate) : null;\n\n if (eiStartDate !== null) {\n data.push({ label: ei.startDateDesc || 'Start Date', value: eiStartDate });\n }\n\n if (eiEndDate !== null) {\n data.push({ label: ei.endDateDesc || 'End Date', value: eiEndDate });\n }\n\n if (lastInspectionDate !== null) {\n data.push({ label: 'Last Inspected', value: lastInspectionDate });\n }\n\n data.push({ label: 'Source System', value: ei.osDesc });\n data.push({\n label: 'Source System ID',\n value: () => {\n if (isNotBlank(ei.facilityPageUrl)) {\n return (\n \n {ei.programId}\n \n );\n }\n\n return ;\n },\n });\n return data;\n }\n\n static toLabelValueDataSummarized(ei) {\n if (ei.count === 1) {\n return this.toLabelValueData(ei);\n }\n\n const data = [];\n\n let eiStartDate = ei.minStartDate || null;\n let eiEndDate = ei.maxEndDate || null;\n\n if (eiStartDate !== null) {\n data.push({\n label: 'Min ' + ei.startDateDesc || 'Min Start Date',\n value: formatDate(eiStartDate),\n });\n }\n if (eiEndDate !== null) {\n data.push({ label: 'Max ' + ei.endDateDesc || 'Max End Date', value: formatDate(eiEndDate) });\n }\n\n data.push({ label: 'Count', value: ei.count });\n\n return data;\n }\n\n summarize() {\n const { environmentalInterests } = this.props;\n\n return environmentalInterests.reduce((arr, item) => {\n let found = false;\n\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].typeDesc === item.typeDesc) {\n found = true;\n arr[i].count++;\n\n if (arr[i].startDate <= item.startDate) {\n arr[i].minStartDate = item.startDate;\n }\n\n if (arr[i].endDate >= item.endDate) {\n arr[i].maxEndDate = item.endDate;\n }\n }\n }\n\n if (!found) {\n item.count = 1;\n arr.push(item);\n }\n\n return arr;\n }, []);\n }\n\n render() {\n const { classes, environmentalInterests } = this.props;\n\n const { container, card } = classes;\n\n if (environmentalInterests.length === 0) {\n return ;\n }\n\n if (Config.isSummarizeEIs()) {\n return (\n (\n
\n {items.map((ei, index) => (\n (\n
\n \n {ei.count > 1 ? (\n this.handleMoreInfoClick(e, ei.typeDesc)}\n size=\"smaller\"\n >\n Show More Information\n \n ) : null}\n
\n )}\n />\n ))}\n
\n )}\n />\n );\n }\n\n return (\n (\n
\n {items.map((ei, index) => (\n (\n \n )}\n />\n ))}\n
\n )}\n />\n );\n }\n}\n\nconst styles = theme => ({\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n },\n\n card: {\n width: '100%',\n minHeight: '130px',\n marginRight: theme.spacing.large,\n marginBottom: theme.spacing.medium,\n },\n\n /**\n Conditional class for IE 11 flexbox bug workaround\n */\n [`@media all and (-ms-high-contrast:none)`]: {\n card: {\n minHeight: '400px',\n },\n },\n\n [`@media (min-width: 1600px)`]: {\n card: {\n width: `calc(50% - ${theme.spacing.large})`,\n },\n },\n\n [`@media ${MEDIA_BREAKPOINT}`]: {\n card: {\n width: '100%',\n marginRight: 0,\n },\n },\n});\n\nfunction mapStateToProps(state) {\n return {\n siteProfile: state.profile.detail.data,\n };\n}\n\nexport default withRouter(connect(mapStateToProps)(injectSheet(styles)(EnvironmentalInterests)));\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport LabelValueTable from '../../lv/LabelValueTable';\r\n\r\nexport default class GeoPolitical extends Component {\r\n static propTypes = {\r\n /**\r\n * Site facility geopolitical data.\r\n */\r\n facilityGeopolitical: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n geoPolTypeVisible: PropTypes.string,\r\n geoPolTypeLabel: PropTypes.string,\r\n geoPolValue: PropTypes.string,\r\n })\r\n ),\r\n };\r\n\r\n static defaultProps = {\r\n facilityGeopolitical: [],\r\n };\r\n\r\n render() {\r\n const { facilityGeopolitical } = this.props;\r\n\r\n return (\r\n geop.geoPolTypeVisible === 'Y')}\r\n labelFunc={row => row.geoPolTypeLabel}\r\n valueFunc={row => row.geoPolValue}\r\n />\r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport React, { Component } from 'react';\r\nimport { Box } from '../../../../lib/base';\r\nimport Label from '../../lv/Label';\r\nimport Value from '../../lv/Value';\r\nimport Columns from '../../../../lib/base/layout/flex/Columns';\r\nimport Column from '../../../../lib/base/layout/flex/Column';\r\nimport None from '../../panel/None';\r\n\r\nexport default class IndustryCodes extends Component {\r\n static propTypes = {\r\n /**\r\n * SIC Codes\r\n */\r\n sicCodes: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n sic: PropTypes.string,\r\n sicDesc: PropTypes.string,\r\n })\r\n ),\r\n\r\n /**\r\n * NAICS Codes\r\n */\r\n naicsCodes: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n naics: PropTypes.string,\r\n naicsDesc: PropTypes.string,\r\n })\r\n ),\r\n };\r\n\r\n static defaultProps = {\r\n sicCodes: [],\r\n naicsCodes: [],\r\n };\r\n\r\n render() {\r\n const { sicCodes, naicsCodes } = this.props;\r\n\r\n if ((!sicCodes || sicCodes.length === 0) && (!naicsCodes || naicsCodes.length === 0)) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {!isEmpty(sicCodes) && (\r\n \r\n \r\n \r\n \r\n {sicCodes.map((c, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n {!isEmpty(naicsCodes) && (\r\n \r\n \r\n \r\n \r\n {naicsCodes.map((c, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport WindowResizeListener from '../../../listener/WindowResizeListener';\r\n\r\n/**\r\n * A container component that will monitor window resizes. Use this component when you need to know\r\n * the exact dimensions of the container. When the window resizes the renderView render prop is\r\n * called with a width and height property. Children can use these set exact dimensions.\r\n */\r\nclass WindowSizeAwareMapContainer extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Func to render the view, width and height props are passed to it.\r\n */\r\n renderView: PropTypes.func.isRequired,\r\n };\r\n\r\n static defaultProps = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n width: undefined,\r\n height: 185,\r\n };\r\n\r\n this.containerRef = React.createRef();\r\n\r\n this.updateMapSize = this.updateMapSize.bind(this);\r\n this.callUpdateSize = this.callUpdateSize.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.callUpdateSize();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n this.callUpdateSize();\r\n }\r\n\r\n updateMapSize() {\r\n if (this.containerRef.current) {\r\n const containerRect = this.containerRef.current.getBoundingClientRect();\r\n\r\n if (this.state.width !== containerRect.width) {\r\n this.setState({ width: containerRect.width, height: containerRect.height });\r\n }\r\n\r\n /**\r\n * !! Hack !!\r\n *\r\n * For some reason the element of the map has style=\"display:none\" - this removes\r\n * it.\r\n */\r\n const mapCanvas =\r\n document.getElementsByTagName('canvas') !== undefined &&\r\n document.getElementsByTagName('canvas')[0];\r\n\r\n if (mapCanvas) {\r\n mapCanvas.style.display = 'inherit';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Because of the slideout panel animation we need to allow enough time for the dom to resize\r\n * before update the width/height of the map.\r\n *\r\n * TODO Improve this...\r\n */\r\n callUpdateSize() {\r\n setTimeout(this.updateMapSize, 350);\r\n }\r\n\r\n isCanShowMap() {\r\n return this.state.width && this.state.height;\r\n }\r\n\r\n render() {\r\n const { container } = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n {this.isCanShowMap() &&\r\n this.props.renderView({ width: this.state.width, height: this.state.height })}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n width: '100%',\r\n minHeight: '200px',\r\n height: '100%',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(WindowSizeAwareMapContainer);\r\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Box } from \"../../../../../lib/base\";\nimport Map, { ArcGISTileLayer, BingMapsTileLayer, XYZLayer } from \"../../../../../lib/map\";\nimport { toWebMercatorCenter } from \"../../../../../lib/map/core/transfomer\";\nimport Config from \"../../../../config\";\nimport { DEFAULT_MAP_PADDING } from \"../../../../Constants\";\nimport SiteFeaturesLayer from \"../../../../page/map/components/shared/layer/SiteFeaturesLayer\";\nimport WindowSizeAwareMapContainer from \"./WindowSizeAwareMapContainer\";\n\nconst MAP_ID = \"minimap\";\n\nclass MiniMap extends Component {\n static propTypes = {\n /**\n * Profile object from the api.\n */\n profile: PropTypes.object.isRequired,\n\n /**\n * Longitude coordinate.\n */\n longitude: PropTypes.number,\n\n /**\n * Latitude coordinate.\n */\n latitude: PropTypes.number,\n\n /**\n * Interactive\n */\n interactive: PropTypes.bool,\n\n /**\n * minResolution: PropTypes.number\n */\n minResolution: PropTypes.number,\n\n /**\n * maxResolution: PropTypes.number\n */\n maxResolution: PropTypes.number,\n\n /**\n * current baselayer\n */\n activeBaseLayer: PropTypes.object\n };\n\n static defaultProps = {\n interactive: true\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n extent: undefined\n };\n\n this.handleOnAfterPopulateFeatures = this.handleOnAfterPopulateFeatures.bind(this);\n }\n\n handleOnAfterPopulateFeatures({ vectorSource }) {\n this.setState({\n extent: vectorSource.getExtent()\n });\n }\n\n componentDidMount() {\n if (!this.props.interactive) {\n setTimeout(() => {\n try {\n const viewport = document.getElementById(MAP_ID).querySelectorAll(\".ol-viewport\")[0];\n viewport.style.touchAction = \"auto\";\n } catch (e) {}\n }, 1000);\n }\n }\n\n render() {\n const { longitude, latitude } = this.props.profile.profileFacilityDetail;\n\n if (!longitude || !latitude) {\n return null;\n }\n\n const baseLayer = this.props.activeBaseLayer;\n const lonlat = [longitude, latitude];\n const center = toWebMercatorCenter(lonlat);\n\n return (\n \n (\n \n {baseLayer.layerType.toLowerCase() === \"bing\" && (\n \n )}\n {baseLayer.layerType.toLowerCase() === \"arcgis\" && (\n \n )}\n {baseLayer.layerType.toLowerCase() === \"xyz\" && (\n \n )}\n {/* add support for esri layers on the mini map */}\n \n
\n )}\n />\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n profile: state.profile.detail.data,\n minResolution: state.map.minResolution,\n maxResolution: state.map.maxResolution,\n activeBaseLayer: state.map.activeBaseLayer\n };\n}\n\nexport default connect(mapStateToProps)(MiniMap);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport Box from '../../../lib/base/layout/Box';\r\nimport Column from '../../../lib/base/layout/flex/Column';\r\nimport Columns from '../../../lib/base/layout/flex/Columns';\r\nimport Row from '../../../lib/base/layout/flex/Row';\r\nimport Rows from '../../../lib/base/layout/flex/Rows';\r\nimport SectionPanel from '../../components/panel/SectionPanel';\r\nimport ConfigKeys from '../../config/keys';\r\nimport { isSmallScreen } from '../../util/browser';\r\nimport HeadingBlockText from '../text/HeadingBlockText';\r\nimport Affiliates from './detail/Affiliates';\r\nimport AlternateIDs from './detail/AlternateIDs';\r\nimport AlternateNames from './detail/AlternateNames';\r\nimport EnvironmentalInterests from './detail/EnvironmentalInterests';\r\nimport GeoPolitical from './detail/GeoPolitical';\r\nimport IndustryCodes from './detail/IndustryCodes';\r\nimport MiniMap from './detail/map/MiniMap';\r\n\r\nexport default class ProfileContainer extends Component {\r\n static propTypes = {\r\n /**\r\n * Profile deail.\r\n */\r\n siteProfileDetail: PropTypes.object,\r\n };\r\n\r\n static defaultProps = {};\r\n\r\n renderMobile() {\r\n const { siteProfileDetail } = this.props;\r\n\r\n const { longitude, latitude } = siteProfileDetail.profileFacilityDetail;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderDesktop() {\r\n const { siteProfileDetail } = this.props;\r\n\r\n const { longitude, latitude } = siteProfileDetail.profileFacilityDetail;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n return isSmallScreen() ? this.renderMobile() : this.renderDesktop();\r\n }\r\n}\r\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { Box } from \"../../../../../../../lib/base\";\nimport HeadingText from \"../../../../../../components/text/HeadingText\";\nimport Columns from \"../../../../../../../lib/base/layout/flex/Columns\";\nimport Column from \"../../../../../../../lib/base/layout/flex/Column\";\nimport Value from \"../../../../../../components/lv/Value\";\nimport Label from \"../../../../../../components/lv/Label\";\n\nclass LayerMetadata extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Title to display\n */\n title: PropTypes.string,\n\n /**\n * Array of {label,value} pairs.\n */\n metadata: PropTypes.array,\n\n /**\n * optional featurename\n */\n featureName: PropTypes.string\n };\n\n render() {\n return (\n \n {this.props.featureName && (\n \n {this.props.title} : {this.props.featureName}\n \n )}\n {!this.props.featureName && {this.props.title}}\n \n {this.props.metadata &&\n this.props.metadata.map(\n (kv, index) =>\n kv.value && (\n \n \n \n \n \n \n \n )\n )}\n \n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n minWidth: \"320px\"\n },\n\n value: {\n textAlign: \"right\"\n }\n});\n\nexport default injectSheet(styles)(LayerMetadata);\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport LayerMetadata from \"./LayerMetadata\";\nimport { connect } from \"react-redux\";\nimport { toast } from \"react-toastify\";\n\nconst api = () => window.nSITE.Api;\n\nclass LayerMetadataContainer extends Component {\n static propTypes = {\n /**\n * The layer metadata to display.\n */\n metadata: PropTypes.object.isRequired,\n\n /**\n * Latitude\n */\n latitude: PropTypes.number.isRequired,\n\n /**\n * Longitude\n */\n longitude: PropTypes.number.isRequired,\n\n /**\n * URL for WMS layer types\n */\n wmsUrl: PropTypes.string,\n\n /**\n * Key\n */\n key: PropTypes.string\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n layerName: \"\",\n metadata: [],\n name: \"\"\n };\n }\n\n componentDidMount() {\n if (this.props.metadata) {\n this.setState({\n layerName: this.props.metadata.layerName,\n featureName: this.props.metadata.name\n });\n\n if (\n this.props.metadata.layerType &&\n (this.props.metadata.layerType.toLowerCase() === \"sqlspatial\" ||\n this.props.metadata.layerType.toLowerCase() === \"arcgisvector\")\n ) {\n let keyValuePairs = [];\n\n if (this.props.metadata.layerName === \"Features\") {\n this.setState({\n layerName: this.props.metadata.name + \" - (Features Layer)\"\n });\n api()\n .layer.getFeatureMetadata(this.props.metadata.id)\n .then(dbMetadata => {\n dbMetadata.forEach(item => {\n item.key = item.key ? item.key : \"\";\n keyValuePairs.push({ label: item.key, value: item.value });\n });\n\n this.setState({\n metadata: keyValuePairs\n });\n });\n } else {\n this.props.metadata.kvp.forEach(item => {\n keyValuePairs.push({ label: item.key, value: item.value });\n });\n\n this.setState({\n metadata: keyValuePairs\n });\n }\n } else if (this.props.metadata.layerType === \"wms\" && this.props.wmsUrl !== undefined) {\n this.fetchWMSMetadata(this.props.wmsUrl);\n } else {\n if (this.props.metadata.layerMetadataUrl) {\n const regexLon = /\\{0\\}/g;\n const regexLat = /\\{1\\}/g;\n\n const url = this.props.metadata.layerMetadataUrl\n .replace(regexLon, this.props.longitude)\n .replace(regexLat, this.props.latitude);\n\n this.fetchESRIMEtadata(url);\n }\n }\n }\n }\n\n fetchWMSMetadata(url) {\n const get = fetch(url);\n get.then(response => response.json()).then(json => parse(json));\n const parse = json => {\n if (json && json.features && json.features[0] && json.features[0].properties) {\n const remoteData = json.features[0].properties;\n const keys = Object.keys(remoteData);\n const keyValuePairs = [];\n keys.map(key => keyValuePairs.push({ label: key, value: remoteData[key] }));\n this.setState({\n metadata: keyValuePairs\n });\n }\n };\n }\n\n fetchESRIMEtadata(url) {\n const get = fetch(url);\n const parse = json => {\n if (json && json.features && json.features[0] && json.features[0].attributes) {\n const remoteData = json.features[0].attributes;\n const keys = Object.keys(remoteData);\n const keyValuePairs = [];\n keys.map(key =>\n keyValuePairs.push({\n label: `${key ? json.fieldAliases[key] : key}`,\n value: remoteData[key]\n })\n );\n this.setState({\n metadata: keyValuePairs\n });\n }\n };\n get\n .then(response => response.json())\n .then(json => parse(json))\n .catch(error => {\n console.warn(error.message);\n toast.error(error.message, {\n position: toast.POSITION.BOTTOM_RIGHT\n });\n });\n }\n\n fetchSqlSpatialMetadata(layerName) {\n let mapInfo = {\n latitude: this.props.latitude,\n longitude: this.props.longitude,\n screenWidth: this.props.criteria.screenWidth,\n screenHeight: this.props.criteria.screenHeight,\n featureLayers: layerName,\n leftBound: this.props.criteria.boundingBox[0],\n bottomBound: this.props.criteria.boundingBox[1],\n rightBound: this.props.criteria.boundingBox[2],\n topBound: this.props.criteria.boundingBox[3]\n };\n return api().layer.getSqlSpatialMetadata(mapInfo);\n }\n\n render() {\n return (\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n criteria: state.map.search.criteria,\n map: state.map\n };\n}\n\nexport default connect(mapStateToProps)(LayerMetadataContainer);\n","import debounce from 'lodash/debounce';\nimport { singleClick, pointerMove } from 'ol/events/condition';\nimport Feature from 'ol/Feature';\nimport Select from 'ol/interaction/Select';\nimport Map from 'ol/Map';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport SiteSearchCriteria from '../../../../../../api/impl/SiteSearchCriteria';\nimport { FeaturesLayer } from '../../../../../../lib/map';\nimport { toLonLatExtent } from '../../../../../../lib/map/core/transfomer';\nimport {\n deselectSite,\n multipleSiteSelect,\n searchFilterCountIfNeeded,\n searchSitesIfNeeded,\n skipMapMoveSearchOnce,\n zoomToExtent,\n} from '../../../../../../store/map/map.action';\nimport { loadProfileDetailIfNeeded } from '../../../../../../store/profile/profile.action';\nimport { SEARCH_DELAY_TIME_MS } from '../../../../../Constants';\nimport {\n navigateCloseSubPanel,\n navigateToMapHome,\n navigateToMobileCardView,\n navigateToSummary,\n} from '../../../../../routing';\nimport { isSmallScreen, isTouchDevice } from '../../../../../util/browser';\nimport {\n isCluster,\n isSharesSourceId,\n isSiteInCluster,\n isSitesEqual,\n sourceIdentifier,\n webMercatorExtent,\n} from '../../../../../util/feature';\nimport { calculateSearchExtent } from '../../../../../util/map';\nimport { newStyleHovered, newStyleNotSelected, newStyleSelected } from '../../../../../util/marker';\n\n/**\n * A unique layer identifier.\n */\nexport const LAYER_ID = 'SitesLayer';\n\n/**\n * Sites feature Layer.\n */\nclass SitesLayer extends Component {\n static propTypes = {\n /**\n * The map.\n */\n map: PropTypes.instanceOf(Map),\n\n /**\n * An array\n */\n features: PropTypes.arrayOf(PropTypes.instanceOf(Feature)),\n\n /**\n * Fill color.\n */\n fillColor: PropTypes.string.isRequired,\n\n /**\n * Stroke color.\n */\n strokeColor: PropTypes.string.isRequired,\n\n /**\n * The index where to insert the vector layer.\n */\n zIndex: PropTypes.number.isRequired,\n\n /**\n * Is layer visible?\n */\n visible: PropTypes.bool,\n\n /**\n * OnLayerMove callback.\n */\n onLayerMove: PropTypes.func,\n dispatchZoomToExtent: PropTypes.func,\n };\n\n static defaultProps = {\n map: undefined,\n features: [],\n fillColor: 'rgba(255, 0, 252, 0.7)',\n strokeColor: 'rgba(56, 0, 55, 0.9)',\n visible: true,\n };\n\n constructor(props) {\n super(props);\n\n /**\n * React reference.\n */\n this.layer = React.createRef();\n\n /**\n * Debounce the site search function.\n */\n this.dispatchSearchSitesDebounced = debounce(\n this.props.dispatchSearchSites,\n SEARCH_DELAY_TIME_MS\n );\n\n /**\n * Bind event handlers.\n */\n this.handleMapMoveEnd = this.handleMapMoveEnd.bind(this);\n this.handleOnAddFeature = this.handleOnAddFeature.bind(this);\n this.handleOnClickFeature = this.handleOnClickFeature.bind(this);\n this.handleOnHoverFeature = this.handleOnHoverFeature.bind(this);\n this.handleSelectFilter = this.handleSelectFilter.bind(this);\n\n /**\n * Setup click and hover interactions for this layer.\n */\n this.interactionHover = new Select({\n condition: pointerMove,\n filter: this.handleSelectFilter,\n });\n\n this.interactionClick = new Select({\n condition: singleClick,\n filter: this.handleSelectFilter,\n multi: false,\n hitTolerance: isSmallScreen() ? 5 : 0,\n });\n }\n\n componentDidMount() {\n /**\n * Enable/disable map move listener, dispatches site cluster api calls.\n */\n this.toggleMoveEndListener(this.props.visible);\n\n /**\n * Click interaction.\n */\n this.interactionClick.on('select', this.handleOnClickFeature);\n this.props.map.addInteraction(this.interactionClick);\n\n /**\n * Hover interaction - for non-touch devices only.\n */\n if (!isTouchDevice()) {\n this.interactionHover.on('select', this.handleOnHoverFeature);\n this.props.map.addInteraction(this.interactionHover);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { params } = this.props.match;\n\n /**\n * Look for url changes.\n */\n if (!params.id && this.props.siteSelected) {\n this.props.dispatchDeselectSite();\n }\n\n /**\n * Handle layer visibility change.\n */\n if (prevProps.visible !== this.props.visible) {\n this.toggleMoveEndListener(this.props.visible);\n\n if (this.props.visible) {\n this.handleMapMoveEnd(this.props.map);\n }\n }\n\n /**\n * Handle layer interactivity change.\n */\n if (prevProps.interactive !== this.props.interactive) {\n if (this.props.interactive) {\n this.props.map.addInteraction(this.interactionClick);\n this.props.map.addInteraction(this.interactionHover);\n } else {\n this.props.map.removeInteraction(this.interactionClick);\n this.props.map.removeInteraction(this.interactionHover);\n }\n }\n\n /**\n * Handle when a site is selected/deselected.\n */\n if (prevProps.siteSelected !== this.props.siteSelected) {\n this.layer.current.vectorSource.getFeatures().forEach(f => {\n if (this.isSelectedFeature(f)) {\n f.setStyle(newStyleSelected(f, this.props.fillColor, this.props.strokeColor));\n return;\n } else {\n f.setStyle(newStyleNotSelected(f, this.props.fillColor, this.props.strokeColor));\n }\n });\n\n if (this.props.siteSelected === undefined) {\n this.interactionClick.getFeatures().clear();\n }\n }\n\n /**\n * Handle special indicator to skip site search when map is moved. This is\n * set when an item in the left-hand site list panel is selected.\n */\n if (prevProps.isSkipMapMoveSearch !== this.props.isSkipMapMoveSearch) {\n if (this.props.isSkipMapMoveSearch) {\n this.skipMapMoveSearch = true;\n }\n }\n }\n\n /**\n * Cleanup.\n */\n componentWillUnmount() {\n this.toggleMoveEndListener(false);\n }\n\n /**\n * Call the search api when the map has been moved.\n */\n handleMapMoveEnd(mapOrEvent) {\n /**\n * Skip map move search when set to true. See componentDidUpdate().\n */\n if (this.skipMapMoveSearch) {\n this.skipMapMoveSearch = false;\n this.props.dispatchResetSkipMapMoveSearchOnce();\n return;\n }\n\n /**\n * When a site is selected the site search api call is normally skipped but sometimes we need\n * to bypass this. The forceExtentSearchOnce bool controls this and is reset immediately.\n */\n if (!this.forceExtentSearchOnce && this.props.siteSelected) {\n return;\n }\n\n /**\n * We are resetting the takeWithoutClustering count on mapMove\n */\n if (this.props.criteria) {\n this.props.criteria.takeWithoutClustering = null;\n }\n\n this.forceExtentSearchOnce = false;\n\n /**\n * Adjust the search extent so that results do not fall behind the search results panel.\n */\n const map = mapOrEvent instanceof Map ? mapOrEvent : mapOrEvent.map;\n const extent = calculateSearchExtent(map);\n\n this.dispatchSearchSitesDebounced(this.newCriteriaForExtent(extent));\n\n if (this.props.onLayerMove) {\n this.props.onLayerMove();\n }\n }\n\n /**\n * Styles feature when added to the map.\n */\n handleOnAddFeature(feature) {\n if (this.isSelectedFeature(feature)) {\n feature.setStyle(newStyleSelected(feature, this.props.fillColor, this.props.strokeColor));\n } else {\n feature.setStyle(newStyleNotSelected(feature, this.props.fillColor, this.props.strokeColor));\n }\n }\n\n /**\n * Handler when feature is hovered.\n */\n handleOnHoverFeature(event) {\n const that = this;\n\n event.deselected.forEach(feature => {\n document.querySelector('body').classList.remove('hand');\n\n if (this.isSelectedFeature(feature)) {\n feature.setStyle(newStyleSelected(feature, that.props.fillColor, that.props.strokeColor));\n } else {\n feature.setStyle(\n newStyleNotSelected(feature, that.props.fillColor, that.props.strokeColor)\n );\n }\n });\n\n event.selected.forEach(feature => {\n document.querySelector('body').classList.add('hand');\n\n let style;\n\n if (this.isSelectedFeature(feature)) {\n style = newStyleSelected(feature, that.props.fillColor, that.props.strokeColor);\n } else {\n style = newStyleHovered(feature, that.props.fillColor, that.props.strokeColor);\n }\n feature.setStyle(style);\n });\n }\n\n /**\n * Handler when feature is clicked.\n */\n handleOnClickFeature(e) {\n this.setState({\n position: undefined,\n feature: undefined,\n });\n\n if (e.selected[0]) {\n const feature = e.selected[0];\n\n /**\n * Zoom to extents of cluster\n * if already at full extent highlight relevant results by finding if sites in result list\n * are in bounding box of cluster else show overlay of basic feature details.\n */\n if (isCluster(feature)) {\n let prevZoom = this.props.map.getView().getZoom();\n\n this.props.dispatchZoomToExtent(webMercatorExtent(feature));\n this.interactionClick.getFeatures().clear();\n\n if (isSiteInCluster(this.props.siteSelected, feature)) {\n this.forceExtentSearchOnce = true;\n this.interactionHover.getFeatures().clear();\n } else {\n if (isSmallScreen()) {\n navigateToMapHome(this.props);\n } else {\n navigateCloseSubPanel(this.props);\n }\n }\n\n if (prevZoom === this.props.map.getView().getZoom()) {\n let selectedClusterSiteList = this.props.sites.filter(site => {\n return isSiteInCluster(site, feature);\n });\n this.props.dispatchMultipleSiteSelect(selectedClusterSiteList);\n }\n } else {\n const site = this.props.sites.find(s => s.sourceIdentifier === sourceIdentifier(feature));\n\n if (isSitesEqual(site, this.props.siteSelected)) {\n navigateCloseSubPanel(this.props);\n this.interactionClick.getFeatures().clear();\n } else {\n const sourceId = (site && site.sourceIdentifier) || feature.get('sourceIdentifier');\n\n if (isSmallScreen()) {\n navigateToMobileCardView(this.props, sourceId);\n } else {\n navigateToSummary(this.props, sourceId);\n }\n\n if (!site) {\n this.props.dispatchFetchProfile(sourceId);\n }\n }\n }\n } else if (e.deselected[0]) {\n if (isSmallScreen()) {\n navigateToMapHome(this.props);\n } else {\n navigateCloseSubPanel(this.props);\n }\n\n this.interactionClick.getFeatures().clear();\n }\n }\n\n /**\n * Handler to determine if feature is candidate for interaction.\n */\n handleSelectFilter(feature) {\n return this.props.features && this.props.features.includes(feature);\n }\n\n /**\n * Whether or not the provided feature is of a selected site.\n */\n isSelectedFeature(feature) {\n return (\n isSiteInCluster(this.props.siteSelected, feature) ||\n isSharesSourceId(this.props.siteSelected, feature)\n );\n }\n\n /**\n * New search criteria instance copied from previous criteria.\n */\n newCriteriaForExtent(extent) {\n return new SiteSearchCriteria({\n ...this.props.criteria,\n bbox: toLonLatExtent(extent),\n });\n }\n\n /**\n * Enable/disable the map move listener.\n */\n toggleMoveEndListener(on) {\n if (on) {\n this.props.map.on('moveend', this.handleMapMoveEnd, this);\n } else {\n this.props.map.un('moveend', this.handleMapMoveEnd, this);\n }\n }\n\n render() {\n return (\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n features: state.map.search.features,\n sites: state.map.search.sites,\n criteria: state.map.search.criteria,\n siteSelected: state.map.search.siteSelected,\n interactive: state.map.sitesLayer.interactive,\n isSkipMapMoveSearch: state.map.search.isSkipMapMoveSearch,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchSearchSites: criteria => {\n dispatch(searchSitesIfNeeded(criteria));\n dispatch(searchFilterCountIfNeeded(criteria));\n },\n dispatchResetSkipMapMoveSearchOnce: () => {\n dispatch(skipMapMoveSearchOnce(false));\n },\n dispatchDeselectSite: () => {\n dispatch(deselectSite());\n },\n dispatchMultipleSiteSelect: clusterSites => {\n dispatch(multipleSiteSelect(clusterSites));\n },\n dispatchZoomToExtent: extent => {\n dispatch(zoomToExtent(extent));\n },\n dispatchFetchProfile: id => {\n dispatch(loadProfileDetailIfNeeded(id));\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(SitesLayer)\n);\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport Map from \"ol/Map\";\nimport { BasicOverlay } from \"../../../../../../lib/map\";\nimport LayerMetadataContainer from \"./metadata/LayerMetadataContainer\";\nimport { toLonLatCenter } from \"../../../../../../lib/map/core/transfomer\";\nimport { LAYER_ID } from \"./SitesLayer\";\n\nexport default class LayerMetadataOverlay extends Component {\n static propTypes = {\n /**\n * The instance of map this layer is attached to. The map instance\n * will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map)\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n position: undefined\n };\n\n this.handleOnClick = this.handleOnClick.bind(this);\n this.handleOnCloseOverlay = this.handleOnCloseOverlay.bind(this);\n }\n\n componentDidMount() {\n this.props.map.on(\"singleclick\", this.handleOnClick);\n }\n\n componentWillUnmount() {\n this.props.map.un(\"singleclick\", this.handleOnClick);\n }\n\n handleOnClick(evt) {\n this.setState({\n position: undefined\n });\n\n const layerMetadata = [];\n let sitesLayerInView = false;\n const coordinate = evt.coordinate;\n const resolution = evt.map.getView().getResolution();\n let wmsUrl;\n\n evt.map.forEachFeatureAtPixel(evt.pixel, function(feature) {\n if (feature.get(\"metadata\")) {\n layerMetadata.push(feature.get(\"metadata\"));\n }\n });\n\n evt.map.forEachLayerAtPixel(evt.pixel, function(layer) {\n if (layer.get(\"id\") === LAYER_ID) {\n sitesLayerInView = true;\n return;\n }\n\n if (layer.get(\"metadata\")) {\n layerMetadata.push(layer.get(\"metadata\"));\n }\n\n if (\n layer.get(\"metadata\") &&\n layer.get(\"metadata\").layerType.match(/wms$/i) &&\n layer.getSource().getGetFeatureInfoUrl !== undefined\n ) {\n wmsUrl = layer.getSource().getGetFeatureInfoUrl(coordinate, resolution, \"EPSG:3857\", {\n INFO_FORMAT: \"application/json\",\n exceptions: \"application/vnd.ogc.se_inimage\"\n });\n }\n });\n\n if (layerMetadata.length > 0) {\n this.setState({\n position: evt.coordinate,\n layerMetadata,\n wmsUrl: wmsUrl\n });\n } else {\n this.setState({\n position: undefined\n });\n }\n }\n\n handleOnCloseOverlay() {\n this.setState({\n position: undefined\n });\n }\n\n renderOverlayContents() {\n const lonlat = toLonLatCenter(this.state.position);\n const wmsUrl = this.state.wmsUrl;\n\n return (\n
\n {this.state.layerMetadata.map(m => (\n \n ))}\n
\n );\n }\n\n render() {\n return (\n this.renderOverlayContents()}\n />\n );\n }\n}\n","import Map from \"ol/Map\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport React, { Component } from \"react\";\nimport {\n ArcGISFeatureLayer,\n ArcGISTileLayer,\n SqlServerLayer,\n WMSTileLayer,\n ArcGISPolygonFeatureLayer\n} from \"../../../../../../lib/map\";\nimport Config from \"../../../../../config\";\nimport { sortByDisplayOrder } from \"../../../../../util/layers\";\nimport { propTypeAlignVertical } from \"../../../../../../lib/base/util/propTypes\";\nimport { DATA_HUB } from \"../../../../../Constants\";\n\nclass ReferenceLayers extends Component {\n static propTypes = {\n /**\n * The map instance will be provided to the component automatically when used as a\n * child component of the .\n */\n map: PropTypes.instanceOf(Map),\n\n /**\n * Layers to render onto the map.\n */\n layers: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.any.isRequired,\n layerType: PropTypes.string.isRequired,\n layerName: PropTypes.string.isRequired,\n displayOrder: PropTypes.number.isRequired,\n opacity: PropTypes.number.isRequired,\n layerUrl: PropTypes.string,\n layerUrlShowVal: PropTypes.string,\n baseType: PropTypes.any\n })\n ),\n\n /**\n * Current extent of the map\n */\n extent: PropTypes.array,\n\n /**\n * layerPreview overrides\n */\n mode: PropTypes.object\n };\n\n static defaultProps = {\n layers: []\n };\n\n render() {\n const { map, layers, extent } = this.props;\n\n return layers.sort(sortByDisplayOrder).map(layer => {\n switch (layer.layerType.toLowerCase()) {\n case \"arcgis93rest\":\n case \"arcgis\":\n return (\n \n );\n case \"arcgisfeature\":\n return (\n \n );\n case \"wms\":\n return (\n \n );\n case \"sqlspatial\":\n case DATA_HUB:\n return (\n \n );\n case \"polygonvector\":\n return (\n \n );\n default:\n return null;\n }\n });\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n mode: state.system.mode\n };\n}\n\nexport default connect(mapStateToProps)(ReferenceLayers);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Map from '../../../lib/map';\r\nimport { toWebMercatorCenter } from '../../../lib/map/core/transfomer';\r\nimport Config from '../../config';\r\nimport { DEFAULT_MAP_PADDING } from '../../Constants';\r\nimport LayerMetadataOverlay from '../../page/map/components/shared/layer/LayerMetadataOverlay';\r\nimport ReferenceLayers from '../../page/map/components/shared/layer/ReferenceLayers';\r\nimport RootBaseLayer from '../../page/map/components/shared/layer/RootBaseLayer';\r\nimport SiteFeaturesLayer from '../../page/map/components/shared/layer/SiteFeaturesLayer';\r\nimport { isSmallScreen } from '../../util/browser';\r\nimport WindowSizeAwareMapContainer from './detail/map/WindowSizeAwareMapContainer';\r\n\r\nclass SiteMapContainer extends Component {\r\n static propTypes = {\r\n layers: PropTypes.array,\r\n profile: PropTypes.object,\r\n minResolution: PropTypes.number,\r\n maxResolution: PropTypes.number,\r\n /**\r\n * API key for bing maps\r\n */\r\n bingApiKey: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n extent: undefined,\r\n };\r\n\r\n this.handleOnAfterPopulateFeatures = this.handleOnAfterPopulateFeatures.bind(this);\r\n }\r\n\r\n handleOnAfterPopulateFeatures({ vectorSource }) {\r\n this.setState({\r\n extent: vectorSource.getExtent(),\r\n });\r\n }\r\n\r\n render() {\r\n const { longitude, latitude } = this.props.profile.profileFacilityDetail;\r\n\r\n if (!longitude || !latitude) {\r\n return null;\r\n }\r\n\r\n const {\r\n minResolution,\r\n maxResolution,\r\n activeBaseLayer: rootBaseLayer,\r\n activeReferenceLayers: referenceLayers,\r\n } = this.props;\r\n\r\n const center = toWebMercatorCenter([longitude, latitude]);\r\n\r\n return (\r\n (\r\n
\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n {!isSmallScreen() && }\r\n \r\n
\r\n )}\r\n />\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n profile: state.profile.detail.data,\r\n minResolution: state.map.minResolution,\r\n maxResolution: state.map.maxResolution,\r\n activeBaseLayer: state.map.activeBaseLayer,\r\n activeReferenceLayers: state.map.activeReferenceLayers,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(SiteMapContainer);\r\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport ChemicalsContainer from \"../../../../../../components/profile/ChemicalsContainer\";\nimport ComplianceContainer from \"../../../../../../components/profile/ComplianceContainer\";\nimport DocumentsContainer from \"../../../../../../components/profile/DocumentsContainer\";\nimport EnvironmentalInterestsContainer from \"../../../../../../components/profile/EnvironmentalInterestsContainer\";\nimport GenericContainer from \"../../../../../../components/profile/GenericContainer\";\nimport {\n PROFILE_TAB_CHEMICALS,\n PROFILE_TAB_COMPLIANCE,\n PROFILE_TAB_DETAIL,\n PROFILE_TAB_DOCUMENTS,\n PROFILE_TAB_EI,\n PROFILE_TAB_GENERIC,\n PROFILE_TAB_MAP\n} from \"../../../../../../components/profile/header/ProfileTabs\";\nimport ProfileContainer from \"../../../../../../components/profile/ProfileContainer\";\nimport SiteMapContainer from \"../../../../../../components/profile/SiteMapContainer\";\nimport SpinnerPanel from \"../../../../../../components/spinner/SpinnerPanel\";\nimport { getSiteId } from \"../../../../../../util/entities/siteProfile\";\n\nclass SiteProfileDetail extends Component {\n static propTypes = {\n /**\n * Site profile data.\n */\n siteProfile: PropTypes.object\n };\n\n render() {\n const { isLoading, siteProfile } = this.props;\n const { params } = this.props.match;\n\n if (isLoading) {\n return ;\n }\n\n if (!siteProfile) {\n return null;\n }\n\n const siteId = getSiteId(siteProfile);\n const tab = params.tab || \"profile\";\n\n switch (tab) {\n case PROFILE_TAB_DETAIL:\n return ;\n case PROFILE_TAB_MAP:\n return ;\n case PROFILE_TAB_COMPLIANCE:\n if (siteProfile.tabCounts.complianceCount > 0) {\n return ;\n } else {\n return ;\n }\n case PROFILE_TAB_DOCUMENTS:\n if (siteProfile.tabCounts.documentCount > 0) {\n return ;\n } else {\n return ;\n }\n case PROFILE_TAB_CHEMICALS:\n if (siteProfile.tabCounts.chemicalCount > 0) {\n return ;\n } else {\n return ;\n }\n case PROFILE_TAB_GENERIC:\n return ;\n case PROFILE_TAB_EI:\n if (siteProfile.tabCounts.environmentalInterestsCount > 0) {\n return ;\n } else {\n return ;\n }\n default:\n return ;\n }\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n siteProfile: state.profile.detail.data,\n isLoading: state.profile.detail.isLoading\n };\n}\n\nexport default withRouter(connect(mapStateToProps)(SiteProfileDetail));\n","import React, { PureComponent } from 'react';\r\nimport SiteProfileDetail from '../../../../shared/panel/profile/SiteProfileDetail';\r\n\r\nexport default class SiteProfileDetailBody extends PureComponent {\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { IconClear } from '../icons';\r\nimport { Column, Columns } from '../../../lib/base';\r\n\r\nclass TextInput extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * The value of the input.\r\n */\r\n value: PropTypes.string,\r\n\r\n /**\r\n * Handle input value changes.\r\n */\r\n onChange: PropTypes.func.isRequired,\r\n\r\n /**\r\n * Handle when value is cleared.\r\n */\r\n onClear: PropTypes.func,\r\n\r\n /**\r\n * Handle when input is blurred.\r\n */\r\n onBlur: PropTypes.func,\r\n\r\n /**\r\n * Handle on input keypress.\r\n */\r\n onKeypress: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n value: undefined,\r\n };\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.value !== nextProps.value) {\r\n prevState.value = nextProps.value || '';\r\n }\r\n\r\n return prevState;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n value: props.value || '',\r\n };\r\n\r\n this.handleOnChange = this.handleOnChange.bind(this);\r\n this.handleOnBlur = this.handleOnBlur.bind(this);\r\n this.handleOnKeypress = this.handleOnKeypress.bind(this);\r\n this.handleOnClear = this.handleOnClear.bind(this);\r\n }\r\n\r\n handleOnChange(event) {\r\n const value = event.target.value;\r\n this.setState({ value: value });\r\n this.props.onChange(event, value);\r\n }\r\n\r\n handleOnBlur(event) {\r\n if (this.props.onBlur) {\r\n const value = event.target.value;\r\n this.props.onBlur(event, value);\r\n }\r\n }\r\n\r\n handleOnKeypress(event) {\r\n if (this.props.onKeypress) {\r\n const value = event.target.value;\r\n this.props.onKeypress(event, value);\r\n }\r\n }\r\n\r\n handleOnClear(event) {\r\n const v = '';\r\n this.setState({ value: v });\r\n this.props.onChange(event, v);\r\n\r\n if (this.props.onClear) {\r\n this.props.onClear(event);\r\n }\r\n }\r\n\r\n hasValue() {\r\n return this.state.value && this.state.value.length > 0;\r\n }\r\n\r\n render() {\r\n const { container, column, clickable, input } = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {this.hasValue() && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n padding: `${theme.spacing.small} ${theme.spacing.small}`,\r\n height: '48px',\r\n },\r\n\r\n clickable: {\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n\r\n input: {\r\n ...theme.input.medium,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(TextInput);\r\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { IconClear } from \"../icons\";\nimport { Column, Columns } from \"../../../lib/base\";\nimport Box from \"../../../lib/base/layout/Box\";\n\nclass ParagraphInput extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * The value of the input.\n */\n value: PropTypes.string,\n\n /**\n * Handle input value changes.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Handle when value is cleared.\n */\n onClear: PropTypes.func,\n\n /**\n * Handle when input is blurred.\n */\n onBlur: PropTypes.func,\n\n /**\n * Handle on input keypress.\n */\n onKeypress: PropTypes.func\n };\n\n static defaultProps = {\n value: undefined\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (prevState.value !== nextProps.value) {\n prevState.value = nextProps.value || \"\";\n }\n\n return prevState;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value || \"\"\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n this.handleOnKeypress = this.handleOnKeypress.bind(this);\n this.handleOnClear = this.handleOnClear.bind(this);\n }\n\n handleOnChange(event) {\n const value = event.target.value;\n this.setState({ value: value });\n this.props.onChange(event, value);\n }\n\n handleOnBlur(event) {\n if (this.props.onBlur) {\n const value = event.target.value;\n this.props.onBlur(event, value);\n }\n }\n\n handleOnKeypress(event) {\n if (this.props.onKeypress) {\n const value = event.target.value;\n this.props.onKeypress(event, value);\n }\n }\n\n handleOnClear(event) {\n const v = \"\";\n this.setState({ value: v });\n this.props.onChange(event, v);\n\n if (this.props.onClear) {\n this.props.onClear(event);\n }\n }\n\n hasValue() {\n return this.state.value && this.state.value.length > 0;\n }\n\n render() {\n const { container, textAreaInput, column, clickable } = this.props.classes;\n\n return (\n \n \n {/* {this.hasValue() && (\n \n \n \n )} */}\n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n padding: `${theme.spacing.small} ${theme.spacing.small}`,\n height: \"96px\"\n },\n\n clickable: {\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n\n textAreaInput: {\n ...theme.input.textAreaMedium\n }\n});\n\nexport default injectSheet(styles)(ParagraphInput);\n","/**\n * Get cookie by name\n *\n * @returns {*|String}}\n */\nexport const getCookieByName = cname => {\n var name = cname + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return null;\n};\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Box, Text } from '../../../lib/base';\nimport Modal from '../../../lib/base/basic/Modal';\nimport HeadingText from '../text/HeadingText';\nimport { propTypeColor } from '../../../lib/base/util/propTypes';\n\nexport default class ClaimSitesModal extends Component {\n static propTypes = {\n /**\n * Close modal callback.\n */\n onRequestClose: PropTypes.func.isRequired,\n\n /**\n * Is modal visible\n */\n visible: PropTypes.bool.isRequired,\n\n /**\n * body text\n */\n bodyText: PropTypes.string,\n\n /**\n * Heading text\n */\n headingText: PropTypes.string,\n\n /**\n * color for modal background\n */\n bgColor: propTypeColor,\n };\n\n render() {\n return (\n {this.props.headingText}}\n isOpen={this.props.visible}\n onRequestClose={this.props.onRequestClose}\n bgColor={this.props.bgColor}\n >\n \n {this.props.bodyText}\n \n \n );\n }\n}\n","const AccountRoles = [\n {\n id: \"ADMIN\",\n description: \"Administrator\",\n longDescription:\n \"Administrators can edit site information, invite other users to join the site, inactivate users, and request certifier permissions for users.\"\n },\n {\n id: \"EDIT\",\n description: \"Editor\",\n longDescription:\n \"Editors can fill out forms and reports. May require certifier permissions to submit, depending on the form.\"\n },\n {\n id: \"VIEW\",\n description: \"Viewer\",\n longDescription: \"Viewers can view site information but can't make any changes\"\n }\n];\n\nexport default AccountRoles;\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { IconCheck } from \"../../components/icons/fontawesome/icons\";\nimport { Box, Text, Button } from \"../../../lib/base\";\nimport { IconInfo } from \"../../components/icons/fontawesome/icons\";\nimport { COLOR_BASE_PRIMARY, COLOR_BASE_RED } from \"../../Constants\";\nimport Labeled from \"../../components/form/Labeled\";\nimport TextInput from \"../../components/form/TextInput\";\nimport ParagraphInput from \"../../components/form/ParagraphInput\";\nimport Select from \"../../components/form/Select\";\nimport { isEmail } from \"../../util/string\";\nimport Config from \"../../config\";\nimport Reaptcha from \"reaptcha\";\nimport { getCookieByName } from \"../../util/cookieHelper\";\nimport SpinnerPanel from \"../../components/spinner/SpinnerPanel\";\nimport ClaimSitesModal from \"../../components/modal/ClaimSitesModal\";\nimport HeadingText from \"../../components/text/HeadingText\";\nimport AccountRoles from \"../../config/accountRoles\";\n\nconst api = () => window.nSITE.Api;\n\nclass ClaimSite extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n accountId: PropTypes.string.isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.userData = JSON.parse(decodeURIComponent(getCookieByName(\"userData\")));\n this.handleOnClickClaim = this.handleOnClickClaim.bind(this);\n this.handleOnNameChange = this.handleOnNameChange.bind(this);\n this.handleOnPhoneChange = this.handleOnPhoneChange.bind(this);\n this.handleOnEmailChange = this.handleOnEmailChange.bind(this);\n this.handleOnAccessLevelChange = this.handleOnAccessLevelChange.bind(this);\n this.handleOnReasonChange = this.handleOnReasonChange.bind(this);\n this.onVerify = this.onVerify.bind(this);\n this.onExpire = this.onExpire.bind(this);\n this.submitForm = this.submitForm.bind(this);\n this.handleOnCloseModal = this.handleOnCloseModal.bind(this);\n\n this.captcha = null;\n this.recaptchaSiteKey = Config.getRecaptchaSiteKey();\n\n this.state = {\n claimFormVisible: false,\n claimUserEmail: this.userData ? this.userData.email : undefined,\n claimUserName: this.userData ? this.userData.displayName : undefined,\n claimUserPhone: this.userData ? this.userData.phone : undefined,\n claimRequestReason: this.userData ? this.userData.requestReason : undefined,\n claimAccountRoleType: undefined,\n claimEmailIsValid: this.userData && this.userData.email ? true : false,\n claimPhoneIsValid: this.userData && this.userData.phone ? true : false,\n claimNameIsValid: this.userData && this.userData.displayName ? true : false,\n claimReasonIsValid: this.userData && this.userData.requestReason ? true : false,\n claimAccessLevelIsValid: this.userData && this.userData.accountRoleTypeId ? true : false,\n verified:\n this.recaptchaSiteKey === null || this.recaptchaSiteKey === undefined ? true : false,\n isSubmitting: false,\n showModal: false\n };\n }\n\n handleOnClickClaim() {\n this.setState({ claimFormVisible: !this.state.claimFormVisible });\n }\n\n handleOnCloseModal() {\n this.setState({ showModal: false });\n }\n\n handleOnNameChange(value) {\n const isValid = value && value.length > 3 ? true : false;\n this.setState({ claimUserName: value, claimNameIsValid: isValid });\n }\n\n handleOnPhoneChange(value) {\n const isValid = value && value.length > 3 ? true : false;\n this.setState({ claimUserPhone: value, claimPhoneIsValid: isValid });\n }\n\n handleOnEmailChange(value) {\n let isValid = isEmail(value);\n this.setState({ claimUserEmail: value, claimEmailIsValid: isValid });\n }\n\n handleOnReasonChange(value) {\n let isValid = value && value.length > 3 ? true : false;\n this.setState({ claimRequestReason: value, claimReasonIsValid: isValid });\n }\n\n handleOnAccessLevelChange(event, value) {\n let isValid = value ? true : false;\n this.setState({\n claimAccountRoleType: value,\n claimAccessLevelIsValid: isValid\n });\n }\n\n submitForm() {\n let formParams = {\n displayName: this.state.claimUserName,\n email: this.state.claimUserEmail,\n phone: this.state.claimUserPhone,\n accountId: this.props.accountId,\n requestReason: this.state.claimRequestReason,\n accountRoleTypeId: this.state.claimAccountRoleType.id\n };\n this.setState({\n isSubmitting: true\n });\n api()\n .site.claimSite(formParams)\n .then(result => {\n this.setState({\n isSubmitting: false,\n claimFormVisible: false,\n verified: false || this.recaptchaSiteKey == null\n });\n var errorMsg;\n if (result.responseStatus && result.responseStatus.message) {\n errorMsg = result.responseStatus.message;\n } else {\n errorMsg = \"An error has occured, please contact site adminstrator\";\n }\n result.insertUpdateList\n ? this.setState({\n showModal: true,\n modalBgColor: null,\n modalBodyText:\n \"Thank you, your claim request has been received. The agency will notify you via email when the request has been processed. The agency may contact you with additional questions to help verify the request.\",\n modalHeadingText: \"Claim Site Submission Success\"\n })\n : this.setState({\n showModal: true,\n modalBgColor: COLOR_BASE_RED,\n modalBodyText: errorMsg,\n modalHeadingText: \"An Error Has Occurred\"\n });\n });\n }\n\n onVerify() {\n this.setState({\n verified: true\n });\n }\n\n onExpire() {\n this.setState({\n verified: false\n });\n }\n\n render() {\n if (this.state.showModal) {\n return (\n \n );\n }\n if (this.state.isSubmitting) {\n return ;\n } else {\n return (\n \n \n {!this.state.claimFormVisible && (\n \n \n Claim this Site\n \n \n \n )}\n {this.state.claimFormVisible && (\n \n \n Claim Site\n \n (\n this.handleOnNameChange(event.target.value)}\n value={this.state.claimUserName}\n />\n )}\n />\n (\n this.handleOnPhoneChange(event.target.value)}\n value={this.state.claimUserPhone}\n />\n )}\n />\n (\n this.handleOnEmailChange(event.target.value)}\n value={this.state.claimUserEmail}\n />\n )}\n />\n (\n this.handleOnReasonChange(event.target.value)}\n value={this.state.claimRequestReason}\n />\n )}\n />\n \n \n }\n >\n Account Role\n \n \n choice.id}\n labelExtractor={choice => choice.description}\n renderChoice={choice =>
{choice.description}
}\n />\n
\n \n Submit\n \n {this.recaptchaSiteKey && (\n \n (this.captcha = e)}\n sitekey={this.recaptchaSiteKey}\n onVerify={this.onVerify}\n onExpire={this.onExpire}\n />\n \n )}\n
\n )}\n
\n
\n );\n }\n }\n}\n\nconst styles = theme => ({\n button: {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY][\"dark2\"],\n padding: theme.spacing.medium,\n borderRadius: 999,\n transition: \"background-color 120ms\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"&:hover\": {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY][\"dark1\"]\n }\n },\n buttonText: {\n marginRight: 12\n },\n captchaCont: {\n marginBottom: `-${theme.spacing.medium}`,\n padding: theme.spacing.medium\n }\n});\n\nexport default injectSheet(styles)(ClaimSite);\n","import PropTypes from 'prop-types';\r\nimport { Component } from 'react';\r\nimport { labelCapitalized } from '../../util/label';\r\n\r\nexport default class ResourceLabel extends Component {\r\n static propTypes = {\r\n /**\r\n * Key used to look up the label value.\r\n */\r\n resourceKey: PropTypes.string.isRequired,\r\n };\r\n\r\n static defaultProps = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n value: labelCapitalized(props.resourceKey),\r\n };\r\n }\r\n\r\n shouldComponentUpdate() {\r\n return false;\r\n }\r\n\r\n render() {\r\n return this.state.value;\r\n }\r\n}\r\n","import uniq from 'lodash/uniq';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { Box, Column, Columns, Text } from '../../../../../../../lib/base';\nimport MiniMap from '../../../../../../components/profile/detail/map/MiniMap';\nimport SpinnerPanel from '../../../../../../components/spinner/SpinnerPanel';\nimport ClaimSite from '../../../../../../../app/page/themes/ClaimSite';\nimport HeadingText from '../../../../../../components/text/HeadingText';\nimport ResourceLabel from '../../../../../../components/text/ResourceLabel';\nimport Config from '../../../../../../config';\nimport ConfigKeys from '../../../../../../config/keys';\nimport { COLOR_BASE_PRIMARY, CLAIM_SITE, LAYER_PREVIEW } from '../../../../../../Constants';\nimport { navigateToDetailTab } from '../../../../../../routing';\nimport { getSiteId } from '../../../../../../util/entities/siteProfile';\nimport { label } from '../../../../../../util/label';\n\nclass SiteProfileSummary extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n mode: PropTypes.object,\n profile: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n this.handleOnClickCompliance = this.handleOnClickCompliance.bind(this);\n this.handleOnClickDocuments = this.handleOnClickDocuments.bind(this);\n this.handleOnClickEnvInt = this.handleOnClickEnvInt.bind(this);\n }\n\n handleOnClickCompliance() {\n const { profile } = this.props;\n const nextTab = profile.tabCounts.complianceCount > 0 ? 'compliance' : 'profile';\n navigateToDetailTab(this.props, getSiteId(this.props.profile), nextTab);\n }\n\n handleOnClickDocuments() {\n const { profile } = this.props;\n const nextTab = profile.tabCounts.documentCount > 0 ? 'documents' : 'profile';\n navigateToDetailTab(this.props, getSiteId(this.props.profile), nextTab);\n }\n\n handleOnClickEnvInt() {\n const { profile } = this.props;\n const nextTab = profile.tabCounts.environmentalInterestsCount > 0 ? 'ei' : 'profile';\n navigateToDetailTab(this.props, getSiteId(this.props.profile), nextTab);\n }\n\n renderEnvironmentalInterestsNotSummarized() {\n const { profileEnvInt } = this.props.profile;\n\n const eis = uniq(profileEnvInt.map(ei => ei.typeDesc)).sort();\n\n return (\n \n \n \n \n \n \n \n {eis.map((ei, index) => (\n \n {ei}\n \n ))}\n \n \n );\n }\n\n renderEnvironmentalInterests() {\n if (Config.isSummarizeEIs()) {\n return this.renderEnvironmentalInterestsSummarized();\n } else {\n return this.renderEnvironmentalInterestsNotSummarized();\n }\n }\n\n renderEnvironmentalInterestsSummarized() {\n const { profileEnvInt } = this.props.profile;\n\n const eis = uniq(profileEnvInt.map(ei => ei.typeDesc)).sort();\n if (eis.length > 0) {\n return (\n \n \n \n \n \n \n \n {eis.length > 1 && (\n \n \n Total\n \n \n \n {eis.length}\n \n \n \n )}\n {eis.length === 1 && (\n \n {eis[0]}\n \n )}\n \n \n );\n }\n }\n\n renderComplianceRow(label, value) {\n return (\n \n \n \n {label}\n \n \n \n {value || 0}\n \n \n \n \n );\n }\n\n renderEvaluations(profileFacilityDetail) {\n if (profileFacilityDetail.isShowTotalEvaluationsOnly) {\n return this.renderComplianceRow('Total', profileFacilityDetail.totalComplianceEvaluations);\n } else {\n return (\n
\n {this.renderComplianceRow(\n label(ConfigKeys.LABEL_COMPLIANCE_HAS_VIOLATIONS, 'Violations Found'),\n profileFacilityDetail.evalHasViolY\n )}\n {this.renderComplianceRow(\n label(ConfigKeys.LABEL_COMPLIANCE_NO_VIOLATIONS, 'Violations Not Found'),\n profileFacilityDetail.evalHasViolN\n )}\n
\n );\n }\n }\n\n renderActions(profileFacilityDetail) {\n if (profileFacilityDetail.isShowTotalComplianceActionsOnly) {\n return this.renderComplianceRow('Total', profileFacilityDetail.totalComplianceActions);\n } else {\n return (\n
\n {this.renderComplianceRow(\n label(ConfigKeys.LABEL_COMPLIANCE_ACTIONS_FORMAL, 'Formal'),\n profileFacilityDetail.complActTypeF\n )}\n {this.renderComplianceRow(\n label(ConfigKeys.LABEL_COMPLIANCE_ACTIONS_INFORMAL, 'Informal'),\n profileFacilityDetail.complActTypeI\n )}\n
\n );\n }\n }\n\n renderViolations(profileFacilityDetail) {\n if (profileFacilityDetail.isShowTotalViolationsOnly) {\n return this.renderComplianceRow('Total', profileFacilityDetail.totalComplianceViolations);\n } else {\n return (\n
\n {this.renderComplianceRow(\n label(ConfigKeys.LABEL_VIOLATIONS_OPEN, 'Open'),\n profileFacilityDetail.violResolvedN\n )}\n {this.renderComplianceRow(\n label(ConfigKeys.LABEL_VIOLATIONS_CLOSED, 'Closed'),\n profileFacilityDetail.violResolvedY\n )}\n
\n );\n }\n }\n\n renderDocumentsSummary() {\n const { profileFacilityDetail } = this.props.profile;\n if (profileFacilityDetail && profileFacilityDetail.totalDocuments > 0) {\n return (\n \n {Config.isShowDocumentCount() && (\n \n \n \n \n \n \n {this.renderDocuments(profileFacilityDetail)}\n \n )}\n \n );\n }\n }\n\n renderDocuments(profileFacilityDetail) {\n return this.renderDocumentsRow('Total', profileFacilityDetail.totalDocuments);\n }\n\n renderDocumentsRow(label, value) {\n return (\n \n \n \n {label}\n \n \n \n {value || 0}\n \n \n \n \n );\n }\n\n renderComplianceSummary() {\n const { profileFacilityDetail } = this.props.profile;\n\n if (\n profileFacilityDetail &&\n (profileFacilityDetail.totalComplianceViolations > 0 ||\n profileFacilityDetail.totalComplianceActions > 0 ||\n profileFacilityDetail.totalComplianceEvaluations > 0)\n ) {\n return (\n \n {profileFacilityDetail.totalComplianceEvaluations > 0 && (\n \n \n \n \n \n \n {this.renderEvaluations(profileFacilityDetail)}\n \n )}\n {profileFacilityDetail.totalComplianceViolations > 0 && (\n \n \n \n \n \n \n {this.renderViolations(profileFacilityDetail)}\n \n )}\n {profileFacilityDetail.totalComplianceActions > 0 && (\n \n \n \n \n \n \n {this.renderActions(profileFacilityDetail)}\n \n )}\n \n );\n }\n }\n\n renderMap() {\n return (\n \n \n \n );\n }\n\n renderTheme() {\n if (this.props.mode.name) {\n switch (this.props.mode.name.toLowerCase()) {\n case CLAIM_SITE:\n return ;\n default:\n break;\n }\n }\n }\n\n render() {\n if (this.props.isLoading) {\n return ;\n }\n\n if (!this.props.profile) {\n return
Site not found
;\n }\n\n return (\n
\n {this.renderMap()}\n {this.renderTheme()}\n {this.renderEnvironmentalInterests()}\n {this.renderComplianceSummary()}\n {this.renderDocumentsSummary()}\n
\n );\n }\n}\n\nconst styles = theme => ({\n container: {\n marginLeft: `-${theme.spacing.medium}`,\n padding: theme.spacing.medium,\n\n '&:hover': {\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light1'],\n transition: 'background-color 350ms',\n },\n },\n});\n\nfunction mapStateToProps(state) {\n return {\n profile: state.profile.detail.data,\n isLoading: state.profile.detail.isLoading,\n mode: state.system.mode,\n };\n}\n\nexport default withRouter(connect(mapStateToProps)(injectSheet(styles)(SiteProfileSummary)));\n","import React, { PureComponent } from 'react';\r\nimport SiteProfileSummary from '../../../../shared/panel/profile/SiteProfileSummary';\r\n\r\nexport default class SiteProfileSummaryBody extends PureComponent {\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport SiteProfileDetailBody from './body/SiteProfileDetailBody';\r\nimport SiteProfileSummaryBody from './body/SiteProfileSummaryBody';\r\n\r\nexport default class SlideOutSiteProfileBody extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Show summary body.\r\n */\r\n showSummary: PropTypes.bool,\r\n\r\n /**\r\n * Show detail body.\r\n */\r\n showDetail: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n showSummary: false,\r\n showDetail: false,\r\n };\r\n\r\n render() {\r\n const { showSummary, showDetail } = this.props;\r\n\r\n if (showDetail) {\r\n return ;\r\n }\r\n\r\n if (showSummary) {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport { Link } from '../../../../lib/base';\nimport Config from '../../../config';\nimport { IconLinkExternal, IconPrint } from '../../icons/fontawesome/icons';\n\nclass ProfilePageLink extends Component {\n static propTypes = {\n /**\n * The source identifier to use in link.\n */\n sourceIdentifier: PropTypes.string.isRequired,\n\n /**\n * React router.\n */\n match: PropTypes.object.isRequired,\n\n /**\n * Append to print parameter.\n */\n print: PropTypes.bool,\n };\n\n render() {\n const { print, sourceIdentifier } = this.props;\n const { params } = this.props.match;\n\n let to;\n\n if (print) {\n to = `/site/${sourceIdentifier}/print`;\n } else {\n if (params.tab) {\n to = `/site/${sourceIdentifier}/${params.tab}`;\n } else {\n to = `/site/${sourceIdentifier}/`;\n }\n }\n\n const url = `${Config.getApplicationBaseUrl()}${to}`;\n\n const title = this.props.print ? 'Print profile page' : 'Open profile page in a new window';\n\n return (\n \n {this.props.print ? : }\n \n );\n }\n}\n\nexport default withRouter(ProfilePageLink);\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { COLOR_BASE_PRIMARY } from '../../../../../../../Constants';\r\n\r\nclass BaseHeader extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss provided property.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node.isRequired,\r\n };\r\n\r\n render() {\r\n return
{this.props.children}
;\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n header: {\r\n backgroundColor: theme.color[COLOR_BASE_PRIMARY]['light1'],\r\n paddingTop: theme.spacing.medium,\r\n paddingRight: theme.spacing.medium,\r\n paddingLeft: theme.spacing.large,\r\n boxShadow: 'inset 7px 0 9px -7px rgba(0,0,0,0.4)',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(BaseHeader);\r\n","import PropTypes from \"prop-types\";\nimport React, { PureComponent } from \"react\";\nimport injectSheet from \"react-jss\";\nimport { withRouter } from \"react-router-dom\";\nimport { Box, Button, Column, Columns, Link } from \"../../../../../../../../lib/base\";\nimport { IconChevronLeft, IconClear, IconNcore } from \"../../../../../../../components/icons\";\nimport ProfilePageLink from \"../../../../../../../components/profile/header/ProfilePageLink\";\nimport ProfileTabs from \"../../../../../../../components/profile/header/ProfileTabs\";\nimport SiteNameAndAddress from \"../../../../../../../components/profile/header/SiteNameAndAddress\";\nimport Config from \"../../../../../../../config\";\nimport { COLOR_BASE_PRIMARY } from \"../../../../../../../Constants\";\nimport { navigateCloseSubPanel, navigateToSummary } from \"../../../../../../../routing\";\nimport { getSiteId, toSiteNameAndAddress } from \"../../../../../../../util/entities/siteProfile\";\nimport BaseHeader from \"./BaseHeader\";\n\nclass SiteProfileDetailHeader extends PureComponent {\n static propTypes = {\n /**\n * Site profile data.\n */\n siteProfile: PropTypes.object.isRequired,\n\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired\n };\n\n constructor(props) {\n super(props);\n this.handleOnClose = this.handleOnClose.bind(this);\n this.handleOnShowLessInformation = this.handleOnShowLessInformation.bind(this);\n }\n\n handleOnShowLessInformation() {\n navigateToSummary(this.props, getSiteId(this.props.siteProfile));\n }\n\n handleOnClose() {\n navigateCloseSubPanel(this.props);\n }\n\n render() {\n const { siteProfile, classes } = this.props;\n const sourceId = getSiteId(siteProfile);\n const ncoreBaseUrl = Config.getNCoreBaseUrl();\n const showSourceSiteLink = Config.getHideSourceSiteLink();\n const nCoreSiteUrl = `${ncoreBaseUrl}/site/edit/detail?siteId=${sourceId}`;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {showSourceSiteLink && ncoreBaseUrl && (\n \n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Show Less Information\n \n \n \n \n );\n }\n}\n\nconst styles = theme => ({\n buttonContainer: {\n padding: `${theme.spacing.small} 0`\n },\n\n [`@media screen and (max-width: 1250px)`]: {\n lowerBarContainer: {\n flexDirection: \"column-reverse\",\n alignItems: \"flex-start\"\n },\n buttonContainer: {\n alignSelf: \"flex-end\"\n }\n }\n});\n\nexport default withRouter(injectSheet(styles)(SiteProfileDetailHeader));\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport injectSheet from 'react-jss';\nimport { withRouter } from 'react-router-dom';\nimport { Button, Column, Columns } from '../../../../../../../../lib/base';\nimport { IconChevronRight, IconClear } from '../../../../../../../components/icons';\nimport SiteNameAndAddress from '../../../../../../../components/profile/header/SiteNameAndAddress';\nimport TouchTarget from '../../../../../../../components/touchable/TouchTarget';\nimport { COLOR_BASE_PRIMARY } from '../../../../../../../Constants';\nimport { navigateCloseSubPanel, navigateToDetail } from '../../../../../../../routing';\nimport { getSiteId, toSiteNameAndAddress } from '../../../../../../../util/entities/siteProfile';\nimport BaseHeader from './BaseHeader';\n\nclass SiteProfileSummaryHeader extends PureComponent {\n static propTypes = {\n /**\n * JSS provided classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Site profile data.\n */\n siteProfile: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.handleOnShowMoreInformation = this.handleOnShowMoreInformation.bind(this);\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n handleOnShowMoreInformation() {\n navigateToDetail(this.props, getSiteId(this.props.siteProfile));\n }\n\n handleOnClose() {\n navigateCloseSubPanel(this.props);\n }\n\n render() {\n const { siteProfile, classes } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Show More Information \n \n \n \n \n );\n }\n}\n\nconst styles = theme => ({\n buttonContainer: {\n padding: `${theme.spacing.small} 0`,\n display: 'inline-flex',\n justifyContent: 'flex-end',\n },\n});\n\nexport default withRouter(injectSheet(styles)(SiteProfileSummaryHeader));\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport SiteProfileDetailHeader from './header/SiteProfileDetailHeader';\r\nimport SiteProfileSummaryHeader from './header/SiteProfileSummaryHeader';\r\n\r\nexport default class SlideOutSiteProfileHeader extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Site profile data.\r\n */\r\n siteProfile: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Show summary header\r\n */\r\n showSummary: PropTypes.bool,\r\n\r\n /**\r\n * Show detail header\r\n */\r\n showDetail: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n showSummary: false,\r\n showDetail: false,\r\n };\r\n\r\n render() {\r\n const { siteProfile, showSummary, showDetail } = this.props;\r\n\r\n if (showDetail) {\r\n return ;\r\n }\r\n\r\n if (showSummary) {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Row, Rows } from '../../../../../../../lib/base';\r\nimport SlideOutSiteProfileBody from './SlideOutSiteProfileBody';\r\nimport SlideOutSiteProfileHeader from './SlideOutSiteProfileHeader';\r\n\r\nclass SlideOutSiteProfile extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Site profile data.\r\n */\r\n siteProfile: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Show site profile summary.\r\n */\r\n showSummary: PropTypes.bool,\r\n\r\n /**\r\n * Show site profile detail.\r\n */\r\n showDetail: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n showSummary: false,\r\n showDetail: false,\r\n };\r\n\r\n render() {\r\n const { siteProfile, showSummary, showDetail, classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n body: {\r\n height: '100%',\r\n overflow: 'hidden',\r\n overflowY: 'auto',\r\n padding: theme.spacing.medium,\r\n paddingLeft: theme.spacing.large,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SlideOutSiteProfile);\r\n","import PropTypes from 'prop-types';\nimport React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { setCenterOnPosition } from '../../../../../../store/map/map.action';\nimport { loadProfileDetailIfNeeded } from '../../../../../../store/profile/profile.action';\nimport WindowDocumentTitle from '../../../../../components/dom/WindowDocumentTitle';\nimport SpinnerPanel from '../../../../../components/spinner/SpinnerPanel';\nimport { getSiteName } from '../../../../../util/entities/siteProfile';\nimport SlideOutSiteProfile from './profile/SlideOutSiteProfile';\nimport SlideOutContainer from './SlideOutContainer';\n\nclass SlideOutContainerSiteProfile extends Component {\n static propTypes = {\n /**\n * The css 'top' position.\n */\n top: PropTypes.number.isRequired,\n\n /**\n * The css 'width' position.\n */\n width: PropTypes.number.isRequired,\n\n /**\n * The height of the container div.\n */\n height: PropTypes.number.isRequired,\n\n /**\n * slide out width\n */\n slideOutWidth: PropTypes.number,\n\n /**\n * Z-Index.\n */\n zIndex: PropTypes.number.isRequired,\n };\n\n componentDidMount() {\n const { params } = this.props.match;\n if (params.id) {\n this.props.dispatchFetchProfile(params.id);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { params: prevParams } = prevProps.match;\n const { params } = this.props.match;\n\n if (prevParams.id !== params.id && params.id !== undefined) {\n this.props.dispatchFetchProfile(params.id);\n }\n }\n\n isShowSummary() {\n const { params } = this.props.match;\n return params.subPanel === 'summary';\n }\n\n isShowDetail() {\n const { params } = this.props.match;\n return params.subPanel === 'detail';\n }\n\n renderContents() {\n const { isLoading, error, siteProfile } = this.props;\n\n if (isLoading) {\n return ;\n }\n\n if (siteProfile) {\n return (\n \n \n {(this.isShowSummary() || this.isShowDetail()) && (\n \n )}\n \n );\n }\n\n if (error) {\n console.log('error', error);\n }\n\n return
Site not found.
;\n }\n\n render() {\n return (\n \n {this.renderContents()}\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n isLoading: state.profile.detail.isLoading,\n error: state.profile.detail.error,\n siteProfile: state.profile.detail.data,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchFetchProfile: id => {\n dispatch(loadProfileDetailIfNeeded(id));\n },\n dispatchCalculateCenterOnPosition: () => {\n dispatch(setCenterOnPosition());\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(SlideOutContainerSiteProfile)\n);\n","import PropTypes from 'prop-types';\r\nimport React, { Component, Fragment } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { connect } from 'react-redux';\r\nimport Row from '../../../../../lib/base/layout/flex/Row';\r\nimport Rows from '../../../../../lib/base/layout/flex/Rows';\r\nimport WindowResizeListener from '../../../../components/listener/WindowResizeListener';\r\nimport SpinnerOverlay from '../../../../components/spinner/SpinnerOverlay';\r\nimport {\r\n SEARCH_RESULT_PANEL_MARGIN_PX,\r\n SEARCH_RESULT_PANEL_WIDTH_PX,\r\n Z_INDEX_SEARCH_BAR,\r\n} from '../../../../Constants';\r\nimport { domRect } from '../../../../util/react';\r\nimport DesktopOmniContent from './DesktopOmniContent';\r\nimport DesktopSearchBar from './DesktopSearchBar';\r\nimport SlideOutContainerSearchCriteria from './slideout/SlideOutContainerSearchCriteria';\r\nimport SlideOutContainerSiteProfile from './slideout/SlideOutContainerSiteProfile';\r\n\r\nclass DesktopOmniBox extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n /**\r\n * Holds the dimensions of the omni box.\r\n */\r\n slideOutDimensions: undefined,\r\n };\r\n\r\n this.containerRef = React.createRef();\r\n this.handleWindowResize = this.handleWindowResize.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.updateSlideOutDimensions();\r\n }\r\n\r\n handleWindowResize() {\r\n this.updateSlideOutDimensions();\r\n }\r\n\r\n updateSlideOutDimensions() {\r\n if (this.containerRef && this.containerRef.current) {\r\n const rect = domRect(this.containerRef);\r\n const screenWidth = document.documentElement.clientWidth;\r\n const slideOutWidth = screenWidth - SEARCH_RESULT_PANEL_MARGIN_PX - rect.width;\r\n\r\n const slideOutDimensions = {\r\n top: SEARCH_RESULT_PANEL_MARGIN_PX,\r\n width: rect.width,\r\n height: rect.height,\r\n slideOutWidth: slideOutWidth,\r\n };\r\n\r\n this.setState({ slideOutDimensions });\r\n }\r\n }\r\n\r\n render() {\r\n const { slideOutDimensions } = this.state;\r\n\r\n return (\r\n \r\n \r\n\r\n {slideOutDimensions && (\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n
\r\n {this.props.isFetching && }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n container: {\r\n position: 'absolute',\r\n backgroundColor: 'white',\r\n zIndex: Z_INDEX_SEARCH_BAR,\r\n left: `${SEARCH_RESULT_PANEL_MARGIN_PX}px`,\r\n top: `${SEARCH_RESULT_PANEL_MARGIN_PX}px`,\r\n bottom: `${SEARCH_RESULT_PANEL_MARGIN_PX}px`,\r\n minWidth: `${SEARCH_RESULT_PANEL_WIDTH_PX}px`,\r\n maxWidth: `${SEARCH_RESULT_PANEL_WIDTH_PX}px`,\r\n boxShadow: '0 2px 4px 0 rgba(0, 0, 0, 0.4)',\r\n },\r\n});\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isFetching: state.map.search.isFetching,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(injectSheet(styles)(DesktopOmniBox));\r\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport MapLayersButton from '../../shared/panel/toolbar/buttons/MapLayersButton';\nimport { Z_INDEX_MAP_BUTTONS } from '../../../../../Constants';\nimport HomeButton from '../../shared/panel/toolbar/buttons/HomeButton';\nimport MyLocationButton from '../../shared/panel/toolbar/buttons/MyLocationButton';\nimport UserDeniedGeoLocationModal from '../../shared/panel/toolbar/UserDeniedGeoLocationModal';\nimport LocationlessSitesButton from '../../shared/panel/search/LocationlessSitesButton';\n\nclass OnMapButtonLayers extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n isModalVisible: false,\n };\n\n this.handleOnUserDeniedError = this.handleOnUserDeniedError.bind(this);\n this.handleOnCloseModal = this.handleOnCloseModal.bind(this);\n }\n\n handleOnUserDeniedError() {\n this.setState({ isModalVisible: true });\n }\n\n handleOnCloseModal() {\n this.setState({ isModalVisible: false });\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n zIndex: Z_INDEX_MAP_BUTTONS,\n position: 'absolute',\n top: 5,\n right: 5,\n display: 'inline-flex',\n flexDirection: 'column',\n },\n\n buttonContainer: {\n backgroundColor: 'rgba(0,60,136,.3)', // openlayers default\n ...theme.elevation.shadow1,\n borderRadius: '24px',\n marginBottom: '4px',\n },\n});\n\nexport default injectSheet(styles)(OnMapButtonLayers);\n","import Map from 'ol/Map';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { FeaturesLayer } from '../../../../../../lib/map';\r\nimport { myLocationToFeature } from '../../../../../util/feature';\r\n\r\n/**\r\n * Displays the current location of the user.\r\n */\r\nclass MyLocationLayer extends Component {\r\n static propTypes = {\r\n /**\r\n * The instance of map this layer is attached to. The map instance\r\n * will be provided to the component automatically when used as a\r\n * child component of the .\r\n */\r\n map: PropTypes.instanceOf(Map),\r\n\r\n /**\r\n * Lon/lat coordinates.\r\n */\r\n myLocation: PropTypes.array,\r\n };\r\n\r\n /**\r\n * Default properties for those props that are not required.\r\n */\r\n static defaultProps = {\r\n map: undefined,\r\n myLocation: undefined,\r\n };\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const nextState = prevState;\r\n\r\n if (prevState.myLocation !== nextProps.myLocation) {\r\n nextState.features = [myLocationToFeature(nextProps.myLocation)];\r\n }\r\n\r\n return nextState;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n myLocation: props.myLocation,\r\n features: [myLocationToFeature(props.myLocation)],\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n myLocation: state.map.myLocation,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(MyLocationLayer);\r\n","import Map from 'ol/Map';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { FeaturesLayer } from '../../../../../../lib/map';\r\nimport { lonLatAsFeature } from '../../../../../util/feature';\r\n\r\n/**\r\n * Displays the geo-coded address on the map.\r\n */\r\nexport default class SearchedGeolocationLayer extends Component {\r\n static propTypes = {\r\n /**\r\n * The instance of map this layer is attached to. The map instance\r\n * will be provided to the component automatically when used as a\r\n * child component of the .\r\n */\r\n map: PropTypes.instanceOf(Map),\r\n\r\n /**\r\n * Lon/lat coordinates.\r\n */\r\n point: PropTypes.array,\r\n };\r\n\r\n static defaultProps = {\r\n map: undefined,\r\n point: undefined,\r\n };\r\n\r\n render() {\r\n if (!this.props.point) {\r\n return null;\r\n }\r\n\r\n const point = [...this.props.point].reverse();\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport Map, { MeasureTool } from '../../../../lib/map';\nimport Config from '../../../config';\nimport { isSmallScreen } from '../../../util/browser';\nimport OnMapButtonLayers from './mobile/button/OnMapButtonLayers';\nimport LayerMetadataOverlay from './shared/layer/LayerMetadataOverlay';\nimport MyLocationLayer from './shared/layer/MyLocationLayer';\nimport ReferenceLayers from './shared/layer/ReferenceLayers';\nimport RootBaseLayer from './shared/layer/RootBaseLayer';\nimport SearchedGeolocationLayer from './shared/layer/SearchedGeolocationLayer';\nimport SitesLayer from './shared/layer/SitesLayer';\n\nclass ConnectedMap extends PureComponent {\n static propTypes = {\n measureToolUnit: PropTypes.object,\n };\n\n static defaultProps = {};\n\n render() {\n const {\n extent,\n center,\n centerPosition,\n zoom,\n minResolution,\n maxResolution,\n padding,\n activeBaseLayer: rootBaseLayer,\n activeReferenceLayers: referenceLayers,\n sitesLayerFeatures,\n myLocation,\n geocodePoint,\n activeMeasureTool,\n measureToolUnit,\n measureToolRef,\n } = this.props;\n\n return (\n
\n {isSmallScreen() && }\n\n \n \n\n \n\n \n\n \n\n \n\n \n\n {!isSmallScreen() && }\n \n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n // \n extent: state.map.extent,\n center: state.map.center,\n centerPosition: state.map.centerPosition,\n zoom: state.map.zoom,\n minResolution: state.map.minResolution,\n maxResolution: state.map.maxResolution,\n padding: state.map.padding,\n\n // \n activeBaseLayer: state.map.activeBaseLayer,\n\n // \n activeReferenceLayers: state.map.activeReferenceLayers,\n\n // \n sitesLayerFeatures: state.map.search.features,\n\n // \n myLocation: state.map.myLocation,\n\n // \n geocodePoint: state.search.geocode.data && state.search.geocode.data.point,\n\n // \n activeMeasureTool: state.map.activeMeasureTool,\n };\n}\n\nexport default connect(mapStateToProps)(ConnectedMap);\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport DesktopOmniBox from './desktop/DesktopOmniBox';\r\nimport ConnectedMap from './ConnectedMap';\r\n\r\nclass MapDesktopContainer extends PureComponent {\r\n static propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n measureToolUnit: undefined,\r\n };\r\n\r\n this.measureToolRef = React.createRef();\r\n this.handleOnClearMeasurements = this.handleOnClearMeasurements.bind(this);\r\n this.handleOnUnitChange = this.handleOnUnitChange.bind(this);\r\n }\r\n\r\n handleOnClearMeasurements() {\r\n this.measureToolRef.current.clearMeasurements();\r\n }\r\n\r\n handleOnUnitChange(event, unit) {\r\n this.setState({ measureToolUnit: unit });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n
\r\n \r\n\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n map: {\r\n position: 'relative',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(MapDesktopContainer);\r\n","/**\n * Helpers to test current path.\n */\n\nexport const isViewingMap = ({ location }) => {\n return location.pathname === '/map';\n};\n\nexport const isViewingResults = ({ location }) => {\n return location.pathname === '/map/results';\n};\n\nexport const isViewingProfile = ({ location }) => {\n return location.pathname.startsWith('/map/results/profile');\n};\n\nexport const isViewingCard = ({ location }) => {\n return location.pathname.startsWith('/map/results/card');\n};\n\nexport const isViewingDetail = ({ location }) => {\n return location.pathname.startsWith('/map/results/detail');\n};\n","import PropTypes from 'prop-types';\nimport React, { Component, Fragment } from 'react';\nimport injectSheet from 'react-jss';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport { Box, Column, Columns, Link, Text } from '../../../../../../lib/base';\nimport { loadProfileDetailIfNeeded } from '../../../../../../store/profile/profile.action';\nimport WindowDocumentTitle from '../../../../../components/dom/WindowDocumentTitle';\nimport { IconChevronDown } from '../../../../../components/icons';\nimport ProfileTabs from '../../../../../components/profile/header/ProfileTabs';\nimport SiteNameAndAddress from '../../../../../components/profile/header/SiteNameAndAddress';\nimport SpinnerPanel from '../../../../../components/spinner/SpinnerPanel';\nimport { COLOR_BASE_PRIMARY } from '../../../../../Constants';\nimport { navigateToMobileCardView } from '../../../../../routing';\nimport {\n getSiteId,\n getSiteName,\n toSiteNameAndAddress,\n} from '../../../../../util/entities/siteProfile';\nimport SiteProfileDetail from '../../shared/panel/profile/SiteProfileDetail';\nimport { isViewingProfile } from '../drawer/isViewing';\n\nclass SiteProfileMobile extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n componentDidMount() {\n const { siteProfile } = this.props;\n const { params } = this.props.match;\n if (params.id && params.id !== getSiteId(siteProfile)) {\n this.props.dispatchFetchProfile(params.id);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { params: prevParams } = prevProps.match;\n const { params } = this.props.match;\n\n if (prevParams.id !== params.id && params.id !== undefined) {\n this.props.dispatchFetchProfile(params.id);\n }\n }\n\n handleOnClose() {\n const { params } = this.props.match;\n navigateToMobileCardView(this.props, params.id);\n }\n\n render() {\n const { isLoading, siteProfile, error, classes } = this.props;\n\n if (isLoading) {\n return ;\n }\n\n if (error) {\n return (\n \n Unable to locate site.\n \n );\n }\n\n if (!this.props.siteProfile) {\n return null;\n }\n\n const isProfileView = isViewingProfile(this.props);\n\n return (\n \n \n \n \n \n \n \n {isProfileView && (\n \n \n Close  \n \n \n \n )}\n \n \n \n
\n \n
\n
\n \n \n \n
\n );\n }\n}\n\nconst styles = () => ({\n tabContainer: {\n overflowX: 'auto',\n display: 'flex',\n flexWrap: 'nowrap',\n },\n});\n\nfunction mapStateToProps(state) {\n return {\n isLoading: state.profile.detail.isLoading,\n error: state.profile.detail.error,\n siteProfile: state.profile.detail.data,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchFetchProfile: id => {\n dispatch(loadProfileDetailIfNeeded(id));\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(injectSheet(styles)(SiteProfileMobile))\n);\n","import React, { Fragment, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport { Box, Column, Columns, Link } from '../../../../../../lib/base';\nimport { loadProfileDetailIfNeeded } from '../../../../../../store/profile/profile.action';\nimport WindowDocumentTitle from '../../../../../components/dom/WindowDocumentTitle';\nimport { IconChevronUp, IconSpinner } from '../../../../../components/icons';\nimport SiteNameAndAddress from '../../../../../components/profile/header/SiteNameAndAddress';\nimport { COLOR_BASE_PRIMARY } from '../../../../../Constants';\nimport { navigateToMobileProfileView } from '../../../../../routing';\nimport {\n getSiteId,\n getSiteName,\n toSiteNameAndAddress,\n} from '../../../../../util/entities/siteProfile';\n\nclass SiteProfileQuickView extends PureComponent {\n constructor(props) {\n super(props);\n this.handleOnClick = this.handleOnClick.bind(this);\n }\n\n componentDidMount() {\n const { params } = this.props.match;\n if (params.id) {\n this.props.dispatchFetchProfile(params.id);\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { params: prevParams } = prevProps.match;\n const { params } = this.props.match;\n\n if (prevParams.id !== params.id && params.id !== undefined) {\n this.props.dispatchFetchProfile(params.id);\n }\n }\n\n handleOnClick() {\n const { siteProfile } = this.props;\n navigateToMobileProfileView(this.props, getSiteId(siteProfile));\n }\n\n render() {\n const { siteProfile, isLoading } = this.props;\n\n if (isLoading) {\n return (\n \n \n \n );\n }\n\n if (!siteProfile) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n Open  \n \n \n \n \n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n siteProfile: state.profile.detail.data,\n isLoading: state.profile.detail.isLoading,\n error: state.profile.detail.error,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchFetchProfile: id => {\n dispatch(loadProfileDetailIfNeeded(id));\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(SiteProfileQuickView)\n);\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { Column, Columns, Text } from '../../../../../../lib/base';\nimport { IconChevronLeft, IconMapMarker, IconSpinner } from '../../../../../components/icons';\nimport { IconList } from '../../../../../components/icons/fontawesome/icons';\nimport { COLOR_BASE_PRIMARY } from '../../../../../Constants';\nimport {\n navigateToMapHome,\n navigateToMobileCardView,\n navigateToMobileProfileView,\n navigateToResults,\n navigateToResultsDirect,\n} from '../../../../../routing';\nimport {\n isViewingCard,\n isViewingDetail,\n isViewingMap,\n isViewingProfile,\n isViewingResults,\n} from './isViewing';\n\n/**\n * The drawer bar displays navigation links based the\n * current address location path.\n *\n * /map << show list\n * /map/results << show map\n * /map/results/detail/11 << back to list\n * /map/results/card/11\n * /map/results/profile/11 << close\n *\n */\nclass DrawerBar extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Connected - Is site search in progress.\n */\n isSearching: PropTypes.bool.isRequired,\n\n /**\n * Connected - The number of search results.\n */\n count: PropTypes.number,\n };\n\n static defaultProps = {\n count: undefined,\n };\n\n static withStyledText(what) {\n return (\n \n {what}\n \n );\n }\n\n constructor(props) {\n super(props);\n this.handleOnClick = this.handleOnClick.bind(this);\n }\n\n handleOnClick() {\n const { params } = this.props.match;\n\n if (isViewingProfile(this.props)) {\n navigateToMobileCardView(this.props, params.id);\n } else if (isViewingCard(this.props)) {\n navigateToMobileProfileView(this.props);\n } else if (isViewingDetail(this.props)) {\n navigateToResultsDirect(this.props);\n } else if (isViewingResults(this.props)) {\n navigateToMapHome(this.props);\n } else if (isViewingMap(this.props)) {\n navigateToResults(this.props);\n }\n }\n\n renderTitle() {\n if (isViewingProfile(this.props)) {\n return (\n \n \n \n \n {DrawerBar.withStyledText('Close')}\n \n );\n }\n\n if (isViewingDetail(this.props)) {\n return (\n \n \n \n \n {DrawerBar.withStyledText('Back to list')}\n \n );\n }\n\n if (isViewingMap(this.props)) {\n return (\n \n \n \n \n {DrawerBar.withStyledText('Show list')}\n \n );\n }\n\n if (isViewingResults(this.props)) {\n return (\n \n \n \n \n {DrawerBar.withStyledText('Show map')}\n \n );\n }\n\n return null;\n }\n\n renderCount() {\n if (this.props.isSearching) {\n return ;\n } else {\n return DrawerBar.withStyledText(\n this.props.count ? `(${this.props.count.toLocaleString()} sites)` : ''\n );\n }\n }\n\n render() {\n return (\n \n {this.renderTitle()}\n {this.renderCount()}\n \n );\n }\n}\n\nconst styles = theme => ({\n container: {\n zIndex: 100,\n backgroundColor: '#efefef',\n paddingLeft: theme.spacing.medium,\n position: 'absolute',\n width: '100%',\n height: '100%',\n },\n\n icon: {\n marginRight: '8px',\n },\n});\n\nfunction mapStateToProps(state) {\n return {\n isSearching: state.map.search.isFetching,\n siteProfile: state.profile.detail.data,\n count: state.map.search.count,\n };\n}\n\nexport default withRouter(connect(mapStateToProps)(injectSheet(styles)(DrawerBar)));\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\n\nexport default class DrawerBlind extends Component {\n static propTypes = {\n /**\n * Children components seen in the drawer blind.\n */\n children: PropTypes.node,\n\n /**\n * Is the blind open?\n */\n isOpen: PropTypes.bool.isRequired,\n\n /**\n * The zIndex of the container.\n */\n zIndex: PropTypes.number.isRequired,\n\n /**\n * The height when opened.\n */\n heightOpen: PropTypes.number.isRequired,\n\n /**\n * The bottom style prop.\n */\n bottom: PropTypes.number,\n /**\n * The top style prop.\n */\n top: PropTypes.number\n };\n\n constructor(props) {\n super(props);\n this.containerRef = React.createRef();\n }\n\n componentDidMount() {\n this.containerRef.current.style.height = `${this.nextPosition()}px`;\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.updateContainerLayout();\n }\n\n heightClosed() {\n return 0;\n }\n\n heightOpen() {\n return this.props.heightOpen;\n }\n\n nextPosition() {\n return this.props.isOpen ? this.heightOpen() : this.heightClosed();\n }\n\n currentPosition() {\n const container = this.containerRef.current;\n return Number.parseInt(container.style.height.replace(/px/i, \"\"), 10);\n }\n\n shouldUpdateContainerLayout() {\n return this.currentPosition() !== this.nextPosition();\n }\n\n updateContainerLayout() {\n if (!this.shouldUpdateContainerLayout()) {\n return;\n }\n\n this.animateMobilePanelVisibilityRAF();\n }\n\n animateMobilePanelVisibilityRAF() {\n const container = this.containerRef;\n\n const from = this.currentPosition();\n const to = this.nextPosition();\n const reversed = from > to;\n\n const step = 100;\n\n let pos = from;\n\n const frame = () => {\n pos = reversed ? pos - step : pos + step;\n\n if (reversed) {\n if (pos <= to) {\n pos = to;\n } else {\n window.requestAnimationFrame(frame);\n }\n } else {\n if (pos >= to) {\n pos = to;\n } else {\n window.requestAnimationFrame(frame);\n }\n }\n\n container.current.style.height = `${pos}px`;\n };\n\n window.requestAnimationFrame(frame);\n }\n\n render() {\n const style = {\n bottom: `${this.props.bottom || 0}px`,\n top: `${this.props.top}px`,\n zIndex: this.props.zIndex,\n position: \"fixed\",\n width: \"100%\",\n backgroundColor: \"white\",\n overflowY: \"auto\"\n };\n\n return (\n
\n {this.props.children}\n
\n );\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport injectSheet from 'react-jss';\nimport { withRouter } from 'react-router-dom';\nimport WindowResizeListener from '../../../../../components/listener/WindowResizeListener';\nimport {\n Z_INDEX_MOBILE_DRAWER_BLIND_PRIMARY,\n Z_INDEX_MOBILE_DRAWER_BLIND_SECONDARY,\n} from '../../../../../Constants';\nimport SitesListPanel from '../../shared/panel/results/SitesListPanel';\nimport SiteProfileMobile from '../profile/SiteProfileMobile';\nimport SiteProfileQuickView from '../profile/SiteProfileQuickView';\nimport DrawerBar from './DrawerBar';\nimport DrawerBlind from './DrawerBlind';\nimport { isViewingCard, isViewingDetail, isViewingProfile, isViewingResults } from './isViewing';\n\nconst DRAWER_HEIGHT_PX = 100;\n\nclass BottomDrawerContainer extends Component {\n static propTypes = {\n /**\n * Jss classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * The height of the drawer container.\n */\n height: PropTypes.number.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.handleOnWindowResize = this.handleOnWindowResize.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.location !== this.props.location) {\n this.setState({ prevPath: this.props.location.pathname });\n }\n }\n\n handleOnWindowResize() {\n this.forceUpdate();\n }\n\n isPrimaryDrawerOpen() {\n return (\n isViewingResults(this.props) || isViewingDetail(this.props) || isViewingProfile(this.props)\n );\n }\n\n isSecondaryDrawerOpen() {\n return isViewingCard(this.props);\n }\n\n getPrimaryDrawerHeightOpen() {\n return document.documentElement.clientHeight - this.props.height;\n }\n\n renderPrimaryDrawerContents() {\n if (isViewingProfile(this.props)) {\n return ;\n } else if (isViewingDetail(this.props)) {\n return ;\n } else if (isViewingResults(this.props)) {\n return ;\n }\n return null;\n }\n\n renderSecondaryDrawerContents() {\n return this.isSecondaryDrawerOpen() ? : null;\n }\n\n render() {\n const { classes, height } = this.props;\n let top = 0;\n if (isViewingResults(this.props)) {\n top = 124;\n }\n\n return (\n
\n \n\n \n {this.renderPrimaryDrawerContents()}\n \n\n \n {this.renderSecondaryDrawerContents()}\n \n\n \n
\n );\n }\n}\n\nconst styles = () => ({\n container: {\n position: 'relative',\n height: '100%',\n },\n});\n\nexport default withRouter(injectSheet(styles)(BottomDrawerContainer));\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport { Modal } from '../../../../../../lib/base';\nimport Box from '../../../../../../lib/base/layout/Box';\nimport HeadingText from '../../../../../components/text/HeadingText';\nimport { navigateToMapHome } from '../../../../../routing';\nimport HelpPanel from '../../shared/panel/help/HelpPanel';\n\nclass ModalHelp extends Component {\n constructor(props) {\n super(props);\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n handleOnClose() {\n navigateToMapHome(this.props);\n }\n\n isOpen() {\n const { params } = this.props.match;\n return params.panel === 'help';\n }\n\n render() {\n return (\n Help}\n isOpen={this.isOpen()}\n onRequestClose={this.handleOnClose}\n >\n \n \n \n \n );\n }\n}\n\nexport default withRouter(ModalHelp);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport { Modal } from '../../../../../../lib/base';\nimport Box from '../../../../../../lib/base/layout/Box';\nimport HeadingText from '../../../../../components/text/HeadingText';\nimport InfoPanel from '../../shared/panel/help/InfoPanel';\n\nclass ModalInfo extends Component {\n constructor(props) {\n super(props);\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n handleOnClose() {\n this.props.history.goBack();\n }\n\n isOpen() {\n const { params } = this.props.match;\n return params.panel === 'info';\n }\n\n render() {\n return (\n Info}\n isOpen={this.isOpen()}\n onRequestClose={this.handleOnClose}\n >\n \n \n \n \n );\n }\n}\n\nexport default withRouter(ModalInfo);\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router\";\nimport { Modal } from \"../../../../../../lib/base\";\nimport HeadingText from \"../../../../../components/text/HeadingText\";\nimport { navigateToMapHome } from \"../../../../../routing\";\nimport LayerSwitcher from \"../../shared/panel/layers/LayerSwitcher\";\n\nclass ModalMapLayers extends Component {\n constructor(props) {\n super(props);\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n handleOnClose() {\n navigateToMapHome(this.props);\n }\n\n isOpen() {\n const { params } = this.props.match;\n return params.panel === \"layers\";\n }\n\n render() {\n return (\n Map layers}\n isOpen={this.isOpen()}\n onRequestClose={this.handleOnClose}\n >\n \n \n );\n }\n}\n\nexport default withRouter(ModalMapLayers);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport { Box, Modal } from '../../../../../../lib/base';\nimport HeadingText from '../../../../../components/text/HeadingText';\nimport { navigateToMapHome } from '../../../../../routing';\nimport SearchOptionsPanel from '../../shared/panel/criteria/SearchOptionsPanel';\n\nclass ModalSearchCriteria extends Component {\n constructor(props) {\n super(props);\n this.handleOnClose = this.handleOnClose.bind(this);\n }\n\n handleOnClose() {\n navigateToMapHome(this.props);\n }\n\n isOpen() {\n const { params } = this.props.match;\n return params.subPanel === 'criteria' || params.subPanel === 'filters';\n }\n\n render() {\n return (\n Advanced Search Criteria}\n isOpen={this.isOpen()}\n onRequestClose={this.handleOnClose}\n >\n \n \n \n \n );\n }\n}\n\nexport default withRouter(ModalSearchCriteria);\n","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport { Box } from '../../../../../lib/base';\r\nimport Config from '../../../../config';\r\nimport { COLOR_BASE_PRIMARY, COLOR_VARIANT_PRIMARY } from '../../../../Constants';\r\nimport CurrentCriteriaChips from '../shared/panel/criteria/chip/CurrentCriteriaChips';\r\nimport SearchInput from '../shared/panel/search/SearchInput';\r\nimport ModalHelp from './modal/ModalHelp';\r\nimport ModalInfo from './modal/ModalInfo';\r\nimport ModalMapLayers from './modal/ModalMapLayers';\r\nimport ModalSearchCriteria from './modal/ModalSearchCriteria';\r\n\r\nclass SearchBarMobile extends Component {\r\n static propTypes = {\r\n /**\r\n * Jss classes.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * React reference to root of this component.\r\n */\r\n containerRef: PropTypes.object,\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = theme => ({\r\n container: {\r\n backgroundColor: Config.getHeaderColorBackground() || theme.color.base.blue,\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(SearchBarMobile);\r\n","import PropTypes from 'prop-types';\r\nimport React, { PureComponent } from 'react';\r\nimport injectSheet from 'react-jss';\r\nimport Row from '../../../../lib/base/layout/flex/Row';\r\nimport Rows from '../../../../lib/base/layout/flex/Rows';\r\nimport ConnectedMap from './ConnectedMap';\r\nimport BottomDrawerContainer from './mobile/drawer/BottomDrawerContainer';\r\nimport SearchBarMobile from './mobile/SearchBarMobile';\r\n\r\nclass MapMobileContainer extends PureComponent {\r\n static propTypes = {\r\n /**\r\n * Jss provided property.\r\n */\r\n classes: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Children components.\r\n */\r\n children: PropTypes.node,\r\n };\r\n\r\n static defaultProps = {\r\n children: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.searchBarMobileRef = React.createRef();\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = () => ({\r\n mobileDrawerRow: {\r\n height: '48px',\r\n },\r\n});\r\n\r\nexport default injectSheet(styles)(MapMobileContainer);\r\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport injectSheet from 'react-jss';\nimport { connect } from 'react-redux';\nimport { startMapSystemIfNeeded } from '../../../store/system/system.action';\nimport Header from '../../components/header/Header';\nimport WindowResizeListener from '../../components/listener/WindowResizeListener';\nimport PageLoading from '../../components/loading/PageLoading';\nimport { isSmallScreen } from '../../util/browser';\nimport MapDesktopContainer from './components/MapDesktopContainer';\nimport MapMobileContainer from './components/MapMobileContainer';\n\nclass MapPage extends PureComponent {\n static propTypes = {\n /**\n * JSS classes.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * Loads map settings in redux store.\n */\n dispatchLoadMapSettings: PropTypes.func.isRequired,\n\n /**\n * Is map settings in loading state.\n */\n isStarting: PropTypes.bool,\n\n /**\n * Map loading message.\n */\n message: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n isSmallScreen: isSmallScreen(),\n };\n this.handleOnWindowResize = this.handleOnWindowResize.bind(this);\n }\n\n componentDidMount() {\n this.props.dispatchLoadMapSettings();\n }\n\n handleOnWindowResize() {\n this.setState({ isSmallScreen: isSmallScreen() });\n }\n\n renderContent() {\n const { isStarting, message } = this.props;\n\n if (isStarting) {\n return ;\n }\n\n return this.state.isSmallScreen ? this.renderMobile() : this.renderDesktop();\n }\n\n renderMobile() {\n return (\n
\n \n
\n );\n }\n\n renderDesktop() {\n return (\n
\n \n
\n );\n }\n\n render() {\n const { isStarting, classes } = this.props;\n\n if (isStarting === undefined) {\n return null;\n }\n\n const { application } = classes;\n\n return (\n
\n \n
\n {this.renderContent()}\n
\n );\n }\n}\n\nconst styles = () => ({\n application: {\n height: '100%',\n width: '100%',\n },\n\n desktopBody: {\n height: 'calc(100% - 88px)',\n },\n\n mobileBody: {\n height: 'calc(100% - 44px)',\n },\n});\n\nfunction mapStateToProps(state) {\n return {\n isStarting: state.map.startup.isStarting,\n message: state.map.startup.message,\n error: state.map.startup.error,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchLoadMapSettings: () => {\n dispatch(startMapSystemIfNeeded());\n },\n };\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(injectSheet(styles)(MapPage));\n","import React, { PureComponent } from 'react';\r\nimport { Box, Link, Text } from '../../../lib/base';\r\nimport { toHome } from '../../routing';\r\nimport BaseStandardPage from '../base/BaseStandardPage';\r\n\r\nexport default class NotFoundPage extends PureComponent {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n Page Not Found\r\n \r\n \r\n \r\n The page you're looking for cannot be found.\r\n \r\n \r\n go home\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\nimport { Redirect, withRouter } from 'react-router-dom';\n\nclass ProfilePage extends Component {\n render() {\n const { params } = this.props.match;\n\n return ;\n }\n}\n\nexport default withRouter(ProfilePage);\n","import { buffer } from 'ol/extent';\nimport PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport Map from '../../../lib/map';\nimport { toWebMercatorCenter } from '../../../lib/map/core/transfomer';\nimport { startMapSystemIfNeeded } from '../../../store/system/system.action';\nimport Config from '../../config';\nimport RootBaseLayer from '../../page/map/components/shared/layer/RootBaseLayer';\nimport SiteFeaturesLayer from '../../page/map/components/shared/layer/SiteFeaturesLayer';\n\nclass ReportMap extends PureComponent {\n static propTypes = {\n siteProfile: PropTypes.object.isRequired,\n onMapReady: PropTypes.func.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n minResolution: PropTypes.number,\n maxResolution: PropTypes.number,\n rootBaseLayer: PropTypes.object,\n isStarting: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n this.mapRef = React.createRef();\n this.handleOnAfterPopulateFeatures = this.handleOnAfterPopulateFeatures.bind(this);\n this.onTilesLoadComplete = this.onTilesLoadComplete.bind(this);\n }\n\n onTilesLoadComplete() {\n const onMapReady = dataURL => {\n this.props.onMapReady(dataURL);\n };\n const map = this.mapRef.current.map;\n if (map) {\n map.once('rendercomplete', event => {\n const canvas = event.context.canvas;\n const dataURL = canvas.toDataURL();\n onMapReady(dataURL);\n });\n map.renderSync();\n }\n }\n\n handleOnAfterPopulateFeatures({ vectorSource }) {\n this.setState({\n extent: buffer(vectorSource.getExtent(), 150),\n });\n }\n\n render() {\n const { siteProfile, minResolution, maxResolution, rootBaseLayer, width, height } = this.props;\n\n const { longitude, latitude } = siteProfile.profileFacilityDetail;\n\n if (!longitude || !latitude) {\n return null;\n }\n\n const center = toWebMercatorCenter([longitude, latitude]);\n\n return (\n \n \n \n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n minResolution: state.map.minResolution,\n maxResolution: state.map.maxResolution,\n rootBaseLayer: state.map.activeBaseLayer,\n isStarting: state.map.startup.isStarting,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatchLoadMapSettings: () => {\n dispatch(startMapSystemIfNeeded());\n },\n };\n}\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(ReportMap)\n);\n","export const colors = {\r\n HR: 'gray',\r\n};\r\n","import { Font } from '@react-pdf/renderer';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst applicationBaseUrl = window.location.origin + baseUrl.replace(/\\/$/, '');\r\n\r\nconst getFontSrc = name => `${applicationBaseUrl}/fonts/open-sans/${name}.ttf`;\r\n\r\nFont.register({\r\n family: 'OpenSans',\r\n src: getFontSrc('OpenSans-Regular'),\r\n fontStyle: 'normal',\r\n});\r\n\r\nFont.register({\r\n family: 'OpenSans',\r\n src: getFontSrc('OpenSans-Italic'),\r\n fontWeight: 'normal',\r\n fontStyle: 'italic',\r\n});\r\n\r\nFont.register({\r\n family: 'OpenSans',\r\n src: getFontSrc('OpenSans-SemiBold'),\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n});\r\n\r\nFont.register({\r\n family: 'OpenSans',\r\n src: getFontSrc('OpenSans-SemiBoldItalic'),\r\n fontWeight: 600,\r\n fontStyle: 'italic',\r\n});\r\n\r\nFont.register({\r\n family: 'OpenSans',\r\n src: getFontSrc('OpenSans-Bold'),\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n});\r\n\r\nFont.register({\r\n family: 'OpenSans',\r\n src: getFontSrc('OpenSans-BoldItalic'),\r\n fontWeight: 700,\r\n fontStyle: 'italic',\r\n});\r\n","import { Text as PdfText } from '@react-pdf/renderer';\nimport styled from '@react-pdf/styled-components';\nimport './fonts';\n\nexport const fontSizes = {\n small: '9pt',\n normal: '10pt',\n medium: '11pt',\n large: '12pt',\n larger: '14pt',\n largest: '16pt',\n huge: '18pt',\n};\n\nexport const headingSizes = {\n small: fontSizes.large,\n default: fontSizes.larger,\n large: fontSizes.largest,\n};\n\nexport const Text = styled(PdfText)`\n font-family: 'OpenSans';\n font-size: ${fontSizes.small};\n ${({ semiBold }) => semiBold && 'font-weight: semibold;'}\n ${({ bold }) => bold && 'font-weight: bold;'}\n ${({ italic }) => italic && 'font-style: italic;'}\n ${({ size }) => size && `font-size: ${fontSizes[size]}};`}\n`;\n","import { View } from '@react-pdf/renderer';\nimport styled from '@react-pdf/styled-components';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { colors } from '../../shared/colors';\nimport { Text } from '../../shared/typography';\n\nconst Root = styled(View)`\n position: absolute;\n left: 72pt;\n right: 72pt;\n bottom: 36pt;\n border-top: 1pt solid ${colors.HR};\n padding-top: 4pt;\n width: 100%;\n display: flex;\n flex-direction: column;\n font-size: 9pt;\n`;\n\nconst MetadataRow = styled(View)`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n`;\n\nconst PageNumberRow = styled(View)`\n display: flex;\n flex-direction: row;\n justify-content: center;\n padding-top: 8pt;\n`;\n\nconst Separator = styled(Text)`\n opacity: 0.7;\n margin-left: 4pt;\n margin-right: 4pt;\n`;\n\nconst PageNumber = () => (\n {\n return `Page ${pageNumber} of ${totalPages}`;\n }}\n />\n);\n\nexport const Footer = ({ meta }) => {\n return (\n \n \n {meta.map((m, index) => {\n const isLast = index === meta.length - 1;\n\n return isLast ? (\n \n {m.text}\n \n ) : (\n \n \n {m.text}\n \n {'\\u007C'}\n \n );\n })}\n \n \n \n \n \n );\n};\n\nFooter.propTypes = {\n meta: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n italic: PropTypes.bool,\n bold: PropTypes.bool,\n })\n ),\n};\n\nFooter.defaultProps = {\n meta: [],\n};\n","import { Text, View } from '@react-pdf/renderer';\nimport styled from '@react-pdf/styled-components';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { colors } from '../../shared/colors';\nimport { headingSizes } from '../../shared/typography';\n\nexport const sectionMargins = {\n small: {\n body: '12pt',\n underHeading: '4pt',\n },\n default: {\n body: '14pt',\n underHeading: '6pt',\n },\n large: {\n body: '20pt',\n underHeading: '10pt',\n },\n};\n\nexport const RootView = styled(View)`\n margin-top: ${props => (props.marginTop ? sectionMargins[props.size].body : 0)};\n`;\n\nexport const Heading = styled(Text)`\n font-weight: bold;\n font-size: ${props => headingSizes[props.size]};\n margin-bottom: ${props => sectionMargins[props.size].underHeading};\n`;\n\nexport const Hr = styled(View)`\n width: 100%;\n border-bottom: ${props => props.visible && `1pt solid ${colors.HR}`};\n margin-bottom: ${props => sectionMargins[props.size].body};\n`;\n\nconst Section = ({ title, hr, marginTop, fixed, children, size }) => (\n \n {title && (\n \n {title}\n \n )}\n
\n {children}\n
\n);\n\nSection.propTypes = {\n title: PropTypes.string,\n hr: PropTypes.bool,\n fixed: PropTypes.bool,\n size: PropTypes.string,\n marginTop: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n};\n\nSection.defaultProps = {\n hr: true,\n fixed: false,\n size: 'default',\n marginTop: true,\n};\n\nexport default Section;\n","import { Image, View } from '@react-pdf/renderer';\nimport styled from '@react-pdf/styled-components';\nimport isString from 'lodash/isString';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { colors } from '../../shared/colors';\nimport { Text } from '../../shared/typography';\nimport { sectionMargins } from '../section';\n\nconst RootView = styled(View)`\n display: flex;\n flex-direction: row;\n padding-bottom: ${sectionMargins.large.underHeading};\n border-bottom: 1pt solid ${colors.HR};\n`;\n\nconst LeftView = styled(View)`\n flex-grow: 1;\n width: 70%;\n display: flex;\n flex-direction: column;\n`;\n\nconst RightView = styled(View)`\n width: 30%;\n max-height: 72pt;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-end;\n`;\n\nconst Logo = styled(Image)`\n width: 100%;\n max-height: 100%;\n object-fit: scale-down;\n`;\n\nexport const Title = ({ children }) => (\n \n {children}\n \n);\n\nTitle.propTypes = {\n children: PropTypes.string,\n};\n\nexport const SubTitle = ({ children }) => {children};\n\nSubTitle.propTypes = {\n children: PropTypes.string,\n};\n\nexport const Header = ({ title, subtitle, logo }) => (\n \n \n {isString(title) ? {title} : title}\n {isString(subtitle) ? {subtitle} : subtitle}\n \n {logo && (\n \n {logo.dataUri && }\n \n )}\n \n);\n\nHeader.propTypes = {\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n subtitle: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n logo: PropTypes.shape({\n dataUri: PropTypes.string.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n }),\n};\n\nHeader.defaultProps = {\n title: undefined,\n subtitle: undefined,\n logo: undefined,\n};\n","import { Page as PageComponent, View } from '@react-pdf/renderer';\nimport styled from '@react-pdf/styled-components';\nimport { fontSizes } from '../../shared/typography';\n\nexport const Page = styled(PageComponent)`\n padding-top: 72pt;\n padding-right: 72pt;\n padding-left: 72pt;\n padding-bottom: 92pt;\n`;\n\nexport const Body = styled(View)`\n font-family: 'OpenSans';\n font-size: ${fontSizes.small};\n`;\n","import { Document } from '@react-pdf/renderer';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { formatDate } from '../../../../app/util/format';\r\nimport { Footer } from './footer';\r\nimport { Header } from './header';\r\nimport { Body, Page } from './page';\r\n\r\nconst EntityDetailDocument = ({ children, applicationName, title, subtitle, logo, ...rest }) => {\r\n const footerMeta = [\r\n {\r\n text: applicationName,\r\n bold: false,\r\n italic: false,\r\n },\r\n {\r\n text: title,\r\n bold: true,\r\n italic: false,\r\n },\r\n {\r\n text: subtitle,\r\n bold: true,\r\n italic: true,\r\n },\r\n {\r\n text: formatDate(new Date()),\r\n bold: false,\r\n italic: false,\r\n },\r\n ];\r\n\r\n const documentTitle = `${title} - ${subtitle}`;\r\n\r\n return (\r\n \r\n \r\n
\r\n {children}\r\n