{"version":3,"sources":["pages/MapBiomasLandingPage/layout/Header/components/Classes/components/ClassLegendList/ClassLegendList.module.scss","pages/MapBiomasLandingPage/layout/Header/components/QualityBaseForm/QualityBaseForm.module.scss","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/SignUpForm/SignUpForm.module.scss","pages/MapBiomasLandingPage/layout/Header/Header.module.scss","pages/MapBiomasLandingPage/layout/Header/components/GenericClasses/components/ClassTreesControl/ClassTreesControl.module.scss","pages/MapBiomasLandingPage/layout/Header/components/GeospatialObjects/GeospatialObjects.module.scss","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/MapList/MapList.module.scss","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/StatisticsBox.module.scss","utils/auth.js","core/apollo-client/local-resolvers/query.js","core/Routes/queries.js","data/initialBaseParams.js","data/mapActiveModuleToDefaultParams.js","data/mapModuleToPathname.js","helpers/parseQueryParamsToState.js","core/apollo-client/apollo-client.js","core/apollo-client/local-resolvers/mutation.js","core/context/app-context.js","utils/api.js","pages/MapBiomasLandingPage/query.js","pages/MapBiomasLandingPage/components/TabList/TabList.js","pages/MapBiomasLandingPage/layout/Header/components/ActiveOptionsList/ActiveOptionsList.js","pages/MapBiomasLandingPage/components/CustomSelect/CustomSelect.js","pages/MapBiomasLandingPage/layout/Header/components/BaseForm/components/TerritoryAutocomplete/query.js","pages/MapBiomasLandingPage/layout/Header/components/BaseForm/components/TerritoryAutocomplete/index.js","pages/MapBiomasLandingPage/layout/Header/components/BaseForm/components/TerritoryAutocomplete/TerritoryAutocomplete.js","hooks/useFormatMessage.js","hooks/usePrevious.js","data/mapGroupTypeToTerritoryCategoryKey.js","utils/locale.js","utils/toast.js","core/custom-apollo-client/custom-apollo-client.js","pages/MapBiomasLandingPage/layout/Header/components/BaseForm/query.js","pages/MapBiomasLandingPage/layout/Header/components/BaseForm/BaseForm.js","pages/MapBiomasLandingPage/layout/Header/components/Classes/components/ClassesControl/ClassesControl.js","components/InfoTooltip/InfoTooltip.js","pages/MapBiomasLandingPage/layout/Header/components/GenericClasses/components/ClassTreesControl/ClassTreesControl.js","pages/MapBiomasLandingPage/layout/Header/components/GenericClasses/components/ClassLegendList/ClassLegendList.js","utils/apollo.js","pages/MapBiomasLandingPage/layout/Header/components/GenericClasses/query.js","pages/MapBiomasLandingPage/layout/Header/components/GenericClasses/GenericClasses.js","pages/MapBiomasLandingPage/layout/Header/components/GeospatialObjects/query.js","pages/MapBiomasLandingPage/layout/Header/components/GeospatialObjects/GeospatialObjects.js","pages/MapBiomasLandingPage/layout/Header/components/TransitionBaseForm/TransitionBaseForm.js","pages/MapBiomasLandingPage/layout/Header/components/TransitionClasses/query.js","pages/MapBiomasLandingPage/layout/Header/components/TransitionClasses/TransitionClasses.js","pages/MapBiomasLandingPage/layout/Header/components/QualityBaseForm/QualityBaseForm.js","pages/MapBiomasLandingPage/layout/Header/components/QualityClasses/QualityClasses.js","pages/MapBiomasLandingPage/layout/Header/components/TranslateOptionsBox/TranslateOptionsBox.js","hooks/useWindowSize.js","pages/MapBiomasLandingPage/layout/Header/components/InstitutionalMenu/InstitutionalMenu.js","helpers/parseToken.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/LoginForm/LoginForm.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/SignUpForm/SignUpForm.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/MapForm/MapForm.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/MapList/MapList.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/MapEditDialog/MapEditDialog.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/PasswordRecoveryForm/PasswordRecoveryForm.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/query.js","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/AccountMenu.js","helpers/resetToken.js","pages/MapBiomasLandingPage/layout/Header/query.js","data/customClientModules.js","pages/MapBiomasLandingPage/layout/Header/ModuleIconComponent.js","pages/MapBiomasLandingPage/layout/Header/Header.js","pages/MapBiomasLandingPage/layout/Footer/Footer.js","components/WarningNoteDialog/query.js","components/WarningNoteDialog/WarningNoteDialog.js","helpers/parseStateToQueryParams.js","pages/MapBiomasLandingPage/layout/BasePage/query.js","pages/MapBiomasLandingPage/layout/BasePage/BasePage.js","pages/MapBiomasLandingPage/views/Map/components/CARBox/query.js","pages/MapBiomasLandingPage/views/Map/components/CARBox/CARBox.js","pages/MapBiomasLandingPage/views/Map/components/ClassLegendDialog/query.js","pages/MapBiomasLandingPage/views/Map/components/ClassLegendDialog/ClassLegendDialog.js","pages/MapBiomasLandingPage/views/Map/components/CoordinatesBox/CoordinatesBox.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/components/PieChart/PieChart.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/components/LineChart/LineChart.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/components/StickyTable/StickyTable.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogCoverageClassesContent/query.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogCoverageClassesContent/DashboardDialogCoverageClassesContent.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogCoverageNaturalOrAnthropicContent/query.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogCoverageNaturalOrAnthropicContent/DashboardDialogCoverageNaturalOrAnthropicContent.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogQualityContent/query.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogQualityContent/DashboardDialogQualityContent.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogTransitionContent/TransitionMatrixTable.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/components/SankeyChart/SankeyChart.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogTransitionContent/components/SankeyChartControl/SankeyChartControl.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogTransitionContent/query.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogTransitionContent/DashboardDialogTransitionContent.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/components/BarChart/BarChart.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogPastureQualityContent/query.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogPastureQualityContent/DashboardDialogPastureQualityContent.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/components/ClassificationsChart/ClassificationsChart.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogGenericClassesContent/query.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogGenericClassesContent/DashboardDialogGenericClassesContent.js","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/DashboardDialog.js","data/baseLayers.js","data/baseMaps.js","pages/MapBiomasLandingPage/views/Map/components/MapCanvas/components/CoordinatesInfo/CoordinatesInfo.js","pages/MapBiomasLandingPage/views/Map/components/MapCanvas/components/MapCustomEvents/MapCustomEvents.js","pages/MapBiomasLandingPage/views/Map/components/MapCanvas/leaflet-side-by-side/leaflet-side-by-side.js","pages/MapBiomasLandingPage/views/Map/components/MapCanvas/MapCanvas.js","pages/MapBiomasLandingPage/views/Map/components/MapboxCanvas/MapboxCanvas.js","pages/MapBiomasLandingPage/views/Map/components/MapboxControl/MapboxControl.js","pages/MapBiomasLandingPage/views/Map/components/MapControls/MapControls.js","pages/MapBiomasLandingPage/views/Map/components/MapPointDialog/components/PointHistoryChart/PointHistoryChart.js","pages/MapBiomasLandingPage/views/Map/components/MapPointDialog/query.js","pages/MapBiomasLandingPage/views/Map/components/MapPointDialog/MapPointDialog.js","pages/MapBiomasLandingPage/views/Map/components/YearTimeline/query.js","pages/MapBiomasLandingPage/views/Map/components/YearTimeline/YearTimeline.js","pages/MapBiomasLandingPage/views/Map/components/YearTimelineMultiple/query.js","pages/MapBiomasLandingPage/views/Map/components/YearTimelineMultiple/YearTimelineMultiple.js","pages/MapBiomasLandingPage/components/ShareBox/ShareBox.js","pages/MapBiomasLandingPage/views/Map/components/ShareControl/ShareControl.js","helpers/positionTooltipInsideDocument.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/components/BarChart/BarChart.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/components/MinimalBarData/MinimalBarData.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/components/BaseValuesChart/BaseValuesChart.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/AnnualStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/AnnualStatisticsContent/AnnualStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/components/LineChart/LineChart.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/AccumulatedStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/AccumulatedStatisticsContent/AccumulatedStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/components/PieChart/PieChart.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/AccumulatedDistributedStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/AccumulatedDistributedStatisticsContent/AccumulatedDistributedStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/CoverageMainStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/CoverageMainStatisticsContent/CoverageMainStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FireAnnualTotalBurnedStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FireAnnualTotalBurnedStatisticsContent/FireAnnualTotalBurnedStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/components/BurnedAreaCustomChart/BurnedAreaCustomChart.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FireMonthlyStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FireMonthlyStatisticsContent/FireMonthlyStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FireAccumulatedStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FireAccumulatedStatisticsContent/FireAccumulatedStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FrequencyStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/FrequencyStatisticsContent/FrequencyStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/NumberOfClassesStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/content/NumberOfClassesStatisticsContent/NumberOfClassesStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/StatisticsBox.js","pages/MapBiomasLandingPage/views/Map/components/InfrastructureStatisticsBox/content/InfrastructureMainStatisticsContent/query.js","pages/MapBiomasLandingPage/views/Map/components/InfrastructureStatisticsBox/content/InfrastructureMainStatisticsContent/InfrastructureMainStatisticsContent.js","pages/MapBiomasLandingPage/views/Map/components/InfrastructureStatisticsBox/InfrastructureStatisticsBox.js","pages/MapBiomasLandingPage/views/Map/components/StatisticsDataTableBox/StatisticsDataTableBox.js","components/tutorial/TutorialTour.js","pages/MapBiomasLandingPage/views/Map/query.js","pages/MapBiomasLandingPage/views/Map/Map.js","pages/MapBiomasLandingPage/LandingPage.js","pages/MapBiomasLogin/components/FormFooter.js","pages/MapBiomasLogin/components/PageFooter/PageFooter.js","pages/MapBiomasLogin/MapBiomasLogin.js","pages/MapBiomasPasswordRecovery/MapBiomasPasswordRecovery.js","pages/MapbiomasCreateAccount/MapbiomasCreateAccount.js","pages/LoginToForum/index.js","pages/TerritoryDashboard/content/CoverageMainStatisticsContent/query.js","pages/TerritoryDashboard/content/CoverageMainStatisticsContent/CoverageMainStatisticsContent.js","pages/TerritoryDashboard/content/CoveragePieChartContent/query.js","pages/TerritoryDashboard/content/CoveragePieChartContent/CoveragePieChartContent.js","pages/TerritoryDashboard/content/AnnualStatisticsContent/query.js","pages/TerritoryDashboard/content/AnnualStatisticsContent/AnnualStatisticsContent.js","pages/TerritoryDashboard/TerritoryDashboard.js","core/Routes/Routes.js","pages/MapBiomasCreatePassword/MapBiomasCreatePassword.js","helpers/validatePassword.js","pages/ConfirmationPage/ConfirmationPage.js","core/Routes/redirect.js","core/themes/main/variables.js","core/themes/main/index.js","components/ToastContainer/query.js","components/ToastContainer/ToastContainer.js","core/Root/index.js","index.js","pages/MapBiomasLandingPage/layout/Header/components/Classes/components/ClassesControl/ClassesControl.module.scss","pages/MapBiomasLandingPage/views/Map/components/CoordinatesBox/CoordinatesBox.module.scss","pages/MapBiomasLandingPage/views/Map/components/StatisticsDataTableBox/StatisticsDataTableBox.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/DashboardDialog.module.scss","pages/MapBiomasLandingPage/layout/Header/components/Classes/components/NaturalOrAnthropicLegendList/NaturalOrAnthropicLegendList.module.scss","pages/MapBiomasLandingPage/layout/Header/components/GenericClasses/components/ClassLegendList/ClassLegendList.module.scss","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/AccountMenu.module.scss","pages/MapBiomasLandingPage/views/Map/components/ClassLegendDialog/ClassLegendDialog.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogQualityContent/DashboardDialogQualityContent.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogGenericClassesContent/DashboardDialogGenericClassesContent.module.scss","pages/MapBiomasLandingPage/components/TabList/TabList.module.scss","pages/MapBiomasLandingPage/layout/Header/components/TransitionClasses/TransitionClasses.module.scss","pages/MapBiomasLandingPage/layout/Header/components/PastureQualityCoverageClasses/PastureQualityCoverageClasses.module.scss","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/MapForm/MapForm.module.scss","components/WarningNoteDialog/WarningNoteDialog.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogCoverageClassesContent/DashboardDialogCoverageClassesContent.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogCoverageNaturalOrAnthropicContent/DashboardDialogCoverageNaturalOrAnthropicContent.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogPastureQualityContent/DashboardDialogPastureQualityContent.module.scss","pages/MapBiomasLandingPage/views/Map/components/MapCanvas/MapCanvas.module.scss","pages/MapBiomasLandingPage/views/Map/components/YearTimelineMultiple/YearTimelineMultiple.module.scss","pages/MapBiomasLandingPage/views/Map/components/StatisticsBox/components/MinimalBarData/MinimalBarData.module.scss","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/PasswordRecoveryForm/PasswordRecoveryForm.module.scss","pages/MapBiomasLandingPage/components/ShareBox/ShareBox.module.scss","pages/TerritoryDashboard/TerritoryDashboard.module.scss","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/LoginForm/LoginForm.module.scss","pages/MapBiomasLandingPage/layout/Header/components/AccountMenu/components/MapEditDialog/MapEditDialog.module.scss","pages/MapBiomasLandingPage/layout/Footer/Footer.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/components/StickyTable/StickyTable.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogTransitionContent/components/SankeyChartControl/SankeyChartControl.module.scss","pages/MapBiomasLandingPage/views/Map/components/MapboxControl/MapboxControl.module.scss","pages/MapBiomasLandingPage/views/Map/components/YearTimeline/YearTimeline.module.scss","pages/MapBiomasLandingPage/views/Map/components/ShareControl/ShareControl.module.scss","pages/MapBiomasLogin/components/PageFooter/PageFooter.module.scss","pages/MapBiomasLandingPage/layout/Header/components/ActiveOptionsList/ActiveOptionsList.module.scss","pages/MapBiomasLandingPage/layout/Header/components/TranslateOptionsBox/TranslateOptionsBox.module.scss","pages/MapBiomasLandingPage/views/Map/components/MapCanvas/components/CoordinatesInfo/CoordinatesInfo.module.scss","pages/MapBiomasLandingPage/views/Map/components/MapControls/MapControls.module.scss","pages/MapBiomasLogin/logo.svg","pages/MapBiomasLandingPage/layout/Header/components/QualityClasses/QualityClasses.module.scss","pages/MapBiomasLandingPage/layout/Header/components/InstitutionalMenu/InstitutionalMenu.module.scss","pages/MapBiomasLandingPage/layout/BasePage/BasePage.module.scss","pages/MapBiomasLogin/components/FormFooter.module.scss","pages/MapbiomasCreateAccount/MapbiomasCreateAccount.module.scss","pages/MapBiomasLandingPage/views/Map/components/DashboardDialog/content/DashboardDialogTransitionContent/DashboardDialogTransitionContent.module.scss","pages/MapBiomasLandingPage/layout/Header/components/BaseForm/BaseForm.module.scss","pages/MapBiomasLandingPage/views/Map/components/CARBox/CARBox.module.scss","pages/MapBiomasLandingPage/components/CustomSelect/CustomSelect.module.scss","pages/MapBiomasLandingPage/layout/Header/components/Classes/Classes.module.scss","components/InfoTooltip/InfoTooltip.module.scss","pages/MapBiomasLandingPage/layout/Header/components/GenericClasses/GenericClasses.module.scss","pages/MapBiomasLandingPage/views/Map/components/MapPointDialog/MapPointDialog.module.scss","pages/MapBiomasLandingPage/layout/Header/bosque-atlantico-horizontal.png","pages/MapBiomasLandingPage/layout/Header/logo-mapbiomas-fogo.png","pages/MapBiomasLandingPage/layout/Header/10-metros-pt-br-horizontal.svg","pages/MapBiomasLandingPage/layout/Header/10-metros-en-horizontal.svg","pages/MapBiomasLandingPage/layout/Footer/logo-ecostage.svg","pages/MapBiomasLandingPage/views/Map/components/InfrastructureStatisticsBox/InfrastructureStatisticsBox.module.scss","pages/MapBiomasLandingPage/views/Map/components/MapboxCanvas/MapboxCanvas.module.scss","pages/MapBiomasLandingPage/LandingPage.module.scss","pages/MapBiomasCreatePassword/logo.svg","pages/MapBiomasLogin/components/PageFooter/logo-ecostage.svg","pages/MapBiomasPasswordRecovery/logo.svg","pages/TerritoryDashboard/logo.svg","pages/MapBiomasLandingPage/layout/Header/components/TransitionBaseForm/TransitionBaseForm.module.scss","pages/MapBiomasLogin/MapBiomasLogin.module.scss","pages/MapBiomasCreatePassword/MapBiomasCreatePassword.module.scss","pages/MapBiomasPasswordRecovery/MapBiomasPasswordRecovery.module.scss"],"names":["module","exports","classList","classListLevel2","classListItemBase","classListLevel3","classListLevel4","classListItemHeader","classListItemCheckControl","classListItemTitle","classListItemContentControl","classListItemInfoControl","classListControlOnLeaf","classListControlDisabled","wrapper","wrapperInline","formControl","radioGroup","radioLabel","radioInput","checkboxRoot","checkboxLabel","tooltipWrapper","formWrapper","title","textInfo","actionsWrapper","helperLink","successText","wrapperHidden","wrapperIframeMode","logoBox","menuContent","headerWrapper","headerWrapperHidden","logoBoxCollapsed","versionTag","newTag","betaTag","menuBarListItemOldTag","menuBarListItemNewTag","menuBarListItemBetaTag","toggleButton","toggleButtonExpand","menuBar","linksContent","linksContentIsVisible","linksContentIframeMode","navOpenButton","toggleButtonAlone","topContent","contentWrapper","logo","tabContent","statisticsButtonWrapper","bottomContent","navItemButtonBeta","navItemButtonBetaAddon","activeBlockIconBetaAddon","infrastructureClasses","menuBarList","menuBarListItem","menuBarListItemLine","menuBarListItemButtonIcon","moduleIcon","menuBarListItemCoverage","menuBarListItemCoverageIsActive","menuBarListItemCoverageQuality","menuBarListItemCoverageQualityIsActive","menuBarListItemTrajectories","menuBarListItemTrajectoriesIsActive","menuBarListItemQualityOfPastureData","menuBarListItemQualityOfPastureDataIsActive","menuBarListItemDeforestation","menuBarListItemDeforestationIsActive","menuBarListItemRegeneration","menuBarListItemRegenerationIsActive","menuBarListItemInfrastructure","menuBarListItemInfrastructureIsActive","menuBarListItemIrrigation","menuBarListItemIrrigationIsActive","menuBarListItemFire","menuBarListItemFireIsActive","menuBarListItemMining","menuBarListItemMiningIsActive","menuBarListItemWater","menuBarListItemWaterIsActive","menuBarListItemSentinel","menuBarListItemSentinelIsActive","menuBarListItemSoil","menuBarListItemSoilIsActive","menuBarBottomContent","menuButton","translateButton","actionButton","fireModeContentWrapper","fireModeContent","fireModeContentBox","fireModeContentBoxExtra","fireModeContentBoxTextWrapper","fireModeContentBoxTitle","fireModeContentBoxActions","customModeContentBoxButton","fireModeContentBoxButton","infrastructureModeContentBoxButton","irrigationModeContentBoxButton","deforestationModeContentBoxButton","headerImageLogoSentinel","info","label","toggleButtons","toggleButtons2Items","toggleButtons3Items","levelControls","descriptionText","formControlSelectInput","classNode","classChildNode","actionBoxControlButton","mapList","mapItem","mapItemImage","mapItemTextContent","mapItemTitle","mapItemDescription","mapItemActionsContent","mapItemViewButton","mapItemViewButtonSecondary","wrapperIsHidden","header","closeButton","closeButtonCollapse","collapseWrapper","content","section","sectionSmall","secondaryTitle","secondaryTitleExtraInfo","infoList","infoListItem","infoListItemValue","infoListItemLabel","progressWrapper","actionWrapper","infoBox","getCurrentTimeFromWorldClock","_getCurrentTimeFromWorldClock","apply","this","arguments","_callee","currentTime","response","json","regenerator_default","a","wrap","_context","prev","next","fetch","sent","currentDateTime","Error","Date","t0","console","warn","abrupt","stop","getUserIdFromToken","length","undefined","claims","token","base64","split","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","parseJwt","localStorage","getItem","expirationDate","exp","getTime","removeItem","sub","e","local_resolvers_query","currentUserId","_currentUserId","Object","asyncToGenerator","mark","_object","_args","_info","userId","_context2","_x","_x2","_x3","_x4","GET_USER_ID","kind","definitions","operation","name","value","variableDefinitions","directives","selectionSet","selections","loc","start","end","source","body","locationOffset","line","column","GET_USER","variable","type","initialBaseParams","groupType","territoryType","territorySubtype","territoryValueType","crossingEnabled","crossingTerritoryType","crossingTerritories","territory","territories","crossing","classesViewMode","activeClassTreeOptionValue","activeClassTreeNodeIds","activeObjectTreeNodeIds","activeSubmodule","activeClassesLevelsListItems","activeTransitionsClassesListItems","activePastureQualityQualityClassesListItems","yearRange","buffer","mapActiveModuleToDefaultParams","coverage","activeModule","activeModuleContent","activeYear","timelineSpecificValues","timelineLimitsRange","mapboxMode","temporal_analysis","coverage_quality","quality_of_pasture_data","irrigation","deforestation","regeneration","infrastructure","fire","mining","soil","sentinel","mapModuleToPathname","/cobertura","/analises-temporais","/desmatamento","/regeneracao","/irrigacao","/infraestrutura","/pastagem","/fogo","/mineracao","/qualidade","/solo","/cobertura_10m","parseTerritories","_","territoryCode","_$split","_$split2","slicedToArray","id","territoryTypeId","territoryTypeLabel","bboxV1","bboxV2","bboxV3","bboxV4","parsedBBox","Number","__typename","territoryBBox","parseQueryParamsToState","queryParams","activeBaseMap","activeLayers","layersOpacity","showBeforeAndAfterMosaic","baseParams","state","cloneDeep","omit","parsedActiveBaseMap","parsedActiveYear","includes","parsedLayersOpacity","isNaN","set","ids","isArray","parsedTimelineLimitsRange","_ref","parsedTerritories","cache","InMemoryCache","urlQueryParams","window","location","search","queryString","queryObject","qs","comma","get","pathname","moduleKey","initialModulePathnameParams","writeData","data","app","objectSpread","headerIsVisible","mapFlyTo","mapPointInfo","mapPosition","showClassInfo","showDashboardInfo","ruralPropertyCode","isLoadingBaseData","notifyUserNewTermOfUseVersion","transitionClassTreeNodeId","activeNoteKey","toast","severity","visible","onError","graphQLErrors","networkError","forEach","_ref2","message","locations","path","log","concat","createUploadLink","uri","setContext","previousContext","headers","authorization","_ref3","some","extensions","forbidden","operationName","client","resetStore","link","HttpLink","ApolloClient","resolvers","Query","QueryResolver","Mutation","React","createContext","API_URL","process","request","endpoint","originConfig","customHeaders","Content-Type","config","extend","url","Authorization","then","ok","contentType","blob","text","Promise","reject","status","statusText","catch","error","stringify","GET_BASE_DATA","useStyles","makeStyles","theme","item","&:hover","color","palette","primary","main","activeItem","boxShadow","backgroundColor","CustomTooltip","withStyles","tooltip","padding","fontSize","Tooltip","TabList","_classnames","_this","_ref$size","size","_ref$hasCustomItemSiz","hasCustomItemSize","_ref$fullWidth","fullWidth","_ref$itemSizes","itemSizes","xs","_ref$items","items","_ref$onChange","onChange","classes","customItemSizes","clone","react_default","createElement","Grid","container","spacing","className","classnames","styles","navList","defineProperty","navListSmall","navListFullWidth","index","_classnames2","_classnames3","assign","key","navListItem","disabledItem","disabled","elementId","onClick","bind","ActiveOptionsList","categoryKey","options","_ref$onClear","onClear","isEmpty","list","option","categoryText","listItem","listItemText","IconButton","listItemRemoveButton","Clear_default","CustomSelect","_ref$displayEmpty","displayEmpty","_ref$isMultiple","isMultiple","_ref$isLoading","isLoading","_ref$options","_ref$defaultOrder","defaultOrder","_ref$value","dataKey","placeholder","isMobile","useMediaQuery","_useState","useState","_useState2","inputValue","setInputValue","getSelectedOption","find","react","InputLabel","inputLabel","Select","labelId","isNil","sortBy","MenuItem","extraProps","onInputChange","event","target","Autocomplete","blurOnSelect","disableClearable","loading","loadingText","noOptionsText","getOptionLabel","_event","reason","renderInput","params","TextField","variant","GET_TERRITORIES_AUTOCOMPLETE","TerritoryAutocomplete","activeTerritories","categoryId","territoryLabelFilter","locale","useApolloClient","currentValue","setCurrentValue","_useState3","_useState4","setOptions","_useState5","_useState6","setLoading","setDataFromExternalTerritories","first","boundingBox","useEffect","searchOptions","query","_yield$client$query","newOptions","parsedOptions","variables","stringList","selectedString","language","toConsumableArray","filter","kebabCase","debouncedSearchOptions","useMemo","debounce","filterOptions","x","autoComplete","includeInputInList","filterSelectedOptions","newValue","newInputValue","useFormatMessage","formatMessage","useIntl","values","usePrevious","ref","useRef","current","mapGroupTypeToTerritoryCategoryKey","default","territorial","land","simplified","onLocaleFunctionsCustom","mapValues","localeMessages","_messages","flow","property","partial","onCurrentLocaleCustom","multiLanguageStringObject","GET_BASE_CLIENT_DATA","GET_TERRITORIES_LIST","GET_TERRITORY_BOUNDING_BOX","GET_TRANSITION_PERIOD_OPTIONS_DATA","TERRITORY_CATEGORIES_WITH_SIMPLE_SELECT","BaseForm","clientType","_ref$territoryCategor","territoryCategoriesGroup","_ref$isTransition","isTransition","_ref$hideGroupType","hideGroupType","_ref$showBufferField","showBufferField","_ref$showMultipleTerr","showMultipleTerritories","inline","showCrossing","_ref$onFlyTo","onFlyTo","intl","clientBaseData","useQuery","_useQuery2","customClient","baseData","loadingBaseData","_useQuery3","skip","transitionBaseData","loadingTransitionBaseData","_useLazyQuery","useLazyQuery","_useLazyQuery2","loadTerritoriesListData","_useLazyQuery2$","territoriesListData","loadingTerritoriesListData","loadTerritoryBoundingBox","territoriesIds","bbox","territoryCategoriesList","geometryBuffers","coverageTransitionPeriodOptionsList","territoriesList","territoryIsMultiple","prevGroupType","parsedTerritoryTypeOptions","parentId","territoryCategoryGroups","mapModuleToTerritoryCategoryGroups","territoryKeysByGroupType","filteredTerritoryTypeOptions","findIndex","baseTerritoryKey","territoryTypeOption","hasTerritorySimpleSelect","crossingTerritoryTypeOptions","crossingInputIsDisabled","parsedTerritoryOptions","xMin","xMax","yMin","yMax","parsedCoverageTransitionPeriodOptionsList","fromYear","toYear","groupBy","orderAmongSiblings","parsedFromYear","parsedToYear","group","orderBy","updateClientAppState","updateClientAppBaseParamsState","initialTerritoryType","isNumber","firstTerritory","firstTerritoryId","territoryOption","activeTerritoryIds","newTerritoryItem","handleInputChange","field","isObject","handleTerritoryChange","_field","baseOption","nextTerritories","RadioGroup","FormControlLabel","control","Radio","FormControl","components_TerritoryAutocomplete","territoriesClone","root","Checkbox","checked","BaseForm_CustomTooltip","Info_default","gb","yearRangeFormControl","ListSubheader","groupList","checkboxControl","activeButton","borderColor","InfoTooltip","_ref$placement","placement","InfoTooltip_CustomTooltip","dangerouslySetInnerHTML","__html","icon","mapSubmoduleKeyToTooltip","fire_annual","fire_monthly","fire_accumulated","fire_frequency","ClassTreesControl","classTreeOptions","activeTreeOption","_ref$levels","levels","_ref$activeLevels","activeLevels","submoduleKey","_ref$hideLevelsContro","hideLevelsControl","onActiveTreeOptionChange","_ref$onLevelToggle","onLevelToggle","legendTooltip","handleOptionChange","href","classTreeOption","renderOptions","levelId","isChecked","ClassLegendList","hideLegendIndex","classTreeNodes","onClassTreeNodeToggle","onClassTreeNodeShowTooltip","expandedNodeIds","setExpandedNodeIds","rootLevel","min","toggleTreeNode","node","without","renderClassTreeBranch","_ref2$parentId","parentNode","branchNodes","currentLevelShiftedToZeroBased","last","prettyIndexOfNodeInTree","positionInTree","indexText","toggled","style","CheckBox_default","CheckBoxOutlineBlank_default","renderCheckbox","i18nStrings","ExpandLess_default","ExpandMore_default","renderExpandIcon","tooltips","renderTooltipIcon","Collapse","in","updateStateCache","basePath","_len","keyValuePairs","Array","_key","object","pathToWalkAddingTypenames","_$zip","zip","_$zip2","keys","zipObjectPaths","k","zipObjectDeep","reduce","toPath","partialPath","pathComponent","typename","upperFirst","camelCase","GET_CLASSES_LEVELS_LIST","GET_CLASS_TREE_DATA","mapClassTreeKeyToDefaultLevels","deforestation_annual_data","regeneration_annual_data","regeneration_accumulated_data","mining_annual","GenericClasses","moduleId","uncurriedUpdateStateCache","classesTreesData","isOnInitialRenderingWithQueryParams","isUndefined","classTrees","classTreeKey","classTreeData","classTreeLevelsList","activeTreeIsInCurrentSubmoduleTrees","classTree","firstTree","firstTreeKey","nodeIds","defaultLevels","chain","nodesOfActiveClassTree","uniq","idsByLevel","level","idsByLevelActive","compact","classesControlTreeOptions","idsClone","nextIds","ClassLegendList_ClassLegendList","classTreeNode","nodeId","GET_COMPONENT_INITIALIZATION_DATA","MAP_POSITION_IN_TREE_TO_DOWNLOAD_URL","1.1.1","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.4.1","1.5.1","1.5.2","2.1.1","2.1.2","2.1.3","2.1.4","2.1.5","2.1.6","2.1.7","2.1.8","2.1.9","2.1.10","2.2.1","2.2.2","2.2.3.1","2.2.3.2","2.2.3.3","2.2.3.4","2.2.3.5","2.2.3.6","2.2.4.7","2.2.4.8","3.1","3.2","3.3","GeospatialObjects","_ref$objectTree","objectTree","apolloClient","_useQuery","appState","updateState","nodes","handleObjectTreeNodeToggle","objectTreeNode","downloadUrl","childrenIds","CloudDownload_default","transitionClassesData","TransitionClasses","_ref$onItemsChange","onItemsChange","activeItems","allClassesActive","handleItemsChange","itemIsActive","toggleActiveItem","itemsClone","itemId","QualityClasses","legendGradient","TranslateOptionsBox","anchorEl","_ref$onClose","onClose","open","Boolean","handleLocaleChange","setItem","Popper","transition","zIndex","TransitionProps","Fade","timeout","ClickAwayListener","onClickAway","Paper","boxWrapper","button","useWindowSize","width","height","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","addEventListener","removeEventListener","LOGO_HEIGHT","TITLE_HEIGHT","FOOTER_HEIGHT","InstitutionalMenu","iframeMode","contentHeight","navListWrapper","rel","parseToken","apiToken","parsedToken","email","initialState","login","password","LoginForm","_ref$onRecoveryPasswo","onRecoveryPassword","setState","handleTextChange","paramKey","paramValue","handleStateChange","onSubmit","preventDefault","payload","method","required","Button","organization","motivation","SignUpForm","_ref$onCancel","onCancel","showInfo","setShowInfo","handleSubmit","user","filterFormInput","multiline","rows","description","updateSnapshot","MapForm","_ref$editMode","editMode","_ref$onSubmit","baseTranslationKey","MapList","_ref$data","_ref$onViewMap","onViewMap","_ref$onEditMap","onEditMap","_ref$onDeleteMap","onDeleteMap","handleDelete","confirm","CheckCircleOutline_default","Edit_default","Delete_default","MapEditDialog","isOpen","Dialog","paper","dialogWrapper","Close_default","PasswordRecoveryForm","AccountMenu","myMapsMode","newMapMode","_ref$onHideMenu","onHideMenu","showForm","setShowForm","showSignUp","setShowSignUp","currentMapData","setCurrentMapData","_useState7","_useState8","showPasswordRecovery","setShowPasswordRecovery","_useState9","_useState10","maps","setMaps","toggleMapForm","toggleSignUpForm","togglePasswordRecoveryForm","titleWrapper","hideMenuButton","ChevronLeft_default","userInfo","Person_default","ExitToApp_default","myMapsContentWrapper","infoText","startIcon","Add_default","addButton","appData","snapshot","mapsClone","flyTo","territoryPoints","turf","mapData","mapId","GET_MODULE_DATA","customClientModules","ModuleIconComponent","xmlns","viewBox","fill","d","preserveAspectRatio","version","NEW_MODULE_KEYS","BETA_MODULE_KEYS","mapNewModuleListKeyToOldKey","getModuleItemClassName","scenarios","mapLocaleKeyToAbbreviation","pt-BR","en","es","fontWeight","arrow","TOP_PADDING","TOP_PADDING_LARGE","BOTTOM_PADDING","withRouter","_classnames6","_classnames7","history","navIsVisible","setNavIsVisible","menuIsVisible","setMenuIsVisible","accountMenuIsVisible","setAccountMenuIsVisible","translateBoxAnchorEl","setTranslateBoxAnchorEl","showFireModeContent","setShowFireModeContent","_useState11","_useState12","showInfrastructureModeContent","setShowInfrastructureModeContent","_useState13","_useState14","showIrrigationModeContent","setShowIrrigationModeContent","_useState15","_useState16","showDeforestationModeContent","setShowDeforestationModeContent","modulesData","customModulesData","prevActiveModule","isFireIframe","isInfrastructureIframe","isIrrigationIframe","modulesList","customModulesList","activeModuleData","landUseAndCover","pastureQuality","submodulesList","handleActiveModuleChange","push","defaultParams","toggleNav","handleShowDashboardInfo","handleTabChange","handleMapFlyToChange","handleAddNewMap","handleShowMyMaps","hasStatisticsButton","parsedTabList","mapSubmoduleIdToTooltip","totalTabList","handleCustomModeClick","showFireIframeMode","showInfrastructureIframeMode","showIrrigationIframeMode","isActive","rgbColor","hex","m","r","g","b","result","exec","parseInt","hexToRgb","primaryColor","Header_CustomTooltip","AccountCircle_default","Menu_default","currentTarget","Translate_default","renderTabContent","BarChart_default","Bookmark_default","ViewList_default","component","mainLogo","logoImage","logoFire","logoSentinelPT","logoSentinelEN","src","alt","renderLogo","Footer","copyText","versionText","ecostageImage","availableLocaleNoteKeys","WarningNoteDialog","readNoteKeys","setReadNoteKeys","closeNoteDialog","isNull","contentDescription","actions","HEADER_HEIGHT","HEADER_SIMPLE_HEIGHT","BasePage","children","_ref$simple","simple","shouldNotifyUserNewTermOfUseVersion","headerHeight","windowHeight","setWindowHeight","setContentHeight","isFrameMode","debouncedUpdateHeight","parsedQueryParams","parseStateToQueryParams","encodedQueryParams","encodeValuesOnly","arrayFormat","customPathname","invert","pageWrapper","locale-en","Header_Header","minHeight","frameBorder","scrolling","marginHeight","marginWidth","GET_POINT_DATA","searchButtonActive","& svg","CustomTooltipSimple","code","CARForm","isVisible","_ref$onSearchPoint","onSearchPoint","_ref$onRuralPropertyC","onRuralPropertyCodeChange","_ref$updateClientAppS","isSearching","setIsSearching","carCode","wfsParams","resp","fetchCARCodeLayerData","feature","center","coordinates","point","lat","lng","searchIconButton","Search_default","loadingProgressWrapper","CircularProgress","CARInfo","_ref2$onClose","handleClose","carInfoWrapper","carInfoWrapperWithoutHeader","carInfoWrapperWithBeforeAndAfterMosaic","dataList","dataListItem","dataListItemLabel","dataListItemValue","CARBox","_ref3$onFlyTo","_ref3$onFeatureChange","onFeatureChange","_ref3$updateClientApp","showPointForm","setShowPointForm","CARData","setCARData","loadPointData","pointData","loadingPointData","getTerritoriesOnList","filteredTerritoryCategoriesList","_ref4","parsedData","category","territoryData","categoryStringList","categorySelectedString","territoryStringList","territorySelectedString","category_key","wrapperWithoutHeader","wrapperWithBeforeAndAfterMosaic","controlWrapper","searchButton","isVisibile","FlipToFront_default","_ref5","defaultValue","DEFAULT_PADDING","ClassLegendDialog","classId","currentTab","setCurrentTab","tabItems","setTabItems","classesTooltipsList","parsedTabItems","labelStringList","labelSelectedString","titleStringList","titleSelectedString","wrapperWithHeader","selectedData","bodyStringList","bodySelectedString","imageList","image","imageStringList","imageSelectedString","renderContent","& a","& ul","paddingLeft","& ul li","listStyleType","PointForm","parsedLat","parsedLng","CoordinatesBox_CustomTooltip","interactive","infoIcon","InputProps","inputComponent","Cleave","inputProps","numeral","MyLocation_default","CoordinatesBox","_ref2$onSubmit","CoordinatesBox_CustomTooltipSimple","tooltipFormatter","str","seriesName","valueLabel","numbro","format","thousandSeparated","mantissa","percentageFormatted","percent","output","PieChart","colors","serie","echarts_for_react_lib_default","grid","left","top","right","bottom","confine","trigger","textStyle","align","borderWidth","extraCssText","formatter","legend","show","series","animation","radius","toolbox","saveAsImage","axisValue","LineChart","_ref$categories","categories","_ref$series","containLabel","xAxis","axisPointer","axisLabel","axisLine","boundaryGap","yAxis","axisTick","splitLine","lineStyle","smooth","notMerge","formatNumber","StickyTable","columns","tableWrapper","categoriesTitle","tableCategoriesList","row","TableContainer","Table","table","TableHead","TableRow","TableCell","categoryCell","TableBody","alias","yearValue","printButton","dark","DashboardDialogCoverageClassesContent","classTreeId","territoryIds","classTreesList","classesLevelsList","classesLevelsListByLevel1","filteredClassesLevelsListByLevel1","filteredClassesLevelsListByLevel1Ids","activeClassesLevelsList","coverageClassificationDataList","aggregatedCoverageClassificationDataList","obj","year","classTreeNodeId","nextValue","areaInHa","classData","years","parsedClassesLevelsList","coverageClassificationData","pieChartData","itemStyle","lineChartSeriesData","loadingWrapper","chartsWrapper","dataTableWrapper","tableHeader","tableTitle","each","rowData","class","flatten","react_csv","csvDownloadLink","filename","renderDownloadTableLink","DashboardDialogCoverageNaturalOrAnthropicContent","filteredCoverageClassificationDataList","parsedClassesLevelsByLevel1Data","filteredCoverageClassificationData","sumBy","parsedClassesLevelsByLevel1PieData","filteredData","sampleData","areaStyle","DashboardDialogQualityContent","territoryId","area","scope","cellIndex","formatValue","& thead td","borderBottom","& th","TransitionMatrixTable","links","sourceCategories","targetCategories","tableContainer","maxHeight","targetCategory","categoryData","sourceCategory","rowTotal","fromCategory","linkData","totalRow","toCategoryTotal","columnTotal","tableLeftTag","tableTopTag","tableLeftCategoriesWrapper","matrixTable","rowTotalByCategory","baseParentId","substring","startsWith","columnTotalByCategory","valueFormatted","MyResponsiveSankey","_ref$onClick","nivo_sankey_esm","margin","nodeOpacity","nodeInnerPadding","nodeSpacing","nodeBorderWidth","nodeBorderColor","from","modifiers","linkOpacity","linkHoverOpacity","linkHoverOthersOpacity","enableLinkGradient","labelPosition","labelPadding","labelTextColor","animate","motionStiffness","motionDamping","tooltipFormat","SankeyChart","_ref2$onClick","SankeyChart_MyResponsiveSankey","CUSTOM_PADDING","exportAsImage","element","imageFileName","canvas","html2canvas","toDataURL","downloadImage","fileName","fakeLink","document","download","appendChild","click","removeChild","remove","SankeyChartControl","activeLevel","chartRef","activeLinks","setActiveLinks","activeSourceClasses","setActiveSourceClasses","activeTargetClasses","setActiveTargetClasses","hasClassesControl","PADDING","validSourceIds","validTargetIds","nextLinks","originOptions","destinationOptions","handleAutocompleteChange","renderClassesAutocomplete","autocompleteFormControl","multiple","filteredNodes","_ref6","filteredLinks","_ref7","sankeyYears","downloadButton","Image_default","sankeyWrapper","levelIds","DashboardDialogTransitionContent","_ref$onLinkClick","onLinkClick","setActiveLevel","activeTab","setActiveTab","defaultClassTreeData","loadingClassesData","defaultClassTreeLevelsList","defaultClassTreeId","range","handleLevelChange","handleSankeyClick","sourceTreeNodeId","targetTreeNodeId","radioGroupInput","tabListWrapper","dataWrapper","coverageClassificationChangesDataByTreesList","uniqData","uniqBy","fromTreeNodeId","toTreeNodeId","aggregatedData","fromClassData","toClassData","fromPositionLevelLabel","fromNodeId","fromStringList","fromSelectedString","fromNode","treeNodeId","toPositionLevelLabel","toNodeId","toStringList","toSelectedString","toNode","BarChart","_ref$vertical","vertical","tempValue","DashboardDialogPastureQualityContent","parsedActiveClassesLevelsListItems","barChartSeriesData","stack","BarChart_BarChart","getClassAreaForYear","memoize","sum","getPositionsToOffsetForIndex","numberOfCharts","y","div","divide","floor","positions","0","1","ClassificationsChart","_ref$allClassTreeLeve","allClassTreeLevels","_ref$activeClassTreeL","activeClassTreeLevels","_ref$classTreeCharts","classTreeCharts","_ref$years","generateBaseSerieForAnyChart","chart","levelsToShowOnPieChart","optionTransforms","hideAxis","axis","swapAxis","oldXAxis","oldYAxis","oldXAxisId","tempEncodeX","encode","parseStackedBar","chartTypeTransformationMappings","sunburst","pie","bar","stacked_bar","stacked_area","stacked_column","colorSpan","indexOf","dataset","sourceHeader","treeNodeNames","zipObject","n","over","singleYear","gridIndex","flatMap","cond","matches","chartType","dataIndex","itemName","constant","chartIndex","treeNode","xAxisIndex","yAxisIndex","transformation","GET_CATEGORIES_OF_OBJECT_TREE_NODES","getYearRangeFromClassTreeNodes","DashboardDialogGenericClassesContent","_ref$hasObjectFilter","hasObjectFilter","bufferId","objectTreeNodesData","objectTreeNodeIds","activeObjectCategoryIds","classTreeLevels","ctl","tableRows","mapKeys","coverageClassificationDataByTreeList","_value","trimStart","hasDataByTree","t","hasDataByTreeIntersectedByObject","parsedClassTreeCharts","marginTop","display","justifyContent","alignItems","DashboardDialog","_ref$onUpdateClientAp","onUpdateClientAppState","isExpanded","setIsExpanded","titleId","handleTransitionLinkClick","contentKey","snakeCase","wrapperIsCollapsed","alertInfo","toggleButtonIsCollapsed","baseLayers","labelKey","props","transparent","layers","descriptionData","baseMaps","layerParams","noWrap","attribution","tileType","CoordinatesInfo","mouseCoordinates","mouseCoordinatesInfo","MapCustomEvents","_ref$onZoomStart","onZoomStart","_ref$onMoveStart","onMoveStart","_ref$onEsc","onEsc","useLeaflet","handleKeyDown","originalEvent","keyCode","on","off","mapWasDragEnabled","mapWasTapEnabled","el","types","fn","context","L","DomEvent","getRangeEvent","rangeInput","cancelMapDrag","_map","dragging","enabled","tap","disable","uncancelMapDrag","_refocusOnMap","enable","asArray","arg","Control","SideBySide","thumbSize","initialize","leftLayers","rightLayers","setLeftLayers","setRightLayers","getPosition","rangeValue","_range","offset","getSize","setPosition","Evented","prototype","Mixin","Events","addTo","_container","DomUtil","create","_controlContainer","_divider","max","step","paddingRight","_addEvents","_updateLayers","_updateLabels","_leftLayer","getContainer","clip","_rightLayer","_removeEvents","getLeftLayer","getRightLayer","_leftLayers","_rightLayers","_updateClip","nw","containerPointToLayerPoint","se","clipX","dividerX","clipLeft","clipRight","prevLeft","prevRight","layer","hasLayer","setAttribute","Browser","touch","sideBySide","Icon","Default","_getIconUrl","mergeOptions","iconRetinaUrl","require","iconUrl","shadowUrl","mapButtonActive","EXTERNAL_ELEMENTS_HEIGHT","CONFIG_DEFAULT","zoom","minZoom","maxZoom","CUSTOM_MAP_URL","MapCanvas","leftSideMosaicLayer","rightSideMosaicLayer","sideBySideControl","carFeature","countryTerritoryId","_ref$configOptions","configOptions","_ref$isOnFreezeMode","isOnFreezeMode","_ref$onSearchPointCli","onSearchPointClick","onMoveEnd","setCoverageTutorial","_ref$onFlyToReset","onFlyToReset","MAP_URL","mapRef","zoomControlRef","setMouseCoordinates","isOnBoxZoomMode","setIsOnBoxZoomMode","isOnPointSearchMode","setIsOnPointSearchMode","activeBaseMapData","baseMapsData","mapboxModePrev","leafletElement","invalidateSize","handleBoxZoomClick","setTimeout","boxZoomButton","getElementById","fitBounds","panTo","layerName","firstYear","lastYear","classTreeLevelsListIds","tileLayer","wms","class_tree_node_ids","territory_ids","removeLayer","renderInfrastructureCoverageLayer","_ref2$opacityDenomina","opacityDenominator","_ref2$objectsMask","objectsMask","WMSTileLayer","buffer_id","object_tree_node_ids","opacity","renderObjectLayer","stopZoomControl","Map","mapWrapper","mapWrapperWithHeader","mapWrapperOnPointSearchMode","zoomControl","_event$latlng","latlng","_event$layerPoint","layerPoint","point1","point2","parsedPoint1","layerPointToLatLng","parsedPoint2","onmousemove","_event$latlng2","formattedValue","onmoveend","getCenter","getZoom","combinedValue","toFixed","ZoomControl","position","ScaleControl","imperial","index_es","sticky","border","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","outline","cursor","borderRadius","activeStyle","MapCanvas_CustomTooltip","mapActionButton","mapSearchButton","stopPropagation","NotListedLocation_default","TileLayer","renderBaseMap","classTreeNodeIds","renderCoverageLayer","_$split3","_$split4","transitionCategoryKeys","from_year","to_year","transition_category_keys","renderTransitionLayer","renderQualityLayer","enabledPixelValues","enabled_pixel_values","renderPastureQualityQualityLayer","mapPathname","yearParams","renderGenericLayer","layerData","baseLayersData","LayerComponent","GeoJSON","weight","Marker","mapboxgl","workerClass","MAPBOX_TOKEN","bearing","pitch","exaggeration","MapboxCanvas","CONFIG","reverse","esm","initialViewState","longitude","latitude","maxPitch","mapStyle","mapboxAccessToken","terrain","fog","high-color","horizon-blend","space-color","star-intensity","_event$lngLat","lngLat","_event$point","onMouseMove","_event$lngLat2","viewState","tileSize","tiles","sourceLayer","paint","raster-opacity","MapboxControl","_ref$onToggle","onToggle","wrapperHeader","MapboxControl_CustomTooltip","actionButtonActive","CustomSwitch","switchBase","&$checked","customColor","&$checked + $track","track","Switch","MapControls","activeBox","setActiveBox","opacityValue","setOpacityValue","activeLegendItem","setActiveLegendItem","activeBaseMapLegendItem","setActiveBaseMapLegendItem","isLayerActive","handleLayersChange","nextActiveItems","handleBaseMapChange","getFormattedLabel","baseKey","handleToggleLegend","handleToggleBaseMapLegend","actionBox","MapControls_CustomTooltip","Opacity_default","actionBoxContent","actionBoxContentOpacity","Slider","orientation","valueLabelDisplay","onChangeCommitted","actionButtonOpacity","Layers_default","actionBoxContentScrollWrapper","actionBoxItemWrapper","actionBoxItemHeader","switchControl","switchLabel","actionBoxItemControl","actionBoxControlButtonToggle","actionBoxItemLegend","actionButtonBaseMap","Map_default","baseMapsContentWrapper","baseMap","isDisabled","Fragment","baseMapsItemWrapper","radioGroupControl","radioGroupLabel","PointHistoryChart","yAxisNames","MapPointDialog","pointInfo","ruralProperties","setRuralProperties","chartData","setChartData","bboxString","generareSeriesItem","categoryIndex","parsedParams","round","urls","all","coverageData","classItemData","classification","linguage","parsePointData","parsedCoverageData","coverageItem","coverageItemParsed","features","carsList","chartWrapper","titleCar","dataListCar","ruralProperty","cod_imovel","dataListCarItemFull","headerInfoValue","popper","YearTimeline","_ref$firstYearFixed","firstYearFixed","initialValue","rangeLimits","rangeSpecificValues","uniqueId","updateKey","setUpdateKey","isRange","sliderItemsProps","marks","rsv","timelineInfo","DateRange_default","sliderWrapper","ValueLabelComponent","YearTimeline_CustomTooltip","timelineMark","intervals","YearTimelineMultiple","yearList","startYearsList","startValue","setStartValue","endValue","setEndValue","filteredIntervals","endYearsList","handleChange","handleChangeComitted","YearTimelineMultiple_CustomTooltip","valueText","ShareBox","_ref$pageLink","pageLink","handleCopy","copy","socialList","socialItem","FacebookShareButton","quote","FacebookIcon","TwitterShareButton","TwitterIcon","WhatsappShareButton","WhatsappIcon","ShareControl","shareAnchorEl","setShareAnchorEl","ShareControl_CustomTooltip","Share_default","positionTooltipInsideDocument","canvasMousePos","tooltipDom","rect","sizes","canvasRect","parentElement","getElementsByTagName","getBoundingClientRect","mouseX","mouseY","tooltipWidth","contentSize","tooltipHeight","xPos","yPos","documentElement","clientWidth","clientHeight","yAxisMillionLabelFormatter","yAxisLabelPercentageFormatter","parsedValue","isPercentage","_ref$hideXAxisLabel","hideXAxisLabel","_ref$hasAvgMarkLine","hasAvgMarkLine","hasMillionValue","sampleItem","yAxisName","nameGap","gridLeft","markLine","nameLocation","nameRotate","nameTextStyle","symbol","appendToBody","mainBar","MinimalBarData","percentage","customMainBarStyles","backgroundBar","infoLabel","infoValue","BaseValuesChart","_ref$title","total","totalTitle","totalTitleTooltipKey","maxValue","maxValueTooltipKey","averageValue","maxYear","averageValueTooltipKey","averagePercentage","minValue","minValueTooltipKey","minPercentage","minYear","AnnualStatisticsContent","statisticsDataIsVisible","onShowData","mainYear","chartsData","setChartsData","emptyData","setEmptyData","loadingClassTreeData","filteredActiveClassTreeNodeIds","nodeData","activeParentClassTreeNodeIds","getParentIds","errorBaseData","getTotalAreaByClassesData","classTreeNodeData","yearData","nodeValues","parsedSeries","parsedNodeId","sortedSeries","filteredSeries","getPercentageAreaByClasses","totalAreaByClasses","percentageAreaByClasses","handleShowData","totalAreaByClassesChartData","totalAreaByClassesChartDataCategories","totalAreaByClassesChartDataSeries","totalAreaByClassesChart","percentageAreaByClassesChartData","percentageAreaByClassesChartDataCategories","percentageAreaByClassesChartDataSeries","percentageAreaByClassesChart","LinearProgress","distByYears","customTotal","isCustom","areaByPeriod","BarChart_BarChart_BarChart","TableChart_default","unit","_ref$chartType","seriesOptions","hideDelay","AccumulatedStatisticsContent","useTheme","getAccumulatedAreaFromAllPeriodData","accumulatedAreaFromAllPeriod","LineChart_LineChart","AccumulatedDistributedStatisticsContent","getTotalAreaByClassesOnFirstLevelData","totalValue","childrenId","totalAreaByClassesOnFirstLevel","classViewChartData","classViewChart","PieChart_PieChart","CoverageMainStatisticsContent","hasSingleHistoricalData","hasCustomCOSValues","_ref$valueMantissa","valueMantissa","currentYear","parseChartsData","classViewChartDataUnit","historicalSeriesChartDataUnit","findFurthestChildrenIds","flattenDeep","furthestParent","findFurthestParent","currentData","furthestParentId","classViewChartDataMinValue","minBy","classViewChartDataValues","factor","historicalSeriesChartData","totalData","itemData","historicalSeriesChartDataMinValue","historicalSeriesChartDataValues","itemValue","historicalSeriesChart","renderClassViewChart","renderHistoricalSeriesChart","FireAnnualTotalBurnedStatisticsContent","getTotalBurnedAreaByYearData","sortedValues","totalBurnedAreaByYear","totalBurnedAreaByYearChartData","totalBurnedAreaByYearChart","burnedAreaByPeriod","mapMonthToIndex","Janeiro","January","Fevereiro","February","Março","March","Abril","April","Maio","May","Junho","June","Julho","July","Agosto","August","Setembro","September","Outubro","October","Novembro","November","Dezembro","December","yAxisLabelFormatter","BurnedAreaCustomChart","_ref$customYAxisLabel","customYAxisLabelFormatter","itemWidth","itemHeight","FireMonthlyStatisticsContent","getCustomBurnedAreaByMonthData","getAnnualAreaByMonthData","nodeItem","customBurnedAreaByMonth","annualAreaByMonth","customBurnedAreaByMonthChartData","customBurnedAreaByMonthChartDataCategories","customBurnedAreaByMonthChartDataData","customBurnedAreaByMonthChart","annualAreaByMonthChartData","annualAreaByMonthChartDataCategories","annualAreaByMonthChartDataSeries","annualAreaByMonthChart","maximum","average","minimum","FireAccumulatedStatisticsContent","_ref$localeKey","localeKey","lastValue","totalSummary","FrequencyStatisticsContent","_ref$ageMode","ageMode","_ref$fireMode","fireMode","_ref$deforestationMod","deforestationMode","frequencyByAreaData","parsedValues","getTotalBurnedAreaByFrequencyAndClassData","newData","areas","frequencyByArea","frequencyByAreaAndClass","frequencyByAreaChartData","frequencyByAreaChart","frequencyByAreaAndClassChartData","frequencyByAreaAndClassChartDataCategories","frequencyByAreaAndClassChartDataSeries","frequencyByAreaAndClassChart","dataAggregated","isMining","frequencyPieChart","CLASS_NAME_SUMMARY_MAPPER","2","3","4","5","> 5","> 6","NumberOfClassesStatisticsContent","parsedRows","numberOfClassesChart","numberOfClasses","sample","areaByNumberOfClasses","StatisticsBox","_ref$onShowData","mapClassTreeKeyToTooltip","fire_annual_total_burned","defaultContentParams","titleTooltip","setIsVisible","InfrastructureMainStatisticsContent","activeClassTreeLevelsList","classTreeLevelsListOnLevel1","valueItems","filteredValueItems","InfrastructureStatisticsBox","DataTableBox","StatisticsDataTableBox","TutorialTour","steps","disableBeacon","disableScrolling","_this2","callback","action","closeTutorial","run","coverageTutorial","showSkipButton","floaterProps","disableAnimation","close","back","buttonClose","buttonBack","marginRight","Component","injectIntl","GET_TERRITORIES_CATEGORIES_LIST","MODULES_WITH_INITIAL_YEAR_FIXED","statisticsData","setStatisticsData","setCarFeature","territoriesCategoriesListData","loadCountryTerritoryData","countryTerritoryListData","prevLoadingBaseData","prevActiveModuleContent","mapConfigOptions","confirmation","URL","searchParams","passwordUpdate","checkModuleKeyCondition","parsedModuleContentKey","toggleMapbox","countryTerritoryCategory","handleMapPointSearchClick","handleFlyToPointSubmit","handleControlsChange","handleMoveEnd","handleStatisticsShowData","TimelineComponent","onControlsChange","tempDialog","mapThemePaletteByProduct","light","contrastText","defaultThemeColor","LandingPage","ThemeProvider","outerTheme","BasePage_BasePage","Map_Map","FormFooter","Box","PageFooter","footer","privacyCheck","LoginToForum","res","_ref$statisticsDataIs","CoveragePieChartContent","_ref$classTreeKey","_ref$selectedClassTre","selectedClassTreeIds","themeColor","COVERAGE_TREE_NODE_IDS","COVERAGE_NATURAL_OR_ANTHROPIC_TREE_NODE_IDS","DEFORESTATION_TREE_NODE_IDS","QUALITY_OF_PASTURE_TREE_NODE_IDS","REGENERATION_TREE_NODE_IDS","IRRIGATION_TREE_NODE_IDS","MINING_TREE_NODE_IDS","FIRE_TREE_NODE_IDS","Triangle","subtitle","sectionTitleBox","triangleArrow","borderLeftColor","sectionTitleBoxTitleWrapper","sectionTitleBoxTitle","sectionTitleBoxSubtitle","MODULES","modulesRoutes","MapBiomasLandingPage","routes","urlToken","passwordConfirmation","paramsToJSON","paramsToJSONCopy","decodeURI","isCreatePasswordButtonDisabled","box","Typography","match","validatePassword","request_params","URLSearchParams","errors","createAcountLegend","Link","to","isCreatedPassword","urlParams","callbackUrl","success","paramsToUrl","encodeURI","emailField","accessAccountLegend","mb","textArea","setTerritory","territoryBoundingBox","renderTerritoryImage","imageBox","renderSectionTitle","formBox","contentBox","contentTitleWrapper","contentTitle","modulesBlock","moduleBlock","moduleBlockIcon","moduleBlockTitle","sectionTitleGrid","sectionTitleBoxInfo","moduleContentWrapper","CoverageMainStatisticsContent_CoverageMainStatisticsContent","yearBlockImage","yearTitle","AnnualStatisticsContent_AnnualStatisticsContent","unauthenticated","authenticated","renderRoutes","_loading","routesToRender","BrowserRouter","app_context","Provider","route","i","routeProps","defaults","exact","redirect","generateExtraProps","_props","redirectPath","isFunction","Redirect","Route","Routes","react_components_esm","greys","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","createMuiTheme","MuiButtonBase","disableRipple","MuiFormControl","MuiInputLabel","shrink","MuiInput","disableUnderline","MuiSelect","overrides","MuiOutlinedInput","input","notchedOutline","MuiAutocomplete","&.autocomplete-light","& .MuiOutlinedInput-notchedOutline","& .MuiAutocomplete-inputRoot .MuiAutocomplete-input","& .MuiInputLabel-shrink","& .MuiIconButton-root","inputRoot","noOptions","MuiButton","contained","paddingBottom","paddingTop","&:focus","containedSizeLarge","containedSizeSmall","MuiDialog","MuiPopover","MuiFab","&.input-label-gray","outlined","transform","background","label + &","MuiInputBase","MuiMenuItem","select","MuiTooltip","tooltipArrow","MuiFormLabel","MuiExpansionPanel","&:before","&.Mui-expanded","MuiExpansionPanelSummary","expandIcon","MuiPaper","elevation1","MuiSnackbar","MuiFormControlLabel","grey","secondary","typography","fontFamily","ToastContainer","_baseData$toast","Snackbar","anchorOrigin","horizontal","autoHideDuration","TransitionComponent","Alert","elevation","registerLanguage","languageTag","delimiters","thousands","decimal","abbreviations","thousand","million","billion","trillion","ordinal","currency","setLanguage","setDefaults","zeroFormat","Root","react_common_esm","StylesProvider","injectFirst","useUtils_cfb96ac9","utils","MomentUtils","provider","messages","core_Routes_Routes","ReactDOM","render","core_Root","disabledButton","smallText","translation","tutorialButton","mapGeographicalReliefButton","opacityBox","headerInfo","headerInfoLabel","headerInfoToggleButton","alertText","actionButtonDisabled","__webpack_require__","p","form","MuiInputBase-root","privacyLink","privacyLabel","dataListItemFull"],"mappings":"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","file":"static/js/main.b08381ec.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"classList\":\"ClassLegendList_classList__1_luO\",\"classListLevel2\":\"ClassLegendList_classListLevel2__1QH3A\",\"classListItemBase\":\"ClassLegendList_classListItemBase__3nQGZ\",\"classListLevel3\":\"ClassLegendList_classListLevel3__4iDNz\",\"classListLevel4\":\"ClassLegendList_classListLevel4__14qgL\",\"classListItemHeader\":\"ClassLegendList_classListItemHeader__cOZBY\",\"classListItemCheckControl\":\"ClassLegendList_classListItemCheckControl__32oOL\",\"classListItemTitle\":\"ClassLegendList_classListItemTitle__3fpl5\",\"classListItemContentControl\":\"ClassLegendList_classListItemContentControl__2Vnjr\",\"classListItemInfoControl\":\"ClassLegendList_classListItemInfoControl__vMwfy\",\"classListControlOnLeaf\":\"ClassLegendList_classListControlOnLeaf__3qS5_\",\"classListControlDisabled\":\"ClassLegendList_classListControlDisabled__1E5MM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"QualityBaseForm_wrapper__2J_03\",\"wrapperInline\":\"QualityBaseForm_wrapperInline__2YAUp\",\"formControl\":\"QualityBaseForm_formControl__2m04h\",\"radioGroup\":\"QualityBaseForm_radioGroup__4qu1R\",\"radioLabel\":\"QualityBaseForm_radioLabel__fe5Rq\",\"radioInput\":\"QualityBaseForm_radioInput__VOsao\",\"checkboxRoot\":\"QualityBaseForm_checkboxRoot__Kl91a\",\"checkboxLabel\":\"QualityBaseForm_checkboxLabel__3qklk\",\"tooltipWrapper\":\"QualityBaseForm_tooltipWrapper__QOfiQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formWrapper\":\"SignUpForm_formWrapper__IlxrJ\",\"title\":\"SignUpForm_title__RSGy4\",\"textInfo\":\"SignUpForm_textInfo__3CFgE\",\"formControl\":\"SignUpForm_formControl__3khwG\",\"actionsWrapper\":\"SignUpForm_actionsWrapper__za6ZS\",\"helperLink\":\"SignUpForm_helperLink__2JlbV\",\"successText\":\"SignUpForm_successText__37mab\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Header_wrapper__1e-Og\",\"wrapperHidden\":\"Header_wrapperHidden__GVN77\",\"wrapperIframeMode\":\"Header_wrapperIframeMode__39Pzo\",\"logoBox\":\"Header_logoBox__2Xuwa\",\"menuContent\":\"Header_menuContent__3dW_o\",\"headerWrapper\":\"Header_headerWrapper__2m_a2\",\"headerWrapperHidden\":\"Header_headerWrapperHidden__3zyDf\",\"logoBoxCollapsed\":\"Header_logoBoxCollapsed__1lGrf\",\"versionTag\":\"Header_versionTag__2SCyI\",\"newTag\":\"Header_newTag__18z-s\",\"betaTag\":\"Header_betaTag__3z3ky\",\"menuBarListItemOldTag\":\"Header_menuBarListItemOldTag__2YNlE\",\"menuBarListItemNewTag\":\"Header_menuBarListItemNewTag__3SQLi\",\"menuBarListItemBetaTag\":\"Header_menuBarListItemBetaTag__iBcAw\",\"toggleButton\":\"Header_toggleButton__233g6\",\"toggleButtonExpand\":\"Header_toggleButtonExpand__2XD1L\",\"menuBar\":\"Header_menuBar__vI2mT\",\"linksContent\":\"Header_linksContent__y7J-N\",\"linksContentIsVisible\":\"Header_linksContentIsVisible__1HQk-\",\"linksContentIframeMode\":\"Header_linksContentIframeMode__35Gfa\",\"navOpenButton\":\"Header_navOpenButton__3-GcZ\",\"toggleButtonAlone\":\"Header_toggleButtonAlone__Ik_8I\",\"topContent\":\"Header_topContent__2FcC6\",\"contentWrapper\":\"Header_contentWrapper__YhT-7\",\"logo\":\"Header_logo__3bgzQ\",\"tabContent\":\"Header_tabContent__3B_La\",\"statisticsButtonWrapper\":\"Header_statisticsButtonWrapper__3bLak\",\"bottomContent\":\"Header_bottomContent__1_Vov\",\"navItemButtonBeta\":\"Header_navItemButtonBeta__18Vd-\",\"navItemButtonBetaAddon\":\"Header_navItemButtonBetaAddon__Ohe1D\",\"activeBlockIconBetaAddon\":\"Header_activeBlockIconBetaAddon__2nao3\",\"infrastructureClasses\":\"Header_infrastructureClasses__3dXrw\",\"menuBarList\":\"Header_menuBarList__3OqT8\",\"menuBarListItem\":\"Header_menuBarListItem__BaMY2\",\"menuBarListItemLine\":\"Header_menuBarListItemLine__1_GUA\",\"menuBarListItemButtonIcon\":\"Header_menuBarListItemButtonIcon__EyaSs\",\"moduleIcon\":\"Header_moduleIcon__1nhee\",\"menuBarListItemCoverage\":\"Header_menuBarListItemCoverage__2RCR0\",\"menuBarListItemCoverageIsActive\":\"Header_menuBarListItemCoverageIsActive__3z_Lu\",\"menuBarListItemCoverageQuality\":\"Header_menuBarListItemCoverageQuality__I3M5B\",\"menuBarListItemCoverageQualityIsActive\":\"Header_menuBarListItemCoverageQualityIsActive__2sjL3\",\"menuBarListItemTrajectories\":\"Header_menuBarListItemTrajectories__2tF72\",\"menuBarListItemTrajectoriesIsActive\":\"Header_menuBarListItemTrajectoriesIsActive__2Vz5y\",\"menuBarListItemQualityOfPastureData\":\"Header_menuBarListItemQualityOfPastureData__AwF_l\",\"menuBarListItemQualityOfPastureDataIsActive\":\"Header_menuBarListItemQualityOfPastureDataIsActive__2gr3A\",\"menuBarListItemDeforestation\":\"Header_menuBarListItemDeforestation__3v-M1\",\"menuBarListItemDeforestationIsActive\":\"Header_menuBarListItemDeforestationIsActive__3yRKu\",\"menuBarListItemRegeneration\":\"Header_menuBarListItemRegeneration__EhqwS\",\"menuBarListItemRegenerationIsActive\":\"Header_menuBarListItemRegenerationIsActive__27YEX\",\"menuBarListItemInfrastructure\":\"Header_menuBarListItemInfrastructure__3dbA6\",\"menuBarListItemInfrastructureIsActive\":\"Header_menuBarListItemInfrastructureIsActive__3n3DX\",\"menuBarListItemIrrigation\":\"Header_menuBarListItemIrrigation__2qr08\",\"menuBarListItemIrrigationIsActive\":\"Header_menuBarListItemIrrigationIsActive__3e57v\",\"menuBarListItemFire\":\"Header_menuBarListItemFire__32LoY\",\"menuBarListItemFireIsActive\":\"Header_menuBarListItemFireIsActive__1Od-w\",\"menuBarListItemMining\":\"Header_menuBarListItemMining__2dZIb\",\"menuBarListItemMiningIsActive\":\"Header_menuBarListItemMiningIsActive__2oQm0\",\"menuBarListItemWater\":\"Header_menuBarListItemWater__uvJsl\",\"menuBarListItemWaterIsActive\":\"Header_menuBarListItemWaterIsActive__29eLB\",\"menuBarListItemSentinel\":\"Header_menuBarListItemSentinel__Nw2-F\",\"menuBarListItemSentinelIsActive\":\"Header_menuBarListItemSentinelIsActive__JTIEx\",\"menuBarListItemSoil\":\"Header_menuBarListItemSoil__2jlkh\",\"menuBarListItemSoilIsActive\":\"Header_menuBarListItemSoilIsActive__3QowX\",\"menuBarBottomContent\":\"Header_menuBarBottomContent__1q7Ep\",\"menuButton\":\"Header_menuButton__1vgrQ\",\"translateButton\":\"Header_translateButton__7F8uU\",\"actionButton\":\"Header_actionButton__3s1Ka\",\"fireModeContentWrapper\":\"Header_fireModeContentWrapper__3ReFo\",\"fireModeContent\":\"Header_fireModeContent__1jYQF\",\"fireModeContentBox\":\"Header_fireModeContentBox__1KYbk\",\"fireModeContentBoxExtra\":\"Header_fireModeContentBoxExtra__3Z6aw\",\"fireModeContentBoxTextWrapper\":\"Header_fireModeContentBoxTextWrapper__3w5M2\",\"fireModeContentBoxTitle\":\"Header_fireModeContentBoxTitle__3VccS\",\"fireModeContentBoxActions\":\"Header_fireModeContentBoxActions__3W5Mq\",\"customModeContentBoxButton\":\"Header_customModeContentBoxButton__2FHYO\",\"fireModeContentBoxButton\":\"Header_fireModeContentBoxButton__3GpsP\",\"infrastructureModeContentBoxButton\":\"Header_infrastructureModeContentBoxButton__59GXb\",\"irrigationModeContentBoxButton\":\"Header_irrigationModeContentBoxButton__1YXyG\",\"deforestationModeContentBoxButton\":\"Header_deforestationModeContentBoxButton__2l1l7\",\"headerImageLogoSentinel\":\"Header_headerImageLogoSentinel__3Qucr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"ClassTreesControl_wrapper__DoynA\",\"title\":\"ClassTreesControl_title__2n1vX\",\"info\":\"ClassTreesControl_info__3rLpq\",\"label\":\"ClassTreesControl_label__1FfuQ\",\"toggleButtons\":\"ClassTreesControl_toggleButtons__b9g6M\",\"toggleButtons2Items\":\"ClassTreesControl_toggleButtons2Items__guL13\",\"toggleButtons3Items\":\"ClassTreesControl_toggleButtons3Items__19WZA\",\"levelControls\":\"ClassTreesControl_levelControls__3nxFg\",\"checkboxRoot\":\"ClassTreesControl_checkboxRoot__2BmrX\",\"checkboxLabel\":\"ClassTreesControl_checkboxLabel__8_VZ0\",\"actionButton\":\"ClassTreesControl_actionButton__3LmhK\",\"descriptionText\":\"ClassTreesControl_descriptionText__Pfyop\",\"formControlSelectInput\":\"ClassTreesControl_formControlSelectInput__16wNN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"GeospatialObjects_wrapper__Bpqne\",\"classListItemBase\":\"GeospatialObjects_classListItemBase__23xqx\",\"classListItemHeader\":\"GeospatialObjects_classListItemHeader__25OKP\",\"classListItemCheckControl\":\"GeospatialObjects_classListItemCheckControl__20ntZ\",\"classListItemTitle\":\"GeospatialObjects_classListItemTitle__311u3\",\"classListItemContentControl\":\"GeospatialObjects_classListItemContentControl__6r9AE\",\"classListItemInfoControl\":\"GeospatialObjects_classListItemInfoControl__6hsee\",\"classNode\":\"GeospatialObjects_classNode__2P2_x\",\"classChildNode\":\"GeospatialObjects_classChildNode__3uSC5\",\"title\":\"GeospatialObjects_title__18c80\",\"info\":\"GeospatialObjects_info__3FX4x\",\"label\":\"GeospatialObjects_label__XEYCt\",\"toggleButtons\":\"GeospatialObjects_toggleButtons__2yl4O\",\"levelControls\":\"GeospatialObjects_levelControls__3Zx1s\",\"checkboxRoot\":\"GeospatialObjects_checkboxRoot__31Z35\",\"checkboxLabel\":\"GeospatialObjects_checkboxLabel__2eh1h\",\"actionButton\":\"GeospatialObjects_actionButton__NgFXk\",\"descriptionText\":\"GeospatialObjects_descriptionText__1yjcJ\",\"actionBoxControlButton\":\"GeospatialObjects_actionBoxControlButton__3ZCYn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mapList\":\"MapList_mapList__3q6EI\",\"mapItem\":\"MapList_mapItem__2Z7ny\",\"mapItemImage\":\"MapList_mapItemImage__2qUx0\",\"mapItemTextContent\":\"MapList_mapItemTextContent__p8Th4\",\"mapItemTitle\":\"MapList_mapItemTitle__F4Kup\",\"mapItemDescription\":\"MapList_mapItemDescription__2hvM8\",\"mapItemActionsContent\":\"MapList_mapItemActionsContent__3RUBw\",\"mapItemViewButton\":\"MapList_mapItemViewButton__2KPAd\",\"mapItemViewButtonSecondary\":\"MapList_mapItemViewButtonSecondary__1Klu3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"StatisticsBox_wrapper__2j0xd\",\"wrapperIsHidden\":\"StatisticsBox_wrapperIsHidden__3gnsT\",\"header\":\"StatisticsBox_header__3uZ3K\",\"title\":\"StatisticsBox_title__1ZtiN\",\"closeButton\":\"StatisticsBox_closeButton__9F5hi\",\"closeButtonCollapse\":\"StatisticsBox_closeButtonCollapse__3AAPi\",\"collapseWrapper\":\"StatisticsBox_collapseWrapper__2hnvx\",\"content\":\"StatisticsBox_content__36hV4\",\"section\":\"StatisticsBox_section__OmOdZ\",\"sectionSmall\":\"StatisticsBox_sectionSmall__24KnK\",\"secondaryTitle\":\"StatisticsBox_secondaryTitle__1wt-B\",\"secondaryTitleExtraInfo\":\"StatisticsBox_secondaryTitleExtraInfo__396bn\",\"infoList\":\"StatisticsBox_infoList__2mMbK\",\"infoListItem\":\"StatisticsBox_infoListItem__x8jsq\",\"infoListItemValue\":\"StatisticsBox_infoListItemValue__17RPg\",\"infoListItemLabel\":\"StatisticsBox_infoListItemLabel__2pvhM\",\"progressWrapper\":\"StatisticsBox_progressWrapper__1kf5Y\",\"actionWrapper\":\"StatisticsBox_actionWrapper__1quOD\",\"actionButton\":\"StatisticsBox_actionButton__1zlxe\",\"infoBox\":\"StatisticsBox_infoBox__2d37C\",\"fireModeContentBox\":\"StatisticsBox_fireModeContentBox__1fAMQ\",\"fireModeContentBoxExtra\":\"StatisticsBox_fireModeContentBoxExtra__1ZOkE\",\"fireModeContentBoxTextWrapper\":\"StatisticsBox_fireModeContentBoxTextWrapper__2_ykY\",\"fireModeContentBoxTitle\":\"StatisticsBox_fireModeContentBoxTitle__3OkKp\"};","export function namespacedTokenKey() {\n let splitLocation = window.location.pathname.split('/')\n\n return `${splitLocation[1]}/token`\n}\n\nexport async function getCurrentTimeFromWorldClock() {\n let currentTime = null\n try {\n let response = await fetch('http://worldclockapi.com/api/json/utc/now')\n let json = await response.json()\n\n if (!json.currentDateTime) {\n throw Error('World clock API has returned a valid json but with an unexpected format')\n }\n\n currentTime = new Date(json.currentDateTime)\n } catch (e) {\n console.warn(e)\n currentTime = new Date()\n }\n\n return currentTime\n}\n\nfunction parseJwt(token) {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n\n return JSON.parse(jsonPayload);\n}\n\nexport function getUserIdFromToken(currentTime = new Date()) {\n try {\n let token = localStorage.getItem('token')\n let claims = parseJwt(token)\n\n let expirationDate = new Date(claims.exp * 1000)\n\n if (currentTime.getTime() > expirationDate.getTime()) {\n localStorage.removeItem('token')\n return null\n }\n\n return claims.sub\n } catch (e) {\n localStorage.removeItem('token')\n return null\n }\n}\n","import {\n getCurrentTimeFromWorldClock,\n getUserIdFromToken,\n} from '../../../utils/auth'\n\nexport default {\n currentUserId: async (_object, _args, _context, _info) => {\n if (localStorage.getItem('token')) {\n let currentTime = await getCurrentTimeFromWorldClock()\n let userId = getUserIdFromToken(currentTime)\n return userId\n }\n\n return undefined\n }\n}\n","import { gql } from 'graphql.macro'\n\nexport const GET_USER_ID = gql`\n query GetUserID {\n currentUserId @client\n }\n`\n\nexport const GET_USER = gql`\n query GetUser($id: Int!) {\n user(id: $id) {\n id\n name\n profile\n }\n }\n`\n","export default {\n groupType: 'territorial',\n territoryType: null,\n territorySubtype: null,\n territoryValueType: 'single',\n crossingEnabled: false,\n crossingTerritoryType: null,\n crossingTerritories: null,\n territory: null,\n territories: null,\n crossing: 'none',\n classesViewMode: 'class',\n activeClassTreeOptionValue: null,\n activeClassTreeNodeIds: [],\n activeObjectTreeNodeIds: [],\n activeSubmodule: null,\n activeClassesLevelsListItems: null,\n activeTransitionsClassesListItems: null,\n activePastureQualityQualityClassesListItems: null,\n yearRange: '1985-2022',\n buffer: 0,\n}\n","export default {\n 'coverage': {\n activeModule: 'coverage',\n activeModuleContent: 'coverage:coverage_main',\n activeYear: 2022,\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2022],\n mapboxMode: false,\n },\n 'temporal_analysis': {\n activeModule: 'temporal_analysis',\n activeModuleContent: 'temporal_analysis:temporal_analysis_number_of_classes',\n activeYear: [1985, 2022],\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2022],\n mapboxMode: false,\n },\n 'coverage_quality': {\n activeModule: 'coverage_quality',\n activeModuleContent: 'coverage_quality:coverage_quality_main',\n activeYear: 2022,\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2022],\n mapboxMode: false,\n },\n 'quality_of_pasture_data': {\n activeModule: 'quality_of_pasture_data',\n activeModuleContent: 'quality_of_pasture_data:quality_of_pasture_data_main',\n activeYear: [2000, 2022],\n timelineSpecificValues: null,\n timelineLimitsRange: [2000, 2022],\n mapboxMode: false,\n },\n 'irrigation': {\n activeModule: 'irrigation',\n activeModuleContent: 'irrigation:irrigation_main',\n activeYear: [1985, 2022],\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2022],\n mapboxMode: false,\n },\n 'deforestation': {\n activeModule: 'deforestation',\n activeModuleContent: 'deforestation:deforestation_annual',\n activeYear: [1987, 2021],\n timelineSpecificValues: null,\n timelineLimitsRange: [1987, 2021],\n mapboxMode: false,\n },\n 'regeneration': {\n activeModule: 'regeneration',\n activeModuleContent: 'regeneration:regeneration_annual',\n activeYear: [1986, 2021],\n timelineSpecificValues: null,\n timelineLimitsRange: [1986, 2021],\n mapboxMode: false,\n },\n 'infrastructure': {\n activeModule: 'infrastructure',\n activeModuleContent: 'infrastructure:infrastructure_main',\n activeYear: 2020,\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2020],\n mapboxMode: false,\n },\n 'fire': {\n activeModule: 'fire',\n activeModuleContent: 'fire:fire_accumulated',\n activeYear: [1985, 2022],\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2022],\n mapboxMode: false,\n },\n 'mining': {\n activeModule: 'mining',\n activeModuleContent: 'mining:mining_main',\n activeYear: [1985, 2022],\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2022],\n mapboxMode: false,\n },\n 'soil': {\n activeModule: 'soil',\n activeModuleContent: 'soil:soil_main',\n activeYear: 2021,\n timelineSpecificValues: null,\n timelineLimitsRange: [1985, 2021],\n mapboxMode: false,\n },\n 'sentinel': {\n activeModule: 'sentinel',\n activeModuleContent: 'sentinel:sentinel_coverage',\n activeYear: 2022,\n timelineSpecificValues: null,\n timelineLimitsRange: [2016, 2022],\n mapboxMode: false,\n },\n};\n","export default {\n '/cobertura': 'coverage',\n '/analises-temporais': 'temporal_analysis',\n '/desmatamento': 'deforestation',\n '/regeneracao': 'regeneration',\n '/irrigacao': 'irrigation',\n '/infraestrutura': 'infrastructure',\n '/pastagem': 'quality_of_pasture_data',\n '/fogo': 'fire',\n '/mineracao': 'mining',\n '/qualidade': 'coverage_quality',\n '/solo': 'soil',\n '/cobertura_10m': 'sentinel',\n};\n","import _ from 'lodash';\n\nfunction parseTerritories(territories) {\n return _.map(_.split(territories, ','), (territoryCode) => {\n const [\n id,\n label,\n territoryTypeId,\n territoryTypeLabel,\n bboxV1,\n bboxV2,\n bboxV3,\n bboxV4,\n ] = _.split(territoryCode, ';');\n const parsedBBox = [\n [Number(bboxV1), Number(bboxV2)],\n [Number(bboxV3), Number(bboxV4)],\n ];\n\n return {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: Number(id),\n label,\n territoryTypeId: Number(territoryTypeId),\n territoryTypeLabel,\n territoryBBox: parsedBBox,\n };\n });\n}\n\nexport default function parseQueryParamsToState(queryParams) {\n const {\n activeBaseMap,\n activeLayers,\n activeYear,\n layersOpacity,\n showBeforeAndAfterMosaic,\n timelineLimitsRange,\n baseParams,\n } = queryParams;\n let state = _.cloneDeep(queryParams);\n state = _.omit(state, 'baseParams');\n\n const parsedActiveBaseMap = Number(activeBaseMap);\n const parsedActiveYear = _.includes(activeYear, ',') ? _.map(_.split(activeYear, ','), Number) : Number(activeYear);\n const parsedLayersOpacity = Number(layersOpacity);\n\n if (activeBaseMap && !_.isNaN(parsedActiveBaseMap)) {\n _.set(state, 'activeBaseMap', parsedActiveBaseMap);\n }\n\n if (activeLayers) {\n const ids = _.map(_.split(activeLayers, ','));\n _.set(state, 'activeLayers', ids);\n }\n\n if (activeYear && (!_.isNaN(parsedActiveYear) || _.isArray(parsedActiveYear))) {\n _.set(state, 'activeYear', parsedActiveYear);\n }\n\n if (layersOpacity && !_.isNaN(parsedLayersOpacity)) {\n _.set(state, 'layersOpacity', parsedLayersOpacity);\n }\n\n if (showBeforeAndAfterMosaic) {\n _.set(state, 'showBeforeAndAfterMosaic', showBeforeAndAfterMosaic === 'true');\n }\n\n if (timelineLimitsRange) {\n const parsedTimelineLimitsRange = _.map(_.split(timelineLimitsRange, ','), Number);\n _.set(state, 'timelineLimitsRange', parsedTimelineLimitsRange);\n }\n\n if (baseParams) {\n const {\n groupType,\n territoryType,\n territorySubtype,\n territoryValueType,\n crossingEnabled,\n crossingTerritoryType,\n crossingTerritories,\n territory,\n territories,\n crossing,\n classesViewMode,\n activeClassTreeOptionValue,\n activeClassTreeNodeIds,\n activeObjectTreeNodeIds,\n activeSubmodule,\n activeClassesLevelsListItems,\n activeTransitionsClassesListItems,\n activePastureQualityQualityClassesListItems,\n yearRange,\n buffer,\n } = baseParams || {};\n\n if (groupType) {\n _.set(state, 'baseParams.groupType', groupType);\n }\n\n if (territoryType) {\n _.set(state, 'baseParams.territoryType', Number(territoryType));\n }\n\n if (crossingTerritoryType) {\n _.set(state, 'baseParams.crossingTerritoryType', Number(crossingTerritoryType));\n }\n\n if (territorySubtype) {}\n\n if (territoryValueType) {\n _.set(state, 'baseParams.territoryValueType', territoryValueType);\n }\n\n if (crossingEnabled) {\n _.set(state, 'baseParams.crossingEnabled', crossingEnabled);\n }\n\n if (territory) {}\n\n if (territories) {\n const parsedTerritories = parseTerritories(territories);\n\n _.set(state, 'baseParams.territories', parsedTerritories);\n }\n\n if (crossingTerritories) {\n const parsedTerritories = parseTerritories(crossingTerritories);\n\n _.set(state, 'baseParams.crossingTerritories', parsedTerritories);\n }\n\n if (crossing) {}\n\n if (classesViewMode) {\n _.set(state, 'baseParams.classesViewMode', classesViewMode);\n }\n\n if (activeClassTreeOptionValue) {\n _.set(state, 'baseParams.activeClassTreeOptionValue', activeClassTreeOptionValue);\n }\n\n if (activeClassTreeNodeIds) {\n const ids = _.map(_.split(activeClassTreeNodeIds, ','), Number);\n _.set(state, 'baseParams.activeClassTreeNodeIds', ids);\n }\n\n if (activeObjectTreeNodeIds) {\n const ids = _.map(_.split(activeObjectTreeNodeIds, ','), Number);\n _.set(state, 'baseParams.activeObjectTreeNodeIds', ids);\n }\n\n if (activeSubmodule) {\n _.set(state, 'baseParams.activeSubmodule', activeSubmodule);\n }\n\n if (activeClassesLevelsListItems) {\n const ids = _.map(_.split(activeClassesLevelsListItems, ','), Number);\n _.set(state, 'baseParams.activeClassesLevelsListItems', ids);\n }\n\n if (activeTransitionsClassesListItems) {\n const ids = _.map(_.split(activeTransitionsClassesListItems, ','));\n _.set(state, 'baseParams.activeTransitionsClassesListItems', ids);\n }\n\n if (activePastureQualityQualityClassesListItems) {\n const ids = _.map(_.split(activePastureQualityQualityClassesListItems, ','), Number);\n _.set(state, 'baseParams.activePastureQualityQualityClassesListItems', ids);\n }\n\n if (yearRange) {\n _.set(state, 'baseParams.yearRange', yearRange);\n }\n\n if (buffer) {\n _.set(state, 'baseParams.buffer', Number(buffer));\n }\n }\n\n return state;\n}\n","import {\n ApolloClient\n} from 'apollo-client';\nimport {\n InMemoryCache\n} from 'apollo-cache-inmemory';\nimport {\n createUploadLink\n} from 'apollo-upload-client';\nimport {\n onError\n} from 'apollo-link-error';\nimport {\n setContext\n} from 'apollo-link-context';\nimport {\n ApolloLink\n} from 'apollo-link';\nimport { HttpLink } from 'apollo-link-http';\nimport _ from 'lodash';\nimport qs from 'qs';\n\nimport {\n MutationResolver,\n QueryResolver\n} from './local-resolvers';\nimport {\n GET_USER\n} from '../Routes/queries';\n\nimport initialBaseParams from '../../data/initialBaseParams';\nimport mapActiveModuleToDefaultParams from '../../data/mapActiveModuleToDefaultParams';\nimport mapModuleToPathname from '../../data/mapModuleToPathname';\n\nimport parseQueryParamsToState from '../../helpers/parseQueryParamsToState';\n\nconst cache = new InMemoryCache();\n\nlet urlQueryParams = {};\n\nif (window.location.search) {\n const queryString = window.location.search.replace('?', '');\n const queryObject = qs.parse(queryString, { comma: true });\n\n if (queryObject) {\n urlQueryParams = parseQueryParamsToState(queryObject);\n }\n}\n\nconst baseParams = _.get(urlQueryParams, 'baseParams');\nurlQueryParams = _.omit(urlQueryParams, 'baseParams');\n\nconst pathname = window.location.pathname;\nconst moduleKey = mapModuleToPathname[pathname];\nconst initialModulePathnameParams = mapActiveModuleToDefaultParams[moduleKey] || {};\n\ncache.writeData({\n data: {\n app: {\n __typename: 'AppState',\n activeBaseMap: 9,\n activeLayers: [],\n layersOpacity: 70,\n activeModule: 'coverage',\n activeModuleContent: 'coverage:coverage_main',\n activeYear: 2022,\n headerIsVisible: true,\n mapFlyTo: null,\n mapPointInfo: null,\n mapPosition: '-14.392118,-56.250000,4',\n mapboxMode: false,\n showClassInfo: null,\n showDashboardInfo: null,\n showBeforeAndAfterMosaic: false,\n timelineLimitsRange: [1985, 2022],\n ruralPropertyCode: null,\n timelineSpecificValues: null,\n baseParams: {\n __typename: 'AppBaseParamsState',\n ...initialBaseParams,\n ...(baseParams || {})\n },\n ...urlQueryParams,\n isLoadingBaseData: false,\n notifyUserNewTermOfUseVersion: false,\n transitionClassTreeNodeId: null,\n activeNoteKey: null,\n ...initialModulePathnameParams\n },\n toast: {\n __typename: 'ToastState',\n content: null,\n severity: null,\n visible: false\n }\n }\n});\n\nconst logErrors = onError(({ graphQLErrors, networkError }) => {\n if (graphQLErrors) {\n graphQLErrors.forEach(({ message, locations, path }) =>\n console.log(\n '[GraphQL error]: Message: ',\n message,\n ', Location: ',\n locations,\n ', Path: ',\n path\n )\n );\n }\n\n if (networkError) {\n console.log(`[Network error]: ${networkError}`);\n }\n});\n\nconst uploadLink = createUploadLink({\n uri: '/app/graphql'\n});\n\nconst withToken = setContext((_, previousContext) => {\n let token = localStorage.getItem('token');\n if (token === null) {\n return previousContext;\n }\n\n return {\n ...previousContext,\n headers: {\n ...(previousContext && previousContext.headers),\n authorization: token ? `Bearer ${token}` : ''\n }\n }\n})\n\nconst resetTokenOnUnauthorized = onError(({ graphQLErrors, operation }) => {\n if (graphQLErrors && _.some(graphQLErrors, (e) => e.extensions && e.extensions.forbidden)) {\n if (operation.operationName !== _.get(GET_USER, 'definitions[0].name.value')) {\n // So we don't reset the store when it's not necessary\n if (localStorage.getItem('token')) {\n client.resetStore();\n }\n }\n localStorage.removeItem('token');\n }\n});\n\nconst link = new HttpLink({\n uri: '/api/graphql',\n});\n\nconst client = new ApolloClient({\n cache,\n link,\n // link: ApolloLink.from(_.compact([\n // withToken,\n // resetTokenOnUnauthorized,\n // process.env.NODE_ENV === 'development' ? logErrors : null,\n // uploadLink\n // ])),\n resolvers: { Query: QueryResolver, Mutation: MutationResolver }\n})\n\nexport default client;\n","export default {\n}\n","import React from 'react'\nexport default React.createContext({})\n","import _ from 'lodash';\n\nconst API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n\nexport function request(\n endpoint,\n originConfig,\n customHeaders = { 'Content-Type': 'application/json' }\n) {\n const token = localStorage.getItem('token');\n let config = _.extend({}, originConfig);\n let url = API_URL;\n\n if (token) {\n config.headers = _.extend(\n { 'Authorization': `Bearer ${ token }` },\n customHeaders\n );\n } else {\n config.headers = customHeaders;\n }\n\n return fetch(url + endpoint, config)\n .then(response => {\n if (response.ok) {\n const contentType = response.headers.get('content-type');\n\n if (_.includes(contentType, 'xls') || _.includes(contentType, 'pdf')) {\n return response.blob();\n } else if (_.includes(contentType, 'json')) {\n return response.json();\n } else if (_.includes(contentType, 'text')) {\n return response.text();\n }\n\n return response;\n } else {\n return Promise.reject({\n status: response.status,\n statusText: response.statusText\n });\n }\n })\n .then(json => json)\n .catch(error => {\n /* eslint-disable */\n console.log(JSON.stringify(error, undefined, 2));\n /* eslint-disable */\n\n return Promise.reject(error);\n });\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n ruralPropertyCode\n activeBaseMap\n activeLayers\n layersOpacity\n activeModule\n activeModuleContent\n }\n }\n`;\n","import React from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport styles from './TabList.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n '&:hover': {\n color: `${ theme.palette.primary.main } !important`,\n }\n },\n activeItem: {\n color: `${ theme.palette.primary.main } !important`,\n boxShadow: '0 1px 2px rgba(180, 180, 180, 0.12), 0 1px 1px rgba(200, 200, 200, 0.24)',\n backgroundColor: 'white !important',\n '&:hover': {\n color: `${ theme.palette.primary.main } !important`,\n }\n },\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 14,\n color: 'white',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n}))(Tooltip);\n\nexport default function TabList({\n size = 'default',\n hasCustomItemSize = false,\n fullWidth = false,\n itemSizes = { xs: 6 },\n value,\n items = [],\n onChange = () => {}\n}) {\n const classes = useStyles();\n let customItemSizes = _.clone(itemSizes);\n\n return (\n <Grid container spacing={ 1 } className={ classnames(styles.navList, {\n [styles.navListSmall]: size === 'small',\n [styles.navListFullWidth]: fullWidth,\n }) }>\n { _.map(items, (item, index) => {\n const { tooltip } = item;\n\n if (hasCustomItemSize && _.size(items) === 3 && index === 2) {\n customItemSizes = { xs: 12 };\n }\n\n if (tooltip) {\n return (\n <Grid\n item\n { ...customItemSizes }\n key={ `tab-item-${ item.id }` }\n >\n <CustomTooltip title={ tooltip }>\n <li\n className={ classnames(styles.navListItem, classes.item, {\n [classes.activeItem]: item.id === value,\n [styles.disabledItem]: item.disabled,\n }) }\n id={ item.elementId }\n onClick={ onChange.bind(this, item.id) }\n >\n { item.label }\n </li>\n </CustomTooltip>\n </Grid>\n );\n } else {\n return (\n <Grid\n item\n { ...customItemSizes }\n key={ `tab-item-${ item.id }` }\n >\n <li\n className={ classnames(styles.navListItem, classes.item, {\n [classes.activeItem]: item.id === value,\n [styles.disabledItem]: item.disabled,\n }) }\n id={item.elementId}\n onClick={ onChange.bind(this, item.id) }\n >\n { item.label }\n </li>\n </Grid>\n );\n }\n }) }\n </Grid>\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport ClearIcon from '@material-ui/icons/Clear';\n\nimport styles from './ActiveOptionsList.module.scss';\n\nexport default function ActiveOptionsList({\n categoryKey,\n options,\n onClear = () => {},\n}) {\n if (_.isEmpty(options)) {\n return null;\n }\n\n return (\n <ul className={ styles.list }>\n { _.map(options, (option) => {\n const categoryText = categoryKey ? `${ _.get(option, categoryKey) } - ` : '';\n\n return (\n <li key={ `territory-item-${ option.id }` } className={ styles.listItem }>\n <span className={ styles.listItemText }>{ categoryText }{ option.label }</span>\n <IconButton\n className={ styles.listItemRemoveButton }\n onClick={ onClear.bind(this, option.id) }\n >\n <ClearIcon />\n </IconButton>\n </li>\n );\n }) }\n </ul>\n );\n}\n","import React, { Fragment, useState } from 'react';\nimport _ from 'lodash';\n\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport TextField from '@material-ui/core/TextField';\n\nimport styles from './CustomSelect.module.scss';\n\nexport default function CustomSelect({\n displayEmpty = false,\n isMultiple = false,\n isLoading = false,\n options = [],\n defaultOrder = false,\n value = '',\n dataKey,\n label,\n placeholder,\n onChange = () => {},\n}) {\n const isMobile = useMediaQuery('(max-width: 1024px)');\n const [inputValue, setInputValue] = useState('');\n\n const handleInputChange = (event) => {\n if (event) {\n setInputValue(event.target.value);\n }\n };\n\n const handleAutocompleteChange = (_event, option, reason) => {\n if (reason === 'select-option') {\n\n setInputValue('');\n onChange(dataKey, option.id);\n }\n };\n\n const getSelectedOption = (options, value) => {\n return _.find(options, { id: value }) || '';\n };\n\n const getSelectedOptionLabel = (options, value) => {\n return _.get(getSelectedOption(options, value), 'label') || '';\n };\n\n if (!isMobile) {\n let extraProps = {};\n\n if (isMultiple) {\n extraProps = {\n onInputChange: handleInputChange,\n inputValue: inputValue,\n };\n }\n\n return (\n <Autocomplete\n id={ `select-${ dataKey }` }\n blurOnSelect={ true }\n disableClearable={ true }\n loading={ isLoading }\n loadingText=\"Buscar...\"\n noOptionsText=\"Nenhuma opção disponÃvel\"\n options={ defaultOrder ? options : _.sortBy(options, 'label') }\n getOptionLabel={ (option) => option.label || '' }\n value={ getSelectedOption(options, value) }\n onChange={ handleAutocompleteChange.bind(this) }\n renderInput={ (params) => (\n <TextField\n { ...params }\n label={ label }\n size=\"small\"\n variant=\"outlined\"\n placeholder={ placeholder }\n />\n ) }\n { ...extraProps }\n />\n );\n } else {\n return (\n <Fragment>\n <InputLabel id={ `select-${ dataKey }` } className={ styles.inputLabel }>{ label }</InputLabel>\n <Select\n displayEmpty={ displayEmpty }\n labelId={ `select-${ dataKey }-label` }\n id={ `select-${ dataKey }` }\n value={ !_.isNil(value) ? value : '' }\n onChange={ onChange.bind(this, dataKey) }\n disabled={ isLoading }\n placeholder=\"Selecione uma opção\"\n >\n { _.map(_.sortBy(options, 'label'), (option) => {\n return (\n <MenuItem key={ `${ dataKey }-option-${ option.id }` } value={ option.id }>{ option.label }</MenuItem>\n );\n }) }\n </Select>\n </Fragment>\n );\n }\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_TERRITORIES_AUTOCOMPLETE = gql`\n query TerritoriesAutocomplete(\n $categoryId: Int!,\n $text: String!,\n ) {\n territoriesAutocomplete(\n categoryId: $categoryId,\n text: $text\n ) {\n id\n i18nStrings {\n language\n stringValue\n }\n territoryGeometry {\n boundingBox\n }\n }\n }\n`;\n","import TerritoryAutocomplete from './TerritoryAutocomplete';\n\nexport default TerritoryAutocomplete;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useApolloClient } from '@apollo/react-hooks';\nimport _ from 'lodash';\n\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\n\nimport {\n GET_TERRITORIES_AUTOCOMPLETE,\n} from './query';\n\nexport default function TerritoryAutocomplete({\n activeTerritories,\n categoryId,\n label,\n placeholder,\n territoryLabelFilter,\n onChange,\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const client = useApolloClient();\n const [currentValue, setCurrentValue] = useState(null);\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const setDataFromExternalTerritories = () => {\n const territory = _.first(activeTerritories);\n\n const option = {\n id: _.get(territory, 'id'),\n label: _.get(territory, 'label'),\n boundingBox: _.get(territory, 'territoryBBox'),\n };\n\n setCurrentValue(option);\n setOptions([option]);\n };\n\n useEffect(() => {\n if (_.size(activeTerritories) === 1 && _.isEmpty(options)) {\n setDataFromExternalTerritories();\n }\n }, []);\n\n useEffect(() => {\n if (_.isEmpty(activeTerritories)) {\n setOptions([]);\n setCurrentValue(null);\n } else if (!_.isEmpty(activeTerritories) && !currentValue) {\n setDataFromExternalTerritories();\n }\n }, [activeTerritories]);\n\n const searchOptions = async (query) => {\n setLoading(true);\n const { data } = await client.query({\n query: GET_TERRITORIES_AUTOCOMPLETE,\n variables: {\n categoryId,\n text: query\n }\n });\n setLoading(false);\n\n let newOptions = [];\n\n if (currentValue) {\n newOptions = [currentValue];\n }\n\n if (data) {\n const parsedOptions = _.map(_.get(data, 'territoriesAutocomplete'), (item) => {\n const id = _.get(item, 'id');\n const boundingBox = _.get(item, 'territoryGeometry.boundingBox');\n const stringList = _.get(item, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n\n return {\n id,\n label,\n boundingBox: [\n [_.get(boundingBox, 'yMin'), _.get(boundingBox, 'xMin')],\n [_.get(boundingBox, 'yMax'), _.get(boundingBox, 'xMax')],\n ]\n };\n });\n\n newOptions = [...newOptions, ...parsedOptions];\n }\n\n if (territoryLabelFilter) {\n newOptions = _.filter(newOptions, (option) => {\n return _.includes(_.kebabCase(option.label), _.kebabCase(territoryLabelFilter));\n });\n }\n\n setOptions(newOptions);\n };\n\n const debouncedSearchOptions = useMemo(\n () => _.debounce(searchOptions, 300),\n [currentValue, options, categoryId]\n );\n\n const handleChange = (_event, newValue) => {\n if (newValue) {\n setOptions(newValue ? [newValue, ...options] : options);\n setCurrentValue(newValue);\n onChange(newValue);\n } else {\n setOptions([]);\n setCurrentValue(null);\n }\n };\n\n const handleInputChange = (_event, newInputValue) => {\n if (newInputValue === '') {\n setOptions(currentValue ? [currentValue] : []);\n } else {\n debouncedSearchOptions(newInputValue);\n }\n };\n\n return (\n <Autocomplete\n filterOptions={ (x) => x }\n getOptionLabel={ (option) => option.label }\n options={ options }\n autoComplete\n loading={ loading }\n loadingText=\"Buscar...\"\n includeInputInList\n filterSelectedOptions\n value={ currentValue }\n noOptionsText=\"Buscar...\"\n onChange={ handleChange }\n onInputChange={ handleInputChange }\n renderInput={ (params) => (\n <TextField\n { ...params }\n label={ label }\n size=\"small\"\n variant=\"outlined\"\n placeholder={ placeholder }\n />\n ) }\n />\n );\n}\n","import { useIntl } from 'react-intl';\n\nexport default function useFormatMessage() {\n const { formatMessage } = useIntl();\n const format = (id, values = {}) => formatMessage({ id }, values);\n\n return format;\n}\n","import { useEffect, useRef } from 'react'\n\nexport default function usePrevious(value) {\n const ref = useRef()\n useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n","export default {\n 'default': {\n 'territorial': [\n 'atlantic_forest_limit',\n 'country',\n 'political_level_1',\n 'political_level_2',\n 'watersheds',\n ],\n 'land': [\n 'indigenous_territories',\n 'national_conservation_unit',\n 'international_conservation_unit',\n ]\n },\n 'simplified': {\n 'territorial': [\n 'country',\n 'biome',\n 'state',\n 'city',\n 'pnrh_level_1_basin',\n 'pnrh_level_2_basin',\n 'special_territories',\n 'biosphere_reserves',\n 'geoparks',\n ]\n },\n 'infrastructure': {\n 'territorial': [\n 'country',\n 'biome',\n 'state',\n 'city',\n 'pnrh_level_1_basin',\n 'pnrh_level_2_basin',\n ]\n },\n 'fire': {\n 'territorial': [\n 'country',\n 'biome',\n 'state',\n 'city',\n 'level_1_basin_pnhr',\n 'level_2_basin_pnhr',\n 'special_territories',\n 'biosphere_reserve',\n 'geoparks',\n ],\n 'land': [\n 'settlement',\n 'quilombo',\n 'indigenous_land_new',\n 'federal_conservation_units_integral_protection',\n 'federal_conservation_units_sustainable_use',\n 'state_conservation_units_integral_protection',\n 'state_conservation_units_sustainable_use',\n ]\n },\n 'soil': {\n 'territorial': [\n 'country',\n 'biome',\n 'state',\n 'city',\n 'level_1_basin_pnhr',\n 'level_2_basin_pnhr',\n ]\n },\n 'sentinel': {\n 'territorial': [\n 'country',\n 'biome',\n 'state',\n 'city',\n 'level_1_basin_pnhr',\n 'level_2_basin_pnhr',\n 'special_territories',\n ],\n 'land': [\n 'settlement',\n 'quilombo',\n 'indigenous_land_new',\n 'federal_conservation_units_integral_protection',\n 'federal_conservation_units_sustainable_use',\n 'state_conservation_units_integral_protection',\n 'state_conservation_units_sustainable_use',\n ]\n }\n};\n","import _ from 'lodash'\nimport localeMessages from '../locale_messages.yml'\n\nconst onLocaleFunctions = _.mapValues(localeMessages, (_messages, locale) => _.flow(\n _.property('i18NStringsByStringIdList'),\n _.partial(_.find, _, { language: locale }),\n _.property('stringValue')\n))\n\nconst onLocaleFunctionsCustom = _.mapValues(localeMessages, (_messages, locale) => _.flow(\n _.partial(_.find, _, { language: locale }),\n _.property('stringValue')\n))\n\nexport function onCurrentLocale(multiLanguageStringObject) {\n const locale = localStorage.getItem('locale') || 'es'\n return onLocaleFunctions[locale](multiLanguageStringObject)\n}\n\nexport function onCurrentLocaleCustom(multiLanguageStringObject) {\n const locale = localStorage.getItem('locale') || 'es'\n return onLocaleFunctionsCustom[locale](multiLanguageStringObject)\n}\n","import client from '../core/apollo-client';\n\nexport default function toast(content, severity = 'success') {\n client.writeData({\n data: {\n toast: {\n __typename: 'ToastState',\n content,\n severity,\n visible: true\n }\n }\n });\n}\n","import { ApolloClient } from 'apollo-client';\nimport { InMemoryCache } from 'apollo-cache-inmemory';\nimport { HttpLink } from 'apollo-link-http';\n\nconst cache = new InMemoryCache();\n\nconst link = new HttpLink({\n uri: '/api/v7.1/graphql'\n});\n\nconst client = new ApolloClient({\n cache,\n link,\n});\n\nexport default client;\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_CLIENT_DATA = gql`\n query {\n app @client {\n activeModule\n activeModuleContent\n showBeforeAndAfterMosaic\n baseParams {\n groupType\n territoryType\n territorySubtype\n territoryValueType\n crossingEnabled\n crossingTerritoryType\n territory\n territories {\n id\n label\n territoryTypeId\n territoryTypeLabel\n territoryBBox\n }\n crossingTerritories {\n id\n label\n territoryTypeId\n territoryTypeLabel\n territoryBBox\n }\n crossing\n buffer\n yearRange\n }\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query {\n geometryBuffersList {\n id\n bufferSizeInMeters\n\t\t\ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n\t\t\t}\n }\n\n territoryCategoriesList {\n id\n key\n parentId\n\t\t territoryLayerStyle\n i18nStrings {\n\t\t\t language\n\t\t\t stringValue\n }\n }\n }\n`;\n\nexport const GET_TERRITORIES_LIST = gql`\n query TerritoriesList($categoryId: Int!) {\n territoriesList(categoryId: $categoryId) {\n id\n i18nStrings {\n language\n stringValue\n }\n }\n }\n`;\n\nexport const GET_TERRITORY_BOUNDING_BOX = gql`\n query TerritoriesByIds($territoriesIds: [Int!]) {\n territoriesByIds(territoriesIds: $territoriesIds) {\n id\n territoryGeometry {\n boundingBox\n }\n }\n }\n`;\n\nexport const GET_TRANSITION_PERIOD_OPTIONS_DATA = gql`\n query {\n coverageTransitionPeriodOptionsList {\n id\n fromYear\n toYear\n groupBy\n orderAmongSiblings\n }\n }\n`;\n","import React, { Fragment, useEffect } from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport { useApolloClient, useLazyQuery, useQuery } from '@apollo/react-hooks';\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport InfoIcon from '@material-ui/icons/Info';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport Select from '@material-ui/core/Select';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ActiveOptionsList from '../ActiveOptionsList';\nimport CustomSelect from '../../../../components/CustomSelect';\n\nimport TerritoryAutocomplete from './components/TerritoryAutocomplete';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\nimport usePrevious from '../../../../../../hooks/usePrevious';\n\nimport mapModuleToTerritoryCategoryGroups from '../../../../../../data/mapGroupTypeToTerritoryCategoryKey';\n\nimport { onCurrentLocaleCustom } from '../../../../../../utils/locale';\nimport toast from '../../../../../../utils/toast';\n\nimport customClient from '../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from './BaseForm.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_BASE_CLIENT_DATA,\n GET_TERRITORIES_LIST,\n GET_TERRITORY_BOUNDING_BOX,\n GET_TRANSITION_PERIOD_OPTIONS_DATA,\n} from './query';\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 14,\n color: 'white',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n}))(Tooltip);\n\nconst TERRITORY_CATEGORIES_WITH_SIMPLE_SELECT = [\n 'country',\n 'biome',\n 'state',\n 'special_territories',\n 'biosphere_reserves',\n 'geoparks',\n];\n\nexport default function BaseForm({\n clientType,\n territoryCategoriesGroup = 'default',\n isTransition = false,\n hideGroupType = false,\n showBufferField = false,\n showMultipleTerritories = true,\n showCrossing = false,\n inline,\n onFlyTo = () => {},\n}) {\n const intl = useIntl()\n const locale = localStorage.getItem('locale') || 'es';\n const client = useApolloClient();\n const formatMessage = useFormatMessage();\n const { data: clientBaseData } = useQuery(GET_BASE_CLIENT_DATA);\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n client: clientType === 'custom' ? customClient : undefined\n });\n const { data: transitionBaseData, loading: loadingTransitionBaseData } = useQuery(GET_TRANSITION_PERIOD_OPTIONS_DATA, {\n skip: !isTransition,\n client: clientType === 'custom' ? customClient : undefined\n });\n const [\n loadTerritoriesListData,\n {\n data: territoriesListData,\n loading: loadingTerritoriesListData\n }\n ] = useLazyQuery(GET_TERRITORIES_LIST, {\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const loadTerritoryBoundingBox = (id) => {\n client.query({\n query: GET_TERRITORY_BOUNDING_BOX,\n variables: { territoriesIds: [id] }\n })\n .then((response) => {\n const bbox = _.get(response, 'data.territoriesByIds[0].territoryGeometry.boundingBox');\n\n if (bbox) {\n const parsedBBox = [\n [_.get(bbox, 'yMin'), _.get(bbox, 'xMin')],\n [_.get(bbox, 'yMax'), _.get(bbox, 'xMax')],\n ];\n\n onFlyTo(parsedBBox);\n }\n });\n };\n\n const territoryCategoriesList = _.get(baseData, 'territoryCategoriesList');\n const geometryBuffers = _.get(baseData, 'geometryBuffersList');\n const coverageTransitionPeriodOptionsList = _.get(transitionBaseData, 'coverageTransitionPeriodOptionsList');\n\n const territoriesList = _.get(territoriesListData, 'territoriesList');\n\n const activeModule = _.get(clientBaseData, 'app.activeModule');\n const activeModuleContent = _.get(clientBaseData, 'app.activeModuleContent');\n const baseParams = _.get(clientBaseData, 'app.baseParams');\n const showBeforeAndAfterMosaic = _.get(clientBaseData, 'app.showBeforeAndAfterMosaic');\n const groupType = _.get(baseParams, 'groupType') || 'territorial';\n const territoryType = _.get(baseParams, 'territoryType');\n const territoryValueType = _.get(baseParams, 'territoryValueType');\n const territoryIsMultiple = territoryValueType === 'multiple';\n const crossingEnabled = _.get(baseParams, 'crossingEnabled');\n const crossingTerritoryType = _.get(baseParams, 'crossingTerritoryType');\n const crossingTerritories = _.get(baseParams, 'crossingTerritories');\n const territories = _.get(baseParams, 'territories');\n const buffer = _.get(baseParams, 'buffer');\n const yearRange = _.get(baseParams, 'yearRange');\n\n const prevGroupType = usePrevious(groupType);\n\n const parsedTerritoryTypeOptions = _.map(territoryCategoriesList, (territoryType) => {\n const stringList = _.get(territoryType, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n\n return {\n id: territoryType.id,\n key: territoryType.key,\n label: _.get(selectedString, 'stringValue'),\n parentId: territoryType.parentId,\n };\n });\n const territoryCategoryGroups = mapModuleToTerritoryCategoryGroups[territoryCategoriesGroup];\n const territoryKeysByGroupType = _.get(territoryCategoryGroups, groupType);\n const filteredTerritoryTypeOptions = _(parsedTerritoryTypeOptions)\n .filter(({ key }) => _.includes(territoryKeysByGroupType, key))\n .sortBy(({ key }) => _.findIndex(territoryKeysByGroupType, (baseTerritoryKey) => baseTerritoryKey === key))\n .value();\n\n const territoryTypeOption = _.find(parsedTerritoryTypeOptions, { id: territoryType });\n const hasTerritorySimpleSelect = _.includes(TERRITORY_CATEGORIES_WITH_SIMPLE_SELECT, _.get(territoryTypeOption, 'key'));\n const crossingTerritoryTypeOptions = _.filter(parsedTerritoryTypeOptions, (option) => {\n return _.includes(option.key, 'crossing') && _.includes(option.key, _.get(territoryTypeOption, 'key'));\n });\n const crossingInputIsDisabled = _.isEmpty(crossingTerritoryTypeOptions) || territoryIsMultiple || _.isEmpty(territories);\n\n const parsedTerritoryOptions = _.map(territoriesList, (territory) => {\n const stringList = _.get(territory, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n // TODO: Remove bounding box property from territory data, since it is loaded and use only on map flyTo\n const boundingBox = {\n xMin: 0,\n xMax: 0,\n yMin: 0,\n yMax: 0,\n };\n // const boundingBox = _.get(territory, 'territoryGeometry.boundingBox');\n\n return {\n id: territory.id,\n label: _.get(selectedString, 'stringValue'),\n boundingBox: [\n [_.get(boundingBox, 'yMin'), _.get(boundingBox, 'xMin')],\n [_.get(boundingBox, 'yMax'), _.get(boundingBox, 'xMax')],\n ]\n };\n });\n\n const parsedCoverageTransitionPeriodOptionsList = _(coverageTransitionPeriodOptionsList)\n .map((item) => {\n const { fromYear, toYear, groupBy, orderAmongSiblings } = item;\n const parsedFromYear = Number(_.replace(fromYear, '_', ''));\n const parsedToYear = Number(_.replace(toYear, '_', ''));\n\n return {\n id: `${ parsedFromYear }-${ parsedToYear }`,\n label: `${ parsedFromYear } ${ formatMessage(`mapbiomas.header.base_form.year_range.separator`) } ${ parsedToYear }`,\n group: groupBy,\n orderAmongSiblings\n };\n })\n .orderBy(['group', 'orderAmongSiblings', 'id'])\n .groupBy('group')\n .value();\n\n const updateClientAppState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n ...params\n }\n }\n });\n };\n\n const updateClientAppBaseParamsState = (params) => {\n updateClientAppState({\n baseParams: {\n __typename: 'AppBaseParamsState',\n ...params\n }\n });\n };\n\n useEffect(() => {\n if (hideGroupType && groupType !== 'territorial') {\n updateClientAppBaseParamsState({\n groupType: 'territorial',\n territoryType: null,\n territorySubtype: null,\n territoryValueType: 'single',\n territory: null,\n territories: null,\n });\n }\n }, [hideGroupType, groupType]);\n\n useEffect(() => {\n if (territoryType) {\n loadTerritoriesListData({\n variables: {\n categoryId: territoryType\n }\n });\n }\n }, [territoryType]);\n\n useEffect(() => {\n if (territoryCategoriesList && !territoryType && groupType === 'territorial') {\n const initialTerritoryType = _.find(territoryCategoriesList, { key: 'atlantic_forest_limit' });\n const territoryTypeId = _.get(initialTerritoryType, 'id');\n const params = {\n territoryType: territoryTypeId,\n };\n\n if (_.isNumber(territoryTypeId)) {\n // TODO: Replace this query to another that loads only active territories data\n loadTerritoriesListData({\n variables: {\n categoryId: territoryTypeId\n }\n });\n\n updateClientAppBaseParamsState(params);\n }\n }\n }, [territoryCategoriesList, territoryType]);\n\n useEffect(() => {\n if (_.isEmpty(territories) && territoriesList && _.size(territoriesList) === 1) {\n const territoryTypeOption = _.find(filteredTerritoryTypeOptions, { id: territoryType });\n\n const firstTerritory = _.first(territoriesList);\n const firstTerritoryId = _.get(firstTerritory, 'id');\n const territoryOption = _.find(parsedTerritoryOptions, { id: firstTerritoryId });\n\n const activeTerritoryIds = _.map(territories, 'id');\n\n if (!_.includes(activeTerritoryIds, firstTerritoryId)) {\n const newTerritoryItem = {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: firstTerritoryId,\n label: _.get(territoryOption, 'label'),\n territoryTypeId: _.get(territoryTypeOption, 'id'),\n territoryTypeLabel: _.get(territoryTypeOption, 'label'),\n territoryBBox: _.get(territoryOption, 'boundingBox'),\n };\n\n updateClientAppBaseParamsState({\n territories: _.concat(_.isNil(territories) ? [] : territories, newTerritoryItem)\n });\n\n loadTerritoryBoundingBox(firstTerritoryId);\n }\n }\n }, [activeModule, territoriesList]);\n\n useEffect(() => {\n if (territoryType && !_.isEmpty(filteredTerritoryTypeOptions) && prevGroupType === groupType) {\n const hasTerritoryTypeData = !!_.find(filteredTerritoryTypeOptions, { id: territoryType });\n\n if (!hasTerritoryTypeData) {\n updateClientAppBaseParamsState({\n territoryType: null,\n territories: []\n });\n toast(formatMessage('mapbiomas.toast.unavailable_territory'), 'info');\n }\n }\n }, [filteredTerritoryTypeOptions, territoryType, prevGroupType, groupType]);\n\n useEffect(() => {\n updateClientAppBaseParamsState({\n crossingTerritoryType: null,\n crossingTerritories: null,\n });\n }, [territoryType, territories, crossingEnabled, crossingInputIsDisabled]);\n\n useEffect(() => {\n updateClientAppBaseParamsState({\n crossingTerritories: null,\n });\n }, [crossingTerritoryType]);\n\n useEffect(() => {\n if (crossingEnabled && territoryIsMultiple) {\n updateClientAppBaseParamsState({\n crossingEnabled: false,\n crossingTerritoryType: null,\n crossingTerritories: null,\n });\n }\n }, [territoryIsMultiple, crossingEnabled]);\n\n useEffect(() => {\n updateClientAppBaseParamsState({\n crossingEnabled: false,\n crossingTerritoryType: null,\n crossingTerritories: null,\n });\n }, [activeModuleContent]);\n\n const handleInputChange = (field, inputValue) => {\n const value = _.isObject(inputValue) ? inputValue.target.value : inputValue;\n let params = { [field]: value };\n\n if (field === 'territoryType' && !territoryIsMultiple) {\n params.territories = [];\n }\n\n // if (field === 'yearRange') {\n // const [minYear, maxYear] = _.split(inputValue, '-');\n\n // updateClientAppState({\n // timelineLimitsRange: [Number(minYear), Number(maxYear)]\n // });\n // }\n\n updateClientAppBaseParamsState(params);\n };\n\n const handleGroupTypeChange = (event) => {\n let params = {\n groupType: event.target.value,\n territoryType: null,\n };\n\n if (!territoryIsMultiple) {\n params.territories = [];\n }\n\n updateClientAppBaseParamsState(params);\n };\n\n const handleTerritoryChange = (_field, value) => {\n let baseOption = value;\n\n if (!_.get(baseOption, 'id')) {\n baseOption = _.find(parsedTerritoryOptions, { id: value });\n }\n\n const territoryTypeOption = _.find(filteredTerritoryTypeOptions, { id: territoryType });\n const activeTerritoryIds = _.map(territories, 'id');\n\n if (!_.includes(activeTerritoryIds, _.get(baseOption, 'id'))) {\n const newTerritoryItem = {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: _.get(baseOption, 'id'),\n label: _.get(baseOption, 'label'),\n territoryTypeId: _.get(territoryTypeOption, 'id'),\n territoryTypeLabel: _.get(territoryTypeOption, 'label'),\n territoryBBox: _.get(baseOption, 'boundingBox'),\n };\n\n let nextTerritories = _.concat(_.isNil(territories) ? [] : territories, newTerritoryItem);\n\n if (!territoryIsMultiple) {\n nextTerritories = [newTerritoryItem];\n }\n\n updateClientAppBaseParamsState({\n territories: nextTerritories\n });\n }\n\n if (baseOption) {\n loadTerritoryBoundingBox(_.get(baseOption, 'id'));\n }\n\n handleInputChange('territory', _.get(baseOption, 'id'));\n };\n\n const handleCrossingTerritoryChange = (data) => {\n const territoryTypeOption = _.find(crossingTerritoryTypeOptions, { id: crossingTerritoryType });\n const activeTerritoryIds = _.map(crossingTerritories, 'id');\n\n if (!_.includes(activeTerritoryIds, _.get(data, 'id'))) {\n const newTerritoryItem = {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: _.get(data, 'id'),\n label: _.get(data, 'label'),\n territoryTypeId: _.get(territoryTypeOption, 'id'),\n territoryTypeLabel: _.get(territoryTypeOption, 'label'),\n territoryBBox: _.get(data, 'boundingBox'),\n };\n\n updateClientAppBaseParamsState({\n crossingTerritories: [newTerritoryItem]\n });\n }\n\n if (data) {\n loadTerritoryBoundingBox(_.get(data, 'id'));\n }\n\n handleInputChange('territory', _.get(data, 'id'));\n };\n\n const handleRemoveTerritory = (id) => {\n let territoriesClone = _.cloneDeep(territories);\n territoriesClone = _.filter(territoriesClone, (territory) => territory.id !== id);\n\n updateClientAppBaseParamsState({ territories: territoriesClone });\n };\n\n const toggleTerritoryValueType = () => {\n if (territoryIsMultiple) {\n updateClientAppBaseParamsState({\n territoryValueType: 'single',\n territories: [],\n });\n } else {\n updateClientAppBaseParamsState({ territoryValueType: 'multiple' });\n }\n };\n\n const toggleCrossing = () => {\n updateClientAppBaseParamsState({\n crossingEnabled: !crossingEnabled,\n });\n };\n\n const toggleBeforeAndAfterMosaic = () => {\n updateClientAppState({\n showBeforeAndAfterMosaic: !showBeforeAndAfterMosaic,\n });\n };\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperInline]: inline\n }) }>\n <div id=\"land-cutouts\">\n { !hideGroupType && (\n <RadioGroup\n name=\"groupType\"\n value={ groupType || null }\n onChange={ handleGroupTypeChange }\n className={ styles.radioGroup }\n >\n <FormControlLabel\n classes={ {\n label: styles.radioLabel\n } }\n value=\"territorial\"\n control={ <Radio className={ styles.radioInput } size=\"small\" color=\"primary\" /> }\n label={ formatMessage(`mapbiomas.header.base_form.group_type.options.territorial`) }\n id=\"territorial-cut\"\n />\n <FormControlLabel\n classes={ {\n label: styles.radioLabel\n } }\n value=\"land\"\n control={ <Radio className={ styles.radioInput } size=\"small\" color=\"primary\" /> }\n label={ formatMessage(`mapbiomas.header.base_form.group_type.options.land`) }\n id=\"landowner-cut\"\n />\n </RadioGroup>\n ) }\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <CustomSelect\n defaultOrder\n options={ filteredTerritoryTypeOptions }\n value={ territoryType }\n dataKey=\"territoryType\"\n label={ formatMessage(`mapbiomas.header.base_form.territory_type.title.${ groupType }`) }\n onChange={ handleInputChange }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n />\n </FormControl>\n </div>\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n { !hasTerritorySimpleSelect &&\n <TerritoryAutocomplete\n activeTerritories={ territories }\n categoryId={ territoryType }\n label={ formatMessage(`mapbiomas.header.base_form.territory.title.${ groupType }`) }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n onChange={ handleTerritoryChange.bind(this, 'territory') }\n />\n }\n { hasTerritorySimpleSelect &&\n <CustomSelect\n isMultiple={ territoryIsMultiple }\n isLoading={ loadingBaseData || loadingTerritoriesListData }\n options={ parsedTerritoryOptions }\n value={ territoryIsMultiple ? null : _.get(_.first(territories), 'id') }\n dataKey=\"territory\"\n label={ formatMessage(`mapbiomas.header.base_form.territory.title.${ groupType }`) }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n onChange={ handleTerritoryChange }\n />\n }\n { territoryIsMultiple &&\n <ActiveOptionsList\n categoryKey=\"territoryTypeLabel\"\n options={ territories }\n onClear={ handleRemoveTerritory }\n />\n }\n </FormControl>\n { showMultipleTerritories &&\n <FormControlLabel\n id=\"multiple-territory-checkbox\"\n classes={ {\n root: styles.checkboxRoot,\n label: styles.checkboxLabel,\n } }\n control={\n <Checkbox\n checked={ territoryIsMultiple }\n onChange={ toggleTerritoryValueType }\n name=\"territoryValueType\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ (\n <span className={ styles.tooltipWrapper }>\n <span><FormattedMessage id=\"mapbiomas.header.base_form.territory_value_type.title\" /></span>\n <CustomTooltip title={ formatMessage('mapbiomas.header.base_form.territory_value_type.tooltip') }>\n <InfoIcon />\n </CustomTooltip>\n </span>\n ) }\n />\n }\n { false &&\n <FormControlLabel\n id=\"crossing-territory-checkbox\"\n classes={ {\n root: styles.checkboxRoot,\n label: styles.checkboxLabel,\n } }\n disabled={ _.isEmpty(crossingTerritoryTypeOptions) || territoryIsMultiple || _.isEmpty(territories) }\n control={\n <Checkbox\n checked={ crossingEnabled }\n onChange={ toggleCrossing }\n name=\"territoryValueType\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ (\n <span className={ styles.tooltipWrapper }>\n <span>Habilitar cruzamentos</span>\n {/* <span><FormattedMessage id=\"mapbiomas.header.base_form.territory_value_type.title\" /></span> */}\n {/* <CustomTooltip title=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\">\n <CustomTooltip title={ formatMessage('mapbiomas.header.base_form.territory_value_type.tooltip') }>\n <InfoIcon />\n </CustomTooltip> */}\n </span>\n ) }\n />\n }\n { crossingEnabled &&\n <Fragment>\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <CustomSelect\n defaultOrder\n options={ crossingTerritoryTypeOptions }\n value={ crossingTerritoryType }\n dataKey=\"crossingTerritoryType\"\n label=\"Tipo de cruzamento\"\n // label={ formatMessage(`mapbiomas.header.base_form.territory_type.title.${ groupType }`) }\n onChange={ handleInputChange }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n />\n </FormControl>\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <TerritoryAutocomplete\n activeTerritories={ crossingTerritories }\n categoryId={ crossingTerritoryType }\n label=\"Território de cruzamento\"\n // label={ formatMessage(`mapbiomas.header.base_form.territory.title.${ groupType }`) }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n territoryLabelFilter={ _.get(_.first(territories), 'label') }\n onChange={ handleCrossingTerritoryChange }\n />\n </FormControl>\n </Fragment>\n }\n { showBufferField &&\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <CustomSelect\n defaultOrder\n displayEmpty\n options={ _.concat([{\n id: 0,\n label: intl.formatMessage({id: 'mapbiomas.header.base_form.select_label.none'}),\n }], _.map(geometryBuffers, (gb) => ({\n id: _.get(gb, 'id'),\n label: onCurrentLocaleCustom(_.get(gb, 'i18nStrings'))\n }))) }\n value={ buffer }\n dataKey=\"buffer\"\n label=\"Buffer\"\n onChange={ handleInputChange }\n />\n </FormControl>\n }\n { isTransition &&\n <Fragment>\n <FormControl\n variant=\"outlined\"\n className={ styles.yearRangeFormControl }\n >\n <InputLabel id=\"select-yearRange\"><FormattedMessage id=\"mapbiomas.header.base_form.year_range.title\" /></InputLabel>\n <Select\n labelId=\"select-yearRange-label\"\n id=\"select-yearRange\"\n value={ !_.isNil(yearRange) ? yearRange : '' }\n onChange={ handleInputChange.bind(this, 'yearRange') }\n disabled={ loadingBaseData || loadingTransitionBaseData }\n placeholder={ formatMessage(`mapbiomas.header.base_form.year_range.placeholder`) }\n >\n { _.map(parsedCoverageTransitionPeriodOptionsList, (data, group) => {\n return [\n <ListSubheader className={ styles.groupList }>{ group }</ListSubheader>,\n _.map(data, (option) => {\n return (\n <MenuItem key={ `yearRange-option-${ option.id }` } value={ option.id }>{ option.label }</MenuItem>\n );\n })\n ];\n }) }\n </Select>\n </FormControl>\n <FormControlLabel\n classes={ {\n root: styles.checkboxControl,\n label: styles.checkboxLabel,\n } }\n control={\n <Checkbox\n checked={ !!showBeforeAndAfterMosaic }\n onChange={ toggleBeforeAndAfterMosaic }\n name=\"allClasses\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ formatMessage(`mapbiomas.header.base_form.show_before_and_after.title`) }\n />\n </Fragment>\n }\n </div>\n );\n}\n","import React, { Fragment } from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport styles from './ClassesControl.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n activeButton: {\n color: `${ theme.palette.primary.main } !important`,\n borderColor: `${ theme.palette.primary.main } !important`\n },\n link: {\n color: `${ theme.palette.primary.main } !important`,\n },\n}));\n\nexport default function ClassesControl({\n activeClassificationLevels,\n disabled = false,\n viewMode,\n levels = [],\n hideLevelsToggle = false,\n viewModeOptions,\n showDescription = false,\n onClassificationLevelToggle = () => {},\n onViewModeChange = () => {},\n titleKey,\n}) {\n const formatMessage = useFormatMessage();\n const classes = useStyles();\n\n const intl = useIntl()\n\n const renderLevelCheckboxesToggle = () => {\n return _.map(levels, (levelId) => {\n const isChecked = _.includes(activeClassificationLevels, levelId);\n\n return (\n <FormControlLabel\n key={ `level-control-${ levelId }` }\n disabled={ disabled }\n classes={{\n root: styles.checkboxRoot,\n label: styles.checkboxLabel,\n }}\n control={\n <Checkbox\n checked={ isChecked }\n onChange={ onClassificationLevelToggle.bind(this, levelId) }\n name={ `level-${ levelId }` }\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ `${ formatMessage('mapbiomas.header.classes_control.level.title') } ${ levelId }` }\n />\n );\n })\n };\n\n return (\n <div className={ styles.wrapper }>\n <h2 className={ styles.title }><FormattedMessage id={ titleKey || 'mapbiomas.header.classes_control.title' } /></h2>\n { showDescription && <p className={ styles.descriptionText }><FormattedMessage id=\"mapbiomas.header.classes_control.description.click\" /> <a href={intl.formatMessage({id: 'mapbiomas.header.classes_control.description.url'})} target=\"_blank\" className={ classes.link }><FormattedMessage id=\"mapbiomas.header.classes_control.description.here\" /></a> <FormattedMessage id=\"mapbiomas.header.classes_control.description.content\" /></p> }\n { viewModeOptions &&\n <Fragment>\n <span className={ styles.label }><FormattedMessage id=\"mapbiomas.header.classes_control.view_mode.title\" /></span>\n <div className={ styles.toggleButtons }>\n { _.map(viewModeOptions, (option, index) => {\n return (\n <button\n id={`legend-t-${index}`}\n className={ classnames(styles.actionButton, {\n [classes.activeButton]: viewMode === option.id,\n [styles.disabledButton]: disabled,\n }) }\n key={ `view-mode-${ option.id }` }\n onClick={ onViewModeChange.bind(this, option.id) }\n >\n <FormattedMessage id={ `mapbiomas.header.classes_control.view_mode.options.${ option.labelKey }` } />\n </button>\n );\n }) }\n </div>\n </Fragment>\n }\n { !hideLevelsToggle &&\n <div className={ styles.levelControls }>\n { renderLevelCheckboxesToggle() }\n </div>\n }\n </div>\n );\n}\n","import React from 'react';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport InfoIcon from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport styles from './InfoTooltip.module.scss';\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 14,\n color: 'white',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n}))(Tooltip);\n\nexport default function InfoTooltip({ text, placement = 'bottom' }) {\n return (\n <CustomTooltip\n title={ <div dangerouslySetInnerHTML={{ __html: text }} /> }\n placement={ placement }\n >\n <InfoIcon className={ styles.icon } />\n </CustomTooltip>\n );\n}\n","import React, { Fragment } from 'react'\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport {useIntl, FormattedMessage } from 'react-intl';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\n\nimport InfoTooltip from '../../../../../../../../components/InfoTooltip';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport styles from './ClassTreesControl.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n activeButton: {\n color: `${ theme.palette.primary.main } !important`,\n borderColor: `${ theme.palette.primary.main } !important`\n },\n link: {\n color: '#16a085 !important',\n },\n}));\n\nconst mapSubmoduleKeyToTooltip = {\n 'fire_annual': '<b>Total Queimado</b> - toda a área queimada sobre ambiente antrópico ou natural, para o ano selecionado.<br/><br/><b>Classe</b> - área queimada com a cor da classe de cobertura e uso do solo que foi queimada.',\n 'fire_monthly': 'Ãrea queimada com a cor da classe de cada um dos 12 meses do ano selecionado.',\n 'fire_accumulated': 'Toda a área queimada acumulada sobre ambiente antrópico ou natural, para o perÃodo selecionado.',\n 'fire_frequency': 'Ãrea queimada com a cor da classe de frequência de ocorrência de fogo, sendo 1 as áreas que queimaram uma única vez, 2 as classes que queimaram duas vezes, etc.',\n};\n\nexport default function ClassTreesControl({\n classTreeOptions,\n activeTreeOption,\n levels = [],\n activeLevels = [],\n submoduleKey,\n hideLevelsControl = false,\n onActiveTreeOptionChange,\n onLevelToggle = () => {},\n}) {\n const classes = useStyles()\n const formatMessage = useFormatMessage()\n const legendTooltip = mapSubmoduleKeyToTooltip[submoduleKey];\n\n const intl = useIntl()\n\n if (!activeTreeOption || !classTreeOptions) {\n return null\n }\n\n const handleOptionChange = (event) => {\n const value = _.get(event, 'target.value');\n const option = _.find(classTreeOptions, { value });\n onActiveTreeOptionChange(option);\n };\n\n const renderDefaultClassesPdfTable = () => (\n <p className={ styles.descriptionText }>\n <FormattedMessage id=\"mapbiomas.header.classes_control.description.click\" />\n {' '}\n <a href={intl.formatMessage({id: 'mapbiomas.header.classes_control.description.url'})} target=\"noopener noreferrer _blank\" className={ classes.link }>\n <FormattedMessage id=\"mapbiomas.header.classes_control.description.here\" />\n </a>\n {' '}\n <FormattedMessage id=\"mapbiomas.header.classes_control.description.content\" />\n </p>\n );\n\n const renderOptions = () => {\n if (_.size(classTreeOptions) <= 3) {\n return (\n <div className={ classnames(styles.toggleButtons, {\n [styles.toggleButtons2Items]: _.size(classTreeOptions) === 2,\n [styles.toggleButtons3Items]: _.size(classTreeOptions) === 3\n }) }>\n { _.map(classTreeOptions, (classTreeOption) => {\n return (\n <button\n className={ classnames(styles.actionButton, {\n [classes.activeButton]: activeTreeOption.value === classTreeOption.value\n }) }\n key={ `view-mode-${ classTreeOption.value }` }\n onClick={ _.partial(onActiveTreeOptionChange, classTreeOption) }\n >\n { classTreeOption.label }\n </button>\n )\n }) }\n </div>\n );\n } else {\n return (\n <FormControl variant=\"outlined\" className={ styles.formControlSelectInput }>\n <Select\n value={ activeTreeOption.value }\n onChange={ handleOptionChange.bind(this) }\n >\n { _.map(_.orderBy(classTreeOptions, 'label', 'asc'), (classTreeOption) => {\n return (\n <MenuItem value={ classTreeOption.value }>{ classTreeOption.label }</MenuItem>\n )\n }) }\n </Select>\n </FormControl>\n );\n }\n };\n\n const renderLevelsControl = () => {\n return _.map(levels, (levelId) => {\n const isChecked = _.includes(activeLevels, levelId);\n\n return (\n <FormControlLabel\n key={ `level-control-${ levelId }` }\n classes={{\n root: styles.checkboxRoot,\n label: styles.checkboxLabel,\n }}\n control={\n <Checkbox\n checked={ isChecked }\n onChange={ onLevelToggle.bind(this, levelId) }\n name={ `level-${ levelId }` }\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ `${ formatMessage('mapbiomas.header.classes_control.level.title') } ${ levelId }` }\n />\n );\n })\n };\n\n return (\n <div className={ styles.wrapper }>\n <h2 className={ styles.title }>\n <FormattedMessage id=\"mapbiomas.header.classes_control.title\" />\n { legendTooltip && <InfoTooltip text={ legendTooltip } placement=\"right-end\" /> }\n </h2>\n { activeTreeOption.value === 'default' && renderDefaultClassesPdfTable() }\n { classTreeOptions.length > 1 &&\n <Fragment>\n <span className={ styles.label }>\n <FormattedMessage id=\"mapbiomas.header.classes_control.view_mode.title\" />\n </span>\n { renderOptions() }\n </Fragment>\n }\n { !_.isEmpty(levels) && _.size(levels) > 1 && !hideLevelsControl && renderLevelsControl() }\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport classnames from 'classnames'\n\nimport CheckBoxIcon from '@material-ui/icons/CheckBox'\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'\nimport Collapse from '@material-ui/core/Collapse'\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess'\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\nimport IconButton from '@material-ui/core/IconButton'\nimport InfoIcon from '@material-ui/icons/Info'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport _ from 'lodash'\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage'\nimport { onCurrentLocaleCustom } from '../../../../../../../../utils/locale'\n\nimport styles from './ClassLegendList.module.scss'\n\nexport default function ClassLegendList({\n hideLegendIndex,\n classTreeNodes,\n activeClassTreeNodeIds,\n onClassTreeNodeToggle,\n onClassTreeNodeShowTooltip\n}) {\n const formatMessage = useFormatMessage()\n const [expandedNodeIds, setExpandedNodeIds] = useState([])\n const rootLevel = _.min(_.map(classTreeNodes, 'level'))\n\n const toggleTreeNode = (node) => {\n if (_.includes(expandedNodeIds, node.id)) {\n setExpandedNodeIds(_.without(expandedNodeIds, node.id))\n } else {\n setExpandedNodeIds([ ...expandedNodeIds, node.id ])\n }\n }\n\n const renderCheckbox = (node) => {\n const toggled = _.includes(activeClassTreeNodeIds, node.id)\n\n return (\n <IconButton\n className={ styles.classListItemCheckControl }\n style={{ color: node.color }}\n onClick={ _.partial(onClassTreeNodeToggle, node) }\n >\n { toggled ? <CheckBoxIcon /> : <CheckBoxOutlineBlankIcon /> }\n </IconButton>\n )\n }\n\n const renderExpandIcon = (node) => {\n const expanded = _.includes(expandedNodeIds, node.id)\n const icon = expanded ? <ExpandLessIcon /> : <ExpandMoreIcon />\n\n if (!_.isEmpty(_.get(node, 'childrenIds'))) {\n return (\n <IconButton\n className={ styles.classListItemContentControl }\n onClick={ _.partial(toggleTreeNode, node) }\n >\n { icon }\n </IconButton>\n )\n }\n }\n\n const renderTooltipIcon = (node) => {\n const tooltips = _.get(node, 'classTreeNode.classe.classesTooltips')\n if (!_.isEmpty(tooltips)) {\n return (\n <Tooltip title={ formatMessage('mapbiomas.header.classes_control.tooltip.info') }>\n <IconButton\n className={ styles.classListItemInfoControl }\n onClick={ _.partial(onClassTreeNodeShowTooltip, node) }\n >\n <InfoIcon />\n </IconButton>\n </Tooltip>\n )\n }\n }\n\n const renderClassTreeBranch = ({ parentId = null }) => {\n const parentNode = _.find(classTreeNodes, { id: parentId })\n const branchNodes = _.filter(classTreeNodes, { parentId })\n const currentLevelShiftedToZeroBased = (\n 0 - (rootLevel) + (_.get(parentNode, 'level', rootLevel))\n )\n\n return (\n <ul\n className={ classnames(styles.classNode, {\n [styles.classChildNode]: !_.isNil(parentId)\n }) }\n >\n { _.map(_.sortBy(branchNodes, _.flow(_.property('positionInTree'), _.last)), (node) => {\n const prettyIndexOfNodeInTree = _.join(node.positionInTree, '.')\n const indexText = hideLegendIndex ? '' : `${ prettyIndexOfNodeInTree }.`;\n\n return (\n <li\n key={ `class-item-level-${ node.id }` }\n className={ styles.classListItemBase }\n >\n <div className={ styles.classListItemHeader }>\n { renderCheckbox(node) }\n <span\n style={{ fontSize: 13 - currentLevelShiftedToZeroBased }}\n className={ styles.classListItemTitle }\n >\n {indexText} {onCurrentLocaleCustom(node.i18nStrings) }\n </span>\n { renderExpandIcon(node) }\n { renderTooltipIcon(node) }\n </div>\n <Collapse in={ _.includes(expandedNodeIds, node.id) }>\n <div>\n { renderClassTreeBranch({ parentId: node.id }) }\n </div>\n </Collapse>\n </li>\n )\n }) }\n </ul>\n )\n }\n\n return (\n <div>\n { renderClassTreeBranch({ parentId: null }) }\n </div>\n )\n}\n","import _ from 'lodash'\n\nfunction addStateTypenamesToObject(object, pathToWalkAddingTypenames) {\n _.reduce(\n _.toPath(pathToWalkAddingTypenames),\n (partialPath, pathComponent) => {\n partialPath += `.${pathComponent}`\n const typename = _.upperFirst(_.camelCase(partialPath))\n _.set(object, `${partialPath.slice(1)}.__typename`, `${typename}State`)\n return partialPath\n },\n ''\n )\n}\n\nexport function updateStateCache(client, basePath, ...keyValuePairs) {\n const [keys, values] = _.zip(...keyValuePairs)\n const zipObjectPaths = _.map(keys, (k) => `${basePath}.${k}`)\n let data = _.zipObjectDeep(zipObjectPaths, values)\n addStateTypenamesToObject(data, basePath)\n client.writeData({ data })\n}\n","import { gql } from 'graphql.macro'\n\nexport const GET_BASE_DATA = gql`\n query {\n app @client {\n baseParams {\n activeClassTreeOptionValue\n activeClassTreeNodeIds\n }\n }\n }\n`\n\nexport const GET_CLASSES_LEVELS_LIST = gql`\n query GetModuleClasses($moduleId: Int, $submoduleKey: String!) {\n submoduleByModuleIdAndKey(moduleId: $moduleId, key: $submoduleKey) {\n id\n key\n submoduleTrees {\n classTree {\n hasTogglesPerLevel\n key\n i18nStrings {\n\t\t\t\t\t\tlanguage\n\t\t\t\t\t\tstringValue\n }\n }\n }\n }\n }\n`\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n classTreeNode {\n classe {\n classesTooltips {\n id\n }\n }\n }\n }\n }\n }\n`;\n","import React, { useEffect } from 'react'\nimport _ from 'lodash'\nimport { useApolloClient, useQuery } from '@apollo/react-hooks'\nimport useMediaQuery from '@material-ui/core/useMediaQuery'\n\nimport ClassTreesControl from './components/ClassTreesControl'\nimport ClassLegendList from './components/ClassLegendList'\nimport { updateStateCache as uncurriedUpdateStateCache } from '../../../../../../utils/apollo'\n\nimport customClient from '../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport {\n GET_BASE_DATA,\n GET_CLASSES_LEVELS_LIST,\n GET_CLASS_TREE_DATA,\n} from './query'\n\nimport styles from './GenericClasses.module.scss'\n\nconst mapClassTreeKeyToDefaultLevels = {\n 'deforestation_annual_data': [1, 2],\n 'regeneration_annual_data': [1, 2],\n 'regeneration_accumulated_data': [1, 2],\n 'mining_annual': [1],\n}\n\nexport default function GenericClasses({\n clientType,\n hideLegendIndex,\n moduleId,\n submoduleKey,\n hideLevelsControl,\n}) {\n const isMobile = useMediaQuery('(max-width: 768px)')\n const locale = localStorage.getItem('locale') || 'es'\n const client = useApolloClient()\n const updateStateCache = _.partial(uncurriedUpdateStateCache, client)\n const { data: baseData } = useQuery(GET_BASE_DATA)\n const { data: classesTreesData } = useQuery(GET_CLASSES_LEVELS_LIST, {\n variables: {\n moduleId,\n submoduleKey\n },\n client: clientType === 'custom' ? customClient : undefined\n })\n\n const activeClassTreeNodeIds = _.get(baseData, 'app.baseParams.activeClassTreeNodeIds')\n\n const isOnInitialRenderingWithQueryParams = !_.isEmpty(activeClassTreeNodeIds) &&\n _.isUndefined(classesTreesData);\n\n const classTrees = _.get(classesTreesData, 'submoduleByModuleIdAndKey[0].submoduleTrees')\n const activeClassTreeOptionValue = _.get(baseData, 'app.baseParams.activeClassTreeOptionValue')\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey: activeClassTreeOptionValue\n },\n skip: !activeClassTreeOptionValue,\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi') || [];\n\n useEffect(() => {\n if (isOnInitialRenderingWithQueryParams) {\n return;\n }\n\n const activeTreeIsInCurrentSubmoduleTrees = _.some(\n classTrees,\n { classTree: { key: activeClassTreeOptionValue }}\n )\n if (baseData && classesTreesData && (!activeClassTreeOptionValue || !activeTreeIsInCurrentSubmoduleTrees)) {\n const firstTree = _.get(classTrees, '[0].classTree')\n const firstTreeKey = _.get(firstTree, 'key')\n\n updateStateCache('app.baseParams',\n [ 'activeClassTreeOptionValue', firstTreeKey ],\n [ 'activeSubmodule', submoduleKey ]\n )\n }\n }, [baseData, classesTreesData, activeClassTreeOptionValue, submoduleKey]);\n\n useEffect(() => {\n if (isOnInitialRenderingWithQueryParams) {\n return;\n }\n\n if (baseData && classTreeData && activeClassTreeOptionValue) {\n let nodeIds = _.map(classTreeLevelsList, 'id');\n\n if (mapClassTreeKeyToDefaultLevels[activeClassTreeOptionValue] || submoduleKey === 'infrastructure_main') {\n let defaultLevels = mapClassTreeKeyToDefaultLevels[activeClassTreeOptionValue];\n\n if (submoduleKey === 'infrastructure_main') {\n defaultLevels = [1, 2];\n }\n\n nodeIds = _.chain(classTreeLevelsList)\n .filter((node) => _.includes(defaultLevels, _.get(node, 'level')))\n .map('id')\n .value();\n } else if (submoduleKey === 'regeneration_annual') {\n nodeIds = _.chain(classTreeLevelsList)\n .filter(({ positionInTree }) => _.first(positionInTree) !== 1)\n .map('id')\n .value();\n }\n\n updateStateCache('app.baseParams',\n [ 'activeClassTreeNodeIds', nodeIds ],\n );\n }\n }, [classTreeData, activeClassTreeOptionValue]);\n\n if (!baseData || !classesTreesData) {\n return null\n }\n\n if (!activeClassTreeOptionValue) {\n return null\n }\n\n const activeClassTree = _.find(\n classTrees, { classTree: { key: activeClassTreeOptionValue } }\n )\n const nodesOfActiveClassTree = classTreeLevelsList;\n\n const levels = _.sortBy(_.uniq(_.map(nodesOfActiveClassTree, 'level')))\n const activeLevels = _.filter(levels, (levelId) => {\n const idsByLevel = _.map(_.filter(nodesOfActiveClassTree, { level: levelId }), 'id')\n const idsByLevelActive = _(idsByLevel)\n .filter((id) => _.includes(activeClassTreeNodeIds, id))\n .compact()\n .value();\n\n return _.size(idsByLevelActive) === _.size(idsByLevel);\n })\n\n const handleActiveTreeOptionChange = (classTreeOption) => {\n const classTreeKey = classTreeOption.value\n const activeClassTree = _.find(\n classTrees, { classTree: { key: classTreeKey } }\n )\n const nodesOfActiveClassTree = classTreeLevelsList;\n let nodeIds = _.map(nodesOfActiveClassTree, 'id')\n\n if (mapClassTreeKeyToDefaultLevels[classTreeKey]) {\n const defaultLevels = mapClassTreeKeyToDefaultLevels[classTreeKey]\n nodeIds = _.chain(nodesOfActiveClassTree)\n .filter((node) => _.includes(defaultLevels, _.get(node, 'level')))\n .map('id')\n .value()\n }\n\n updateStateCache(\n 'app.baseParams',\n [ 'activeClassTreeOptionValue', classTreeKey ],\n [ 'activeClassTreeNodeIds', nodeIds ]\n )\n }\n\n const handleClassTreeNodeToggle = (classTreeNode) => {\n const nodeId = _.get(classTreeNode, 'id')\n\n if (_.includes(activeClassTreeNodeIds, nodeId)) {\n updateStateCache('app.baseParams', [\n 'activeClassTreeNodeIds',\n _.without(activeClassTreeNodeIds, nodeId)\n ])\n } else {\n updateStateCache('app.baseParams', [\n 'activeClassTreeNodeIds',\n [ ...activeClassTreeNodeIds, nodeId ]\n ])\n }\n }\n\n const handleLevelToggle = (levelId) => {\n const idsByLevel = _.map(_.filter(nodesOfActiveClassTree, { level: levelId }), 'id')\n\n if (_.includes(activeLevels, levelId)) {\n let idsClone = _.clone(activeClassTreeNodeIds);\n idsClone = _.filter(idsClone, (id) => !_.includes(idsByLevel, id))\n\n updateStateCache('app.baseParams', [\n 'activeClassTreeNodeIds',\n idsClone\n ])\n } else {\n const nextIds = _.uniq(_.concat(activeClassTreeNodeIds, idsByLevel))\n\n updateStateCache('app.baseParams', [\n 'activeClassTreeNodeIds',\n nextIds\n ])\n }\n }\n\n const handleClassTreeNodeShowTooltip = (classTreeNode) => {\n if (isMobile) {\n updateStateCache('app',\n [ 'headerIsVisible', false ],\n [ 'showClassInfo', classTreeNode.id ]\n )\n } else {\n updateStateCache('app',\n [ 'showClassInfo', classTreeNode.id ]\n )\n }\n }\n\n const classesControlTreeOptions = _.map(classTrees, (classTree) => ({\n label: _.chain(classTree)\n .get('classTree.i18nStrings')\n .find({ language: locale })\n .get('stringValue')\n .value(),\n value: _.get(classTree, 'classTree.key')\n }))\n\n return (\n <div className={ styles.wrapper }>\n <ClassTreesControl\n classTreeOptions={ classesControlTreeOptions }\n activeTreeOption={\n _.find(\n classesControlTreeOptions,\n { value: activeClassTreeOptionValue }\n )\n }\n levels={ levels }\n activeLevels={ activeLevels }\n submoduleKey={ submoduleKey }\n onActiveTreeOptionChange={ handleActiveTreeOptionChange }\n onLevelToggle={ handleLevelToggle }\n hideLevelsControl={ hideLevelsControl }\n />\n <ClassLegendList\n hideLegendIndex={ hideLegendIndex }\n classTreeNodes={ nodesOfActiveClassTree }\n activeClassTreeNodeIds={ activeClassTreeNodeIds }\n onClassTreeNodeToggle={ handleClassTreeNodeToggle }\n onClassTreeNodeShowTooltip={ handleClassTreeNodeShowTooltip }\n />\n </div>\n )\n}\n","import { gql } from 'graphql.macro'\n\nexport const GET_COMPONENT_INITIALIZATION_DATA = gql`\n query {\n app @client {\n baseParams {\n activeObjectTreeNodeIds\n }\n }\n }\n`\n\nexport const GET_CLASSES_LEVELS_LIST = gql`\n query GetModuleClasses($moduleId: Int, $submoduleKey: String!) {\n submoduleByModuleIdAndKey(moduleId: $moduleId, key: $submoduleKey) {\n id\n key\n submoduleTrees {\n classTree {\n key\n i18nStrings {\n\t\t\t\t\t\tlanguage\n\t\t\t\t\t\tstringValue\n }\n mvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n i18nStrings {\n\t\t\t\t\t\t\tlanguage\n\t\t\t\t\t\t\tstringValue\n }\n classTreeNode {\n classe {\n classesTooltips {\n id\n }\n }\n }\n }\n }\n }\n }\n }\n`\n","import React, { useState } from 'react'\nimport classnames from 'classnames'\nimport _ from 'lodash'\nimport { useApolloClient, useQuery } from '@apollo/react-hooks'\nimport CheckBoxIcon from '@material-ui/icons/CheckBox'\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'\nimport Collapse from '@material-ui/core/Collapse'\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess'\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\nimport IconButton from '@material-ui/core/IconButton'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { FormattedMessage } from 'react-intl'\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\n\nimport { updateStateCache } from '../../../../../../utils/apollo'\nimport { onCurrentLocaleCustom } from '../../../../../../utils/locale'\n\nimport { GET_COMPONENT_INITIALIZATION_DATA } from './query'\n\nimport styles from './GeospatialObjects.module.scss'\n\nconst useStyles = makeStyles((theme) => ({\n link: {\n color: `#16a085 !important`,\n },\n}))\n\nconst MAP_POSITION_IN_TREE_TO_DOWNLOAD_URL = {\n '1.1.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_aerodromos.zip',\n '1.2.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_eclusa.zip',\n '1.2.2': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_estacao_transbordo_cargas.zip',\n '1.2.3': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_hidrovia.zip',\n '1.2.4': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_instalacao_portuaria_turismo.zip',\n '1.2.5': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_instalacao_portuaria_sob_registro.zip',\n '1.2.6': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_porto.zip',\n '1.2.7': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_terminal_uso_privado.zip',\n '1.3.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_aquaduto.zip',\n '1.3.2': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_gasoduto.zip',\n '1.3.3': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_mineroduto.zip',\n '1.3.4': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_oleoduto.zip',\n '1.3.5': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_poliduto.zip',\n '1.3.6': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_duto_nao_identificado.zip',\n '1.4.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_ferrovias.zip',\n '1.5.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_trechos_rodoviarios.zip',\n '1.5.2': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/transport/mapbiomas_infra_rodovias_federais.zip',\n '2.1.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_refinarias_petroleo.zip',\n '2.1.2': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_terminal_armazenamento_petroleo.zip',\n '2.1.3': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_estacao_compressao.zip',\n '2.1.4': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_ponto_entrega_gas.zip',\n '2.1.5': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_processamento_gas_natural.zip',\n '2.1.6': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_usina_biodiesel.zip',\n '2.1.7': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_usina_biogas.zip',\n '2.1.8': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_usina_etanol.zip',\n '2.1.9': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_base_glp.zip',\n '2.1.10': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_base_combustivel_liquido.zip',\n '2.2.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_subestacao.zip',\n '2.2.2': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_linhas_transmissao.zip',\n '2.2.3.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_usinas_eolicas.zip',\n '2.2.3.2': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_usinas_fotovoltaicas.zip',\n '2.2.3.3': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_usinas_termeletricas_biomassa.zip',\n '2.2.3.4': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_usinas_hidreletricas.zip',\n '2.2.3.5': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_pequena_central_hidreletrica.zip',\n '2.2.3.6': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_centrais_geradoras_hidreletricas.zip',\n '2.2.4.7': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_termeletricas_combustivel_fossil.zip',\n '2.2.4.8': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/energy/mapbiomas_infra_termonuclear.zip',\n '3.1': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/mining/mapbiomas_infra_mina_energeticos.zip',\n '3.2': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/mining/mapbiomas_infra_mina_metalicos.zip',\n '3.3': 'https://storage.googleapis.com/mapbiomas-public/brasil/collection-6/lclu/downloads/infrastructure/mining/mapbiomas_infra_mina_outros_produtos.zip'\n};\n\nexport default function GeospatialObjects({\n objectTree = []\n}) {\n const classes = useStyles()\n const apolloClient = useApolloClient()\n const { data, loading } = useQuery(GET_COMPONENT_INITIALIZATION_DATA)\n if (loading || !data) {\n return null\n }\n\n const appState = data.app\n const updateState = _.partial(updateStateCache, apolloClient)\n\n const [expandedNodeIds, setExpandedNodeIds] = useState([])\n const nodes = _.get(objectTree, 'geospatialObjectCategoryTreeLevels')\n\n const toggleTreeNode = (node) => {\n if (_.includes(expandedNodeIds, node.id)) {\n setExpandedNodeIds(_.without(expandedNodeIds, node.id))\n } else {\n setExpandedNodeIds([ ...expandedNodeIds, node.id ])\n }\n }\n\n const handleObjectTreeNodeToggle = (objectTreeNode) => {\n const nodeId = _.get(objectTreeNode, 'id')\n\n if (_.includes(appState.baseParams.activeObjectTreeNodeIds, nodeId)) {\n updateState('app.baseParams', [\n 'activeObjectTreeNodeIds',\n _.without(appState.baseParams.activeObjectTreeNodeIds, nodeId)\n ])\n } else {\n updateState('app.baseParams', [\n 'activeObjectTreeNodeIds',\n [ ...appState.baseParams.activeObjectTreeNodeIds, nodeId ]\n ])\n }\n }\n\n const renderExpandIcon = (node) => {\n const expanded = _.includes(expandedNodeIds, node.id)\n const icon = expanded ? <ExpandLessIcon /> : <ExpandMoreIcon />\n\n if (!_.isEmpty(_.get(node, 'childrenIds'))) {\n return (\n <IconButton\n className={ styles.classListItemContentControl }\n onClick={ _.partial(toggleTreeNode, node) }\n >\n { icon }\n </IconButton>\n )\n }\n }\n\n const renderCheckbox = (node) => {\n const toggled = _.includes(appState.baseParams.activeObjectTreeNodeIds, node.id)\n\n return (\n <IconButton\n className={ styles.classListItemCheckControl }\n style={{ color: node.color }}\n onClick={ _.partial(handleObjectTreeNodeToggle, node) }\n >\n { toggled ? <CheckBoxIcon /> : <CheckBoxOutlineBlankIcon /> }\n </IconButton>\n )\n }\n\n const renderClassTreeBranch = ({ parentId = null }) => {\n const branchNodes = _.filter(nodes, { parentId })\n\n return (\n <ul\n className={ classnames(styles.classNode, {\n [styles.classChildNode]: !_.isNil(parentId)\n }) }\n >\n { _.map(_.sortBy(branchNodes, _.flow(_.property('positionInTree'), _.last)), (node) => {\n const prettyIndexOfNodeInTree = _.join(node.positionInTree, '.');\n const downloadUrl = MAP_POSITION_IN_TREE_TO_DOWNLOAD_URL[prettyIndexOfNodeInTree];\n\n return (\n <li\n key={ `class-item-level-${ node.id }` }\n className={ styles.classListItemBase }\n >\n <div className={ styles.classListItemHeader }>\n { _.isEmpty(node.childrenIds) && renderCheckbox(node) }\n <span\n style={{ fontSize: 12 }}\n className={ styles.classListItemTitle }\n >\n <span>{ prettyIndexOfNodeInTree }. { onCurrentLocaleCustom(node.i18nStrings) }</span>\n { downloadUrl &&\n <IconButton\n className={ styles.actionBoxControlButton }\n href={ downloadUrl }\n target=\"_blank\"\n >\n <CloudDownloadIcon />\n </IconButton>\n }\n </span>\n { renderExpandIcon(node) }\n </div>\n <Collapse in={ _.includes(expandedNodeIds, node.id) }>\n <div>\n { renderClassTreeBranch({ parentId: node.id }) }\n </div>\n </Collapse>\n </li>\n )\n }) }\n </ul>\n )\n }\n\n return (\n <div className={ styles.wrapper }>\n <h2 className={ styles.title }>\n Categorias\n </h2>\n <p className={ styles.descriptionText }><FormattedMessage id=\"mapbiomas.header.infrastructure.description.click\" /> <a href=\"https://mapbiomas-br-site.s3.amazonaws.com/Gloss%C3%A1rio_-_Camadas_de_Infraestrutura_2020_-_PORT___ENG.xlsx\" target=\"_blank\" className={ classes.link }><FormattedMessage id=\"mapbiomas.header.infrastructure.description.here\" /></a> <FormattedMessage id=\"mapbiomas.header.infrastructure.description.content\" /></p>\n { renderClassTreeBranch({ parentId: null }) }\n </div>\n )\n}\n","import React, { useEffect } from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport { useApolloClient, useLazyQuery, useQuery } from '@apollo/react-hooks';\nimport { FormattedMessage } from 'react-intl';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport InfoIcon from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ActiveOptionsList from '../ActiveOptionsList';\n\nimport CustomSelect from '../../../../components/CustomSelect';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport mapGroupTypeToTerritoryCategoryKey from '../../../../../../data/mapGroupTypeToTerritoryCategoryKey';\n\nimport styles from './TransitionBaseForm.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_BASE_CLIENT_DATA,\n GET_TERRITORIES_LIST,\n} from './query';\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 14,\n color: 'white',\n backgroundColor: '#555',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n}))(Tooltip);\n\n// TODO: Remove this unused component\n\nexport default function TransitionBaseForm({\n inline,\n onFlyTo = () => {},\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const client = useApolloClient();\n const formatMessage = useFormatMessage();\n const { data: clientBaseData } = useQuery(GET_BASE_CLIENT_DATA);\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA);\n const [\n loadTerritoriesListData,\n {\n data: territoriesListData,\n loading: loadingTerritoriesListData\n }\n ] = useLazyQuery(GET_TERRITORIES_LIST);\n const baseParams = _.get(clientBaseData, 'app.baseParams');\n const showBeforeAndAfterMosaic = _.get(clientBaseData, 'app.showBeforeAndAfterMosaic');\n const territoryCategoriesList = _.get(baseData, 'territoryCategoriesList');\n const coverageTransitionPeriodOptionsList = _.get(baseData, 'coverageTransitionPeriodOptionsList');\n const territoriesList = _.get(territoriesListData, 'territoriesList');\n\n const groupType = _.get(baseParams, 'groupType') || 'territorial';\n const territoryType = _.get(baseParams, 'territoryType');\n const territoryValueType = _.get(baseParams, 'territoryValueType');\n const territoryIsMultiple = territoryValueType === 'multiple';\n const yearRange = _.get(baseParams, 'yearRange');\n const territories = _.get(baseParams, 'territories');\n\n const parsedTerritoryTypeOptions = _.map(territoryCategoriesList, (territoryType) => {\n const stringList = _.get(territoryType, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n\n return {\n id: territoryType.id,\n key: territoryType.key,\n label: _.get(selectedString, 'stringValue'),\n parentId: territoryType.parentId,\n };\n });\n const territoryKeysByGroupType = mapGroupTypeToTerritoryCategoryKey[groupType];\n const filteredTerritoryTypeOptions = _(parsedTerritoryTypeOptions)\n .filter(({ key }) => _.includes(territoryKeysByGroupType, key) && key !== 'indigenous_land')\n .sortBy(({ key }) => _.findIndex(territoryKeysByGroupType, (baseTerritoryKey) => baseTerritoryKey === key))\n .value();\n const parsedTerritoryOptions = _.map(territoriesList, (territory) => {\n const stringList = _.get(territory, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const boundingBox = _.get(territory, 'territoryGeometry.boundingBox');\n\n return {\n id: territory.id,\n label: _.get(selectedString, 'stringValue'),\n boundingBox: [\n [_.get(boundingBox, 'yMin'), _.get(boundingBox, 'xMin')],\n [_.get(boundingBox, 'yMax'), _.get(boundingBox, 'xMax')],\n ]\n };\n });\n\n const parsedCoverageTransitionPeriodOptionsList = _(coverageTransitionPeriodOptionsList)\n .map((item) => {\n const { fromYear, toYear, groupBy, orderAmongSiblings } = item;\n const parsedFromYear = Number(_.replace(fromYear, '_', ''));\n const parsedToYear = Number(_.replace(toYear, '_', ''));\n\n return {\n id: `${ parsedFromYear }-${ parsedToYear }`,\n label: `${ parsedFromYear } ${ formatMessage(`mapbiomas.header.base_form.year_range.separator`) } ${ parsedToYear }`,\n group: groupBy,\n orderAmongSiblings\n };\n })\n .orderBy(['group', 'orderAmongSiblings', 'id'])\n .groupBy('group')\n .value();\n\n const updateClientAppState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n ...params\n }\n }\n });\n };\n\n const updateClientAppBaseParamsState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n baseParams: {\n __typename: 'AppBaseParamsState',\n ...params\n }\n }\n }\n });\n };\n\n useEffect(() => {\n if (territoryType) {\n loadTerritoriesListData({\n variables: {\n categoryId: territoryType\n }\n });\n }\n }, [territoryType]);\n\n useEffect(() => {\n if (territoryCategoriesList) {\n const initialTerritoryType = _.find(territoryCategoriesList, { key: 'country' });\n const territoryTypeId = territoryType || _.get(initialTerritoryType, 'id');\n const params = {\n territoryType: territoryTypeId,\n };\n loadTerritoriesListData({\n variables: {\n categoryId: territoryTypeId\n }\n });\n\n updateClientAppBaseParamsState(params);\n }\n }, [territoryCategoriesList]);\n\n useEffect(() => {\n if (territoriesList && _.size(territoriesList) === 1) {\n const territoryTypeOption = _.find(filteredTerritoryTypeOptions, { id: territoryType });\n\n const firstTerritory = _.first(territoriesList);\n const firstTerritoryId = _.get(firstTerritory, 'id');\n const territoryOption = _.find(parsedTerritoryOptions, { id: firstTerritoryId });\n\n const activeTerritoryIds = _.map(territories, 'id');\n\n if (!_.includes(activeTerritoryIds, firstTerritoryId)) {\n const newTerritoryItem = {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: firstTerritoryId,\n label: _.get(territoryOption, 'label'),\n territoryTypeId: _.get(territoryTypeOption, 'id'),\n territoryTypeLabel: _.get(territoryTypeOption, 'label'),\n territoryBBox: _.get(territoryOption, 'boundingBox'),\n };\n\n updateClientAppBaseParamsState({\n territories: _.concat(_.isNil(territories) ? [] : territories, newTerritoryItem)\n });\n onFlyTo(_.get(territoryOption, 'boundingBox'));\n }\n }\n }, [territoriesList]);\n\n const handleEventChange = (field, inputValue) => {\n const value = _.isObject(inputValue) ? inputValue.target.value : inputValue;\n let params = { [field]: value };\n\n if (field === 'territoryType' && !territoryIsMultiple) {\n params.territories = [];\n }\n\n updateClientAppBaseParamsState(params);\n };\n\n const toggleBeforeAndAfterMosaic = () => {\n updateClientAppState({\n showBeforeAndAfterMosaic: !showBeforeAndAfterMosaic,\n });\n };\n\n const handleGroupTypeChange = (event) => {\n let params = {\n groupType: event.target.value,\n territoryType: null,\n };\n\n if (!territoryIsMultiple) {\n params.territories = [];\n }\n\n updateClientAppBaseParamsState(params);\n };\n\n const handleTerritoryChange = (field, value) => {\n const parsedValue = _.isObject(value) ? value.target.value : value;\n const baseOption = _.find(parsedTerritoryOptions, { id: parsedValue });\n const territoryTypeOption = _.find(filteredTerritoryTypeOptions, { id: territoryType });\n const activeTerritoryIds = _.map(territories, 'id');\n\n if (!_.includes(activeTerritoryIds, _.get(baseOption, 'id'))) {\n const newTerritoryItem = {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: _.get(baseOption, 'id'),\n label: _.get(baseOption, 'label'),\n territoryTypeId: _.get(territoryTypeOption, 'id'),\n territoryTypeLabel: _.get(territoryTypeOption, 'label'),\n territoryBBox: _.get(baseOption, 'boundingBox'),\n };\n\n let nextTerritories = _.concat(_.isNil(territories) ? [] : territories, newTerritoryItem);\n\n if (!territoryIsMultiple) {\n nextTerritories = [newTerritoryItem];\n }\n\n updateClientAppBaseParamsState({\n territories: nextTerritories\n });\n }\n\n if (baseOption) {\n onFlyTo(baseOption.boundingBox);\n }\n\n handleEventChange(field, value);\n };\n\n const handleRemoveTerritory = (id) => {\n let territoriesClone = _.cloneDeep(territories);\n territoriesClone = _.filter(territoriesClone, (territory) => territory.id !== id);\n\n updateClientAppBaseParamsState({ territories: territoriesClone });\n };\n\n const toggleTerritoryValueType = () => {\n if (territoryIsMultiple) {\n updateClientAppBaseParamsState({\n territoryValueType: 'single',\n territories: [],\n });\n } else {\n updateClientAppBaseParamsState({ territoryValueType: 'multiple' });\n }\n };\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperInline]: inline\n }) }>\n <RadioGroup\n name=\"groupType\"\n value={ groupType || null }\n onChange={ handleGroupTypeChange }\n className={ styles.radioGroup }\n >\n <FormControlLabel\n classes={ {\n label: styles.radioLabel\n } }\n value=\"territorial\"\n control={ <Radio className={ styles.radioInput } size=\"small\" color=\"primary\" /> }\n label={ formatMessage(`mapbiomas.header.base_form.group_type.options.territorial`) }\n />\n <FormControlLabel\n classes={ {\n label: styles.radioLabel\n } }\n value=\"land\"\n control={ <Radio className={ styles.radioInput } size=\"small\" color=\"primary\" /> }\n label={ formatMessage(`mapbiomas.header.base_form.group_type.options.land`) }\n />\n </RadioGroup>\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <CustomSelect\n defaultOrder\n options={ filteredTerritoryTypeOptions }\n value={ territoryType }\n dataKey=\"territoryType\"\n label={ formatMessage(`mapbiomas.header.base_form.territory_type.title.${ groupType }`) }\n onChange={ handleEventChange }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n />\n </FormControl>\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <CustomSelect\n isMultiple={ territoryIsMultiple }\n isLoading={ loadingBaseData || loadingTerritoriesListData }\n options={ parsedTerritoryOptions }\n value={ territoryIsMultiple ? null : _.get(_.first(territories), 'id') }\n dataKey=\"territory\"\n label={ formatMessage(`mapbiomas.header.base_form.territory.title.${ groupType }`) }\n onChange={ handleTerritoryChange }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n />\n { territoryIsMultiple &&\n <ActiveOptionsList\n categoryKey=\"territoryTypeLabel\"\n options={ territories }\n onClear={ handleRemoveTerritory }\n />\n }\n </FormControl>\n <FormControlLabel\n classes={ {\n root: styles.checkboxRoot,\n label: styles.checkboxLabel,\n } }\n control={\n <Checkbox\n checked={ territoryIsMultiple }\n onChange={ toggleTerritoryValueType }\n name=\"territoryValueType\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ (\n <span className={ styles.tooltipWrapper }>\n <span><FormattedMessage id=\"mapbiomas.header.base_form.territory_value_type.title\" /></span>\n <CustomTooltip title={ formatMessage('mapbiomas.header.base_form.territory_value_type.tooltip') }>\n <InfoIcon />\n </CustomTooltip>\n </span>\n ) }\n />\n <FormControl\n variant=\"outlined\"\n className={ styles.yearRangeFormControl }\n >\n <InputLabel id=\"select-yearRange\"><FormattedMessage id=\"mapbiomas.header.base_form.year_range.title\" /></InputLabel>\n <Select\n labelId=\"select-yearRange-label\"\n id=\"select-yearRange\"\n value={ !_.isNil(yearRange) ? yearRange : '' }\n onChange={ handleEventChange.bind(this, 'yearRange') }\n disabled={ loadingBaseData || loadingTerritoriesListData }\n placeholder={ formatMessage(`mapbiomas.header.base_form.year_range.placeholder`) }\n >\n { _.map(parsedCoverageTransitionPeriodOptionsList, (data, group) => {\n return [\n <ListSubheader className={styles.groupList}>{ group }</ListSubheader>,\n _.map(data, (option) => {\n return (\n <MenuItem key={ `yearRange-option-${ option.id }` } value={ option.id }>{ option.label }</MenuItem>\n );\n })\n ];\n }) }\n </Select>\n </FormControl>\n <FormControlLabel\n classes={ {\n root: styles.checkboxControl,\n label: styles.checkboxLabel,\n } }\n control={\n <Checkbox\n checked={ !!showBeforeAndAfterMosaic }\n onChange={ toggleBeforeAndAfterMosaic }\n name=\"allClasses\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ formatMessage(`mapbiomas.header.base_form.show_before_and_after.title`) }\n />\n </div>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n query {\n app @client {\n baseParams {\n activeTransitionsClassesListItems\n }\n }\n }\n`;\n","import React, { useEffect } from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\nimport { FormattedMessage } from 'react-intl';\n\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport styles from './TransitionClasses.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_TERRITORIES_LIST,\n} from './query';\n\n// non_vegetated_areas_to_vegetated,\n// increase_of_water_surface,\n// reduction_of_water_surface,\n// gain_of_forest_plantations,\n// vegetated_areas_to_non_vegetated\n\nconst transitionClassesData = [\n {\n id: 'non_vegetated_areas_to_vegetated',\n label: 'Transições de classes de agropecuária ou áreas não vegetadas para cobertura florestal ou áreas naturais não florestais.',\n color: '#06FF03'\n },\n {\n id: 'increase_of_water_surface',\n label: 'Transições que acrescem superfÃcie de água',\n color: '#3FACFF'\n },\n {\n id: 'reduction_of_water_surface',\n label: 'Transições que reduzem superfÃcie de água',\n color: '#FFA505'\n },\n {\n id: 'gain_of_forest_plantations',\n label: 'Transições com ganho de áreas de silvicultura.',\n color: '#8A2BE2'\n },\n {\n id: 'vegetated_areas_to_non_vegetated',\n label: 'Transições de cobertura florestal ou áreas naturais não florestais para agropecuária ou áreas não vegetadas.',\n color: '#FF0004'\n },\n {\n id: 'areas_without_transitions_or_unobserved',\n label: 'Ãreas sem transição ou transições que envolvem áreas não observadas ou transições entre classes dentro do nivel 1 de legenda.',\n color: '#AAA9A9'\n },\n];\n\nexport default function TransitionClasses({\n onItemsChange = () => {},\n}) {\n const formatMessage = useFormatMessage();\n const { data: baseData } = useQuery(GET_BASE_DATA);\n const activeItems = _.get(baseData, 'app.baseParams.activeTransitionsClassesListItems') || [];\n const allClassesActive = _.size(activeItems) === _.size(transitionClassesData);\n\n const handleItemsChange = (ids) => {\n onItemsChange({ activeTransitionsClassesListItems: ids });\n };\n\n useEffect(() => {\n if (_.isEmpty(activeItems)) {\n handleItemsChange(_.map(transitionClassesData, 'id'));\n }\n }, []);\n\n const itemIsActive = (id) => {\n return _.includes(activeItems, id);\n };\n\n const toggleActiveItem = (id) => {\n if (itemIsActive(id)) {\n let itemsClone = _.clone(activeItems);\n itemsClone = _.filter(itemsClone, (itemId) => itemId !== id);\n\n handleItemsChange(itemsClone);\n } else {\n handleItemsChange([\n ...activeItems,\n id\n ]);\n }\n };\n\n const toggleAllItems = () => {\n if (allClassesActive) {\n handleItemsChange([]);\n } else {\n handleItemsChange(_.map(transitionClassesData, 'id'));\n }\n };\n\n return (\n <div>\n <h2 className={ styles.title }><FormattedMessage id={ `mapbiomas.header.classes_control.title` } /></h2>\n <FormControlLabel\n classes={ {\n label: styles.checkboxLabel\n } }\n control={\n <Checkbox\n checked={ allClassesActive }\n onChange={ toggleAllItems }\n name=\"allClasses\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ formatMessage('mapbiomas.header.classes_control.toggle_all') }\n />\n <ul className={ styles.classList }>\n { _.map(transitionClassesData, (item) => {\n return (\n <li\n key={ `class-item-level-${ item.id }` }\n className={ styles.classListItemBase } \n >\n <div className={ styles.classListItemHeader }>\n <IconButton\n className={ styles.classListItemCheckControl }\n style={{ color: item.color }}\n onClick={ toggleActiveItem.bind(this, item.id) }\n >\n { itemIsActive(item.id) ? <CheckBoxIcon /> : <CheckBoxOutlineBlankIcon /> }\n </IconButton>\n <span className={ styles.classListItemTitle }>\n <FormattedMessage id={ `mapbiomas.header.transition_classes.${ item.id }` } />\n </span>\n </div>\n </li>\n );\n }) }\n </ul>\n </div>\n );\n}\n","import React, { useEffect } from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport { useApolloClient, useLazyQuery, useQuery } from '@apollo/react-hooks';\nimport { FormattedMessage } from 'react-intl';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport InfoIcon from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ActiveOptionsList from '../ActiveOptionsList';\n\nimport CustomSelect from '../../../../components/CustomSelect';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport mapGroupTypeToTerritoryCategoryKey from '../../../../../../data/mapGroupTypeToTerritoryCategoryKey';\n\nimport styles from './QualityBaseForm.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_TERRITORIES_LIST,\n} from './query';\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 14,\n color: 'white',\n backgroundColor: '#555',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n}))(Tooltip);\n\nconst defaultCrossingKeys = [\n 'indigenous_territories',\n 'settlement',\n 'quilombo',\n 'state_conservation_units_integral_protection',\n 'federal_conservation_units_integral_protection',\n 'state_conservation_units_sustainable_use',\n 'federal_conservation_units_sustainable_use',\n];\n\nexport default function QualityBaseForm({\n inline,\n onFlyTo = () => {},\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const client = useApolloClient();\n const formatMessage = useFormatMessage();\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA);\n const [\n loadTerritoriesListData,\n {\n data: territoriesListData,\n loading: loadingTerritoriesListData\n }\n ] = useLazyQuery(GET_TERRITORIES_LIST);\n const baseParams = _.get(baseData, 'app.baseParams');\n const territoryCategoriesList = _.get(baseData, 'territoryCategoriesList');\n const territoriesList = _.get(territoriesListData, 'territoriesList');\n\n const groupType = _.get(baseParams, 'groupType') || 'territorial';\n const territoryType = _.get(baseParams, 'territoryType');\n const territoryValueType = _.get(baseParams, 'territoryValueType');\n const territoryIsMultiple = territoryValueType === 'multiple';\n const territories = _.get(baseParams, 'territories');\n\n const parsedTerritoryTypeOptions = _.map(territoryCategoriesList, (territoryType) => {\n const stringList = _.get(territoryType, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n\n return {\n id: territoryType.id,\n key: territoryType.key,\n label: _.get(selectedString, 'stringValue'),\n parentId: territoryType.parentId,\n };\n });\n const territoryKeysByGroupType = mapGroupTypeToTerritoryCategoryKey[groupType];\n const filteredTerritoryTypeOptions = _(parsedTerritoryTypeOptions)\n .filter(({ key }) => _.includes(territoryKeysByGroupType, key))\n .sortBy(({ key }) => _.findIndex(territoryKeysByGroupType, (baseTerritoryKey) => baseTerritoryKey === key))\n .value();\n const parsedTerritoryOptions = _.map(territoriesList, (territory) => {\n const stringList = _.get(territory, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const boundingBox = _.get(territory, 'territoryGeometry.boundingBox');\n\n return {\n id: territory.id,\n label: _.get(selectedString, 'stringValue'),\n boundingBox: [\n [_.get(boundingBox, 'yMin'), _.get(boundingBox, 'xMin')],\n [_.get(boundingBox, 'yMax'), _.get(boundingBox, 'xMax')],\n ]\n };\n });\n\n const updateClientAppBaseParamsState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n baseParams: {\n __typename: 'AppBaseParamsState',\n ...params\n }\n }\n }\n });\n };\n\n useEffect(() => {\n if (territoryType) {\n loadTerritoriesListData({\n variables: {\n categoryId: territoryType\n }\n });\n }\n }, [territoryType]);\n\n useEffect(() => {\n if (territoryCategoriesList) {\n const initialTerritoryType = _.find(territoryCategoriesList, { key: 'atlantic_forest_limit' });\n const territoryTypeId = _.get(initialTerritoryType, 'id');\n const params = {\n territoryType: territoryTypeId,\n };\n loadTerritoriesListData({\n variables: {\n categoryId: territoryTypeId\n }\n });\n\n updateClientAppBaseParamsState(params);\n }\n }, [territoryCategoriesList]);\n\n useEffect(() => {\n if (territoriesList && _.size(territoriesList) === 1) {\n const territoryTypeOption = _.find(filteredTerritoryTypeOptions, { id: territoryType });\n\n const firstTerritory = _.first(territoriesList);\n const firstTerritoryId = _.get(firstTerritory, 'id');\n const territoryOption = _.find(parsedTerritoryOptions, { id: firstTerritoryId });\n\n const activeTerritoryIds = _.map(territories, 'id');\n\n if (!_.includes(activeTerritoryIds, firstTerritoryId)) {\n const newTerritoryItem = {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: firstTerritoryId,\n label: _.get(territoryOption, 'label'),\n territoryTypeId: _.get(territoryTypeOption, 'id'),\n territoryTypeLabel: _.get(territoryTypeOption, 'label'),\n territoryBBox: _.get(territoryOption, 'boundingBox'),\n };\n\n updateClientAppBaseParamsState({\n territories: _.concat(_.isNil(territories) ? [] : territories, newTerritoryItem)\n });\n onFlyTo(_.get(territoryOption, 'boundingBox'));\n }\n }\n }, [territoriesList]);\n\n const handleInputChange = (field, inputValue) => {\n const value = _.isObject(inputValue) ? inputValue.target.value : inputValue;\n let params = { [field]: value };\n\n if (field === 'territoryType' && !territoryIsMultiple) {\n params.territories = [];\n }\n\n updateClientAppBaseParamsState(params);\n };\n\n\n const handleGroupTypeChange = (event) => {\n let params = {\n groupType: event.target.value,\n territoryType: null,\n };\n\n if (!territoryIsMultiple) {\n params.territories = [];\n }\n\n updateClientAppBaseParamsState(params);\n };\n\n const handleTerritoryChange = (field, value) => {\n const parsedValue = _.isObject(value) ? value.target.value : value;\n const baseOption = _.find(parsedTerritoryOptions, { id: parsedValue });\n const territoryTypeOption = _.find(filteredTerritoryTypeOptions, { id: territoryType });\n const activeTerritoryIds = _.map(territories, 'id');\n\n if (!_.includes(activeTerritoryIds, _.get(baseOption, 'id'))) {\n const newTerritoryItem = {\n __typename: 'AppBaseParamsActiveTerritoryItemState',\n id: _.get(baseOption, 'id'),\n label: _.get(baseOption, 'label'),\n territoryTypeId: _.get(territoryTypeOption, 'id'),\n territoryTypeLabel: _.get(territoryTypeOption, 'label'),\n territoryBBox: _.get(baseOption, 'boundingBox'),\n };\n\n let nextTerritories = _.concat(_.isNil(territories) ? [] : territories, newTerritoryItem);\n\n if (!territoryIsMultiple) {\n nextTerritories = [newTerritoryItem];\n }\n\n updateClientAppBaseParamsState({\n territories: nextTerritories\n });\n }\n\n if (baseOption) {\n onFlyTo(baseOption.boundingBox);\n }\n\n handleInputChange(field, value);\n };\n\n const handleRemoveTerritory = (id) => {\n let territoriesClone = _.cloneDeep(territories);\n territoriesClone = _.filter(territoriesClone, (territory) => territory.id !== id);\n\n updateClientAppBaseParamsState({ territories: territoriesClone });\n };\n\n const toggleTerritoryValueType = () => {\n if (territoryIsMultiple) {\n updateClientAppBaseParamsState({\n territoryValueType: 'single',\n territories: [],\n });\n } else {\n updateClientAppBaseParamsState({ territoryValueType: 'multiple' });\n }\n };\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperInline]: inline\n }) }>\n <RadioGroup\n name=\"groupType\"\n value={ groupType || null }\n onChange={ handleGroupTypeChange }\n className={ styles.radioGroup }\n >\n <FormControlLabel\n classes={ {\n label: styles.radioLabel\n } }\n value=\"territorial\"\n control={ <Radio className={ styles.radioInput } size=\"small\" color=\"primary\" /> }\n label={ formatMessage(`mapbiomas.header.base_form.group_type.options.territorial`) }\n />\n <FormControlLabel\n classes={ {\n label: styles.radioLabel\n } }\n value=\"land\"\n control={ <Radio className={ styles.radioInput } size=\"small\" color=\"primary\" /> }\n label={ formatMessage(`mapbiomas.header.base_form.group_type.options.land`) }\n />\n </RadioGroup>\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <CustomSelect\n defaultOrder\n options={ filteredTerritoryTypeOptions }\n value={ territoryType }\n dataKey=\"territoryType\"\n label={ formatMessage(`mapbiomas.header.base_form.territory_type.title.${ groupType }`) }\n onChange={ handleInputChange }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n />\n </FormControl>\n <FormControl\n variant=\"outlined\"\n className={ styles.formControl }\n >\n <CustomSelect\n isMultiple={ territoryIsMultiple }\n isLoading={ loadingBaseData || loadingTerritoriesListData }\n options={ parsedTerritoryOptions }\n value={ territoryIsMultiple ? null : _.get(_.first(territories), 'id') }\n dataKey=\"territory\"\n label={ formatMessage(`mapbiomas.header.base_form.territory.title.${ groupType }`) }\n onChange={ handleTerritoryChange }\n placeholder={ formatMessage(`mapbiomas.header.base_form.territory.placeholder`) }\n />\n { territoryIsMultiple &&\n <ActiveOptionsList\n categoryKey=\"territoryTypeLabel\"\n options={ territories }\n onClear={ handleRemoveTerritory }\n />\n }\n </FormControl>\n <FormControlLabel\n classes={ {\n root: styles.checkboxRoot,\n label: styles.checkboxLabel,\n } }\n control={\n <Checkbox\n checked={ territoryIsMultiple }\n onChange={ toggleTerritoryValueType }\n name=\"territoryValueType\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ (\n <span className={ styles.tooltipWrapper }>\n <span><FormattedMessage id=\"mapbiomas.header.base_form.territory_value_type.title\" /></span>\n <CustomTooltip title={ formatMessage('mapbiomas.header.base_form.territory_value_type.tooltip') }>\n <InfoIcon />\n </CustomTooltip>\n </span>\n ) }\n />\n </div>\n );\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport styles from './QualityClasses.module.scss';\n\nexport default function QualityClasses() {\n return (\n <div>\n <h2 className={ styles.title }><FormattedMessage id={ `mapbiomas.header.classes_control.title` } /></h2>\n <p className={ styles.text }><FormattedMessage id={ `mapbiomas.header.quality_classes.description` } /></p>\n <div className={ styles.legendGradient } />\n </div>\n );\n}\n","import React from 'react';\n\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport Fade from '@material-ui/core/Fade';\nimport Popper from '@material-ui/core/Popper';\nimport Paper from '@material-ui/core/Paper';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport styles from './TranslateOptionsBox.module.scss';\n\nexport default function TranslateOptionsBox({\n anchorEl,\n onClose = () => {},\n}) {\n const formatMessage = useFormatMessage()\n const open = Boolean(anchorEl);\n\n const handleLocaleChange = (locale) => {\n localStorage.setItem('locale', locale);\n window.location.href = '/';\n };\n\n return (\n <Popper open={ open } anchorEl={ anchorEl } placement=\"right-end\" transition style={{ zIndex: 9999 }}>\n { ({ TransitionProps }) => (\n <Fade { ...TransitionProps } timeout={ 350 }>\n <ClickAwayListener onClickAway={ onClose }>\n <Paper className={ styles.boxWrapper }>\n <button className={ styles.button } onClick={ handleLocaleChange.bind(this, 'es') }>ES - { formatMessage('mapbiomas.header.locale_control.options.es') }</button>\n <button className={ styles.button } onClick={ handleLocaleChange.bind(this, 'en') }>EN - { formatMessage('mapbiomas.header.locale_control.options.en') }</button>\n <button className={ styles.button } onClick={ handleLocaleChange.bind(this, 'pt-BR') }>PT-BR - { formatMessage('mapbiomas.header.locale_control.options.pt_br') }</button>\n </Paper>\n </ClickAwayListener>\n </Fade>\n ) }\n </Popper>\n );\n}\n","// Source:\n// https://usehooks.com/useWindowSize/\n\nimport { useState, useEffect } from 'react';\n\n// Hook\nexport default function useWindowSize() {\n // Initialize state with undefined width/height so server and client renders match\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\n const [windowSize, setWindowSize] = useState({\n width: undefined,\n height: undefined,\n });\n useEffect(() => {\n // Handler to call on window resize\n function handleResize() {\n // Set window width/height to state\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }\n // Add event listener\n window.addEventListener('resize', handleResize);\n // Call handler right away so state gets updated with initial window size\n handleResize();\n // Remove event listener on cleanup\n return () => window.removeEventListener('resize', handleResize);\n }, []); // Empty array ensures that effect is only run on mount\n return windowSize;\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport useWindowSize from '../../../../../../hooks/useWindowSize';\n\nimport styles from './InstitutionalMenu.module.scss';\n\nconst LOGO_HEIGHT = 70;\nconst TITLE_HEIGHT = 50;\nconst FOOTER_HEIGHT = 30;\n\nexport default function InstitutionalMenu({\n iframeMode,\n}) {\n const windowSize = useWindowSize();\n const contentHeight = windowSize.height - (!iframeMode ? LOGO_HEIGHT : 0) - TITLE_HEIGHT - FOOTER_HEIGHT;\n\n return (\n <div>\n <h2 className={ styles.title }><FormattedMessage id=\"mapbiomas.sidebar.institutional.title\" /></h2>\n <div className={ styles.navListWrapper } style={{ height: contentHeight }}>\n <ul className={ styles.navList }>\n <li>\n <span><FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.about_mapbiomas.title\" /></span>\n <ul>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/proyecto/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.about_mapbiomas.links.project\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/productos/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.about_mapbiomas.links.products\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/quienes-somos/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.about_mapbiomas.links.about\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/equipo/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.about_mapbiomas.links.team\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/otras-iniciativas/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.about_mapbiomas.links.other_initiatives\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/terminos-de-uso/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.about_mapbiomas.links.terms_of_use\" />\n </a>\n </li>\n </ul>\n </li>\n <li>\n <span><FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.maps_and_data.title\" /></span>\n <ul>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/descargas/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.maps_and_data.links.downloads\" />\n </a>\n </li>\n {/* <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://pampa.mapbiomas.org/analisis-de-exactitud/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.accuracy_analysis\" />\n </a>\n </li> */}\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/terminos-de-uso/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.maps_and_data.links.terms_of_use\" />\n </a>\n </li>\n </ul>\n </li>\n <li>\n <span><FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.title\" /></span>\n <ul>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/vision-general-de-la-metodologia/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.methodology_overview\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/atbd-entienda-cada-etapa/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.atdb\" />\n </a>\n </li>\n {/* <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mapbiomas.org/metodo-desmatamento\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.deforestation_method\" />\n </a>\n </li> */}\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/herramientas/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.tools\" />\n </a>\n </li>\n {/* <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mapbiomas.org/google-earth-engine\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.google_earth\" />\n </a>\n </li> */}\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/glosario/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.glossary\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/terminos-de-uso/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.terms_of_use\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/preguntas-frecuentes/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.methodology.links.qa\" />\n </a>\n </li>\n </ul>\n </li>\n <li>\n <span><FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.title\" /></span>\n <ul>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/lanzamientos/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.releases\" />\n </a>\n </li>\n {/* <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://pampa.mapbiomas.org/noticias/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.news\" />\n </a>\n </li> */}\n {/* <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://pampa.mapbiomas.org/articulos-mapbiomas/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.articles\" />\n </a>\n </li> */}\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/en/videos-2/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.videos\" />\n </a>\n </li>\n {/*<li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mapbiomas.org/oportunidades\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.opportunities\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mapbiomas.org/premio\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.award\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mapbiomas.org/relatorios\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.reports\" />\n </a>\n </li>\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mapbiomas.org/nota-t\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.technical_notes\" />\n </a>\n </li> */}\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/terminos-de-uso/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.terms_of_use\" />\n </a>\n </li>\n {/* <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://forum.mapbiomas.ecostage.com.br/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.forum\" />\n </a>\n </li> */}\n <li>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bosqueatlantico.mapbiomas.org/contacto/\">\n <FormattedMessage id=\"mapbiomas.sidebar.institutional.menu.communication.links.contact\" />\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n );\n}\n","export function parseJwt(token) {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n\n return JSON.parse(jsonPayload);\n}\n\nexport default function parseToken(token, apiToken) {\n const parsedToken = parseJwt(token);\n\n localStorage.setItem('token', token);\n localStorage.setItem('tokenAPI', apiToken);\n localStorage.setItem('sub', parsedToken.sub);\n localStorage.setItem('name', parsedToken.name);\n localStorage.setItem('email', parsedToken.email);\n}\n","import React, { useState } from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\n\nimport parseToken from '../../../../../../../../helpers/parseToken';\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport toast from '../../../../../../../../utils/toast';\n\nimport styles from './LoginForm.module.scss';\n\nconst API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n\nconst initialState = {\n login: '',\n password: '',\n};\n\nexport default function LoginForm({\n onRecoveryPassword = () => {}\n}) {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const { login, password } = state;\n\n const payload = { email: login, password };\n\n fetch(`${ API_URL }/v1/tokens`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload)\n })\n .then((response) => response.json())\n .then((data) => {\n if (_.get(data, 'success')) {\n const id = _.get(data, 'id');\n const token = _.get(data, 'token');\n\n if (token) {\n localStorage.setItem('tokenId', id);\n parseToken(token);\n window.location.href = '/?login=true';\n }\n } else {\n toast(_.get(data, 'message') || formatMessage('mapbiomas.toast.error'), 'error');\n }\n })\n .catch((error) => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n return (\n <form className={ styles.formWrapper } onSubmit={ handleSubmit }>\n <FormControl fullWidth className={ styles.formControl }>\n <TextField\n required\n id=\"login-field\"\n label={ formatMessage('mapbiomas.user.login.fields.email') }\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.login }\n onChange={ handleTextChange.bind(this, 'login') }\n />\n </FormControl>\n <FormControl fullWidth className={ styles.formControl }>\n <TextField\n required\n id=\"password-field\"\n label={ formatMessage('mapbiomas.user.login.fields.password') }\n type=\"password\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.password }\n onChange={ handleTextChange.bind(this, 'password') }\n />\n </FormControl>\n <div className={ styles.actionsWrapper }>\n <a className={ styles.helperLink } onClick={ onRecoveryPassword }><FormattedMessage id=\"mapbiomas.user.login.forgot_password\" /></a>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n >\n <FormattedMessage id=\"mapbiomas.user.login.buttons.login\" />\n </Button>\n </div>\n </form>\n )\n}","import React, { useState } from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport toast from '../../../../../../../../utils/toast';\n\nimport styles from './SignUpForm.module.scss';\n\nconst initialState = {\n name: '',\n email: '',\n organization: '',\n motivation: '',\n};\n\nconst API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n\nexport default function SignUpForm({\n onCancel = () => {},\n}) {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n const [showInfo, setShowInfo] = useState(false);\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const {\n name,\n email,\n organization,\n motivation,\n } = state;\n\n const payload = {\n user: {\n email,\n name,\n organization,\n motivation,\n }\n };\n\n fetch(`${ API_URL }/v1/users`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload)\n })\n .then((response) => response.json())\n .then((data) => {\n if (_.get(data, 'user')) {\n setState(initialState);\n setShowInfo(true);\n toast(formatMessage('mapbiomas.toast.confirm_account'), 'success');\n } else {\n toast(_.get(data, 'email[0]') || formatMessage('mapbiomas.toast.error'), 'error');\n }\n })\n .catch((error) => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const renderInfo = () => {\n return (\n <p className={ styles.successText }><FormattedMessage id=\"sign_up_page.form.success\" /></p>\n );\n }\n\n const renderForm = () => {\n return (\n <form onSubmit={ handleSubmit }>\n <FormControl className={ styles.formControl }>\n <TextField\n id=\"name-field\"\n label={ formatMessage('sign_up_page.form.fields.name') }\n variant=\"outlined\"\n type=\"text\"\n className={ styles.filterFormInput }\n value={ state.name }\n onChange={ handleTextChange.bind(this, 'name') }\n required\n />\n </FormControl>\n <FormControl className={ styles.formControl }>\n <TextField\n id=\"organization-field\"\n label={ formatMessage('sign_up_page.form.fields.organization') }\n variant=\"outlined\"\n type=\"text\"\n className={ styles.filterFormInput }\n value={ state.organization }\n onChange={ handleTextChange.bind(this, 'organization') }\n required\n />\n </FormControl>\n <FormControl className={ styles.formControl }>\n <TextField\n multiline\n rows={ 3 }\n id=\"motivation-field\"\n label={ formatMessage('sign_up_page.form.fields.motivation') }\n variant=\"outlined\"\n type=\"text\"\n className={ styles.filterFormInput }\n value={ state.motivation }\n onChange={ handleTextChange.bind(this, 'motivation') }\n required\n />\n </FormControl>\n <FormControl className={ styles.formControl }>\n <TextField\n id=\"email-field\"\n label={ formatMessage('sign_up_page.form.fields.email') }\n variant=\"outlined\"\n type=\"email\"\n className={ styles.filterFormInput }\n value={ state.email }\n onChange={ handleTextChange.bind(this, 'email') }\n required\n />\n </FormControl>\n <div className={ styles.actionsWrapper }>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n onClick={ onCancel }\n >\n Cancelar\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n >\n <FormattedMessage id=\"sign_up_page.form.buttons.register\" />\n </Button>\n </div>\n </form>\n );\n }\n\n return (\n <div className={ styles.formWrapper }>\n <h3 className={ styles.title }><FormattedMessage id=\"sign_up_page.title\" /></h3>\n { showInfo && renderInfo() }\n { !showInfo && renderForm() }\n </div>\n )\n}","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport TextField from '@material-ui/core/TextField';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport styles from './MapForm.module.scss';\n\nconst initialState = {\n title: '',\n description: '',\n updateSnapshot: false,\n};\n\nexport default function MapForm({\n editMode = false,\n data,\n onCancel = () => {},\n onSubmit = () => {},\n}) {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n if (data) {\n setState({\n title: _.get(data, 'name'),\n description: _.get(data, 'description'),\n });\n }\n }, [data])\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleUpdateSnapshotToggle = () => {\n handleStateChange('updateSnapshot', !state.updateSnapshot);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n setState(initialState);\n onSubmit(state);\n };\n\n const baseTranslationKey = !editMode ? 'new_map' : 'edit_map';\n\n return (\n <form className={ styles.formWrapper } onSubmit={ handleSubmit }>\n { !editMode && <h3 className={ styles.title }><FormattedMessage id=\"mapbiomas.user.my_maps.forms.new_map.title\" /></h3> }\n <FormControl fullWidth className={ styles.formControl }>\n <TextField\n required\n id=\"title-field\"\n label={ formatMessage('mapbiomas.user.my_maps.forms.new_map.fields.title') }\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.title }\n onChange={ handleTextChange.bind(this, 'title') }\n />\n </FormControl>\n <FormControl fullWidth className={ styles.formControl }>\n <TextField\n id=\"description-field\"\n label={ formatMessage('mapbiomas.user.my_maps.forms.new_map.fields.description') }\n variant=\"outlined\"\n size=\"small\"\n multiline\n rows={ 2 }\n value={ state.description }\n onChange={ handleTextChange.bind(this, 'description') }\n />\n </FormControl>\n { editMode &&\n <FormControlLabel\n classes={ {\n root: styles.checkboxRoot,\n label: styles.checkboxLabel,\n } }\n control={\n <Checkbox\n checked={ state.updateSnapshot }\n onChange={ handleUpdateSnapshotToggle }\n name=\"updateSnapshot\"\n color=\"primary\"\n size=\"small\"\n />\n }\n label={ formatMessage('mapbiomas.user.my_maps.forms.edit_map.fields.update_snapshot') }\n />\n }\n <div className={ styles.actionsWrapper }>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n onClick={ onCancel }\n >\n <FormattedMessage id=\"mapbiomas.user.my_maps.forms.new_map.buttons.cancel\" />\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n >\n <FormattedMessage id={ `mapbiomas.user.my_maps.forms.${ baseTranslationKey }.buttons.confirm` } />\n </Button>\n </div>\n </form>\n )\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport CheckCircleOutlineIcon from '@material-ui/icons/CheckCircleOutline';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport styles from './MapList.module.scss';\n\nexport default function MapList({\n data = [],\n onViewMap = () => {},\n onEditMap = () => {},\n onDeleteMap = () => {},\n}) {\n const formatMessage = useFormatMessage();\n\n const handleDelete = (id) => {\n if (confirm(formatMessage('mapbiomas.user.my_maps.list.actions.delete_confirmation'))) {\n onDeleteMap(id);\n }\n };\n\n if (_.isEmpty(data)) {\n return null;\n }\n\n return (\n <ul className={ styles.mapList }>\n { _.map(data, (item) => {\n return (\n <li key={ `map-item-${ item.id }` } className={ styles.mapItem }>\n <div className={ styles.mapItemTextContent }>\n <h4 className={ styles.mapItemTitle }>{ item.name }</h4>\n { item.description && <p className={ styles.mapItemDescription }>{ item.description }</p> }\n </div>\n <div className={ styles.mapItemActionsContent }>\n <Tooltip title={ formatMessage('mapbiomas.user.my_maps.list.actions.show') }>\n <IconButton\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n className={ styles.mapItemViewButton }\n onClick={ onViewMap.bind(this, item.id) }\n >\n <CheckCircleOutlineIcon />\n </IconButton>\n </Tooltip>\n <Tooltip title={ formatMessage('mapbiomas.user.my_maps.list.actions.edit') }>\n <IconButton\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n className={ classnames(styles.mapItemViewButton, styles.mapItemViewButtonSecondary) }\n onClick={ onEditMap.bind(this, item.id) }\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n <Tooltip title={ formatMessage('mapbiomas.user.my_maps.list.actions.delete') }>\n <IconButton\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n className={ classnames(styles.mapItemViewButton, styles.mapItemViewButtonSecondary) }\n onClick={ handleDelete.bind(this, item.id) }\n >\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n </div>\n </li>\n );\n }) }\n </ul>\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport MapForm from '../MapForm';\n\nimport styles from './MapEditDialog.module.scss';\n\nexport default function MapEditDialog({\n isOpen,\n data,\n onClose = () => {},\n onSubmit = () => {},\n}) {\n return (\n <Dialog\n open={ isOpen }\n onClose={ onClose }\n classes={ {\n paper: styles.dialogWrapper\n } }\n >\n <header className={ styles.header }>\n <h2 className={ styles.title }>\n <FormattedMessage id=\"mapbiomas.user.my_maps.forms.edit_map.title\" />\n </h2>\n <IconButton className={ styles.closeButton } onClick={ onClose }>\n <CloseIcon />\n </IconButton>\n </header>\n <div className={ styles.content }>\n <MapForm\n editMode\n data={ data }\n onCancel={ onClose }\n onSubmit={ onSubmit }\n />\n </div>\n </Dialog>\n );\n}\n","import React, { useState } from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport toast from '../../../../../../../../utils/toast';\n\nimport styles from './PasswordRecoveryForm.module.scss';\n\nconst API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n\nconst initialState = {\n email: '',\n};\n\nexport default function PasswordRecoveryForm({\n onCancel = () => {},\n}) {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n const [showInfo, setShowInfo] = useState(false);\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const {\n email,\n } = state;\n\n const payload = { email };\n\n fetch(`${ API_URL }/v1/users/send_recovery_instructions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload)\n })\n .then((response) => response.json())\n .then((data) => {\n if (_.get(data, 'success')) {\n handleStateChange('email', '');\n toast(formatMessage('mapbiomas.toast.email_sent'), 'success');\n } else {\n toast(_.get(data, 'errors[0]') || formatMessage('mapbiomas.toast.error'), 'error');\n }\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const renderInfo = () => {\n return (\n <p className={ styles.successText }><FormattedMessage id=\"mapbiomas.user.password_recovery.instructions\" /></p>\n );\n }\n\n const renderForm = () => {\n return (\n <form onSubmit={ handleSubmit }>\n <FormControl className={ styles.formControl }>\n <TextField\n id=\"email-field\"\n label={ formatMessage('mapbiomas.user.password_recovery.fields.email') }\n variant=\"outlined\"\n type=\"email\"\n className={ styles.filterFormInput }\n value={ state.email }\n onChange={ handleTextChange.bind(this, 'email') }\n required\n />\n </FormControl>\n <div className={ styles.actionsWrapper }>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n onClick={ onCancel }\n >\n <FormattedMessage id=\"mapbiomas.user.password_recovery.buttons.cancel\" />\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n >\n <FormattedMessage id=\"mapbiomas.user.password_recovery.buttons.confirm\" />\n </Button>\n </div>\n </form>\n );\n }\n\n return (\n <div className={ styles.formWrapper }>\n <h3 className={ styles.title }>\n <FormattedMessage id=\"mapbiomas.user.password_recovery.title\" />\n </h3>\n { showInfo && renderInfo() }\n { !showInfo && renderForm() }\n </div>\n )\n}","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n activeBaseMap\n activeLayers\n layersOpacity\n activeModule\n activeModuleContent\n activeYear\n headerIsVisible\n mapFlyTo\n mapPointInfo {\n latlng\n parsedBBox\n }\n showClassInfo\n showDashboardInfo\n showBeforeAndAfterMosaic\n baseParams {\n groupType\n territoryType\n territorySubtype\n territory\n territories {\n id\n label\n territoryTypeId\n territoryTypeLabel\n territoryBBox\n }\n crossing\n classesViewMode\n activeClassesLevelsListItems\n activeTransitionsClassesListItems\n activePastureQualityQualityClassesListItems\n yearRange\n }\n }\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useApolloClient, useQuery } from '@apollo/react-hooks';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\nimport * as turf from '@turf/turf';\n\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport AddIcon from '@material-ui/icons/Add';\nimport Button from '@material-ui/core/Button';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport IconButton from '@material-ui/core/IconButton';\nimport PersonIcon from '@material-ui/icons/Person';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport LoginForm from './components/LoginForm';\nimport SignUpForm from './components/SignUpForm';\nimport MapForm from './components/MapForm';\nimport MapList from './components/MapList';\nimport MapEditDialog from './components/MapEditDialog';\nimport PasswordRecoveryForm from './components/PasswordRecoveryForm';\n\nimport { request } from '../../../../../../utils/api';\nimport toast from '../../../../../../utils/toast';\n\nimport resetToken from '../../../../../../helpers/resetToken';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\nimport useWindowSize from '../../../../../../hooks/useWindowSize';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './AccountMenu.module.scss';\n\nconst LOGO_HEIGHT = 70;\nconst TITLE_HEIGHT = 50;\nconst FOOTER_HEIGHT = 30;\n\nexport default function AccountMenu({\n iframeMode,\n myMapsMode,\n newMapMode,\n onHideMenu = () => {}\n}) {\n const windowSize = useWindowSize();\n const contentHeight = windowSize.height - (!iframeMode ? LOGO_HEIGHT : 0) - TITLE_HEIGHT - FOOTER_HEIGHT;\n\n const token = localStorage.getItem('token');\n const client = useApolloClient();\n const isMobile = useMediaQuery('(max-width: 768px)');\n const formatMessage = useFormatMessage();\n const [showForm, setShowForm] = useState(false);\n const [showSignUp, setShowSignUp] = useState(false);\n const [currentMapData, setCurrentMapData] = useState(null);\n const [showPasswordRecovery, setShowPasswordRecovery] = useState(false);\n const [maps, setMaps] = useState([]);\n const { data: baseData } = useQuery(GET_BASE_DATA);\n\n const updateClientAppState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n ...params\n }\n }\n });\n };\n\n useEffect(() => {\n if (token) {\n request('/v1/my_maps')\n .then((data) => {\n setMaps(data);\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n }\n }, []);\n\n useEffect(() => {\n if (newMapMode) {\n setShowForm(true);\n }\n }, [newMapMode]);\n\n const toggleMapForm = () => {\n setShowForm(!showForm);\n };\n\n const toggleSignUpForm = () => {\n setShowSignUp(!showSignUp);\n };\n\n const togglePasswordRecoveryForm = () => {\n setShowPasswordRecovery(!showPasswordRecovery);\n };\n\n const handleExit = () => {\n const id = localStorage.getItem('tokenId');\n\n request(`/v1/tokens/${ id }`, {\n method: 'DELETE'\n })\n .then((data) => {\n if (_.get(data, 'success')) {\n resetToken();\n window.location.href = '/';\n }\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const handleMapSubmit = (params) => {\n const appData = _.get(baseData, 'app');\n\n let payload = {\n name: params.title,\n description: params.description,\n snapshot: JSON.stringify(appData)\n };\n\n request('/v1/my_maps', {\n method: 'POST',\n body: JSON.stringify(payload)\n })\n .then((data) => {\n if (_.get(data, 'id')) {\n let mapsClone = _.cloneDeep(maps);\n mapsClone = _.concat(mapsClone, data);\n setMaps(mapsClone);\n setShowForm(false);\n toast(formatMessage('mapbiomas.toast.map_added'));\n }\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const handleMapUpdate = (params) => {\n const appData = _.get(baseData, 'app');\n const mapId = _.get(currentMapData, 'id');\n let payload = {\n name: params.title,\n description: params.description,\n };\n\n if (params.updateSnapshot) {\n payload.snapshot = JSON.stringify(appData);\n }\n\n request(`/v1/my_maps/${ mapId }`, {\n method: 'PATCH',\n body: JSON.stringify(payload)\n })\n .then((data) => {\n if (_.get(data, 'id')) {\n let mapsClone = _.cloneDeep(maps);\n mapsClone = _.map(mapsClone, (item) => {\n if (item.id === mapId) {\n return data;\n }\n\n return item;\n });\n setMaps(mapsClone);\n setCurrentMapData(null);\n toast(formatMessage('mapbiomas.toast.map_updated'));\n }\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const handleViewMap = (id) => {\n request(`/v1/my_maps/${ id }`)\n .then((data) => {\n if (_.get(data, 'id')) {\n let snapshot = JSON.parse(_.get(data, 'snapshot'));\n let flyTo = _.get(snapshot, 'mapFlyTo');\n let territoryPoints = [];\n\n // TODO: Format current user maps to add new 'territoryBBox' prop on territories\n const parsedTerritories = _.map(_.get(snapshot, 'baseParams.territories'), (territory) => {\n const territoryBBox = _.get(territory, 'territoryBBox');\n\n if (territoryBBox) {\n territoryPoints = _.concat(territoryPoints, territoryBBox);\n }\n\n return {\n ...territory,\n territoryBBox: territoryBBox || null\n };\n });\n\n if (!_.isEmpty(territoryPoints)) {\n const line = turf.lineString(territoryPoints);\n const bbox = turf.bbox(line);\n\n flyTo = [\n [bbox[0], bbox[1]],\n [bbox[2], bbox[3]],\n ];\n }\n\n _.set(snapshot, 'baseParams.territories', parsedTerritories);\n _.set(snapshot, 'mapFlyTo', flyTo);\n\n if (isMobile) {\n _.set(snapshot, 'headerIsVisible', false);\n }\n\n updateClientAppState(snapshot);\n onHideMenu();\n }\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const handleDeleteMap = (id) => {\n request(`/v1/my_maps/${ id }`, {\n method: 'DELETE'\n })\n .then(() => {\n let mapsClone = _.cloneDeep(maps);\n mapsClone = _.filter(mapsClone, (item) => item.id !== id);\n setMaps(mapsClone);\n toast(formatMessage('mapbiomas.user.my_maps.list.toast.delete_success'));\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const handleEditMap = (id) => {\n const mapData = _.cloneDeep(_.find(maps, { id }));\n setCurrentMapData(mapData);\n };\n\n const handleMapEditClose = () => {\n setCurrentMapData(null);\n };\n\n const renderLogin = () => {\n return (\n <div>\n <p className={ styles.infoText }>\n <FormattedMessage id=\"mapbiomas.user.login.description.text_intro\" />\n <a onClick={ toggleSignUpForm }><FormattedMessage id=\"mapbiomas.user.login.description.sign_up_label\" /></a>\n <FormattedMessage id=\"mapbiomas.user.login.description.text_final\" />\n </p>\n <LoginForm onRecoveryPassword={ togglePasswordRecoveryForm } />\n </div>\n );\n };\n\n return (\n <div>\n <div className={ styles.titleWrapper }>\n <h2 className={ styles.title }>\n { (!myMapsMode && !newMapMode) ?\n <FormattedMessage id=\"mapbiomas.sidebar.account.title\" /> :\n <FormattedMessage id=\"mapbiomas.sidebar.my_maps.title\" />\n }\n </h2>\n <Tooltip title=\"Esconder\" onClick={ onHideMenu }>\n <IconButton className={ styles.hideMenuButton }>\n <ChevronLeftIcon />\n </IconButton>\n </Tooltip>\n </div>\n <div className={ styles.navListWrapper } style={{ height: contentHeight }}>\n { token &&\n <div className={ styles.userInfo }>\n <span>\n <PersonIcon />\n <span>{ localStorage.getItem('name') }</span>\n </span>\n <Tooltip title=\"Sair\" onClick={ handleExit }>\n <IconButton>\n <ExitToAppIcon />\n </IconButton>\n </Tooltip>\n </div>\n }\n <div className={ styles.myMapsContentWrapper }>\n { !showSignUp && !showPasswordRecovery && !token && renderLogin() }\n { showPasswordRecovery &&\n <PasswordRecoveryForm onCancel={ togglePasswordRecoveryForm } />\n }\n { showSignUp &&\n <SignUpForm onCancel={ toggleSignUpForm } />\n }\n { token &&\n <div>\n { !showForm &&\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={ <AddIcon /> }\n className={ styles.addButton }\n onClick={ toggleMapForm }\n >\n <FormattedMessage id=\"mapbiomas.user.my_maps.buttons.new_map\" />\n </Button>\n }\n { showForm &&\n <MapForm\n onCancel={ toggleMapForm }\n onSubmit={ handleMapSubmit }\n />\n }\n <MapList\n data={ maps }\n onViewMap={ handleViewMap }\n onEditMap={ handleEditMap }\n onDeleteMap={ handleDeleteMap }\n />\n </div>\n }\n </div>\n </div>\n <MapEditDialog\n isOpen={ !!currentMapData }\n data={ currentMapData }\n onClose={ handleMapEditClose }\n onSubmit={ handleMapUpdate }\n />\n </div>\n );\n}\n","export default function resetToken() {\n localStorage.removeItem('tokenId');\n localStorage.removeItem('token');\n localStorage.removeItem('name');\n localStorage.removeItem('email');\n localStorage.removeItem('profile');\n localStorage.removeItem('institutionId');\n localStorage.removeItem('institutionName');\n localStorage.removeItem('notify_user_new_term_of_use_version');\n localStorage.removeItem('unseen_alerts');\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n activeModule\n activeModuleContent\n headerIsVisible\n baseParams {\n classesViewMode\n activeClassTreeNodeIds\n activeObjectTreeNodeIds\n activeClassesLevelsListItems\n activeClassTreeOptionValue\n buffer\n }\n }\n }\n`\n\nexport const GET_MODULE_DATA = gql`\n query GetModulesData {\n modulesList {\n id\n key\n enabled\n isInBeta\n primaryColor\n secondaryColor\n iconUrl\n displayOrder\n\t\t\ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tsubmodules {\n id\n displayOrder\n key\n\t\t\t\tgeospatialObjectCategoryTree {\n id\n key\n geospatialObjectCategoryTreeLevels {\n id\n color\n positionInTree\n level\n parentId\n childrenIds\n i18nStrings {\n\t\t\t\t\t\t\tstringValue\n\t\t\t\t\t\t\tlanguage\n }\n\t\t\t\t\t\tgeometryCategory {\n\t\t\t\t\t\t\ti18nStrings {\n\t\t\t\t\t\t\t\tstringValue\n\t\t\t\t\t\t\t\tlanguage\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t}\n }\n i18nStrings {\n\t\t\t\t\t\tstringValue\n\t\t\t\t\t\tlanguage\n }\n }\n i18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n }\n }\n }\n }\n`\n","export default [\n 'fire',\n 'sentinel',\n 'soil',\n];\n","import React from 'react';\n\nimport styles from './Header.module.scss';\n\nexport default function ModuleIconComponent({\n moduleKey,\n}) {\n switch(moduleKey) {\n case 'coverage': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" height=\"512\" width=\"512\" fill=\"#555\"><path d=\"M75.511 308.515v-44.886c14.123-3.615 26.26-12.221 34.444-23.809v58.686c16.705-3.54 33.928-5.37 51.407-5.37 52.367 0 104.637 16.614 146.541 48.633 20.881-4.717 42.641-7.239 64.804-7.456V193.039L235.48 125.371 120.5 187.719c-2.455-42.223-13.65-95.769-35.323-133.698l-13.32-23.309H49.166L35.846 54.02C11.084 97.355 0 161.075 0 205.001c0 28.19 19.377 51.937 45.511 58.627v58.441c9.653-5.19 19.678-9.714 30-13.554zm138.154-59.304h-30v-30h30zm85.334 0h-30v-30h30zm158.129 95.868v-46.464c20.006-6.37 34.54-25.123 34.54-47.212 0-33.815-8.559-82.915-27.681-116.377l-11.149-19.512h-21.419l-11.15 19.512c-19.122 33.463-27.681 82.562-27.681 116.377 0 22.089 14.534 40.841 34.54 47.212v39.867c10.2 1.694 20.216 3.894 30 6.597zM512 401.321l-5.346-3.152c-37.594-22.164-82.833-33.879-130.827-33.879-13.434 0-26.695.937-39.659 2.771 24.599 25.959 40.33 55.182 52.506 90.975 3.914 11.506 6.701 23.251 6.701 23.251H512zm-224.935-37.673c-36.274-26.503-79.741-40.512-125.702-40.512C99.907 323.136 39.25 348.25 0 396.895v82.233c9.937-27.996 27.513-53.164 50.992-72.538 30.614-25.262 69.585-39.174 109.732-39.174s79.119 13.912 109.733 39.174c24.081 19.871 41.95 45.838 51.739 74.698h41.958l-4.307-14.943c-11.658-40.451-37.506-76.923-72.782-102.697zm-126.34 33.767c-33.197 0-65.386 11.476-90.639 32.314-17.038 14.059-30.281 31.806-38.74 51.559h258.758c-8.459-19.753-21.702-37.5-38.74-51.559-25.253-20.838-57.443-32.314-90.639-32.314z\"/></svg>\n );\n }\n case 'coverage_quality': {\n return (\n <svg className={ styles.moduleIcon } width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#555\"><path d=\"M6.5 10.5a4.5 4.5 0 0 1 3.597 7.205l-.147.184 2.83 2.83a.75.75 0 0 1-.976 1.134l-.084-.073-2.915-2.914A4.5 4.5 0 1 1 6.5 10.5ZM17.75 3a3.25 3.25 0 0 1 3.245 3.066L21 6.25v11.5a3.25 3.25 0 0 1-3.066 3.245L17.75 21h-3.768a1.74 1.74 0 0 0-.382-.864l-.113-.123-.512-.513h4.775c.153 0 .3-.02.442-.056l.139-.043-5.806-5.686a.75.75 0 0 0-.724-.188 5.471 5.471 0 0 0-.598-1.38 2.253 2.253 0 0 1 2.092.263l.15.117.13.116 5.821 5.702c.05-.14.084-.287.097-.44l.007-.155V6.25a1.75 1.75 0 0 0-1.606-1.744L17.75 4.5H6.25a1.75 1.75 0 0 0-1.744 1.606L4.5 6.25v3.625a5.488 5.488 0 0 0-1.272.704L3 10.757V6.25a3.25 3.25 0 0 1 3.066-3.245L6.25 3h11.5ZM6.5 12a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm8.752-5.5a2.252 2.252 0 1 1 0 4.504 2.252 2.252 0 0 1 0-4.504Zm0 1.5a.752.752 0 1 0 0 1.504.752.752 0 0 0 0-1.504Z\"/></svg>\n );\n }\n case 'temporal_analysis': {\n return (\n <svg className={ styles.moduleIcon } width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#555\"><path d=\"m28 2-.044 4.839c-1.963.197-6.885 1.458-11.133 6.502-.198-.276.215.244.025-.06C11.974 5.482 6.319 4.276 4 4.042V2H2v28h2v-3.954a14.886 14.886 0 0 0 9.933-3.948c4.551 5.374 11.303 5.94 14.001 5.94l.066-.001V30h2V2h-2Zm.015 8.384L28 20.045c-3.527-.049-6.605-1.005-9.001-3.595 3.779-4.645 7.308-5.861 9.016-6.066ZM3.958 22.711 4 10.141c1.325.464 4.207 1.951 8.13 9.011.189.342-.24-.289-.036.025-2.349 2.26-4.877 3.482-8.136 3.534Z\"/><path style={ { fill: 'none' } } d=\"M0 0h32v32H0z\"/></svg>\n );\n }\n case 'quality_of_pasture_data': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 556.012 556.012\" width=\"556.012\" height=\"556.012\" fill=\"#555\"><path d=\"M9.469 226.129c.992 5.573 2.358 11.102 2.999 16.712 1.428 12.501 3.949 25.108 3.362 37.543-.75 15.896-4.121 31.665-6.361 47.487l2.501-1.045 10.127 15.415-5.104 16.409 4.811-3.848 4.215 24.599 3.949-3.26 2.028 10.759 1.334-.073 2.093-8.45 1.995.074c10.18 30.791 22.595 59.535 25.063 90.584 0 0-1.787 5.594 2.191 8.127s44.847 2.893 48.462 0-8.604-17.14-17.683-21.049c-2.848-11.803-6.185-22.097-8.054-34.063-1.897-12.143-2.746-24.509-3.166-36.806-.424-12.379 4.063-23.301 10.897-33.758 5.161-7.899 8.886-16.883 12.273-25.757 3.566-9.344 5.479-19.319 9.041-28.662 3.007-7.887 6.846-8.025 13.472-2.596 6.756 5.541 13.337 12.146 21.196 15.271 9.649 3.84 20.518 4.688 30.906 6.577 6.075 1.106 12.26 2.57 18.356 2.407 18.601-.497 37.173-1.941 55.773-2.542 8.364-.269 14.093 4.194 15.602 12.433 2.272 12.402 2.848 25.141 5.528 37.438 2.677 12.272 2.203 24.99 8.417 36.903 6.691 12.828 9.295 27.394 4.762 41.951-1.049 3.37-3.721 6.772-6.605 8.771 0 0-3.383 16.961.478 20.82s24.112 2.411 35.202 1.448c0 0 27.968 5.786 39.058 2.412s5.304-10.127 4.341-13.982-8.494-4.794-8.494-4.794c-1.469-2.856-6.59-4.125-7.169-7.152-2.692-14.125-1.832-28.091 1.832-42.085 4.554-17.381 7.85-35.101 12.677-52.4 1.673-6.001 5.585-11.799 9.739-16.593 7.747-8.939 21.399-10.972 27.242-22.452.085-.167.412-.225.636-.302 11.29-3.986 16.124-13.081 19.295-23.771 1.656-5.585 4.06-10.959 6.287-16.36 6.585-15.981 19.185-27.262 31.31-38.695 3.664-3.452 10.024-6.748 14.55-6.079 13.929 2.057 27.564 5.569 41.302-.518.637-.281 1.444-.767 1.991-.591 9.837 3.174 18.339-.192 26.487-5.3 2.366-1.485 6.638-3.162 6.605-4.675-.147-6.752-.204-14.056-2.791-20.082-3.803-8.845-10.245-16.52-14.586-25.182-2.982-5.949-3.064-12.709-.6-19.56l4.757 1.648c9.172 3.301 15.745-1.979 14.827-11.473-.245-2.534.607-5.757 2.13-7.785 8.282-11.012 6.564-17.997-6.422-23.105-2.546-1-5.61-1.167-8.385-.975-5.198.359-10.354 1.261-14.586 1.812-2.791-3.929-4.325-8.278-7.303-9.796-4.99-2.538-8.075-5.112-6.517-10.2l-25.561-9.494 4.076-2.138-.734-2.008-22.697 6.908c.171 4.602-.094 9.298-7.308 8.817-1.15-.078-2.611 1.212-3.574 2.211-4.182 4.333-8.404 6.609-14.517 3.043-1.828-1.065-5.287-.245-7.638.657-7.144 2.742-13.293 7.165-22.064 6.096-6.116-.743-12.705 2.844-19.144 4.186-14.822 3.093-29.376 3.623-42.979-4.818-1.963-1.22-4.524-1.995-6.83-2.052-9.649-.229-19.318.171-28.964-.2-6.487-.249-12.938-1.383-19.4-2.154-3.239-.388-6.454-1.012-9.702-1.253-7.74-.571-15.888.327-23.113-1.86-5.985-1.812-12.228-1.318-16.634.11-10.016 3.248-19.56 2.468-28.69-.286-29.192-8.809-59.185-13.072-89.254-16.797-6.348-.759-11.358-3.089-16.369-6.181-3.75-2.318-7.177-5.235-11.383-2.126-4.851-1.249-10.392-2.974-14.521-1.273-5.757 2.371-13.386-.779-17.572 5.908-.171.269-1.347-.008-2.032-.151-7.928-1.648-14.305 2.656-19.854 6.769-6.393 4.741-12.632 7.229-20.126 5.5-3.321 4.133-2.644 11.122-9.861 11.42-.604.024-1.428 1.367-1.677 2.232-1.856 6.387-3.048 13.021-5.488 19.165-4.757 11.991-2.607 24.57-3.941 36.834-.4 3.664-.139 7.507.473 11.159l8.805 49.992zm308.183 185.289l1.926-.094c1.028 7.426 2.627 14.831 2.93 22.285.306 7.613 1.767 15.626-2.689 23.896-5.194-16.111-7.512-31.011-2.167-46.087z\"/></svg>\n );\n }\n case 'deforestation': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" height=\"512\" viewBox=\"0 0 510 510\" width=\"512\" fill=\"#555\"><path d=\"M454.6 354.76v-82.394H360v50.231c0 31.925 10.983 63.236 30.927 88.167l5.351 6.603h76.966c-12.365-19.716-18.644-40.721-18.644-62.607zM169.862 171.469l22.576-10.739 5.651 11.879 11.043 54.756h100.22l42.331-20.867-63.289-76.844-5.629-11.834 173.633-81.888-12.796-27.133-173.724 81.93-6.465-13.591-90.305 42.956 6.444 13.545-22.576 10.739zm-55.858 245.896l8.405-10.773A126.37 126.37 0 0 0 150 327.937v-55.571H65.4v82.394c0 21.886-6.28 42.891-18.644 62.606h67.248zm253.556 12.212c-24.241-30.303-37.56-68.27-37.56-106.98v-65.231H180v70.571c0 35.235-12.109 69.792-34.103 97.318l-37.668 48.282 36.886 27.664L205.8 454.52l25.707 42.845h46.986L304.2 454.52l60.685 46.681 37.764-28.323zm53.028 17.788l24.311 30H510v-30zm-329.989 0H0v30h67.193z\"/></svg>\n );\n }\n case 'regeneration': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" height=\"512\" viewBox=\"0 0 512.064 512.064\" width=\"512\" fill=\"#555\"><path d=\"M88.078 461.594v-78.096c0-55.851 18.314-108.449 52.962-152.106 33.609-42.349 80.867-72.763 133.07-85.64 18.372-4.532 36.413-9.309 53.839-14.246-13.8-37.668-34.814-75.291-62.634-112.047L250.586 0C209.763 44.617 163.82 87.948 110.19 132.418c-36.304 30.104-62.012 72.187-72.387 118.497-10.689 47.711-5.061 96.251 16.276 140.373zm382.735-317.338c-23.79 47.656-53.42 94.853-88.439 140.803-36.165 47.454-78.129 93.705-124.727 137.467-42.171 39.605-80.147 69.739-106.884 89.539h14.95c60.109 0 112.89-9.061 156.878-26.93 40.327-16.382 73.564-40.291 98.789-71.063 53.044-64.705 70.547-160.418 49.433-269.816zM358.774 266.532c35.514-46.642 65.26-94.538 88.715-142.803-30.479 11.572-62.678 22.378-96.007 32.206v.001l-.3.088-13.803 4.07-.023-.074a1661.52 1661.52 0 0 1-56.06 14.859c-45.789 11.295-87.254 37.988-116.757 75.163-30.395 38.299-46.46 84.447-46.46 133.457v115.253c28.719-20.464 73.161-54.962 119.546-98.576 45.301-42.596 86.061-87.56 121.149-133.644z\"/></svg>\n );\n }\n case 'infrastructure': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 490.003 490.003\" fill=\"#555\"><path d=\"M154.232 395.955V242.162h11.929c5.091 0 9.212-4.361 9.212-9.74v-5.682c0-5.38-4.121-9.738-9.212-9.738H86.15c-5.089 0-9.213 4.358-9.213 9.738v5.682c0 5.379 4.124 9.74 9.213 9.74h11.929v153.794h56.153zM273.078 395.955V242.162h11.929c5.09 0 9.212-4.361 9.212-9.74v-5.682c0-5.38-4.122-9.738-9.212-9.738h-80.011c-5.089 0-9.213 4.358-9.213 9.738v5.682c0 5.379 4.124 9.74 9.213 9.74h11.929v153.794h56.153zM391.925 395.955V242.162h11.929c5.09 0 9.212-4.361 9.212-9.74v-5.682c0-5.38-4.122-9.738-9.212-9.738h-80.011c-5.089 0-9.213 4.358-9.213 9.738v5.682c0 5.379 4.124 9.74 9.213 9.74h11.929v153.794h56.153zM473.206 450.001h-6.205v-20.016c0-9.383-7.521-16.984-16.795-16.984H39.794c-9.276 0-16.793 7.602-16.793 16.984v20.016h-6.207c-9.276 0-16.793 7.602-16.793 16.984v23.016h490v-23.016c0-9.382-7.52-16.984-16.795-16.984zM20.001 201.001h450a19.999 19.999 0 0 0 19.043-13.889 20 20 0 0 0-7.404-22.376l-225-161A19.98 19.98 0 0 0 245.001.001a19.98 19.98 0 0 0-11.639 3.735l-225 161a19.997 19.997 0 0 0-7.404 22.376 20 20 0 0 0 19.043 13.889z\"/></svg>\n );\n }\n case 'irrigation': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" width=\"682.667\" height=\"682.667\" viewBox=\"0 0 512 512\" preserveAspectRatio=\"xMidYMid meet\"><path d=\"M248.8 19.1c-2.3 1.2-4.6 3.5-5.8 5.9-1.9 3.8-2 5.8-2 75 0 69.3.1 71.2 2 75 2.3 4.5 8 8 13 8s10.7-3.5 13-8c1.9-3.8 2-5.7 2-75s-.1-71.2-2-75c-3.7-7.3-12.7-9.9-20.2-5.9zM82.2 87.7c-1.3.3-4.1 2.2-6.2 4.3-4.7 4.7-5.9 9.9-3.5 15.6 1.1 2.8 15.3 17.7 49.3 51.8l51.6 50.7c7.1 5.3 16.9 3.6 21.7-3.7 3-4.6 2.6-12.2-1-17-1.6-2.1-24.6-25.6-51.2-52.1C90 84.7 91.5 85.9 82.2 87.7zm337.3 1.2c-2.6 1.2-20.7 18.7-52.6 50.7L316.6 191c-2.2 3.4-2.1 11.7.3 15.4 4.8 7.3 14.6 9 21.7 3.7 2.1-1.6 25.6-24.6 52.1-51.2C433 116.3 439 110 440 106.3c3.2-12.4-9.1-22.9-20.5-17.4zM7.8 259.1C3.5 261.3 0 267.2 0 272c0 5 3.5 10.7 8 13 3.8 1.9 5.7 2 75.5 2s71.7-.1 75.5-2c4.5-2.3 8-8 8-13s-3.5-10.7-8-13c-3.8-2-5.7-2-75.7-2-69.5.1-71.9.2-75.5 2.1zm203 0c-4.3 2.2-7.8 8.1-7.8 12.9 0 7.4 7.4 15 14.6 15h2.7l-.5 13-.5 13h36.9H293v-13c0-12.4.1-13 2-13 6.7 0 14-7.9 14-15 0-5-3.5-10.7-8-13-3.7-1.9-5.8-2-45.2-2-39.1.1-41.5.2-45 2.1zm142 0c-4.3 2.2-7.8 8.1-7.8 12.9 0 5 3.5 10.7 8 13 3.8 1.9 5.7 2 75.5 2s71.7-.1 75.5-2c4.5-2.3 8-8 8-13s-3.5-10.7-8-13c-3.8-2-5.7-2-75.7-2-69.5.1-71.9.2-75.5 2.1zm-150 86c-7 3.7-7.8 6.7-7.8 30.9 0 19.2.2 21.4 2 25 2.7 5.3 8 8 16 8h6v28 28h-47c-45.2 0-47.2.1-51 2-4.5 2.3-8 8-8 13s3.5 10.7 8 13c3.9 2 5.6 2 135 2s131.1 0 135-2c4.5-2.3 8-8 8-13s-3.5-10.7-8-13c-3.8-1.9-5.8-2-51-2h-47v-28-28h6c8 0 13.3-2.7 16-8 1.8-3.6 2-5.8 2-25s-.2-21.4-2-25a13.4 13.4 0 0 0-6-6c-3.8-1.9-5.7-2-53.2-2-47.1.1-49.5.2-53 2.1z\"/></svg>\n );\n }\n case 'fire': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" height=\"512\" viewBox=\"0 0 512.081 512.081\" width=\"512\" fill=\"#555\"><path d=\"m327.422 490.31c18.552-37.104 40.66-100.284 9.776-127.528-28.468 4.275-51.488 4.301-70.218.096-47.164-10.59-62.093-47.957-49.108-95.81-63.456 57.989-66.135 143.494-42.611 225.83 3.821 13.375-11.15 24.33-22.743 16.602-3.948-2.632-96.68-65.567-96.68-162.481 0-158.769 180-165.6 180-332 0-12.711 14.894-19.668 24.641-11.492 71.928 60.337 202.812 205.378 195.467 338.776-3.641 66.132-39.57 122.385-106.788 167.197-12.714 8.473-28.59-5.483-21.736-19.19z\"/></svg>\n );\n }\n case 'scenarios': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 341.333 341.333\" fill=\"#555\"><path d=\"M128 128h85.333v85.333H128zM0 0h85.333v85.333H0zm128 256h85.333v85.333H128zM0 128h85.333v85.333H0zm0 128h85.333v85.333H0zM256 0h85.333v85.333H256zM128 0h85.333v85.333H128zm128 128h85.333v85.333H256zm0 128h85.333v85.333H256z\"/></svg>\n );\n }\n case 'water': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 511.999 511.999\" fill=\"#555\"><path d=\"M434.927 191.435l-.772-1.045-.153-.306-70.11-104.078-70.111 104.079-.146.292-.779 1.059c-11.25 15.236-17.196 33.337-17.196 52.348 0 48.652 39.581 88.231 88.231 88.231s88.231-39.58 88.231-88.231c.002-19.012-5.945-37.115-17.195-52.349zm-71.034 170.642c-65.228 0-118.293-53.066-118.293-118.293 0-25.356 7.899-49.517 22.846-69.895l46.089-68.419L243.484 0 95.449 219.753c-23.275 31.674-35.574 69.228-35.574 108.636 0 101.243 82.367 183.61 183.61 183.61 95.929 0 174.899-73.951 182.925-167.838a117.56 117.56 0 0 1-62.517 17.916z\"/></svg>\n );\n }\n case 'mining': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" height=\"512\" viewBox=\"0 0 122.49 122.88\" width=\"512\" fill=\"#555\"><path d=\"M101.12 37.47c14.95 18.54 22.23 40.44 21.28 60.48-6.91-16.93-17.64-34.09-31.87-49.9l-4.77 4.77a1.39 1.39 0 0 1-1.96 0L68.72 37.75a1.39 1.39 0 0 1 0-1.96l4.63-4.63C57.16 17.12 39.68 6.67 22.54.2c20.2-1.52 42.5 5.45 61.44 20.33l2.09-2.09a1.39 1.39 0 0 1 1.96 0l15.08 15.08a1.39 1.39 0 0 1 0 1.96l-1.99 1.99h0zm-32.96 5.04l12.22 12.22-65.64 65.64a8.67 8.67 0 0 1-12.22 0h0a8.67 8.67 0 0 1 0-12.22l65.64-65.64h0z\"/></svg>\n );\n }\n case 'sentinel': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" width=\"682.667\" height=\"682.667\" version=\"1.0\" viewBox=\"0 0 512 512\"><path d=\"M132.7 30.7c-17 17-31.5 32.1-32.2 33.7-.7 1.7-1.1 3.7-.8 4.5.3.9 23.1 24.2 50.7 51.8 46.3 46.5 50.3 50.3 53.5 50.3 2.9 0 4.9-1.6 17.5-14l14.2-13.9 12.7 12.7 12.7 12.7-20.6 20.6-20.6 20.6 7 2.2c33.1 10 61.9 38.9 72.3 72.6l2.4 7.5 20.7-20.7 20.8-20.8 12.5 12.5 12.4 12.4-13.9 14.2c-12.4 12.6-14 14.6-14 17.5 0 3.2 3.8 7.2 50.3 53.5 27.6 27.6 50.9 50.4 51.8 50.7.8.3 2.8-.1 4.5-.8 1.6-.7 17-15.4 34.2-32.7 26.7-26.9 31.2-31.9 31.2-34.4s-6.9-9.8-50.8-53.6c-43.1-43.1-51.1-50.8-53.6-50.8-2.2 0-5.2 2.4-15 12l-12.2 11.9-12.4-12.4-12.5-12.5 34.7-34.7c38.2-38.4 38.2-38.4 35.8-47.6-1-3.6-5.3-8.3-32.8-36-34-34.1-36.1-35.7-43.9-34.2-2.1.4-5.1 1.5-6.8 2.5-1.6 1.1-17.8 16.8-36 35l-33 33-12.7-12.7-12.7-12.7 11.9-12.2c9.6-9.8 12-12.8 12-15 0-2.4-7.7-10.6-50.2-53.1C172.3.8 171.5 0 167.6 0c-3.9 0-4.8.8-34.9 30.7zM177.3 225.4c-14.1 2.7-25.9 7.5-36.3 14.7-8.9 6.2-9.9 7.2-10.6 10.7-.7 3.4-.2 3.8 62.2 66.3 34.6 34.6 63.7 63.2 64.7 63.5 7.6 2.4 21.6-19.2 27.4-42.4 2.7-10.5 2.4-32.3-.6-43.2-2.8-10.5-8.7-23.2-14.5-31.3-5.1-7.2-17-18.9-23.9-23.6-7.4-5-20.2-10.7-29.7-13.1-10.8-2.8-28.6-3.5-38.7-1.6zM5.3 312.5c-4.1 1.8-5.3 4.2-5.3 10.8 0 39.5 16.8 85.3 43 117.2 26.5 32.2 61.4 54.4 102 64.7 18.5 4.6 45.5 7.2 50.2 4.7 2.8-1.5 5-7.2 3.9-10.1-1.9-4.9-3.8-5.6-19.1-6.7-24.8-1.9-43.3-6.8-64.6-17.1-35.6-17.3-63.9-45.6-80.8-81-10.1-21.3-14.9-39.6-16.7-64.3-1-12.4-1.4-14.5-3.2-16.3-3-3-5.6-3.5-9.4-1.9z\"/><path d=\"M57.3 312.5c-5.3 2.3-5.9 4.8-4.5 19.3 5.4 59.4 46.3 107.7 103.8 122.7 12.3 3.2 33.6 5.3 37.7 3.6 3.5-1.4 6.1-7 4.8-10.3-1.8-4.7-4-5.6-16.7-6.7-30.9-2.7-55.6-14.1-77-35.5-21.5-21.4-32.8-46-35.5-77-.8-10.4-1.3-12.4-3.2-14.2-3.1-3-5.7-3.5-9.4-1.9z\"/><path d=\"M109.2 312.5c-4.4 1.9-5.5 5.4-4.8 14.3 3.8 42.7 37.1 76 79.8 79.8 4.5.3 8.4.2 10.1-.5 3.5-1.3 6.1-7 4.8-10.3-1.8-4.6-4.4-5.9-14.3-6.8-34-3.3-59.5-28.9-62.8-62.9-.7-7.9-1.3-9.8-3.2-11.7-3.2-3-5.7-3.6-9.6-1.9z\"/></svg>\n );\n }\n case 'soil': {\n return (\n <svg className={ styles.moduleIcon } xmlns=\"http://www.w3.org/2000/svg\" width=\"682.667\" height=\"682.667\" version=\"1.0\" viewBox=\"0 0 512 512\"><path d=\"M64.3 1.5C47.1 6.2 34.3 19.8 31 36.9c-1.4 7.4-1.3 70.5.1 77.3 2.7 12.8 12.2 25.4 23.7 31.2L60 148v32.9l-25.4.3c-23.9.3-25.6.4-28.3 2.4-5.9 4.3-6.3 6.5-6.3 33.1V241h70.8c72.2 0 83.9.5 105.8 4.1 31.6 5.2 53.7 12.5 91.9 30.2 28.5 13.3 58.8 21.6 89.4 24.7 6 .6 40.3 1 82.2 1H512v-24c0-22.2-.2-24.4-2-28-1.3-2.6-3.4-4.7-6-6-3.6-1.8-5.8-2-28-2h-24v-32.5l5.5-2.9c11.4-6 21.2-19 23.5-31.5.5-2.9 1-20.5 1-39 0-36.7-.6-42-5.7-51.4-8.8-16-28.8-25.9-46.3-22.9-17.3 3.1-31 15-36.1 31.3-1.7 5.5-1.9 9.6-1.9 43.4 0 34.3.2 37.8 2 43.7 3.5 11.5 11.8 21.3 22.5 26.5l5.5 2.7V241h-25.7c-55.1 0-87.3-7-134.6-29.1-17.6-8.2-30-13.1-42.9-17.1l-7.8-2.3v-44.4l6-3.2c11.2-5.9 20.2-18.1 22.9-30.7 1.4-6.8 1.5-69.9.1-77.3-4.8-25.5-30.6-41.9-55.5-35.4-12.6 3.3-24 12.9-29.8 25.2l-3.2 6.8-.3 39.4c-.3 37.3-.2 39.8 1.7 46.2 3.5 11.4 13.8 23 24.5 27.4l3.6 1.5v37.3l-5.2-.8c-2.9-.4-8-1.1-11.3-1.6-3.3-.5-21.4-1.2-40.2-1.6l-34.3-.5v-32.7l4.3-1.9c10.9-5 20.2-15.6 23.8-27.1 1.9-6.4 2-8.9 1.7-46.2l-.3-39.4-3.2-6.8c-3.8-8-12.2-17.3-19.1-21-10-5.4-22.4-7-32.9-4.2zM0 346.5V422h512v-90.9l-78.7-.4c-75.8-.3-79.3-.4-92.8-2.6-33.8-5.4-58.8-13.2-92.4-29.1-24.7-11.6-41.4-17.3-65.7-22.4-24.1-5-35.3-5.6-111.9-5.6H0v75.5zM81.5 303c7.6 3.7 10.8 13.7 6.5 20.8-5.2 8.4-16.2 9.7-23.2 2.7-6.2-6.1-5.8-16 .7-21.2 5.8-4.7 9.9-5.2 16-2.3zm91.8 33.9c12.9 8.5 7.3 27.1-8.1 27.1-8.2 0-14.2-6.4-14.2-15.3 0-10.4 13.6-17.6 22.3-11.8zM444.7 364c6.1 3.7 8.8 13 5.5 19-5.9 10.9-21.1 10.7-26.8-.2-2.1-4-1.4-12 1.2-15 5.3-5.9 14-7.6 20.1-3.8zM0 476c0 22.2.2 24.4 2 28 1.3 2.6 3.4 4.7 6 6 3.9 2 5.3 2 248 2s244.1 0 248-2c2.6-1.3 4.7-3.4 6-6 1.8-3.6 2-5.8 2-28v-24H0v24z\"/></svg>\n );\n }\n default: {\n return null;\n }\n };\n}\n","import React, { useEffect, useState, Fragment } from 'react';\nimport { withRouter, Link } from 'react-router-dom';\nimport classnames from 'classnames';\nimport { useApolloClient, useQuery } from '@apollo/react-hooks';\nimport { useIntl, FormattedMessage } from 'react-intl';\nimport _ from 'lodash';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport AccountCircleIcon from '@material-ui/icons/AccountCircle';\nimport BarChartIcon from '@material-ui/icons/BarChart';\nimport BookmarkIcon from '@material-ui/icons/Bookmark';\nimport Button from '@material-ui/core/Button';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport TranslateIcon from '@material-ui/icons/Translate';\nimport ViewListIcon from '@material-ui/icons/ViewList';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport TabList from '../../components/TabList';\n\nimport BaseForm from './components/BaseForm';\nimport Classes from './components/Classes';\nimport GenericClasses from './components/GenericClasses';\nimport GeospatialObjects from './components/GeospatialObjects';\nimport TransitionBaseForm from './components/TransitionBaseForm';\nimport TransitionClasses from './components/TransitionClasses';\nimport QualityBaseForm from './components/QualityBaseForm';\nimport QualityClasses from './components/QualityClasses';\nimport PastureQualityCoverageClasses from './components/PastureQualityCoverageClasses';\nimport TranslateOptionsBox from './components/TranslateOptionsBox';\nimport InstitutionalMenu from './components/InstitutionalMenu';\nimport AccountMenu from './components/AccountMenu';\n\nimport {\n GET_BASE_DATA,\n GET_MODULE_DATA\n} from './query';\n\nimport useFormatMessage from '../../../../hooks/useFormatMessage';\nimport useWindowSize from '../../../../hooks/useWindowSize';\nimport usePrevious from '../../../../hooks/usePrevious';\n\nimport logo from './bosque-atlantico-horizontal.png';\nimport logoFire from './logo-mapbiomas-fogo.png';\nimport logoSentinelPT from './10-metros-pt-br-horizontal.svg';\nimport logoSentinelEN from './10-metros-en-horizontal.svg';\n\nimport initialBaseParams from '../../../../data/initialBaseParams';\nimport mapActiveModuleToDefaultParams from '../../../../data/mapActiveModuleToDefaultParams';\nimport customClientModules from '../../../../data/customClientModules';\n\nimport customClient from '../../../../core/custom-apollo-client';\n\nimport ModuleIconComponent from './ModuleIconComponent';\n\nimport styles from './Header.module.scss';\n\nconst NEW_MODULE_KEYS = [];\n\nconst BETA_MODULE_KEYS = [\n 'sentinel',\n 'soil',\n];\n\nfunction hexToRgb(hex) {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, function(m, r, g, b) {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\n// TODO: Remove these mappers when the saved user maps are updated with the new keys\n\nfunction mapNewModuleListKeyToOldKey(key) {\n return {\n coverage: 'coverage',\n quality_of_pasture_data: 'quality_of_pasture_data',\n }[key] || key;\n}\n\nfunction mapOldModuleListKeyToNewKey(key) {\n return {\n landUseAndCover: 'coverage',\n pastureQuality: 'quality_of_pasture_data',\n }[key] || key;\n}\n\nfunction getModuleItemClassName(key) {\n const parsedKey = mapNewModuleListKeyToOldKey(key);\n\n const mapModuleKeyToClassName = {\n 'coverage': 'menuBarListItemCoverage',\n 'coverage_quality': 'menuBarListItemCoverageQuality',\n 'temporal_analysis': 'menuBarListItemTrajectories',\n 'quality_of_pasture_data': 'menuBarListItemQualityOfPastureData',\n 'deforestation': 'menuBarListItemDeforestation',\n 'regeneration': 'menuBarListItemRegeneration',\n 'infrastructure': 'menuBarListItemInfrastructure',\n 'irrigation': 'menuBarListItemIrrigation',\n 'fire': 'menuBarListItemFire',\n 'scenarios': 'menuBarListItem',\n 'mining': 'menuBarListItemMining',\n 'sentinel': 'menuBarListItemSentinel',\n 'soil': 'menuBarListItemSoil',\n };\n\n return mapModuleKeyToClassName[parsedKey];\n}\n\nconst mapLocaleKeyToAbbreviation = {\n 'pt-BR': 'PT',\n 'en': 'EN',\n 'es': 'ES',\n};\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 14,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#656565',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#656565'\n },\n}))(Tooltip);\n\nconst TOP_PADDING = 80;\nconst TOP_PADDING_LARGE = 176;\nconst BOTTOM_PADDING = 93;\n\nfunction Header({\n history,\n height,\n iframeMode,\n}) {\n const isMobile = useMediaQuery('(max-width: 768px)');\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n const windowSize = useWindowSize();\n const client = useApolloClient();\n const [navIsVisible, setNavIsVisible] = useState(false);\n const [menuIsVisible, setMenuIsVisible] = useState(false);\n const [accountMenuIsVisible, setAccountMenuIsVisible] = useState(false);\n const [translateBoxAnchorEl, setTranslateBoxAnchorEl] = useState(null);\n const [showFireModeContent, setShowFireModeContent] = useState(null);\n const [showInfrastructureModeContent, setShowInfrastructureModeContent] = useState(null);\n const [showIrrigationModeContent, setShowIrrigationModeContent] = useState(null);\n const [showDeforestationModeContent, setShowDeforestationModeContent] = useState(null);\n const { data: baseData } = useQuery(GET_BASE_DATA);\n const { data: modulesData } = useQuery(GET_MODULE_DATA);\n const { data: customModulesData } = useQuery(GET_MODULE_DATA, {\n client: customClient\n });\n const activeModule = _.get(baseData, 'app.activeModule');\n const prevActiveModule = usePrevious(activeModule);\n const activeModuleContent = _.get(baseData, 'app.activeModuleContent');\n const headerIsVisible = _.get(baseData, 'app.headerIsVisible');\n const buffer = _.get(baseData, 'app.baseParams.buffer');\n const activeClassTreeOptionValue = _.get(baseData, 'app.baseParams.activeClassTreeOptionValue');\n const isWaterIframe = activeModuleContent === 'water:water_iframe';\n const isFireIframe = activeModuleContent === 'fire:fire_iframe';\n const isInfrastructureIframe = activeModuleContent === 'infrastructure:infrastructure_iframe';\n const isIrrigationIframe = activeModuleContent === 'irrigation:irrigation_iframe';\n\n const modulesList = _.get(modulesData, 'modulesList');\n const customModulesList = _.get(customModulesData, 'modulesList');\n const activeModuleData = _.find(modulesList, { key: mapOldModuleListKeyToNewKey(activeModule) });\n const submodulesList = _.get(activeModuleData, 'submodules');\n\n const updateClientAppState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n ...params\n }\n }\n });\n };\n\n const updateClientAppBaseParamsState = (params) => {\n updateClientAppState({\n baseParams: {\n __typename: 'AppBaseParamsState',\n ...params\n }\n });\n };\n\n const handleActiveModuleChange = (key) => {\n if (iframeMode) {\n history.push('/');\n }\n\n const defaultParams = mapActiveModuleToDefaultParams[key] || {};\n const baseParams = _.get(defaultParams, 'baseParams');\n\n updateClientAppState({\n activeModule: key,\n ...(baseParams ? _.omit(defaultParams, 'baseParams') : defaultParams)\n });\n\n if (baseParams) {\n updateClientAppBaseParamsState(baseParams);\n }\n\n if (_.includes(customClientModules, prevActiveModule) || _.includes(customClientModules, key)) {\n updateClientAppBaseParamsState(initialBaseParams);\n }\n\n setShowFireModeContent(false);\n setShowInfrastructureModeContent(false);\n setShowIrrigationModeContent(false);\n toggleNav();\n };\n\n const toggleVisibility = () => {\n updateClientAppState({ headerIsVisible: !headerIsVisible });\n };\n\n const toggleNav = () => setNavIsVisible(!navIsVisible);\n\n const toggleMenu = () => setMenuIsVisible(!menuIsVisible);\n\n const toggleAccountMenu = () => {\n const isOpen = !!accountMenuIsVisible;\n\n if (isOpen && (accountMenuIsVisible === 'myMaps' || accountMenuIsVisible === 'newMap')) {\n setAccountMenuIsVisible('default');\n } else if (isOpen) {\n setAccountMenuIsVisible(null);\n } else {\n setAccountMenuIsVisible('default');\n }\n };\n\n const closeAccountMenu = () => {\n setAccountMenuIsVisible(null);\n };\n\n const handleShowClassInfo = (id) => {\n if (isMobile) {\n updateClientAppState({\n headerIsVisible: false,\n showClassInfo: id\n });\n } else {\n updateClientAppState({\n showClassInfo: id\n });\n }\n };\n\n const handleShowDashboardInfo = () => {\n if (!isMobile) {\n updateClientAppState({\n showDashboardInfo: true,\n });\n } else {\n updateClientAppState({\n showDashboardInfo: true,\n headerIsVisible: false,\n mapPointInfo: null,\n showClassInfo: null,\n });\n }\n };\n\n const handleTabChange = (newValue) => {\n let appParams = {\n activeModuleContent: newValue,\n showBeforeAndAfterMosaic: false,\n };\n\n updateClientAppState(appParams);\n };\n\n const handleMapFlyToChange = (boundingBox) => {\n updateClientAppState({ mapFlyTo: boundingBox });\n };\n\n const handleAddNewMap = () => {\n setAccountMenuIsVisible('newMap');\n };\n\n const handleShowMyMaps = () => {\n setAccountMenuIsVisible('myMaps');\n };\n\n const renderTabContent = () => {\n const classesViewMode = _.get(baseData, 'app.baseParams.classesViewMode');\n\n switch(activeModuleContent) {\n case 'coverage:coverage_main': {\n return (\n <Fragment>\n <BaseForm\n showCrossing\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'coverage' }), 'id') }\n submoduleKey={ 'coverage_main' }\n hideLegendIndex={ activeClassTreeOptionValue === 'natural_or_anthropic' }\n hideLevelsControl={ activeClassTreeOptionValue === 'natural_or_anthropic' }\n />\n </Fragment>\n );\n }\n case 'coverage:coverage_changes': {\n return (\n <Fragment>\n <BaseForm\n isTransition\n onFlyTo={ handleMapFlyToChange }\n />\n <TransitionClasses\n onItemsChange={ updateClientAppBaseParamsState }\n />\n </Fragment>\n );\n }\n case 'coverage:coverage_quality': {\n return (\n <Fragment>\n <BaseForm\n onFlyTo={ handleMapFlyToChange }\n />\n <QualityClasses />\n </Fragment>\n );\n }\n case 'temporal_analysis:temporal_analysis_stable_areas': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'temporal_analysis' }), 'id') }\n submoduleKey={ 'temporal_analysis_stable_areas' }\n />\n </Fragment>\n );\n }\n case 'temporal_analysis:temporal_analysis_number_of_classes': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'temporal_analysis' }), 'id') }\n submoduleKey={ 'temporal_analysis_number_of_classes' }\n />\n </Fragment>\n );\n }\n case 'temporal_analysis:temporal_analysis_number_of_changes': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'temporal_analysis' }), 'id') }\n submoduleKey={ 'temporal_analysis_number_of_changes' }\n />\n </Fragment>\n );\n }\n case 'coverage_quality:coverage_quality_main': {\n return (\n <Fragment>\n <BaseForm\n onFlyTo={ handleMapFlyToChange }\n />\n <QualityClasses />\n </Fragment>\n );\n }\n case 'quality_of_pasture_data:quality_of_pasture_data_main': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n key=\"quality_of_pasture_data:quality_of_pasture_data_main\"\n moduleId={ _.get(_.find(modulesList, { key: 'quality_of_pasture_data' }), 'id') }\n submoduleKey={ 'quality_of_pasture_data_main' }\n />\n </Fragment>\n );\n }\n case 'quality_of_pasture_data:quality_of_pasture_data_changes': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n key=\"quality_of_pasture_data:quality_of_pasture_data_changes\"\n moduleId={ _.get(_.find(modulesList, { key: 'quality_of_pasture_data' }), 'id') }\n submoduleKey={ 'quality_of_pasture_data_changes' }\n />\n </Fragment>\n );\n }\n case 'irrigation:irrigation_main': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'irrigation' }), 'id') }\n submoduleKey={ 'irrigation_main' }\n />\n </Fragment>\n );\n }\n case 'deforestation:deforestation_annual': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'deforestation' }), 'id') }\n submoduleKey={ 'deforestation_annual' }\n />\n </Fragment>\n );\n }\n case 'deforestation:deforestation_accumulated': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'deforestation' }), 'id') }\n submoduleKey={ 'deforestation_accumulated' }\n />\n </Fragment>\n );\n }\n case 'deforestation:deforestation_frequency': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n hideLegendIndex\n moduleId={ _.get(_.find(modulesList, { key: 'deforestation' }), 'id') }\n submoduleKey={ 'deforestation_frequency' }\n />\n </Fragment>\n );\n }\n case 'regeneration:regeneration_annual': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'regeneration' }), 'id') }\n submoduleKey={ 'regeneration_annual' }\n />\n </Fragment>\n );\n }\n case 'regeneration:regeneration_accumulated': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'regeneration' }), 'id') }\n submoduleKey={ 'regeneration_accumulated' }\n />\n </Fragment>\n );\n }\n case 'regeneration:regeneration_age': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n hideLegendIndex\n moduleId={ _.get(_.find(modulesList, { key: 'regeneration' }), 'id') }\n submoduleKey={ 'regeneration_age' }\n />\n </Fragment>\n );\n }\n case 'infrastructure:infrastructure_main': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n showBufferField\n territoryCategoriesGroup=\"infrastructure\"\n onFlyTo={ handleMapFlyToChange }\n />\n <GeospatialObjects\n objectTree={_.get(_.find(modulesList, { key: 'infrastructure' }), 'submodules[0].geospatialObjectCategoryTree') }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'infrastructure' }), 'id') }\n submoduleKey={ 'infrastructure_main' }\n />\n </Fragment>\n );\n }\n case 'fire:fire_annual': {\n return (\n <Fragment>\n <BaseForm\n clientType=\"custom\"\n territoryCategoriesGroup=\"fire\"\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n clientType=\"custom\"\n moduleId={ _.get(_.find(customModulesList, { key: 'fire' }), 'id') }\n submoduleKey={ 'fire_annual' }\n />\n </Fragment>\n );\n }\n case 'fire:fire_accumulated': {\n return (\n <Fragment>\n <BaseForm\n clientType=\"custom\"\n territoryCategoriesGroup=\"fire\"\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n clientType=\"custom\"\n moduleId={ _.get(_.find(customModulesList, { key: 'fire' }), 'id') }\n submoduleKey={ 'fire_accumulated' }\n />\n </Fragment>\n );\n }\n case 'fire:fire_frequency': {\n return (\n <Fragment>\n <BaseForm\n clientType=\"custom\"\n territoryCategoriesGroup=\"fire\"\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n clientType=\"custom\"\n hideLegendIndex\n moduleId={ _.get(_.find(customModulesList, { key: 'fire' }), 'id') }\n submoduleKey={ 'fire_frequency' }\n />\n </Fragment>\n );\n }\n case 'fire:fire_monthly': {\n return (\n <Fragment>\n <BaseForm\n clientType=\"custom\"\n territoryCategoriesGroup=\"fire\"\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n clientType=\"custom\"\n moduleId={ _.get(_.find(customModulesList, { key: 'fire' }), 'id') }\n submoduleKey={ 'fire_monthly' }\n />\n </Fragment>\n );\n }\n case 'mining:mining_main': {\n return (\n <Fragment>\n <BaseForm\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n moduleId={ _.get(_.find(modulesList, { key: 'mining' }), 'id') }\n submoduleKey={ 'mining_main' }\n />\n </Fragment>\n );\n }\n case 'soil:soil_main': {\n return (\n <Fragment>\n <BaseForm\n hideGroupType\n clientType=\"custom\"\n onFlyTo={ handleMapFlyToChange }\n territoryCategoriesGroup=\"soil\"\n showMultipleTerritories={ false }\n />\n <GenericClasses\n clientType=\"custom\"\n moduleId={ _.get(_.find(customModulesList, { key: 'soil' }), 'id') }\n submoduleKey={ 'soil_main' }\n />\n </Fragment>\n );\n }\n case 'sentinel:sentinel_coverage': {\n return (\n <Fragment>\n <div className={ styles.fireModeContentBoxExtra }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.warning.sentinel_coverage.extra_note.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.warning.sentinel_coverage.extra_note.content')\n }}\n />\n </div>\n <BaseForm\n clientType=\"custom\"\n territoryCategoriesGroup=\"sentinel\"\n onFlyTo={ handleMapFlyToChange }\n />\n <GenericClasses\n clientType=\"custom\"\n moduleId={ _.get(_.find(customModulesList, { key: 'sentinel' }), 'id') }\n submoduleKey={ 'sentinel_coverage' }\n />\n </Fragment>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n const handleWaterClick = () => {\n history.push('/agua');\n updateClientAppState({ activeModuleContent: 'water:water_iframe' });\n };\n\n const hasStatisticsButton = activeModuleContent === 'coverage:coverage_changes';\n\n const parsedTabList = _.map(_.sortBy(submodulesList, 'displayOrder'), (item) => {\n\n const intl = useIntl()\n\n const mapSubmoduleIdToTooltip = {\n 'fire_annual': intl.formatMessage({id: 'mapbiomas.statistics.burned.annual_total.module.tooltip'}),\n 'fire_monthly': intl.formatMessage({id: 'mapbiomas.statistics.burned.monthly.module.tooltip'}),\n 'fire_frequency': intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.module.tooltip'}),\n 'fire_accumulated': intl.formatMessage({id: 'mapbiomas.statistics.burned.accumulated.module.tooltip'}),\n };\n\n const stringList = _.get(item, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n let tooltip = mapSubmoduleIdToTooltip[_.get(item, 'key')] || null;\n\n return {\n id: `${ _.get(activeModuleData, 'key') }:${ _.get(item, 'key') }`,\n label,\n elementId: _.get(item, 'key'),\n tooltip,\n };\n });\n\n const totalTabList = _.size(parsedTabList);\n const contentHeight = windowSize.height -\n (totalTabList > 2 ? TOP_PADDING_LARGE : TOP_PADDING) -\n (totalTabList === 2 ? 62 : 0) -\n BOTTOM_PADDING;\n\n const handleTranslateBoxOpen = (event) => {\n setTranslateBoxAnchorEl(translateBoxAnchorEl ? null : event.currentTarget);\n };\n\n const handleCustomModeClick = (module) => {\n if (module === 'fire') {\n setShowInfrastructureModeContent(false);\n setShowIrrigationModeContent(false);\n setShowDeforestationModeContent(false);\n setShowFireModeContent(true);\n } else if (module === 'infrastructure') {\n setShowFireModeContent(false);\n setShowIrrigationModeContent(false);\n setShowDeforestationModeContent(false);\n setShowInfrastructureModeContent(true);\n } else if (module === 'irrigation') {\n setShowFireModeContent(false);\n setShowInfrastructureModeContent(false);\n setShowDeforestationModeContent(false);\n setShowIrrigationModeContent(true);\n } else if (module === 'deforestation') {\n setShowFireModeContent(false);\n setShowInfrastructureModeContent(false);\n setShowIrrigationModeContent(false);\n setShowDeforestationModeContent(true);\n }\n };\n\n const showFireIframeMode = () => {\n history.push('/monitor-do-fogo');\n updateClientAppState({ activeModuleContent: 'fire:fire_iframe' });\n };\n\n const showInfrastructureIframeMode = () => {\n history.push('/pistas-de-pouso');\n updateClientAppState({ activeModuleContent: 'infrastructure:infrastructure_iframe' });\n };\n\n const showIrrigationIframeMode = () => {\n history.push('/dinamica-dos-pivos');\n updateClientAppState({ activeModuleContent: 'irrigation:irrigation_iframe' });\n };\n\n const renderMenuContent = () => {\n return (\n <div className={ styles.menuContent }>\n { _.size(parsedTabList) > 1 &&\n <div id=\"module-main-options\" className={ styles.topContent }>\n <TabList\n fullWidth\n hasCustomItemSize\n size=\"small\"\n items={ parsedTabList }\n value={ activeModuleContent }\n onChange={ handleTabChange }\n />\n </div>\n }\n <div className={ styles.contentWrapper } style={{ height: contentHeight }}>\n <div className={ styles.tabContent }>\n { renderTabContent() }\n { hasStatisticsButton &&\n <div className={ styles.statisticsButtonWrapper }>\n <Button\n id=\"statistics-btn\"\n disabled={ activeModuleContent === 'infrastructure:infrastructure_main' && buffer === 0 }\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={ <BarChartIcon /> }\n onClick={ handleShowDashboardInfo }\n >\n <FormattedMessage id=\"mapbiomas.header.buttons.statistics\" />\n </Button>\n </div>\n }\n </div>\n </div>\n <div className={ styles.bottomContent }>\n <Button\n variant=\"contained\"\n size=\"small\"\n className={ styles.actionButton }\n onClick={ handleAddNewMap }\n >\n <BookmarkIcon />\n <span><FormattedMessage id=\"mapbiomas.header.buttons.save_map\" /></span>\n </Button>\n <Button\n variant=\"contained\"\n size=\"small\"\n className={ styles.actionButton }\n onClick={ handleShowMyMaps }\n >\n <ViewListIcon />\n <span><FormattedMessage id=\"mapbiomas.header.buttons.my_maps\" /></span>\n </Button>\n </div>\n {/* <Tooltip title={ headerIsVisible ? formatMessage(`mapbiomas.header.tooltips.hide_filters`) : formatMessage(`mapbiomas.header.tooltips.show_filters`) }>\n <button\n id=\"data-toggle-button\"\n className={ classnames(styles.toggleButton, {\n [styles.toggleButtonAlone]: !headerIsVisible\n }) }\n onClick={ toggleVisibility }\n >\n <FilterListIcon />\n </button>\n </Tooltip>\n <a\n className={ classnames(styles.logoBox, {\n [styles.logoBoxHidden]: headerIsVisible\n }) }\n href=\"https://mapbiomas.org/\"\n >\n <img src={ logo } alt=\"Logo MapBiomas\" />\n </a> */}\n </div>\n );\n };\n\n const renderFireModeContent = () => {\n return (\n <div className={ styles.fireModeContentWrapper } style={{ height: windowSize.height - 116 }}>\n <div className={ styles.fireModeContent }>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.fire_module_content.default.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.fire_module_content.default.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleActiveModuleChange.bind(this, 'fire') }\n className={ styles.fireModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.fire_module_content.monitor.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.fire_module_content.monitor.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ showFireIframeMode }\n className={ styles.fireModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n <div className={ styles.fireModeContentBoxExtra }>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.fire_module_content.extra.body')\n }}\n />\n </div>\n </div>\n </div>\n );\n };\n\n const renderInfrastructureModeContent = () => {\n return (\n <div className={ styles.fireModeContentWrapper } style={{ height: windowSize.height - 116 }}>\n <div className={ styles.fireModeContent }>\n <div className={ styles.fireModeContentBoxExtra }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.infrastructure_module_content.default.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.infrastructure_module_content.default.body')\n }}\n />\n </div>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.infrastructure_module_content.default.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.infrastructure_module_content.collection_6.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleActiveModuleChange.bind(this, 'infrastructure') }\n className={ styles.infrastructureModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.infrastructure_module_content.landing_fields.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.infrastructure_module_content.landing_fields.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ showInfrastructureIframeMode }\n className={ styles.infrastructureModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n const renderIrrigationModeContent = () => {\n return (\n <div className={ styles.fireModeContentWrapper } style={{ height: windowSize.height - 116 }}>\n <div className={ styles.fireModeContent }>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.irrigation_module_content.default.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.irrigation_module_content.default.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleActiveModuleChange.bind(this, 'irrigation') }\n className={ styles.irrigationModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.irrigation_module_content.pivots.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.irrigation_module_content.pivots.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ showIrrigationIframeMode }\n className={ styles.irrigationModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n const renderDeforestationModeContent = () => {\n return (\n <div className={ styles.fireModeContentWrapper } style={{ height: windowSize.height - 116 }}>\n <div className={ styles.fireModeContent }>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.deforestation_module_content.default.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.deforestation_module_content.default.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleActiveModuleChange.bind(this, 'deforestation') }\n className={ styles.deforestationModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n <div className={ styles.fireModeContentBox }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.header.deforestation_module_content.alerts.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: formatMessage('mapbiomas.header.deforestation_module_content.alerts.body')\n }}\n />\n <div className={ styles.fireModeContentBoxActions }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n component=\"a\"\n target=\"_blank\"\n href=\"https://plataforma.alerta.mapbiomas.org/\"\n className={ styles.deforestationModeContentBoxButton }\n >\n <FormattedMessage id=\"mapbiomas.statistics.view_data\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n const renderWaterModuleIcon = () => {\n return (\n <CustomTooltip\n arrow\n title={ locale === 'pt-BR' ? 'Ãgua' : 'Water' }\n placement=\"right\"\n >\n <li\n className={ classnames(styles.menuBarListItem, styles.menuBarListItemWater, {\n [styles['menuBarListItemWaterIsActive']]: isWaterIframe\n }) }\n onClick={ handleWaterClick }\n style={ !isWaterIframe ? {} : { backgroundColor: 'rgba(24, 103, 156, .1)' } }\n >\n <span\n className={ styles.menuBarListItemLine }\n />\n { !_.isEmpty(modulesList) &&\n <ModuleIconComponent\n moduleKey=\"water\"\n />\n }\n {/* <span className={ styles.menuBarListItemNewTag }>new</span> */}\n </li>\n </CustomTooltip>\n );\n };\n\n const renderLogo = () => {\n let logoImage = logo;\n\n if (_.get(activeModuleData, 'key') === 'fire' || showFireModeContent) {\n logoImage = logoFire;\n } else if (_.get(activeModuleData, 'key') === 'sentinel' && locale === 'pt-BR') {\n logoImage = logoSentinelPT;\n } else if (_.get(activeModuleData, 'key') === 'sentinel' && locale === 'en') {\n logoImage = logoSentinelEN;\n }\n\n return (\n <img\n id=\"logo\"\n src={ logoImage }\n alt=\"Logo MapBiomas\"\n className={ classnames({\n [styles.headerImageLogoSentinel]: _.get(activeModuleData, 'key') === 'sentinel'\n }) }\n />\n );\n };\n\n return (\n <div\n className={ classnames(styles.wrapper, {\n [styles.wrapperHidden]: !headerIsVisible,\n [styles.wrapperIframeMode]: iframeMode &&\n !showFireModeContent &&\n !showInfrastructureModeContent &&\n !showIrrigationModeContent &&\n !showDeforestationModeContent\n }) }\n style={{ height }}\n >\n <header\n className={ classnames(styles.headerWrapper, {\n [styles.headerWrapperHidden]: !headerIsVisible\n }) }\n style={{ height }}\n >\n <div className={ styles.menuBar }>\n <ul id=\"modules\" className={ styles.menuBarList }>\n { _.map(_.sortBy(modulesList, 'displayOrder'), (item) => {\n const stringList = _.get(item, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n\n const isActive = !showFireModeContent && !showInfrastructureModeContent && !showIrrigationModeContent && !iframeMode && _.get(activeModuleData, 'key') === item.key ||\n (item.key === 'fire' && (showFireModeContent || isFireIframe)) ||\n (item.key === 'infrastructure' && (showInfrastructureModeContent || isInfrastructureIframe)) ||\n (item.key === 'irrigation' && (showIrrigationModeContent || isIrrigationIframe)) ||\n (item.key === 'deforestation' && showDeforestationModeContent);\n\n const rgbColor = hexToRgb(item.primaryColor);\n\n return (\n <Fragment key={ `nav-list-item-${ item.key }` }>\n <CustomTooltip\n arrow\n title={ label }\n placement=\"right\"\n >\n <li\n className={ classnames(styles.menuBarListItem, [styles[getModuleItemClassName(item.key)]], {\n [styles[`${ getModuleItemClassName(item.key) }IsActive`]]: isActive\n }) }\n onClick={ !_.includes(['fire', 'infrastructure', 'irrigation', 'deforestation'], item.key) ?\n handleActiveModuleChange.bind(this, mapNewModuleListKeyToOldKey(item.key)) :\n handleCustomModeClick.bind(this, item.key)\n }\n style={ !isActive ? {} : { backgroundColor: `rgba(${ rgbColor.r }, ${ rgbColor.g }, ${ rgbColor.b }, .1)` } }\n >\n <span\n className={ styles.menuBarListItemLine }\n />\n <ModuleIconComponent\n moduleKey={ item.key }\n />\n { _.includes(NEW_MODULE_KEYS, item.key) &&\n <span className={ styles.menuBarListItemNewTag }>new</span>\n }\n { _.includes(BETA_MODULE_KEYS, item.key) &&\n <span className={ styles.menuBarListItemBetaTag }>beta</span>\n }\n </li>\n </CustomTooltip>\n </Fragment>\n );\n }) }\n </ul>\n <div className={ styles.menuBarBottomContent }>\n { !iframeMode &&\n <CustomTooltip arrow title={ formatMessage('mapbiomas.sidebar.account.title') } placement=\"right\">\n <button className={ styles.menuButton } onClick={ toggleAccountMenu }>\n <AccountCircleIcon />\n </button>\n </CustomTooltip>\n }\n <CustomTooltip arrow title={ formatMessage('mapbiomas.sidebar.institutional.title') } placement=\"right\">\n <button className={ styles.menuButton } onClick={ toggleMenu }>\n <MenuIcon />\n </button>\n </CustomTooltip>\n { !iframeMode &&\n <button id=\"translation-button\" className={ styles.translateButton } onClick={ handleTranslateBoxOpen }>\n <TranslateIcon />\n <span>{ mapLocaleKeyToAbbreviation[locale] }</span>\n <ExpandMoreIcon />\n </button>\n }\n <TranslateOptionsBox\n anchorEl={ translateBoxAnchorEl }\n onClose={ setTranslateBoxAnchorEl.bind(this, null) }\n />\n </div>\n </div>\n { !showFireModeContent &&\n !showInfrastructureModeContent &&\n !showIrrigationModeContent &&\n !showDeforestationModeContent &&\n renderMenuContent()\n }\n { showFireModeContent && renderFireModeContent() }\n { showInfrastructureModeContent && renderInfrastructureModeContent() }\n { showIrrigationModeContent && renderIrrigationModeContent() }\n { showDeforestationModeContent && renderDeforestationModeContent() }\n <div\n className={ classnames(styles.linksContent, {\n [styles.linksContentIsVisible]: menuIsVisible,\n [styles.linksContentIframeMode]: iframeMode,\n }) }\n >\n <InstitutionalMenu iframeMode={ iframeMode } />\n </div>\n <div\n className={ classnames(styles.linksContent, {\n [styles.linksContentIsVisible]: !!accountMenuIsVisible,\n [styles.linksContentIframeMode]: iframeMode,\n }) }\n >\n <AccountMenu\n iframeMode={ iframeMode }\n myMapsMode={ accountMenuIsVisible === 'myMaps' }\n newMapMode={ accountMenuIsVisible === 'newMap' }\n onHideMenu={ closeAccountMenu }\n />\n </div>\n </header>\n <div\n className={ classnames(styles.logoBox, {\n [styles.logoBoxCollapsed]: !headerIsVisible\n }) }\n >\n <a\n className={ styles.mainLogo }\n href=\"https://pampa.mapbiomas.org/\"\n >\n { renderLogo() }\n { ['coverage','deforestation','regeneration','irrigation','mining','temporal_analysis','coverage_quality', 'infrastructure'].includes(_.get(activeModuleData, 'key')) && <span className={ styles.versionTag }>v. 3.0</span> }\n { ['fire','quality_of_pasture_data'].includes(_.get(activeModuleData, 'key')) && <span className={ styles.versionTag }>v. 2.0</span> }\n { false && _.includes(['infrastructure'], _.get(activeModuleData, 'key')) &&\n <span className={ styles.newTag }>New</span>\n }\n { _.includes(BETA_MODULE_KEYS, _.get(activeModuleData, 'key')) &&\n <span className={ styles.betaTag }>Beta</span>\n }\n </a>\n <button\n id=\"toggle-header-button\"\n className={ classnames(styles.toggleButton, {\n [styles.toggleButtonExpand]: !headerIsVisible\n }) }\n onClick={ toggleVisibility }\n >\n <ChevronLeftIcon />\n </button>\n </div>\n </div>\n );\n}\n\nexport default withRouter(Header);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport logo from './logo-ecostage.svg';\n\nimport styles from './Footer.module.scss';\n\nexport default function Footer() {\n return (\n <footer className={ styles.wrapper }>\n <small className={ styles.copyText }>© Copyright - MapBiomas - <FormattedMessage id=\"footer.copyright\" /></small>\n <div className={ styles.wrapper }>\n <small className={ styles.versionText }>{ process.env.GIT_TAG } · </small>\n <a href=\"http://www.ecostage.com.br/\" target=\"_blank\">\n <img className={ styles.ecostageImage } src={ logo } alt=\"Logo EcoStage\" />\n </a>\n </div>\n </footer>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n activeNoteKey\n }\n }\n`;\n","import React, { useState } from 'react';\nimport { useApolloClient, useQuery } from '@apollo/react-hooks';\nimport { FormattedMessage } from 'react-intl';\nimport _ from 'lodash';\n\nimport Button from '@material-ui/core/Button';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Dialog from '@material-ui/core/Dialog';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport useFormatMessage from '../../hooks/useFormatMessage';\n\nimport {\n GET_BASE_DATA,\n} from './query';\n\nimport styles from './WarningNoteDialog.module.scss';\n\nconst availableLocaleNoteKeys = [\n 'coverage_main',\n 'coverage_changes',\n 'coverage_quality_main',\n 'quality_of_pasture_data_main',\n 'irrigation_main',\n 'temporal_analysis_stable_areas',\n 'deforestation_annual',\n 'regeneration_annual',\n 'fire_accumulated',\n 'mining_main',\n 'temporal_analysis_number_of_classes',\n 'temporal_analysis_number_of_changes',\n 'irrigation_iframe',\n 'soil_main',\n 'sentinel_coverage',\n 'infrastructure_main',\n];\n\nexport default function WarningNoteDialog() {\n const client = useApolloClient();\n const formatMessage = useFormatMessage();\n const { data: baseData } = useQuery(GET_BASE_DATA);\n const activeNoteKey = _.get(baseData, 'app.activeNoteKey');\n\n const [readNoteKeys, setReadNoteKeys] = useState([]);\n\n const updateClientAppState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n ...params\n }\n }\n });\n };\n\n const closeNoteDialog = () => {\n updateClientAppState({\n activeNoteKey: null,\n });\n setReadNoteKeys([...readNoteKeys, activeNoteKey]);\n };\n\n if (\n _.isNull(activeNoteKey) ||\n _.includes(readNoteKeys, activeNoteKey) ||\n !_.includes(availableLocaleNoteKeys, activeNoteKey)\n ) {\n return null;\n }\n\n return (\n <Dialog onClose={ closeNoteDialog } open={ !!activeNoteKey }>\n <div className={ styles.dialogWrapper }>\n <header className={ styles.header }>\n <h2 className={ styles.title }>\n <FormattedMessage id={ `mapbiomas.warning.${ activeNoteKey }.title` } />\n </h2>\n <IconButton className={ styles.closeButton } onClick={ closeNoteDialog }>\n <CloseIcon />\n </IconButton>\n </header>\n <div className={ styles.content }>\n <div\n className={ styles.contentDescription }\n dangerouslySetInnerHTML={{\n __html: formatMessage(`mapbiomas.warning.${ activeNoteKey }.body`)\n }}\n />\n <div className={ styles.actions }>\n <Button color=\"primary\" variant=\"contained\" onClick={ closeNoteDialog }>\n <FormattedMessage id={ `mapbiomas.warning.${ activeNoteKey }.button.confirm` } />\n </Button>\n </div>\n </div>\n </div>\n </Dialog>\n );\n}\n","import _ from 'lodash';\n\nfunction parseTerritories(territories) {\n return _.map(territories, (territory) => {\n const {\n id,\n label,\n territoryTypeId,\n territoryTypeLabel,\n territoryBBox,\n } = territory;\n const bboxV1 = territoryBBox[0][0];\n const bboxV2 = territoryBBox[0][1];\n const bboxV3 = territoryBBox[1][0];\n const bboxV4 = territoryBBox[1][1];\n\n return `${ _.join([id, label, territoryTypeId, territoryTypeLabel, bboxV1, bboxV2, bboxV3, bboxV4], ';') }`;\n });\n}\n\nexport default function parseStateToQueryParams(state) {\n const {\n activeBaseMap,\n activeLayers,\n layersOpacity,\n activeModule,\n activeModuleContent,\n activeYear,\n mapPosition,\n showBeforeAndAfterMosaic,\n timelineLimitsRange,\n baseParams,\n } = state || {};\n\n const {\n groupType,\n territoryType,\n territorySubtype,\n territoryValueType,\n crossingEnabled,\n crossingTerritoryType,\n crossingTerritories,\n territory,\n territories,\n crossing,\n classesViewMode,\n activeClassTreeOptionValue,\n activeClassTreeNodeIds,\n activeObjectTreeNodeIds,\n activeSubmodule,\n activeClassesLevelsListItems,\n activeTransitionsClassesListItems,\n activePastureQualityQualityClassesListItems,\n yearRange,\n buffer,\n } = baseParams || {};\n\n let queryParams = {\n activeBaseMap,\n layersOpacity,\n activeModule,\n activeModuleContent,\n activeYear,\n mapPosition,\n timelineLimitsRange,\n };\n\n if (!_.isEmpty(activeLayers)) {\n _.set(queryParams, 'activeLayers', activeLayers);\n }\n\n if (showBeforeAndAfterMosaic) {\n _.set(queryParams, 'showBeforeAndAfterMosaic', showBeforeAndAfterMosaic);\n }\n\n if (groupType && groupType !== 'territorial') {\n _.set(queryParams, 'baseParams.groupType', groupType);\n }\n\n if (territoryType && territoryType !== null) {\n _.set(queryParams, 'baseParams.territoryType', territoryType);\n }\n\n if (crossingTerritoryType && crossingTerritoryType !== null) {\n _.set(queryParams, 'baseParams.crossingTerritoryType', crossingTerritoryType);\n }\n\n if (territorySubtype && territorySubtype !== null) {\n _.set(queryParams, 'baseParams.territorySubtype', territorySubtype);\n }\n\n if (territoryValueType && territoryValueType !== 'single') {\n _.set(queryParams, 'baseParams.territoryValueType', territoryValueType);\n }\n\n if (crossingEnabled) {\n _.set(queryParams, 'baseParams.crossingEnabled', crossingEnabled);\n }\n\n if (territory && territory !== null) {\n _.set(queryParams, 'baseParams.territory', territory);\n }\n\n if (territories && territories !== null) {\n const parsedTerritories = parseTerritories(territories);\n\n _.set(queryParams, 'baseParams.territories', parsedTerritories);\n }\n\n if (crossingTerritories && crossingTerritories !== null) {\n const parsedTerritories = parseTerritories(crossingTerritories);\n\n _.set(queryParams, 'baseParams.crossingTerritories', parsedTerritories);\n }\n\n if (crossing && crossing !== 'none') {\n _.set(queryParams, 'baseParams.crossing', crossing);\n }\n\n if (classesViewMode && classesViewMode !== 'class') {\n _.set(queryParams, 'baseParams.classesViewMode', classesViewMode);\n }\n\n if (activeClassTreeOptionValue && activeClassTreeOptionValue !== null) {\n _.set(queryParams, 'baseParams.activeClassTreeOptionValue', activeClassTreeOptionValue);\n }\n\n if (activeClassTreeNodeIds && !_.isEmpty(activeClassTreeNodeIds)) {\n _.set(queryParams, 'baseParams.activeClassTreeNodeIds', activeClassTreeNodeIds);\n }\n\n if (activeObjectTreeNodeIds && !_.isEmpty(activeObjectTreeNodeIds)) {\n _.set(queryParams, 'baseParams.activeObjectTreeNodeIds', activeObjectTreeNodeIds);\n }\n\n if (activeSubmodule && activeSubmodule !== null) {\n _.set(queryParams, 'baseParams.activeSubmodule', activeSubmodule);\n }\n\n if (activeClassesLevelsListItems && activeClassesLevelsListItems !== null) {\n _.set(queryParams, 'baseParams.activeClassesLevelsListItems', activeClassesLevelsListItems);\n }\n\n if (activeTransitionsClassesListItems && activeTransitionsClassesListItems !== null) {\n _.set(queryParams, 'baseParams.activeTransitionsClassesListItems', activeTransitionsClassesListItems);\n }\n\n if (activePastureQualityQualityClassesListItems && activePastureQualityQualityClassesListItems !== null) {\n _.set(queryParams, 'baseParams.activePastureQualityQualityClassesListItems', activePastureQualityQualityClassesListItems);\n }\n\n if (yearRange && yearRange !== '1985-2021') {\n _.set(queryParams, 'baseParams.yearRange', yearRange);\n }\n\n if (buffer && buffer !== 0) {\n _.set(queryParams, 'baseParams.buffer', buffer);\n }\n\n return queryParams;\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n activeBaseMap\n activeLayers\n layersOpacity\n activeModule\n activeModuleContent\n activeYear\n mapPosition\n showBeforeAndAfterMosaic\n isLoadingBaseData\n notifyUserNewTermOfUseVersion\n timelineLimitsRange\n baseParams {\n groupType\n territoryType\n territorySubtype\n territoryValueType\n crossingEnabled\n territory\n territories {\n id\n label\n territoryTypeId\n territoryTypeLabel\n territoryBBox\n }\n crossing\n classesViewMode\n activeClassTreeOptionValue\n activeClassTreeNodeIds\n activeObjectTreeNodeIds\n activeSubmodule\n activeClassesLevelsListItems\n activeTransitionsClassesListItems\n activePastureQualityQualityClassesListItems\n yearRange\n buffer\n }\n }\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useApolloClient, useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport qs from 'qs';\n\nimport Header from '../Header';\nimport Footer from '../Footer';\n\nimport WarningNoteDialog from '../../../../components/WarningNoteDialog';\n\nimport mapModuleToPathname from '../../../../data/mapModuleToPathname';\n\nimport parseStateToQueryParams from '../../../../helpers/parseStateToQueryParams';\n\nimport {\n GET_BASE_DATA,\n} from './query';\n\nimport styles from './BasePage.module.scss';\n\nconst HEADER_HEIGHT = 0;\nconst HEADER_SIMPLE_HEIGHT = 0;\nconst FOOTER_HEIGHT = 30;\n\nfunction BasePage({\n history,\n location,\n children,\n simple = false\n}) {\n const client = useApolloClient();\n const shouldNotifyUserNewTermOfUseVersion = localStorage.getItem('notify_user_new_term_of_use_version') === 'true';\n const locale = localStorage.getItem('locale') || 'es';\n const pathname = _.get(location, 'pathname');\n const search = _.get(location, 'search');\n const { data: baseData } = useQuery(GET_BASE_DATA);\n const headerHeight = simple ? HEADER_SIMPLE_HEIGHT : HEADER_HEIGHT;\n const [windowHeight, setWindowHeight] = useState(window.innerHeight);\n const [contentHeight, setContentHeight] = useState(window.innerHeight - (headerHeight + FOOTER_HEIGHT));\n const isFrameMode = pathname === '/agua' ||\n pathname === '/monitor-do-fogo' ||\n pathname === '/pistas-de-pouso' ||\n pathname === '/dinamica-dos-pivos';\n\n const app = _.get(baseData, 'app');\n\n const updateClientAppState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n ...params\n }\n }\n });\n };\n\n useEffect(() => {\n if (shouldNotifyUserNewTermOfUseVersion) {\n updateClientAppState({ notifyUserNewTermOfUseVersion: true });\n }\n\n window.addEventListener('resize', debouncedUpdateHeight);\n\n return () => {\n window.removeEventListener('resize', debouncedUpdateHeight)\n };\n }, []);\n\n useEffect(() => {\n // Listen for app state changes and update query params on URL\n const parsedQueryParams = parseStateToQueryParams(app);\n const encodedQueryParams = qs.stringify(parsedQueryParams, {\n encodeValuesOnly: true,\n arrayFormat: 'comma'\n });\n const activeModule = _.get(app, 'activeModule');\n const mapModuleKeyToPathname = _.invert(mapModuleToPathname);\n const customPathname = mapModuleKeyToPathname[activeModule] || pathname;\n\n if (!isFrameMode) {\n history.replace(`${ customPathname }?${ encodedQueryParams }`);\n }\n }, [app]);\n\n useEffect(() => {\n if (pathname === '/agua') {\n updateClientAppState({ activeModuleContent: 'water:water_iframe' });\n } else if (pathname === '/monitor-do-fogo') {\n updateClientAppState({ activeModuleContent: 'fire:fire_iframe' });\n } else if (pathname === '/pistas-de-pouso') {\n updateClientAppState({ activeModuleContent: 'infrastructure:infrastructure_iframe' });\n } else if (pathname === '/dinamica-dos-pivos') {\n updateClientAppState({\n activeModuleContent: 'irrigation:irrigation_iframe',\n activeNoteKey: 'irrigation_iframe',\n });\n }\n }, [pathname]);\n\n if (!baseData) { return null; }\n\n const {\n isLoadingBaseData,\n } = app || {};\n\n if (isLoadingBaseData) {\n return (\n <div className=\"lds-container\">\n <div className=\"lds-ring\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n );\n }\n\n const handleChange = (panel) => (_event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n function updateHeight() {\n setWindowHeight(window.innerHeight);\n setContentHeight(window.innerHeight - (headerHeight + FOOTER_HEIGHT));\n }\n const debouncedUpdateHeight = _.debounce(updateHeight, 500);\n\n return (\n <div\n className={ classnames(styles.pageWrapper, {\n 'locale-en': locale === 'en'\n }) }\n style={ { height: windowHeight } }\n >\n <Header\n simple={ simple }\n height={ contentHeight }\n iframeMode={ isFrameMode }\n pathname={ pathname }\n />\n <div\n className={ styles.contentWrapper }\n style={{ minHeight: contentHeight }}\n >\n { !isFrameMode && children }\n { pathname === '/agua' &&\n <iframe\n width={ window.innerWidth - 60 }\n height={ contentHeight }\n frameBorder=\"0\"\n scrolling=\"no\"\n marginHeight=\"0\"\n marginWidth=\"0\"\n title=\"MapBiomas Ãgua\"\n src=\"https://plataforma.agua.mapbiomas.org/water/7.901922/-65.533633/5.0/panAmazon/countryPanAmazon/1/departmentPanAmazon/surface/2000/2022\"\n />\n }\n { pathname === '/monitor-do-fogo' &&\n <iframe\n width={ window.innerWidth - 60 }\n height={ contentHeight }\n frameBorder=\"0\"\n scrolling=\"no\"\n marginHeight=\"0\"\n marginWidth=\"0\"\n title=\"MapBiomas Monitor do Fogo\"\n src=\"https://fogo.geodatin.com/\"\n />\n }\n { pathname === '/pistas-de-pouso' &&\n <iframe\n width={ window.innerWidth - 60 }\n height={ contentHeight }\n frameBorder=\"0\"\n scrolling=\"no\"\n marginHeight=\"0\"\n marginWidth=\"0\"\n title=\"MapBiomas Pistas de Pouso\"\n src=\"https://solvedgeo.users.earthengine.app/view/pistas-de-pouso\"\n />\n }\n { pathname === '/dinamica-dos-pivos' &&\n <iframe\n width={ window.innerWidth - 60 }\n height={ contentHeight }\n frameBorder=\"0\"\n scrolling=\"no\"\n marginHeight=\"0\"\n marginWidth=\"0\"\n title=\"MapBiomas Dinâmica dos Pivôs\"\n src=\"https://mapbiomas-workspace.earthengine.app/view/mapbiomas-agriculture-pivots\"\n />\n }\n </div>\n <Footer />\n <WarningNoteDialog />\n </div>\n );\n}\n\nexport default BasePage;\n","import { gql } from 'graphql.macro';\n\nexport const GET_POINT_DATA = gql`\n query GetPointData($lat: Float!, $lng: Float!) {\n territoryCategoriesList {\n id\n key\n parentId\n i18nStrings {\n language\n stringValue\n }\n }\n\n territoriesOnList(lat: $lat, lng: $lng) {\n id\n categoryId\n i18nStrings {\n language\n stringValue\n }\n }\n }\n`;\n","import React, { Fragment, useEffect, useState } from 'react';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport { useLazyQuery, useQuery } from '@apollo/react-hooks';\nimport Cleave from 'cleave.js/react';\nimport * as turf from '@turf/turf';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Fade from '@material-ui/core/Fade';\nimport FormControl from '@material-ui/core/FormControl';\nimport IconButton from '@material-ui/core/IconButton';\nimport InfoIcon from '@material-ui/icons/Info';\nimport MyLocationIcon from '@material-ui/icons/MyLocation';\nimport SearchIcon from '@material-ui/icons/Search';\nimport TextField from '@material-ui/core/TextField';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CloseIcon from '@material-ui/icons/Close';\nimport SquareFootIcon from '@material-ui/icons/SquareFoot';\nimport FlipToFrontIcon from '@material-ui/icons/FlipToFront';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport { GET_BASE_DATA } from '../../../../query';\nimport toast from '../../../../../../utils/toast';\n\nimport styles from './CARBox.module.scss';\n\nimport {\n GET_POINT_DATA,\n} from './query';\n\nfunction fetchCARCodeLayerData(carCode) {\n const geoserverBaseUrl = 'https://shared-geoserver.mapbiomas.org/geoserver/mapbiomas-alerta/wfs?';\n const wfsParams = [\n 'service=WFS',\n 'version=2.0.0',\n 'request=GetFeature',\n `typeNames=mapbiomas-alerta:mv_sfb_car`,\n 'outputFormat=application/json',\n 'srsName=EPSG:4326',\n `cql_filter=cod_imovel='${carCode}'`,\n ];\n\n return fetch(`${geoserverBaseUrl}${wfsParams.join('&')}`)\n .then((resp) => resp.json());\n}\n\nconst useStyles = makeStyles((theme) => ({\n searchButtonActive: {\n backgroundColor: '#F1F1F1 !important',\n '& svg': {\n fill: `${theme.palette.primary.main} !important`,\n }\n }\n}));\n\nconst CustomTooltipSimple = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 12,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#444444'\n },\n}))(Tooltip);\n\nconst initialState = {\n code: '',\n};\n\nfunction CARForm({\n isVisible,\n ruralPropertyCode,\n onFlyTo = () => { },\n onSearchPoint = () => { },\n onRuralPropertyCodeChange = () => { },\n updateClientAppState = () => { },\n}) {\n\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n const [isSearching, setIsSearching] = useState(false);\n \n\n useEffect(() => {\n setState(initialState);\n }, [isVisible]);\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n onRuralPropertyCodeChange(paramValue);\n };\n\n\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n \n };\n\n useEffect(() => {\n if (ruralPropertyCode) {\n setIsSearching(true);\n \n fetchCARCodeLayerData(ruralPropertyCode)\n .then((data) => {\n setIsSearching(false);\n\n const feature = _.get(data, 'features[0]');\n\n if (feature) {\n const bbox = _.get(feature, 'bbox');\n const parsedBBox = [\n [bbox[1], bbox[0]],\n [bbox[3], bbox[2]],\n ];\n\n onFlyTo(parsedBBox);\n\n const line = turf.lineString(parsedBBox)\n const center = turf.center(line);\n const coordinates = _.get(center, 'geometry.coordinates');\n const point = {\n lat: _.first(coordinates),\n lng: _.last(coordinates),\n };\n\n onSearchPoint({\n feature,\n point\n });\n } else {\n toast('Não foi possÃvel localizar o CAR informado.', 'error');\n }\n });\n }\n }, [ruralPropertyCode]);\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n //setCode(state.code);\n\n const code = state.code;\n updateClientAppState({\n ruralPropertyCode: code\n });\n };\n\n return (\n <Fade in={isVisible}>\n <form className={styles.formWrapper} onSubmit={handleSubmit}>\n <FormControl fullWidth className={styles.formControl}>\n <TextField\n required\n id=\"code-field\"\n label=\"Código do CAR\"\n variant=\"outlined\"\n size=\"small\"\n value={handleTextChange}\n onChange={handleTextChange.bind(this, 'code')}\n />\n </FormControl>\n {!isSearching &&\n <IconButton className={styles.searchIconButton} type=\"submit\">\n <SearchIcon />\n </IconButton>\n }\n {isSearching &&\n <span className={styles.loadingProgressWrapper}>\n <CircularProgress size={20} color=\"secondary\" />\n </span>\n }\n </form>\n </Fade>\n );\n}\n\nfunction CARInfo({\n data,\n headerIsVisible,\n showBeforeAndAfterMosaic,\n onClose = () => { handleClose() }\n}) {\n return (\n <Fade in={!!data}>\n <div className={classnames(styles.carInfoWrapper, {\n [styles.carInfoWrapperWithoutHeader]: !headerIsVisible,\n [styles.carInfoWrapperWithBeforeAndAfterMosaic]: showBeforeAndAfterMosaic,\n })}>\n <header className={styles.header}>\n <h2 className={styles.title}>Informações do CAR</h2>\n <IconButton className={styles.closeButton} onClick={onClose}>\n <CloseIcon />\n </IconButton>\n </header>\n <ul className={styles.dataList}>\n {_.map(data, (item) => {\n return (\n <li key={item.id} id={item.id} className={styles.dataListItem}>\n <span className={styles.dataListItemLabel}>{item.label}</span>\n <span className={styles.dataListItemValue}>{item.value}</span>\n </li>\n );\n })}\n </ul>\n </div>\n </Fade>\n );\n}\n\nexport default function CARBox({\n headerIsVisible,\n showBeforeAndAfterMosaic,\n onFlyTo = () => { },\n onFeatureChange = () => { },\n updateClientAppState = () => { }\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const classes = useStyles();\n const formatMessage = useFormatMessage();\n const [showPointForm, setShowPointForm] = useState(false);\n const [CARData, setCARData] = useState(null);\n \n const { data: baseData } = useQuery(GET_BASE_DATA);\n const ruralPropertyCode = _.get(baseData, 'app.ruralPropertyCode');\n \n const [\n loadPointData,\n {\n data: pointData,\n loading: loadingPointData\n }\n ] = useLazyQuery(GET_POINT_DATA);\n\n useEffect(() => {\n if (!loadingPointData && pointData) {\n const getTerritoriesOnList = _.get(pointData, 'territoriesOnList');\n const territoryCategoriesList = _.get(pointData, 'territoryCategoriesList');\n const filteredTerritoryCategoriesList = _.filter(territoryCategoriesList, ({ parentId }) => !parentId);\n const parsedData = _(filteredTerritoryCategoriesList)\n .map((category) => {\n const territoryData = _.find(getTerritoriesOnList, { categoryId: category.id });\n\n if (territoryData) {\n const categoryStringList = _.get(category, 'i18nStrings');\n const categorySelectedString = _.find(categoryStringList, { language: locale });\n\n const territoryStringList = _.get(territoryData, 'i18nStrings');\n const territorySelectedString = _.find(territoryStringList, { language: locale });\n\n if (territoryData.categoryId == 15 || territoryData.categoryId == 16) {\n return null;\n } else {\n return {\n id: territoryData.id,\n category: territoryData.categoryId,\n category_key: category.key,\n label: _.get(categorySelectedString, 'stringValue'),\n value: _.get(territorySelectedString, 'stringValue'),\n };\n }\n } else {\n return null;\n }\n })\n .compact()\n .value();\n\n setCARData(parsedData);\n setShowPointForm(false);\n }\n }, [pointData, loadingPointData]);\n\n const handleClose = () => {\n setCARData(null);\n onFeatureChange(null);\n };\n\n const togglePointForm = () => {\n const isVisibile = !showPointForm;\n\n if (isVisibile) {\n setCARData(null);\n }\n\n setShowPointForm(isVisibile);\n };\n\n const handleSearchPoint = ({ feature, point }) => {\n if (point) {\n loadPointData({ variables: point });\n onFeatureChange(feature);\n }\n };\n\n return (\n <Fragment>\n <div className={classnames(styles.wrapper, {\n [styles.wrapperWithoutHeader]: !headerIsVisible,\n [styles.wrapperWithBeforeAndAfterMosaic]: showBeforeAndAfterMosaic,\n })}>\n <div id=\"coordinates-search\" className={styles.controlWrapper}>\n <CustomTooltipSimple arrow title=\"Localizar CAR\" placement=\"right\">\n <button\n className={classnames(styles.searchButton, {\n [classes.searchButtonActive]: showPointForm\n })}\n onClick={togglePointForm}\n >\n <FlipToFrontIcon />\n </button>\n </CustomTooltipSimple>\n </div>\n <CARForm\n isVisible={showPointForm}\n ruralPropertyCode={ruralPropertyCode}\n onFlyTo={onFlyTo}\n onSearchPoint={handleSearchPoint}\n onRuralPropertyCodeChange={(code) => {\n updateClientAppState({\n ruralPropertyCode: code\n });\n }}\n updateClientAppState={updateClientAppState}\n />\n </div>\n <CARInfo\n data={CARData}\n headerIsVisible={headerIsVisible}\n showBeforeAndAfterMosaic={showBeforeAndAfterMosaic}\n \n onClose={handleClose}\n />\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($classId: Int=41){\n classTreeLevels(id: $classId) {\n id\n defaultName\n i18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n classTreeNode {\n classe {\n classesTooltips {\n id\n classesTooltipImages {\n id\n source\n url\n i18nStrings {\n\t\t\t\t\t\t\t\tlanguage\n\t\t\t\t\t\t\t\tstringValue\n }\n }\n titleStrings {\n language\n stringValue\n }\n bodyStrings {\n language\n stringValue\n }\n }\n }\n }\n }\n }\n`\n","import React, { Fragment, useEffect, useState } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport classnames from 'classnames';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Fade from '@material-ui/core/Fade';\n\nimport TabList from '../../../../components/TabList';\n\nimport useWindowSize from '../../../../../../hooks/useWindowSize';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './ClassLegendDialog.module.scss';\n\nconst DEFAULT_PADDING = 890;\n\nexport default function ClassLegendDialog({\n headerIsVisible,\n isOpen,\n classId,\n onClose = () => {}\n}) {\n const windowSize = useWindowSize();\n const locale = localStorage.getItem('locale') || 'es';\n const [currentTab, setCurrentTab] = useState(1);\n const [tabItems, setTabItems] = useState([]);\n const { data: baseData, loading } = useQuery(GET_BASE_DATA, {\n variables: {\n classId\n },\n skip: !classId\n });\n\n const classesTooltipsList = _.get(baseData, 'classTreeLevels[0].classTreeNode.classe.classesTooltips');\n\n useEffect(() => {\n if (classesTooltipsList) {\n const parsedTabItems = _.map(classesTooltipsList, (item) => {\n const labelStringList = _.get(item, 'titleStrings');\n const labelSelectedString = _.find(labelStringList, { language: 'es' });\n\n return {\n id: item.id,\n label: _.get(labelSelectedString, 'stringValue')\n };\n });\n\n setTabItems(parsedTabItems);\n setCurrentTab(_.get(_.first(parsedTabItems), 'id'));\n }\n }, [classesTooltipsList]);\n\n const handleTabChange = (newValue) => {\n setCurrentTab(newValue);\n };\n\n const renderContent = () => {\n const selectedData = _.find(classesTooltipsList, { id: currentTab });\n\n if (!selectedData) { return null; }\n\n const bodyStringList = _.get(selectedData, 'bodyStrings');\n const bodySelectedString = _.find(bodyStringList, { language: locale });\n\n const imageList = _.get(selectedData, 'classesTooltipImages');\n\n return (\n <Fragment>\n <div\n className={ styles.contentDescription }\n dangerouslySetInnerHTML={{\n __html: _.get(bodySelectedString, 'stringValue')\n }}\n />\n { !_.isEmpty(imageList) &&\n <ul className={ styles.imageList }>\n { _.map(imageList, (image) => {\n const imageStringList = _.get(image, 'i18nStrings');\n const imageSelectedString = _.find(imageStringList, { language: locale });\n\n return (\n <li key={ `image-item-${ currentTab }-${ image.id }` }>\n <img src={ image.url } />\n <span>{ _.get(imageSelectedString, 'stringValue') }</span>\n </li>\n );\n }) }\n </ul>\n }\n </Fragment>\n );\n };\n\n const titleStringList = _.get(baseData, 'classTreeLevels[0].i18nStrings');\n const titleSelectedString = _.find(titleStringList, { language: locale });\n\n return (\n <Fade in={ isOpen && !loading }>\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible\n }) }>\n <div style={ { width: windowSize.width - DEFAULT_PADDING } }>\n <header className={ styles.header }>\n <h2 className={ styles.title }>{ _.get(titleSelectedString, 'stringValue') }</h2>\n <IconButton className={ styles.closeButton } onClick={ onClose }>\n <CloseIcon />\n </IconButton>\n </header>\n <div className={ styles.content }>\n <TabList\n itemSizes={{ xs: 4 }}\n items={ tabItems }\n value={ currentTab }\n onChange={ handleTabChange }\n />\n { renderContent() }\n </div>\n </div>\n </div>\n </Fade>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport Cleave from 'cleave.js/react';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Fade from '@material-ui/core/Fade';\nimport FormControl from '@material-ui/core/FormControl';\nimport IconButton from '@material-ui/core/IconButton';\nimport InfoIcon from '@material-ui/icons/Info';\nimport MyLocationIcon from '@material-ui/icons/MyLocation';\nimport SearchIcon from '@material-ui/icons/Search';\nimport TextField from '@material-ui/core/TextField';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport styles from './CoordinatesBox.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n searchButtonActive: {\n backgroundColor: '#F1F1F1 !important',\n '& svg': {\n fill: `${ theme.palette.primary.main } !important`,\n }\n }\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '2px 12px',\n fontSize: 12,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n '& a': {\n color: '#ffc65d',\n },\n '& ul': {\n paddingLeft: 24,\n },\n '& ul li': {\n listStyleType: 'disc'\n },\n },\n}))(Tooltip);\n\nconst CustomTooltipSimple = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 12,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#444444'\n },\n}))(Tooltip);\n\nconst initialState = {\n lat: '',\n lng: '',\n};\n\nfunction PointForm({\n isVisible,\n onSubmit = () => {}\n}) {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n setState(initialState);\n }, [isVisible]);\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const {\n lat,\n lng\n } = state;\n\n if (lat && lng) {\n const parsedLat = Number(_.replace(lat, ',', ''));\n const parsedLng = Number(_.replace(lng, ',', ''));\n\n onSubmit([parsedLat, parsedLng]);\n }\n };\n\n return (\n <Fade in={ isVisible }>\n <form className={ styles.formWrapper } onSubmit={ handleSubmit }>\n <CustomTooltip\n interactive\n placement=\"top-start\"\n title={\n <div dangerouslySetInnerHTML={ {__html: formatMessage('mapbiomas.map.coordinates_control.form.tooltip') } } />\n }\n >\n <InfoIcon className={ styles.infoIcon } />\n </CustomTooltip>\n <FormControl fullWidth className={ styles.formControl }>\n <TextField\n required\n id=\"lat-field\"\n label={ formatMessage('mapbiomas.map.coordinates_control.form.fields.latitude') }\n variant=\"outlined\"\n size=\"small\"\n value={ state.lat }\n InputProps={{\n inputComponent: Cleave,\n inputProps: {\n options: {\n numeral: true\n }\n }\n }}\n onChange={ handleTextChange.bind(this, 'lat') }\n />\n </FormControl>\n <FormControl fullWidth className={ styles.formControl }>\n <TextField\n required\n id=\"lng-field\"\n label={ formatMessage('mapbiomas.map.coordinates_control.form.fields.longitude') }\n variant=\"outlined\"\n size=\"small\"\n value={ state.lng }\n InputProps={{\n inputComponent: Cleave,\n inputProps: {\n options: {\n numeral: true\n }\n }\n }}\n onChange={ handleTextChange.bind(this, 'lng') }\n />\n </FormControl>\n <IconButton className={ styles.searchIconButton } type=\"submit\">\n <MyLocationIcon />\n </IconButton>\n </form>\n </Fade>\n );\n}\n\nexport default function CoordinatesBox({\n headerIsVisible,\n showBeforeAndAfterMosaic,\n onSubmit = () => {},\n}) {\n const classes = useStyles();\n const formatMessage = useFormatMessage();\n const [showPointForm, setShowPointForm] = useState(false);\n\n const togglePointForm = () => {\n setShowPointForm(!showPointForm);\n };\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithoutHeader]: !headerIsVisible,\n [styles.wrapperWithBeforeAndAfterMosaic]: showBeforeAndAfterMosaic,\n }) }>\n <div id=\"coordinates-search\" className={ styles.controlWrapper }>\n <CustomTooltipSimple arrow title={ formatMessage('mapbiomas.map.coordinates_control.tooltip') } placement=\"right\">\n <button\n className={ classnames(styles.searchButton, {\n [classes.searchButtonActive]: showPointForm\n }) }\n onClick={ togglePointForm }\n >\n <SearchIcon />\n </button>\n </CustomTooltipSimple>\n </div>\n <PointForm\n isVisible={ showPointForm }\n onSubmit={ onSubmit }\n />\n </div>\n );\n}\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nfunction tooltipFormatter(params) {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`;\n let str = `<span>${ params.seriesName }</span>`;\n\n const value = _.isObject(params.data) ? params.data.value : params.data;\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n const percentageFormatted = numbro(params.percent / 100).format({\n output: 'percent',\n mantissa: 2\n });\n const paramValue = `<span>${ colorSpan(params.color) } ${ _.get(params, 'data.name') }: ${ valueLabel } (${ percentageFormatted })</span>`;\n\n str += paramValue;\n\n return str;\n}\n\nexport default function PieChart({\n colors,\n serie,\n}) {\n return (\n <ReactEcharts\n style={ { height: 240, width: '100%' } }\n option={{\n grid: {\n left: 40,\n top: 0,\n right: 40,\n bottom: 20,\n // containLabel: true\n },\n tooltip: {\n confine: true,\n trigger: 'item',\n textStyle: {\n align: \"left\",\n color: \"#444\",\n fontSize: 13\n },\n backgroundColor: \"#FFFFFF\",\n borderColor: \"rgba(0, 0, 0, 0.1)\",\n borderWidth: 1,\n extraCssText: \"box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);\",\n formatter: tooltipFormatter\n },\n legend: {\n show: false\n },\n series: [\n {\n animation: false,\n name: serie.title,\n color: colors ? colors : ['#197D19', '#FFF27F', '#4BE64C', '#EEBFD6', '#D1C868', '#777'],\n type: 'pie',\n radius: '85%',\n data: serie.data,\n label: {\n show: false\n }\n }\n ],\n toolbox: {\n feature: {\n saveAsImage: {\n name: 'MapBiomas',\n title: 'Download',\n }\n }\n },\n }\n }\n />\n );\n}\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nfunction tooltipFormatter(params) {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`;\n let str = `<span>${ params[0].axisValue }</span>`;\n\n params.forEach((item) => {\n const value = _.isObject(item.data) ? item.data.value : item.data;\n\n if (value) {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n const paramValue = `<span>${ colorSpan(item.color) } ${ item.seriesName }: ${ valueLabel }</span>`;\n\n str += paramValue;\n }\n });\n\n return str;\n}\n\nexport default function LineChart({\n categories = [],\n series = [],\n}) {\n return (\n <ReactEcharts\n style={ { height: 380 } }\n option={ {\n tooltip: {\n confine: true,\n textStyle: {\n align: \"left\",\n color: \"#444\",\n fontSize: 13\n },\n backgroundColor: \"#FFFFFF\",\n borderColor: \"rgba(0, 0, 0, 0.1)\",\n borderWidth: 1,\n extraCssText: \"box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);\",\n trigger: \"axis\",\n formatter: tooltipFormatter,\n },\n grid: {\n top: \"8%\",\n right: \"20px\",\n bottom: \"8%\",\n left: \"20px\",\n containLabel: true\n },\n xAxis: {\n type: \"category\",\n axisPointer: {\n type: \"shadow\"\n },\n axisLabel: {\n fontSize: 11,\n color: \"#767676\"\n },\n axisLine: {\n color: \"#DDD\"\n },\n boundaryGap: false,\n data: categories\n },\n legend: {\n show: false\n },\n yAxis: {\n axisTick: {\n show: false\n },\n axisLine: {\n color: \"#DDD\"\n },\n splitLine: {\n lineStyle: {\n color: \"rgba(0, 0, 0, 0.05)\"\n }\n },\n axisLabel: {\n formatter: (value) => {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n \n return valueLabel;\n },\n fontSize: 11,\n color: \"#767676\"\n }\n },\n series: _.map(series, (serie) => {\n return {\n ...serie,\n type: 'line',\n smooth: true,\n };\n }),\n toolbox: {\n feature: {\n saveAsImage: {\n name: 'MapBiomas',\n title: 'Download',\n }\n }\n },\n } }\n notMerge={ true }\n />\n );\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport numbro from 'numbro'\nimport Table from '@material-ui/core/Table'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableContainer from '@material-ui/core/TableContainer'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableRow from '@material-ui/core/TableRow'\n\nimport styles from './StickyTable.module.scss'\n\nconst formatNumber = (value, mantissa = 0) => {\n if (_.isNil(value)) { return '-'; }\n\n return numbro(value).format({\n thousandSeparated: true,\n mantissa\n });\n};\n\nexport default function StickyTable({\n rows,\n columns,\n mantissa,\n}) {\n return (\n <div className={ styles.tableWrapper }>\n <div>\n <span className={ styles.categoriesTitle }>Classes</span>\n <ul className={ styles.tableCategoriesList }>\n { _.map(rows, (row) => (\n <li\n key={ `table-row-${ _.kebabCase(row.name) }-sticky-column` }\n style={{ paddingLeft: _.get(row, 'padding', 12) }}\n >\n { row.name }\n </li>\n )) }\n </ul>\n </div>\n <TableContainer>\n <Table size=\"small\" className={ styles.table }>\n <TableHead>\n <TableRow>\n { _.map(columns, (column) => (\n <TableCell\n align=\"right\"\n key={ `table-column-${ _.kebabCase(column) }` }\n className={ styles.categoryCell }\n >\n { column }\n </TableCell>\n )) }\n </TableRow>\n </TableHead>\n <TableBody>\n { _.map(rows, (row) => (\n <TableRow key={ `table-row-${ _.kebabCase(row.name) }` }>\n { _.map(columns, (column, index) => (\n <TableCell\n key={ `table-row-${ row.name }-column-${ column }` }\n align=\"right\"\n >\n { formatNumber(row.data[column] || row.data[index], mantissa) }\n </TableCell>\n )) }\n </TableRow>\n )) }\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n )\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($territoryIds: [Int!]!, $classTreeId: Int!) {\n classTreeList {\n id\n key\n i18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n mvClassTreeLevelsUi {\n id\n classId\n color\n positionInTree\n level\n parentId\n defaultName\n i18nStrings {\n language\n stringValue\n }\n }\n }\n\n coverageClassificationDataList: coverageClassificationDataByTreeList(\n classTreeId: $classTreeId,\n\t\t\tbufferId: null,\n\t\t\tterritoryIds: $territoryIds\n ) {\n territoryId\n year\n classTreeNodeId\n areaInHa\n }\n }\n`;\n","import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport numbro from 'numbro';\nimport { FormattedMessage } from 'react-intl';\nimport { CSVLink } from 'react-csv';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CloseIcon from '@material-ui/icons/Close';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport Fade from '@material-ui/core/Fade';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport BaseForm from '../../../../../../layout/Header/components/BaseForm';\n\nimport PieChart from '../../components/PieChart';\nimport LineChart from '../../components/LineChart';\nimport StickyTable from '../../components/StickyTable';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './DashboardDialogCoverageClassesContent.module.scss';\n\nconst formatNumber = (value) => numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n});\n\nconst useStyles = makeStyles((theme) => ({\n yearValue: {\n color: theme.palette.primary.main\n },\n printButton: {\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n }\n },\n}));\n\nexport default function DashboardDialogCoverageClassesContent({\n activeYear,\n baseParams,\n classTreeId\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n const classes = useStyles();\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n const activeClassesLevelsListItems = _.get(baseParams, 'activeClassesLevelsListItems');\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds: territoryIds,\n classTreeId: classTreeId\n },\n skip: _.isEmpty(territoryIds) || !classTreeId\n });\n\n const classTreesList = _.get(baseData, 'classTreeList');\n const classesLevelsList = _.get(_.find(classTreesList, { id: classTreeId }), 'mvClassTreeLevelsUi');\n\n const classesLevelsListByLevel1 = _.filter(classesLevelsList, { level: 1 });\n const filteredClassesLevelsListByLevel1 = _.filter(classesLevelsListByLevel1, (item) => {\n return _.includes(activeClassesLevelsListItems, item.id);\n });\n const filteredClassesLevelsListByLevel1Ids = _.map(filteredClassesLevelsListByLevel1, 'id');\n const activeClassesLevelsList = _.filter(classesLevelsList, (item) => _.includes(activeClassesLevelsListItems, item.id));\n const coverageClassificationDataList = _.get(baseData, 'coverageClassificationDataList');\n const aggregatedCoverageClassificationDataList = _.values(_.reduce(coverageClassificationDataList, (result, obj) => {\n const key = `${ obj.year }-${ obj.classTreeNodeId }`;\n const nextValue = result[key] ? result[key].areaInHa + obj.areaInHa : obj.areaInHa;\n\n result[key] = {\n ...obj,\n areaInHa: nextValue\n };\n\n return result;\n }, {}));\n\n const parsedData = _.filter(_.map(aggregatedCoverageClassificationDataList, (item) => {\n const classData = _.find(classesLevelsList, { id: item.classTreeNodeId });\n\n return {\n year: Number(_.replace(item.year, '_', '')),\n areaInHa: item.areaInHa,\n classData,\n };\n }), 'classData');\n const years = _.sortBy(_.uniq(_.map(parsedData, 'year')));\n\n const parsedClassesLevelsList = _.map(activeClassesLevelsList, (classData) => {\n const stringList = _.get(classData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const className = `${ _.join(_.get(classData, 'positionInTree'), '.') }. ${ _.get(selectedString, 'stringValue') }`;\n\n return {\n ...classData,\n name: className,\n data: _.map(years, (year) => {\n const coverageClassificationData = _.find(parsedData, (item) => {\n return item.year === year &&\n item.classData.id === classData.id;\n });\n\n return coverageClassificationData ? _.get(coverageClassificationData, 'areaInHa') : null\n })\n };\n });\n\n const pieChartData = _(parsedData)\n .filter((item) => {\n return item.year === activeYear &&\n _.includes(filteredClassesLevelsListByLevel1Ids, _.get(item, 'classData.id'));\n })\n .map((item) => {\n const stringList = _.get(item.classData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n\n return {\n name:_.get(selectedString, 'stringValue'),\n value: _.get(item, 'areaInHa'),\n itemStyle: {\n color: _.get(item, 'classData.color')\n },\n };\n })\n .value();\n\n const lineChartSeriesData = _.map(parsedClassesLevelsList, (item) => {\n return {\n name: item.name,\n color: item.color,\n data: item.data,\n level: item.level,\n padding: item.level * 12,\n };\n });\n\n const renderLoading = () => {\n return (\n <div className={ styles.loadingWrapper }>\n <CircularProgress />\n </div>\n );\n };\n\n const renderDownloadTableLink = () => {\n if (_.isEmpty(years) || _.isEmpty(lineChartSeriesData)) {\n return null;\n }\n\n let headers = [\n { key: 'class', label: 'Classe' },\n ];\n\n _.each(years, (year) => {\n headers.push({ key: _.toString(year), label: _.toString(year) });\n });\n\n const parsedData = _(lineChartSeriesData)\n .map((serie) => {\n let rowData = { class: _.get(serie, 'name') };\n\n _.each(_.get(serie, 'data'), (value, index) => {\n rowData[_.toString([years[index]])] = value;\n });\n\n return rowData;\n })\n .flatten()\n .value();\n\n return (\n <CSVLink\n data={ parsedData }\n headers={ headers }\n className={ classnames(styles.csvDownloadLink, classes.printButton) }\n filename=\"MapBiomas - Tabela de Dados.csv\"\n >\n <CloudDownloadIcon />\n <span>Download</span>\n </CSVLink>\n );\n };\n\n const renderContent = () => {\n return (\n <div className={ styles.content }>\n {/* <BaseForm inline /> */}\n <div className={ styles.chartsWrapper }>\n <div>\n <h3><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title\" values={ { year: activeYear } } /></h3>\n <PieChart\n serie={ {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.unit'),\n data: pieChartData\n } }\n />\n </div>\n <div>\n <h3><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title\" /></h3>\n <LineChart\n categories={ years }\n series={ lineChartSeriesData }\n />\n </div>\n </div>\n <div className={ styles.dataTableWrapper }>\n <div className={ styles.tableHeader }>\n <h3 className={ styles.tableTitle }>\n <b><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.table.title\" /></b>\n <span><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.table.subtitle\" /></span>\n </h3>\n { renderDownloadTableLink() }\n </div>\n <StickyTable\n columns={ years }\n rows={ lineChartSeriesData }\n />\n </div>\n </div>\n );\n };\n\n if (loadingBaseData) {\n return renderLoading();\n } else if (!loadingBaseData && territories) {\n return renderContent();\n } else {\n return null;\n }\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($territoryIds: [Int!]!, $classTreeId: Int!) {\n classTreeList {\n id\n key\n i18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n mvClassTreeLevelsUi {\n id\n classId\n color\n positionInTree\n level\n parentId\n defaultName\n }\n }\n\n coverageClassificationDataList: coverageClassificationDataByTreeList(\n classTreeId: $classTreeId,\n\t\t\tbufferId: null,\n\t\t\tterritoryIds: $territoryIds\n ) {\n territoryId\n year\n classTreeNodeId\n areaInHa\n }\n }\n`;\n","import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport numbro from 'numbro';\nimport { CSVLink } from 'react-csv';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CloseIcon from '@material-ui/icons/Close';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport Fade from '@material-ui/core/Fade';\nimport IconButton from '@material-ui/core/IconButton';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\n\nimport BaseForm from '../../../../../../layout/Header/components/BaseForm';\n\nimport PieChart from '../../components/PieChart';\nimport LineChart from '../../components/LineChart';\nimport StickyTable from '../../components/StickyTable';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './DashboardDialogCoverageNaturalOrAnthropicContent.module.scss';\n\nconst formatNumber = (value) => numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n});\n\nconst useStyles = makeStyles((theme) => ({\n yearValue: {\n color: theme.palette.primary.main\n },\n printButton: {\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n }\n },\n}));\n\nexport default function DashboardDialogCoverageNaturalOrAnthropicContent({\n activeYear,\n baseParams,\n classTreeId\n}) {\n const classes = useStyles();\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n const activeClassesLevelsListItems = _.get(baseParams, 'activeClassesLevelsListItems');\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds: territoryIds,\n classTreeId: classTreeId\n },\n skip: _.isEmpty(territoryIds) || !classTreeId\n });\n\n const classTreesList = _.get(baseData, 'classTreeList');\n const classesLevelsList = _.get(_.find(classTreesList, { key: 'natural_or_anthropic' }), 'mvClassTreeLevelsUi');\n\n const classesLevelsListByLevel1 = _.filter(classesLevelsList, { level: 1 });\n const filteredClassesLevelsListByLevel1Ids = _.map(classesLevelsListByLevel1, 'id');\n\n const coverageClassificationDataList = _.get(baseData, 'coverageClassificationDataList');\n const aggregatedCoverageClassificationDataList = _.values(_.reduce(coverageClassificationDataList, (result, obj) => {\n const key = `${ obj.year }-${ obj.classTreeNodeId }`;\n const nextValue = result[key] ? result[key].areaInHa + obj.areaInHa : obj.areaInHa;\n\n result[key] = {\n ...obj,\n areaInHa: nextValue\n };\n\n return result;\n }, {}));\n const filteredCoverageClassificationDataList = _.filter(aggregatedCoverageClassificationDataList, (item) => !_.includes(filteredClassesLevelsListByLevel1Ids, item.id));\n\n const parsedData = _(filteredCoverageClassificationDataList)\n .map((item) => {\n const classData = _.find(classesLevelsList, { id: item.classTreeNodeId });\n \n return {\n year: Number(_.replace(item.year, '_', '')),\n areaInHa: item.areaInHa,\n classData,\n };\n })\n .filter((item) => item.classData && _.includes(activeClassesLevelsListItems, _.get(item, 'classData.id')))\n .value();\n const years = _.sortBy(_.uniq(_.map(parsedData, 'year')));\n\n const parsedClassesLevelsByLevel1Data = _.map(classesLevelsListByLevel1, (classData) => {\n return {\n ...classData,\n name: _.get(classData, 'defaultName'),\n data: _.map(years, (year) => {\n const filteredCoverageClassificationData = _.filter(parsedData, (item) => {\n return item.year === year &&\n item.classData.parentId === classData.id;\n });\n\n return _.sumBy(filteredCoverageClassificationData, 'areaInHa');\n })\n }\n });\n const parsedClassesLevelsByLevel1PieData = _.map(classesLevelsListByLevel1, (classData) => {\n const filteredData = _.filter(parsedData, (item) => {\n return item.year === activeYear &&\n item.classData.parentId === classData.id;\n });\n\n return {\n ...classData,\n name: _.get(classData, 'defaultName'),\n value: _.sumBy(filteredData, 'areaInHa'),\n itemStyle: {\n color: _.get(classData, 'color')\n },\n }\n });\n\n const renderLoading = () => {\n return (\n <div className={ styles.loadingWrapper }>\n <CircularProgress />\n </div>\n );\n };\n\n const renderDownloadTableLink = () => {\n if (_.isEmpty(years) || _.isEmpty(parsedClassesLevelsByLevel1Data)) {\n return null;\n }\n\n let headers = [\n { key: 'class', label: 'Classe' },\n ];\n\n _.each(years, (year) => {\n headers.push({ key: _.toString(year), label: _.toString(year) });\n });\n\n const parsedData = _(parsedClassesLevelsByLevel1Data)\n .map((serie) => {\n let rowData = { class: _.get(serie, 'name') };\n\n _.each(_.get(serie, 'data'), (value, index) => {\n rowData[_.toString([years[index]])] = value;\n });\n\n return rowData;\n })\n .flatten()\n .value();\n\n return (\n <CSVLink\n data={ parsedData }\n headers={ headers }\n className={ classnames(styles.csvDownloadLink, classes.printButton) }\n filename=\"MapBiomas - Tabela de Dados.csv\"\n >\n <CloudDownloadIcon />\n <span>Download</span>\n </CSVLink>\n );\n };\n\n const renderContent = () => {\n return (\n <div className={ styles.content }>\n {/* <BaseForm inline /> */}\n <div className={ styles.chartsWrapper }>\n <div>\n <h3>Visualização por classe (NÃvel 1 - { activeYear })</h3>\n <PieChart\n serie={ {\n title: 'Ãrea (ha)',\n data: parsedClassesLevelsByLevel1PieData\n } }\n />\n </div>\n <div>\n <h3>Série histórica</h3>\n <LineChart\n categories={ years }\n series={ parsedClassesLevelsByLevel1Data }\n />\n </div>\n </div>\n <div className={ styles.dataTableWrapper }>\n <div className={ styles.tableHeader }>\n <h3 className={ styles.tableTitle }>\n <b>Tabela de dados</b>\n <span>(valores em hectares)</span>\n </h3>\n { renderDownloadTableLink() }\n </div>\n <StickyTable\n columns={ years }\n rows={ parsedClassesLevelsByLevel1Data }\n />\n </div>\n </div>\n );\n };\n\n if (loadingBaseData) {\n return renderLoading();\n } else if (!loadingBaseData && territories) {\n return renderContent();\n } else {\n return null;\n }\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData {\n classesLevelsList {\n id\n color\n positionInTree\n level\n parentId\n defaultName\n }\n }\n`;\n","import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\n\nimport PieChart from '../../components/PieChart';\nimport LineChart from '../../components/LineChart';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './DashboardDialogQualityContent.module.scss';\n\nconst formatNumber = (value) => numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n});\n\nconst sampleData = {\n categories: ['1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018'],\n series: [\n {\n areaStyle: {},\n name: 'Floresta',\n data: [595674939.89, 595858208.39, 592223534.09, 587669613.43, 584412308.18, 582285405.14, 580003887.87, 577174530.25, 573872548.39, 570535582.59, 566986828.49, 563791577.33, 560581814.33, 558036261.05, 554711478.22, 551899400.22, 549925638.40, 547103441.21, 542411487.15, 539024545.57, 536274323.86, 534123915.16, 532939096.89, 531903157.80, 531258183.03, 531330861.09, 530767363.33, 530151910.14, 529092772.60, 527471134.82, 526084434.15, 524394580.56, 522312764.17, 518937915.7],\n },\n {\n areaStyle: {},\n name: 'Formação Natural não Florestal',\n data: [59459326.34, 59179131.53, 58436262.78, 57959280.14, 57371957.47, 56949802.89, 56693940.37, 56236429.20, 56349333.57, 56243071.31, 56114923.96, 55743441.27, 55632730.39, 55659695.87, 55774630.94, 55860585.60, 56000764.22, 55731141.96, 55570984.87, 54937312.80, 54642890.35, 54490380.13, 54278787.66, 53953672.12, 53544233.85, 53133646.89, 52758293.99, 52463272.89, 52031282.44, 51728929.54, 51210931.00, 50766763.92, 50606236.86, 50036334.3],\n },\n {\n areaStyle: {},\n name: 'Agropecuária',\n data: [177441572.66, 177009733.00, 182071397.87, 187016746.02, 190697616.49, 193022492.96, 195601038.43, 199090181.74, 202013914.92, 205463203.72, 209432383.89, 212795934.74, 215986009.67, 218852381.32, 221452402.41, 223879197.86, 225756355.93, 229024368.38, 233452071.06, 237136160.36, 240131790.74, 242291337.07, 243553185.67, 244705951.05, 245539736.32, 246295866.24, 247007504.61, 247980862.10, 249293550.81, 251012446.09, 252782607.65, 255149573.21, 257114716.61, 260671891.18],\n },\n {\n areaStyle: {},\n name: 'Ãrea não Vegetada',\n data: [3342355.08, 3216005.90, 3090312.77, 3106092.11, 3058678.31, 3060490.55, 3026351.43, 3049558.73, 3175548.75, 3140836.06, 3128865.31, 3134419.50, 3123874.58, 3183666.99, 3273163.95, 3394125.47, 3513908.78, 3520347.73, 3545410.84, 3518871.84, 3522706.66, 3556286.07, 3583335.56, 3631760.05, 3669189.27, 3726614.12, 3784220.84, 3845488.16, 4019087.81, 4083616.40, 4212398.62, 4338027.67, 4557028.78, 4877005.18],\n },\n {\n areaStyle: {},\n name: 'Corpo D\\'água',\n data: [15630653.94, 16286108.19, 15727862.32, 15797880.51, 16009310.45, 16231926.72, 16225103.89, 15999769.58, 16139201.80, 16167840.49, 15887530.26, 16084888.32, 16224919.41, 15817499.31, 16337881.14, 16516505.25, 16353296.41, 16170516.25, 16569834.75, 16932916.26, 16978019.62, 17087793.62, 17195309.71, 17355219.82, 17538258.83, 17062605.45, 17232261.96, 17108171.33, 17112991.26, 17253461.42, 17259018.79, 16900270.66, 16958455.32, 17026435.31],\n },\n {\n areaStyle: {},\n name: 'Não observado',\n data: [26001.45, 25662.35, 25479.53, 25237.14, 24978.46, 24731.09, 24527.38, 24379.86, 24301.93, 24315.19, 24317.45, 24588.21, 25500.97, 25344.83, 25292.71, 25034.96, 24885.62, 25033.82, 25060.70, 25042.53, 25118.14, 25137.31, 25133.88, 25088.53, 25248.06, 25255.58, 25204.65, 25144.75, 25164.45, 25261.08, 25459.14, 25633.35, 25647.61, 25267.58],\n },\n ]\n};\n\nexport default function DashboardDialogQualityContent({\n activeYear,\n baseParams,\n}) {\n const territory = _.get(baseParams, 'territory');\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryId: territory\n },\n skip: !territory\n });\n\n const renderLoading = () => {\n return (\n <div className={ styles.loadingWrapper }>\n <CircularProgress />\n </div>\n );\n };\n\n const renderContent = () => {\n return (\n <div className={ styles.content }>\n <div className={ styles.chartsWrapper }>\n <div>\n <h3>Visualização por classe</h3>\n <PieChart\n colors={ ['#FFFF1C', '#A0E260', '#FFD11A', '#FF1919'] }\n serie={ {\n title: 'Total',\n data: [\n { name: 'Entre 4 e 6 observações', value: 36.98 },\n { name: 'Acima de 6 observações', value: 35.33 },\n { name: 'Entre 1 e 3 observações', value: 24.8 },\n { name: 'Nenhuma observação', value: 2.89 },\n ]\n } }\n />\n </div>\n <div>\n <h3>Série histórica</h3>\n <LineChart\n area\n categories={ sampleData.categories }\n series={ sampleData.series }\n />\n </div>\n </div>\n <div className={ styles.dataTableWrapper }>\n <div className={ styles.tableHeader }>\n <h3 className={ styles.tableTitle }>Tabela de dados</h3>\n {/* <Button\n color=\"secondary\"\n size=\"small\"\n variant=\"contained\"\n startIcon={ <CloudDownloadIcon /> }\n >\n Download\n </Button> */}\n </div>\n <div className={ styles.tableWrapper }>\n <Table size=\"small\" className={ styles.table }>\n <TableHead>\n <TableRow>\n <TableCell>Classes</TableCell>\n { _.map(sampleData.categories, (year) => {\n return (\n <TableCell key={ `table-header-cell-${ year }` } align=\"right\">{ year }</TableCell>\n );\n }) }\n </TableRow>\n </TableHead>\n <TableBody>\n { _.map(sampleData.series, (serie, index) => {\n return (\n <TableRow key={ `table-row-serie-${ index }` }>\n <TableCell component=\"th\" scope=\"row\">{ serie.name }</TableCell>\n { _.map(serie.data, (value, cellIndex) => {\n return (\n <TableCell key={ `table-row-${ index }-cell-${ cellIndex }` } align=\"right\">{ value ? formatNumber(value) : '-' }</TableCell>\n );\n }) }\n </TableRow>\n );\n }) }\n </TableBody>\n </Table>\n </div>\n </div>\n </div>\n );\n };\n\n if (loadingBaseData) {\n return renderLoading();\n } else if (!loadingBaseData && territory) {\n return renderContent();\n } else {\n return null;\n }\n}\n","import React from 'react';\nimport numbro from 'numbro';\nimport classnames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\nimport { CSVLink } from 'react-csv';\nimport _ from 'lodash';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\n\nimport useWindowSize from '../../../../../../../../hooks/useWindowSize';\n\nimport styles from './DashboardDialogTransitionContent.module.scss';\n\nfunction formatValue(value) {\n if (!value) { return '-'; }\n\n return numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n });\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%'\n },\n printButton: {\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n }\n },\n table: {\n '& thead td': {\n borderBottom: 'none',\n },\n '& th': {\n fontWeight: 400,\n backgroundColor: '#fafafa'\n }\n }\n}));\n\nexport default function TransitionMatrixTable({\n fromYear,\n toYear,\n nodes,\n links,\n}) {\n const classes = useStyles();\n const windowSize = useWindowSize();\n\n const sourceCategories = _.sortBy(_.uniq(_.map(links, 'source')));\n const targetCategories = _.sortBy(_.uniq(_.map(links, 'target')));\n\n const renderDownloadTableLink = () => {\n if (_.isEmpty(links)) {\n return null;\n }\n\n let headers = [\n { key: 'fromCategory', label: '' },\n ];\n\n _.each(targetCategories, (targetCategory) => {\n const categoryData = _.find(nodes, { id: targetCategory });\n\n headers.push({\n key: _.kebabCase(`${ _.get(categoryData, 'label') } (${ toYear })`),\n label: `${ _.get(categoryData, 'label') } (${ toYear })`\n });\n });\n\n headers.push({\n key: 'toCategoryTotal',\n label: `Total (${ toYear })`\n });\n\n let parsedData = _(sourceCategories)\n .map((sourceCategory) => {\n const rowTotal = _.sumBy(links, (link) => {\n if (link.source === sourceCategory) {\n return link.value;\n }\n return 0;\n });\n const categoryData = _.find(nodes, { id: sourceCategory });\n let rowData = { fromCategory: `${ _.get(categoryData, 'label') } (${ fromYear })` };\n\n _.each(targetCategories, (targetCategory) => {\n const categoryData = _.find(nodes, { id: targetCategory });\n const linkData = _.find(links, { source: sourceCategory, target: targetCategory });\n const value = _.get(linkData, 'value');\n\n rowData[_.kebabCase(`${ _.get(categoryData, 'label') } (${ toYear })`)] = value;\n });\n\n rowData['toCategoryTotal'] = rowTotal;\n\n return rowData;\n })\n .flatten()\n .value();\n\n let totalRow = {\n fromCategory: `Total (${ fromYear })`,\n toCategoryTotal: _.sumBy(links, 'value'),\n };\n\n _.each(targetCategories, (targetCategory) => {\n const categoryData = _.find(nodes, { id: targetCategory });\n const columnTotal = _.sumBy(links, (link) => {\n if (link.target === targetCategory) {\n return link.value;\n }\n return 0;\n });\n\n totalRow[_.kebabCase(`${ _.get(categoryData, 'label') } (${ toYear })`)] = columnTotal;\n });\n\n parsedData = _.concat(parsedData, totalRow);\n\n return (\n <CSVLink\n data={ parsedData }\n headers={ headers }\n className={ classnames(styles.csvDownloadLink, classes.printButton) }\n filename=\"MapBiomas - Tabela de Dados.csv\"\n >\n <CloudDownloadIcon />\n <span>Download</span>\n </CSVLink>\n );\n };\n\n return (\n <div className={ styles.tableContainer } style={ { maxHeight: windowSize.height - 303 } }>\n <div className={ styles.tableHeader }>\n <h3 className={ styles.tableTitle }>\n <b><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.table.title\" /></b>\n <span><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.table.subtitle\" /></span>\n </h3>\n { renderDownloadTableLink() }\n </div>\n <div className={ styles.tableWrapper }>\n <div className={ styles.tableLeftTag }><span>{ fromYear }</span></div>\n <div className={ styles.tableTopTag }><span>{ toYear }</span></div>\n <div className={ styles.tableLeftCategoriesWrapper }>\n <ul className={ styles.tableCategoriesList }>\n { _.map(sourceCategories, (sourceCategory) => {\n const categoryData = _.find(nodes, { id: sourceCategory });\n\n return (\n <li key={ `source-item-${ sourceCategory }` }>{ _.get(categoryData, 'label') }</li>\n );\n }) }\n <li>Total</li>\n </ul>\n </div>\n <TableContainer>\n <Table size=\"small\" className={ classnames(classes.table, styles.matrixTable) }>\n <TableHead>\n <TableRow>\n { _.map(targetCategories, (targetCategory) => {\n const categoryData = _.find(nodes, { id: targetCategory });\n\n return (\n <TableCell align=\"right\" key={ `target-${ targetCategory }` } className={ styles.categoryCell }>{ _.get(categoryData, 'label') }</TableCell>\n );\n }) }\n <TableCell align=\"right\">Total</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n { _.map(sourceCategories, (sourceCategory) => {\n const rowTotalByCategory = _.sumBy(links, (link) => {\n const isChild = _.includes(link.target, '.');\n\n if (isChild && link.source === sourceCategory) {\n const baseParentId = link.target.split('.')[0].substring(0, 1);\n const parentData = _.find(links, (link) => {\n return link.source === sourceCategory && link.target.startsWith(baseParentId + '-');\n });\n\n if (parentData) {\n return 0;\n } else {\n return link.value;\n }\n }\n\n if (link.source === sourceCategory) {\n return link.value;\n }\n return 0;\n });\n\n return (\n <TableRow key={ `source-${ sourceCategory }` }>\n { _.map(targetCategories, (targetCategory) => {\n const linkData = _.find(links, { source: sourceCategory, target: targetCategory });\n const value = _.get(linkData, 'value');\n\n return (\n <TableCell\n key={ `value-${ sourceCategory }-${ targetCategory }` }\n align=\"right\"\n >\n { formatValue(value) }\n </TableCell>\n );\n }) }\n <TableCell align=\"right\">\n { formatValue(rowTotalByCategory) }\n </TableCell>\n </TableRow>\n );\n }) }\n <TableRow>\n { _.map(targetCategories, (targetCategory) => {\n const columnTotalByCategory = _.sumBy(links, (link) => {\n const isChild = _.includes(link.source, '.');\n\n if (isChild && link.target === targetCategory) {\n const baseParentId = link.source.split('.')[0].substring(0, 1);\n const parentData = _.find(links, (link) => {\n return link.target === targetCategory && link.source.startsWith(baseParentId + '-');\n });\n\n if (parentData) {\n return 0;\n } else {\n return link.value;\n }\n }\n\n if (link.target === targetCategory) {\n return link.value;\n }\n return 0;\n });\n\n return (\n <TableCell\n align=\"right\"\n key={ `target-total-${ targetCategory }` }\n className={ styles.categoryCell }\n >\n { formatValue(columnTotalByCategory) }\n </TableCell>\n );\n }) }\n <TableCell />\n {/* <TableCell align=\"right\">{ formatValue(_.sumBy(links, 'value')) }</TableCell> */}\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nimport { ResponsiveSankey } from '@nivo/sankey';\n\nfunction tooltipFormatter(value) {\n if (!value) { return ''; }\n\n const valueFormatted = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n\n return `${ valueFormatted } ha`\n}\n\nconst MyResponsiveSankey = ({ data, onClick = () => {} }) => (\n <ResponsiveSankey\n data={data}\n margin={{ top: 0, right: 180, bottom: 10, left: 180 }}\n align=\"justify\"\n colors={ (node) => {\n return node.color;\n } }\n nodeOpacity={1}\n nodeInnerPadding={3}\n nodeSpacing={24}\n nodeBorderWidth={0}\n nodeBorderColor={{ from: 'color', modifiers: [ [ 'darker', 0.8 ] ] }}\n linkOpacity={0.65}\n linkHoverOpacity={0.65}\n linkHoverOthersOpacity={0.1}\n enableLinkGradient={true}\n labelPosition=\"outside\"\n labelPadding={16}\n labelTextColor={{ from: 'color', modifiers: [ [ 'darker', 1 ] ] }}\n animate={true}\n motionStiffness={140}\n motionDamping={13}\n label={ (node) => {\n return node.label;\n } }\n tooltipFormat={ tooltipFormatter }\n onClick={ onClick }\n />\n)\n\nexport default function SankeyChart({\n nodes,\n links,\n onClick = () => {},\n}) {\n if (!nodes || !links) { return null; }\n\n return (\n <MyResponsiveSankey\n data={ { nodes, links } }\n onClick={ onClick }\n />\n );\n}\n","import React, { useRef, useState, useEffect, Fragment } from 'react';\nimport _ from 'lodash';\nimport html2canvas from 'html2canvas';\n\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport ImageIcon from '@material-ui/icons/Image';\nimport TextField from '@material-ui/core/TextField';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport SankeyChart from '../../../../components/SankeyChart';\n\nimport useFormatMessage from '../../../../../../../../../../hooks/useFormatMessage';\nimport useWindowSize from '../../../../../../../../../../hooks/useWindowSize';\n\nimport styles from './SankeyChartControl.module.scss';\n\nconst DEFAULT_PADDING = 340;\nconst CUSTOM_PADDING = 480;\n\nconst exportAsImage = async (element, imageFileName) => {\n const canvas = await html2canvas(element);\n const image = canvas.toDataURL('image/png', 1.0);\n downloadImage(image, imageFileName);\n};\n\nconst downloadImage = (blob, fileName) => {\n const fakeLink = window.document.createElement('a');\n fakeLink.style = 'display:none;';\n fakeLink.download = fileName;\n\n fakeLink.href = blob;\n\n document.body.appendChild(fakeLink);\n fakeLink.click();\n document.body.removeChild(fakeLink);\n\n fakeLink.remove();\n};\n\nexport default function SankeyChartControl({\n activeLevel,\n fromYear,\n toYear,\n nodes,\n links,\n onClick,\n}) {\n const chartRef = useRef();\n const windowSize = useWindowSize();\n const formatMessage = useFormatMessage();\n const [activeLinks, setActiveLinks] = useState([]);\n const [activeSourceClasses, setActiveSourceClasses] = useState([]);\n const [activeTargetClasses, setActiveTargetClasses] = useState([]);\n const hasClassesControl = activeLevel !== 1;\n const PADDING = !hasClassesControl ? DEFAULT_PADDING : CUSTOM_PADDING;\n\n useEffect(() => {\n if (hasClassesControl) {\n setActiveLinks([]);\n } else {\n setActiveLinks(links);\n }\n setActiveSourceClasses([]);\n setActiveTargetClasses([]);\n }, [activeLevel]);\n\n useEffect(() => {\n if (hasClassesControl) {\n const validSourceIds = _.map(activeSourceClasses, 'id');\n const validTargetIds = _.map(activeTargetClasses, 'id');\n let nextLinks = _.cloneDeep(links);\n nextLinks = _.filter(nextLinks, ({ source, target }) => {\n if (!_.isEmpty(validSourceIds) && _.isEmpty(validTargetIds)) {\n return _.includes(validSourceIds, source);\n } else if (_.isEmpty(validSourceIds) && !_.isEmpty(validTargetIds)) {\n return _.includes(validTargetIds, target);\n } else {\n return _.includes(validSourceIds, source) && _.includes(validTargetIds, target);\n }\n });\n\n setActiveLinks(nextLinks);\n } else {\n setActiveLinks(links);\n }\n }, [activeSourceClasses, activeTargetClasses, links]);\n\n const originOptions = _(links)\n .map('source')\n .uniq()\n .map((nodeId) => _.find(nodes, { id: nodeId }))\n .filter(({ level }) => level === activeLevel)\n .value();\n const destinationOptions = _(links)\n .map('target')\n .uniq()\n .map((nodeId) => _.find(nodes, { id: nodeId }))\n .filter(({ level }) => level === activeLevel)\n .value();\n\n const handleAutocompleteChange = (type, _event, newValue) => {\n if (type === 'source') {\n setActiveSourceClasses(newValue);\n } else if (type === 'target') {\n setActiveTargetClasses(newValue);\n }\n };\n\n const handleDownload = () => {\n exportAsImage(chartRef.current, 'MapBiomas-Sankey');\n };\n\n const renderClassesAutocomplete = (type = 'source') => {\n let options = originOptions;\n let value = activeSourceClasses;\n\n if (type === 'target') {\n options = destinationOptions;\n value = activeTargetClasses;\n }\n\n return (\n <FormControl\n variant=\"outlined\"\n className={ styles.autocompleteFormControl }\n >\n <Autocomplete\n multiple\n options={ options }\n getOptionLabel={ (option) => option.label }\n value={ value }\n onChange={ handleAutocompleteChange.bind(this, type) }\n renderInput={ (params) => (\n <TextField\n {...params}\n size=\"small\"\n variant=\"outlined\"\n label={ formatMessage(`mapbiomas.statistics.sankey.${ type }_classes`) }\n placeholder={ formatMessage('mapbiomas.statistics.sankey.classes_select_placeholder') }\n />\n ) }\n />\n </FormControl>\n );\n };\n\n const filteredNodes = _(activeLinks)\n .map(({ source, target }) => ([source, target]))\n .flatten()\n .uniq()\n .map((id) => _.find(nodes, { id }))\n .compact()\n .value();\n const nodeIds = _.map(filteredNodes, 'id');\n const filteredLinks = _.filter(activeLinks, ({ source, target }) => _.includes(nodeIds, source) && _.includes(nodeIds, target));\n\n return (\n <div className={ styles.contentWrapper }>\n { hasClassesControl &&\n <Fragment>\n { renderClassesAutocomplete('source') }\n { renderClassesAutocomplete('target') }\n </Fragment>\n }\n <p className={ styles.sankeyYears }>{ fromYear } - { toYear }</p>\n <Tooltip title=\"Download PNG\">\n <Button\n variant=\"contained\"\n size=\"small\"\n className={ styles.downloadButton }\n onClick={ handleDownload }\n >\n <ImageIcon />\n </Button>\n </Tooltip>\n { !_.isEmpty(activeLinks) && !_.isEmpty(filteredNodes) &&\n <div className={ styles.sankeyWrapper } style={ { height: windowSize.height - PADDING } }>\n <div style={ { height: !hasClassesControl ? 720 : 1200 } } ref={ chartRef }>\n <SankeyChart\n nodes={ filteredNodes }\n links={ filteredLinks }\n onClick={ onClick }\n />\n </div>\n </div>\n }\n </div>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASSES_DATA = gql`\n query {\n classTreeList {\n id\n key\n i18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n mvClassTreeLevelsUi {\n id\n color\n classId\n positionInTree\n level\n parentId\n defaultName\n i18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n }\n }\n }\n }\n`;\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData(\n $level: [Int!]!,\n $territoryIds: [Int!]!,\n $fromYear: Int!,\n $toYear: Int!,\n $classTreeId: Int!,\n ) {\n coverageClassificationChangesDataByTreeList(\n level: $level,\n fromYear: $fromYear,\n toYear: $toYear,\n classTreeId: $classTreeId,\n territoryIds: $territoryIds \n ) {\n id\n fromTreeNodeId\n toTreeNodeId\n fromYear\n toYear\n areaInHa\n }\n }\n`;\n","import React, { useState } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\n\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\nimport Chip from '@material-ui/core/Chip';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\n\nimport TransitionMatrixTable from './TransitionMatrixTable';\nimport SankeyChart from '../../components/SankeyChart';\n\nimport TabList from '../../../../../../components/TabList';\n\nimport SankeyChartControl from './components/SankeyChartControl';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n GET_CLASSES_DATA,\n} from './query';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport styles from './DashboardDialogTransitionContent.module.scss';\n\nconst levelIds = [1, 2];\n\nexport default function DashboardDialogTransitionContent({\n baseParams,\n onLinkClick = () => {},\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n const [activeLevel, setActiveLevel] = useState(1);\n const [activeTab, setActiveTab] = useState('sankey');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n const yearRange = _.get(baseParams, 'yearRange');\n const [fromYear, toYear] = _.split(yearRange, '-');\n const { data: defaultClassTreeData, loading: loadingClassesData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey: 'default'\n }\n });\n const defaultClassTreeLevelsList = _.get(defaultClassTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const defaultClassTreeId = _.get(defaultClassTreeData, 'classTreeByKey[0].id');\n // const { data: classesData, loading: loadingClassesData } = useQuery(GET_CLASSES_DATA, {\n // client: coverageApolloClient\n // });\n // const defaultClassTree = _.find(_.get(classesData, 'classTreesList'), { key: 'default' });\n // const defaultClassTreeId = _.get(defaultClassTree, 'id');\n // const defaultClassTreeLevelsList = _.get(defaultClassTree, 'classTreeLevelsList');\n\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n level: _.range(1, activeLevel + 1),\n territoryIds: territoryIds,\n fromYear: parseInt(fromYear),\n toYear: parseInt(toYear),\n classTreeId: defaultClassTreeId,\n },\n skip: _.isEmpty(territoryIds) || !yearRange || loadingClassesData || !defaultClassTreeId\n });\n\n const handleLevelChange = (event) => {\n setActiveLevel(Number(event.target.value));\n };\n\n const handleSankeyClick = (data) => {\n if (_.get(data, 'type') === 'link') {\n const { source, target } = data;\n const sourceTreeNodeId = _.get(source, 'treeNodeId');\n const targetTreeNodeId = _.get(target, 'treeNodeId');\n const parsedId = (sourceTreeNodeId * 100) + targetTreeNodeId;\n\n onLinkClick(parsedId);\n }\n };\n\n const renderLoading = () => {\n return (\n <div className={ styles.loadingWrapper }>\n <CircularProgress />\n </div>\n );\n };\n\n const renderTabContent = () => {\n const coverageClassificationChangesDataByTreesList = _.get(baseData, 'coverageClassificationChangesDataByTreeList');\n\n if (_.isNil(coverageClassificationChangesDataByTreesList)) {\n return null;\n }\n\n const uniqData = _.uniqBy(coverageClassificationChangesDataByTreesList, (obj) => `${ obj.fromTreeNodeId }-${ obj.toTreeNodeId }-${ obj.fromYear }-${ obj.toYear }`);\n const aggregatedData = _.values(_.reduce(uniqData, (result, obj) => {\n const key = `${ obj.fromTreeNodeId }-${ obj.toTreeNodeId }-${ obj.fromYear }-${ obj.toYear }`;\n const nextValue = result[key] ? result[key].areaInHa + obj.areaInHa : obj.areaInHa;\n\n result[key] = {\n ...obj,\n areaInHa: nextValue\n };\n\n return result;\n }, {}));\n\n const parsedData = _(aggregatedData)\n .map((item) => {\n const fromClassData = _.find(defaultClassTreeLevelsList, { id: _.get(item, 'fromTreeNodeId') });\n const toClassData = _.find(defaultClassTreeLevelsList, { id: _.get(item, 'toTreeNodeId') });\n const fromYear = _.get(item, 'fromYear');\n const toYear = _.get(item, 'toYear');\n\n const fromPositionLevelLabel = `${ _.join(_.get(fromClassData, 'positionInTree'), '.') }`;\n const fromNodeId = `${ fromPositionLevelLabel }-${ fromYear }-${ _.get(fromClassData, 'id') }`;\n const fromStringList = _.get(fromClassData, 'i18nStrings');\n const fromSelectedString = _.find(fromStringList, { language: locale });\n const fromNode = {\n type: 'node',\n id: fromNodeId,\n treeNodeId: _.get(fromClassData, 'id'),\n level: _.get(fromClassData, 'level'),\n label: `${ fromPositionLevelLabel }. ${ _.get(fromSelectedString, 'stringValue') }`,\n color: _.get(fromClassData, 'color'),\n };\n const toPositionLevelLabel = `${ _.join(_.get(toClassData, 'positionInTree'), '.') }`;\n const toNodeId = `${ toPositionLevelLabel }-${ toYear }-${ _.get(toClassData, 'id') }`;\n const toStringList = _.get(toClassData, 'i18nStrings');\n const toSelectedString = _.find(toStringList, { language: locale });\n const toNode = {\n type: 'node',\n id: toNodeId,\n treeNodeId: _.get(toClassData, 'id'),\n level: _.get(toClassData, 'level'),\n label: `${ toPositionLevelLabel }. ${ _.get(toSelectedString, 'stringValue') }`,\n color: _.get(toClassData, 'color'),\n };\n const link = {\n type: 'link',\n source: fromNodeId,\n target: toNodeId,\n value: _.get(item, 'areaInHa'),\n };\n\n if (fromClassData && toClassData) {\n return [fromNode, toNode, link];\n } else {\n return [];\n }\n })\n .flatten()\n .value();\n\n const nodes = _.orderBy(_.uniqBy(_.filter(parsedData, { type: 'node' }), 'id'), ['label'], ['asc']);\n const links = _.orderBy(_.filter(parsedData, { type: 'link' }), ['source', 'target'], ['asc', 'asc']);\n\n if (_.isEmpty(nodes) || _.isEmpty(links)) {\n return null;\n }\n\n if (activeTab === 'sankey') {\n return (\n <SankeyChartControl\n activeLevel={ activeLevel }\n fromYear={ fromYear }\n toYear={ toYear }\n nodes={ nodes }\n links={ links }\n onClick={ handleSankeyClick }\n />\n );\n } else {\n return (\n <TransitionMatrixTable\n fromYear={ fromYear }\n toYear={ toYear }\n nodes={ nodes }\n links={ links }\n />\n );\n }\n };\n\n const renderContent = () => {\n return (\n <div className={ styles.content }>\n <RadioGroup\n name=\"level\"\n value={ activeLevel }\n onChange={ handleLevelChange }\n className={ styles.radioGroup }\n >\n { _.map(levelIds, (level) => {\n return (\n <FormControlLabel\n key={ `level-control-${ level }` }\n classes={ {\n label: styles.radioLabel\n } }\n value={ level }\n control={ <Radio size=\"small\" color=\"primary\" className={ styles.radioGroupInput } /> }\n label={ `${ formatMessage('mapbiomas.dashboard.coverage.coverage_changes.levels_control.label') } ${ level }` }\n />\n );\n }) }\n </RadioGroup>\n <div className={ styles.tabListWrapper }>\n <TabList\n itemSizes={{ xs: 4 }}\n items={ [\n { id: 'sankey', label: formatMessage('mapbiomas.dashboard.coverage.coverage_changes.view_mode.sankey') },\n { id: 'matrix', label: formatMessage('mapbiomas.dashboard.coverage.coverage_changes.view_mode.matrix') },\n ] }\n value={ activeTab }\n onChange={ setActiveTab }\n />\n </div>\n <div className={ styles.dataWrapper }>\n { renderTabContent() }\n </div>\n </div>\n );\n };\n\n if (loadingBaseData) {\n return renderLoading();\n } else if (!loadingBaseData && territories) {\n return renderContent();\n } else {\n return null;\n }\n}\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nfunction tooltipFormatter(params) {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`;\n let str = `<span>${ params[0].axisValue }</span>`;\n\n params.forEach((item) => {\n const value = _.isObject(item.data) ? item.data.value : item.data;\n\n if (value) {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n const paramValue = `<span>${ colorSpan(item.color) } ${ item.seriesName }: ${ valueLabel }</span>`;\n\n str += paramValue;\n }\n });\n\n return str;\n}\n\nexport default function BarChart({\n categories = [],\n series = [],\n vertical = true\n}) {\n let xAxis = {\n type: \"category\",\n axisPointer: {\n type: \"shadow\"\n },\n axisLabel: {\n fontSize: 11,\n color: \"#767676\"\n },\n axisLine: {\n color: \"#DDD\"\n },\n data: categories\n };\n let yAxis = {\n axisTick: {\n show: false\n },\n axisLine: {\n color: \"#DDD\"\n },\n splitLine: {\n lineStyle: {\n color: \"rgba(0, 0, 0, 0.05)\"\n }\n },\n axisLabel: {\n formatter: (value) => {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n\n return valueLabel;\n },\n fontSize: 11,\n color: \"#767676\"\n }\n };\n\n if (!vertical) {\n let tempValue = xAxis;\n xAxis = yAxis;\n yAxis = tempValue;\n }\n\n return (\n <ReactEcharts\n option={ {\n xAxis,\n yAxis,\n tooltip: {\n confine: true,\n textStyle: {\n align: \"left\",\n color: \"#444\",\n fontSize: 13\n },\n backgroundColor: \"#FFFFFF\",\n borderColor: \"rgba(0, 0, 0, 0.1)\",\n borderWidth: 1,\n extraCssText: \"box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);\",\n trigger: \"axis\",\n formatter: tooltipFormatter,\n },\n grid: {\n top: \"8%\",\n right: \"20px\",\n bottom: \"8%\",\n left: \"20px\",\n containLabel: true\n },\n series: _.map(series, (serie) => {\n return {\n ...serie,\n type: 'bar',\n smooth: true,\n };\n }),\n toolbox: {\n feature: {\n saveAsImage: {\n name: 'MapBiomas',\n title: 'Download',\n }\n }\n },\n } }\n notMerge={ true }\n />\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($territoryIds: [Int!]!, $classTreeId: Int!) {\n classTree(id: $classTreeId) {\n id\n key\n i18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n mvClassTreeLevelsUi {\n id\n classId\n color\n positionInTree\n level\n parentId\n defaultName\n i18nStrings {\n language\n\t\t\t\t\tstringValue\n }\n classTreeNode {\n classe {\n id\n key\n pixelValue\n }\n }\n }\n }\n\n coverageClassificationDataList: coverageClassificationDataByTreeList(\n classTreeId: $classTreeId,\n\t\t\tbufferId: null,\n\t\t\tterritoryIds: $territoryIds\n ) {\n territoryId\n year\n classTreeNodeId\n areaInHa\n }\n }\n`;\n","import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport numbro from 'numbro';\nimport { FormattedMessage } from 'react-intl';\nimport { CSVLink } from 'react-csv';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CloseIcon from '@material-ui/icons/Close';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport Fade from '@material-ui/core/Fade';\nimport IconButton from '@material-ui/core/IconButton';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\n\nimport BaseForm from '../../../../../../layout/Header/components/BaseForm';\n\nimport PieChart from '../../components/PieChart';\nimport BarChart from '../../components/BarChart';\nimport StickyTable from '../../components/StickyTable';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './DashboardDialogPastureQualityContent.module.scss';\n\nconst formatNumber = (value) => numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n});\n\nconst useStyles = makeStyles((theme) => ({\n yearValue: {\n color: theme.palette.primary.main\n },\n printButton: {\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n }\n },\n}));\n\nexport default function DashboardDialogPastureQualityContent({\n activeYear,\n baseParams,\n classTreeId,\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n const classes = useStyles();\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n const activeClassesLevelsListItems = _.get(baseParams, 'activePastureQualityQualityClassesListItems');\n\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds: territoryIds,\n classTreeId: classTreeId\n },\n skip: _.isEmpty(territoryIds) || !classTreeId\n });\n\n const classesLevelsList = _.get(baseData, 'classTree.mvClassTreeLevelsUi');\n const parsedActiveClassesLevelsListItems = _.map(activeClassesLevelsListItems, (id) => {\n const classTreeData = _.find(classesLevelsList, (item) => {\n return _.get(item, 'classTreeNode.classe.pixelValue') === id;\n });\n\n return _.get(classTreeData, 'id') || id;\n });\n\n const classesLevelsListByLevel1 = _.filter(classesLevelsList, { level: 1 });\n const filteredClassesLevelsListByLevel1 = _.filter(classesLevelsListByLevel1, (item) => {\n return _.includes(parsedActiveClassesLevelsListItems, item.id);\n });\n const filteredClassesLevelsListByLevel1Ids = _.map(filteredClassesLevelsListByLevel1, 'id');\n const activeClassesLevelsList = _.filter(classesLevelsList, (item) => _.includes(parsedActiveClassesLevelsListItems, item.id));\n const coverageClassificationDataList = _.get(baseData, 'coverageClassificationDataList');\n const aggregatedCoverageClassificationDataList = _.values(_.reduce(coverageClassificationDataList, (result, obj) => {\n const key = `${ obj.year }-${ obj.classTreeNodeId }`;\n const nextValue = result[key] ? result[key].areaInHa + obj.areaInHa : obj.areaInHa;\n\n result[key] = {\n ...obj,\n areaInHa: nextValue\n };\n\n return result;\n }, {}));\n\n const parsedData = _.filter(_.map(aggregatedCoverageClassificationDataList, (item) => {\n const classData = _.find(classesLevelsList, { id: item.classTreeNodeId });\n\n return {\n year: Number(_.replace(item.year, '_', '')),\n areaInHa: item.areaInHa,\n classData,\n };\n }), 'classData');\n const years = _.sortBy(_.uniq(_.map(parsedData, 'year')));\n\n const parsedClassesLevelsList = _.map(activeClassesLevelsList, (classData) => {\n const stringList = _.get(classData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const className = `${ _.join(_.get(classData, 'positionInTree'), '.') }. ${ _.get(selectedString, 'stringValue') }`;\n\n return {\n ...classData,\n name: className,\n data: _.map(years, (year) => {\n const coverageClassificationData = _.find(parsedData, (item) => {\n return item.year === year &&\n item.classData.id === classData.id;\n });\n\n return coverageClassificationData ? _.get(coverageClassificationData, 'areaInHa') : null\n })\n };\n });\n\n const pieChartData = _(parsedData)\n .filter((item) => {\n return item.year === activeYear &&\n _.includes(filteredClassesLevelsListByLevel1Ids, _.get(item, 'classData.id'));\n })\n .map((item) => {\n const stringList = _.get(item, 'classData.i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n\n return {\n name:_.get(selectedString, 'stringValue'),\n value: _.get(item, 'areaInHa'),\n itemStyle: {\n color: _.get(item, 'classData.color')\n },\n };\n })\n .value();\n\n const barChartSeriesData = _.map(parsedClassesLevelsList, (item) => {\n return {\n name: item.name,\n color: item.color,\n stack: item.level,\n data: item.data,\n level: item.level,\n padding: item.level * 12,\n };\n });\n\n const renderLoading = () => {\n return (\n <div className={ styles.loadingWrapper }>\n <CircularProgress />\n </div>\n );\n };\n\n const renderDownloadTableLink = () => {\n if (_.isEmpty(years) || _.isEmpty(barChartSeriesData)) {\n return null;\n }\n\n let headers = [\n { key: 'class', label: 'Classe' },\n ];\n\n _.each(years, (year) => {\n headers.push({ key: _.toString(year), label: _.toString(year) });\n });\n\n const parsedData = _(barChartSeriesData)\n .map((serie) => {\n let rowData = { class: _.get(serie, 'name') };\n\n _.each(_.get(serie, 'data'), (value, index) => {\n rowData[_.toString([years[index]])] = value;\n });\n\n return rowData;\n })\n .flatten()\n .value();\n\n return (\n <CSVLink\n data={ parsedData }\n headers={ headers }\n className={ classnames(styles.csvDownloadLink, classes.printButton) }\n filename=\"MapBiomas - Tabela de Dados.csv\"\n >\n <CloudDownloadIcon />\n <span>Download</span>\n </CSVLink>\n );\n };\n\n const renderContent = () => {\n return (\n <div className={ styles.content }>\n {/* <BaseForm inline /> */}\n <div className={ styles.chartsWrapper }>\n <div>\n <h3><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title\" values={ { year: activeYear } } /></h3>\n <PieChart\n serie={ {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.unit'),\n data: pieChartData\n } }\n />\n </div>\n <div>\n <h3><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title\" /></h3>\n <BarChart\n categories={ years }\n series={ barChartSeriesData }\n />\n </div>\n </div>\n <div className={ styles.dataTableWrapper }>\n <div className={ styles.tableHeader }>\n <h3 className={ styles.tableTitle }>\n <b><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.table.title\" /></b>\n <span><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.table.subtitle\" /></span>\n </h3>\n { renderDownloadTableLink() }\n </div>\n <StickyTable\n columns={ years }\n rows={ barChartSeriesData }\n />\n </div>\n </div>\n );\n };\n\n if (loadingBaseData) {\n return renderLoading();\n } else if (!loadingBaseData && territories) {\n return renderContent();\n } else {\n return null;\n }\n}\n","import React from 'react'\nimport ReactEcharts from 'echarts-for-react'\nimport _ from 'lodash'\nimport { onCurrentLocaleCustom } from '../../../../../../../../utils/locale'\nimport numbro from 'numbro'\n\nconst getClassAreaForYear = _.memoize((year) => _.flow(\n _.property('classTreeNode.coverageClassificationDataByTreeList'),\n _.partial(_.filter, _, { year: year }),\n _.partial(_.map, _, 'areaInHa'),\n _.sum\n))\n\nconst getPositionsToOffsetForIndex = (index, numberOfCharts) => {\n const horizontal = { 0: 'left', 1: 'right' }\n const vertical = { 0: 'bottom', 1: 'top' }\n const div = _.flow(_.divide, _.floor)\n const mod = (x, y) => x - (y * div(x, y))\n\n let positions = [ horizontal[mod(index, 2)] ]\n if (numberOfCharts > 2) {\n positions.push(vertical[div(index, 2)])\n }\n\n return positions\n}\n\nexport default function ClassificationsChart({\n // Temporary workaround while this component isn't refactored into separate\n // non-grid based chart components\n allClassTreeLevels = [], // <---\n activeClassTreeLevels = [],\n classTreeCharts = [],\n years = null,\n activeYear\n}) {\n if (!classTreeCharts || !years || !activeYear) {\n return null\n }\n\n const tooltipFormatter = (params) => {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`\n\n const year = _.get(params, `[0].value[${_.indexOf(_.get(params, '[0].dimensionNames'), 'years')}]`, activeYear)\n const chartType = _.get(params, 'componentSubType', _.get(params, '[0].componentSubType'))\n\n if (chartType === 'pie') {\n const value = numbro(_.get(params, `data[${ _.get(params, 'encode.value[0]') }]`)).format({\n thousandSeparated: true,\n mantissa: 0\n })\n\n const percent = numbro(params.percent / 100).format({\n output: 'percent',\n mantissa: 2\n })\n\n return `\n <span>${_.get(params, 'seriesName')}</span>\n <span>${ colorSpan(params.color) } ${ _.get(params, 'name') }: ${ value } ha (${ percent })</span>\n `\n } else {\n return `<span>${ year }</span> \\n` +\n _.map(\n activeClassTreeLevels,\n (node) => `\n <span>\n ${ colorSpan(node.color) }\n ${ node.positionInTree.join('.') }. ${ onCurrentLocaleCustom(node.i18nStrings) }:\n ${ numbro(\n _.sum(_.map(_.filter(\n _.get(node, 'classTreeNode.coverageClassificationDataByTreeList'),\n { year: year }\n ), 'areaInHa', 0)\n )).format({\n thousandSeparated: true,\n mantissa: 0\n })\n } ha\n </span>\n `\n ).join('\\n')\n }\n }\n\n const generateBaseSerieForAnyChart = (chart) => ({\n type: _.get(chart, 'chartType.key')\n })\n\n // ugly workaround to postpone a little some refactor that will be needed\n // because I didn't make the best design choices in this component\n let levelsToShowOnPieChart = _.filter(allClassTreeLevels, { level: 1 })\n if (levelsToShowOnPieChart.length === 1) {\n levelsToShowOnPieChart = _.filter(allClassTreeLevels, { level: 2 })\n }\n\n const generateSerieForSingleYearChart = (chart) => (\n _.assign(generateBaseSerieForAnyChart(chart), {\n id: `serie#nodeId/year(${activeYear})`,\n name: `${activeYear}`,\n itemStyle: {\n color: ({ dataIndex }) => (\n _.get(levelsToShowOnPieChart, `[${dataIndex}].color`)\n )\n },\n label: {\n show: false\n },\n encode: {\n itemName: 'treeNodeNames',\n value: `year#${activeYear}`\n },\n left: '15',\n right: '15',\n ...(_.zipObject(\n getPositionsToOffsetForIndex(\n _.findIndex(classTreeCharts, { id: chart.id }),\n classTreeCharts.length\n ),\n ['55%', '55%']\n )),\n })\n )\n\n const generateSeriesForMultiYearChart = (chart, chartIndex) => _.map(activeClassTreeLevels, (treeNode) => (\n _.assign(generateBaseSerieForAnyChart(chart), {\n id: `serie#nodeId/year(${treeNode.id})`,\n name: onCurrentLocaleCustom(_.get(treeNode, 'i18nStrings')),\n itemStyle: { color: treeNode.color },\n encode: { x: 'years', y: `treeNodeId#${treeNode.id}` },\n xAxisIndex: chartIndex,\n yAxisIndex: chartIndex\n })\n ))\n\n const optionTransforms = {\n hideAxis(option, chart) {\n _.each(['x', 'y'], (axis) => {\n _.set(\n _.find(option[`${axis}Axis`], { id: `${axis}Axis#chartId(${chart.id})` }),\n 'show', false\n )\n })\n },\n swapAxis(option, chart) {\n const oldXAxis = _.first(_.remove(option.xAxis, { id: `xAxis#chartId(${chart.id})` }))\n const oldYAxis = _.first(_.remove(option.yAxis, { id: `yAxis#chartId(${chart.id})` }))\n const oldXAxisId = oldXAxis.id\n oldXAxis.id = oldYAxis.id\n oldYAxis.id = oldXAxisId\n option.xAxis.push(oldYAxis)\n option.yAxis.push(oldXAxis)\n\n _.each(_.filter(option.series, { id: `serie#chartId(${chart.id})` }), (serie) => {\n const tempEncodeX = serie.encode.x\n serie.encode.x = serie.encode.y\n serie.encode.y = tempEncodeX\n })\n },\n parseStackedBar(option) {\n _.each(option.series, (serie) => {\n if (serie.type === 'stacked_bar') {\n serie.type = 'bar';\n serie.stack = 'years';\n }\n });\n }\n }\n\n const chartTypeTransformationMappings = {\n sunburst: ['putLevelsAsChildrenOnData'],\n pie: ['hideAxis'],\n bar: ['swapAxis'],\n stacked_bar: ['parseStackedBar'],\n line: [],\n area: [],\n stacked_area: [],\n column: [],\n stacked_column: []\n }\n\n const dataset = {\n sourceHeader: false,\n source: {\n years,\n treeNodeNames: _.map(levelsToShowOnPieChart, _.flow(_.property('i18nStrings'), onCurrentLocaleCustom)),\n\n ...(_.zipObject(\n _.map(activeClassTreeLevels, (n) => `treeNodeId#${n.id}`),\n _.map(activeClassTreeLevels, _.over(_.map(years, getClassAreaForYear)))\n )),\n\n ...(_.zipObject(\n _.map(years, (y) => `year#${y}`),\n _.map(years, (y) => _.map(levelsToShowOnPieChart, getClassAreaForYear(y)))\n ))\n }\n }\n\n let option = {\n legend: {\n show: false\n },\n tooltip: {\n confine: true,\n textStyle: {\n align: 'left',\n color: '#444',\n fontSize: 13\n },\n backgroundColor: '#FFFFFF',\n borderColor: 'rgba(0, 0, 0, 0.1)',\n borderWidth: 1,\n extraCssText: 'box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);',\n formatter: tooltipFormatter\n },\n toolbox: {\n feature: {\n saveAsImage: {\n name: 'MapBiomas',\n title: 'Download',\n }\n }\n },\n\n dataset,\n grid: _.map(classTreeCharts, (chart, index) => ({\n id: `chart#${chart.id}`,\n tooltip: {\n trigger: chart.singleYear ? 'item' : 'axis'\n },\n left: '15',\n right: '15',\n ...(_.zipObject(getPositionsToOffsetForIndex(index, classTreeCharts.length), ['55%', '55%']))\n })),\n xAxis: _.map(classTreeCharts, (chart, index) => ({\n id: `xAxis#chartId(${chart.id})`,\n type: 'category',\n gridIndex: index\n })),\n yAxis: _.map(classTreeCharts, (chart, index) => ({\n id: `yAxis#chartId(${chart.id})`,\n gridIndex: index\n })),\n series: _.flatMap(classTreeCharts, _.cond([\n [_.matches({ chartType: { singleYear: true }}), generateSerieForSingleYearChart],\n [_.constant(true), generateSeriesForMultiYearChart]\n ]))\n }\n\n _.each(classTreeCharts, (chart) => {\n _.each(chartTypeTransformationMappings[chart.chartType.key], (transformation) => {\n optionTransforms[transformation](option, chart)\n })\n })\n\n return <ReactEcharts\n option={ option }\n style={{\n width: '100%',\n height: (((_.floor((classTreeCharts.length - 1) / 2) % 2) + 1) * 380)\n }}\n />\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CATEGORIES_OF_OBJECT_TREE_NODES = gql`\n query GetCategoriesOfObjectTreeNodes($objectTreeNodeIds: [Int!]!) {\n geospatialObjectCategoryTreeNodesList(ids: $objectTreeNodeIds) {\n id\n categoryId\n }\n }\n`\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData(\n $territoryIds: [Int!]!,\n $classTreeKey: String!,\n $activeClassTreeNodeIds: [Int!]!,\n $hasObjectFilter: Boolean!,\n $activeObjectCategoryIds: [Int!],\n $bufferId: Int\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n i18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\n classTreeCharts {\n id\n i18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n }\n coverageClassificationChartType {\n key\n singleYear\n }\n levelsToBeShownOnChart\n }\n\n allClassTreeLevelsList: mvClassTreeLevelsUi {\n id\n classId\n color\n positionInTree\n level\n childrenIds\n parentId\n defaultName\n i18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n }\n\n classTreeNode {\n coverageClassificationDataByTree(\n territoryId: $territoryIds\n ) @skip(if: $hasObjectFilter) {\n territoryId\n year\n areaInHa\n }\n\n coverageClassificationDataByTreeListWithObjectIntersection: coverageClassificationDataByTree(\n territoryId: $territoryIds,\n objectCategoryId: $activeObjectCategoryIds,\n\t\t\t\t\t\tbufferId: $bufferId\n ) @include(if: $hasObjectFilter) {\n territoryId\n year\n areaInHa\n }\n }\n }\n\n mvClassTreeLevelsUi (\n ids: $activeClassTreeNodeIds\n ) {\n id\n classId\n color\n positionInTree\n level\n childrenIds\n parentId\n defaultName\n i18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n }\n\n classTreeNode {\n coverageClassificationDataByTree(\n territoryId: $territoryIds\n ) @skip(if: $hasObjectFilter) {\n territoryId\n year\n areaInHa\n }\n\n coverageClassificationDataByTreeListWithObjectIntersection: coverageClassificationDataByTree(\n territoryId: $territoryIds,\n objectCategoryId: $activeObjectCategoryIds,\n bufferId: $bufferId\n ) @include(if: $hasObjectFilter) {\n territoryId\n year\n areaInHa\n }\n }\n }\n }\n }\n`\n","import React from 'react'\nimport _ from 'lodash'\nimport { useQuery } from '@apollo/react-hooks'\nimport { FormattedMessage } from 'react-intl'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { CSVLink } from 'react-csv'\nimport classnames from 'classnames'\n\nimport { makeStyles } from '@material-ui/core/styles'\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload'\n\nimport ClassificationsChart from '../../components/ClassificationsChart'\nimport StickyTable from '../../components/StickyTable'\nimport { onCurrentLocaleCustom } from '../../../../../../../../utils/locale'\nimport { GET_BASE_DATA, GET_CATEGORIES_OF_OBJECT_TREE_NODES } from './query'\nimport styles from './DashboardDialogGenericClassesContent.module.scss'\n\nconst getYearRangeFromClassTreeNodes = _.flow(\n _.partial(_.flatMap, _, 'classTreeNode.coverageClassificationDataByTreeList'),\n _.partial(_.map, _, _.flow(_.property('year'), _.method('slice', 1), Number)),\n _.uniq,\n _.sortBy\n)\n\nconst useStyles = makeStyles((theme) => ({\n printButton: {\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n }\n },\n}));\n\nexport default function DashboardDialogGenericClassesContent({\n clientType,\n activeYear,\n baseParams,\n hasObjectFilter = false\n}) {\n const classes = useStyles();\n const activeSubmodule = _.get(baseParams, 'activeSubmodule')\n const territories = _.get(baseParams, 'territories')\n const territoryIds = _.map(territories, 'id')\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds')\n const activeClassTreeOptionValue = _.get(baseParams, 'activeClassTreeOptionValue')\n const activeObjectTreeNodeIds = _.get(baseParams, 'activeObjectTreeNodeIds')\n const bufferId = _.get(baseParams, 'buffer')\n const objectTreeNodesData = useQuery(\n GET_CATEGORIES_OF_OBJECT_TREE_NODES, {\n variables: { objectTreeNodeIds: activeObjectTreeNodeIds },\n skip: !hasObjectFilter\n }\n )\n const activeObjectCategoryIds = _.map(_.get(objectTreeNodesData, 'data.geospatialObjectCategoryTreeNodesList'), 'categoryId')\n\n if (!activeObjectCategoryIds) {\n return null\n }\n\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds,\n activeClassTreeNodeIds,\n hasObjectFilter,\n activeObjectCategoryIds,\n bufferId,\n classTreeKey: activeClassTreeOptionValue,\n },\n skip: _.isEmpty(territoryIds) || !activeClassTreeOptionValue\n })\n\n const classTree = _.get(baseData, 'classTreeByKey')\n const allClassTreeLevels = _.get(classTree, 'allClassTreeLevelsList')\n const classTreeLevels = _.get(classTree, 'mvClassTreeLevelsUi')\n\n if (hasObjectFilter && classTreeLevels) {\n _.each(_.concat(allClassTreeLevels, classTreeLevels), (ctl) => {\n _.set(\n ctl,\n 'classTreeNode.coverageClassificationDataByTree',\n _.get(ctl, 'classTreeNode.coverageClassificationDataByTreeListWithObjectIntersection')\n )\n })\n }\n\n const years = getYearRangeFromClassTreeNodes(classTreeLevels)\n const classTreeCharts = _.get(classTree, 'classTreeCharts')\n const tableRows = _.map(classTreeLevels, (treeNode) => ({\n name: `${treeNode.positionInTree.join('. ')}. ${onCurrentLocaleCustom(treeNode.i18nStrings)}`,\n padding: treeNode.level * 12,\n data: _.mapKeys(\n _.mapValues(\n _.groupBy(treeNode.classTreeNode.coverageClassificationDataByTreeList, 'year'),\n '[0].areaInHa'\n ),\n (_value, year) => _.trimStart(year, '_')\n )\n }))\n\n const renderLoading = () => {\n return (\n <div className={ styles.loadingWrapper }>\n <CircularProgress />\n </div>\n )\n }\n\n const renderDownloadTableLink = () => {\n if (_.isEmpty(years) || _.isEmpty(tableRows)) {\n return null;\n }\n\n let headers = [\n { key: 'class', label: 'Classe' },\n ];\n\n _.each(years, (year) => {\n headers.push({ key: _.toString(year), label: _.toString(year) });\n });\n\n const parsedData = _(tableRows)\n .map((serie) => {\n let rowData = { class: _.get(serie, 'name') };\n\n _.each(_.get(serie, 'data'), (value, year) => {\n rowData[_.toString(year)] = value;\n });\n\n return rowData;\n })\n .flatten()\n .value();\n\n return (\n <CSVLink\n data={ parsedData }\n headers={ headers }\n className={ classnames(styles.csvDownloadLink, classes.printButton) }\n filename=\"MapBiomas - Tabela de Dados.csv\"\n >\n <CloudDownloadIcon />\n <span>Download</span>\n </CSVLink>\n );\n };\n\n const renderContent = () => {\n let parsedClassTreeCharts = _.cloneDeep(classTreeCharts);\n\n // TODO: Find a way to update 'fire_annual' chart type on database to load from 'classTreeChartsList'\n if (activeSubmodule === 'fire_annual') {\n _.set(parsedClassTreeCharts, '[0].coverageClassificationChartType.key', 'stacked_bar');\n }\n\n return (\n <div className={ styles.content }>\n <div className={ styles.chartsWrapper }>\n <ClassificationsChart\n // Add key using 'activeSubmodule' to prevent mixed chart types bug on 'fire' module\n key={ activeSubmodule }\n allClassTreeLevels={ allClassTreeLevels }\n activeClassTreeLevels={ classTreeLevels }\n classTreeCharts={ parsedClassTreeCharts }\n years={ years }\n activeYear={ activeYear }\n />\n { /* _.map(chartTypes, renderChart) */ }\n </div>\n <div className={ styles.dataTableWrapper }>\n <div className={ styles.tableHeader }>\n <h3 className={ styles.tableTitle }>\n <b><FormattedMessage id=\"mapbiomas.dashboard.generic.data_table.title\" /></b>\n <span><FormattedMessage id=\"mapbiomas.dashboard.generic.data_table.subtitle\" /></span>\n </h3>\n { renderDownloadTableLink() }\n </div>\n <StickyTable\n columns={ years }\n rows={ tableRows }\n />\n </div>\n </div>\n )\n }\n\n const hasDataByTree = _.some(\n allClassTreeLevels,\n (t) => _.size(_.get(t, 'classTreeNode.coverageClassificationDataByTree')) > 0\n )\n\n const hasDataByTreeIntersectedByObject = _.some(\n allClassTreeLevels,\n (t) => _.size(_.get(t, 'classTreeNode.coverageClassificationDataByTreeListWithObjectIntersection')) > 0\n )\n\n if (loadingBaseData) {\n return renderLoading()\n } else if (!hasDataByTree && !hasDataByTreeIntersectedByObject) {\n return <div style={{ marginTop: '16px', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\n <h3 className={ styles.tableTitle }>Ainda não temos estatÃsticas para as categorias selecionadas.</h3>\n </div>\n } else if (!loadingBaseData && territories) {\n return renderContent()\n } else {\n return null\n }\n}\n","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Fade from '@material-ui/core/Fade';\nimport IconButton from '@material-ui/core/IconButton';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Collapse from '@material-ui/core/Collapse';\n\nimport DashboardDialogCoverageClassesContent from './content/DashboardDialogCoverageClassesContent';\nimport DashboardDialogCoverageNaturalOrAnthropicContent from './content/DashboardDialogCoverageNaturalOrAnthropicContent';\nimport DashboardDialogQualityContent from './content/DashboardDialogQualityContent';\nimport DashboardDialogTransitionContent from './content/DashboardDialogTransitionContent';\nimport DashboardDialogPastureQualityContent from './content/DashboardDialogPastureQualityContent';\nimport DashboardDialogGenericClassesContent from './content/DashboardDialogGenericClassesContent';\n\nimport styles from './DashboardDialog.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n yearValue: {\n color: theme.palette.primary.main\n }\n}));\n\nexport default function DashboardDialog({\n activeModuleContent,\n activeYear,\n baseParams,\n classTreeKey,\n headerIsVisible,\n isOpen,\n onClose = () => {},\n onUpdateClientAppState = () => {},\n}) {\n const [isExpanded, setIsExpanded] = useState(true);\n\n useEffect(() => {\n if (isOpen) {\n setIsExpanded(true);\n }\n }, [isOpen]);\n\n const classes = useStyles();\n\n const toggleContent = () => setIsExpanded(!isExpanded);\n\n const handleTransitionLinkClick = (id) => {\n onUpdateClientAppState({ transitionClassTreeNodeId: id });\n setIsExpanded(false);\n };\n\n const renderContent = () => {\n switch(activeModuleContent) {\n case 'coverage:coverage_main': {\n const classesViewMode = _.get(baseParams, 'classesViewMode');\n\n if (classesViewMode === 'class') {\n return (\n <DashboardDialogCoverageClassesContent\n activeYear={ activeYear }\n baseParams={ baseParams }\n />\n );\n } else {\n return (\n <DashboardDialogCoverageNaturalOrAnthropicContent\n activeYear={ activeYear }\n baseParams={ baseParams }\n />\n );\n }\n }\n case 'coverage:coverage_quality': {\n return (\n <DashboardDialogQualityContent\n activeYear={ activeYear }\n baseParams={ baseParams }\n />\n );\n }\n case 'coverage:coverage_changes': {\n return (\n <DashboardDialogTransitionContent\n activeYear={ activeYear }\n baseParams={ baseParams }\n onLinkClick={ handleTransitionLinkClick }\n />\n );\n }\n case 'quality_of_pasture_data:pasture_quality_main': {\n return (\n <DashboardDialogPastureQualityContent\n activeYear={ activeYear }\n baseParams={ baseParams }\n />\n );\n }\n case 'infrastructure:infrastructure_main': {\n return (\n <DashboardDialogGenericClassesContent\n hasObjectFilter\n activeYear={ activeYear }\n baseParams={ baseParams }\n />\n )\n }\n case 'mining:mining_main': {\n return (\n <DashboardDialogGenericClassesContent\n activeYear={ activeYear }\n baseParams={ baseParams }\n />\n )\n }\n default: {\n return (\n <DashboardDialogGenericClassesContent\n activeYear={ activeYear }\n baseParams={ baseParams }\n />\n );\n }\n }\n };\n\n const territoryIds = _.map(_.get(baseParams, 'territories'), 'id');\n\n let [moduleKey, contentKey] = _.split(activeModuleContent, ':');\n let titleId;\n\n if (_.includes(['coverage', 'quality_of_pasture_data'], moduleKey)) {\n titleId = `mapbiomas.dashboard.coverage.${ contentKey }.title`;\n } else {\n titleId = `mapbiomas.dashboard.${ _.snakeCase(moduleKey) }.title`;\n }\n\n // TODO: Refactor and remove unused components\n if (activeModuleContent !== 'coverage:coverage_changes') {\n return null;\n }\n\n return (\n <Fade in={ isOpen }>\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible,\n [styles.wrapperIsCollapsed]: !isExpanded,\n }) }>\n <header className={ styles.header }>\n <h2 className={ styles.title }>\n <span><FormattedMessage id={ titleId } /></span>\n </h2>\n { _.size(territoryIds) > 1 &&\n <p className={ styles.alertInfo }><FormattedMessage id={ `mapbiomas.dashboard.alert.multiple_territories` } /></p>\n }\n <IconButton\n className={ classnames(styles.toggleButton, {\n [styles.toggleButtonIsCollapsed]: isExpanded,\n }) }\n onClick={ toggleContent }\n >\n <ExpandMoreIcon />\n </IconButton>\n <IconButton className={ styles.closeButton } onClick={ onClose }>\n <CloseIcon />\n </IconButton>\n </header>\n <Collapse in={ isExpanded }>\n { renderContent() }\n </Collapse>\n </div>\n </Fade>\n );\n}\n","export default [\n {\n index: 0,\n key: \"atlantic_forest_limit\",\n labelKey: \"atlantic_forest_limit\",\n color: \"#B14018\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:atlantic_forest_limit\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/atlantic_forest_limit.zip'\n },\n {\n index: 1,\n key: \"country\",\n labelKey: \"country\",\n color: \"#B024E0\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:country\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/country.zip'\n },\n {\n index: 2,\n key: \"political_level_1\",\n labelKey: \"political_level_1\",\n color: \"#3A3D3A\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:political_level_1\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/state.zip'\n },\n {\n index: 3,\n key: \"political_level_2\",\n labelKey: \"political_level_2\",\n color: \"#F4B615\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:political_level_2\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/city.zip'\n },\n {\n index: 4,\n key: \"watershed\",\n labelKey: \"watershed\",\n color: \"#16DFF2\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:watershed\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/level_2_drainage_basin.zip'\n },\n {\n index: 5,\n key: \"indigenous_territories\",\n labelKey: \"indigenous_territories\",\n color: \"#FDAE61\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:indigenous_territories\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/indigenous_land.zip'\n },\n {\n index: 6,\n key: \"national_conservation_unit\",\n labelKey: \"national_conservation_unit\",\n color: \"#1A7836\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:national_conservation_unit\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/national_protected_areas.zip'\n },\n {\n index: 7,\n key: \"international_conservation_unit\",\n labelKey: \"international_conservation_unit\",\n color: \"#C51B7D\",\n props: {\n url: \"https://shared-geoserver.mapbiomas.org/geoserver/ows\",\n transparent: true,\n format: \"image/png\",\n layers: \"mapbiomas-bosque-col3:international_conservation_unit\"\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Adaptada en base a datos Oficiales' },\n { labelKey: 'year', label: 'Ano', value: '2023' },\n ],\n downloadUrl: 'https://storage.googleapis.com/mapbiomas-public/initiatives/bosque_atlantico/collection_3/download/layers/international_protected_areas.zip'\n }\n];\n","export default [\n {\n id: 1,\n labelKey: 'dark',\n url: 'http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png',\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'ArcGis Online' },\n ],\n },\n {\n id: 2,\n labelKey: 'white',\n url: '/white-background.jpg',\n layerParams: {\n noWrap: true,\n attribution: 'Creative Commons image found <a href=\"http://www.flickr.com/photos/c32/8025422440/\">here</a>'\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Mapbiomas.org' },\n ],\n },\n {\n id: 3,\n labelKey: 'satellite',\n url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Carto' },\n ],\n },\n {\n id: 4,\n labelKey: 'open_street',\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'OpenStreetMap' },\n ],\n },\n {\n id: 5,\n labelKey: 'google_street',\n url: 'http://mt0.google.com/vt/lyrs=m&x={x}&y={y}&z={z}',\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Google' },\n ],\n },\n {\n id: 6,\n labelKey: 'relief',\n props: {\n tileType: 'wms',\n format: 'image/png',\n layers: '3d_context',\n transparent: true,\n url: `${process.env.REACT_APP_WMS_BASE_URL}/wms/3d_context.map`,\n },\n // url: 'https://earthengine.googleapis.com/v1alpha/projects/earthengine-legacy/maps/92aec3704e31404c601426f06344e54c-b132417f385010dbd2b516d189a02e7b/tiles/{z}/{x}/{y}',\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'ArcGis Online' },\n ],\n },\n {\n id: 7,\n labelKey: 'mosaic',\n props: {\n tileType: 'wms',\n format: 'image/png',\n layers: 'rgb',\n transparent: true,\n url: `${process.env.REACT_APP_WMS_BASE_URL}/wms/rgb.map`,\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Mapbiomas' },\n ],\n },\n {\n id: 8,\n labelKey: 'coverage',\n props: {\n tileType: 'wms',\n format: 'image/png',\n layers: 'coverage',\n transparent: true,\n url: `${process.env.REACT_APP_WMS_BASE_URL}/wms/coverage.map`,\n },\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Mapbiomas' },\n ],\n },\n {\n id: 9,\n labelKey: 'planet',\n url: 'https://tileserver-mapbiomas.sccon.com.br/mapbiomas/tiles/1.0.0/planet_mosaic_2021_07/planet/{z}/{x}/{y}.png',\n descriptionData: [\n { labelKey: 'source', label: 'Fonte', value: 'Planet Labs' },\n ],\n },\n];\n","import React from 'react';\nimport classnames from 'classnames';\nimport _ from 'lodash';\n\nimport styles from './CoordinatesInfo.module.scss';\n\nexport default function CoordinatesInfo({\n headerIsVisible,\n mouseCoordinates,\n}) {\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithoutHeader]: !headerIsVisible,\n }) }>\n <div className={ styles.controlWrapper }>\n <span className={ styles.mouseCoordinatesInfo }>{ mouseCoordinates || '0, 0' }</span>\n </div>\n </div>\n );\n}\n","import { useEffect } from 'react';\nimport { useLeaflet } from 'react-leaflet';\n\nexport default function MapCustomEvents({\n onZoomStart = () => {},\n onMoveStart = () => {},\n onEsc = () => {}\n}) {\n const { map } = useLeaflet();\n \n function handleKeyDown(event) {\n let isEscape = false;\n const { originalEvent } = event;\n\n if (!originalEvent) { return; }\n\n if ('key' in originalEvent) {\n isEscape = (originalEvent.key === 'Escape' || originalEvent.key === 'Esc');\n } else {\n isEscape = (originalEvent.keyCode === 27);\n }\n\n if (isEscape) { onEsc(); }\n }\n\n useEffect(() => {\n map.on('zoomstart', onZoomStart);\n map.on('movestart', onMoveStart);\n map.on('keydown', handleKeyDown);\n\n return () => {\n map.off('zoomstart', onZoomStart);\n map.off('movestart', onMoveStart);\n map.off('keydown', handleKeyDown);\n };\n }, [map]);\n\n return null;\n}\n","import './leaflet-side-by-side.css';\n\nvar mapWasDragEnabled\nvar mapWasTapEnabled\n\n// Leaflet v0.7 backwards compatibility\nfunction on (el, types, fn, context) {\n types.split(' ').forEach(function (type) {\n L.DomEvent.on(el, type, fn, context)\n })\n}\n\n// Leaflet v0.7 backwards compatibility\nfunction off (el, types, fn, context) {\n types.split(' ').forEach(function (type) {\n L.DomEvent.off(el, type, fn, context)\n })\n}\n\nfunction getRangeEvent (rangeInput) {\n return 'oninput' in rangeInput ? 'input' : 'change'\n}\n\nfunction cancelMapDrag () {\n mapWasDragEnabled = this._map.dragging.enabled()\n mapWasTapEnabled = this._map.tap && this._map.tap.enabled()\n this._map.dragging.disable()\n this._map.tap && this._map.tap.disable()\n}\n\nfunction uncancelMapDrag (e) {\n this._refocusOnMap(e)\n if (mapWasDragEnabled) {\n this._map.dragging.enable()\n }\n if (mapWasTapEnabled) {\n this._map.tap.enable()\n }\n}\n\n// convert arg to an array - returns empty array if arg is undefined\nfunction asArray (arg) {\n return (arg === 'undefined') ? [] : Array.isArray(arg) ? arg : [arg]\n}\n\nfunction noop () {}\n\nL.Control.SideBySide = L.Control.extend({\n options: {\n thumbSize: 42,\n padding: 0\n },\n\n initialize: function (leftLayers, rightLayers, options) {\n this.setLeftLayers(leftLayers)\n this.setRightLayers(rightLayers)\n L.setOptions(this, options)\n },\n\n getPosition: function () {\n var rangeValue = this._range.value\n var offset = (0.5 - rangeValue) * (2 * this.options.padding + this.options.thumbSize)\n return this._map.getSize().x * rangeValue + offset\n },\n\n setPosition: noop,\n\n includes: L.Evented.prototype || L.Mixin.Events,\n\n addTo: function (map) {\n this.remove()\n this._map = map\n\n var container = this._container = L.DomUtil.create('div', 'leaflet-sbs', map._controlContainer)\n\n this._divider = L.DomUtil.create('div', 'leaflet-sbs-divider', container)\n\n L.DomUtil.create('div', 'leaflet-sbs-divider-control', this._divider)\n\n var range = this._range = L.DomUtil.create('input', 'leaflet-sbs-range', container)\n range.type = 'range'\n range.min = 0\n range.max = 1\n range.step = 'any'\n range.value = 0.5\n range.style.paddingLeft = range.style.paddingRight = this.options.padding + 'px'\n this._addEvents()\n this._updateLayers()\n this._updateLabels()\n return this\n },\n\n remove: function () {\n if (!this._map) {\n return this\n }\n if (this._leftLayer) {\n this._leftLayer.getContainer().style.clip = ''\n }\n if (this._rightLayer) {\n this._rightLayer.getContainer().style.clip = ''\n }\n this._removeEvents()\n L.DomUtil.remove(this._container)\n\n this._map = null\n\n return this\n },\n\n getLeftLayer: function() {\n return this._leftLayer;\n },\n\n getRightLayer: function() {\n return this._rightLayer;\n },\n\n setLeftLayers: function (leftLayers) {\n this._leftLayers = asArray(leftLayers)\n this._updateLayers()\n return this\n },\n\n setRightLayers: function (rightLayers) {\n this._rightLayers = asArray(rightLayers)\n this._updateLayers()\n return this\n },\n\n _updateClip: function () {\n var map = this._map\n var nw = map.containerPointToLayerPoint([0, 0])\n var se = map.containerPointToLayerPoint(map.getSize())\n var clipX = nw.x + this.getPosition()\n var dividerX = this.getPosition()\n\n this._divider.style.left = dividerX + 'px'\n this.fire('dividermove', {x: dividerX})\n var clipLeft = 'rect(' + [nw.y, clipX, se.y, nw.x].join('px,') + 'px)'\n var clipRight = 'rect(' + [nw.y, se.x, se.y, clipX].join('px,') + 'px)'\n if (this._leftLayer) {\n this._leftLayer.getContainer().style.clip = clipLeft\n }\n if (this._rightLayer) {\n this._rightLayer.getContainer().style.clip = clipRight\n }\n },\n\n _updateLayers: function () {\n if (!this._map) {\n return this\n }\n var prevLeft = this._leftLayer\n var prevRight = this._rightLayer\n this._leftLayer = this._rightLayer = null\n this._leftLayers.forEach(function (layer) {\n if (this._map.hasLayer(layer)) {\n this._leftLayer = layer\n }\n }, this)\n this._rightLayers.forEach(function (layer) {\n if (this._map.hasLayer(layer)) {\n this._rightLayer = layer\n }\n }, this)\n if (prevLeft !== this._leftLayer) {\n prevLeft && this.fire('leftlayerremove', {layer: prevLeft})\n this._leftLayer && this.fire('leftlayeradd', {layer: this._leftLayer})\n }\n if (prevRight !== this._rightLayer) {\n prevRight && this.fire('rightlayerremove', {layer: prevRight})\n this._rightLayer && this.fire('rightlayeradd', {layer: this._rightLayer})\n }\n this._updateClip()\n },\n\n _updateLabels: function () {\n if (this._leftLayer) {\n this._divider.setAttribute('data-from-year', this._leftLayer.options.year);\n }\n\n if (this._rightLayer) {\n this._divider.setAttribute('data-to-year', this._rightLayer.options.year);\n }\n },\n\n _addEvents: function () {\n var range = this._range\n var map = this._map\n if (!map || !range) return\n map.on('move', this._updateClip, this)\n map.on('layeradd layerremove', this._updateLayers, this)\n on(range, getRangeEvent(range), this._updateClip, this)\n on(range, L.Browser.touch ? 'touchstart' : 'mousedown', cancelMapDrag, this)\n on(range, L.Browser.touch ? 'touchend' : 'mouseup', uncancelMapDrag, this)\n },\n\n _removeEvents: function () {\n var range = this._range\n var map = this._map\n if (range) {\n off(range, getRangeEvent(range), this._updateClip, this)\n off(range, L.Browser.touch ? 'touchstart' : 'mousedown', cancelMapDrag, this)\n off(range, L.Browser.touch ? 'touchend' : 'mouseup', uncancelMapDrag, this)\n }\n if (map) {\n map.off('layeradd layerremove', this._updateLayers, this)\n map.off('move', this._updateClip, this)\n }\n }\n})\n\nL.control.sideBySide = function (leftLayers, rightLayers, options) {\n return new L.Control.SideBySide(leftLayers, rightLayers, options)\n}\n\nexport default L.Control.SideBySide\n","import React, { useEffect, useRef, useState } from 'react';\nimport {\n GeoJSON,\n Map,\n Marker,\n ScaleControl,\n TileLayer,\n WMSTileLayer,\n ZoomControl\n} from 'react-leaflet';\nimport { BoxZoomControl } from 'react-leaflet-box-zoom';\nimport _ from 'lodash';\nimport L from 'leaflet';\nimport classnames from 'classnames';\nimport numbro from 'numbro';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport LandscapeIcon from '@material-ui/icons/Landscape';\nimport NotListedLocationIcon from '@material-ui/icons/NotListedLocation';\nimport OpacityIcon from '@material-ui/icons/Opacity';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport LibraryBooksIcon from '@material-ui/icons/LibraryBooks';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\nimport usePrevious from '../../../../../../hooks/usePrevious';\n\nimport styles from './MapCanvas.module.scss';\n\nimport baseLayersData from '../../../../../../data/baseLayers';\nimport baseMapsData from '../../../../../../data/baseMaps';\nimport customClientModules from '../../../../../../data/customClientModules';\n\nimport CoordinatesInfo from './components/CoordinatesInfo';\nimport MapCustomEvents from './components/MapCustomEvents';\n\nimport './leaflet-side-by-side';\n\ndelete L.Icon.Default.prototype._getIconUrl;\n\nL.Icon.Default.mergeOptions({\n iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),\n iconUrl: require('leaflet/dist/images/marker-icon.png'),\n shadowUrl: require('leaflet/dist/images/marker-shadow.png')\n});\n\nconst useStyles = makeStyles((theme) => ({\n mapButtonActive: {\n backgroundColor: '#F1F1F1',\n '& svg': {\n fill: `${ theme.palette.primary.main } !important`\n }\n }\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 12,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#444444'\n },\n}))(Tooltip);\n\nconst HEADER_HEIGHT = 0;\nconst FOOTER_HEIGHT = 30;\nconst EXTERNAL_ELEMENTS_HEIGHT = HEADER_HEIGHT + FOOTER_HEIGHT;\n\nconst CONFIG_DEFAULT = {\n lat: -14.392118,\n lng: -56.250000,\n zoom: 4,\n minZoom: 4,\n maxZoom: 19\n};\n\nconst CUSTOM_MAP_URL = 'https://brasil.mapserver.mapbiomas.org';\n\nexport default function MapCanvas({\n activeBaseMap,\n activeModule,\n activeModuleContent,\n activeYear,\n baseParams,\n carFeature,\n countryTerritoryId,\n defaultClassTreeLevelsList,\n flyTo,\n isMobile,\n mapPointInfo,\n activeLayers,\n layersOpacity,\n height,\n headerIsVisible,\n configOptions = {},\n isOnFreezeMode = false,\n onSearchPointClick = () => {},\n showBeforeAndAfterMosaic,\n showDashboardInfo,\n setCoverageTutorial,\n onMoveEnd,\n onFlyToReset = () => {},\n mapboxMode,\n transitionClassTreeNodeId,\n}) {\n const MAP_URL = !_.includes(customClientModules, activeModule) ? process.env.REACT_APP_WMS_BASE_URL : CUSTOM_MAP_URL;\n const classes = useStyles();\n let mapRef = useRef();\n let zoomControlRef = useRef();\n const formatMessage = useFormatMessage();\n const [windowHeight, setWindowHeight] = useState(window.innerHeight - EXTERNAL_ELEMENTS_HEIGHT);\n const [mouseCoordinates, setMouseCoordinates] = useState(null);\n const [isOnBoxZoomMode, setIsOnBoxZoomMode] = useState(false);\n const [isOnPointSearchMode, setIsOnPointSearchMode] = useState(false);\n const [isOnGeographicalRelief, setIsOnGeographicalRelief] = useState(true);\n const config = _.assign({}, CONFIG_DEFAULT, configOptions);\n const activeBaseMapData = _.find(baseMapsData, { id: activeBaseMap });\n const yearRange = _.get(baseParams, 'yearRange');\n let leftSideMosaicLayer, rightSideMosaicLayer, sideBySideControl;\n const mapboxModePrev = usePrevious(mapboxMode);\n\n function updateHeight() {\n setWindowHeight(window.innerHeight - EXTERNAL_ELEMENTS_HEIGHT);\n\n if (mapRef.current) {\n mapRef.current.leafletElement.invalidateSize();\n }\n }\n const debouncedUpdateHeight = _.debounce(updateHeight, 500);\n\n function handleBoxZoomClick() {\n setIsOnBoxZoomMode(true);\n }\n\n useEffect(() => {\n setTimeout(() => {\n window.addEventListener('resize', debouncedUpdateHeight);\n\n const boxZoomButton = document.getElementById('box-zoom-button');\n\n if (boxZoomButton) {\n boxZoomButton.addEventListener('click', handleBoxZoomClick);\n }\n }, 3000);\n\n return () => {\n window.removeEventListener('resize', debouncedUpdateHeight);\n\n const boxZoomButton = document.getElementById('box-zoom-button');\n\n if (boxZoomButton) {\n boxZoomButton.removeEventListener('click', handleBoxZoomClick);\n }\n };\n }, []);\n\n useEffect(() => {\n if (mapRef && flyTo && _.isArray(flyTo)) {\n if (_.isArray(_.first(flyTo))) {\n mapRef.current.leafletElement.fitBounds(flyTo);\n } else {\n mapRef.current.leafletElement.flyTo(flyTo, 10);\n }\n onFlyToReset();\n }\n }, [flyTo]);\n\n useEffect(() => {\n if (mapboxModePrev && !mapboxMode && mapRef.current && !_.isEmpty(configOptions)) {\n const { lat, lng, zoom } = configOptions;\n\n mapRef.current.leafletElement.panTo([lat, lng], zoom);\n }\n }, [mapboxModePrev, mapboxMode]);\n\n useEffect(() => {\n const url = _.get(activeBaseMapData, 'props.url');\n const layerName = _.get(activeBaseMapData, 'props.layers');\n\n if (showBeforeAndAfterMosaic && url && layerName) {\n const [firstYear, lastYear] = _.split(yearRange, '-');\n const classTreeLevelsListIds = _.join(_.map(defaultClassTreeLevelsList, 'id'), ',');\n\n leftSideMosaicLayer = L.tileLayer\n .wms(url, {\n format: 'image/png',\n layers: layerName,\n transparent: true,\n tileType: 'wms',\n class_tree_node_ids: classTreeLevelsListIds,\n territory_ids: countryTerritoryId,\n year: parseInt(firstYear),\n zIndex: 200,\n })\n .addTo(mapRef.current.leafletElement);\n\n rightSideMosaicLayer = L.tileLayer\n .wms(url, {\n format: 'image/png',\n layers: layerName,\n transparent: true,\n tileType: 'wms',\n class_tree_node_ids: classTreeLevelsListIds,\n territory_ids: countryTerritoryId,\n year: parseInt(lastYear),\n zIndex: 200,\n })\n .addTo(mapRef.current.leafletElement);\n\n sideBySideControl = L.control.sideBySide(leftSideMosaicLayer, rightSideMosaicLayer)\n .addTo(mapRef.current.leafletElement);\n\n return () => {\n mapRef.current.leafletElement.removeLayer(sideBySideControl.getLeftLayer());\n mapRef.current.leafletElement.removeLayer(sideBySideControl.getRightLayer());\n sideBySideControl.remove();\n };\n }\n }, [activeBaseMapData, showBeforeAndAfterMosaic, layersOpacity, yearRange]);\n\n const renderBaseMap = () => {\n const classTreeLevelsListIds = _.join(_.map(defaultClassTreeLevelsList, 'id'), ',');\n\n if (showBeforeAndAfterMosaic) {\n return (\n <TileLayer\n key=\"base-map-tile-layer\"\n attribution='&copy <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors'\n url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"\n zIndex={ 100 }\n />\n );\n }\n\n if (!activeBaseMapData.props) {\n if (activeBaseMapData.labelKey === 'planet') {\n return [\n <TileLayer\n key=\"base-map-tile-layer\"\n url=\"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}\"\n zIndex={ 100 }\n />,\n <TileLayer\n key=\"planet-tile-layer\"\n attribution='&copy <a href=\"https://www.planet.com/\">Planet</a>'\n url={ activeBaseMapData.url }\n zIndex={ 101 }\n />\n ];\n } else {\n return (\n <TileLayer\n attribution='&copy <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors'\n url={ activeBaseMapData.url }\n zIndex={ 100 }\n />\n );\n }\n } else {\n const year = _.isArray(activeYear) ? _.last(activeYear) : activeYear;\n\n return [\n <TileLayer\n key=\"base-map-tile-layer\"\n attribution='&copy <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors'\n url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"\n zIndex={ 100 }\n />,\n <WMSTileLayer\n key=\"base-map-custom-tile-layer\"\n { ...activeBaseMapData.props }\n class_tree_node_ids={ classTreeLevelsListIds }\n territory_ids={ countryTerritoryId }\n year={ year }\n zIndex={ 101 }\n />\n ];\n }\n };\n\n const renderCoverageLayer = () => {\n const crossingEnabled = _.get(baseParams, 'crossingEnabled');\n const crossingTerritories = _.get(baseParams, 'crossingTerritories');\n let territories = _.get(baseParams, 'territories');\n\n if (crossingEnabled && !_.isEmpty(crossingTerritories)) {\n territories = crossingTerritories;\n }\n\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n\n const classTreeNodeIds = _.join(activeClassTreeNodeIds, ',');\n\n if (!territories || _.isEmpty(territories)) {\n return null;\n }\n\n const territoryIds = _.join(_.map(territories, 'id'), ',');\n\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n layers=\"coverage\"\n url={ `${MAP_URL}/wms/coverage.map` }\n territory_ids={ territoryIds }\n year={ activeYear }\n class_tree_node_ids={ classTreeNodeIds }\n zIndex={ 200 }\n opacity={ layersOpacity / 100 }\n />\n );\n };\n\n const renderTransitionLayer = () => {\n const territories = _.get(baseParams, 'territories');\n const activeTransitionsClassesListItems = _.get(baseParams, 'activeTransitionsClassesListItems');\n\n if (!territories || _.isEmpty(territories) || _.isEmpty(activeTransitionsClassesListItems)) {\n return null;\n }\n\n const yearRange = _.get(baseParams, 'yearRange');\n\n const [fromYear, toYear] = _.split(yearRange, '-');\n const territoryIds = _.join(_.map(territories, 'id'), ',');\n const transitionCategoryKeys = _.join(activeTransitionsClassesListItems, ',');\n\n if (transitionClassTreeNodeId) {\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n layers=\"class_transitions\"\n url={ `${MAP_URL}/wms/class_transitions.map` }\n territory_ids={ territoryIds }\n from_year={ fromYear }\n to_year={ toYear }\n class_tree_node_ids={ transitionClassTreeNodeId }\n zIndex={ 250 }\n opacity={ layersOpacity / 100 }\n />\n );\n }\n\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n layers=\"transitions\"\n url={ `${MAP_URL}/wms/transitions.map` }\n territory_ids={ territoryIds }\n from_year={ fromYear }\n to_year={ toYear }\n transition_category_keys={ transitionCategoryKeys }\n zIndex={ 250 }\n opacity={ layersOpacity / 100 }\n />\n );\n };\n\n const renderQualityLayer = () => {\n const territories = _.get(baseParams, 'territories');\n\n if (!territories || _.isEmpty(territories)) {\n return null;\n }\n\n const territoryIds = _.join(_.map(territories, 'id'), ',');\n\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n layers=\"quality_of_data\"\n url={ `${MAP_URL}/wms/quality_of_data.map` }\n territory_ids={ territoryIds }\n year={ activeYear }\n zIndex={ 200 }\n opacity={ layersOpacity / 100 }\n />\n );\n };\n\n const renderPastureQualityQualityLayer = () => {\n const territories = _.get(baseParams, 'territories');\n const activePastureQualityQualityClassesListItems = _.get(baseParams, 'activePastureQualityQualityClassesListItems');\n\n const enabledPixelValues = _.join(activePastureQualityQualityClassesListItems, ',');\n\n if (!territories || _.isEmpty(territories)) {\n return null;\n }\n\n const territoryIds = _.join(_.map(territories, 'id'), ',');\n\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n layers=\"pasture_quality_coverage\"\n url={ `${MAP_URL}/wms/pasture_quality_coverage.map` }\n territory_ids={ territoryIds }\n year={ activeYear }\n enabled_pixel_values={ enabledPixelValues }\n zIndex={ 200 }\n opacity={ layersOpacity / 100 }\n />\n );\n };\n\n const renderInfrastructureCoverageLayer = ({ opacityDenominator = 100, objectsMask = true } = {}) => {\n const territories = _.get(baseParams, 'territories');\n const bufferId = _.get(baseParams, 'buffer');\n const activeObjectTreeNodeIds = _.join(_.get(baseParams, 'activeObjectTreeNodeIds'));\n const activeClassTreeNodeIds = _.join(_.get(baseParams, 'activeClassTreeNodeIds'))\n\n if (!territories || _.isEmpty(territories)) {\n return null;\n }\n\n const territoryIds = _.join(_.map(territories, 'id'), ',');\n\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n layers={ objectsMask ? 'coverage' : 'coverage_without_objects_mask' }\n url={ `${MAP_URL}/wms/infrastructure_coverage.map` }\n territory_ids={ territoryIds }\n year={ activeYear }\n class_tree_node_ids={ activeClassTreeNodeIds }\n buffer_id={ bufferId }\n object_tree_node_ids={ activeObjectTreeNodeIds }\n zIndex={ 200 }\n opacity={ layersOpacity / opacityDenominator }\n />\n );\n };\n\n const renderObjectLayer = () => {\n const activeSubmodule = _.get(baseParams, 'activeSubmodule')\n const activeObjectTreeNodeIds = _.join(_.get(baseParams, 'activeObjectTreeNodeIds'))\n\n if (!activeObjectTreeNodeIds || _.isEmpty(activeObjectTreeNodeIds)) {\n return null;\n }\n\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n layers=\"objects_point,objects_line\"\n url={ `${MAP_URL}/wms/${activeSubmodule}_objects.map` }\n object_tree_node_ids={ activeObjectTreeNodeIds }\n zIndex={ 300 }\n opacity={ layersOpacity / 100 }\n />\n );\n }\n\n const renderGenericLayer = () => {\n const territories = _.get(baseParams, 'territories');\n const activeSubmodule = _.get(baseParams, 'activeSubmodule');\n const activeClassTreeNodeIds = _.join(_.get(baseParams, 'activeClassTreeNodeIds'));\n let mapPathname = activeSubmodule;\n\n if (!territories || _.isEmpty(territories)) {\n return null\n }\n\n const territoryIds = _.join(_.map(territories, 'id'), ',')\n\n let yearParams = {};\n\n if (activeModuleContent === 'fire:fire_frequency') {\n yearParams = {\n from_year: _.first(activeYear),\n to_year: _.last(activeYear),\n };\n } else if (\n activeModuleContent === 'temporal_analysis:temporal_analysis_stable_areas' ||\n activeModuleContent === 'temporal_analysis:temporal_analysis_number_of_changes' ||\n activeModuleContent === 'temporal_analysis:temporal_analysis_number_of_classes'\n ) {\n mapPathname = _.get(baseParams, 'activeClassTreeOptionValue');\n yearParams = {\n from_year: _.first(activeYear),\n to_year: _.last(activeYear),\n year: _.join(activeYear, ''),\n };\n } else {\n if (_.isArray(activeYear)) {\n yearParams = {\n year: _.last(activeYear),\n };\n } else {\n yearParams = {\n year: activeYear,\n };\n }\n }\n\n return (\n <WMSTileLayer\n transparent\n format=\"image/png\"\n key={ `generic-layer-${ JSON.stringify(yearParams) }` }\n layers={ activeSubmodule }\n url={ `${MAP_URL}/wms/${mapPathname}.map` }\n class_tree_node_ids={ activeClassTreeNodeIds }\n territory_ids={ territoryIds }\n zIndex={ 200 }\n opacity={ layersOpacity / 100 }\n { ...yearParams }\n />\n );\n };\n\n const renderModuleContentLayer = () => {\n if (activeModuleContent === 'coverage:coverage_main') {\n return renderCoverageLayer();\n } else if (activeModuleContent === 'coverage:coverage_changes') {\n return renderTransitionLayer();\n } else if (activeModuleContent === 'coverage:coverage_quality' || activeModuleContent === 'coverage_quality:coverage_quality_main') {\n return renderQualityLayer();\n } else if (activeModuleContent === 'quality_of_pasture_data:pasture_quality_main') {\n return renderPastureQualityQualityLayer();\n } else if (activeModuleContent === 'infrastructure:infrastructure_main' && _.get(baseParams, 'buffer') === 0) {\n return [ renderInfrastructureCoverageLayer({ opacityDenominator: 200, objectsMask: false }), renderObjectLayer() ]\n } else if (activeModuleContent === 'infrastructure:infrastructure_main') {\n return renderInfrastructureCoverageLayer()\n } else {\n return renderGenericLayer()\n }\n };\n\n const renderBaseLayers = () => {\n return _.map(activeLayers, (key) => {\n const layerData = _.find(baseLayersData, { key });\n const LayerComponent = layerData.key !== 'car' ? WMSTileLayer : TileLayer;\n\n return (\n <LayerComponent\n key={ `additional-layer-${ layerData.key }` }\n zIndex={ 300 + layerData.index }\n { ...layerData.props }\n />\n );\n })\n };\n\n const renderCARFeature = () => {\n if (!carFeature) {\n return null;\n }\n\n return (\n <GeoJSON\n zIndex={ 400 }\n key={ `land-registry-${ _.get(carFeature, 'id') }` }\n data={ carFeature }\n style={ {\n color: '#ff7800',\n weight: 3,\n opacity: 0.85\n } }\n />\n );\n };\n\n const handleMapClick = (event) => {\n if (!isOnBoxZoomMode && !isOnFreezeMode && isOnPointSearchMode) {\n const { lat, lng } = event.latlng;\n const { x, y } = event.layerPoint;\n const point1 = { x, y: y - 1 };\n const point2 = { x, y: y + 1 };\n\n const parsedPoint1 = mapRef.current.leafletElement.layerPointToLatLng(point1);\n const parsedPoint2 = mapRef.current.leafletElement.layerPointToLatLng(point2);\n\n onSearchPointClick({\n __typename: 'MapPointInfo',\n parsedBBox: [\n _.get(parsedPoint2, 'lng'),\n _.get(parsedPoint2, 'lat'),\n _.get(parsedPoint1, 'lng'),\n _.get(parsedPoint1, 'lat'),\n ],\n latlng: [lat, lng],\n });\n }\n };\n\n const handleMouseMove = (event) => {\n const { lat, lng } = event.latlng;\n const formatNumber = (value) => {\n const formattedValue = numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n });\n\n return _.replace(formattedValue, ',', '.');\n };\n\n setMouseCoordinates(`${ formatNumber(lat) }, ${ formatNumber(lng) }`);\n };\n\n const handleMoveEnd = (event) => {\n if (onMoveEnd) {\n const center = event.target.getCenter();\n const zoom = event.target.getZoom();\n const combinedValue = `${ center.lat.toFixed(6) },${ center.lng.toFixed(6) },${ zoom }`;\n\n onMoveEnd(combinedValue);\n }\n };\n\n const stopZoomControl = () => {\n if (zoomControlRef.current) {\n zoomControlRef.current.stop();\n }\n\n setIsOnBoxZoomMode(false);\n };\n\n const togglePointSearchMode = (event) => {\n event.stopPropagation();\n setIsOnPointSearchMode(!isOnPointSearchMode);\n };\n\n const toggleGeographicalReliefhMode = (event) => {\n event.stopPropagation();\n setIsOnGeographicalRelief(!isOnGeographicalRelief);\n };\n\n return (\n <Map\n ref={ mapRef }\n className={ classnames(styles.mapWrapper, {\n [styles.mapWrapperWithHeader]: headerIsVisible,\n [styles.mapWrapperOnPointSearchMode]: isOnPointSearchMode,\n }) }\n center={ [config.lat, config.lng] }\n zoom={ config.zoom }\n // minZoom={ config.minZoom }\n // maxZoom={ config.maxZoom }\n style={{ height: height || windowHeight }}\n zoomControl={ false }\n onClick={ handleMapClick }\n onmousemove={ handleMouseMove }\n onmoveend={ handleMoveEnd }\n { ...configOptions }\n >\n <ZoomControl position=\"bottomleft\" />\n <ScaleControl position=\"bottomleft\" imperial={ false } />\n <BoxZoomControl\n position=\"bottomleft\"\n ref={ zoomControlRef }\n sticky={ true }\n className=\"t-zoombox\"\n style={{\n position: 'relative',\n bottom: '-81px',\n width: '32px',\n height: '32px',\n margin: '0px',\n boxShadow: '0 1px 3px rgba(150, 150, 150, 0.12), 0 1px 2px rgba(125, 125, 125, 0.24)',\n border: 'none',\n backgroundColor: 'white',\n backgroundImage: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAADJUlEQVRIS+WWQWgTQRSGZ1KItiexIFVDyM6YnFS8CLZisQg9ain24qWtoJeS2h4ys0k97KVhZpsarCiUiqIiFIoGPRUEsRf14KHiLe3ORG3VQ1GsSGhosrJgwpJks0khVHCO+/73vvd23nu7EOzSgbvEBSUwpXRJCNFtTyQUCvknJyc/E0KiUsp40aYoygVd159TSruFEEt2H4zxHcbYiFtBJfDAwIBZLg4EAqGpqakVSukNIcR40Y4QGuScPySEnJdSPrP7IYTec85PNAxGCJ2BEK5tbW1tJpPJ71YATdM82WzWByH0FAqFnK7rX4qBI5FIR0tLy14AQK9hGLM7BmOMFcZYxi3jcjshpE9Kmdox2OfztRcrbQQejUY7V1dXXyOEXnDOe918S3cci8UO5nK5vYlEQro5OdljsdhRr9f7SdO0TbcY/8Q4XQcAdLS2to5qmlaolXE0Gm3P5/N9EMLTAIADpmluQgiXIYRPGWOrbtVa9opx8vv9genp6Y8OzpAQck1KmXQKjhCay+fz44lE4netBCrANboaUkrvCiEuu1WEEFoGAJzlnP900laAg8HgoXg8/rXKuIxKKW+6QW1LJsU573cFq6raa5rmfs75fLl4bGxs3/r6+o9qQTDGM4ZhjDrYehhjr6rZ6upqVVWHDMO4Xy3AwsICrLZuLS3G+AFjbKgmuFbFhJBZKeXVRsGW3kqsJriYdbU7ppSmhBB9tvub45xXJEIpvSSEeGwH1Q2u1tWU0ntCiOGmVowQikAINwAA3xhjixaMUhoWQsw0CkYIPeGcX6zrVdtFiqKc1HX93cTExOF0Or1WLYCiKCNSytsOXd3PGEvVBBNCmMfjOVUUmaa5YZrmsK7rv6xnhBBdShlpYI7fcs67AAAVPxhWjLrGyRJqmubNZrOLQoieeuAY43OMsZeuC6SeYOFweE9bW9stIcSVevQY46DTR6Puiu0gSukx0zQHAQBdUsrOv8viEYRwfnt7eyWTyaSLeif4jsBu1aqqesQwjBXb3B/nnH+w+zUFbAHK4eWLpGlgO1xRlDe6rlsdXjpNBde6kv8P/Ac2H3ou8vCdygAAAABJRU5ErkJggg==)',\n backgroundSize: '80%',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center center',\n outline: 'none',\n cursor: 'pointer',\n borderRadius: '6px'\n }}\n activeStyle={{\n backgroundColor: '#F1F1F1',\n backgroundImage: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAADQElEQVRIS+WWTWgTURDH30shtj2JBakfiIJ68QMvgq1m0yrW7CaxoXjy0lbQS0ltD3lvk3rYS8N729RgRaFUFBWhF41tdpNgoTS7YhU8VMSLFfwq6qEoViQ0NFlZMGXJ1yaFUsF33PnP/Gb2zcwuBBt04AZxwSoYY5xkFYkxJjJ10rNrcHDwM0LIz6lyMGeL2ZztoihOYowZVpGSRp+E3X2TENJjVtAqeKbpgJYvlk9w+4eGhuYxxldZRerP2eOMq5NSeg8hdJZT5QmjX5xxvaKUHqkaHGdcNgjhwvLy8lI4HP6uBxAEwZJKpXZCCC3ZbDYtiuKXXGCfz9dYU1NTCwBocySjo2sGJ+zuPYSQD2YZ59sRQh5OlSNrBk8ca2vIVVoN3O/3N52ZmXwWZ1xTlNI2M9/VOw4EAtvS6XRtKBR6b+ZUyh4IBA5ardZPgiAsmcX4J8bpCgCgsa6urlcQhGy5jP1+f0Mmk/FACI8DALZqmrYEIZyDED4ihLwzq1a3F4xTtNmxe3h4+GMJZ4gQusypcrhU8DjjGstkMv2hUOh3uQQKwGW6GmKMb7GKdMGsojjjmgMAtFBKf5bSFoCftLZvDwaDX4uMSy+nytfMoIYlE6GUdpiCeZ5v0zRtC6V0PF/c19e32fNi6kexIAm7e8SRjPaWsLUSQmaK2Srqap7nuxzJ6J1iAVpm38Bi61bXJuzuu4SQrrLgchUjhEY5Vb5ULVjX64mVBeeyLnbHGOMIq0gew/2NUUoLEsEYn2cV6YERVDG4WFdjjG+zitS9rhXHGZcPQrgIAPhGCEnoMIyxl1WkkWrBccb1kFJ6rqJXbRTFbM6joii+HBgY2HF6+vFCsQAxm7OHU+UbJbq6gxASKQtGCBGLxXIsJ9I0bVHTtG5RFH/pzxBCIqfKvirm+DmltBkAUPCDoceoaJx0oSAI1lQqlWAVqbUSeMLuPkUImTZdIJUE83q9m+rr66+zinSxEn3C7t5X6qNRccVGEMb4kKZpnQCAZk6Vm/4ui/sQwvGVlZV559PY25y+FHxNYLNqeZ7f60hG5w1zf5hS+troty5gHZAPz18k6wY2wmM256woinqHr551BZe7kv8P/Ac5JIEu+h5xfgAAAABJRU5ErkJggg==)'\n }}\n />\n { !(isMobile && showDashboardInfo) &&\n <CustomTooltip arrow title={ formatMessage('map_controls.point_info.title') } placement=\"right\">\n <button\n className={ classnames(styles.mapActionButton, styles.mapSearchButton, {\n [classes.mapButtonActive]: isOnPointSearchMode\n }) }\n onClick={ togglePointSearchMode }\n id=\"info-point\"\n >\n <NotListedLocationIcon />\n </button>\n </CustomTooltip>\n }\n { !isMobile && false && (\n <CustomTooltip arrow title={ formatMessage('mapbiomas.tutorial.title') } placement=\"right\">\n <button\n id=\"tutorial-icon\"\n className={ classnames(styles.mapActionButton, styles.tutorialButton,) }\n onClick={ () => setCoverageTutorial(true) }\n >\n <LibraryBooksIcon />\n </button>\n </CustomTooltip>\n ) }\n {/* <Tooltip title=\"Visualização em relevo\" placement=\"right\">\n <button\n className={ classnames(styles.mapActionButton, styles.mapGeographicalReliefButton, {\n [classes.mapButtonActive]: isOnGeographicalRelief\n }) }\n onClick={ toggleGeographicalReliefhMode }\n >\n <LandscapeIcon />\n </button>\n </Tooltip> */}\n { renderBaseMap() }\n { renderModuleContentLayer() }\n { renderBaseLayers() }\n { renderCARFeature() }\n { flyTo && _.isNumber(_.first(flyTo)) &&\n <Marker position={ flyTo } />\n }\n { mapPointInfo && isOnPointSearchMode &&\n <Marker position={ _.get(mapPointInfo, 'latlng') } />\n }\n <MapCustomEvents\n onMoveStart={ stopZoomControl }\n onZoomStart={ stopZoomControl }\n onEsc={ stopZoomControl }\n />\n <CoordinatesInfo\n headerIsVisible={ headerIsVisible }\n mouseCoordinates={ mouseCoordinates }\n />\n </Map>\n );\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport Map, { NavigationControl, Source, Layer } from 'react-map-gl';\nimport mapboxgl from 'mapbox-gl';\nimport classnames from 'classnames';\nimport numbro from 'numbro';\n\nmapboxgl.workerClass = require('worker-loader!mapbox-gl/dist/mapbox-gl-csp-worker').default;\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport NotListedLocationIcon from '@material-ui/icons/NotListedLocation';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport CoordinatesInfo from '../MapCanvas/components/CoordinatesInfo';\n\nimport 'mapbox-gl/dist/mapbox-gl.css';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\nimport useWindowSize from '../../../../../../hooks/useWindowSize';\n\nconst EXTERNAL_ELEMENTS_HEIGHT = 30;\n\nimport styles from './MapboxCanvas.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n mapButtonActive: {\n backgroundColor: '#F1F1F1',\n '& svg': {\n fill: `${theme.palette.primary.main} !important`\n }\n }\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 12,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#444444'\n },\n}))(Tooltip);\n\nconst MAPBOX_TOKEN = 'pk.eyJ1IjoiZ2xhdWNvbXVuc2JlcmciLCJhIjoiY2wzczI4dmMyMW1kdjNqcGVhdTdxbDN5ciJ9.WSNrzmo52BqUJFJOCm1hAg';\n\nconst CONFIG_DEFAULT = {\n lat: -23.8294,\n lng: -45.4531,\n zoom: 10.01,\n bearing: 0,\n pitch: 54,\n exaggeration: [\n 'interpolate',\n ['linear'],\n ['get', 'z'], // based on z value, same as accessing in fill-extrusion\n 0, 60,\n 100, 1,\n ]//,\n //exaggeration: ['^', ['get', 'z'], 0.9]\n};\n\nexport default function MapboxCanvas({\n activeLayers,\n activeYear,\n baseParams,\n configOptions,\n flyTo,\n headerIsVisible,\n isMobile,\n layersOpacity,\n onSearchPointClick,\n onMoveEnd,\n}) {\n const CONFIG = { ...CONFIG_DEFAULT, ...configOptions };\n const classes = useStyles();\n const mapRef = useRef();\n const windowSize = useWindowSize();\n const formatMessage = useFormatMessage();\n const [isOnPointSearchMode, setIsOnPointSearchMode] = useState(false);\n const [mouseCoordinates, setMouseCoordinates] = useState(null);\n\n useEffect(() => {\n if (mapRef && mapRef.current && flyTo && _.isArray(flyTo)) {\n if (_.isArray(_.first(flyTo))) {\n mapRef.current.fitBounds([\n _.reverse(_.first(flyTo)),\n _.reverse(_.last(flyTo)),\n ]);\n } else {\n mapRef.current.panTo(flyTo, 10);\n }\n }\n }, [flyTo]);\n\n const handleMapClick = (event) => {\n if (isOnPointSearchMode && mapRef.current) {\n const { lat, lng } = event.lngLat;\n const { x, y } = event.point;\n const point1 = { x, y: y - 1 };\n const point2 = { x, y: y + 1 };\n\n const parsedPoint1 = mapRef.current.layerPointToLatLng(point1);\n const parsedPoint2 = mapRef.current.layerPointToLatLng(point2);\n \n onSearchPointClick({\n __typename: 'MapPointInfo',\n parsedBBox: [\n _.get(parsedPoint2, 'lng'),\n _.get(parsedPoint2, 'lat'),\n _.get(parsedPoint1, 'lng'),\n _.get(parsedPoint1, 'lat'),\n ],\n latlng: [lat, lng],\n });\n }\n };\n\n const handleMouseMove = (event) => {\n const { lat, lng } = event.lngLat;\n const formatNumber = (value) => {\n const formattedValue = numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n });\n\n return _.replace(formattedValue, ',', '.');\n };\n\n setMouseCoordinates(`${formatNumber(lat)}, ${formatNumber(lng)}`);\n };\n\n const handleMoveEnd = (event) => {\n const viewState = _.get(event, 'viewState');\n\n if (viewState) {\n const {\n latitude,\n longitude,\n zoom\n } = viewState;\n const combinedValue = `${latitude.toFixed(6)},${longitude.toFixed(6)},${zoom}`;\n\n onMoveEnd(combinedValue);\n }\n };\n\n const territories = _.get(baseParams, 'territories');\n\n if (!territories || _.isEmpty(territories)) {\n return null;\n }\n\n const territoryIds = _.join(_.map(territories, 'id'), ',');\n\n const renderCoverageLayer = () => {\n\n return (\n <Source\n id=\"mapbiomas-brasil-3d\"\n type=\"raster\"\n key={ `coverage-3d-${ territoryIds }-${ activeYear }` }\n tiles={ [\n `${process.env.REACT_APP_WMS_BASE_URL}/wms/coverage.map?service=WMS&request=GetMap&layers=coverage&styles=&format=image%2Fpng&transparent=true&version=1.1.1&territory_ids=${ territoryIds }&year=${ activeYear }&class_tree_node_ids=1%2C7%2C8%2C9%2C10%2C2%2C11%2C12%2C13%2C14%2C15%2C16%2C3%2C17%2C18%2C27%2C37%2C38%2C39%2C40%2C41%2C28%2C42%2C43%2C44%2C19%2C20%2C4%2C21%2C22%2C23%2C24%2C5%2C25%2C26%2C6&width=256&height=256&srs=EPSG%3A3857&bbox={bbox-epsg-3857}`\n ] }\n tileSize={ 256 }\n >\n <Layer\n id=\"layer-mapbiomas-brasil-3d\"\n sourceLayer=\"layer-mapbiomas-brasil-3d\"\n type=\"raster\"\n source=\"layer-mapbiomas-brasil-3d\"\n paint={ {\n 'raster-opacity': layersOpacity / 100\n } }\n />\n </Source>\n );\n };\n\n const renderShadowLayer = () => {\n\n return (\n <Source\n id=\"earthengine-shadow\"\n key={ `earthengine-shadow-3d-${ territoryIds }-${ activeYear }` }\n type=\"raster\"\n tiles={ [\n `${process.env.REACT_APP_WMS_BASE_URL}/wms/3d_context.map?service=WMS&request=GetMap&layers=3d_context&styles=&format=image%2Fpng&transparent=true&version=1.1.1&SRS=epsg:3857&width=256&height=256&bbox={bbox-epsg-3857}&territory_ids=${territoryIds }`\n ] }\n tileSize={ 512 }\n minZoom={ 0 }\n maxZoom={ 14 }\n >\n <Layer\n id=\"earthengine-shadow\"\n sourceLayer=\"earthengine-shadow\"\n type=\"raster\"\n source=\"earthengine-shadow\"\n paint={ {\n 'raster-opacity': 1\n } }\n />\n </Source>\n );\n };\n\n\n return (\n <Map\n ref={mapRef}\n initialViewState={{\n longitude: CONFIG.lng,\n latitude: CONFIG.lat,\n zoom: CONFIG.zoom,\n pitch: CONFIG.pitch,\n bearing: CONFIG.bearing,\n }}\n maxPitch={85}\n style={{ width: '100%', height: windowSize.height - EXTERNAL_ELEMENTS_HEIGHT }}\n mapStyle=\"mapbox://styles/joaosiqueira/cl2z3nryn003i14qn82b0es7r\"\n mapboxAccessToken={MAPBOX_TOKEN}\n terrain={{ source: 'mapbox-dem', exaggeration: CONFIG.exaggeration }}\n fog={{\n 'color': 'rgba(186, 210, 235,0.3)', // Lower atmosphere\n 'high-color': 'rgb(36, 92, 223)', // Upper atmosphere\n 'horizon-blend': 0.02, // Atmosphere thickness (default 0.2 at low zooms)\n 'space-color': 'rgb(11, 11, 25)', // Background color\n 'star-intensity': 0.6 // Background star brightness (default 0.35 at low zoooms )\n }}\n onClick={handleMapClick}\n onMouseMove={handleMouseMove}\n onMoveEnd={handleMoveEnd}\n >\n <Source\n id=\"mapbox-dem\"\n type=\"raster-dem\"\n url=\"mapbox://mapbox.mapbox-terrain-dem-v1\"\n tileSize={512}\n maxZoom={4}\n />\n { renderShadowLayer() }\n {renderCoverageLayer()}\n {/* <NavigationControl position=\"bottom-left\" /> */}\n <div\n className={classnames({\n [styles.mapWrapperWithHeader]: headerIsVisible,\n })}\n >\n {/* { !(isMobile && showDashboardInfo) &&\n <CustomTooltip arrow title={ formatMessage('map_controls.point_info.title') } placement=\"right\">\n <button\n className={ classnames(styles.mapActionButton, styles.mapSearchButton, {\n [classes.mapButtonActive]: isOnPointSearchMode\n }) }\n onClick={ togglePointSearchMode }\n >\n <NotListedLocationIcon />\n </button>\n </CustomTooltip>\n } */}\n <CoordinatesInfo\n headerIsVisible={headerIsVisible}\n mouseCoordinates={mouseCoordinates}\n />\n </div>\n </Map>\n );\n}\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport styles from './MapboxControl.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n searchButtonActive: {\n color: `${ theme.palette.primary.main } !important`,\n backgroundColor: '#F1F1F1 !important',\n }\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 12,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#444444'\n },\n}))(Tooltip);\n\nexport default function MapboxControl({\n isActive,\n onToggle = () => {},\n headerIsVisible,\n showBeforeAndAfterMosaic,\n}) {\n const classes = useStyles();\n const formatMessage = useFormatMessage();\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperHeader]: headerIsVisible,\n [styles.wrapperWithBeforeAndAfterMosaic]: showBeforeAndAfterMosaic,\n }) }>\n <div id=\"3d-control\" className={ styles.controlWrapper }>\n <CustomTooltip arrow title={ formatMessage('map_controls.view_3d.title') } placement=\"right\">\n <button\n className={ classnames(styles.searchButton, {\n [classes.searchButtonActive]: isActive\n }) }\n onClick={ onToggle }\n >\n 3D\n </button>\n </CustomTooltip>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport Collapse from '@material-ui/core/Collapse';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport IconButton from '@material-ui/core/IconButton';\nimport LayersIcon from '@material-ui/icons/Layers';\nimport MapIcon from '@material-ui/icons/Map';\nimport OpacityIcon from '@material-ui/icons/Opacity';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport Slider from '@material-ui/core/Slider';\nimport Switch from '@material-ui/core/Switch';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport styles from './MapControls.module.scss';\n\nimport baseLayersData from '../../../../../../data/baseLayers';\nimport baseMapsData from '../../../../../../data/baseMaps';\n\nconst useStyles = makeStyles((theme) => ({\n actionButtonActive: {\n backgroundColor: '#F7F7F7',\n '& svg': {\n fill: `${ theme.palette.primary.main } !important`\n },\n },\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 12,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#444444'\n },\n}))(Tooltip);\n\nconst CustomSwitch = withStyles({\n switchBase: {\n '&$checked': {\n color: ({ customColor }) => customColor,\n },\n '&$checked + $track': {\n backgroundColor: ({ customColor }) => customColor,\n },\n },\n checked: {\n color: ({ customColor }) => customColor,\n },\n track: {\n color: ({ customColor }) => customColor,\n },\n})(Switch);\n\nexport default function MapControls({\n activeBaseMap,\n showBeforeAndAfterMosaic,\n activeLayers,\n headerIsVisible,\n layersOpacity,\n onChange,\n}) {\n const classes = useStyles();\n const formatMessage = useFormatMessage();\n const [activeBox, setActiveBox] = useState(null);\n const [opacityValue, setOpacityValue] = useState(layersOpacity);\n const [activeLegendItem, setActiveLegendItem] = useState(null);\n const [activeBaseMapLegendItem, setActiveBaseMapLegendItem] = useState(null);\n\n useEffect(() => {\n if (layersOpacity) {\n setOpacityValue(layersOpacity);\n }\n }, [layersOpacity]);\n\n useEffect(() => {\n if (showBeforeAndAfterMosaic) {\n setActiveBox('opacity');\n }\n }, [showBeforeAndAfterMosaic]);\n\n const isLayerActive = (id) => {\n return !!_.find(activeLayers, (item) => id === item);\n };\n\n const handleLayersChange = (event) => {\n const id = event.target.name;\n let nextActiveItems = _.cloneDeep(activeLayers);\n\n if (isLayerActive(id)) {\n nextActiveItems = _.filter(\n nextActiveItems,\n item => item !== id\n );\n } else {\n nextActiveItems = _.concat(nextActiveItems, id);\n }\n\n onChange('activeLayers', nextActiveItems);\n };\n\n const handleBaseMapChange = (event) => {\n onChange('activeBaseMap', Number(event.target.value));\n };\n\n const getFormattedLabel = (baseKey, labelKey) => {\n return formatMessage(`map_controls.${ baseKey }.options.${ labelKey }`);\n };\n\n const handleToggleLegend = (id) => {\n if (activeLegendItem === id) {\n setActiveLegendItem(null);\n } else {\n setActiveLegendItem(id);\n }\n };\n\n const handleToggleBaseMapLegend = (id) => {\n if (activeBaseMapLegendItem === id) {\n setActiveBaseMapLegendItem(null);\n } else {\n setActiveBaseMapLegendItem(id);\n }\n };\n\n const handleOpacitySliderChangeCommitted = (_event, newValue) => {\n onChange('layersOpacity', newValue);\n };\n\n const handleOpacitySliderChange = (_event, newValue) => {\n setOpacityValue(newValue);\n };\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithoutHeader]: !headerIsVisible,\n [styles.wrapperWithBeforeAndAfterMosaic]: showBeforeAndAfterMosaic,\n }) }>\n <div id=\"opacity-box\" className={ styles.actionBox }>\n <CustomTooltip arrow title={ formatMessage('map_controls.opacity.title') } placement=\"right\">\n <button\n className={ classnames(styles.actionButton, {\n [classes.actionButtonActive]: activeBox === 'opacity'\n }) }\n onClick={ setActiveBox.bind(this, 'opacity') }\n >\n <OpacityIcon />\n </button>\n </CustomTooltip>\n { activeBox === 'opacity' &&\n <ClickAwayListener onClickAway={ setActiveBox.bind(this, null) }>\n <div className={ classnames(styles.actionBoxContent, styles.actionBoxContentOpacity) }>\n <Slider\n orientation=\"vertical\"\n valueLabelDisplay=\"auto\"\n value={ opacityValue }\n onChange={ handleOpacitySliderChange }\n onChangeCommitted={ handleOpacitySliderChangeCommitted }\n />\n </div>\n </ClickAwayListener>\n }\n </div>\n <div id=\"layers-box\" className={ styles.actionBox }>\n <CustomTooltip arrow title={ formatMessage('map_controls.layers.title') } placement=\"right\">\n <button\n className={ classnames(styles.actionButton, styles.actionButtonOpacity, {\n [classes.actionButtonActive]: activeBox === 'layers'\n }) }\n onClick={ setActiveBox.bind(this, 'layers') }\n >\n <LayersIcon />\n </button>\n </CustomTooltip>\n { activeBox === 'layers' &&\n <ClickAwayListener onClickAway={ setActiveBox.bind(this, null) }>\n <div className={ styles.actionBoxContent }>\n <h3><FormattedMessage id=\"map_controls.layers.title\" /></h3>\n <div className={ styles.actionBoxContentScrollWrapper }>\n { _.map(baseLayersData, (item) => {\n return (\n <div className={ styles.actionBoxItemWrapper }>\n <div className={ styles.actionBoxItemHeader }>\n <FormControlLabel\n key={ `limit-control-${ item.key }` }\n control={\n <CustomSwitch\n checked={ isLayerActive(item.key) }\n onChange={ handleLayersChange }\n name={ item.key }\n customColor={ item.color }\n size=\"small\"\n />\n }\n label={ getFormattedLabel('layers', item.labelKey) }\n classes={ {\n root: styles.switchControl,\n label: styles.switchLabel\n } }\n className={ styles.actionBoxItemControl }\n />\n { item.downloadUrl &&\n <IconButton\n className={ styles.actionBoxControlButton }\n href={ item.downloadUrl }\n target=\"_blank\"\n >\n <CloudDownloadIcon />\n </IconButton>\n }\n { item.descriptionData &&\n <IconButton\n className={ classnames(styles.actionBoxControlButton, styles.actionBoxControlButtonToggle) }\n onClick={ handleToggleLegend.bind(this, item.key) }\n >\n { activeLegendItem === item.key ? <ExpandLessIcon /> : <ExpandMoreIcon /> }\n </IconButton>\n }\n </div>\n <Collapse in={ activeLegendItem === item.key }>\n <div className={ styles.actionBoxItemLegend }>\n <ul>\n { _.map(item.descriptionData, (content) => {\n return (\n <li key={ `legend-description-item-${ item.labelKey }-${ content.value }` }>\n <span><FormattedMessage id={ `map_controls.layers.description_data.labels.${ content.labelKey }` } />: </span>\n <span>{ content.value }</span>\n </li>\n );\n }) }\n </ul>\n </div>\n </Collapse>\n </div>\n );\n }) }\n </div>\n </div>\n </ClickAwayListener>\n }\n </div>\n <div id=\"basemap-box\" className={ styles.actionBox }>\n <CustomTooltip arrow title={ formatMessage('map_controls.base_map.title') } placement=\"right\">\n <button\n className={ classnames(styles.actionButton, styles.actionButtonBaseMap, {\n [classes.actionButtonActive]: activeBox === 'baseMap',\n }) }\n onClick={ setActiveBox.bind(this, 'baseMap') }\n >\n <MapIcon />\n </button>\n </CustomTooltip>\n { activeBox === 'baseMap' &&\n <ClickAwayListener onClickAway={ setActiveBox.bind(this, null) }>\n <div className={ `${styles.actionBoxContent} ${styles.baseMapsContentWrapper}` }>\n <h3><FormattedMessage id=\"map_controls.base_map.title\" /></h3>\n <RadioGroup\n name=\"baseMap\"\n value={ activeBaseMap }\n className={ styles.radioGroup }\n >\n { _.map(baseMapsData, (baseMap) => {\n const isDisabled = showBeforeAndAfterMosaic && (\n baseMap.labelKey !== 'mosaic' &&\n baseMap.labelKey !== 'coverage'\n );\n\n return (\n <>\n <div className={styles.baseMapsItemWrapper}>\n <FormControlLabel\n key={ `baseMap-control-${ baseMap.id }` }\n disabled={ isDisabled }\n value={ baseMap.id }\n label={ getFormattedLabel('base_map', baseMap.labelKey) }\n control={ <Radio className={ styles.radioGroupInput } color=\"primary\" size=\"small\" /> }\n classes={ {\n root: styles.radioGroupControl,\n label: styles.radioGroupLabel\n } }\n onChange={ handleBaseMapChange }\n />\n { baseMap.descriptionData &&\n <IconButton\n className={ classnames(styles.actionBoxControlButton, styles.actionBoxControlButtonToggle) }\n onClick={ handleToggleBaseMapLegend.bind(this, baseMap.id) }\n >\n { activeBaseMapLegendItem === baseMap.id ? <ExpandLessIcon /> : <ExpandMoreIcon /> }\n </IconButton>\n }\n </div>\n <Collapse in={ activeBaseMapLegendItem === baseMap.id }>\n <div className={ styles.actionBoxItemLegend }>\n <ul>\n { _.map(baseMap.descriptionData, (content) => {\n return (\n <li key={ `legend-description-item-${ baseMap.labelKey }-${ content.value }` }>\n <span><FormattedMessage id={ `map_controls.layers.description_data.labels.${ content.labelKey }` } />: </span>\n <span>{ content.value }</span>\n </li>\n );\n }) }\n </ul>\n </div>\n </Collapse>\n </>\n );\n }) }\n </RadioGroup>\n </div>\n </ClickAwayListener>\n }\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\n\nexport default function PointHistoryChart({\n data,\n}) {\n if (!data) {\n return null;\n }\n\n const categories = _.get(data, 'categories');\n const series = _.get(data, 'series');\n const yAxisNames = _.get(data, 'yAxisNames');\n\n return (\n <ReactEcharts\n style={{ height: 120 }}\n option={{\n grid: {\n top: 10,\n left: 10,\n bottom: 10,\n right: 10,\n containLabel: true\n },\n xAxis: {\n type: 'category',\n data: categories,\n boundaryGap: false,\n splitLine: {\n show: true\n },\n axisLine: {\n show: false\n }\n },\n yAxis: {\n type: 'category',\n data: yAxisNames,\n axisLine: {\n show: false\n }\n },\n series,\n tooltip: {\n trigger: 'item',\n formatter: (params) => {\n return `${ _.get(params, 'data.data.year') } - ${ _.get(params, 'data.data.label') }`;\n }\n }\n }}\n />\n );\n}","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($lat: Float!, $lng: Float!) {\n territoryCategoriesList {\n id\n key\n parentId\n i18nStrings {\n language\n stringValue\n }\n }\n\n territoriesOnList(lat: $lat, lng: $lng) {\n id\n categoryId\n i18nStrings {\n language\n stringValue\n }\n }\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport numbro from 'numbro';\nimport { useQuery } from '@apollo/react-hooks';\nimport { FormattedMessage } from 'react-intl';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Fade from '@material-ui/core/Fade';\n\nimport PointHistoryChart from './components/PointHistoryChart';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport styles from './MapPointDialog.module.scss';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FlipToFrontIcon from '@material-ui/icons/FlipToFront';\n\nimport {\n GET_BASE_DATA,\n} from './query';\n\nfunction request(url) {\n return fetch(url)\n .then((resp) => resp.json())\n .then((data) => data);\n}\n\nconst formatNumber = (value) => {\n const formattedValue = numbro(value).format({\n thousandSeparated: true,\n mantissa: 2\n });\n\n return _.replace(formattedValue, ',', '.');\n};\n\nexport default function MapPointDialog({\n activeModule,\n headerIsVisible,\n isOpen,\n pointInfo,\n onClose = () => { },\n updateClientAppState = () => { },\n}) {\n const formatMessage = useFormatMessage();\n const locale = localStorage.getItem('locale') || 'es';\n const latlng = _.get(pointInfo, 'latlng');\n const parsedBBox = _.get(pointInfo, 'parsedBBox');\n const [ruralProperties, setRuralProperties] = useState([]);\n const [chartData, setChartData] = useState(null);\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n lat: _.first(latlng),\n lng: _.last(latlng),\n },\n skip: !latlng,\n });\n const getTerritoriesOnList = _.get(baseData, 'territoriesOnList');\n const territoryCategoriesList = _.get(baseData, 'territoryCategoriesList');\n const filteredTerritoryCategoriesList = _.filter(territoryCategoriesList, ({ parentId }) => !parentId);\n\n const bboxString = _.join(parsedBBox, ',');\n\n const geoserverBaseUrl = 'https://shared-geoserver.mapbiomas.org/geoserver/mapbiomas-alerta/wfs?';\n const wfsParams = [\n 'service=WFS',\n 'version=2.0.0',\n 'request=GetFeature',\n 'typeNames=mapbiomas-alerta:mv_sfb_car',\n 'count=20',\n 'outputFormat=application/json',\n 'srsName=EPSG:4326',\n `bbox=${bboxString},EPSG:4326`\n ];\n\n\n const parsePointData = (params) => {\n if (!params) {\n return null;\n }\n\n const { data, legend } = params;\n\n return _(data)\n .map((classId, key) => {\n if (classId === 0) {\n return null;\n }\n\n const year = _.last(_.split(key, '_'));\n const classItemData = _.find(legend, { classification: classId, linguage: locale });\n\n return {\n year,\n ...(classItemData || {})\n };\n })\n .compact()\n .value();\n };\n\n const generareSeriesItem = (categoryIndex, item, index, color) => {\n if (!item) {\n return null;\n }\n\n return {\n value: [index, categoryIndex],\n itemStyle: {\n color: color || _.get(item, 'color'),\n },\n data: item\n };\n };\n\n useEffect(() => {\n if (latlng) {\n const parsedParams = `lat=${_.round(latlng[0], 100)}&lng=${_.round(latlng[1], 10)}`;\n\n let urls = [\n request(`/downloads/history_point?module=coverage&${parsedParams}`),\n // request(`/downloads/history_point?module=fire&${parsedParams}`),\n ];\n\n if (activeModule === 'sentinel') {\n urls = [...urls, request(`/downloads/history_point?module=sentinel&${parsedParams}`)];\n }\n\n Promise.all(urls)\n .then((resp) => {\n const coverageData = parsePointData(_.get(resp, '[0]'));\n // const fireData = parsePointData(_.get(resp, '[1]'));\n // const sentinelData = parsePointData(_.get(resp, '[2]'));\n\n // const years = _.compact(_.uniq(_.map(_.concat(coverageData, fireData, sentinelData), 'year')));\n const years = _.compact(_.uniq(_.map(_.concat(coverageData), 'year')));\n\n let parsedCoverageData = _.map(years, (year, index) => {\n const coverageItem = _.find(coverageData, { year });\n // const fireItem = _.find(fireData, { year });\n // const sentinelItem = _.find(sentinelData, { year });\n let coverageItemParsed = generareSeriesItem(0, coverageItem, index);\n // let fireItemParsed = generareSeriesItem(1, fireItem, index);\n // let sentinelItemParsed = null;\n\n if (activeModule === 'sentinel') {\n // sentinelItemParsed = generareSeriesItem(0, sentinelItem, index);\n coverageItemParsed = generareSeriesItem(1, coverageItem, index);\n // fireItemParsed = generareSeriesItem(2, fireItem, index);\n }\n\n // return _.compact([coverageItemParsed, fireItemParsed, sentinelItemParsed]);\n return _.compact([coverageItemParsed]);\n });\n parsedCoverageData = _.flatten(parsedCoverageData);\n\n let yAxisNames = [\n formatMessage('mapbiomas.map.point_dialog.data_list.coverage'),\n // formatMessage('mapbiomas.map.point_dialog.data_list.fire'),\n ];\n\n if (activeModule === 'sentinel') {\n yAxisNames = [\n // formatMessage('mapbiomas.map.point_dialog.data_list.sentinel'),\n formatMessage('mapbiomas.map.point_dialog.data_list.coverage'),\n // formatMessage('mapbiomas.map.point_dialog.data_list.fire'),\n ];\n }\n\n setChartData({\n categories: years,\n yAxisNames,\n series: [\n {\n name: 'Serie',\n type: 'scatter',\n data: parsedCoverageData\n }\n ]\n });\n });\n }\n }, [latlng]);\n\n useEffect(() => {\n fetch(`${geoserverBaseUrl}${wfsParams.join('&')}`)\n .then((resp) => resp.json())\n .then((data) => {\n const features = _.get(data, 'features');\n const carsList = _.map(features, (feature) => _.get(feature, 'properties'));\n\n setRuralProperties(carsList);\n });\n }, [bboxString]);\n\n const parsedData = _(filteredTerritoryCategoriesList)\n .map((category) => {\n const territoryData = _.find(getTerritoriesOnList, { categoryId: category.id });\n\n if (territoryData) {\n\n const categoryStringList = _.get(category, 'i18nStrings');\n const categorySelectedString = _.find(categoryStringList, { language: locale });\n\n const territoryStringList = _.get(territoryData, 'i18nStrings');\n const territorySelectedString = _.find(territoryStringList, { language: locale });\n\n if (territoryData.categoryId == 15 || territoryData.categoryId == 16) {\n\n return null;\n\n } else {\n\n return {\n id: `${_.join(latlng, '-')}-${territoryData.id}`,\n category: territoryData.categoryId,\n category_key: category.key,\n label: _.get(categorySelectedString, 'stringValue'),\n value: _.get(territorySelectedString, 'stringValue'),\n };\n\n }\n\n } else {\n return null;\n }\n })\n .compact()\n .value();\n\n const handleRuralPropertyClick = (ruralPropertyCode) => {\n updateClientAppState({\n ruralPropertyCode: ruralPropertyCode,\n });\n onClose();\n };\n\n const renderCARs = () => {\n if (_.isEmpty(ruralProperties)) {\n return null;\n }\n\n return (\n\n <React.Fragment>\n <h2 className={classnames(styles.titleCar)}>CARs</h2>\n <ul className={styles.dataListCar}>\n {_.map(ruralProperties, (ruralProperty) => {\n return (\n <Tooltip title='Visualizar o Car no Mapa'>\n <li key={ruralProperty.cod_imovel} id={ruralProperty.cod_imovel} className={styles.dataListCarItemFull} onClick={() => { handleRuralPropertyClick(ruralProperty.cod_imovel) }}>\n <span className={styles.dataListItemLabel} >\n <FlipToFrontIcon fontSize='small' />\n </span>\n <span className={styles.dataListItemLabel}>{ruralProperty.cod_imovel}</span>\n </li>\n </Tooltip>\n );\n\n })}\n </ul>\n </React.Fragment>\n );\n };\n\n return (\n <Fade in={isOpen && !loadingBaseData && !_.isEmpty(parsedData)}>\n <div className={classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible,\n })}>\n <header className={styles.header}>\n <h2 className={styles.title}><FormattedMessage id=\"mapbiomas.map.point_dialog.history_title\" /></h2>\n <IconButton className={styles.closeButton} onClick={onClose}>\n <CloseIcon />\n </IconButton>\n </header>\n <div className={styles.chartWrapper}>\n <PointHistoryChart data={chartData} />\n </div>\n <h2 className={styles.title}><FormattedMessage id=\"mapbiomas.map.point_dialog.title\" /></h2>\n <ul className={styles.dataList}>\n {_.map(parsedData, (item) => {\n\n return (\n <li key={item.id} id={item.id} className={styles.dataListItem}>\n <span className={styles.dataListItemLabel}>{item.label}</span>\n <span className={styles.dataListItemValue}>{item.value}</span>\n </li>\n );\n\n })}\n <li className={styles.dataListItem}>\n <span className={styles.dataListItemLabel}><FormattedMessage id=\"mapbiomas.map.point_dialog.data_list.coordinates\" /></span>\n <span className={styles.dataListItemValue}>{formatNumber(_.first(latlng))}, {formatNumber(_.last(latlng))}</span>\n </li>\n </ul>\n {renderCARs()}\n </div>\n </Fade>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n timelineLimitsRange\n timelineSpecificValues\n }\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport classnames from 'classnames';\n\nimport { useIntl } from 'react-intl';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport DateRangeIcon from '@material-ui/icons/DateRange';\nimport Slider from '@material-ui/core/Slider';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './YearTimeline.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n headerInfoValue: {\n color: theme.palette.primary.main\n },\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '4px',\n fontSize: 12,\n color: '#F5F5F9',\n backgroundColor: '#5A5A5A'\n },\n arrow: {\n color: '#5A5A5A'\n },\n popper: {\n zIndex: 4000\n }\n}))(Tooltip);\n\nexport default function YearTimeline({\n firstYearFixed = false,\n headerIsVisible,\n value: initialValue,\n onChange = () => {},\n}) {\n const intl = useIntl()\n\n const classes = useStyles();\n const { data: baseData } = useQuery(GET_BASE_DATA);\n const rangeLimits = _.get(baseData, 'app.timelineLimitsRange');\n const rangeSpecificValues = _.get(baseData, 'app.timelineSpecificValues');\n const [currentValue, setCurrentValue] = useState(initialValue);\n // const [currentValue, setCurrentValue] = useState(_.last(rangeLimits) || _.last(rangeSpecificValues));\n const [updateKey, setUpdateKey] = useState(_.uniqueId('timeline-'));\n const isRange = _.isArray(initialValue);\n const valueLabel = isRange ? _.join(initialValue, ' - ') : initialValue;\n\n useEffect(() => setCurrentValue(initialValue), [initialValue]);\n useEffect(() => setUpdateKey(_.uniqueId('timeline-')), [isRange, _.last(rangeLimits), _.last(rangeSpecificValues)]);\n\n const handleChange = (_event, newValue) => {\n if (!firstYearFixed) {\n setCurrentValue(newValue);\n } else {\n setCurrentValue([_.first(initialValue), _.last(newValue)]);\n }\n };\n\n const handleChangeComitted = (_event, value) => {\n if (!firstYearFixed) {\n onChange(value);\n } else {\n onChange([_.first(initialValue), _.last(value)]);\n }\n };\n\n function ValueLabelComponent(props) {\n const { children, index, open, value } = props;\n\n let isOpen = open;\n let title = value;\n\n if (index === 0 && firstYearFixed) {\n title = `${ value } - ${intl.formatMessage({id: 'mapbiomas.timeline.fixed_year'})}`;\n }\n\n if (index === 1) {\n isOpen = true;\n title = `${ value } - ${intl.formatMessage({id: 'mapbiomas.timeline.selected_value'})}`;\n }\n\n return (\n <CustomTooltip\n arrow\n open={ isOpen }\n placement=\"top\"\n title={ title }\n >\n { children }\n </CustomTooltip>\n );\n }\n\n let sliderItemsProps = {};\n if (!rangeLimits && !rangeSpecificValues) {\n return null;\n } else if (rangeLimits) {\n sliderItemsProps = {\n step: 1,\n min: _.first(rangeLimits),\n max: _.last(rangeLimits),\n marks: true\n }\n } else {\n sliderItemsProps = {\n step: null,\n min: _.first(rangeSpecificValues),\n max: _.last(rangeSpecificValues),\n marks: rangeSpecificValues.map((rsv) => ({ value: rsv }))\n }\n }\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible,\n }) } id=\"year-timeline\">\n <div className={ styles.timelineInfo }>\n <DateRangeIcon />\n <span className={ classes.headerInfoValue }>{ valueLabel }</span>\n </div>\n <div className={ styles.sliderWrapper }>\n <Slider\n { ...sliderItemsProps }\n key={ `timeline-${ updateKey }` }\n defaultValue={ currentValue || _.last(rangeLimits) || _.last(rangeSpecificValues) }\n value={ currentValue }\n track={ !!isRange }\n valueLabelDisplay=\"auto\"\n ValueLabelComponent={ ValueLabelComponent }\n onChange={ handleChange }\n onChangeCommitted={ handleChangeComitted }\n classes={{\n mark: styles.timelineMark\n }}\n />\n </div>\n </div>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n timelineLimitsRange\n timelineSpecificValues\n }\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport classnames from 'classnames';\n\nimport { useIntl } from 'react-intl';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport DateRangeIcon from '@material-ui/icons/DateRange';\nimport Slider from '@material-ui/core/Slider';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { GET_BASE_DATA } from './query';\n\nimport styles from './YearTimelineMultiple.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n headerInfoValue: {\n color: theme.palette.primary.main\n },\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '4px',\n fontSize: 12,\n color: '#F5F5F9',\n backgroundColor: '#5A5A5A'\n },\n arrow: {\n color: '#5A5A5A'\n },\n popper: {\n zIndex: 4000\n }\n}))(Tooltip);\n\nconst intervals = [\n [1985, 1990],\n [1990, 1995],\n [1995, 2000],\n [2000, 2005],\n [2005, 2010],\n [2010, 2015],\n [2015, 2020],\n\n [2000, 2010],\n [2010, 2020],\n [1990, 2000],\n\n [1985, 2022],\n [1985, 2000],\n\n [2000, 2022],\n [1992, 2002],\n [2002, 2012],\n [2012, 2022],\n];\n\nexport default function YearTimelineMultiple({\n headerIsVisible,\n value: initialValue,\n onChange = () => {},\n}) {\n const intl = useIntl()\n\n const yearList = _.sortBy(_.uniq(_.flatten(intervals)));\n const startYearsList = _.sortBy(_.uniq(_.map(intervals, (range) => _.first(range))));\n\n const classes = useStyles();\n const { data: baseData } = useQuery(GET_BASE_DATA);\n\n const [startValue, setStartValue] = useState(1985);\n const [endValue, setEndValue] = useState(2022);\n\n const filteredIntervals = _.filter(intervals, (range) => _.first(range) === startValue);\n const endYearsList = _.sortBy(_.uniq(_.map(filteredIntervals, (range) => _.last(range))));\n\n // useEffect(() => setCurrentValue(initialValue), [initialValue]);\n // useEffect(() => setUpdateKey(_.uniqueId('timeline-')), [isRange, _.last(rangeLimits), _.last(rangeSpecificValues)]);\n\n const handleChange = (type, _event, newValue) => {\n if (type === 'start') {\n const filteredIntervals = _.filter(intervals, (range) => _.first(range) === newValue);\n const endYearsList = _.sortBy(_.uniq(_.map(filteredIntervals, (range) => _.last(range))));\n setStartValue(newValue);\n setEndValue(_.last(endYearsList));\n } else {\n setEndValue(newValue);\n }\n };\n\n const handleChangeComitted = (type, _event, newValue) => {\n if (type === 'start') {\n const filteredIntervals = _.filter(intervals, (range) => _.first(range) === newValue);\n const endYearsList = _.sortBy(_.uniq(_.map(filteredIntervals, (range) => _.last(range))));\n onChange([newValue, _.last(endYearsList)]);\n } else {\n onChange([startValue, newValue]);\n }\n };\n\n function ValueLabelComponent(props) {\n const { children, index, open, value } = props;\n\n let isOpen = open;\n let title = value;\n\n if (index === 1) {\n isOpen = true;\n title = `${ value } - ${intl.formatMessage({id: 'mapbiomas.timeline.selected_value'})}`;\n }\n\n return (\n <CustomTooltip\n arrow\n open={ isOpen }\n placement=\"top\"\n title={ title }\n >\n { children }\n </CustomTooltip>\n );\n }\n\n let sliderItemsProps = {\n step: null,\n min: _.first(yearList),\n max: _.last(yearList),\n };\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible,\n }) } id=\"year-timeline\">\n <div className={ styles.timelineInfo }>\n <DateRangeIcon />\n </div>\n <div className={ styles.sliderWrapper }>\n <Slider\n { ...sliderItemsProps }\n marks={ startYearsList.map((rsv) => ({ value: rsv })) }\n value={ startValue }\n track={ false }\n valueLabelDisplay=\"auto\"\n ValueLabelComponent={ ValueLabelComponent }\n onChange={ handleChange.bind(this, 'start') }\n onChangeCommitted={ handleChangeComitted.bind(this, 'start') }\n classes={{\n mark: styles.timelineMark\n }}\n />\n <span className={ classnames(styles.valueText, classes.headerInfoValue) }>{ startValue } - { endValue }</span>\n <Slider\n { ...sliderItemsProps }\n marks={ endYearsList.map((rsv) => ({ value: rsv })) }\n value={ endValue }\n track={ false }\n valueLabelDisplay=\"auto\"\n ValueLabelComponent={ ValueLabelComponent }\n onChange={ handleChange.bind(this, 'end') }\n onChangeCommitted={ handleChangeComitted.bind(this, 'end') }\n classes={{\n mark: styles.timelineMark\n }}\n />\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\nimport copy from 'copy-to-clipboard';\n\nimport Button from '@material-ui/core/Button';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport Fade from '@material-ui/core/Fade';\nimport Popper from '@material-ui/core/Popper';\n\nimport {\n FacebookShareButton,\n FacebookIcon,\n TwitterShareButton,\n TwitterIcon,\n WhatsappShareButton,\n WhatsappIcon,\n} from 'react-share';\n\nimport toast from '../../../../utils/toast';\n\nimport useFormatMessage from '../../../../hooks/useFormatMessage';\n\nimport styles from './ShareBox.module.scss';\n\nexport default function ShareBox({\n anchorEl,\n onClose = () => {},\n pageLink = window.location.href,\n placement = 'bottom',\n}) {\n const formatMessage = useFormatMessage();\n const open = Boolean(anchorEl);\n const title = 'MapBiomas';\n\n const handleCopy = () => {\n if (copy) {\n copy(pageLink);\n toast(formatMessage('mapbiomas.map.share_box.actions.copy_success'));\n }\n onClose();\n };\n\n return (\n <Popper open={ open } anchorEl={ anchorEl } placement={ placement } transition style={ { zIndex: 9999 } }>\n {({ TransitionProps }) => (\n <Fade { ...TransitionProps } timeout={ 350 }>\n <ClickAwayListener onClickAway={ onClose }>\n <div className={ styles.boxWrapper }>\n <h2 className={ styles.title }><FormattedMessage id=\"mapbiomas.map.share_box.actions.title\" />:</h2>\n <ul className={ styles.socialList }>\n <li className={ styles.socialItem }>\n <FacebookShareButton\n quote={ title }\n url={ pageLink }\n >\n <FacebookIcon size={ 32 } round={ true } />\n </FacebookShareButton>\n </li>\n <li className={ styles.socialItem }>\n <TwitterShareButton\n title={ title }\n url={ pageLink }\n >\n <TwitterIcon size={ 32 } round={ true } />\n </TwitterShareButton>\n </li>\n <li className={ styles.socialItem }>\n <WhatsappShareButton\n title={ title }\n url={ pageLink }\n >\n <WhatsappIcon size={ 32 } round={ true } />\n </WhatsappShareButton>\n </li>\n </ul>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleCopy }\n >\n <FormattedMessage id=\"mapbiomas.map.share_box.actions.copy\" />\n </Button>\n </div>\n </ClickAwayListener>\n </Fade>\n )}\n </Popper>\n );\n}\n","import React, { useState } from 'react';\nimport classnames from 'classnames';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport ShareIcon from '@material-ui/icons/Share';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport useFormatMessage from '../../../../../../hooks/useFormatMessage';\n\nimport ShareBox from '../../../../components/ShareBox';\n\nimport styles from './ShareControl.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n searchButtonActive: {\n backgroundColor: '#F1F1F1 !important',\n '& svg': {\n fill: `${ theme.palette.primary.main } !important`,\n }\n }\n}));\n\nconst CustomTooltip = withStyles(() => ({\n tooltip: {\n padding: '8px 12px',\n fontSize: 12,\n fontWeight: 400,\n color: 'white',\n backgroundColor: '#444444',\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n },\n arrow: {\n color: '#444444'\n },\n}))(Tooltip);\n\nexport default function ShareControl({\n headerIsVisible,\n showBeforeAndAfterMosaic,\n}) {\n const classes = useStyles();\n const formatMessage = useFormatMessage();\n const [shareAnchorEl, setShareAnchorEl] = useState(null);\n\n const handleShareButtonClick = (event) => {\n setShareAnchorEl(shareAnchorEl ? null : event.currentTarget);\n };\n\n const handleCloseShareBox = () => {\n setShareAnchorEl(null);\n };\n\n return (\n <div id=\"share-button\" className={ classnames(styles.wrapper, {\n [styles.wrapperHeader]: headerIsVisible,\n [styles.wrapperWithBeforeAndAfterMosaic]: showBeforeAndAfterMosaic,\n }) }>\n <div id=\"share-control\" className={ styles.controlWrapper }>\n <CustomTooltip arrow title={ formatMessage('mapbiomas.map.share_box.tooltip') } placement=\"right\">\n <button\n className={ classnames(styles.searchButton, {\n [classes.searchButtonActive]: !!shareAnchorEl\n }) }\n onClick={ handleShareButtonClick }\n >\n <ShareIcon />\n </button>\n </CustomTooltip>\n </div>\n <ShareBox\n anchorEl={ shareAnchorEl }\n onClose={ handleCloseShareBox }\n placement=\"top-start\"\n />\n </div>\n );\n}\n","// Source: https://github.com/apache/echarts/issues/5004#issuecomment-559668309\n\nconst positionTooltipInsideDocument = (canvasMousePos, params, tooltipDom, rect, sizes) => {\n var margin = 10; // How far away from the mouse should the tooltip be\n var overflowMargin = 5; // If no satisfactory position can be found, how far away from the edge of the window should the tooltip be kept\n\n // The chart canvas position\n var canvasRect = tooltipDom.parentElement.getElementsByTagName('canvas')[0].getBoundingClientRect();\n\n // The mouse coordinates relative to the whole window\n // The first parameter to the position function is the mouse position relative to the canvas\n var mouseX = canvasMousePos[0] + canvasRect.x;\n var mouseY = canvasMousePos[1] + canvasRect.y;\n\n // The width and height of the tooltip dom element\n var tooltipWidth = sizes.contentSize[0];\n var tooltipHeight = sizes.contentSize[1];\n\n // Start by placing the tooltip top and right relative to the mouse position\n var xPos = mouseX + margin;\n var yPos = mouseY - margin - tooltipHeight;\n\n // The tooltip is overflowing past the right edge of the window\n if (xPos + tooltipWidth >= document.documentElement.clientWidth) {\n\n // Attempt to place the tooltip to the left of the mouse position\n xPos = mouseX - margin - tooltipWidth;\n\n // The tooltip is overflowing past the left edge of the window\n if (xPos <= 0)\n\n // Place the tooltip a fixed distance from the left edge of the window\n xPos = overflowMargin;\n }\n\n // The tooltip is overflowing past the top edge of the window\n if (yPos <= 0) {\n\n // Attempt to place the tooltip to the bottom of the mouse position\n yPos = mouseY + margin;\n\n // The tooltip is overflowing past the bottom edge of the window\n if (yPos + tooltipHeight >= document.documentElement.clientHeight)\n\n // Place the tooltip a fixed distance from the top edge of the window\n yPos = overflowMargin;\n }\n\n // Return the position (converted back to a relative position on the canvas)\n return [xPos - canvasRect.x, yPos - canvasRect.y]\n}\n\nexport default positionTooltipInsideDocument;\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport positionTooltipInsideDocument from '../../../../../../../../helpers/positionTooltipInsideDocument';\n\nfunction tooltipFormatter(params) {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`;\n let str = `<span>${ params[0].axisValue }</span>`;\n\n params.forEach((item) => {\n const value = _.isObject(item.data) ? item.data.value : item.data;\n\n if (value) {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n const paramValue = `<span>${ colorSpan(item.color) } ${ item.seriesName }: ${ valueLabel }</span>`;\n\n str += paramValue;\n }\n });\n\n return str;\n}\n\nconst yAxisMillionLabelFormatter = (value) => {\n return numbro(value / 1000000).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nconst yAxisLabelPercentageFormatter = (value) => {\n const parsedValue = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n\n return `${ parsedValue }%`;\n};\n\nexport default function BarChart({\n isPercentage,\n categories = [],\n series = [],\n vertical = true,\n hideXAxisLabel = false,\n hasAvgMarkLine = false,\n}) {\n const formatMessage = useFormatMessage();\n const maxValue = _(series)\n .map(({ data }) => {\n const sampleItem = _.first(data);\n\n if (_.get(sampleItem, 'value')) {\n return _.map(data, 'value');\n } else {\n return data;\n }\n })\n .flatten()\n .max();\n const hasMillionValue = maxValue > 1000000;\n\n let yAxisName = 'Hectares';\n\n if (hasMillionValue) {\n yAxisName = formatMessage('mapbiomas.statistics.million_hectares');\n }\n\n let nameGap = 55;\n let gridLeft = '30px';\n let markLine = null;\n\n if (hasMillionValue) {\n nameGap = 35;\n gridLeft = '30px';\n } else if (isPercentage) {\n nameGap = 15;\n gridLeft = '15px';\n }\n\n let xAxis = {\n type: \"category\",\n axisPointer: {\n type: \"shadow\"\n },\n axisLabel: {\n show: !hideXAxisLabel,\n fontSize: 11,\n color: \"#767676\"\n },\n axisLine: {\n color: \"#DDD\"\n },\n data: categories\n };\n let yAxis = {\n name: !isPercentage ? yAxisName : null,\n nameLocation: 'middle',\n nameRotate: 90,\n nameGap,\n nameTextStyle: {\n fontSize: 11,\n color: \"#767676\"\n },\n max: isPercentage ? 100 : undefined,\n axisTick: {\n show: false\n },\n axisLine: {\n color: \"#DDD\"\n },\n splitLine: {\n lineStyle: {\n color: \"rgba(0, 0, 0, 0.05)\"\n }\n },\n axisLabel: {\n formatter: (value) => {\n if (isPercentage) {\n return yAxisLabelPercentageFormatter(value);\n } else if (hasMillionValue) {\n return yAxisMillionLabelFormatter(value);\n } else {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n\n return valueLabel;\n }\n },\n fontSize: 11,\n color: \"#767676\"\n }\n };\n\n if (!vertical) {\n let tempValue = xAxis;\n xAxis = yAxis;\n yAxis = tempValue;\n }\n\n if (hasAvgMarkLine) {\n markLine = {\n symbol: [null, null],\n lineStyle: {\n type: 'solid'\n },\n label: {\n fontSize: 11,\n color: '#767676',\n formatter: (params) => {\n const { value } = params;\n\n if (isPercentage) {\n return yAxisLabelPercentageFormatter(value);\n } else if (hasMillionValue) {\n return yAxisMillionLabelFormatter(value);\n } else {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n\n return valueLabel;\n }\n }\n },\n data: [{ type: 'average', name: 'Média' }]\n };\n }\n\n return (\n <ReactEcharts\n style={ { height: 200 } }\n option={ {\n xAxis,\n yAxis,\n toolbox: {\n feature: {\n saveAsImage: {\n name: 'MapBiomas',\n title: 'Download'\n }\n }\n },\n tooltip: {\n position: positionTooltipInsideDocument,\n appendToBody: true,\n // confine: true,\n // position: [10, 10],\n // position: 'right',\n // position: function (point, params, dom, rect, size) {\n // console.log('point', point);\n // // fixed at top\n // return [0, 0];\n // // return {\n // // right: point[0],\n // // top: -10\n // // };\n // },\n textStyle: {\n align: \"left\",\n color: \"#444\",\n fontSize: 13\n },\n backgroundColor: \"#FFFFFF\",\n borderColor: \"rgba(0, 0, 0, 0.1)\",\n borderWidth: 1,\n extraCssText: \"box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);\",\n trigger: \"axis\",\n formatter: tooltipFormatter,\n },\n grid: {\n top: '8%',\n right: !hasAvgMarkLine ? '10px' : '20px',\n bottom: '8%',\n left: gridLeft,\n containLabel: true\n },\n series: _.map(series, (serie) => {\n return {\n ...serie,\n type: 'bar',\n smooth: true,\n markLine\n };\n }),\n // toolbox: {\n // feature: {\n // saveAsImage: {\n // name: 'MapBiomas',\n // title: 'Download',\n // }\n // }\n // },\n } }\n notMerge={ true }\n />\n );\n}\n","import React from 'react';\nimport numbro from 'numbro';\nimport classnames from 'classnames';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport InfoTooltip from '../../../../../../../../components/InfoTooltip';\n\nimport styles from './MinimalBarData.module.scss';\n\nconst useStyles = makeStyles((theme) => ({\n mainBar: {\n backgroundColor: `${ theme.palette.primary.main } !important`\n },\n}));\n\nconst formatNumber = (value, mantissa = 0) => numbro(value).format({\n thousandSeparated: true,\n mantissa\n});\n\nexport default function MinimalBarData({\n label,\n tooltip,\n value,\n year,\n percentage,\n color,\n}) {\n const classes = useStyles();\n let customMainBarStyles = {};\n\n if (color) {\n customMainBarStyles = {\n backgroundColor: color\n };\n }\n\n return (\n <div className={ styles.wrapper }>\n <div className={ styles.bar }>\n <span className={ styles.backgroundBar } />\n <span\n className={ classnames(styles.mainBar, {\n [classes.mainBar]: !color\n }) }\n style={{ width: `${ percentage }%`, ...customMainBarStyles }}\n />\n </div>\n <div className={ styles.info }>\n <span className={ styles.infoLabel }>\n <span>{ label }</span>\n { tooltip && <InfoTooltip text={ tooltip } /> }\n </span>\n <span className={ styles.infoValue }>\n { year && <b>{ year } / </b> }\n <b>{ formatNumber(value) }</b>\n <small>ha</small>\n </span>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport numbro from 'numbro';\nimport _ from 'lodash';\n\nimport Grid from '@material-ui/core/Grid';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport InfoTooltip from '../../../../../../../../components/InfoTooltip';\n\nimport MinimalBarData from '../MinimalBarData';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nconst formatNumber = (value) => {\n if (!value) { return '-'; }\n\n return numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function BaseValuesChart({\n title = 'Ãrea queimada no perÃodo',\n total,\n totalTitle,\n totalTitleTooltipKey,\n maxValue,\n maxValueTooltipKey,\n maxYear,\n averageValue,\n averageValueTooltipKey,\n averagePercentage,\n minValue,\n minValueTooltipKey,\n minYear,\n minPercentage,\n color,\n}) {\n const formatMessage = useFormatMessage();\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>{ title }</h2>\n <ul className={ styles.infoList }>\n <li className={ styles.infoListItem }>\n <span className={ styles.infoListItemValue }>\n <b>{ formatNumber(total) }</b>\n <small>ha</small>\n </span>\n { totalTitle &&\n <span className={ styles.infoListItemLabel }>\n <span>{ totalTitle }</span>\n { totalTitleTooltipKey &&\n <InfoTooltip\n text={ formatMessage(totalTitleTooltipKey) }\n />\n }\n </span>\n }\n </li>\n </ul>\n <Grid container spacing={ 2 }>\n <Grid item xs={ 12 }>\n <MinimalBarData\n label={ formatMessage('mapbiomas.statistics.summary.max.title') }\n tooltip={ formatMessage(maxValueTooltipKey || 'mapbiomas.statistics.summary.max.tooltip') }\n value={ maxValue }\n percentage={ maxValue ? 100 : 0 }\n color={ color }\n />\n </Grid>\n <Grid item xs={ 12 }>\n <MinimalBarData\n label={ formatMessage('mapbiomas.statistics.summary.average.title') }\n tooltip={ formatMessage(averageValueTooltipKey || 'mapbiomas.statistics.summary.average.tooltip') }\n value={ averageValue }\n percentage={ !_.isNaN(averagePercentage) ? averagePercentage : 0 }\n color={ color }\n />\n </Grid>\n <Grid item xs={ 12 }>\n <MinimalBarData\n label={ formatMessage('mapbiomas.statistics.summary.min.title') }\n tooltip={ formatMessage(minValueTooltipKey || 'mapbiomas.statistics.summary.min.tooltip') }\n value={ minValue }\n percentage={ !_.isNaN(minPercentage) ? minPercentage : 0 }\n color={ color }\n />\n </Grid>\n </Grid>\n </div>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\n\nexport const GET_BASE_DATA = gql`\n query CalcCoverageByYear(\n $classTreeNodeIds: [Int!]!,\n $filteredActiveClassTreeNodeIds: [Int!]!,\n $activeParentClassTreeNodeIds: [Int!]!,\n $years: [Int!]!,\n $territoriesIds: [Int!]!,\n ) {\n getCalcCoverageWichYears(\n classTreeNodeIds: $activeParentClassTreeNodeIds,\n years: $years,\n territoriesIds: $territoriesIds\n ) {\n average\n maximun\n minimun\n percentage\n areaOccurrence\n distByYears {\n total\n year\n }\n }\n\n getCalcAcumCoverageByClasses(\n classTreeNodeIds: $classTreeNodeIds,\n years: $years,\n territoriesIds: $territoriesIds\n ) {\n acumYear {\n classTreeNodeId\n proporcionality\n total\n }\n year\n }\n\n getCalcAcumCoverageByClassesFiltered: getCalcAcumCoverageByClasses(\n classTreeNodeIds: $filteredActiveClassTreeNodeIds,\n years: $years,\n territoriesIds: $territoriesIds\n ) {\n acumYear {\n classTreeNodeId\n proporcionality\n total\n }\n year\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport BarChart from '../../components/BarChart';\nimport BaseValuesChart from '../../components/BaseValuesChart';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nexport default function AnnualStatisticsContent({\n clientType,\n activeYear,\n baseParams,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData,\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n\n const intl = useIntl()\n\n const mainYear = _.last(activeYear);\n const years = [_.first(activeYear), _.last(activeYear)];\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const filteredActiveClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n const childrenIds = _.get(nodeData, 'childrenIds');\n\n if (_.isEmpty(childrenIds)) {\n return true;\n } else {\n return !childrenIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n }\n });\n const getParentIds = (nodeId, ids = []) => {\n const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n const parentId = _.get(nodeData, 'parentId');\n\n if (parentId) {\n return getParentIds(parentId, [...ids, parentId]);\n } else {\n return ids;\n }\n };\n const activeParentClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n const parentIds = getParentIds(nodeId);\n const hasSomeParentActive = parentIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n\n return !hasSomeParentActive;\n });\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: activeClassTreeNodeIds,\n filteredActiveClassTreeNodeIds: filteredActiveClassTreeNodeIds,\n activeParentClassTreeNodeIds: activeParentClassTreeNodeIds,\n years: years,\n territoriesIds: territoryIds\n },\n skip: loadingClassTreeData,\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const getTotalAreaByClassesData = () => {\n const data = _.get(baseData, 'getCalcAcumCoverageByClasses');\n const years = _.map(data, 'year');\n\n const classTreeNodeData = {};\n\n _.each(activeClassTreeNodeIds, (nodeId) => {\n _.each(years, (year) => {\n const yearData = _.find(data, { year });\n const nodeData = _.find(_.get(yearData, 'acumYear'), { classTreeNodeId: nodeId });\n const value = _.get(nodeData, 'total') || null;\n const nodeValues = _.get(classTreeNodeData, nodeId);\n\n if (nodeValues) {\n _.set(classTreeNodeData, nodeId, [...nodeValues, value]);\n } else {\n _.set(classTreeNodeData, nodeId, [value]);\n }\n });\n });\n\n const parsedSeries = _.map(_.keys(classTreeNodeData), (nodeId) => {\n const parsedNodeId = Number(nodeId);\n const nodeData = _.find(classTreeLevelsList, { id: parsedNodeId });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n const prettyIndexOfNodeInTree = _.join(_.get(nodeData, 'positionInTree'), '.');\n\n return {\n nodeId: parsedNodeId,\n stack: 'year',\n name: `${ prettyIndexOfNodeInTree }. ${ label }`,\n color: _.get(nodeData, 'color') || '#e74c3c',\n data: _.get(classTreeNodeData, nodeId),\n };\n });\n const sortedSeries = _.sortBy(parsedSeries, 'name');\n const filteredSeries = _.filter(sortedSeries, ({ nodeId }) => _.includes(filteredActiveClassTreeNodeIds, nodeId));\n\n return {\n categories: years,\n series: sortedSeries,\n filteredSeries,\n };\n };\n\n const getPercentageAreaByClasses = () => {\n const data = _.get(baseData, 'getCalcAcumCoverageByClassesFiltered');\n const years = _.map(data, 'year');\n\n const classTreeNodeData = {};\n\n _.each(filteredActiveClassTreeNodeIds, (nodeId) => {\n _.each(years, (year) => {\n const yearData = _.find(data, { year });\n const nodeData = _.find(_.get(yearData, 'acumYear'), { classTreeNodeId: nodeId });\n const value = _.get(nodeData, 'proporcionality') || null;\n const nodeValues = _.get(classTreeNodeData, nodeId);\n\n if (nodeValues) {\n _.set(classTreeNodeData, nodeId, [...nodeValues, value]);\n } else {\n _.set(classTreeNodeData, nodeId, [value]);\n }\n });\n });\n\n const parsedSeries = _.map(_.keys(classTreeNodeData), (nodeId) => {\n const parsedNodeId = Number(nodeId);\n const nodeData = _.find(classTreeLevelsList, { id: parsedNodeId });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n const prettyIndexOfNodeInTree = _.join(_.get(nodeData, 'positionInTree'), '.');\n\n return {\n nodeId: parsedNodeId,\n stack: 'year',\n name: `${ prettyIndexOfNodeInTree }. ${ label }`,\n color: _.get(nodeData, 'color') || '#e74c3c',\n data: _.get(classTreeNodeData, nodeId),\n };\n });\n const sortedSeries = _.sortBy(parsedSeries, 'name');\n\n return {\n categories: years,\n series: sortedSeries,\n filteredSeries: sortedSeries\n };\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'getCalcCoverageWichYears[0].maximun');\n\n if ((!loading && errorBaseData) || _.isNull(sampleData)) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'totalAreaByClasses': getTotalAreaByClassesData(),\n 'percentageAreaByClasses': getPercentageAreaByClasses(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const areaByPeriod = () => {\n const data = _.get(baseData, 'getCalcCoverageWichYears[0]');\n const distByYears = _.get(data, 'distByYears') || [];\n const total = _.get(data, 'areaOccurrence') || 0;\n const maxValue = _.get(data, 'maximun') || 0;\n const maxYear = _.get(_.find(distByYears, { total: maxValue }), 'year');\n const averageValue = _.get(data, 'average') || 0;\n const minValue = _.get(data, 'minimun') || 0;\n const minYear = _.get(_.find(distByYears, { total: minValue }), 'year');\n const averagePercentage = (averageValue / maxValue) * 100;\n const minPercentage = (minValue / maxValue) * 100;\n\n const customTotal = _.get(_.find(distByYears, { year: mainYear }), 'total') || null;\n const isCustom = classTreeKey === 'mining_main' ||\n classTreeKey === 'quality_of_pasture_data_main' ||\n classTreeKey === 'regeneration_annual_by_class' ||\n classTreeKey === 'irrigation_main' ||\n classTreeKey === 'deforestation_annual_by_class';\n\n return (\n <BaseValuesChart\n title={ !isCustom ? (intl.formatMessage({id: 'mapbiomas.statistics.area.period'})) : `${intl.formatMessage({id: 'mapbiomas.statistics.area.title'})} - ${ mainYear }` }\n totalTitle=\"Total\"\n total={ !isCustom ? total : customTotal }\n maxValue={ maxValue }\n maxYear={ maxYear }\n averageValue={ averageValue }\n averagePercentage={ averagePercentage }\n minValue={ minValue }\n minYear={ minYear }\n minPercentage={ minPercentage }\n />\n );\n };\n\n const totalAreaByClasses = () => {\n const categories = _.get(chartsData, 'totalAreaByClasses.categories') || [];\n const series = _.get(chartsData, 'totalAreaByClasses.filteredSeries') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.anual_statistics_content.area_title\" /></h2>\n <BarChart\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const percentageAreaByClasses = () => {\n const categories = _.get(chartsData, 'percentageAreaByClasses.categories') || [];\n const series = _.get(chartsData, 'percentageAreaByClasses.filteredSeries') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.anual_statistics_content.proportion_title\" /></h2>\n <BarChart\n isPercentage\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const totalAreaByClassesChartData = _.get(chartsData, 'totalAreaByClasses');\n const totalAreaByClassesChartDataCategories = _.get(totalAreaByClassesChartData, 'categories') || [];\n const totalAreaByClassesChartDataSeries = _.get(totalAreaByClassesChartData, 'series') || [];\n\n const totalAreaByClassesChart = {\n title: <FormattedMessage id=\"mapbiomas.anual_statistics_content.area_title\" />,\n columns: totalAreaByClassesChartDataCategories,\n rows: totalAreaByClassesChartDataSeries\n };\n\n const percentageAreaByClassesChartData = _.get(chartsData, 'percentageAreaByClasses');\n const percentageAreaByClassesChartDataCategories = _.get(percentageAreaByClassesChartData, 'categories') || [];\n const percentageAreaByClassesChartDataSeries = _.get(percentageAreaByClassesChartData, 'series') || [];\n\n const percentageAreaByClassesChart = {\n title: <FormattedMessage id=\"mapbiomas.anual_statistics_content.proportion_title\" />,\n columns: percentageAreaByClassesChartDataCategories,\n rows: percentageAreaByClassesChartDataSeries\n };\n\n onShowData([\n totalAreaByClassesChart,\n percentageAreaByClassesChart\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { areaByPeriod() }\n { totalAreaByClasses() }\n { percentageAreaByClasses() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nfunction tooltipFormatter(unit, mantissa = 0, params) {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`;\n let str = `<span>${ params[0].axisValue }</span>`;\n\n params.forEach((item) => {\n const value = _.isObject(item.data) ? item.data.value : item.data;\n\n if (value) {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa,\n });\n const paramValue = `<span>${ colorSpan(item.color) } ${ item.seriesName }: ${ valueLabel }${ unit ? ` ${ unit }` : '' }</span>`;\n\n str += paramValue;\n }\n });\n\n return str;\n}\n\nconst yAxisMillionLabelFormatter = (value) => {\n return numbro(value / 1000000).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function LineChart({\n categories = [],\n series = [],\n chartType = 'line',\n unit,\n mantissa,\n}) {\n let seriesOptions = {\n type: 'line'\n };\n\n if (chartType === 'bar') {\n seriesOptions = {\n type: 'bar',\n stack: 'total',\n };\n }\n\n const formatMessage = useFormatMessage();\n const maxValue = _(series)\n .map('data')\n .flatten()\n .max();\n const hasMillionValue = maxValue > 1000000;\n\n let yAxisName = unit || 'Hectares';\n\n if (hasMillionValue) {\n yAxisName = unit || formatMessage('mapbiomas.statistics.million_hectares');\n }\n\n return (\n <ReactEcharts\n style={ { height: 200 } }\n option={ {\n toolbox: {\n feature: {\n saveAsImage: {\n name: 'MapBiomas',\n title: 'Download'\n }\n }\n },\n tooltip: {\n hideDelay: 2000,\n appendToBody: true,\n textStyle: {\n align: \"left\",\n color: \"#444\",\n fontSize: 11\n },\n backgroundColor: \"#FFFFFF\",\n borderColor: \"rgba(0, 0, 0, 0.1)\",\n borderWidth: 1,\n extraCssText: \"box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);\",\n trigger: \"axis\",\n formatter: tooltipFormatter.bind(this, unit, mantissa),\n },\n grid: {\n top: \"8%\",\n right: \"15px\",\n bottom: \"8%\",\n left: hasMillionValue ? '30px' : '30px',\n containLabel: true\n },\n xAxis: {\n type: \"category\",\n axisPointer: {\n type: \"shadow\"\n },\n axisLabel: {\n fontSize: 11,\n color: \"#767676\"\n },\n axisLine: {\n color: \"#DDD\"\n },\n boundaryGap: false,\n data: categories\n },\n legend: {\n show: false\n },\n yAxis: {\n name: yAxisName,\n nameLocation: 'middle',\n nameRotate: 90,\n nameGap: (hasMillionValue || unit) ? 35 : 55,\n nameTextStyle: {\n fontSize: 11,\n color: \"#767676\"\n },\n axisTick: {\n show: false\n },\n axisLine: {\n color: \"#DDD\"\n },\n splitLine: {\n lineStyle: {\n color: \"rgba(0, 0, 0, 0.05)\"\n }\n },\n axisLabel: {\n formatter: (value) => {\n if (hasMillionValue) {\n return yAxisMillionLabelFormatter(value);\n } else {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n\n return valueLabel;\n }\n },\n fontSize: 11,\n color: \"#767676\"\n }\n },\n series: _.map(series, (serie) => {\n return {\n ...serie,\n ...seriesOptions,\n symbol: 'none',\n smooth: true,\n };\n }),\n // toolbox: {\n // feature: {\n // saveAsImage: {\n // name: 'MapBiomas',\n // title: 'Download',\n // }\n // }\n // },\n } }\n notMerge={ true }\n />\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData(\n $classTreeNodeIds: [Int!]!,\n $toYear: Int!,\n $territoriesIds: [Int!]!,\n ) {\n fequencySeriesAggregatedByYear(\n classTreeNodeIds: $classTreeNodeIds,\n toYear: $toYear,\n territoriesIds: $territoriesIds,\n ) {\n label\n value\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport { useTheme } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport LineChart from '../../components/LineChart';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nconst formatNumber = (value) => {\n return numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function AccumulatedStatisticsContent({\n clientType,\n activeYear,\n baseParams,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData,\n}) {\n const theme = useTheme();\n\n const intl = useIntl()\n\n const toYear = _.isArray(activeYear) ? _.last(activeYear) : activeYear;\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const filteredActiveClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n const childrenIds = _.get(nodeData, 'childrenIds');\n\n if (_.isEmpty(childrenIds)) {\n return true;\n } else {\n return !childrenIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n }\n });\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: filteredActiveClassTreeNodeIds,\n toYear,\n territoriesIds: territoryIds\n },\n skip: loadingClassTreeData,\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const getAccumulatedAreaFromAllPeriodData = () => {\n const data = _.sortBy(_.get(baseData, 'fequencySeriesAggregatedByYear'), 'toYear');\n const categories = _.map(data, 'label') || [];\n const values = _.map(data, 'value') || [];\n\n return {\n title: intl.formatMessage({id: 'mapbiomas.statistics.burned.accumulated.title'}),\n columns: categories,\n rows: [\n {\n name: 'Total',\n data: values,\n }\n ]\n };\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'fequencySeriesAggregatedByYear');\n\n if ((!loading && errorBaseData) || _.isEmpty(sampleData)) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'accumulatedAreaFromAllPeriod': getAccumulatedAreaFromAllPeriodData(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const accumulatedAreaFromAllPeriod = () => {\n const categories = _.get(chartsData, 'accumulatedAreaFromAllPeriod.columns') || [];\n const values = _.get(chartsData, 'accumulatedAreaFromAllPeriod.rows[0].data') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <span>{intl.formatMessage({id: 'mapbiomas.statistics.burned.accumulated.title'})}</span>\n </h2>\n <LineChart\n categories={ categories }\n series={ [\n {\n name: 'Total',\n color: _.get(theme, 'palette.primary.main'),\n data: values,\n }\n ] }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n onShowData([\n _.get(chartsData, 'accumulatedAreaFromAllPeriod')\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { accumulatedAreaFromAllPeriod() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nfunction tooltipFormatter(mantissa = 0, params) {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`;\n let str = `<span>${ params.seriesName }</span>`;\n\n const value = _.isObject(params.data) ? params.data.value : params.data;\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa,\n });\n const percentageFormatted = numbro(params.percent / 100).format({\n output: 'percent',\n mantissa: 2\n });\n const paramValue = `<span>${ colorSpan(params.color) } ${ _.get(params, 'data.name') }: ${ valueLabel } (${ percentageFormatted })</span>`;\n\n str += paramValue;\n\n return str;\n}\n\nexport default function PieChart({\n colors,\n serie,\n unit,\n mantissa,\n}) {\n return (\n <ReactEcharts\n style={ { height: 240, width: '100%' } }\n option={{\n grid: {\n left: 40,\n top: 0,\n right: 40,\n bottom: 20,\n // containLabel: true\n },\n toolbox: {\n feature: {\n saveAsImage: {\n name: 'MapBiomas',\n title: 'Download'\n }\n }\n },\n tooltip: {\n confine: true,\n trigger: 'item',\n textStyle: {\n align: \"left\",\n color: \"#444\",\n fontSize: 13\n },\n backgroundColor: \"#FFFFFF\",\n borderColor: \"rgba(0, 0, 0, 0.1)\",\n borderWidth: 1,\n extraCssText: \"box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);\",\n formatter: tooltipFormatter.bind(this, mantissa)\n },\n legend: {\n show: false\n },\n series: [\n {\n animation: false,\n name: serie.title,\n color: colors ? colors : ['#197D19', '#FFF27F', '#4BE64C', '#EEBFD6', '#D1C868', '#777'],\n type: 'pie',\n radius: '85%',\n data: serie.data,\n label: {\n show: false\n }\n }\n ],\n // toolbox: {\n // feature: {\n // saveAsImage: {\n // name: 'MapBiomas',\n // title: 'Download',\n // }\n // }\n // },\n }\n }\n />\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData(\n $classTreeNodeIds: [Int!]!,\n $fromYear: Int!,\n $toYear: Int!,\n $territoriesIds: [Int!]!,\n ) {\n frequencyAccumulated(\n fromYear: $fromYear,\n toYear: $toYear,\n classTreeNodeIds: $classTreeNodeIds,\n territoriesIds: $territoriesIds,\n ) {\n year\n areaInHa\n classTreeNodeId\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport BarChart from '../../components/BarChart';\nimport PieChart from '../../components/PieChart';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nexport default function AccumulatedDistributedStatisticsContent({\n clientType,\n activeYear,\n baseParams,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData,\n\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n\n const fromYear = _.first(activeYear) || 1985;\n const toYear = _.isArray(activeYear) ? _.last(activeYear) : activeYear;\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const filteredActiveClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n const childrenIds = _.get(nodeData, 'childrenIds');\n\n if (_.isEmpty(childrenIds)) {\n return true;\n } else {\n return !childrenIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n }\n });\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: filteredActiveClassTreeNodeIds,\n fromYear,\n toYear,\n territoriesIds: territoryIds\n },\n skip: loadingClassTreeData,\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const getTotalAreaByClassesData = () => {\n const data = _.get(baseData, 'frequencyAccumulated');\n const years = _.sortBy(_.uniq(_.map(data, 'year')));\n\n const classTreeNodeData = {};\n\n _.each(activeClassTreeNodeIds, (nodeId) => {\n _.each(years, (year) => {\n const nodeData = _.find(data, { year, classTreeNodeId: nodeId });\n const value = _.get(nodeData, 'areaInHa') || null;\n const nodeValues = _.get(classTreeNodeData, nodeId);\n\n if (nodeValues) {\n _.set(classTreeNodeData, nodeId, [...nodeValues, value]);\n } else {\n _.set(classTreeNodeData, nodeId, [value]);\n }\n });\n });\n\n const parsedSeries = _.map(_.keys(classTreeNodeData), (nodeId) => {\n const parsedNodeId = Number(nodeId);\n const nodeData = _.find(classTreeLevelsList, { id: parsedNodeId });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n const prettyIndexOfNodeInTree = _.join(_.get(nodeData, 'positionInTree'), '.');\n\n return {\n nodeId: parsedNodeId,\n stack: 'year',\n name: `${ prettyIndexOfNodeInTree }. ${ label }`,\n color: _.get(nodeData, 'color') || '#e74c3c',\n data: _.get(classTreeNodeData, nodeId),\n };\n });\n const sortedSeries = _.sortBy(parsedSeries, 'name');\n const filteredSeries = _.filter(sortedSeries, ({ nodeId }) => _.includes(filteredActiveClassTreeNodeIds, nodeId));\n\n return {\n categories: years,\n series: sortedSeries,\n filteredSeries,\n };\n };\n\n const getTotalAreaByClassesOnFirstLevelData = () => {\n const filteredSeries = _.get(getTotalAreaByClassesData(), 'filteredSeries');\n\n return _(classTreeLevelsList)\n .filter({ level: 1 })\n .map((node) => {\n const nodeId = _.get(node, 'id');\n const childrenIds = _.get(node, 'childrenIds');\n let totalValue = _.last(_.get(_.find(filteredSeries, { nodeId }), 'data'));\n\n if (!totalValue) {\n totalValue = _.sumBy(childrenIds, (childrenId) => {\n return _.last(_.get(_.find(filteredSeries, { nodeId: childrenId }), 'data'));\n });\n }\n\n const stringList = _.get(node, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n const prettyIndexOfNodeInTree = _.join(_.get(node, 'positionInTree'), '.');\n\n return {\n name: `${ prettyIndexOfNodeInTree }. ${ label }`,\n value: totalValue,\n itemStyle: {\n color: _.get(node, 'color')\n },\n }\n })\n .value();\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'frequencyAccumulated');\n\n if ((!loading && errorBaseData) || (!loading &&_.isEmpty(sampleData))) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'totalAreaByClasses': getTotalAreaByClassesData(),\n 'totalAreaByClassesOnFirstLevel': getTotalAreaByClassesOnFirstLevelData(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const totalAreaByClassesOnFirstLevel = () => {\n const values = _.get(chartsData, 'totalAreaByClassesOnFirstLevel') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title\" values={{ year: toYear }} />\n </h2>\n <PieChart\n serie={{\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.unit'),\n data: values\n }}\n />\n </div>\n );\n };\n\n const totalAreaByClasses = () => {\n const categories = _.get(chartsData, 'totalAreaByClasses.categories') || [];\n const series = _.get(chartsData, 'totalAreaByClasses.filteredSeries') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.statistics.burned.accumulated.distributed_by_class_title\" /></h2>\n <BarChart\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const classViewChartData = _.get(chartsData, 'totalAreaByClassesOnFirstLevel');\n const classViewChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title', { year: toYear }),\n columns: ['Total'],\n rows: _.map(classViewChartData, (item) => {\n return {\n name: _.get(item, 'name'),\n data: [_.get(item, 'value')],\n };\n }),\n };\n\n const totalAreaByClassesChartData = _.get(chartsData, 'totalAreaByClasses');\n const totalAreaByClassesChartDataCategories = _.get(totalAreaByClassesChartData, 'categories') || [];\n const totalAreaByClassesChartDataSeries = _.get(totalAreaByClassesChartData, 'series') || [];\n\n const totalAreaByClassesChart = {\n title: <FormattedMessage id=\"mapbiomas.anual_statistics_content.area_title\" />,\n columns: totalAreaByClassesChartDataCategories,\n rows: totalAreaByClassesChartDataSeries\n };\n\n onShowData([\n classViewChart,\n totalAreaByClassesChart\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { totalAreaByClassesOnFirstLevel() }\n { totalAreaByClasses() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($territoryIds: [Int!]!, $classTreeId: Int!) {\n coverageClassificationDataList: coverageClassificationDataByTreeList(\n classTreeId: $classTreeId,\n\t\t\tbufferId: null,\n\t\t\tterritoryIds: $territoryIds\n ) {\n territoryId\n year\n classTreeNodeId\n areaInHa\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport LineChart from '../../components/LineChart';\nimport PieChart from '../../components/PieChart';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nexport default function CoverageMainStatisticsContent({\n activeYear,\n baseParams,\n chartType,\n clientType,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData,\n unit,\n hasSingleHistoricalData,\n hasCustomCOSValues,\n valueMantissa = 0,\n}) {\n const currentYear = _.isArray(activeYear) ? _.last(activeYear) : activeYear;\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n\n const [chartsData, setChartsData] = useState(null);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeId = _.get(classTreeData, 'classTreeByKey[0].id');\n\n const crossingEnabled = _.get(baseParams, 'crossingEnabled');\n const crossingTerritories = _.get(baseParams, 'crossingTerritories');\n let territories = _.get(baseParams, 'territories');\n\n if (crossingEnabled && !_.isEmpty(crossingTerritories)) {\n territories = crossingTerritories;\n }\n\n const territoryIds = _.map(territories, 'id');\n\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds: territoryIds,\n classTreeId: classTreeId\n },\n skip: _.isEmpty(territoryIds) || !classTreeId || loadingClassTreeData,\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const findFurthestParent = (node) => {\n const { parentId } = node;\n\n if (parentId) {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const parentNode = _.find(classesLevelsList, { id: parentId });\n\n if (parentNode) {\n return _.get(parentNode, 'parentId') ? findFurthestParent(parentNode) : parentNode;\n }\n } else {\n return node;\n }\n };\n\n const findFurthestChildrenIds = (childrenIds = []) => {\n if (!_.isEmpty(childrenIds)) {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n\n const ids = _.map(childrenIds, (id) => {\n const node = _.find(classesLevelsList, { id });\n\n return findFurthestChildrenIds(_.get(node, 'childrenIds'));\n });\n\n return [\n ...childrenIds,\n ...(_.compact(_.flattenDeep(ids)))\n ]\n } else {\n return _.compact(_.flattenDeep(childrenIds));\n }\n };\n\n const parseChartsData = () => {\n let classViewChartDataUnit = null;\n let historicalSeriesChartDataUnit = null;\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const activeClassesLevelsList = _.filter(classesLevelsList, (item) => _.includes(activeClassTreeNodeIds, item.id));\n const coverageClassificationDataList = _.get(baseData, 'coverageClassificationDataList');\n const aggregatedCoverageClassificationDataList = _.values(_.reduce(coverageClassificationDataList, (result, obj) => {\n const key = `${ obj.year }-${ obj.classTreeNodeId }`;\n const nextValue = result[key] ? result[key].areaInHa + obj.areaInHa : obj.areaInHa;\n\n result[key] = {\n ...obj,\n areaInHa: nextValue\n };\n\n return result;\n }, {}));\n\n const parsedData = _.filter(_.map(aggregatedCoverageClassificationDataList, (item) => {\n const classData = _.find(classesLevelsList, { id: item.classTreeNodeId });\n\n return {\n year: Number(_.replace(item.year, '_', '')),\n areaInHa: item.areaInHa,\n classData,\n };\n }), 'classData');\n const years = _.sortBy(_.uniq(_.map(parsedData, 'year')));\n\n const parsedClassesLevelsList = _.map(activeClassesLevelsList, (classData) => {\n const stringList = _.get(classData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const className = `${ _.join(_.get(classData, 'positionInTree'), '.') }. ${ _.get(selectedString, 'stringValue') }`;\n\n return {\n ...classData,\n name: className,\n data: _.map(years, (year) => {\n const coverageClassificationData = _.find(parsedData, (item) => {\n return item.year === year &&\n item.classData.id === classData.id;\n });\n\n return coverageClassificationData ? _.get(coverageClassificationData, 'areaInHa') : null\n })\n };\n });\n\n let classViewChartData = _(activeClassesLevelsList)\n .filter((node) => {\n const childrenIds = findFurthestChildrenIds(_.get(node, 'childrenIds'));\n const hasAtLeastOneChildrenActive = childrenIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n\n return !hasAtLeastOneChildrenActive;\n })\n .map((node) => {\n const furthestParent = findFurthestParent(node);\n const currentData = _.find(parsedData, (item) => _.get(item, 'classData.id') === node.id && item.year === currentYear);\n\n return {\n ...currentData,\n furthestParentId: _.get(furthestParent, 'id'),\n furthestParent: furthestParent\n };\n })\n .groupBy('furthestParentId')\n .map((data) => {\n const sampleItem = _.first(data);\n const stringList = _.get(sampleItem, 'furthestParent.i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const totalValue = _.sumBy(data, 'areaInHa');\n\n return {\n name: _.get(selectedString, 'stringValue'),\n value: totalValue,\n itemStyle: {\n color: _.get(sampleItem, 'furthestParent.color')\n },\n }\n })\n .value();\n\n if (hasCustomCOSValues) {\n classViewChartDataUnit = 'GtCOS';\n let classViewChartDataMinValue = _.get(_.minBy(classViewChartData, 'value'), 'value');\n\n const classViewChartDataValues = (factor) => {\n return _.map(classViewChartData, (item) => {\n const value = _.get(item, 'value');\n\n if (value) {\n return {\n ...item,\n value: value * factor\n }\n } else {\n return item;\n }\n });\n };\n\n if (classViewChartDataMinValue < 0.001) {\n classViewChartData = classViewChartDataValues(1000000);\n classViewChartDataUnit = 'KtCOS';\n } else if (classViewChartDataMinValue < 1) {\n classViewChartData = classViewChartDataValues(1000);\n classViewChartDataUnit = 'MtCOS';\n }\n }\n\n\n let historicalSeriesChartData = _.map(parsedClassesLevelsList, (item) => {\n return {\n name: item.name,\n color: item.color,\n data: item.data,\n level: item.level,\n padding: item.level * 12,\n };\n });\n\n if (hasSingleHistoricalData) {\n let totalData = _.reduce(historicalSeriesChartData, (data, item) => {\n const itemData = _.get(item, 'data');\n\n _.each(itemData, (value, index) => {\n data[index] = (data[index] || 0) + value;\n });\n\n return data;\n }, []);\n\n if (hasCustomCOSValues) {\n historicalSeriesChartDataUnit = 'GtCOS';\n let historicalSeriesChartDataMinValue = _.min(totalData, 'value');\n\n const historicalSeriesChartDataValues = (factor) => {\n return _.map(totalData, (itemValue) => {\n return itemValue ? (itemValue * factor) : itemValue;\n });\n };\n\n if (historicalSeriesChartDataMinValue < 0.001) {\n totalData = historicalSeriesChartDataValues(1000000);\n historicalSeriesChartDataUnit = 'KtCOS';\n } else if (historicalSeriesChartDataMinValue < 1) {\n totalData = historicalSeriesChartDataValues(1000);\n historicalSeriesChartDataUnit = 'MtCOS';\n }\n }\n\n historicalSeriesChartData = [{\n name: 'Total',\n color: '#886956',\n data: totalData,\n level: 1,\n padding: 12,\n }];\n }\n\n return {\n years,\n classViewChartData,\n classViewChartDataUnit,\n historicalSeriesChartData,\n historicalSeriesChartDataUnit,\n };\n };\n\n useEffect(() => {\n if (!loadingClassTreeData && !loadingBaseData && baseData) {\n setChartsData(parseChartsData());\n }\n }, [baseData, loadingBaseData, loadingClassTreeData, activeClassTreeNodeIds, activeYear]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const renderClassViewChart = () => {\n const data = _.get(chartsData, 'classViewChartData');\n const classViewChartDataUnit = _.get(chartsData, 'classViewChartDataUnit');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title\" values={{ year: currentYear }} /></h2>\n <PieChart\n serie={{\n title: classViewChartDataUnit || unit || formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.unit'),\n data\n }}\n mantissa={ valueMantissa }\n />\n </div>\n );\n };\n\n const renderHistoricalSeriesChart = () => {\n const years = _.get(chartsData, 'years');\n const data = _.get(chartsData, 'historicalSeriesChartData');\n const historicalSeriesChartDataUnit = _.get(chartsData, 'historicalSeriesChartDataUnit');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title\" /></h2>\n <LineChart\n chartType={ chartType }\n categories={ years }\n series={ data }\n unit={ historicalSeriesChartDataUnit || unit }\n mantissa={ valueMantissa }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const classViewChartData = _.get(chartsData, 'classViewChartData');\n const classViewChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title', { year: currentYear }),\n columns: ['Total'],\n rows: _.map(classViewChartData, (item) => {\n return {\n name: _.get(item, 'name'),\n data: [_.get(item, 'value')],\n };\n }),\n mantissa: valueMantissa\n };\n\n const years = _.get(chartsData, 'years');\n const historicalSeriesChartData = _.get(chartsData, 'historicalSeriesChartData');\n const historicalSeriesChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title'),\n columns: years,\n rows: historicalSeriesChartData,\n mantissa: valueMantissa\n };\n\n onShowData([\n classViewChart,\n historicalSeriesChart,\n ]);\n };\n\n return (\n <Fragment>\n { loadingBaseData &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { renderClassViewChart() }\n { renderHistoricalSeriesChart() }\n <div id=\"data-view-button\" className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query CalcCoverageByYear(\n $classTreeNodeIds: [Int!],\n $year: [Int!]!,\n $territoriesIds: [Int!],\n ) {\n calcCoverageByYear(\n classTreeNodeIds: $classTreeNodeIds,\n year: $year,\n territoriesIds: $territoriesIds,\n ){\n percentage,\n average,\n maximun,\n minimun,\n totalburnedarea,\n burnedyear{\n total,\n year\n }\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport { useIntl ,FormattedMessage } from 'react-intl';\n\nimport BarChart from '../../components/BarChart';\nimport BaseValuesChart from '../../components/BaseValuesChart';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nexport default function FireAnnualTotalBurnedStatisticsContent({\n clientType,\n activeYear,\n baseParams,\n statisticsDataIsVisible,\n onShowData,\n}) {\n const years = [_.first(activeYear), _.last(activeYear)];\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n const intl = useIntl()\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey: 'fire_annual_total_burned'\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const filteredActiveClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n const childrenIds = _.get(nodeData, 'childrenIds');\n\n if (_.isEmpty(childrenIds)) {\n return true;\n } else {\n return !childrenIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n }\n });\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: filteredActiveClassTreeNodeIds,\n year: years,\n territoriesIds: territoryIds\n },\n skip: loadingClassTreeData,\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const getTotalBurnedAreaByYearData = () => {\n const data = _.get(baseData, 'calcCoverageByYear[0]');\n const values = _.get(data, 'burnedyear');\n const sortedValues = _.sortBy(values, 'year');\n\n return {\n categories: _.map(sortedValues, 'year'),\n series: [\n {\n name: 'Total',\n color: '#e74c3c',\n data: _.map(sortedValues, 'total'),\n }\n ]\n };\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'calcCoverageByYear[0].burnedyear');\n\n if ((!loading && errorBaseData) || _.isEmpty(sampleData)) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'totalBurnedAreaByYear': getTotalBurnedAreaByYearData(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const burnedAreaByPeriod = () => {\n const data = _.get(baseData, 'calcCoverageByYear[0]');\n const total = _.get(data, 'totalburnedarea') || 0;\n const maxValue = _.get(data, 'maximun') || 0;\n const averageValue = _.get(data, 'average') || 0;\n const minValue = _.get(data, 'minimun') || 0;\n const averagePercentage = (averageValue / maxValue) * 100;\n const minPercentage = (minValue / maxValue) * 100;\n\n return (\n <BaseValuesChart\n total={ total }\n maxValue={ maxValue }\n averageValue={ averageValue }\n averagePercentage={ averagePercentage }\n minValue={ minValue }\n minPercentage={ minPercentage }\n title={intl.formatMessage({id: 'mapbiomas.statistics.burned.period_title'})}\n totalTitle={intl.formatMessage({id: 'mapbiomas.statistics.burned.annual_total.summary.total.title'})}\n totalTitleTooltipKey=\"mapbiomas.statistics.burned.annual_total.summary.total.tooltip\"\n maxValueTooltipKey=\"mapbiomas.statistics.burned.annual_total.summary.max.tooltip\"\n averageValueTooltipKey=\"mapbiomas.statistics.burned.annual_total.summary.average.tooltip\"\n minValueTooltipKey=\"mapbiomas.statistics.burned.annual_total.summary.min.tooltip\"\n />\n );\n };\n\n const totalBurnedAreaByYear = () => {\n const categories = _.get(chartsData, 'totalBurnedAreaByYear.categories');\n const series = _.get(chartsData, 'totalBurnedAreaByYear.series');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.statistics.burned.total_per_year_title\" /></h2>\n <BarChart\n hasAvgMarkLine\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const totalBurnedAreaByYearChartData = _.get(chartsData, 'totalBurnedAreaByYear') || [];\n const totalBurnedAreaByYearChart = {\n title: intl.formatMessage({id: 'mapbiomas.statistics.burned.total_per_year_title'}),\n columns: _.get(totalBurnedAreaByYearChartData, 'categories'),\n rows: _.get(totalBurnedAreaByYearChartData, 'series'),\n };\n\n onShowData([\n totalBurnedAreaByYearChart,\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { burnedAreaByPeriod() }\n { totalBurnedAreaByYear() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import React from 'react';\nimport ReactEcharts from 'echarts-for-react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\n\nimport { useIntl } from 'react-intl';\n\nfunction tooltipFormatter(params) {\n const colorSpan = (color) => `<br /><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:${ color }\"></span>`;\n let str = `<span>${ params[0].axisValue }</span>`;\n\n params.forEach((item) => {\n const value = _.isObject(item.data) ? item.data.value : item.data;\n\n if (value) {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n const paramValue = `<span>${ colorSpan(item.color) } ${ item.seriesName }: ${ valueLabel }</span>`;\n\n str += paramValue;\n }\n });\n\n return str;\n}\n\nconst mapMonthToIndex = {\n 'Janeiro': 1,\n 'January': 1,\n 'Fevereiro': 2,\n 'February': 2,\n 'Março': 3,\n 'March': 3,\n 'Abril': 4,\n 'April': 4,\n 'Maio': 5,\n 'May': 5,\n 'Junho': 6,\n 'June': 6,\n 'Julho': 7,\n 'July': 7,\n 'Agosto': 8,\n 'August': 8,\n 'Setembro': 9,\n 'September': 9,\n 'Outubro': 10,\n 'October': 10,\n 'Novembro': 11,\n 'November': 11,\n 'Dezembro': 12,\n 'December': 12,\n};\n\nconst yAxisLabelFormatter = (value) => {\n return numbro(value / 1000000).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function BurnedAreaCustomChart({\n categories,\n data,\n vertical = true,\n customYAxisLabelFormatter = yAxisLabelFormatter,\n}) {\n const intl = useIntl()\n const yAxisName = intl.formatMessage({id: 'mapbiomas.statistics.million_hectares'})\n\n let xAxis = {\n type: 'category',\n axisPointer: {\n type: 'shadow'\n },\n axisLabel: {\n fontSize: 11,\n color: '#767676',\n formatter: (value) => {\n return mapMonthToIndex[value] || value;\n }\n },\n axisLine: {\n color: '#DDD'\n },\n data: categories\n };\n let yAxis = {\n name: yAxisName || null,\n nameLocation: 'middle',\n nameRotate: 90,\n nameGap: 25,\n nameTextStyle: {\n fontSize: 11,\n color: '#767676'\n },\n axisTick: {\n show: false\n },\n axisLine: {\n color: '#DDD'\n },\n splitLine: {\n lineStyle: {\n color: 'rgba(0, 0, 0, 0.05)'\n }\n },\n axisLabel: {\n formatter: (value) => {\n if (customYAxisLabelFormatter) {\n return customYAxisLabelFormatter(value);\n } else {\n const valueLabel = numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n\n return valueLabel;\n }\n },\n fontSize: 11,\n color: '#767676'\n }\n };\n\n if (!vertical) {\n let tempValue = xAxis;\n xAxis = yAxis;\n yAxis = tempValue;\n }\n\n return (\n <ReactEcharts\n style={ { height: 200 } }\n option={ {\n xAxis,\n yAxis,\n tooltip: {\n confine: true,\n textStyle: {\n align: 'left',\n color: '#444',\n fontSize: 13\n },\n backgroundColor: '#FFFFFF',\n borderColor: 'rgba(0, 0, 0, 0.1)',\n borderWidth: 1,\n extraCssText: 'box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.05);',\n trigger: 'axis',\n formatter: tooltipFormatter,\n },\n grid: {\n top: '8%',\n right: '10px',\n bottom: '12%',\n left: yAxisName ? '20px' : '10px',\n containLabel: true\n },\n legend: {\n data: [\n intl.formatMessage({id: 'mapbiomas.statistics.burned.max_value'}),\n intl.formatMessage({id: 'mapbiomas.statistics.burned.average_value'}),\n intl.formatMessage({id: 'mapbiomas.statistics.burned.min_value'}),\n ],\n bottom: 0,\n itemWidth: 15,\n itemHeight: 10,\n textStyle: {\n fontSize: 11,\n color: '#767676',\n }\n },\n series: [\n {\n name: 'Ãrea queimada',\n type: 'bar',\n data: _.get(data, 'total'),\n },\n {\n symbol: 'none',\n name: intl.formatMessage({id: 'mapbiomas.statistics.burned.max_value'}),\n type: 'line',\n data: _.get(data, 'maximum'),\n },\n {\n symbol: 'none',\n name: intl.formatMessage({id: 'mapbiomas.statistics.burned.average_value'}),\n type: 'line',\n data: _.get(data, 'average'),\n },\n {\n symbol: 'none',\n name: intl.formatMessage({id: 'mapbiomas.statistics.burned.min_value'}),\n type: 'line',\n data: _.get(data, 'minimum'),\n },\n ]\n // toolbox: {\n // feature: {\n // saveAsImage: {\n // name: 'MapBiomas',\n // title: 'Download',\n // }\n // }\n // },\n } }\n notMerge={ true }\n />\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query BurnedAreaEvolutionMonthCalcs(\n $classTreeNodeIds: [Int!],\n $year: [Int!]!,\n $territoriesIds: [Int!],\n ) {\n burnedAreaEvolutionMonthCalcs(\n classTreeNodeIds: $classTreeNodeIds,\n year: $year,\n territoriesIds: $territoriesIds,\n ) {\n percentage,\n average,\n maximun,\n minimun,\n totalburnedarea,\n }\n\n burnedAreaEvolutionEachMonth(\n classTreeNodeIds: $classTreeNodeIds,\n year: $year,\n territoriesIds: $territoriesIds,\n ){\n average,\n maximun,\n minimun,\n totalburnedarea,\n classTreeNodeId\n }\n\n burnedAreaEvolutionYears(\n classTreeNodeIds: $classTreeNodeIds,\n years: [1985, 2022],\n territoriesIds: $territoriesIds,\n ){\n acumulated {\n classTreeNodeId\n total\n }\n territoriesid\n year\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport BarChart from '../../components/BarChart';\nimport BaseValuesChart from '../../components/BaseValuesChart';\nimport BurnedAreaCustomChart from '../../components/BurnedAreaCustomChart';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nexport default function FireMonthlyStatisticsContent({\n clientType,\n activeYear,\n baseParams,\n statisticsDataIsVisible,\n onShowData,\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const intl = useIntl()\n\n const years = [activeYear];\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey: 'fire_monthly'\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: activeClassTreeNodeIds,\n year: years,\n territoriesIds: territoryIds\n },\n skip: _.isArray(activeYear),\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const getCustomBurnedAreaByMonthData = () => {\n const data = _.get(baseData, 'burnedAreaEvolutionEachMonth');\n\n const parsedCategories = _.map(_.map(data, 'classTreeNodeId'), (nodeId) => {\n const nodeData = _.find(classTreeLevelsList, { id: Number(nodeId) });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n\n return label;\n });\n\n return {\n categories: parsedCategories,\n data,\n };\n };\n\n const getAnnualAreaByMonthData = () => {\n const data = _.get(baseData, 'burnedAreaEvolutionYears');\n const years = _.map(data, 'year');\n\n const classTreeNodeData = {};\n\n _.each(data, (item) => {\n _.each(_.get(item, 'acumulated'), (nodeItem) => {\n const nodeId = _.get(nodeItem, 'classTreeNodeId');\n const nodeValues = _.get(classTreeNodeData, nodeId);\n\n if (nodeValues) {\n _.set(classTreeNodeData, nodeId, [...nodeValues, _.get(nodeItem, 'total')]);\n } else {\n _.set(classTreeNodeData, nodeId, [_.get(nodeItem, 'total')]);\n }\n });\n });\n\n const parsedSeries = _.map(_.keys(classTreeNodeData), (nodeId) => {\n const nodeData = _.find(classTreeLevelsList, { id: Number(nodeId) });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n\n return {\n stack: 'year',\n name: label,\n color: _.get(nodeData, 'color') || '#e74c3c',\n data: _.get(classTreeNodeData, nodeId),\n };\n });\n\n return {\n categories: years,\n series: parsedSeries\n };\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'burnedAreaEvolutionMonthCalcs[0].maximun');\n\n if ((!loading && errorBaseData) || _.isNull(sampleData)) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'customBurnedAreaByMonth': getCustomBurnedAreaByMonthData(),\n 'annualAreaByMonth': getAnnualAreaByMonthData(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const burnedAreaByPeriod = () => {\n const data = _.get(baseData, 'burnedAreaEvolutionMonthCalcs[0]');\n const total = _.get(data, 'totalburnedarea') || 0;\n const maxValue = _.get(data, 'maximun') || 0;\n const averageValue = _.get(data, 'average') || 0;\n const minValue = _.get(data, 'minimun') || 0;\n const averagePercentage = (averageValue / maxValue) * 100;\n const minPercentage = (minValue / maxValue) * 100;\n\n return (\n <BaseValuesChart\n title={ intl.formatMessage({id: 'mapbiomas.statistics.burned.burned_area_for_selected_year'}) }\n total={ total }\n maxValue={ maxValue }\n averageValue={ averageValue }\n averagePercentage={ averagePercentage }\n minValue={ minValue }\n minPercentage={ minPercentage }\n maxValueTooltipKey=\"mapbiomas.statistics.burned.monthly.summary.max.tooltip\"\n averageValueTooltipKey=\"mapbiomas.statistics.burned.monthly.summary.average.tooltip\"\n minValueTooltipKey=\"mapbiomas.statistics.burned.monthly.summary.min.tooltip\"\n />\n );\n };\n\n const customBurnedAreaByMonth = () => {\n const categories = _.get(chartsData, 'customBurnedAreaByMonth.categories') || [];\n const data = _.get(chartsData, 'customBurnedAreaByMonth.data');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <span>{intl.formatMessage({id: 'mapbiomas.statistics.burned.area_burned_per_month'})}</span>\n <span className={ styles.secondaryTitleExtraInfo }>{ intl.formatMessage({id: 'mapbiomas.statistics.burned.area_burned_per_month_description'}) }</span>\n </h2>\n <BurnedAreaCustomChart\n categories={ categories }\n data={{\n total: _.map(data, 'totalburnedarea'),\n maximum: _.map(data, 'maximun'),\n average: _.map(data, 'average'),\n minimum: _.map(data, 'minimun'),\n }}\n />\n </div>\n );\n };\n\n const annualAreaByMonth = () => {\n const categories = _.get(chartsData, 'annualAreaByMonth.categories') || [];\n const series = _.get(chartsData, 'annualAreaByMonth.series') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <span>{intl.formatMessage({id: 'mapbiomas.statistics.burned.month_burned_area_historic'})}</span>\n <span className={ styles.secondaryTitleExtraInfo }>{intl.formatMessage({id: 'mapbiomas.statistics.burned.month_burned_area_historic_description'})}</span>\n </h2>\n <BarChart\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const customBurnedAreaByMonthChartData = _.get(chartsData, 'customBurnedAreaByMonth');\n const customBurnedAreaByMonthChartDataCategories = _.get(customBurnedAreaByMonthChartData, 'categories') || [];\n const customBurnedAreaByMonthChartDataData = _.get(customBurnedAreaByMonthChartData, 'data');\n\n const customBurnedAreaByMonthChart = {\n title: intl.formatMessage({id: 'mapbiomas.statistics.burned.area_burned_per_month'}),\n columns: customBurnedAreaByMonthChartDataCategories,\n rows: [\n {\n name: intl.formatMessage({id: 'mapbiomas.statistics.burned.burned_area'}),\n data: _.map(customBurnedAreaByMonthChartDataData, 'totalburnedarea')\n },\n {\n name: intl.formatMessage({id: 'mapbiomas.statistics.burned.max_value'}),\n data: _.map(customBurnedAreaByMonthChartDataData, 'maximun')\n },\n {\n name: intl.formatMessage({id: 'mapbiomas.statistics.burned.average_value'}),\n data: _.map(customBurnedAreaByMonthChartDataData, 'average')\n },\n {\n name: intl.formatMessage({id: 'mapbiomas.statistics.burned.min_value'}),\n data: _.map(customBurnedAreaByMonthChartDataData, 'minimun')\n },\n ]\n };\n\n const annualAreaByMonthChartData = _.get(chartsData, 'annualAreaByMonth');\n const annualAreaByMonthChartDataCategories = _.get(annualAreaByMonthChartData, 'categories') || [];\n const annualAreaByMonthChartDataSeries = _.get(annualAreaByMonthChartData, 'series') || [];\n\n const annualAreaByMonthChart = {\n title: intl.formatMessage({id: 'mapbiomas.statistics.burned.month_burned_area_historic'}),\n columns: annualAreaByMonthChartDataCategories,\n rows: _.map(annualAreaByMonthChartDataSeries, (serie) => {\n return {\n name: _.get(serie, 'name'),\n data: _.get(serie, 'data')\n };\n })\n };\n\n onShowData([\n customBurnedAreaByMonthChart,\n annualAreaByMonthChart,\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { burnedAreaByPeriod() }\n { customBurnedAreaByMonth() }\n { annualAreaByMonth() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData(\n $classTreeNodeIds: [Int!]!,\n $fromYear: Int!,\n $toYear: Int!,\n $territoriesIds: [Int!]!,\n ) {\n frequencyAccumulatedGrouped(\n fromYear: $fromYear,\n toYear: $toYear,\n classTreeNodeIds: $classTreeNodeIds,\n territoriesIds: $territoriesIds,\n ) {\n year\n areaInHa\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport { useTheme } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport BarChart from '../../components/BarChart';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nconst formatNumber = (value) => {\n return numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function FireAccumulatedStatisticsContent({\n clientType,\n activeYear,\n baseParams,\n classTreeKey,\n localeKey = 'burned',\n statisticsDataIsVisible,\n onShowData,\n}) {\n const theme = useTheme();\n\n const intl = useIntl()\n\n const fromYear = _.first(activeYear) || 1985;\n const toYear = _.isArray(activeYear) ? _.last(activeYear) : activeYear;\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const filteredActiveClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n const childrenIds = _.get(nodeData, 'childrenIds');\n\n if (_.isEmpty(childrenIds)) {\n return true;\n } else {\n return !childrenIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n }\n });\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: filteredActiveClassTreeNodeIds,\n fromYear,\n toYear,\n territoriesIds: territoryIds\n },\n skip: loadingClassTreeData,\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const getAccumulatedAreaFromAllPeriodData = () => {\n const data = _.sortBy(_.get(baseData, 'frequencyAccumulatedGrouped'), 'year');\n const categories = _.map(data, 'year') || [];\n const values = _.map(data, 'areaInHa') || [];\n\n return {\n title: intl.formatMessage({id: 'mapbiomas.statistics.burned.accumulated.title'}),\n columns: categories,\n rows: [\n {\n name: 'Total',\n data: values,\n }\n ]\n };\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'frequencyAccumulatedGrouped');\n\n if ((!loading && errorBaseData) || _.isEmpty(sampleData)) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'accumulatedAreaFromAllPeriod': getAccumulatedAreaFromAllPeriodData(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const totalSummary = () => {\n const values = _.get(chartsData, 'accumulatedAreaFromAllPeriod.rows[0].data') || [];\n const lastValue = _.last(values);\n\n return (\n <div className={ styles.sectionSmall }>\n <h2 className={ styles.secondaryTitle }>\n <span><FormattedMessage id={ `mapbiomas.statistics.${ localeKey }.accumulated.summary.title` } /></span>\n </h2>\n <ul className={ styles.infoList }>\n <li className={ styles.infoListItem }>\n <span className={ styles.infoListItemValue }>\n <b>{ formatNumber(lastValue) }</b>\n <small>ha</small>\n </span>\n <span className={ styles.infoListItemLabel }>\n <span><FormattedMessage id={ `mapbiomas.statistics.${ localeKey }.accumulated.summary.total.title` } /></span>\n </span>\n </li>\n </ul>\n </div>\n );\n };\n\n const accumulatedAreaFromAllPeriod = () => {\n const categories = _.get(chartsData, 'accumulatedAreaFromAllPeriod.columns') || [];\n const values = _.get(chartsData, 'accumulatedAreaFromAllPeriod.rows[0].data') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <span>{intl.formatMessage({id: 'mapbiomas.statistics.burned.accumulated.title'})}</span>\n </h2>\n <BarChart\n categories={ categories }\n series={ [\n {\n name: 'Total',\n color: _.get(theme, 'palette.primary.main'),\n data: values,\n }\n ] }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n onShowData([\n _.get(chartsData, 'accumulatedAreaFromAllPeriod')\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { totalSummary() }\n { accumulatedAreaFromAllPeriod() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData(\n $classTreeNodeIds: [Int!]!,\n $fromYear: Int!,\n $toYear: Int!,\n $territoriesIds: [Int!]!,\n $locale: String\n ) {\n frequencyAggregated(\n classTreeNodeIds: $classTreeNodeIds,\n fromYear: $fromYear,\n toYear: $toYear,\n territoriesIds: $territoriesIds,\n ) {\n average\n maximum\n minimum\n total\n }\n\n frequencySeriesAggregated(\n classTreeNodeIds: $classTreeNodeIds,\n fromYear: $fromYear,\n toYear: $toYear,\n territoriesIds: $territoriesIds,\n ) {\n label\n value\n }\n\n frequencySeriesAggregatedByClass(\n classTreeNodeIds: $classTreeNodeIds,\n fromYear: $fromYear,\n toYear: $toYear,\n territoriesIds: $territoriesIds,\n locale: $locale\n )\n\n # getAreaFrequenceByClass(\n # classTreeNodeIds: $classTreeNodeIds,\n # fromYear: $fromYear,\n # toYear: $toYear,\n # territoriesIds: $territoriesIds,\n # ){\n # territoriesIds\n # fromYear\n # toYear\n # classTreeNodeIds\n # freqByClass {\n # areaInHa\n # classRegisterId\n # classNameEn\n # classNamePt\n # color\n # }\n # }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport BarChart from '../../components/BarChart';\nimport BaseValuesChart from '../../components/BaseValuesChart';\nimport PieChart from '../../components/PieChart';\n\nimport InfoTooltip from '../../../../../../../../components/InfoTooltip';\n\nimport customClient from '../../../../../../../../core/custom-apollo-client/custom-apollo-client';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nexport default function FrequencyStatisticsContent({\n clientType,\n ageMode = false,\n fireMode = false,\n deforestationMode = false,\n activeYear,\n baseParams,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData,\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n\n const intl = useIntl()\n\n const mainYear = _.last(activeYear);\n const fromYear = _.first(activeYear);\n const toYear = _.last(activeYear);\n const years = [_.first(activeYear), _.last(activeYear)];\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: activeClassTreeNodeIds,\n fromYear: ageMode ? toYear : fromYear,\n toYear,\n years: years,\n territoriesIds: territoryIds,\n locale: locale\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const frequencyByAreaData = () => {\n const data = _.get(baseData, 'frequencySeriesAggregated');\n\n const parsedValues = _.map(data, (item) => {\n const nodeId = _.get(item, 'label');\n const value = _.get(item, 'value');\n const nodeData = _.find(classTreeLevelsList, { id: Number(nodeId) });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n\n return {\n name: label,\n value,\n itemStyle: {\n color: _.get(nodeData, 'color') || '#e74c3c'\n },\n position: _.get(nodeData, 'positionInTree[0]')\n };\n });\n\n return _.sortBy(parsedValues, 'position');\n };\n\n const getTotalBurnedAreaByFrequencyAndClassData = () => {\n const newData = baseData['frequencySeriesAggregatedByClass'] || {}\n\n const categories = newData['classes'].map(({ label }) => label )\n\n const series = newData['burned'].map(({color, label, areas}) => {\n const collection = newData['classes'].map(({ id })=>{\n const nodeData = _.find(classTreeLevelsList, { id: Number(id) });\n\n if (nodeData && areas[id]) {\n return {\n value: areas[id] || null,\n itemStyle: {\n color: _.get(nodeData, 'color')\n }\n };\n } else {\n return areas[id] || null;\n }\n })\n\n return {\n stack: 'classTreeNodeId',\n name: label,\n color: color,\n data: collection\n };\n });\n\n return {\n categories: categories,\n series: series,\n };\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'frequencySeriesAggregated');\n\n if ((!loading && errorBaseData) || _.isEmpty(sampleData)) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'frequencyByArea': frequencyByAreaData(),\n 'frequencyByAreaAndClass': getTotalBurnedAreaByFrequencyAndClassData(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const areaByPeriod = () => {\n const dataAggregated = _.get(baseData, 'frequencyAggregated');\n\n const total = _.get(dataAggregated, 'total') || 0;\n const maxValue = _.get(dataAggregated, 'maximum') || 0;\n const minValue = _.get(dataAggregated, 'minimum') || 0;\n const averageValue = _.get(dataAggregated, 'average') || 0;\n const averagePercentage = (averageValue / maxValue) * 100;\n const minPercentage = (minValue / maxValue) * 100;\n\n const distByYears = _.get(baseData, 'frequencySeriesAggregated') || [];\n const maxYear = _.get(_.find(distByYears, { value: maxValue }), 'label');\n const minYear = _.get(_.find(distByYears, { value: minValue }), 'label');\n\n const customTotal = _.get(_.find(distByYears, { label: mainYear }), 'value') || null;\n const isMining = classTreeKey === 'mining_annual';\n\n return (\n <BaseValuesChart\n title={ !isMining ? intl.formatMessage({id: 'mapbiomas.statistics.area.period'}) : `Ãrea - ${ mainYear }` }\n totalTitle=\"Total\"\n total={ !isMining ? total : customTotal }\n maxValue={ maxValue }\n maxYear={ maxYear }\n averageValue={ averageValue }\n averagePercentage={ averagePercentage }\n minValue={ minValue }\n minYear={ minYear }\n minPercentage={ minPercentage }\n />\n );\n };\n\n const frequencyPieChart = () => {\n const values = _.get(chartsData, 'frequencyByArea') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <span><FormattedMessage id=\"mapbiomas.statistics.burned.frequency.area_frequency_pie.title\" /></span>\n </h2>\n <PieChart\n serie={{\n title: intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_frequency.title'}),\n data: values\n }}\n />\n </div>\n );\n };\n\n const frequencyByArea = () => {\n const values = _.get(chartsData, 'frequencyByArea') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <span>{ !ageMode ? intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_frequency.title'}) : intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_per_age.title'}) }</span>\n\n <InfoTooltip text={intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.title_period_tooltip'})} />\n </h2>\n\n <BarChart\n categories={ _.map(values, 'name') }\n series={ [\n {\n name: 'Total',\n data: values,\n }\n ] }\n />\n </div>\n );\n };\n\n const frequencyByAreaAndClass = () => {\n const categories = _.get(chartsData, 'frequencyByAreaAndClass.categories') || [];\n const series = _.get(chartsData, 'frequencyByAreaAndClass.series') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }>\n <span>\n {\n !ageMode\n ? intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_frequency.subtitle'})\n : intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_per_age.subtitle'})\n }\n <InfoTooltip text={intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.title_class_coverage_tooltip'})} />\n </span>\n <span className={ styles.secondaryTitleExtraInfo }>{intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.extra_info'})}</span>\n </h2>\n <BarChart\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const frequencyByAreaChartData = _.get(chartsData, 'frequencyByArea') || [];\n const frequencyByAreaChart = {\n title: !ageMode ? intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_frequency.title'}) : intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_per_age.title'}),\n columns: _.map(frequencyByAreaChartData, 'name'),\n rows: [\n {\n name: 'Total',\n data: _.map(frequencyByAreaChartData, 'value'),\n }\n ]\n };\n\n const frequencyByAreaAndClassChartData = _.get(chartsData, 'frequencyByAreaAndClass');\n const frequencyByAreaAndClassChartDataCategories = _.get(frequencyByAreaAndClassChartData, 'categories') || [];\n const frequencyByAreaAndClassChartDataSeries = _.get(frequencyByAreaAndClassChartData, 'series') || [];\n\n const frequencyByAreaAndClassChart = {\n title:\n !ageMode\n ? intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_frequency.subtitle'})\n : intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.area_per_age.subtitle'}),\n columns: frequencyByAreaAndClassChartDataCategories,\n rows: _.map(frequencyByAreaAndClassChartDataSeries, (serie) => {\n return {\n name: _.get(serie, 'name'),\n data: _.get(serie, 'data')\n };\n })\n };\n\n onShowData([\n frequencyByAreaChart,\n frequencyByAreaAndClassChart,\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { !fireMode && !deforestationMode && areaByPeriod() }\n { (fireMode || deforestationMode) && frequencyPieChart() }\n { frequencyByArea() }\n { !deforestationMode && frequencyByAreaAndClass() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\n\nexport const GET_BASE_DATA = gql`\n query CalcCoverageByYear(\n $classTreeNodeIds: [Int!]!,\n $years: [Int!]!,\n $territoriesIds: [Int!]!,\n ) {\n getCalcAcumCoverageByClasses(\n classTreeNodeIds: $classTreeNodeIds,\n years: $years,\n territoriesIds: $territoriesIds\n ) {\n acumYear {\n classTreeNodeId\n proporcionality\n total\n }\n year\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport BarChart from '../../components/BarChart';\nimport PieChart from '../../components/PieChart';\n\nimport styles from '../../StatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nconst CLASS_NAME_SUMMARY_MAPPER = {\n '0': ['Nenhuma', 'Zero'],\n '1': ['Uma', 'One'],\n '2': ['Duas', 'Two'],\n '3': ['Três', 'Three'],\n '4': ['Quatro', 'Four'],\n '5': ['Cinco', 'Five'],\n '> 5': ['Mais de Cinco', 'More Than Five'],\n '> 6': ['Mais de seis', 'Six or more'],\n};\n\nexport default function NumberOfClassesStatisticsContent({\n activeYear,\n baseParams,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData,\n localeKey = 'number_of_classes_content',\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n\n const yearFormatted = Number(_.join(activeYear, ''));\n const years = [yearFormatted];\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territories = _.get(baseParams, 'territories');\n const territoryIds = _.map(territories, 'id');\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n }\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: activeClassTreeNodeIds,\n years: years,\n territoriesIds: territoryIds\n },\n skip: loadingClassTreeData\n });\n\n const isLoading = loadingClassTreeData || loading;\n\n const getTotalAreaByClassesData = () => {\n const data = _.get(baseData, 'getCalcAcumCoverageByClasses');\n\n let parsedSeries = _.map(_.get(_.first(data), 'acumYear'), (item) => {\n const { classTreeNodeId, total } = item;\n\n const nodeData = _.find(classTreeLevelsList, { id: classTreeNodeId });\n\n if (!nodeData) {\n return null;\n }\n\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n const prettyIndexOfNodeInTree = _.join(_.get(nodeData, 'positionInTree'), '.');\n\n return {\n nodeId: classTreeNodeId,\n name: `${ prettyIndexOfNodeInTree }. ${ label }`,\n color: _.get(nodeData, 'color'),\n total\n };\n });\n\n parsedSeries = _.map(_.compact(parsedSeries), (serie) => {\n let name = serie.name;\n\n _.each(CLASS_NAME_SUMMARY_MAPPER, (values, key) => {\n _.each(values, (value) => {\n if (_.includes(_.kebabCase(name), _.kebabCase(value))) {\n name = key;\n }\n })\n });\n\n return { ...serie, name };\n });\n\n const sortedSeries = _.sortBy(parsedSeries, 'name');\n\n return {\n series: sortedSeries,\n };\n };\n\n useEffect(() => {\n if (!isLoading && errorBaseData) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!isLoading && baseData) {\n setChartsData({\n 'totalAreaByClasses': getTotalAreaByClassesData(),\n });\n }\n }, [baseData, isLoading, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const numberOfClasses = () => {\n const series = _.get(chartsData, 'totalAreaByClasses.series') || [];\n\n const parsedSeries = _.map(series, (serie) => {\n return {\n name: serie.name,\n value: serie.total,\n itemStyle: {\n color: serie.color\n },\n }\n });\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id={ `mapbiomas.${ localeKey }.pie_chart_title` } /></h2>\n <PieChart\n serie={{\n title: 'Total',\n data: parsedSeries\n }}\n />\n </div>\n );\n };\n\n const areaByNumberOfClasses = () => {\n const series = _.get(chartsData, 'totalAreaByClasses.series') || [];\n\n const parsedSeries = _.map(series, (serie) => {\n return {\n name: serie.name,\n value: serie.total,\n itemStyle: {\n color: serie.color\n },\n }\n });\n\n const hideXAxisLabel = _.size(_.get(_.sample(series), 'name')) > 5;\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id={ `mapbiomas.${ localeKey }.bar_chart_title` } /></h2>\n <BarChart\n hideXAxisLabel={ hideXAxisLabel }\n categories={ _.map(series, 'name') }\n series={ [\n {\n name: 'Total',\n data: parsedSeries\n }\n ] }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const series = _.get(chartsData, 'totalAreaByClasses.series') || [];\n const parsedRows = _.map(series, (item) => {\n return {\n ...item,\n data: [_.get(item, 'total')]\n };\n });\n\n const numberOfClassesChart = {\n title: <FormattedMessage id={ `mapbiomas.${ localeKey }.bar_chart_title` } />,\n columns: ['Total'],\n rows: parsedRows\n };\n\n onShowData([\n numberOfClassesChart,\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n { numberOfClasses() }\n { areaByNumberOfClasses() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { isLoading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p>Nenhum resultado encontrado.</p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import React, { useState } from 'react';\nimport classnames from 'classnames';\nimport _ from 'lodash';\n\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Collapse from '@material-ui/core/Collapse';\nimport IconButton from '@material-ui/core/IconButton';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\n\nimport AnnualStatisticsContent from './content/AnnualStatisticsContent';\nimport AccumulatedStatisticsContent from './content/AccumulatedStatisticsContent';\nimport AccumulatedDistributedStatisticsContent from './content/AccumulatedDistributedStatisticsContent';\nimport CoverageMainStatisticsContent from './content/CoverageMainStatisticsContent';\nimport FireAnnualTotalBurnedStatisticsContent from './content/FireAnnualTotalBurnedStatisticsContent';\nimport FireMonthlyStatisticsContent from './content/FireMonthlyStatisticsContent';\nimport FireAccumulatedStatisticsContent from './content/FireAccumulatedStatisticsContent';\nimport FrequencyStatisticsContent from './content/FrequencyStatisticsContent';\nimport NumberOfClassesStatisticsContent from './content/NumberOfClassesStatisticsContent';\nimport StableAreasStatisticsContent from './content/StableAreasStatisticsContent';\n\nimport InfoTooltip from '../../../../../../components/InfoTooltip';\n\nimport customClientModules from '../../../../../../data/customClientModules';\n\nimport styles from './StatisticsBox.module.scss';\n\nexport default function StatisticsBox({\n activeModule,\n activeModuleContent,\n activeYear,\n baseParams,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData = () => {},\n headerIsVisible,\n}) {\n const isMobile = useMediaQuery('(max-width: 768px)');\n\n const intl = useIntl()\n\nconst mapClassTreeKeyToTooltip = {\n 'fire_annual_total_burned': intl.formatMessage({id: 'mapbiomas.statistics.burned.annual_total.charts.tooltip'}),\n 'fire_monthly': intl.formatMessage({id: 'mapbiomas.statistics.burned.monthly.charts.tooltip'}),\n 'fire_frequency': intl.formatMessage({id: 'mapbiomas.statistics.burned.frequency.charts.tooltip'}),\n 'fire_accumulated': intl.formatMessage({id: 'mapbiomas.statistics.burned.accumulated.charts.tooltip'}),\n};\n\n const defaultContentParams = {\n activeYear,\n baseParams,\n classTreeKey,\n statisticsDataIsVisible,\n onShowData,\n clientType: !_.includes(customClientModules, activeModule) ? undefined : 'custom'\n };\n const titleTooltip = mapClassTreeKeyToTooltip[classTreeKey];\n\n const [isVisible, setIsVisible] = useState(true);\n\n const toggleVisibility = () => setIsVisible(!isVisible);\n\n return (\n <div id=\"statistics\" className={ classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible,\n [styles.wrapperIsHidden]: isMobile,\n }) }>\n <header className={ styles.header }>\n <h2 className={ styles.title }>\n <span><FormattedMessage id=\"mapbiomas.statistics.title\" /></span>\n { titleTooltip && <InfoTooltip text={ titleTooltip } /> }\n </h2>\n <IconButton\n className={ classnames(styles.closeButton, {\n [styles.closeButtonCollapse]: isVisible\n }) }\n onClick={ toggleVisibility }\n id=\"statistics-toggle\"\n >\n <ExpandLessIcon />\n </IconButton>\n </header>\n <Collapse id=\"statistics-graphics\" in={ isVisible } timeout={ 500 } className={ styles.collapseWrapper }>\n <div className={ styles.content }>\n { activeModuleContent === 'sentinel:sentinel_coverage' &&\n <div className={ styles.fireModeContentBoxExtra }>\n <h2 className={ styles.fireModeContentBoxTitle }><FormattedMessage id=\"mapbiomas.warning.sentinel_coverage.extra_note.title\" /></h2>\n <div\n className={ styles.fireModeContentBoxTextWrapper }\n dangerouslySetInnerHTML={{\n __html: intl.formatMessage({id: 'mapbiomas.warning.sentinel_coverage.extra_note.content'})\n }}\n />\n </div>\n }\n\n { _.includes(activeModuleContent, 'mining') && <AnnualStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'quality_of_pasture_data') && <AnnualStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'irrigation') && <AnnualStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'temporal_analysis') && <NumberOfClassesStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'deforestation') && classTreeKey === 'deforestation_annual_by_class' && <AnnualStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'deforestation') && classTreeKey === 'deforestation_accumulated_by_class' && <FireAccumulatedStatisticsContent localeKey=\"deforestation\" { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'deforestation') && classTreeKey === 'deforestation_frequency_main' && <FrequencyStatisticsContent deforestationMode { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'regeneration') && classTreeKey === 'regeneration_annual_by_class' && <AnnualStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'regeneration') && classTreeKey === 'regeneration_accumulated_by_class' && <AccumulatedStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'regeneration') && classTreeKey === 'regeneration_age_main' && <NumberOfClassesStatisticsContent localeKey=\"regeneration_number_of_classes_content\" { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_monthly' && <FireMonthlyStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_frequency' && <FrequencyStatisticsContent fireMode { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_accumulated_by_total_burned' && <FireAccumulatedStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_accumulated_by_class' && <AccumulatedDistributedStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_accumulated_by_natural_anthropic' && <AccumulatedDistributedStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_annual_by_total_burned' && <FireAnnualTotalBurnedStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_annual_by_class' && <CoverageMainStatisticsContent chartType=\"bar\" { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'fire') && classTreeKey === 'fire_annual_by_natural_anthropic' && <CoverageMainStatisticsContent chartType=\"bar\" { ...defaultContentParams } /> }\n { activeModuleContent === 'coverage:coverage_main' && <CoverageMainStatisticsContent { ...defaultContentParams } /> }\n { activeModuleContent === 'sentinel:sentinel_coverage' && <CoverageMainStatisticsContent { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'soil') && classTreeKey === 'soil_total_carbon' && <CoverageMainStatisticsContent hasSingleHistoricalData hasCustomCOSValues valueMantissa={ 1 } { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'soil') && classTreeKey === 'soil_by_class' && <CoverageMainStatisticsContent unit=\"GtCOS\" valueMantissa={ 1 } chartType=\"bar\" { ...defaultContentParams } /> }\n { _.includes(activeModuleContent, 'soil') && classTreeKey === 'soil_natural_or_anthropic' && <CoverageMainStatisticsContent unit=\"GtCOS\" valueMantissa={ 1 } { ...defaultContentParams } /> }\n </div>\n </Collapse>\n </div>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CATEGORIES_OF_OBJECT_TREE_NODES = gql`\n query GetCategoriesOfObjectTreeNodes($objectTreeNodeIds: [Int!]!) {\n geospatialObjectCategoryTreeNodesList(ids: $objectTreeNodeIds) {\n id\n categoryId\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData(\n $territoryIds: [Int!]!,\n $classTreeKey: String!,\n $activeClassTreeNodeIds: [Int!]!,\n $hasObjectFilter: Boolean!,\n $activeObjectCategoryIds: [Int!],\n $bufferId: Int\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n i18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\n mvClassTreeLevelsUi (ids: $activeClassTreeNodeIds) {\n id\n classId\n color\n positionInTree\n level\n childrenIds\n parentId\n defaultName\n i18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n }\n\n classTreeNode {\n coverageClassificationDataByTree(territoryId: $territoryIds) @skip(if: $hasObjectFilter) {\n territoryId\n year\n areaInHa\n }\n\n coverageClassificationDataByTreeListWithObjectIntersection: coverageClassificationDataByTree(\n territoryId: $territoryIds,\n\t\t\t\t\t\tobjectCategoryId: $activeObjectCategoryIds,\n\t\t\t\t\t\tbufferId: $bufferId\n ) @include(if: $hasObjectFilter) {\n territoryId\n year\n areaInHa\n }\n }\n }\n }\n }\n`\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\nimport { FormattedMessage } from 'react-intl';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport LineChart from '../../../StatisticsBox/components/LineChart';\nimport PieChart from '../../../StatisticsBox/components/PieChart';\n\nimport useFormatMessage from '../../../../../../../../hooks/useFormatMessage';\n\nimport styles from '../../InfrastructureStatisticsBox.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CATEGORIES_OF_OBJECT_TREE_NODES,\n} from './query';\n\nconst formatNumber = (value) => {\n return numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function InfrastructureMainStatisticsContent({\n activeYear,\n baseParams,\n statisticsDataIsVisible,\n onShowData,\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n\n const [chartsData, setChartsData] = useState(null);\n\n const territories = _.get(baseParams, 'territories');\n const yearRange = _.map(_.split(_.get(baseParams, 'yearRange'), '-'), Number);\n const years = _.range(_.first(yearRange), _.last(yearRange) + 1);\n const territoryIds = _.map(territories, 'id');\n const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const activeClassTreeOptionValue = _.get(baseParams, 'activeClassTreeOptionValue');\n const activeObjectTreeNodeIds = _.get(baseParams, 'activeObjectTreeNodeIds');\n const bufferId = _.get(baseParams, 'buffer');\n const objectTreeNodesData = useQuery(GET_CATEGORIES_OF_OBJECT_TREE_NODES, {\n variables: {\n objectTreeNodeIds: activeObjectTreeNodeIds\n }\n });\n const activeObjectCategoryIds = _.map(_.get(objectTreeNodesData, 'data.geospatialObjectCategoryTreeNodesList'), 'categoryId');\n\n if (!activeObjectCategoryIds) {\n return null;\n }\n\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds,\n activeClassTreeNodeIds,\n hasObjectFilter: true,\n activeObjectCategoryIds,\n bufferId,\n classTreeKey: activeClassTreeOptionValue,\n },\n skip: _.isEmpty(territoryIds) || !activeClassTreeOptionValue,\n });\n\n const classTree = _.get(baseData, 'classTreeByKey');\n const isEmpty = _(_.get(baseData, 'classTreeByKey[0].mvClassTreeLevelsUi'))\n .map('classTreeNode.coverageClassificationDataByTreeListWithObjectIntersection')\n .flatten()\n .compact()\n .value().length === 0;\n\n const parseChartsData = () => {\n const classTreeLevelsList = _.get(classTree, '[0].mvClassTreeLevelsUi');\n const activeClassTreeLevelsList = _.filter(classTreeLevelsList, (item) => {\n return _.includes(activeClassTreeNodeIds, item.id);\n });\n const classTreeLevelsListOnLevel1 = _.filter(activeClassTreeLevelsList, { level: 1 });\n\n const classViewChartData = _.map(classTreeLevelsListOnLevel1, (classTree) => {\n const stringList = _.get(classTree, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const valueItems = _.get(classTree, 'classTreeNode.coverageClassificationDataByTreeListWithObjectIntersection');\n const filteredValueItems = _.filter(valueItems, { year: activeYear });\n const value = _.sumBy(filteredValueItems, 'areaInHa');\n\n return {\n name: _.get(selectedString, 'stringValue'),\n value,\n itemStyle: {\n color: _.get(classTree, 'color')\n }\n }\n });\n\n const historicalSeriesChartData = _.map(activeClassTreeLevelsList, (classTree) => {\n const stringList = _.get(classTree, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const name = `${ _.join(_.get(classTree, 'positionInTree'), '.') }. ${ _.get(selectedString, 'stringValue') }`;\n const color = _.get(classTree, 'color');\n const level = _.get(classTree, 'level');\n const valueItems = _.get(classTree, 'classTreeNode.coverageClassificationDataByTreeListWithObjectIntersection');\n const data = _.map(years, (year) => {\n const filteredValueItems = _.filter(valueItems, { year: year });\n const value = _.sumBy(filteredValueItems, 'areaInHa');\n\n return !_.isEmpty(filteredValueItems) ? value : null;\n });\n\n return {\n name,\n color,\n data,\n level,\n padding: level * 12,\n };\n });\n\n return {\n years,\n classViewChartData,\n historicalSeriesChartData,\n };\n };\n\n useEffect(() => {\n if (!loadingBaseData && baseData) {\n // parseChartsData();\n setChartsData(parseChartsData());\n }\n // }, [baseData, loadingBaseData, loadingClassTreeData, activeClassesLevelsListItems, activeYear]);\n }, [baseData, loadingBaseData, activeYear]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const renderClassViewChart = () => {\n // const { classViewChartData } = parseChartsData();\n // const data = classViewChartData;\n const data = _.get(chartsData, 'classViewChartData');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title\" values={{ year: activeYear }} /></h2>\n <PieChart\n serie={{\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.unit'),\n data\n }}\n />\n </div>\n );\n };\n\n const renderHistoricalSeriesChart = () => {\n const years = _.get(chartsData, 'years');\n const data = _.get(chartsData, 'historicalSeriesChartData');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title\" /></h2>\n <LineChart\n categories={ years }\n series={ data }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const classViewChartData = _.get(chartsData, 'classViewChartData');\n const classViewChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title', { year: activeYear }),\n columns: ['Total'],\n rows: _.map(classViewChartData, (item) => {\n return {\n name: _.get(item, 'name'),\n data: [_.get(item, 'value')],\n };\n }),\n };\n\n const years = _.get(chartsData, 'years');\n const historicalSeriesChartData = _.get(chartsData, 'historicalSeriesChartData');\n const historicalSeriesChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title'),\n columns: years,\n rows: historicalSeriesChartData,\n };\n\n onShowData([\n classViewChart,\n historicalSeriesChart,\n ]);\n };\n\n return (\n <Fragment>\n { loadingBaseData &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { !isEmpty &&\n <Fragment>\n { renderClassViewChart() }\n { renderHistoricalSeriesChart() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div>\n </Fragment>\n }\n { isEmpty &&\n <div className={ styles.infoBox }>\n <p>Nenhum resultado encontrado.</p>\n </div>\n }\n </Fragment>\n );\n}\n","import React, { useState } from 'react';\nimport classnames from 'classnames';\nimport _ from 'lodash';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Collapse from '@material-ui/core/Collapse';\nimport IconButton from '@material-ui/core/IconButton';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\n\nimport InfrastructureMainStatisticsContent from './content/InfrastructureMainStatisticsContent';\n\nimport styles from './InfrastructureStatisticsBox.module.scss';\n\nexport default function InfrastructureStatisticsBox({\n activeYear,\n baseParams,\n statisticsDataIsVisible,\n onShowData = () => {},\n headerIsVisible,\n}) {\n const activeObjectTreeNodeIds = _.get(baseParams, 'activeObjectTreeNodeIds');\n const bufferId = _.get(baseParams, 'buffer');\n\n if (_.isEmpty(activeObjectTreeNodeIds) || bufferId === 0) {\n return null;\n }\n\n const isMobile = useMediaQuery('(max-width: 768px)');\n\n const defaultContentParams = {\n activeYear,\n baseParams,\n statisticsDataIsVisible,\n onShowData\n };\n\n const [isVisible, setIsVisible] = useState(true);\n\n const toggleVisibility = () => setIsVisible(!isVisible);\n\n return (\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible,\n [styles.wrapperIsHidden]: isMobile,\n }) }>\n <header className={ styles.header }>\n <h2 className={ styles.title }>\n <span><FormattedMessage id=\"mapbiomas.statistics.title\" /></span>\n </h2>\n <IconButton\n className={ classnames(styles.closeButton, {\n [styles.closeButtonCollapse]: isVisible\n }) }\n onClick={ toggleVisibility }\n >\n <ExpandLessIcon />\n </IconButton>\n </header>\n <Collapse in={ isVisible } timeout={ 500 } className={ styles.collapseWrapper }>\n <div className={ styles.content }>\n <InfrastructureMainStatisticsContent { ...defaultContentParams } />\n </div>\n </Collapse>\n </div>\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport classnames from 'classnames';\nimport { CSVLink } from 'react-csv';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport CloudDownloadIcon from '@material-ui/icons/CloudDownload';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Fade from '@material-ui/core/Fade';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport StickyTable from '../DashboardDialog/components/StickyTable';\n\nimport styles from './StatisticsDataTableBox.module.scss';\n\nfunction DataTableBox({\n title,\n columns,\n rows,\n mantissa,\n}) {\n const renderDownloadTableLink = () => {\n if (_.isEmpty(columns) || _.isEmpty(rows)) {\n return null;\n }\n\n let headers = [\n { key: 'class', label: 'Classe' },\n ];\n\n _.each(columns, (column) => {\n headers.push({ key: _.toString(column), label: _.toString(column) });\n });\n\n const parsedData = _(rows)\n .map((serie) => {\n let rowData = { class: _.get(serie, 'name') };\n\n _.each(_.get(serie, 'data'), (value, index) => {\n rowData[_.toString([columns[index]])] = value;\n });\n\n return rowData;\n })\n .flatten()\n .value();\n\n return (\n <CSVLink\n data={ parsedData }\n headers={ headers }\n className={ styles.csvDownloadLink }\n filename=\"MapBiomas - Tabela de Dados.csv\"\n >\n <CloudDownloadIcon />\n <span>Download</span>\n </CSVLink>\n );\n };\n\n return (\n <div className={ styles.dataTableWrapper }>\n <div className={ styles.tableHeader }>\n <h3 className={ styles.tableTitle }>\n <b>{ title }</b>\n </h3>\n { renderDownloadTableLink() }\n </div>\n <StickyTable\n columns={ columns }\n rows={ rows }\n mantissa={ mantissa }\n />\n </div>\n );\n}\n\nexport default function StatisticsDataTableBox({\n headerIsVisible,\n data,\n onClose = () => {}\n}) {\n return (\n <Fade in={ !!data }>\n <div className={ classnames(styles.wrapper, {\n [styles.wrapperWithHeader]: headerIsVisible,\n }) }>\n <header className={ styles.header }>\n <h2 className={ styles.title }>\n <span><FormattedMessage id=\"mapbiomas.dashboard.generic.data_table.title\" /></span>\n </h2>\n <IconButton\n className={ styles.closeButton }\n onClick={ onClose }\n >\n <CloseIcon />\n </IconButton>\n </header>\n <div className={ styles.content }>\n { _.map(data, (item, index) => {\n return (\n <DataTableBox\n key={ `data-table-${ _.kebabCase(_.get(item, 'title')) }-${ index }` }\n title={ _.get(item, 'title') }\n columns={ _.get(item, 'columns') }\n rows={ _.get(item, 'rows') }\n mantissa={ _.get(item, 'mantissa') }\n />\n );\n }) }\n </div>\n </div>\n </Fade>\n );\n}\n","import React from 'react'\nimport Joyride from 'react-joyride';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nclass TutorialTour extends React.Component {\n // TODO: Update tutorial steps\n state = {\n steps: [\n {\n target: '#modules',\n content: <FormattedMessage id=\"mapbiomas.tutorial.modules\" />,\n disableBeacon: true,\n },\n {\n target: '#module-main-options',\n content: <FormattedMessage id=\"mapbiomas.tutorial.module-main-options\" />,\n disableBeacon: true,\n },\n {\n target: '#translation-button',\n content: <FormattedMessage id=\"mapbiomas.tutorial.translation-button\" />,\n disableBeacon: true,\n },\n {\n target: '#logo',\n content: <FormattedMessage id=\"mapbiomas.tutorial.logo\" />,\n disableBeacon: true,\n },\n {\n target: '#toggle-header-button',\n content: <FormattedMessage id=\"mapbiomas.tutorial.toggle-header-button\" />,\n disableBeacon: true,\n },\n {\n target: '#coverage_main',\n content: <FormattedMessage id=\"mapbiomas.tutorial.coverage-main\" />,\n disableBeacon: true,\n },\n {\n target: '#coverage_changes',\n content: <FormattedMessage id=\"mapbiomas.tutorial.coverage-changes\" />,\n disableBeacon: true,\n },\n {\n target: '#coverage_quality',\n content: <FormattedMessage id=\"mapbiomas.tutorial.coverage-quality\" />,\n disableBeacon: true,\n },\n {\n target: '#territorial-cut',\n content: <FormattedMessage id=\"mapbiomas.tutorial.territorial-cut\" />,\n disableBeacon: true\n },\n {\n target: '#landowner-cut',\n content: <FormattedMessage id=\"mapbiomas.tutorial.landowner-cut\" />,\n disableBeacon: true\n },\n {\n target: '#multiple-territory-checkbox',\n content: <FormattedMessage id=\"mapbiomas.tutorial.multiple-territory\" />,\n disableBeacon: true\n },\n {\n target: '#legend-t-0',\n content: <FormattedMessage id=\"mapbiomas.tutorial.legend-class\" />,\n disableBeacon: true\n },\n {\n target: '#legend-t-1',\n content: <FormattedMessage id=\"mapbiomas.tutorial.legend-natural-use\" />,\n disableBeacon: true\n },\n {\n target: '#share-button',\n content: <FormattedMessage id=\"mapbiomas.tutorial.share-button\" />,\n disableBeacon: true\n },\n {\n target: '.leaflet-control-zoom-in',\n content: <FormattedMessage id=\"mapbiomas.tutorial.control-zoom-in\" />,\n disableBeacon: true\n },\n {\n target: '.leaflet-control-zoom-out',\n content: <FormattedMessage id=\"mapbiomas.tutorial.control-zoom-out\" />,\n disableBeacon: true\n },\n {\n target: '#box-zoom-button',\n content: <FormattedMessage id=\"mapbiomas.tutorial.box-zoom\" />,\n disableBeacon: true\n },\n {\n target: '#info-point',\n content: <FormattedMessage id=\"mapbiomas.tutorial.info-point\" />,\n disableBeacon: true\n },\n {\n target: '#opacity-box',\n content: <FormattedMessage id=\"mapbiomas.tutorial.opacity-box\" />,\n disableBeacon: true\n },\n {\n target: '#layers-box',\n content: <FormattedMessage id=\"mapbiomas.tutorial.layers-box\" />,\n disableBeacon: true\n },\n {\n target: '#basemap-box',\n content: <FormattedMessage id=\"mapbiomas.tutorial.basemap-box\" />,\n disableBeacon: true\n },\n {\n target: '#coordinates-search',\n content: <FormattedMessage id=\"mapbiomas.tutorial.coordinate-search\" />,\n disableBeacon: true\n },\n {\n target: '#year-timeline',\n content: <FormattedMessage id=\"mapbiomas.tutorial.year-timeline\" />,\n disableBeacon: true\n },\n {\n target: '#statistics',\n content: <FormattedMessage id=\"mapbiomas.tutorial.statistics\" />,\n disableBeacon: true\n },\n {\n target: '#statistics-toggle',\n content: <FormattedMessage id=\"mapbiomas.tutorial.statistics-toggle\" />,\n disableBeacon: true\n },\n {\n target: '#statistics-graphics',\n content: <FormattedMessage id=\"mapbiomas.tutorial.statistics-graphics\" />,\n disableBeacon: true\n },\n {\n target: '#data-view-button',\n content: <FormattedMessage id=\"mapbiomas.tutorial.data-view-button\" />,\n disableBeacon: true,\n },\n ],\n disableScrolling: true,\n };\n\n\n\n render () {\n const { steps } = this.state\n\n return (\n <div className=\"app\">\n <Joyride\n steps={steps}\n callback={({action, index}) => {\n index === 26 && this.setState({\n ...this.state,\n disableScrolling: false,\n })\n action === \"reset\" && this.props.closeTutorial()\n }}\n run={this.props.coverageTutorial}\n showSkipButton={true}\n disableScrolling={this.state.disableScrolling}\n floaterProps={{\n disableAnimation: true\n }}\n locale={{\n close: <FormattedMessage id=\"mapbiomas.tutorial.controls.next\" />,\n skip: <FormattedMessage id=\"mapbiomas.tutorial.controls.skip\" />,\n back: <FormattedMessage id=\"mapbiomas.tutorial.controls.back\" />\n }}\n styles={{\n options: {\n primaryColor: \"#16a085\",\n zIndex: 4000\n },\n buttonClose: {\n display: \"none\"\n },\n buttonBack:{\n marginRight: 16\n }\n }}\n />\n </div>\n );\n }\n}\n\nexport default injectIntl(TutorialTour)\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n app @client {\n activeYear\n activeModule\n activeModuleContent\n baseParams {\n groupType\n territory\n territories {\n id\n label\n territoryTypeId\n territoryTypeLabel\n territoryBBox\n }\n classesViewMode\n activeClassTreeNodeIds\n activeClassTreeOptionValue\n activeObjectTreeNodeIds\n activeSubmodule\n activeClassesLevelsListItems\n activeTransitionsClassesListItems\n activePastureQualityQualityClassesListItems\n yearRange\n buffer\n crossingEnabled\n crossingTerritoryType\n crossingTerritories {\n id\n label\n territoryTypeId\n territoryTypeLabel\n territoryBBox\n }\n }\n headerIsVisible\n mapFlyTo\n mapPointInfo {\n latlng\n parsedBBox\n }\n mapPosition\n mapboxMode\n showClassInfo\n showDashboardInfo\n timelineLimitsRange\n showBeforeAndAfterMosaic\n transitionClassTreeNodeId\n }\n }\n`;\n\nexport const GET_TERRITORIES_CATEGORIES_LIST = gql`\n query TerritoriesCategoriesList {\n territoryCategoriesList {\n id\n key\n parentId\n i18nStrings {\n language\n stringValue\n }\n }\n }\n`;\n\nexport const GET_TERRITORIES_LIST = gql`\n query TerritoriesList($categoryId: Int!) {\n territoriesList(categoryId: $categoryId) {\n id\n i18nStrings {\n language\n stringValue\n }\n }\n }\n`;\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport { useApolloClient, useLazyQuery, useQuery } from '@apollo/react-hooks';\nimport _ from 'lodash';\nimport qs from 'qs';\n\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\n\nimport CARBox from './components/CARBox';\nimport ClassLegendDialog from './components/ClassLegendDialog';\nimport CoordinatesBox from './components/CoordinatesBox';\nimport DashboardDialog from './components/DashboardDialog';\nimport MapCanvas from './components/MapCanvas';\nimport MapboxCanvas from './components/MapboxCanvas';\nimport MapboxControl from './components/MapboxControl';\nimport MapControls from './components/MapControls';\nimport MapPointDialog from './components/MapPointDialog';\nimport YearTimeline from './components/YearTimeline';\nimport YearTimelineMultiple from './components/YearTimelineMultiple';\nimport ShareControl from './components/ShareControl';\nimport StatisticsBox from './components/StatisticsBox';\nimport InfrastructureStatisticsBox from './components/InfrastructureStatisticsBox';\nimport StatisticsDataTableBox from './components/StatisticsDataTableBox';\nimport TutorialTour from '../../../../components/tutorial/TutorialTour';\n\nimport {\n GET_BASE_DATA,\n GET_TERRITORIES_CATEGORIES_LIST,\n GET_TERRITORIES_LIST,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nimport useFormatMessage from '../../../../hooks/useFormatMessage';\nimport usePrevious from '../../../../hooks/usePrevious';\n\nimport parseQueryParamsToState from '../../../../helpers/parseQueryParamsToState';\n\nimport toast from '../../../../utils/toast';\n\nimport styles from '../../LandingPage.module.scss';\n\nconst MODULES_WITH_INITIAL_YEAR_FIXED = [\n 'fire:fire_accumulated',\n 'deforestation:deforestation_accumulated'\n];\n\nexport default function Map({\n activeBaseMap,\n activeLayers,\n layersOpacity,\n location,\n}) {\n const client = useApolloClient();\n const formatMessage = useFormatMessage();\n const isMobile = useMediaQuery('(max-width: 768px)');\n const [coverageTutorial, setCoverageTutorial] = useState(true);\n const [statisticsData, setStatisticsData] = useState(null);\n const [carFeature, setCarFeature] = useState(null);\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA);\n const { data: territoriesCategoriesListData } = useQuery(GET_TERRITORIES_CATEGORIES_LIST);\n const { data: defaultClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey: 'default'\n }\n });\n const defaultClassTreeLevelsList = _.get(defaultClassTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const [\n loadCountryTerritoryData,\n {\n data: countryTerritoryListData,\n }\n ] = useLazyQuery(GET_TERRITORIES_LIST);\n const prevLoadingBaseData = usePrevious(loadingBaseData);\n const activeModule = _.get(baseData, 'app.activeModule');\n const activeModuleContent = _.get(baseData, 'app.activeModuleContent');\n const prevActiveModuleContent = usePrevious(activeModuleContent);\n const activeClassTreeOptionValue = _.get(baseData, 'app.baseParams.activeClassTreeOptionValue');\n const activeYear = _.get(baseData, 'app.activeYear');\n const baseParams = _.get(baseData, 'app.baseParams');\n const mapboxMode = _.get(baseData, 'app.mapboxMode');\n const transitionClassTreeNodeId = _.get(baseData, 'app.transitionClassTreeNodeId');\n const territoryCategoriesList = _.get(territoriesCategoriesListData, 'territoryCategoriesList');\n\n const headerIsVisible = _.get(baseData, 'app.headerIsVisible');\n const mapFlyTo = _.get(baseData, 'app.mapFlyTo');\n const mapPointInfo = _.get(baseData, 'app.mapPointInfo');\n const showClassInfo = _.get(baseData, 'app.showClassInfo');\n const showDashboardInfo = _.get(baseData, 'app.showDashboardInfo');\n const showBeforeAndAfterMosaic = _.get(baseData, 'app.showBeforeAndAfterMosaic');\n const timelineLimitsRange = _.get(baseData, 'app.timelineLimitsRange');\n const mapPosition = _.get(baseData, 'app.mapPosition');\n\n let blockModuleWarningIsVisible = false;\n\n // Add conditions to show block module warning dialog below\n // if (activeClassTreeOptionValue === 'fire_annual_by_class') {\n // blockModuleWarningIsVisible = true;\n // }\n\n const [lat, lng, zoom] = _.split(mapPosition, ',');\n let mapConfigOptions = {};\n\n if (mapPosition) {\n mapConfigOptions = {\n lat: Number(lat),\n lng: Number(lng),\n zoom: Number(zoom),\n };\n }\n\n let urlQueryParams = {};\n\n if (location && location.search) {\n const queryString = location.search.replace('?', '');\n const queryObject = qs.parse(queryString, { comma: true });\n\n if (queryObject) {\n urlQueryParams = parseQueryParamsToState(queryObject);\n }\n }\n\n const isOnInitialRenderingWithQueryParams = loadingBaseData ||\n (prevLoadingBaseData && !loadingBaseData && !_.isEmpty(urlQueryParams));\n\n useEffect(() => {\n const confirmation = new URL(window.location.href).searchParams.get('confirmation');\n const login = new URL(window.location.href).searchParams.get('login');\n const passwordUpdate = new URL(window.location.href).searchParams.get('password_update');\n\n if (confirmation) {\n toast(formatMessage('mapbiomas.toast.account_confirmed'));\n }\n\n if (login) {\n toast(formatMessage('mapbiomas.toast.login_success'));\n }\n\n if (passwordUpdate) {\n toast(formatMessage('mapbiomas.toast.password_update'));\n }\n }, []);\n\n useEffect(() => {\n if (activeModuleContent !== 'coverage:coverage_changes') {\n updateClientAppState({\n showBeforeAndAfterMosaic: false,\n });\n }\n\n const checkModuleKeyCondition = (moduleKey) => {\n if (_.isUndefined(prevActiveModuleContent)) {\n return activeModuleContent === moduleKey;\n } else {\n return activeModuleContent === moduleKey &&\n !isOnInitialRenderingWithQueryParams;\n }\n };\n\n if (checkModuleKeyCondition('coverage:coverage_main')) {\n updateClientAppState({\n activeBaseMap: 9,\n layersOpacity: 70,\n activeLayers: [],\n });\n } else if (checkModuleKeyCondition('quality_of_pasture_data:quality_of_pasture_data_main')) {\n updateClientAppState({\n activeBaseMap: 1,\n layersOpacity: 100,\n activeLayers: ['estados']\n });\n } else if (checkModuleKeyCondition('regeneration:regeneration_annual') || checkModuleKeyCondition('deforestation:deforestation_annual')) {\n updateClientAppState({\n activeBaseMap: 1,\n });\n } else if (checkModuleKeyCondition('irrigation:irrigation_main')) {\n updateClientAppState({\n activeBaseMap: 1,\n activeLayers: ['estados']\n });\n } else if (checkModuleKeyCondition('infrastructure:infrastructure_main')) {\n updateClientAppState({\n activeBaseMap: 1,\n activeYear: 2020,\n timelineLimitsRange: [1985, 2020],\n })\n } else if (checkModuleKeyCondition('fire:fire_accumulated')) {\n updateClientAppState({\n activeBaseMap: 1,\n activeYear: [1985, 2022],\n timelineLimitsRange: [1985, 2022],\n });\n } else if (checkModuleKeyCondition('fire:fire_annual')) {\n updateClientAppState({\n activeBaseMap: 1,\n activeYear: [1985, 2022],\n timelineLimitsRange: [1985, 2022],\n });\n } else if (checkModuleKeyCondition('fire:fire_frequency')) {\n updateClientAppState({\n activeBaseMap: 1,\n activeYear: [1985, 2022],\n timelineLimitsRange: [1985, 2022],\n });\n } else if (checkModuleKeyCondition('fire:fire_monthly')) {\n updateClientAppState({\n activeBaseMap: 1,\n activeYear: 2022,\n timelineLimitsRange: [1985, 2022],\n });\n } else if (checkModuleKeyCondition('temporal_analysis:temporal_analysis_number_of_classes')) {\n updateClientAppState({\n activeBaseMap: 1,\n activeYear: [1985, 2022],\n timelineLimitsRange: [1985, 2022],\n });\n } else if (checkModuleKeyCondition('deforestation:deforestation_accumulated')) {\n updateClientAppState({\n activeYear: [1986, 2020],\n timelineLimitsRange: [1986, 2020],\n });\n } else if (checkModuleKeyCondition('deforestation:deforestation_frequency')) {\n updateClientAppState({\n activeYear: [1986, 2020],\n timelineLimitsRange: [1986, 2020],\n });\n }\n\n const parsedModuleContentKey = _.last(_.split(activeModuleContent, ':'));\n\n if (parsedModuleContentKey) {\n updateClientAppState({\n activeNoteKey: parsedModuleContentKey,\n });\n }\n\n setStatisticsData(null);\n }, [activeModuleContent]);\n\n useEffect(() => {\n if (isOnInitialRenderingWithQueryParams) {\n return;\n }\n\n if (showBeforeAndAfterMosaic) {\n updateClientAppState({\n activeBaseMap: 8,\n layersOpacity: 50,\n });\n } else {\n updateClientAppState({\n layersOpacity: 100\n });\n }\n }, [showBeforeAndAfterMosaic]);\n\n useEffect(() => {\n if (activeModule !== 'coverage' && mapboxMode) {\n toggleMapbox();\n }\n }, [activeModule]);\n\n useEffect(() => {\n const minYear = _.first(timelineLimitsRange);\n const maxYear = _.last(timelineLimitsRange);\n\n if (!_.isArray(activeYear) && (activeYear < minYear || activeYear > maxYear)) {\n updateClientAppState({\n activeYear: maxYear\n });\n }\n }, [timelineLimitsRange]);\n\n useEffect(() => {\n if (isMobile) {\n updateClientAppState({\n headerIsVisible: false,\n });\n }\n }, [isMobile]);\n\n useEffect(() => {\n if (territoryCategoriesList) {\n const countryTerritoryCategory = _.find(territoryCategoriesList, { key: 'atlantic_forest_limit' });\n const countryTerritoryId = _.get(countryTerritoryCategory, 'id');\n loadCountryTerritoryData({\n variables: {\n categoryId: countryTerritoryId\n }\n });\n }\n }, [territoryCategoriesList]);\n\n const updateClientAppState = (params) => {\n client.writeData({\n data: {\n app: {\n __typename: 'AppState',\n ...params\n }\n }\n });\n };\n\n const closeClassLegendDialog = () => {\n updateClientAppState({ showClassInfo: null });\n };\n\n const closeDashboardDialog = () => {\n updateClientAppState({\n showDashboardInfo: null,\n transitionClassTreeNodeId: null,\n });\n };\n\n const closeMapInfoDialog = () => {\n updateClientAppState({ mapPointInfo: null });\n };\n\n const handleMapPointSearchClick = (mapPointInfo) => {\n updateClientAppState({ mapPointInfo });\n };\n\n const handleYearTimelineChange = (year) => {\n updateClientAppState({ activeYear: year });\n };\n\n const handleFlyToPointSubmit = (coordinates) => {\n updateClientAppState({ mapFlyTo: coordinates });\n };\n\n const handleFlyToReset = () => {\n updateClientAppState({ mapFlyTo: null });\n };\n\n const handleControlsChange = (paramKey, paramValue) => {\n updateClientAppState({ [paramKey]: paramValue });\n };\n\n const handleMoveEnd = (value) => {\n if (value !== mapPosition) {\n updateClientAppState({ mapPosition: value });\n }\n };\n\n const openCoverageTutorial = () => {\n setCoverageTutorial(true)\n }\n\n const closeTutorial = () => {\n setCoverageTutorial(false)\n }\n\n const handleStatisticsShowData = (data) => {\n setStatisticsData(data);\n };\n\n const handleStatisticsCloseData = () => {\n setStatisticsData(null);\n };\n\n const toggleMapbox = () => {\n if(!mapboxMode){\n updateClientAppState({ \n activeBaseMap: 9,\n layersOpacity: 70,\n activeLayers: [],\n mapboxMode: !mapboxMode \n });\n }else{\n updateClientAppState({ \n mapboxMode: !mapboxMode \n });\n }\n };\n\n const handleCarFeatureChange = (data) => {\n setCarFeature(data);\n };\n\n const TimelineComponent = activeModule !== 'temporal_analysis' ? YearTimeline : YearTimelineMultiple;\n\n return (\n <Fragment>\n { !mapboxMode &&\n <MapCanvas\n activeBaseMap={ activeBaseMap }\n activeModule={ activeModule }\n activeModuleContent={ activeModuleContent }\n activeYear={ activeYear }\n baseParams={ baseParams }\n carFeature={ carFeature }\n configOptions={ mapConfigOptions }\n countryTerritoryId={ _.get(countryTerritoryListData, 'territoriesList[0].id') }\n defaultClassTreeLevelsList={ defaultClassTreeLevelsList }\n flyTo={ mapFlyTo }\n isMobile={ isMobile }\n mapPointInfo={ mapPointInfo }\n activeLayers={ activeLayers }\n layersOpacity={ layersOpacity }\n headerIsVisible={ headerIsVisible }\n onControlsChange={ handleControlsChange }\n onSearchPointClick={ handleMapPointSearchClick }\n showBeforeAndAfterMosaic={ showBeforeAndAfterMosaic }\n showDashboardInfo={ showDashboardInfo }\n setCoverageTutorial={ setCoverageTutorial }\n onMoveEnd={ handleMoveEnd }\n onFlyToReset={ handleFlyToReset }\n mapboxMode={ mapboxMode }\n transitionClassTreeNodeId={ transitionClassTreeNodeId }\n />\n }\n { mapboxMode &&\n <MapboxCanvas\n activeLayers={ activeLayers }\n activeYear={ activeYear }\n baseParams={ baseParams }\n configOptions={ mapConfigOptions }\n flyTo={ mapFlyTo }\n headerIsVisible={ headerIsVisible }\n isMobile={ isMobile }\n layersOpacity={ layersOpacity }\n onSearchPointClick={ handleMapPointSearchClick }\n onMoveEnd={ handleMoveEnd }\n />\n }\n { !(showDashboardInfo && isMobile) &&\n <MapControls\n activeBaseMap={ activeBaseMap }\n showBeforeAndAfterMosaic={ showBeforeAndAfterMosaic }\n activeLayers={ activeLayers }\n headerIsVisible={ headerIsVisible }\n layersOpacity={ layersOpacity }\n onChange={ handleControlsChange }\n />\n }\n { !showBeforeAndAfterMosaic &&\n !(showDashboardInfo && isMobile) &&\n <TimelineComponent\n firstYearFixed={ _.includes(MODULES_WITH_INITIAL_YEAR_FIXED, activeModuleContent) }\n headerIsVisible={ headerIsVisible }\n value={ activeYear }\n onChange={ handleYearTimelineChange }\n />\n }\n <CARBox\n headerIsVisible={ headerIsVisible }\n showBeforeAndAfterMosaic={ showBeforeAndAfterMosaic }\n onFlyTo={ handleFlyToPointSubmit }\n onFeatureChange={ handleCarFeatureChange }\n updateClientAppState={ updateClientAppState }\n />\n <CoordinatesBox\n headerIsVisible={ headerIsVisible }\n showBeforeAndAfterMosaic={ showBeforeAndAfterMosaic }\n onSubmit={ handleFlyToPointSubmit }\n />\n { activeModuleContent === 'coverage:coverage_main' &&\n <MapboxControl\n isActive={ mapboxMode }\n onToggle={ toggleMapbox }\n headerIsVisible={ headerIsVisible }\n showBeforeAndAfterMosaic={ showBeforeAndAfterMosaic }\n />\n }\n <ShareControl\n headerIsVisible={ headerIsVisible }\n showBeforeAndAfterMosaic={ showBeforeAndAfterMosaic }\n />\n <ClassLegendDialog\n headerIsVisible={ headerIsVisible }\n isOpen={ !!showClassInfo }\n classId={ showClassInfo }\n onClose={ closeClassLegendDialog }\n />\n <MapPointDialog\n activeModule={ activeModule }\n headerIsVisible={ headerIsVisible }\n isOpen={ !!mapPointInfo }\n pointInfo={ mapPointInfo }\n updateClientAppState={ updateClientAppState }\n onClose={ closeMapInfoDialog }\n />\n <DashboardDialog\n activeModuleContent={ activeModuleContent }\n activeYear={ activeYear }\n baseParams={ baseParams }\n classTreeKey={ activeClassTreeOptionValue }\n headerIsVisible={ headerIsVisible }\n isOpen={ showDashboardInfo }\n onClose={ closeDashboardDialog }\n onUpdateClientAppState={ updateClientAppState }\n />\n { (activeModule === 'fire' ||\n activeModule === 'deforestation' ||\n activeModule === 'regeneration' ||\n activeModule === 'temporal_analysis' ||\n activeModuleContent === 'coverage:coverage_main' ||\n activeModuleContent === 'coverage:coverage_stable_areas' ||\n activeModuleContent === 'coverage:coverage_number_of_classes' ||\n activeModuleContent === 'mining:mining_main' ||\n activeModuleContent === 'quality_of_pasture_data:quality_of_pasture_data_main' ||\n activeModuleContent === 'irrigation:irrigation_main' ||\n activeModuleContent === 'sentinel:sentinel_coverage' ||\n activeModuleContent === 'soil:soil_main'\n ) &&\n <StatisticsBox\n activeModule={ activeModule }\n activeModuleContent={ activeModuleContent }\n activeYear={ activeYear }\n baseParams={ baseParams }\n classTreeKey={ activeClassTreeOptionValue }\n statisticsDataIsVisible={ !!statisticsData }\n headerIsVisible={ headerIsVisible }\n onShowData={ handleStatisticsShowData }\n />\n }\n { activeModuleContent === 'infrastructure:infrastructure_main' &&\n <InfrastructureStatisticsBox\n activeYear={ activeYear }\n baseParams={ baseParams }\n statisticsDataIsVisible={ !!statisticsData }\n headerIsVisible={ headerIsVisible }\n onShowData={ handleStatisticsShowData }\n />\n }\n <StatisticsDataTableBox\n headerIsVisible={ headerIsVisible }\n data={ statisticsData }\n onClose={ handleStatisticsCloseData }\n />\n\n {/* <TutorialTour currentModule={activeModule} closeTutorial={closeTutorial} runTutorial={runTutorial} /> */}\n\n <Dialog onClose={ () => {} } open={ blockModuleWarningIsVisible }>\n <div className={ styles.tempDialog }>\n <p>Os dados estão sendo atualizados.</p>\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={ () => window.location.href = '/' }\n >\n <span>Voltar para página inicial</span>\n </Button>\n </div>\n </Dialog>\n </Fragment>\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\nimport { ThemeProvider } from '@material-ui/core/styles';\n\nimport { GET_BASE_DATA } from './query';\n\nimport BasePage from './layout/BasePage';\n\nimport MapView from './views/Map';\n\nconst mapThemePaletteByProduct = {\n 'scenarios': {\n dark: '#3a5269',\n light: '#3a5269',\n main: '#34495e',\n contrastText: '#FFF'\n },\n 'irrigation': {\n dark: '#ac2ec2',\n light: '#bb3dd1',\n main: '#b731ce',\n contrastText: '#FFF'\n },\n 'fire': {\n dark: '#e5412e',\n light: '#e95949',\n main: '#e74c3c',\n contrastText: '#FFF'\n },\n 'infrastructure': {\n dark: '#5c5c5c',\n light: '#5c5c5c',\n main: '#555',\n contrastText: '#FFF'\n },\n 'regeneration': {\n dark: '#25a259',\n light: '#2abb67',\n main: '#27ae60',\n contrastText: '#FFF'\n },\n 'deforestation': {\n dark: '#CD6130',\n light: '#CD6136',\n main: '#cd6133',\n contrastText: '#FFF'\n },\n 'coverage': {\n dark: '#14947b',\n light: '#18af91',\n main: '#16a085',\n contrastText: '#FFF'\n },\n 'quality_of_pasture_data': {\n dark: '#ef970c',\n light: '#f3a220',\n main: '#f39c12',\n contrastText: '#FFF'\n },\n 'mining': {\n dark: '#ef970c',\n light: '#f3a220',\n main: '#f39c12',\n contrastText: '#FFF'\n },\n 'coverage_quality': {\n dark: '#1c313a',\n light: '#718792',\n main: '#455a64',\n contrastText: '#FFF'\n },\n 'temporal_analysis': {\n dark: '#4a0072',\n light: '#ae52d4',\n main: '#7b1fa2',\n contrastText: '#FFF'\n },\n 'sentinel': {\n dark: '#0e1d35',\n light: '#344055',\n main: '#1f2942',\n contrastText: '#FFF'\n },\n 'soil': {\n dark: '#6c5440',\n light: '#a0826d',\n main: '#886956',\n contrastText: '#FFF'\n },\n};\n\nconst defaultThemeColor = {\n dark: '#16a085',\n light: '#18af91',\n main: '#16a085',\n contrastText: '#FFF'\n};\n\nexport default function LandingPage({\n history,\n location,\n}) {\n const { data: baseData } = useQuery(GET_BASE_DATA);\n const activeModule = _.get(baseData, 'app.activeModule');\n const activeBaseMap = _.get(baseData, 'app.activeBaseMap') || 5;\n const activeLayers = _.get(baseData, 'app.activeLayers') ;\n const layersOpacity = _.get(baseData, 'app.layersOpacity');\n\n return (\n <ThemeProvider\n theme={(outerTheme) => ({\n ...outerTheme,\n palette: {\n ...outerTheme.palette,\n primary: mapThemePaletteByProduct[activeModule] || defaultThemeColor,\n },\n })}\n >\n <BasePage\n history={ history }\n location={ location }\n >\n <MapView\n activeBaseMap={ activeBaseMap }\n activeLayers={ activeLayers }\n layersOpacity={ layersOpacity }\n location={ location }\n />\n </BasePage>\n </ThemeProvider>\n )\n}\n","import { Box } from \"@material-ui/core\";\nimport React from \"react\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport { Link } from \"react-router-dom\";\n\nimport styles from './FormFooter.module.scss'\n\nexport default function FormFooter() {\n const intl = useIntl()\n return(\n <Box className={ styles.wrapper }>\n <a className={ styles.helperLink } href=\"https://mapbiomas.org/\"><FormattedMessage id=\"mapbiomas.user.login.footer.links.mapbiomas\" /></a>\n {/* <Link className={ styles.helperLink } to=\"/esqueci-minha-senha\"><FormattedMessage id=\"mapbiomas.user.login.footer.links.help\" /></Link>\n <a className={ styles.helperLink } href={ intl.formatMessage({id:'mapbiomas.user.login.create_acount.privacy_policy.link'}) } target=\"_blank\"><FormattedMessage id=\"mapbiomas.user.login.footer.links.privacy_term\" /></a> */}\n </Box>\n )\n}","import React from 'react'\nimport { FormattedMessage } from 'react-intl'\n\nimport styles from './PageFooter.module.scss'\nimport logo from './logo-ecostage.svg';\n\nexport default function PageFooter() {\n return(\n <footer className={ styles.footer }>\n <small className={ styles.copyText }>© Copyright - MapBiomas - <FormattedMessage id=\"footer.copyright\" /></small>\n <div className={ styles.wrapper }>\n <small className={ styles.versionText }>{ process.env.GIT_TAG } · </small>\n <a href=\"http://www.ecostage.com.br/\" target=\"_blank\">\n <img className={ styles.ecostageImage } src={ logo } alt=\"Logo EcoStage\" />\n </a>\n </div>\n </footer>\n )\n}\n","import React, { useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Paper from '@material-ui/core/Paper';\nimport TextField from '@material-ui/core/TextField';\n\nimport toast from '../../utils/toast';\nimport { request } from '../../utils/api';\n\nimport parseToken from '../../helpers/parseToken';\nimport useFormatMessage from '../../hooks/useFormatMessage';\n\nimport logo from './logo.svg';\n\nimport styles from './MapBiomasLogin.module.scss';\nimport { FilledInput, InputLabel, OutlinedInput, Typography } from '@material-ui/core';\n\nimport FormFooter from './components/FormFooter';\nimport PageFooter from './components/PageFooter';\n\nconst initialState = {\n login: '',\n password: '',\n};\n\nexport default function MapBiomasLogin() {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n const [windowHeight, setWindowHeight] = useState(window.innerHeight);\n const isCreatedPassword = new URL(window.location.href).searchParams.get('created_password');\n\n const urlParams = location.search.substring(1) || \"\";\n let paramsToJSON = {}\n\n function updateHeight() {\n setWindowHeight(window.innerHeight);\n }\n const debouncedUpdateHeight = _.debounce(updateHeight, 500);\n\n useEffect(() => {\n window.addEventListener('resize', debouncedUpdateHeight);\n if(isCreatedPassword){\n toast(formatMessage('mapbiomas.toast.created_password'), 'success');\n }\n\n return () => {\n window.removeEventListener('resize', debouncedUpdateHeight)\n };\n }, []);\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const { login, password } = state;\n\n const API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n\n const callbackUrl = new URL(window.location.href).searchParams.get('request_params[callback_url]') ;\n const sso = new URL(window.location.href).searchParams.get('request_params[sso]') ;\n const sig = new URL(window.location.href).searchParams.get('request_params[sig]') ;\n\n if(!!urlParams){\n paramsToJSON = JSON.parse('{\"' + decodeURI(location.search.substring(1)).replace(/request_params\\[(.+?)(\\])/g, \"$1\").replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=([a-zA-Z0-9_.-])/g,'\":\"$1') + '\"}')\n }\n\n const payload = {\n email: login,\n password,\n request_params: {\n ...paramsToJSON\n }\n };\n\n const customHeaders = { 'Content-Type': 'application/json' }\n\n const token = localStorage.getItem('token');\n let config = _.extend({}, {\n method: 'POST',\n body: JSON.stringify(payload)\n });\n let url = API_URL;\n\n\n if (token) {\n config.headers = _.extend(\n { 'Authorization': `Bearer ${ token }` },\n customHeaders\n );\n } else {\n config.headers = customHeaders;\n }\n\n fetch(`${url}/v1/tokens`, config)\n .then((response) => response.json())\n .then((data) => {\n if(data.success){\n const id = _.get(data, 'id');\n const token = _.get(data, 'token');\n if (token) {\n\n localStorage.setItem('tokenId', id);\n parseToken(token);\n if (callbackUrl) {\n let paramsToUrl = ''\n Object.keys(paramsToJSON).map(function(key, index) {\n paramsToUrl += `request_params[${key}]=${paramsToJSON[key]}&`\n });\n window.location.href = `${decodeURIComponent(callbackUrl)}/?${encodeURI(paramsToUrl)}token=${token}`;\n } else {\n window.location.href = '/?login=true';\n }\n }\n }else {\n toast(data.message, 'error');\n }\n\n })\n .catch((error) => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n return (\n <div className={ styles.wrapper } style={ { height: windowHeight } }>\n <div className={ styles.content }>\n <a href=\"https://mapbiomas.org/\">\n <img src={ logo } className={ styles.logo } alt=\"Logo MapBiomas\" />\n </a>\n <Paper className={ styles.box }>\n <div className={ styles.contentWrapper }>\n <h1 className={ styles.title }><FormattedMessage id=\"login_page.title\" /></h1>\n <Typography className={ styles.subtitle }><FormattedMessage id=\"login_page.subtitle\" /></Typography>\n <form className={ styles.formWrapper } onSubmit={ handleSubmit }>\n <FormControl fullWidth className={ `${styles.formControl} ${styles.emailField}` }>\n <TextField\n required\n id=\"login-field\"\n label={ formatMessage('mapbiomas.user.login.fields.email') }\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.login }\n onChange={ handleTextChange.bind(this, 'login') }\n />\n </FormControl>\n <FormControl fullWidth className={ styles.formControl }>\n <TextField\n required\n id=\"password-field\"\n label={ formatMessage('mapbiomas.user.login.fields.password') }\n type=\"password\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.password }\n onChange={ handleTextChange.bind(this, 'password') }\n />\n </FormControl>\n <div className={ styles.actionsWrapper }>\n <Link className={ styles.helperLink } to={`/esqueci-minha-senha?${urlParams}`}><FormattedMessage id=\"mapbiomas.user.login.forgot_password\" /></Link>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n className={styles.button}\n >\n <FormattedMessage id=\"mapbiomas.user.login.buttons.login\" />\n </Button>\n </div>\n </form>\n <Typography className={styles.createAcountLegend}><FormattedMessage id=\"mapbiomas.user.create_account.helper_link.create_account_label\" /></Typography>\n <Link className={ styles.helperLink } to={`/criar-minha-conta?${urlParams}`}><FormattedMessage id=\"mapbiomas.user.create_account.helper_link.create_acount_title\" /></Link>\n </div>\n <FormFooter/>\n </Paper>\n </div>\n <PageFooter/>\n </div>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Paper from '@material-ui/core/Paper';\nimport TextField from '@material-ui/core/TextField';\n\nimport toast from '../../utils/toast';\nimport { request } from '../../utils/api';\n\nimport parseToken from '../../helpers/parseToken';\nimport useFormatMessage from '../../hooks/useFormatMessage';\n\nimport logo from './logo.svg';\n\nimport styles from './MapBiomasPasswordRecovery.module.scss';\nimport { Typography } from '@material-ui/core';\nimport { Link } from 'react-router-dom';\nimport FormFooter from '../MapBiomasLogin/components/FormFooter';\nimport PageFooter from '../MapBiomasLogin/components/PageFooter';\n\nconst initialState = {\n email: '',\n};\n\nexport default function MapBiomasPasswordRecovery() {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n const [showInfo, setShowInfo] = useState(false);\n const [windowHeight, setWindowHeight] = useState(window.innerHeight);\n\n const callbackUrl = new URL(window.location.href).searchParams.get('callback_url');\n const urlParams = location.search.substring(1);\n let paramsToJSON = {}\n\n function updateHeight() {\n setWindowHeight(window.innerHeight);\n }\n const debouncedUpdateHeight = _.debounce(updateHeight, 500);\n\n useEffect(() => {\n window.addEventListener('resize', debouncedUpdateHeight);\n\n return () => {\n window.removeEventListener('resize', debouncedUpdateHeight)\n };\n }, []);\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n if(!!urlParams){\n paramsToJSON = JSON.parse('{\"' + decodeURI(location.search.substring(1)).replace(/request_params\\[(.+?)(\\])/g, \"$1\").replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g,'\":\"') + '\"}')\n }\n\n const {\n email,\n } = state;\n\n const payload = {\n email,\n request_params: { ...paramsToJSON }\n };\n\n fetch(`${API_URL}/v1/users/send_recovery_instructions`, {\n method: 'POST',\n headers: {'Content-Type': 'application/json'},\n body: JSON.stringify(payload)\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.success) {\n handleStateChange(\"email\", \"\");\n toast(formatMessage('mapbiomas.toast.email_sent'), 'success');\n }else {\n toast(data.errors[0], 'error');\n }\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const renderInfo = () => {\n return (\n <p className={ styles.successText }><FormattedMessage id=\"mapbiomas.user.password_recovery.instructions\" /></p>\n );\n };\n\n const renderForm = () => {\n return (\n <form onSubmit={ handleSubmit }>\n <FormControl className={ styles.formControl }>\n <TextField\n id=\"email-field\"\n label={ formatMessage('mapbiomas.user.password_recovery.fields.email') }\n variant=\"outlined\"\n type=\"email\"\n className={ styles.filterFormInput }\n value={ state.email }\n onChange={ handleTextChange.bind(this, 'email') }\n required\n />\n </FormControl>\n <div className={ styles.actionsWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n className={ styles.button }\n >\n <FormattedMessage id=\"mapbiomas.user.password_recovery.buttons.confirm\" />\n </Button>\n </div>\n </form>\n );\n };\n\n return (\n <div className={ styles.wrapper } style={ { height: windowHeight } }>\n <div className={ styles.content }>\n <a href=\"https://mapbiomas.org/\">\n <img src={ logo } className={ styles.logo } alt=\"Logo MapBiomas\" />\n </a>\n <Paper className={ styles.box }>\n <div className={ styles.contentWrapper }>\n <h1 className={ styles.title }><FormattedMessage id=\"mapbiomas.user.password_recovery.title\" /></h1>\n <Typography className={ styles.subtitle }><FormattedMessage id=\"mapbiomas.user.password_recovery.instructions\" /></Typography>\n { showInfo && renderInfo() }\n { !showInfo && renderForm() }\n <Typography className={styles.accessAccountLegend}><FormattedMessage id=\"mapbiomas.user.password_recovery.access_account.legend\" /></Typography>\n <Link className={ styles.helperLink } to={`/login?${urlParams}`}><FormattedMessage id=\"mapbiomas.user.login.helper_link.title\" /></Link>\n </div>\n <FormFooter/>\n </Paper>\n </div>\n <PageFooter/>\n </div>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport _ from 'lodash';\nimport { useIntl,FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport { FormControl, FormGroup, FormControlLabel, Checkbox } from '@material-ui/core';\nimport Paper from '@material-ui/core/Paper';\nimport TextField from '@material-ui/core/TextField';\n\nimport toast from '../../utils/toast';\nimport { request } from '../../utils/api';\n\nimport parseToken from '../../helpers/parseToken';\nimport useFormatMessage from '../../hooks/useFormatMessage';\n\nimport logo from './../MapBiomasLogin/logo.svg';\n\nimport styles from './MapbiomasCreateAccount.module.scss';\nimport { Typography } from '@material-ui/core';\nimport FormFooter from '../MapBiomasLogin/components/FormFooter';\nimport PageFooter from '../MapBiomasLogin/components/PageFooter';\n\nconst initialState = {\n name: '',\n login: '',\n password: '',\n organization: '',\n motivation: '',\n privacyCheck: true,\n};\n\nexport default function MapbiomasCreateAccount() {\n const formatMessage = useFormatMessage();\n const [state, setState] = useState(initialState);\n const [windowHeight, setWindowHeight] = useState(window.innerHeight);\n\n const urlParams = location.search.substring(1);\n let paramsToJSON = {}\n\n const intl = useIntl()\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n\n const API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n const { login, organization, name, motivation } = state;\n\n if(!!urlParams){\n paramsToJSON = JSON.parse('{\"' + decodeURI(location.search.substring(1)).replace(/request_params\\[(.+?)(\\])/g, \"$1\").replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g,'\":\"') + '\"}')\n }\n\n const payload = {\n user:{\n email: login,\n organization,\n name,\n motivation,\n },\n request_params: {\n ...paramsToJSON\n }\n };\n\n fetch(`${API_URL}/v1/users`, {\n method: 'POST',\n headers: {'Content-Type': 'application/json'},\n body: JSON.stringify(payload)\n })\n .then((response) => response.json())\n //Then with the data from the response in JSON...\n .then((data) => {\n if(data.user){\n setState({\n name: '',\n login: '',\n password: '',\n organization: '',\n motivation: '',\n privacyCheck: true,\n })\n toast(formatMessage('mapbiomas.toast.confirm_account'), 'success');\n }else {\n toast(data.email, 'error');\n }\n\n })\n .catch((error) => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const handlePrivacyCheckChange = () => {\n setState({\n ...state,\n privacyCheck: !state.privacyCheck\n });\n }\n\n return (\n <div className={ styles.wrapper } style={ { height: windowHeight } }>\n <div className={ styles.content }>\n <a href=\"https://mapbiomas.org/\">\n <img src={ logo } className={ styles.logo } alt=\"Logo MapBiomas\" />\n </a>\n <Paper className={ styles.box }>\n <div className={ styles.contentWrapper }>\n <h1 className={ styles.title }><FormattedMessage id=\"mapbiomas.user.create_account.title\" /></h1>\n <Typography className={ styles.subtitle }><FormattedMessage id=\"mapbiomas.user.create_account.instructions\" /></Typography>\n <form className={ styles.formWrapper } onSubmit={ handleSubmit }>\n <FormControl fullWidth className={ `${styles.formControl} ${styles.mb}` }>\n <TextField\n required\n id=\"name-field\"\n label={ formatMessage('mapbiomas.user.create_account.fields.name') }\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.name }\n onChange={ handleTextChange.bind(this, 'name') }\n />\n </FormControl>\n <FormControl fullWidth className={ `${styles.formControl} ${styles.mb}` }>\n <TextField\n required\n id=\"login-field\"\n label={ formatMessage('mapbiomas.user.login.fields.email') }\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.login }\n onChange={ handleTextChange.bind(this, 'login') }\n />\n </FormControl>\n <FormControl fullWidth className={ `${styles.formControl} ${styles.mb}` }>\n <TextField\n id=\"organization-field\"\n label={ formatMessage('mapbiomas.user.create_account.fields.organization') }\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.organization }\n onChange={ handleTextChange.bind(this, 'organization') }\n />\n </FormControl>\n <FormControl fullWidth className={ `${styles.formControl} ${styles.mb} ${styles.textArea}` }>\n <TextField\n id=\"motivation-field\"\n label={ formatMessage('mapbiomas.user.create_account.fields.motivation') }\n multiline\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n value={ state.motivation }\n onChange={ handleTextChange.bind(this, 'motivation') }\n />\n </FormControl>\n {/* <FormGroup>\n <FormControlLabel\n control={<Checkbox color=\"#16a085\" className={styles.privacyCheck} checked={state.privacyCheck} />}\n onChange={ handlePrivacyCheckChange }\n label={\n <div className={styles.privacyLabel}>\n <span>{intl.formatMessage({id: 'mapbiomas.user.create_account.privacy_policy.text'})}</span>\n <Link className={styles.privacyLink} to={`${intl.formatMessage({id: 'mapbiomas.user.create_account.privacy_policy.link'})}`}>\n {intl.formatMessage({id: 'mapbiomas.user.create_account.privacy_policy.title'})}\n </Link>\n </div>\n }\n />\n </FormGroup> */}\n <div className={ styles.actionsWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n className={styles.button}\n disabled={!state.privacyCheck}\n >\n <FormattedMessage id=\"mapbiomas.user.create_account.title\" />\n </Button>\n </div>\n </form>\n <Typography className={styles.createAcountLegend}><FormattedMessage id=\"mapbiomas.user.login.helper_link.description\" /></Typography>\n <Link className={ styles.helperLink } to={`/login?${urlParams}`}><FormattedMessage id=\"mapbiomas.user.login.helper_link.title\" /></Link>\n </div>\n <FormFooter />\n </Paper>\n </div>\n <PageFooter />\n </div>\n );\n}\n","import React from 'react';\n\nconst LoginToForum = () => {\n fetch(`https://production.plataforma.mapbiomas.org/l/api/forum_login/${document.location.search}`, {\n headers: {\n 'Authorization': `Bearer ${localStorage.getItem('token')}`\n }\n }).then((res)=>res.json()).then((res)=>{\n window.location.assign(res['value']);\n })\n\n return (\n <div>Loading...</div>\n );\n}\n\nexport default LoginToForum;\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($territoryIds: [Int!]!, $classTreeId: Int!) {\n coverageClassificationDataList: coverageClassificationDataByTreeList(\n classTreeId: $classTreeId,\n\t\t\tbufferId: null,\n\t\t\tterritoryIds: $territoryIds\n ) {\n territoryId\n year\n classTreeNodeId\n areaInHa\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport LineChart from '../../../MapBiomasLandingPage/views/Map/components/StatisticsBox/components/LineChart';\nimport PieChart from '../../../MapBiomasLandingPage/views/Map/components/StatisticsBox/components/PieChart';\n\nimport useFormatMessage from '../../../../hooks/useFormatMessage';\n\nimport styles from '../../TerritoryDashboard.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nconst formatNumber = (value) => {\n return numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function CoverageMainStatisticsContent({\n activeYear,\n territoryId,\n statisticsDataIsVisible = false,\n onShowData = () => {},\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n\n const intl = useIntl()\n\n const [chartsData, setChartsData] = useState(null);\n\n const classTreeKey = 'default';\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n }\n });\n const classTreeId = _.get(classTreeData, 'classTreeByKey[0].id');\n\n const territoryIds = [territoryId];\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const activeClassesLevelsListItems = _.map(_.filter(classesLevelsList, { level: 1 }), 'id');\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds,\n classTreeId: classTreeId\n },\n skip: _.isEmpty(territoryIds) || !classTreeId || loadingClassTreeData\n });\n\n const findFurthestParent = (node) => {\n const { parentId } = node;\n\n if (parentId) {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const parentNode = _.find(classesLevelsList, { id: parentId });\n\n if (parentNode) {\n return _.get(parentNode, 'parentId') ? findFurthestParent(parentNode) : parentNode;\n }\n } else {\n return node;\n }\n };\n\n const findFurthestChildrenIds = (childrenIds = []) => {\n if (!_.isEmpty(childrenIds)) {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n\n const ids = _.map(childrenIds, (id) => {\n const node = _.find(classesLevelsList, { id });\n\n return findFurthestChildrenIds(_.get(node, 'childrenIds'));\n });\n\n return [\n ...childrenIds,\n ...(_.compact(_.flattenDeep(ids)))\n ]\n } else {\n return _.compact(_.flattenDeep(childrenIds));\n }\n };\n\n const parseChartsData = () => {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n console.log('classesLevelsList', classesLevelsList);\n const activeClassesLevelsList = _.filter(classesLevelsList, (item) => _.includes(activeClassesLevelsListItems, item.id));\n const coverageClassificationDataList = _.get(baseData, 'coverageClassificationDataList');\n const aggregatedCoverageClassificationDataList = _.values(_.reduce(coverageClassificationDataList, (result, obj) => {\n const key = `${ obj.year }-${ obj.classTreeNodeId }`;\n const nextValue = result[key] ? result[key].areaInHa + obj.areaInHa : obj.areaInHa;\n\n result[key] = {\n ...obj,\n areaInHa: nextValue\n };\n\n return result;\n }, {}));\n\n const parsedData = _.filter(_.map(aggregatedCoverageClassificationDataList, (item) => {\n const classData = _.find(classesLevelsList, { id: item.classTreeNodeId });\n\n return {\n year: Number(_.replace(item.year, '_', '')),\n areaInHa: item.areaInHa,\n classData,\n };\n }), 'classData');\n const years = _.sortBy(_.uniq(_.map(parsedData, 'year')));\n\n const parsedClassesLevelsList = _.map(activeClassesLevelsList, (classData) => {\n const stringList = _.get(classData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const className = `${ _.join(_.get(classData, 'positionInTree'), '.') }. ${ _.get(selectedString, 'stringValue') }`;\n\n return {\n ...classData,\n name: className,\n data: _.map(years, (year) => {\n const coverageClassificationData = _.find(parsedData, (item) => {\n return item.year === year &&\n item.classData.id === classData.id;\n });\n\n return coverageClassificationData ? _.get(coverageClassificationData, 'areaInHa') : null\n })\n };\n });\n\n const classViewChartData = _(activeClassesLevelsList)\n .filter((node) => {\n const childrenIds = findFurthestChildrenIds(_.get(node, 'childrenIds'));\n const hasAtLeastOneChildrenActive = childrenIds.some(id => activeClassesLevelsListItems.indexOf(id) >= 0);\n\n return !hasAtLeastOneChildrenActive;\n })\n .map((node) => {\n const furthestParent = findFurthestParent(node);\n const currentData = _.find(parsedData, (item) => _.get(item, 'classData.id') === node.id && item.year === activeYear);\n\n return {\n ...currentData,\n furthestParentId: _.get(furthestParent, 'id'),\n furthestParent: furthestParent\n };\n })\n .groupBy('furthestParentId')\n .map((data) => {\n const sampleItem = _.first(data);\n const stringList = _.get(sampleItem, 'furthestParent.i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const totalValue = _.sumBy(data, 'areaInHa');\n\n return {\n name: _.get(selectedString, 'stringValue'),\n value: totalValue,\n itemStyle: {\n color: _.get(sampleItem, 'furthestParent.color')\n },\n }\n })\n .value();\n\n const historicalSeriesChartData = _.map(parsedClassesLevelsList, (item) => {\n return {\n name: item.name,\n color: item.color,\n data: item.data,\n level: item.level,\n padding: item.level * 12,\n };\n });\n\n return {\n years,\n classViewChartData,\n historicalSeriesChartData,\n };\n };\n\n useEffect(() => {\n if (!loadingClassTreeData && !loadingBaseData && baseData) {\n setChartsData(parseChartsData());\n }\n }, [baseData, loadingBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const renderClassViewChart = () => {\n const data = _.get(chartsData, 'classViewChartData');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle } style={ { marginTop: 0 } }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title\" values={{ year: activeYear }} /></h2>\n <PieChart\n serie={{\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.unit'),\n data\n }}\n />\n </div>\n );\n };\n\n const renderHistoricalSeriesChart = () => {\n const years = _.get(chartsData, 'years');\n const data = _.get(chartsData, 'historicalSeriesChartData');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title\" /></h2>\n <LineChart\n categories={ years }\n series={ data }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const classViewChartData = _.get(chartsData, 'classViewChartData');\n const classViewChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title', { year: activeYear }),\n columns: ['Total'],\n rows: _.map(classViewChartData, (item) => {\n return {\n name: _.get(item, 'name'),\n data: [_.get(item, 'value')],\n };\n }),\n };\n\n const years = _.get(chartsData, 'years');\n const historicalSeriesChartData = _.get(chartsData, 'historicalSeriesChartData');\n const historicalSeriesChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title'),\n columns: years,\n rows: historicalSeriesChartData,\n };\n\n onShowData([\n classViewChart,\n historicalSeriesChart,\n ]);\n };\n\n return (\n <Fragment>\n { loadingBaseData &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n <Grid container spacing={ 2 }>\n <Grid item xs={ 6 }></Grid>\n <Grid item xs={ 6 }>\n { renderClassViewChart() }\n </Grid>\n <Grid item xs={ 12 }>\n { renderHistoricalSeriesChart() }\n </Grid>\n </Grid>\n {/* <div id=\"data-view-button\" className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div> */}\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\nexport const GET_BASE_DATA = gql`\n query GetBaseData($territoryIds: [Int!]!, $classTreeId: Int!) {\n coverageClassificationDataList: coverageClassificationDataByTreeList(\n classTreeId: $classTreeId,\n\t\t\tbufferId: null,\n\t\t\tterritoryIds: $territoryIds\n ) {\n territoryId\n year\n classTreeNodeId\n areaInHa\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport numbro from 'numbro';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useQuery } from '@apollo/react-hooks';\n\nimport Button from '@material-ui/core/Button';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport LineChart from '../../../MapBiomasLandingPage/views/Map/components/StatisticsBox/components/LineChart';\nimport PieChart from '../../../MapBiomasLandingPage/views/Map/components/StatisticsBox/components/PieChart';\n\nimport useFormatMessage from '../../../../hooks/useFormatMessage';\n\nimport styles from '../../TerritoryDashboard.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nconst formatNumber = (value) => {\n return numbro(value).format({\n thousandSeparated: true,\n mantissa: 0\n });\n};\n\nexport default function CoveragePieChartContent({\n activeYear,\n classTreeKey = 'default',\n territoryId,\n statisticsDataIsVisible = false,\n onShowData = () => {},\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n const formatMessage = useFormatMessage();\n\n const intl = useIntl()\n\n const [chartsData, setChartsData] = useState(null);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n }\n });\n const classTreeId = _.get(classTreeData, 'classTreeByKey[0].id');\n\n const territoryIds = [territoryId];\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n console.log(' CoveragePieChartContent classesLevelsList', activeClassesLevelsListItems);\n const activeClassesLevelsListItems = _.map(_.filter(classesLevelsList, { level: 1 }), 'id');\n console.log('activeClassesLevelsListItems', activeClassesLevelsListItems);\n const { data: baseData, loading: loadingBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n territoryIds,\n classTreeId: classTreeId\n },\n skip: _.isEmpty(territoryIds) || !classTreeId || loadingClassTreeData\n });\n\n const findFurthestParent = (node) => {\n const { parentId } = node;\n\n if (parentId) {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n const parentNode = _.find(classesLevelsList, { id: parentId });\n\n if (parentNode) {\n return _.get(parentNode, 'parentId') ? findFurthestParent(parentNode) : parentNode;\n }\n } else {\n return node;\n }\n };\n\n const findFurthestChildrenIds = (childrenIds = []) => {\n if (!_.isEmpty(childrenIds)) {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n\n const ids = _.map(childrenIds, (id) => {\n const node = _.find(classesLevelsList, { id });\n\n return findFurthestChildrenIds(_.get(node, 'childrenIds'));\n });\n\n return [\n ...childrenIds,\n ...(_.compact(_.flattenDeep(ids)))\n ]\n } else {\n return _.compact(_.flattenDeep(childrenIds));\n }\n };\n\n const parseChartsData = () => {\n const classesLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n console.log('classesLevelsList', classesLevelsList);\n const activeClassesLevelsList = _.filter(classesLevelsList, (item) => _.includes(activeClassesLevelsListItems, item.id));\n const coverageClassificationDataList = _.get(baseData, 'coverageClassificationDataList');\n const aggregatedCoverageClassificationDataList = _.values(_.reduce(coverageClassificationDataList, (result, obj) => {\n const key = `${ obj.year }-${ obj.classTreeNodeId }`;\n const nextValue = result[key] ? result[key].areaInHa + obj.areaInHa : obj.areaInHa;\n\n result[key] = {\n ...obj,\n areaInHa: nextValue\n };\n\n return result;\n }, {}));\n\n const parsedData = _.filter(_.map(aggregatedCoverageClassificationDataList, (item) => {\n const classData = _.find(classesLevelsList, { id: item.classTreeNodeId });\n\n return {\n year: Number(_.replace(item.year, '_', '')),\n areaInHa: item.areaInHa,\n classData,\n };\n }), 'classData');\n const years = _.sortBy(_.uniq(_.map(parsedData, 'year')));\n\n const parsedClassesLevelsList = _.map(activeClassesLevelsList, (classData) => {\n const stringList = _.get(classData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const className = `${ _.join(_.get(classData, 'positionInTree'), '.') }. ${ _.get(selectedString, 'stringValue') }`;\n\n return {\n ...classData,\n name: className,\n data: _.map(years, (year) => {\n const coverageClassificationData = _.find(parsedData, (item) => {\n return item.year === year &&\n item.classData.id === classData.id;\n });\n\n return coverageClassificationData ? _.get(coverageClassificationData, 'areaInHa') : null\n })\n };\n });\n\n const classViewChartData = _(activeClassesLevelsList)\n .filter((node) => {\n const childrenIds = findFurthestChildrenIds(_.get(node, 'childrenIds'));\n const hasAtLeastOneChildrenActive = childrenIds.some(id => activeClassesLevelsListItems.indexOf(id) >= 0);\n\n return !hasAtLeastOneChildrenActive;\n })\n .map((node) => {\n const furthestParent = findFurthestParent(node);\n const currentData = _.find(parsedData, (item) => _.get(item, 'classData.id') === node.id && item.year === activeYear);\n\n return {\n ...currentData,\n furthestParentId: _.get(furthestParent, 'id'),\n furthestParent: furthestParent\n };\n })\n .groupBy('furthestParentId')\n .map((data) => {\n const sampleItem = _.first(data);\n const stringList = _.get(sampleItem, 'furthestParent.i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const totalValue = _.sumBy(data, 'areaInHa');\n\n return {\n name: _.get(selectedString, 'stringValue'),\n value: totalValue,\n itemStyle: {\n color: _.get(sampleItem, 'furthestParent.color')\n },\n }\n })\n .value();\n\n const historicalSeriesChartData = _.map(parsedClassesLevelsList, (item) => {\n return {\n name: item.name,\n color: item.color,\n data: item.data,\n level: item.level,\n padding: item.level * 12,\n };\n });\n\n return {\n years,\n classViewChartData,\n historicalSeriesChartData,\n };\n };\n\n useEffect(() => {\n if (!loadingClassTreeData && !loadingBaseData && baseData) {\n setChartsData(parseChartsData());\n }\n }, [baseData, loadingBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const renderClassViewChart = () => {\n const data = _.get(chartsData, 'classViewChartData');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title\" values={{ year: activeYear }} /></h2>\n <PieChart\n serie={{\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.unit'),\n data\n }}\n />\n </div>\n );\n };\n\n const renderHistoricalSeriesChart = () => {\n const years = _.get(chartsData, 'years');\n const data = _.get(chartsData, 'historicalSeriesChartData');\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title\" /></h2>\n <LineChart\n categories={ years }\n series={ data }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const classViewChartData = _.get(chartsData, 'classViewChartData');\n const classViewChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.classes_pie.title', { year: activeYear }),\n columns: ['Total'],\n rows: _.map(classViewChartData, (item) => {\n return {\n name: _.get(item, 'name'),\n data: [_.get(item, 'value')],\n };\n }),\n };\n\n const years = _.get(chartsData, 'years');\n const historicalSeriesChartData = _.get(chartsData, 'historicalSeriesChartData');\n const historicalSeriesChart = {\n title: formatMessage('mapbiomas.dashboard.coverage.coverage_main.charts.historical_line.title'),\n columns: years,\n rows: historicalSeriesChartData,\n };\n\n onShowData([\n classViewChart,\n historicalSeriesChart,\n ]);\n };\n\n return (\n <Fragment>\n { loadingBaseData &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { renderClassViewChart() }\n {/* { renderHistoricalSeriesChart() } */}\n {/* <div id=\"data-view-button\" className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div> */}\n </Fragment>\n );\n}\n","import { gql } from 'graphql.macro';\n\nexport const GET_CLASS_TREE_DATA = gql`\n query GetClassTreeData(\n $classTreeKey: String!,\n ) {\n classTreeByKey(key: $classTreeKey) {\n id\n key\n \ti18nStrings {\n\t\t\t\tlanguage\n\t\t\t\tstringValue\n }\n\t\t\tmvClassTreeLevelsUi {\n id\n color\n classId\n childrenIds\n positionInTree\n level\n parentId\n defaultName\n classTreeId\n\t\t\t\ti18nStrings {\n\t\t\t\t\tlanguage\n\t\t\t\t\tstringValue\n\t\t\t\t}\n }\n }\n }\n`;\n\n\nexport const GET_BASE_DATA = gql`\n query CalcCoverageByYear(\n $classTreeNodeIds: [Int!]!,\n $filteredActiveClassTreeNodeIds: [Int!]!,\n $activeParentClassTreeNodeIds: [Int!]!,\n $years: [Int!]!,\n $territoriesIds: [Int!]!,\n ) {\n getCalcCoverageWichYears(\n classTreeNodeIds: $activeParentClassTreeNodeIds,\n years: $years,\n territoriesIds: $territoriesIds\n ) {\n average\n maximun\n minimun\n percentage\n areaOccurrence\n distByYears {\n total\n year\n }\n }\n\n getCalcAcumCoverageByClasses(\n classTreeNodeIds: $classTreeNodeIds,\n years: $years,\n territoriesIds: $territoriesIds\n ) {\n acumYear {\n classTreeNodeId\n proporcionality\n total\n }\n year\n }\n\n getCalcAcumCoverageByClassesFiltered: getCalcAcumCoverageByClasses(\n classTreeNodeIds: $filteredActiveClassTreeNodeIds,\n years: $years,\n territoriesIds: $territoriesIds\n ) {\n acumYear {\n classTreeNodeId\n proporcionality\n total\n }\n year\n }\n }\n`;\n","import React, { useEffect, useState, Fragment } from 'react';\nimport _ from 'lodash';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useIntl, FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport TableChartIcon from '@material-ui/icons/TableChart';\n\nimport BarChart from '../../../MapBiomasLandingPage/views/Map/components/StatisticsBox/components/BarChart';\nimport BaseValuesChart from '../../../MapBiomasLandingPage/views/Map/components/StatisticsBox/components/BaseValuesChart';\n\nimport customClient from '../../../../core/custom-apollo-client';\n\nimport styles from '../../TerritoryDashboard.module.scss';\n\nimport {\n GET_BASE_DATA,\n GET_CLASS_TREE_DATA,\n} from './query';\n\nexport default function AnnualStatisticsContent({\n clientType,\n activeYear,\n baseParams,\n classTreeKey,\n territoryId,\n statisticsDataIsVisible = false,\n selectedClassTreeIds = [],\n onShowData = () => {},\n themeColor,\n}) {\n const locale = localStorage.getItem('locale') || 'es';\n\n const intl = useIntl()\n\n const mainYear = _.last(activeYear);\n const years = [_.first(activeYear), _.last(activeYear)];\n // const activeClassTreeNodeIds = _.get(baseParams, 'activeClassTreeNodeIds');\n const territoryIds = [territoryId];\n\n const [chartsData, setChartsData] = useState(null);\n const [emptyData, setEmptyData] = useState(false);\n\n const { data: classTreeData, loading: loadingClassTreeData } = useQuery(GET_CLASS_TREE_DATA, {\n variables: {\n classTreeKey\n },\n client: clientType === 'custom' ? customClient : undefined\n });\n const classTreeLevelsList = _.get(classTreeData, 'classTreeByKey[0].mvClassTreeLevelsUi');\n console.log('le classTreeLevelsList', classTreeLevelsList);\n let filteredActiveClassTreeNodeIds = _.map(_.filter(classTreeLevelsList, { level: 1 }), 'id');\n if (!_.isEmpty(selectedClassTreeIds)) {\n filteredActiveClassTreeNodeIds = _.filter(filteredActiveClassTreeNodeIds, (id) => _.includes(selectedClassTreeIds, id));\n }\n console.log('le filteredActiveClassTreeNodeIds', filteredActiveClassTreeNodeIds);\n const activeClassTreeNodeIds = filteredActiveClassTreeNodeIds;\n const activeParentClassTreeNodeIds = filteredActiveClassTreeNodeIds;\n console.log('filteredActiveClassTreeNodeIds', filteredActiveClassTreeNodeIds);\n // const filteredActiveClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n // const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n // const childrenIds = _.get(nodeData, 'childrenIds');\n\n // if (_.isEmpty(childrenIds)) {\n // return true;\n // } else {\n // return !childrenIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n // }\n // });\n const getParentIds = (nodeId, ids = []) => {\n const nodeData = _.find(classTreeLevelsList, { id: nodeId });\n const parentId = _.get(nodeData, 'parentId');\n\n if (parentId) {\n return getParentIds(parentId, [...ids, parentId]);\n } else {\n return ids;\n }\n };\n // const activeParentClassTreeNodeIds = _.filter(activeClassTreeNodeIds, (nodeId) => {\n // const parentIds = getParentIds(nodeId);\n // const hasSomeParentActive = parentIds.some(id => activeClassTreeNodeIds.indexOf(id) >= 0);\n\n // return !hasSomeParentActive;\n // });\n\n const { data: baseData, loading, error: errorBaseData } = useQuery(GET_BASE_DATA, {\n variables: {\n classTreeNodeIds: activeClassTreeNodeIds,\n filteredActiveClassTreeNodeIds: filteredActiveClassTreeNodeIds,\n activeParentClassTreeNodeIds: activeParentClassTreeNodeIds,\n years: years,\n territoriesIds: territoryIds\n },\n skip: loadingClassTreeData,\n client: clientType === 'custom' ? customClient : undefined\n });\n\n const getTotalAreaByClassesData = () => {\n const data = _.get(baseData, 'getCalcAcumCoverageByClasses');\n const years = _.map(data, 'year');\n\n const classTreeNodeData = {};\n\n _.each(activeClassTreeNodeIds, (nodeId) => {\n _.each(years, (year) => {\n const yearData = _.find(data, { year });\n const nodeData = _.find(_.get(yearData, 'acumYear'), { classTreeNodeId: nodeId });\n const value = _.get(nodeData, 'total') || null;\n const nodeValues = _.get(classTreeNodeData, nodeId);\n\n if (nodeValues) {\n _.set(classTreeNodeData, nodeId, [...nodeValues, value]);\n } else {\n _.set(classTreeNodeData, nodeId, [value]);\n }\n });\n });\n\n const parsedSeries = _.map(_.keys(classTreeNodeData), (nodeId) => {\n const parsedNodeId = Number(nodeId);\n const nodeData = _.find(classTreeLevelsList, { id: parsedNodeId });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n const prettyIndexOfNodeInTree = _.join(_.get(nodeData, 'positionInTree'), '.');\n\n return {\n nodeId: parsedNodeId,\n stack: 'year',\n name: `${ prettyIndexOfNodeInTree }. ${ label }`,\n color: _.get(nodeData, 'color') || '#e74c3c',\n data: _.get(classTreeNodeData, nodeId),\n };\n });\n const sortedSeries = _.sortBy(parsedSeries, 'name');\n const filteredSeries = _.filter(sortedSeries, ({ nodeId }) => _.includes(filteredActiveClassTreeNodeIds, nodeId));\n\n return {\n categories: years,\n series: sortedSeries,\n filteredSeries,\n };\n };\n\n const getPercentageAreaByClasses = () => {\n const data = _.get(baseData, 'getCalcAcumCoverageByClassesFiltered');\n const years = _.map(data, 'year');\n\n const classTreeNodeData = {};\n\n _.each(filteredActiveClassTreeNodeIds, (nodeId) => {\n _.each(years, (year) => {\n const yearData = _.find(data, { year });\n const nodeData = _.find(_.get(yearData, 'acumYear'), { classTreeNodeId: nodeId });\n const value = _.get(nodeData, 'proporcionality') || null;\n const nodeValues = _.get(classTreeNodeData, nodeId);\n\n if (nodeValues) {\n _.set(classTreeNodeData, nodeId, [...nodeValues, value]);\n } else {\n _.set(classTreeNodeData, nodeId, [value]);\n }\n });\n });\n\n const parsedSeries = _.map(_.keys(classTreeNodeData), (nodeId) => {\n const parsedNodeId = Number(nodeId);\n const nodeData = _.find(classTreeLevelsList, { id: parsedNodeId });\n const stringList = _.get(nodeData, 'i18nStrings');\n const selectedString = _.find(stringList, { language: locale });\n const label = _.get(selectedString, 'stringValue');\n const prettyIndexOfNodeInTree = _.join(_.get(nodeData, 'positionInTree'), '.');\n\n return {\n nodeId: parsedNodeId,\n stack: 'year',\n name: `${ prettyIndexOfNodeInTree }. ${ label }`,\n color: _.get(nodeData, 'color') || '#e74c3c',\n data: _.get(classTreeNodeData, nodeId),\n };\n });\n const sortedSeries = _.sortBy(parsedSeries, 'name');\n\n return {\n categories: years,\n series: sortedSeries,\n filteredSeries: sortedSeries\n };\n };\n\n useEffect(() => {\n const sampleData = _.get(baseData, 'getCalcCoverageWichYears[0].maximun');\n\n if ((!loading && errorBaseData) || _.isNull(sampleData)) {\n setEmptyData(true);\n } else {\n setEmptyData(false);\n }\n\n if (!loadingClassTreeData && !loading && baseData) {\n setChartsData({\n 'totalAreaByClasses': getTotalAreaByClassesData(),\n 'percentageAreaByClasses': getPercentageAreaByClasses(),\n });\n }\n }, [baseData, loading, loadingClassTreeData, errorBaseData]);\n\n useEffect(() => {\n if (statisticsDataIsVisible) {\n handleShowData();\n }\n }, [chartsData]);\n\n const areaByPeriod = () => {\n const data = _.get(baseData, 'getCalcCoverageWichYears[0]');\n const distByYears = _.get(data, 'distByYears') || [];\n const total = _.get(data, 'areaOccurrence') || 0;\n const maxValue = _.get(data, 'maximun') || 0;\n const maxYear = _.get(_.find(distByYears, { total: maxValue }), 'year');\n const averageValue = _.get(data, 'average') || 0;\n const minValue = _.get(data, 'minimun') || 0;\n const minYear = _.get(_.find(distByYears, { total: minValue }), 'year');\n const averagePercentage = (averageValue / maxValue) * 100;\n const minPercentage = (minValue / maxValue) * 100;\n\n const customTotal = _.get(_.find(distByYears, { year: mainYear }), 'total') || null;\n const isCustom = classTreeKey === 'mining_annual' ||\n classTreeKey === 'quality_of_pasture_data_main' ||\n classTreeKey === 'regeneration_annual_by_class' ||\n classTreeKey === 'irrigation_main' ||\n classTreeKey === 'deforestation_annual_by_class';\n\n return (\n <BaseValuesChart\n title={ !isCustom ? (intl.formatMessage({id: 'mapbiomas.statistics.area.period'})) : `${intl.formatMessage({id: 'mapbiomas.statistics.area.title'})} - ${ mainYear }` }\n totalTitle=\"Total\"\n total={ !isCustom ? total : customTotal }\n maxValue={ maxValue }\n maxYear={ maxYear }\n averageValue={ averageValue }\n averagePercentage={ averagePercentage }\n minValue={ minValue }\n minYear={ minYear }\n minPercentage={ minPercentage }\n color={ themeColor }\n />\n );\n };\n\n const totalAreaByClasses = () => {\n const categories = _.get(chartsData, 'totalAreaByClasses.categories') || [];\n const series = _.get(chartsData, 'totalAreaByClasses.filteredSeries') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.anual_statistics_content.area_title\" /></h2>\n <BarChart\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const percentageAreaByClasses = () => {\n const categories = _.get(chartsData, 'percentageAreaByClasses.categories') || [];\n const series = _.get(chartsData, 'percentageAreaByClasses.filteredSeries') || [];\n\n return (\n <div className={ styles.section }>\n <h2 className={ styles.secondaryTitle }><FormattedMessage id=\"mapbiomas.anual_statistics_content.proportion_title\" /></h2>\n <BarChart\n isPercentage\n categories={ categories }\n series={ series }\n />\n </div>\n );\n };\n\n const handleShowData = () => {\n const totalAreaByClassesChartData = _.get(chartsData, 'totalAreaByClasses');\n const totalAreaByClassesChartDataCategories = _.get(totalAreaByClassesChartData, 'categories') || [];\n const totalAreaByClassesChartDataSeries = _.get(totalAreaByClassesChartData, 'series') || [];\n\n const totalAreaByClassesChart = {\n title: <FormattedMessage id=\"mapbiomas.anual_statistics_content.area_title\" />,\n columns: totalAreaByClassesChartDataCategories,\n rows: totalAreaByClassesChartDataSeries\n };\n\n const percentageAreaByClassesChartData = _.get(chartsData, 'percentageAreaByClasses');\n const percentageAreaByClassesChartDataCategories = _.get(percentageAreaByClassesChartData, 'categories') || [];\n const percentageAreaByClassesChartDataSeries = _.get(percentageAreaByClassesChartData, 'series') || [];\n\n const percentageAreaByClassesChart = {\n title: <FormattedMessage id=\"mapbiomas.anual_statistics_content.proportion_title\" />,\n columns: percentageAreaByClassesChartDataCategories,\n rows: percentageAreaByClassesChartDataSeries\n };\n\n onShowData([\n totalAreaByClassesChart,\n percentageAreaByClassesChart\n ]);\n };\n\n const renderData = () => {\n if (emptyData) {\n return null;\n }\n\n return (\n <Fragment>\n <Grid container spacing={ 2 }>\n <Grid item xs={ 6 }></Grid>\n <Grid item xs={ 6 }>\n { areaByPeriod() }\n </Grid>\n <Grid item xs={ 12 }>\n { totalAreaByClasses() }\n </Grid>\n </Grid>\n {/* { percentageAreaByClasses() }\n <div className={ styles.actionWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n onClick={ handleShowData }\n className={ styles.actionButton }\n >\n <TableChartIcon />\n <span><FormattedMessage id=\"mapbiomas.statistics.view_data\" /></span>\n </Button>\n </div> */}\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n { loading &&\n <div className={ styles.progressWrapper }>\n <LinearProgress />\n </div>\n }\n { emptyData &&\n <div className={ styles.infoBox }>\n <p><FormattedMessage id=\"mapbiomas.statistics.processing_data\" /></p>\n </div>\n }\n { renderData() }\n </Fragment>\n );\n}\n","import React, { Fragment, useEffect, useState } from 'react';\nimport _ from 'lodash';\n\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\n\nimport TerritoryAutocomplete from '../MapBiomasLandingPage/layout/Header/components/BaseForm/components/TerritoryAutocomplete';\nimport ModuleIconComponent from '../MapBiomasLandingPage/layout/Header/ModuleIconComponent';\n\nimport PageFooter from '../MapBiomasLogin/components/PageFooter';\n\nimport CoverageMainStatisticsContent from './content/CoverageMainStatisticsContent';\nimport CoveragePieChartContent from './content/CoveragePieChartContent';\nimport AnnualStatisticsContent from './content/AnnualStatisticsContent';\n\nimport logo from './logo.svg';\n\nimport styles from './TerritoryDashboard.module.scss';\n\nconst baseParams = {\n \"groupType\": \"territorial\",\n \"territory\": 193,\n \"territories\": [\n {\n \"id\": 193,\n \"label\": \"Altamira (PA)\",\n \"territoryTypeId\": 4,\n \"territoryTypeLabel\": \"MunicÃpio\",\n \"territoryBBox\": [\n [\n -9.645178150999953,\n -55.623870985999986\n ],\n [\n -2.9887168529999784,\n -51.64753782599993\n ]\n ],\n \"__typename\": \"AppBaseParamsActiveTerritoryItemState\"\n }\n ],\n \"classesViewMode\": \"class\",\n \"activeClassTreeNodeIds\": [],\n \"activeClassTreeOptionValue\": null,\n \"activeObjectTreeNodeIds\": [],\n \"activeSubmodule\": null,\n \"activeClassesLevelsListItems\": [\n 1,\n 7,\n 8,\n 9,\n 10,\n 2,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 3,\n 17,\n 18,\n 27,\n 37,\n 38,\n 39,\n 40,\n 41,\n 28,\n 42,\n 43,\n 44,\n 19,\n 20,\n 4,\n 21,\n 22,\n 23,\n 24,\n 5,\n 25,\n 26,\n 6\n ],\n \"activeTransitionsClassesListItems\": null,\n \"activePastureQualityQualityClassesListItems\": null,\n \"yearRange\": \"1985-2021\",\n \"buffer\": 0,\n \"__typename\": \"AppBaseParamsState\"\n};\n\nconst COVERAGE_TREE_NODE_IDS = '1,7,8,9,10,2,11,12,13,14,15,16,3,17,18,27,37,38,39,40,41,28,42,43,44,19,20,4,21,22,23,24,5,25,26,6';\nconst COVERAGE_NATURAL_OR_ANTHROPIC_TREE_NODE_IDS = '48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,75,47';\nconst DEFORESTATION_TREE_NODE_IDS = '254,256,269,270,271,272,257,273,274,275,276,277,255,258,278,279,280,281,259,282,283,284,285,286';\nconst QUALITY_OF_PASTURE_TREE_NODE_IDS = '79,80,81';\nconst REGENERATION_TREE_NODE_IDS = '383,387,442,443,444,445,388,446,447,448,449,450,451,384,389,452,453,454,456,458,459,460,461,462,457,463,464,465,455';\nconst IRRIGATION_TREE_NODE_IDS = '181,184,189,190,191,252,185,192,193,194,182,186,195,196,197,253,187,198,199,200,183,188,201';\nconst MINING_TREE_NODE_IDS = '82,84,151,152,153,154,155,156,157,158,159,160,161,162,163,164,85,165,166,167,168,169,170,86,171,172,87,173,174,175,83,88,176,177,89,178,90,179,180';\nconst FIRE_TREE_NODE_IDS = '202,207,208,209,210,203,211,212,213,214,215,204,216,217,218,219,220,221,222,223,224,225,205,226,227,228,229,206,230,231';\n\nfunction Triangle({\n title,\n subtitle,\n color\n}) {\n return (\n <div className={ styles.sectionTitleBox }>\n <div className={ styles.triangleArrow } style={ { borderLeftColor: color } } />\n <div className={ styles.sectionTitleBoxTitleWrapper }>\n <h1 className={ styles.sectionTitleBoxTitle }>{ title }</h1>\n { subtitle &&\n <h2 className={ styles.sectionTitleBoxSubtitle }>{ subtitle }</h2>\n }\n </div>\n </div>\n );\n}\n\nconst MODULES = [\n { key: 'coverage', label: 'Cobertura' },\n // { key: 'coverage_quality', label: '' },\n // { key: 'temporal_analysis', label: '' },\n { key: 'quality_of_pasture_data', label: 'Pastagem' },\n { key: 'deforestation', label: 'Desmatamento' },\n { key: 'regeneration', label: 'Regeneração' },\n // { key: 'infrastructure', label: '' },\n { key: 'irrigation', label: 'Irrigação' },\n { key: 'fire', label: 'Fogo' },\n // { key: 'scenarios', label: '' },\n { key: 'water', label: 'Ãgua' },\n { key: 'mining', label: 'Mineração' },\n];\n\nexport default function TerritoryDashboard() {\n const [territory, setTerritory] = useState({\n \"id\": 193,\n \"label\": \"Altamira (PA)\",\n \"boundingBox\": [\n [\n -9.645178150999953,\n -55.623870985999986\n ],\n [\n -2.9887168529999784,\n -51.64753782599993\n ]\n ]\n });\n\n const bbox = _.get(territory, 'boundingBox');\n const territoryId = _.get(territory, 'id');\n const territoryBoundingBox = `${ _.get(bbox, '[0][1]') },${ _.get(bbox, '[0][0]') },${ _.get(bbox, '[1][1]') },${ _.get(bbox, '[1][0]') }`;\n\n const handleTerritoryChange = (data) => {\n console.log('territory change', data);\n setTerritory(data);\n };\n\n const renderTerritoryImage = (module, year, nodeIds) => {\n const wfsParams = [\n 'service=WMS',\n 'request=GetMap',\n `layers=${ module }`,\n 'format=image/png',\n 'transparent=true',\n 'version=1.1.1',\n `territory_ids=${ territoryId }`,\n `year=${ year }`,\n `class_tree_node_ids=${ nodeIds }`,\n 'width=220',\n 'height=220',\n 'srs=EPSG:4326',\n `bbox=${ territoryBoundingBox }`\n ];\n const params = wfsParams.join('&');\n\n return (\n <div className={ styles.imageBox }>\n <img src={ `https://production.alerta.mapbiomas.org/geoserver/mapbiomas-alertas/wms?service=WMS&request=GetMap&layers=mapbiomas-alertas:dashboard_cities-static-layer&format=image/png&transparent=true&version=1.1.1&width=220&height=220&srs=EPSG:4326&bbox=${ territoryBoundingBox }`} />\n <img src={ `https://brasil.mapserver.mapbiomas.org/wms/${ module }.map?${ params }`} />\n </div>\n );\n };\n\n const renderSectionTitle = (title, subtitle, color) => {\n return (\n <Triangle\n title={ title }\n subtitle={ subtitle }\n color={ color }\n />\n );\n };\n\n return (\n <div className={ styles.wrapper }>\n <div className={ styles.content }>\n <a href=\"https://mapbiomas.org/\">\n <img src={ logo } className={ styles.logo } alt=\"Logo MapBiomas\" />\n </a>\n <Paper className={ styles.formBox }>\n <TerritoryAutocomplete\n activeTerritories={ [territory] }\n categoryId={ 4 }\n label={ null }\n placeholder=\"Selecione um municÃpio...\"\n onChange={ handleTerritoryChange }\n />\n </Paper>\n <Paper className={ styles.contentBox }>\n <div className={ styles.contentWrapper }>\n <div className={ styles.contentTitleWrapper }>\n <h1 className={ styles.contentTitle }>Conheça os dados do<br />municÃpio de<br /><b>{ _.get(territory, 'label') }</b></h1>\n <p>Nesse relatório você terá dados sobre cobertura, desmatamento, regeneração, pastagem, irrigação, mineração, água e fogo</p>\n </div>\n <div className={ styles.modulesBlock }>\n <Grid container spacing={ 2 } alignItems=\"center\">\n { _.map(MODULES, (module) => {\n return (\n <Grid item xs={ 3 } key={ module.key }>\n <li className={ styles.moduleBlock }>\n <span className={ styles.moduleBlockIcon }>\n <ModuleIconComponent moduleKey={ module.key } />\n </span>\n <span className={ styles.moduleBlockTitle }>{ module.label }</span>\n </li>\n </Grid>\n );\n }) }\n </Grid>\n </div>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle(_.get(territory, 'label')) }\n </Grid>\n <Grid item xs={ 6 }>\n { renderTerritoryImage('coverage', 2021, COVERAGE_TREE_NODE_IDS) }\n </Grid>\n </Grid>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Cobertura e Uso da Terra', undefined, '#16a085') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <section className={ styles.moduleContentWrapper }>\n { renderTerritoryImage('coverage', 2021, COVERAGE_TREE_NODE_IDS) }\n <CoverageMainStatisticsContent\n activeYear={ 2021 }\n territoryId={ territoryId }\n />\n </section>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Cobertura e Uso da Terra', 'Natural e Antrópico', '#16a085') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <Grid container spacing={ 2 } alignItems=\"center\" justifyContent=\"space-evenly\">\n <Grid item xs={ 6 } className={ styles.yearBlockImage }>\n <h2 className={ styles.yearTitle }>1985</h2>\n { renderTerritoryImage('coverage', 1985, COVERAGE_NATURAL_OR_ANTHROPIC_TREE_NODE_IDS) }\n <CoveragePieChartContent\n activeYear={ 1985 }\n classTreeKey=\"natural_or_anthropic\"\n territoryId={ territoryId }\n />\n </Grid>\n <Grid item xs={ 6 } className={ styles.yearBlockImage }>\n <h2 className={ styles.yearTitle }>2021</h2>\n { renderTerritoryImage('coverage', 2021, COVERAGE_NATURAL_OR_ANTHROPIC_TREE_NODE_IDS) }\n <CoveragePieChartContent\n activeYear={ 2021 }\n classTreeKey=\"natural_or_anthropic\"\n territoryId={ territoryId }\n />\n </Grid>\n </Grid>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Desmatamento', undefined, '#e74c3c') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <section className={ styles.moduleContentWrapper }>\n { renderTerritoryImage('deforestation_annual', 2020, DEFORESTATION_TREE_NODE_IDS) }\n <AnnualStatisticsContent\n activeYear={ [1987, 2020] }\n classTreeKey=\"deforestation_annual_by_class\"\n territoryId={ territoryId }\n themeColor=\"#e74c3c\"\n />\n </section>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Vegetação Secundária', undefined, '#27ae60') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <section className={ styles.moduleContentWrapper }>\n { renderTerritoryImage('regeneration_annual', 2019, REGENERATION_TREE_NODE_IDS) }\n <AnnualStatisticsContent\n activeYear={ [1987, 2019] }\n classTreeKey=\"regeneration_annual_by_class\"\n territoryId={ territoryId }\n selectedClassTreeIds={ [383, 384] }\n themeColor=\"#27ae60\"\n />\n </section>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Qualidade da Pastagem', undefined, '#f39c12') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <section className={ styles.moduleContentWrapper }>\n { renderTerritoryImage('quality_of_pasture_data_main', 2021, QUALITY_OF_PASTURE_TREE_NODE_IDS) }\n <AnnualStatisticsContent\n activeYear={ [2000, 2021] }\n classTreeKey=\"quality_of_pasture_main\"\n territoryId={ territoryId }\n themeColor=\"#f39c12\"\n />\n </section>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Mineração', undefined, '#f39c12') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <section className={ styles.moduleContentWrapper }>\n { renderTerritoryImage('mining_main', 2021, MINING_TREE_NODE_IDS) }\n <AnnualStatisticsContent\n activeYear={ [1985, 2021] }\n classTreeKey=\"mining_main\"\n territoryId={ territoryId }\n themeColor=\"#f39c12\"\n />\n </section>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Fogo', undefined, '#e74c3c') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <section className={ styles.moduleContentWrapper }>\n { renderTerritoryImage('fire_annual', 2020, FIRE_TREE_NODE_IDS) }\n <AnnualStatisticsContent\n activeYear={ [1985, 2022] }\n classTreeKey=\"fire_annual\"\n territoryId={ territoryId }\n themeColor=\"#e74c3c\"\n />\n </section>\n <Grid container spacing={ 2 } alignItems=\"center\" className={ styles.sectionTitleGrid }>\n <Grid item xs={ 6 }>\n { renderSectionTitle('Irrigação', undefined, '#b731ce') }\n </Grid>\n <Grid item xs={ 6 }>\n <p className={ styles.sectionTitleBoxInfo }>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent scelerisque elementum turpis vitae condimentum. Proin venenatis metus dui, a tempus massa posuere sed.</p>\n </Grid>\n </Grid>\n <section className={ styles.moduleContentWrapper }>\n { renderTerritoryImage('irrigation_main', 2021, IRRIGATION_TREE_NODE_IDS) }\n <AnnualStatisticsContent\n activeYear={ [1985, 2021] }\n classTreeKey=\"irrigation_main\"\n territoryId={ territoryId }\n themeColor=\"#b731ce\"\n />\n </section>\n </div>\n </Paper>\n </div>\n <PageFooter/>\n </div>\n );\n}\n","import React from 'react';\n\nimport {\n BrowserRouter as Router,\n Route,\n Switch,\n} from 'react-router-dom';\n\nimport {\n Query\n} from 'react-apollo';\n\nimport {\n get,\n keys,\n map,\n concat,\n defaults,\n} from 'lodash';\n\nimport {\n GET_USER,\n GET_USER_ID,\n} from './queries';\n\nimport redirect from './redirect';\nimport AppContext from '../context/app-context';\n\nimport ConfirmationPage from '../../pages/ConfirmationPage';\nimport MapBiomasLandingPage from '../../pages/MapBiomasLandingPage';\nimport MapBiomasCreatePassword from '../../pages/MapBiomasCreatePassword';\nimport MapBiomasLogin from '../../pages/MapBiomasLogin';\nimport MapBiomasPasswordRecovery from '../../pages/MapBiomasPasswordRecovery';\nimport MapBiomasCreateAccount from '../../pages/MapbiomasCreateAccount';\nimport LoginToForum from '../../pages/LoginToForum';\nimport TerritoryDashboard from '../../pages/TerritoryDashboard';\n\nimport mapModuleToPathname from '../../data/mapModuleToPathname';\n\nconst modulesRoutes = map(keys(mapModuleToPathname), (pathname) => {\n return { path: pathname, component: MapBiomasLandingPage };\n});\n\nconst routes = {\n all: [\n { path: '/', component: MapBiomasLandingPage },\n { path: '/agua', component: MapBiomasLandingPage },\n { path: '/monitor-do-fogo', component: MapBiomasLandingPage },\n { path: '/pistas-de-pouso', component: MapBiomasLandingPage },\n { path: '/dinamica-dos-pivos', component: MapBiomasLandingPage },\n\n // Modules pathname routes\n ...modulesRoutes,\n\n { path: '/recuperar-senha', component: MapBiomasCreatePassword },\n { path: '/login', component: MapBiomasLogin },\n { path: '/esqueci-minha-senha', component: MapBiomasPasswordRecovery },\n { path: '/criar-minha-conta', component: MapBiomasCreateAccount },\n { path: '/confirmar-conta', component: ConfirmationPage },\n { path: '/dashboard-territorio', component: TerritoryDashboard },\n ],\n unauthenticated: [\n ],\n authenticated: [\n { path: '/discourse/sso', component: LoginToForum },\n ],\n};\n\nconst renderRoutes = ({ data, _loading }) => {\n let user = get(data, 'user', localStorage.getItem('token'));\n let routesToRender = user ? routes.authenticated : routes.unauthenticated;\n routesToRender = concat(routesToRender, routes.all);\n\n return (\n <Router>\n <AppContext.Provider value={ user }>\n <Switch>\n {\n map(routesToRender, (route, i) => {\n let routeProps = defaults({}, route, { key: i, exact: true });\n if (route.redirect) {\n routeProps.component = redirect(route.redirect);\n }\n\n return <Route { ...routeProps } />;\n })\n }\n </Switch>\n </AppContext.Provider>\n </Router>\n );\n};\n\nconst Routes = () => (\n <Query query={ GET_USER_ID }>\n { ({ data, _loading }) => {\n return (\n <Query query={ GET_USER } variables={{ id: get(data, 'currentUserId', 0) }}>\n { renderRoutes }\n </Query>\n );\n } }\n </Query>\n);\n\nexport default Routes;\n","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Paper from '@material-ui/core/Paper';\nimport TextField from '@material-ui/core/TextField';\n\nimport toast from '../../utils/toast';\nimport { request } from '../../utils/api';\n\nimport validatePassword from '../../helpers/validatePassword';\n\nimport useFormatMessage from '../../hooks/useFormatMessage';\n\nimport logo from './logo.svg';\n\nimport styles from './MapBiomasCreatePassword.module.scss';\nimport { Typography } from '@material-ui/core';\nimport { Link } from 'react-router-dom';\nimport FormFooter from '../MapBiomasLogin/components/FormFooter';\nimport PageFooter from '../MapBiomasLogin/components/PageFooter';\n\nexport default function MapBiomasCreatePassword() {\n let recoveryToken = null;\n\n const callbackUrl = new URL(window.location.href).searchParams.get('callback_url');\n const urlToken = new URL(window.location.href).searchParams.get('token')\n !!urlToken\n ? recoveryToken = urlToken\n : window.location.href = '/';\n\n const formatMessage = useFormatMessage();\n const [state, setState] = useState({\n password: '',\n passwordConfirmation: '',\n paramsToJSON: {},\n });\n const [windowHeight, setWindowHeight] = useState(window.innerHeight);\n\n function updateHeight() {\n setWindowHeight(window.innerHeight);\n }\n const debouncedUpdateHeight = _.debounce(updateHeight, 500);\n\n useEffect(() => {\n if(!!location.search.substring(1).includes('request_params')){\n let paramsToJSONCopy = JSON.parse('{\"' + decodeURI(location.search.substring(1)).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g,'\":\"') + '\"}')\n delete paramsToJSONCopy[\"token\"]\n setState({\n ...state,\n paramsToJSON:{\n ...paramsToJSONCopy\n }\n })\n }\n window.addEventListener('resize', debouncedUpdateHeight);\n\n return () => {\n window.removeEventListener('resize', debouncedUpdateHeight)\n };\n }, []);\n\n const handleTextChange = (paramKey, event) => {\n handleStateChange(paramKey, event.target.value);\n };\n\n const handleStateChange = (paramKey, paramValue) => {\n setState({\n ...state,\n [paramKey]: paramValue\n });\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const {\n password,\n passwordConfirmation\n } = state;\n const API_URL = process.env.REACT_APP_MAPBIOMAS_LOGIN_API_BASE_URL;\n\n if (!validatePassword(password, passwordConfirmation)) { return; }\n\n const payload = {\n token: urlToken,\n password,\n request_params: { ...state.paramsToJSON }\n };\n fetch(`${API_URL}/v1/users/password_recovery`, {\n method: 'POST',\n headers: {'Content-Type': 'application/json'},\n body: JSON.stringify(payload)\n })\n .then((response) => response.json())\n .then((data) => {\n\n if (data.user) {\n window.location.href = `/login?${new URLSearchParams(state.paramsToJSON).toString()}`;\n }else {\n toast(data.errors[0], 'error');\n }\n })\n .catch(() => {\n toast(formatMessage('mapbiomas.toast.error'), 'error');\n });\n };\n\n const handleConfirmPassword = () => {\n if(\n (state.password == '' || state.passwordConfirmation == '') ||\n (state.password !== state.passwordConfirmation)\n ){\n return true\n }\n\n return false\n }\n\n const isCreatePasswordButtonDisabled = handleConfirmPassword()\n\n return (\n <div className={ styles.wrapper } style={ { height: windowHeight } }>\n <div className={ styles.content }>\n <img src={ logo } className={ styles.logo } alt=\"Logo MapBiomas\" />\n <Paper className={ styles.box }>\n <div className={ styles.contentWrapper }>\n <h1 className={ styles.title }><FormattedMessage id=\"mapbiomas.user.password_create.title\" /></h1>\n <Typography className={ styles.subtitle }><FormattedMessage id=\"mapbiomas.user.password_create.subtitle\" /></Typography>\n <form onSubmit={ handleSubmit }>\n <FormControl className={ styles.formControl }>\n <TextField\n id=\"password-field\"\n label={ formatMessage('mapbiomas.user.password_create.fields.password') }\n variant=\"outlined\"\n type=\"password\"\n className={ styles.filterFormInput }\n value={ state.password }\n onChange={ handleTextChange.bind(this, 'password') }\n required\n />\n </FormControl>\n <FormControl className={ styles.formControl }>\n <TextField\n id=\"password-confirmation-field\"\n label={ formatMessage('mapbiomas.user.password_create.fields.password_confirmation') }\n variant=\"outlined\"\n type=\"password\"\n className={ styles.filterFormInput }\n value={ state.passwordConfirmation }\n onChange={ handleTextChange.bind(this, 'passwordConfirmation') }\n required\n />\n </FormControl>\n <div className={ styles.actionsWrapper }>\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n className={styles.button}\n disabled={isCreatePasswordButtonDisabled}\n >\n <FormattedMessage id=\"mapbiomas.user.password_create.buttons.confirm\" />\n </Button>\n </div>\n </form>\n <Typography className={styles.createAcountLegend}><FormattedMessage id=\"mapbiomas.user.password_create.helper_link.access_acount.label\" /></Typography>\n <Link className={ styles.helperLink } to={`/login?${new URLSearchParams(state.paramsToJSON).toString()}`}><FormattedMessage id=\"mapbiomas.user.password_create.helper_link.access_acount.title\" /></Link>\n </div>\n <FormFooter/>\n </Paper>\n </div>\n <PageFooter/>\n </div>\n );\n}\n","import toast from '../utils/toast';\n\nexport default function validatePassword(password, passwordConfirmation) {\n const specialCharacters = /[ `!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\n\n if (password.length < 8) {\n toast('A senha precisa de ao menos 8 caracteres', 'error');\n return false;\n }\n\n if (!password.match(specialCharacters)) {\n toast('A senha precisa conter pelo menos 1 caracter especial', 'error');\n return false;\n }\n\n if (!password.match(/[A-Z]/)) {\n toast('A senha precisa conter pelo menos 1 caracter maiúsculo', 'error');\n return false;\n }\n\n if (!password.match(/[a-z]/)) {\n toast('A senha precisa conter pelo menos 1 caracter minúsculo', 'error');\n return false;\n }\n\n if (!password.match(/\\d/)) {\n toast('A senha precisa conter pelo menos 1 número', 'error');\n return false;\n }\n\n if (password !== passwordConfirmation) {\n toast('As senhas precisam ser iguais', 'error');\n return false;\n }\n\n return true;\n}\n","import { useEffect } from 'react';\n\nimport { request } from '../../utils/api';\n\nexport default function ConfirmationPage() {\n let token = null;\n\n const urlToken = new URL(window.location.href).searchParams.get('token')\n !!urlToken\n ? token = urlToken\n : window.location.href = '/';\n\n useEffect(() => {\n const payload = { token: urlToken };\n\n request('/users/confirm_account', {\n method: 'POST',\n body: JSON.stringify(payload)\n })\n .then(() => {\n window.location.href = '/?confirmation=true';\n })\n .catch(() => {\n toast('Ocorreu um erro.', 'error');\n });\n }, [])\n\n return null;\n}\n","import React from 'react'\n\nimport {\n Redirect\n} from 'react-router-dom'\nimport _ from 'lodash'\n\nexport default (path, generateExtraProps = (_props) => ({})) => (\n (props) => {\n let redirectPath = path\n if (_.isFunction(path)) {\n redirectPath = path(props)\n }\n\n return <Redirect to={ redirectPath } { ...(generateExtraProps(props)) } />\n }\n)\n","export const primaryColor = '#16a085';\nexport const primaryColorLight = '#18af91';\nexport const primaryColorDark = '#14947b';\nexport const primaryColorContrastText = '#FFF';\n\nexport const secondaryColor = '#DCDCDC';\nexport const secondaryColorLight = '#E3E3E3';\nexport const secondaryColorDark = '#D4D4D4';\nexport const secondaryColorContrastText = '#555';\n\nexport const greys = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\n","import { createMuiTheme } from '@material-ui/core/styles';\n\nimport {\n greys,\n primaryColor,\n primaryColorLight,\n primaryColorDark,\n primaryColorContrastText,\n secondaryColor,\n secondaryColorLight,\n secondaryColorDark,\n secondaryColorContrastText\n} from './variables';\n\nexport default createMuiTheme({\n props: {\n MuiButtonBase: {\n disableRipple: true\n },\n MuiFormControl: {\n fullWidth: true\n },\n MuiInputLabel: {\n shrink: true\n },\n MuiInput: {\n disableUnderline: true\n },\n MuiSelect: {\n disableUnderline: true\n }\n },\n\n overrides: {\n MuiOutlinedInput: {\n input: {\n padding: '12px 14px'\n },\n notchedOutline: {\n borderColor: 'transparent !important',\n },\n },\n MuiAutocomplete: {\n root: {\n '&.autocomplete-light': {\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: 'rgba(255, 255, 255, 0.5) !important'\n },\n '& .MuiAutocomplete-inputRoot .MuiAutocomplete-input': {\n color: 'white'\n },\n '& .MuiInputLabel-shrink': {\n paddingLeft: 0,\n color: 'white',\n backgroundColor: '#404040'\n },\n '& .MuiIconButton-root': {\n color: 'white',\n }\n }\n },\n inputRoot: {\n padding: 0,\n },\n noOptions: {\n fontSize: 14\n },\n option: {\n fontSize: 14\n },\n popper: {\n zIndex: 9999\n },\n },\n MuiButton: {\n root: {\n fontWeight: 400,\n },\n contained: {\n paddingBottom: '5px',\n paddingTop: '5px',\n paddingLeft: '20px',\n paddingRight: '20px',\n boxShadow: 'none',\n\n '&:hover': {\n boxShadow: 'none'\n },\n '&:focus': {\n boxShadow: 'none'\n }\n },\n containedSizeLarge: {\n paddingBottom: '6px',\n paddingTop: '6px',\n paddingLeft: '25px',\n paddingRight: '25px'\n },\n containedSizeSmall: {\n paddingBottom: '4px',\n paddingTop: '4px',\n paddingLeft: '15px',\n paddingRight: '15px'\n },\n startIcon: {\n marginRight: '16px'\n },\n text: {\n padding: '6px 16px'\n }\n },\n MuiDialog: {\n root: {\n zIndex: '5000 !important'\n }\n },\n MuiPopover: {\n root: {\n zIndex: '5000 !important'\n }\n },\n MuiFab: {\n root: {\n boxShadow: 'none'\n }\n },\n MuiFormControl: {\n root: {\n '&.input-label-gray': {\n '& .MuiInputLabel-shrink': {\n backgroundColor: '#F7F7F7'\n },\n }\n }\n },\n MuiInputLabel: {\n root: {\n color: '#555',\n fontWeight: 400\n },\n shrink: {\n padding: '0 6px',\n backgroundColor: 'white'\n },\n outlined: {\n transform: 'translate(8px, -18px) scale(0.75) !important',\n background: 'transparent !important',\n color: '#8E8E8E !important',\n }\n },\n MuiInput: {\n root: {\n },\n formControl: {\n 'label + &': {\n marginTop: 20\n }\n }\n },\n MuiInputBase: {\n root: {\n background: '#F5F5F5'\n },\n input: {\n padding: 0,\n fontSize: 14\n }\n },\n MuiMenuItem: {\n root: {\n minHeight: 40,\n fontSize: 14\n }\n },\n MuiSelect: {\n select: {\n '&:focus': {\n backgroundColor: 'transparent'\n }\n }\n },\n MuiTooltip: {\n tooltip: {\n fontWeight: 400,\n backgroundColor: '#656565',\n },\n tooltipArrow: {\n color: '#656565',\n },\n popper: {\n zIndex: 9999\n }\n },\n MuiFormLabel: {\n root: {\n // marginLeft: 10\n },\n },\n MuiExpansionPanel: {\n root: {\n backgroundColor: '#F7F7F7',\n borderBottom: '1px solid rgba(0, 0, 0, 0.15)',\n boxShadow: 'none',\n '&:before': {\n display: 'none',\n },\n '&.Mui-expanded': {\n margin: '0',\n }\n }\n },\n MuiExpansionPanelSummary: {\n root: {\n padding: '0 12px',\n minHeight: 35,\n '&.Mui-expanded': {\n minHeight: 35,\n backgroundColor: '#F5F5F5'\n }\n },\n content: {\n '&.Mui-expanded': {\n margin: '12px 0',\n }\n },\n expandIcon: {\n padding: 4,\n '& svg': {\n fontSize: 24\n }\n }\n },\n MuiPaper: {\n elevation1: {\n boxShadow: '0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.12)',\n }\n },\n MuiSnackbar: {\n root: {\n zIndex: 9999\n }\n },\n MuiFormControlLabel: {\n root: {\n color: '#8E8E8E',\n },\n label: {\n fontWeight: 400\n }\n },\n },\n\n palette: {\n background: {\n default: greys[100]\n },\n grey: greys,\n primary: {\n dark: primaryColorDark,\n light: primaryColorLight,\n main: primaryColor,\n contrastText: primaryColorContrastText\n },\n secondary: {\n dark: secondaryColorDark,\n light: secondaryColorLight,\n main: secondaryColor,\n contrastText: secondaryColorContrastText\n },\n text: {\n primary: greys[800],\n secondary: greys[500]\n }\n },\n\n typography: {\n fontFamily: '\"Inter\", \"Open-Sans\", sans-serif'\n }\n});\n","import { gql } from 'graphql.macro';\n\nexport const GET_BASE_DATA = gql`\n {\n toast @client {\n content\n severity\n visible\n }\n }\n`;\n","import React from 'react';\nimport { useApolloClient, useQuery } from '@apollo/react-hooks';\n\nimport Alert from '@material-ui/lab/Alert';\nimport Fade from '@material-ui/core/Fade';\nimport Snackbar from '@material-ui/core/Snackbar';\n\nimport {\n GET_BASE_DATA\n} from './query';\n\nexport default function ToastContainer() {\n const client = useApolloClient();\n const { data: baseData } = useQuery(GET_BASE_DATA);\n\n if (!baseData) { return null; }\n\n const handleClose = () => {\n client.writeData({\n data: {\n toast: {\n __typename: 'ToastState',\n visible: false\n }\n }\n });\n };\n\n const { content, severity, visible } = baseData.toast;\n\n return (\n <Snackbar\n anchorOrigin={ {\n vertical: 'bottom',\n horizontal: 'center'\n } }\n open={ visible }\n autoHideDuration={ 5000 }\n onClose={ handleClose }\n TransitionComponent={ Fade }\n >\n <Alert\n elevation={ 1 }\n onClose={ handleClose }\n severity={ severity || 'info' }\n >\n { content }\n </Alert>\n </Snackbar>\n );\n}\n","import React from 'react';\n\nimport { ApolloProvider } from 'react-apollo';\nimport { IntlProvider } from 'react-intl';\nimport flatten from 'flat';\nimport { StylesProvider, ThemeProvider } from '@material-ui/core/styles';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\nimport numbro from 'numbro';\n\nimport localeMessages from '../../locale_messages.yml';\nimport client from '../apollo-client';\nimport Routes from '../Routes';\nimport theme from '../themes/main';\n\nimport ToastContainer from '../../components/ToastContainer';\n\nnumbro.registerLanguage({\n languageTag: 'pt-BR',\n delimiters: {\n thousands: '.',\n decimal: ','\n },\n abbreviations: {\n thousand: 'mil',\n million: 'milhões',\n billion: 'b',\n trillion: 't'\n },\n ordinal: () => 'º',\n currency: {\n symbol: 'R$ ',\n position: 'prefix'\n }\n})\n\nnumbro.setLanguage('pt-BR');\n\nnumbro.setDefaults({\n thousandSeparated: true,\n mantissa: 2\n})\n\nnumbro.zeroFormat(' - ');\n\nclass Root extends React.Component {\n render() {\n const locale = localStorage.getItem('locale') || 'es';\n\n return (\n <ApolloProvider client={ client }>\n <ThemeProvider theme={ theme }>\n <StylesProvider injectFirst>\n <MuiPickersUtilsProvider utils={ MomentUtils }>\n <IntlProvider key={ locale } locale={ locale } messages={ flatten(localeMessages[locale]) }>\n <Routes />\n <ToastContainer />\n </IntlProvider>\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ThemeProvider>\n </ApolloProvider>\n );\n }\n}\n\nexport default Root;\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport 'react-toastify/dist/ReactToastify.min.css'\n\nimport 'leaflet/dist/leaflet.css';\n\nimport Root from './core/Root'\nimport './index.css'\n\nimport '@formatjs/intl-pluralrules/polyfill'\nimport '@formatjs/intl-pluralrules/dist/locale-data/pt'\nimport '@formatjs/intl-pluralrules/dist/locale-data/en'\nimport '@formatjs/intl-relativetimeformat/polyfill'\nimport '@formatjs/intl-relativetimeformat/dist/locale-data/pt'\nimport '@formatjs/intl-relativetimeformat/dist/locale-data/en'\n\nReactDOM.render(<Root />, document.getElementById('root'))\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"ClassesControl_wrapper__4X943\",\"title\":\"ClassesControl_title__2lmgl\",\"info\":\"ClassesControl_info__1hEr8\",\"label\":\"ClassesControl_label__3hZ5E\",\"toggleButtons\":\"ClassesControl_toggleButtons__Fej-_\",\"levelControls\":\"ClassesControl_levelControls__1ubck\",\"checkboxRoot\":\"ClassesControl_checkboxRoot__1bIqX\",\"checkboxLabel\":\"ClassesControl_checkboxLabel__2ce1_\",\"actionButton\":\"ClassesControl_actionButton__3Z0hM\",\"descriptionText\":\"ClassesControl_descriptionText__3AQmH\",\"disabledButton\":\"ClassesControl_disabledButton__1fs-j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"CoordinatesBox_wrapper__2wBd1\",\"wrapperWithoutHeader\":\"CoordinatesBox_wrapperWithoutHeader__2f550\",\"wrapperWithBeforeAndAfterMosaic\":\"CoordinatesBox_wrapperWithBeforeAndAfterMosaic__3vAtW\",\"controlWrapper\":\"CoordinatesBox_controlWrapper__1YdxY\",\"searchButton\":\"CoordinatesBox_searchButton__35CnU\",\"title\":\"CoordinatesBox_title__3qp_J\",\"formWrapper\":\"CoordinatesBox_formWrapper__19YkW\",\"textInfo\":\"CoordinatesBox_textInfo__3iVGm\",\"formControl\":\"CoordinatesBox_formControl__ClNMW\",\"searchIconButton\":\"CoordinatesBox_searchIconButton__P6KMH\",\"infoIcon\":\"CoordinatesBox_infoIcon__3v0Xn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"StatisticsDataTableBox_wrapper__3gmaA\",\"header\":\"StatisticsDataTableBox_header__dEJtq\",\"title\":\"StatisticsDataTableBox_title__btjJt\",\"closeButton\":\"StatisticsDataTableBox_closeButton__2C3C7\",\"closeButtonCollapse\":\"StatisticsDataTableBox_closeButtonCollapse__1R8jR\",\"collapseWrapper\":\"StatisticsDataTableBox_collapseWrapper__2m_i-\",\"content\":\"StatisticsDataTableBox_content__32F6f\",\"dataTableWrapper\":\"StatisticsDataTableBox_dataTableWrapper__2ddGn\",\"tableHeader\":\"StatisticsDataTableBox_tableHeader__32aIl\",\"tableTitle\":\"StatisticsDataTableBox_tableTitle__2m9Nd\",\"csvDownloadLink\":\"StatisticsDataTableBox_csvDownloadLink__2pLbL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"DashboardDialog_wrapper__1S_fw\",\"wrapperWithHeader\":\"DashboardDialog_wrapperWithHeader__3wLws\",\"wrapperIsCollapsed\":\"DashboardDialog_wrapperIsCollapsed__2qPMg\",\"header\":\"DashboardDialog_header__2Da0s\",\"title\":\"DashboardDialog_title__1EPsa\",\"toggleButton\":\"DashboardDialog_toggleButton__2l4NO\",\"toggleButtonIsCollapsed\":\"DashboardDialog_toggleButtonIsCollapsed__3ZUKx\",\"closeButton\":\"DashboardDialog_closeButton__1gW8d\",\"content\":\"DashboardDialog_content__17dqb\",\"chartsWrapper\":\"DashboardDialog_chartsWrapper__1lgSx\",\"dataTableWrapper\":\"DashboardDialog_dataTableWrapper__1Zegm\",\"tableHeader\":\"DashboardDialog_tableHeader__3btOs\",\"tableTitle\":\"DashboardDialog_tableTitle__3oS-0\",\"tableWrapper\":\"DashboardDialog_tableWrapper__2mii3\",\"table\":\"DashboardDialog_table__c8_ec\",\"loadingWrapper\":\"DashboardDialog_loadingWrapper__170cT\",\"smallText\":\"DashboardDialog_smallText__2k6Zj\",\"alertInfo\":\"DashboardDialog_alertInfo__3kqx9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"classList\":\"NaturalOrAnthropicLegendList_classList__2BiP5\",\"classListLevel2\":\"NaturalOrAnthropicLegendList_classListLevel2__N-geg\",\"classListItemBase\":\"NaturalOrAnthropicLegendList_classListItemBase__1vUQM\",\"classListLevel3\":\"NaturalOrAnthropicLegendList_classListLevel3__11j_1\",\"classListItemHeader\":\"NaturalOrAnthropicLegendList_classListItemHeader__ffC8T\",\"classListItemCheckControl\":\"NaturalOrAnthropicLegendList_classListItemCheckControl__17TpV\",\"classListItemTitle\":\"NaturalOrAnthropicLegendList_classListItemTitle__3HMQj\",\"classListItemContentControl\":\"NaturalOrAnthropicLegendList_classListItemContentControl__5tWKM\",\"classListItemInfoControl\":\"NaturalOrAnthropicLegendList_classListItemInfoControl__3fTZB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"classListItemBase\":\"ClassLegendList_classListItemBase__1qHxS\",\"classListItemHeader\":\"ClassLegendList_classListItemHeader__BS1VC\",\"classListItemCheckControl\":\"ClassLegendList_classListItemCheckControl__3fD2b\",\"classListItemTitle\":\"ClassLegendList_classListItemTitle__x3Hdd\",\"classListItemContentControl\":\"ClassLegendList_classListItemContentControl__3mZBI\",\"classListItemInfoControl\":\"ClassLegendList_classListItemInfoControl__2GxJL\",\"classNode\":\"ClassLegendList_classNode__1gMyE\",\"classChildNode\":\"ClassLegendList_classChildNode__N8RPi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"titleWrapper\":\"AccountMenu_titleWrapper__1_H52\",\"title\":\"AccountMenu_title__1C6sm\",\"wrapper\":\"AccountMenu_wrapper__3FzZR\",\"isVisible\":\"AccountMenu_isVisible__1lFRJ\",\"toggleButton\":\"AccountMenu_toggleButton__2Lbl6\",\"header\":\"AccountMenu_header__2-y3L\",\"myMapsContentWrapper\":\"AccountMenu_myMapsContentWrapper__F2rSU\",\"translation\":\"AccountMenu_translation__1_dit\",\"subtitle\":\"AccountMenu_subtitle__1f0aa\",\"content\":\"AccountMenu_content__1wUmU\",\"infoText\":\"AccountMenu_infoText__2yOQj\",\"navList\":\"AccountMenu_navList__1fys6\",\"userInfo\":\"AccountMenu_userInfo__2h9cc\",\"hideMenuButton\":\"AccountMenu_hideMenuButton__c7NH4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"ClassLegendDialog_wrapper__UX17J\",\"wrapperWithHeader\":\"ClassLegendDialog_wrapperWithHeader__3Kwek\",\"header\":\"ClassLegendDialog_header__27nTB\",\"title\":\"ClassLegendDialog_title__azrb5\",\"closeButton\":\"ClassLegendDialog_closeButton__tAA3m\",\"content\":\"ClassLegendDialog_content__2AuRd\",\"contentDescription\":\"ClassLegendDialog_contentDescription__2axeV\",\"imageList\":\"ClassLegendDialog_imageList__eNkMt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"DashboardDialogQualityContent_content__qWcEr\",\"chartsWrapper\":\"DashboardDialogQualityContent_chartsWrapper__3RDTm\",\"dataTableWrapper\":\"DashboardDialogQualityContent_dataTableWrapper__3ZJ5r\",\"tableHeader\":\"DashboardDialogQualityContent_tableHeader__2OEaI\",\"tableTitle\":\"DashboardDialogQualityContent_tableTitle__37ImO\",\"tableWrapper\":\"DashboardDialogQualityContent_tableWrapper__3TlNm\",\"table\":\"DashboardDialogQualityContent_table__2tnoS\",\"loadingWrapper\":\"DashboardDialogQualityContent_loadingWrapper__1BAJT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"DashboardDialogGenericClassesContent_content__nqZ0r\",\"chartsWrapper\":\"DashboardDialogGenericClassesContent_chartsWrapper__2Jg-2\",\"dataTableWrapper\":\"DashboardDialogGenericClassesContent_dataTableWrapper__1ZwLe\",\"tableHeader\":\"DashboardDialogGenericClassesContent_tableHeader__2b1Wm\",\"tableTitle\":\"DashboardDialogGenericClassesContent_tableTitle__3y-n7\",\"tableWrapper\":\"DashboardDialogGenericClassesContent_tableWrapper__1fiix\",\"table\":\"DashboardDialogGenericClassesContent_table__BLGOQ\",\"loadingWrapper\":\"DashboardDialogGenericClassesContent_loadingWrapper__3HHAe\",\"csvDownloadLink\":\"DashboardDialogGenericClassesContent_csvDownloadLink__2_gUh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navList\":\"TabList_navList__2rloQ\",\"navListSmall\":\"TabList_navListSmall__2AJut\",\"navListItem\":\"TabList_navListItem__1Scvk\",\"navListFullWidth\":\"TabList_navListFullWidth__8r1CO\",\"disabledItem\":\"TabList_disabledItem__36NPB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"TransitionClasses_title__3dBRZ\",\"classList\":\"TransitionClasses_classList__2qIA_\",\"classListLevel2\":\"TransitionClasses_classListLevel2__31-mL\",\"classListItemBase\":\"TransitionClasses_classListItemBase__tnZW7\",\"classListLevel3\":\"TransitionClasses_classListLevel3__1Shzz\",\"classListLevel4\":\"TransitionClasses_classListLevel4__3HYgk\",\"classListItemHeader\":\"TransitionClasses_classListItemHeader__3vdpK\",\"classListItemCheckControl\":\"TransitionClasses_classListItemCheckControl__3BBMs\",\"classListItemTitle\":\"TransitionClasses_classListItemTitle__298nL\",\"classListItemContentControl\":\"TransitionClasses_classListItemContentControl__tz3TU\",\"classListItemInfoControl\":\"TransitionClasses_classListItemInfoControl__1jWEb\",\"checkboxLabel\":\"TransitionClasses_checkboxLabel__3xZs-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"PastureQualityCoverageClasses_title__2vCtz\",\"classList\":\"PastureQualityCoverageClasses_classList__1elIe\",\"classListLevel2\":\"PastureQualityCoverageClasses_classListLevel2__283IQ\",\"classListItemBase\":\"PastureQualityCoverageClasses_classListItemBase__1z0KO\",\"classListLevel3\":\"PastureQualityCoverageClasses_classListLevel3__2OzVJ\",\"classListLevel4\":\"PastureQualityCoverageClasses_classListLevel4__3Iz_y\",\"classListItemHeader\":\"PastureQualityCoverageClasses_classListItemHeader__1ehkB\",\"classListItemCheckControl\":\"PastureQualityCoverageClasses_classListItemCheckControl__2HBFa\",\"classListItemTitle\":\"PastureQualityCoverageClasses_classListItemTitle__3ypf6\",\"classListItemContentControl\":\"PastureQualityCoverageClasses_classListItemContentControl__3ufSZ\",\"classListItemInfoControl\":\"PastureQualityCoverageClasses_classListItemInfoControl__1_gnH\",\"checkboxLabel\":\"PastureQualityCoverageClasses_checkboxLabel__260Cd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"MapForm_title__1Lk2A\",\"formWrapper\":\"MapForm_formWrapper__Q70Ao\",\"textInfo\":\"MapForm_textInfo__3UedW\",\"formControl\":\"MapForm_formControl__C_bb5\",\"actionsWrapper\":\"MapForm_actionsWrapper__1MRhL\",\"checkboxRoot\":\"MapForm_checkboxRoot__2Wc1g\",\"checkboxLabel\":\"MapForm_checkboxLabel__3Trwg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dialogWrapper\":\"WarningNoteDialog_dialogWrapper__2XnOR\",\"header\":\"WarningNoteDialog_header__nqPh0\",\"title\":\"WarningNoteDialog_title__1isuU\",\"closeButton\":\"WarningNoteDialog_closeButton__3On_I\",\"content\":\"WarningNoteDialog_content__-r0TE\",\"contentDescription\":\"WarningNoteDialog_contentDescription__2DU6n\",\"actions\":\"WarningNoteDialog_actions__1_o7p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"DashboardDialogCoverageClassesContent_content__zWh7E\",\"chartsWrapper\":\"DashboardDialogCoverageClassesContent_chartsWrapper__FAZSM\",\"dataTableWrapper\":\"DashboardDialogCoverageClassesContent_dataTableWrapper__1zoVD\",\"tableHeader\":\"DashboardDialogCoverageClassesContent_tableHeader__3u7k0\",\"tableTitle\":\"DashboardDialogCoverageClassesContent_tableTitle__7vj7X\",\"tableWrapper\":\"DashboardDialogCoverageClassesContent_tableWrapper__1WBsD\",\"table\":\"DashboardDialogCoverageClassesContent_table__11ma4\",\"loadingWrapper\":\"DashboardDialogCoverageClassesContent_loadingWrapper__1R8rT\",\"csvDownloadLink\":\"DashboardDialogCoverageClassesContent_csvDownloadLink__13kax\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"DashboardDialogCoverageNaturalOrAnthropicContent_content__2dMbX\",\"chartsWrapper\":\"DashboardDialogCoverageNaturalOrAnthropicContent_chartsWrapper__3aHpH\",\"dataTableWrapper\":\"DashboardDialogCoverageNaturalOrAnthropicContent_dataTableWrapper__2deoN\",\"tableHeader\":\"DashboardDialogCoverageNaturalOrAnthropicContent_tableHeader__3zIhj\",\"tableTitle\":\"DashboardDialogCoverageNaturalOrAnthropicContent_tableTitle__3OGed\",\"tableWrapper\":\"DashboardDialogCoverageNaturalOrAnthropicContent_tableWrapper__BCYJ-\",\"table\":\"DashboardDialogCoverageNaturalOrAnthropicContent_table__2cR0U\",\"loadingWrapper\":\"DashboardDialogCoverageNaturalOrAnthropicContent_loadingWrapper__zy-Iw\",\"csvDownloadLink\":\"DashboardDialogCoverageNaturalOrAnthropicContent_csvDownloadLink__1mYRU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"DashboardDialogPastureQualityContent_content__14-IA\",\"chartsWrapper\":\"DashboardDialogPastureQualityContent_chartsWrapper__qbM_5\",\"dataTableWrapper\":\"DashboardDialogPastureQualityContent_dataTableWrapper__iSZlM\",\"tableHeader\":\"DashboardDialogPastureQualityContent_tableHeader__1rcIf\",\"tableTitle\":\"DashboardDialogPastureQualityContent_tableTitle__1m24E\",\"tableWrapper\":\"DashboardDialogPastureQualityContent_tableWrapper__4CK__\",\"table\":\"DashboardDialogPastureQualityContent_table__33Pe-\",\"loadingWrapper\":\"DashboardDialogPastureQualityContent_loadingWrapper__3jssV\",\"csvDownloadLink\":\"DashboardDialogPastureQualityContent_csvDownloadLink__3eBzV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mapWrapper\":\"MapCanvas_mapWrapper__2LD9g\",\"mapWrapperWithHeader\":\"MapCanvas_mapWrapperWithHeader__2kFj8\",\"mapSearchButton\":\"MapCanvas_mapSearchButton__1xXmk\",\"mapWrapperOnPointSearchMode\":\"MapCanvas_mapWrapperOnPointSearchMode__fHoB-\",\"mapActionButton\":\"MapCanvas_mapActionButton__oC75T\",\"tutorialButton\":\"MapCanvas_tutorialButton__2tmhx\",\"mapGeographicalReliefButton\":\"MapCanvas_mapGeographicalReliefButton__3gpmJ\",\"loadingWrapper\":\"MapCanvas_loadingWrapper__4TvGH\",\"opacityBox\":\"MapCanvas_opacityBox__15fVb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"YearTimelineMultiple_wrapper__2F2cS\",\"wrapperWithHeader\":\"YearTimelineMultiple_wrapperWithHeader__18c2G\",\"sliderWrapper\":\"YearTimelineMultiple_sliderWrapper__APNNB\",\"timelineMark\":\"YearTimelineMultiple_timelineMark__24jcs\",\"headerInfo\":\"YearTimelineMultiple_headerInfo__2xCBc\",\"headerInfoLabel\":\"YearTimelineMultiple_headerInfoLabel__3c2GL\",\"headerInfoValue\":\"YearTimelineMultiple_headerInfoValue__3gC-s\",\"headerInfoToggleButton\":\"YearTimelineMultiple_headerInfoToggleButton__C0PE7\",\"timelineInfo\":\"YearTimelineMultiple_timelineInfo__3xF_j\",\"valueText\":\"YearTimelineMultiple_valueText__2BD0l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MinimalBarData_wrapper__2bIMu\",\"bar\":\"MinimalBarData_bar__1I6VI\",\"backgroundBar\":\"MinimalBarData_backgroundBar__2ls0D\",\"mainBar\":\"MinimalBarData_mainBar__278wf\",\"info\":\"MinimalBarData_info__1OZwo\",\"infoLabel\":\"MinimalBarData_infoLabel__1uKMr\",\"infoValue\":\"MinimalBarData_infoValue__2IPhf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formWrapper\":\"PasswordRecoveryForm_formWrapper__2gMvT\",\"title\":\"PasswordRecoveryForm_title__ol0AM\",\"textInfo\":\"PasswordRecoveryForm_textInfo__25ute\",\"formControl\":\"PasswordRecoveryForm_formControl__WU0Eh\",\"actionsWrapper\":\"PasswordRecoveryForm_actionsWrapper__22Qo1\",\"helperLink\":\"PasswordRecoveryForm_helperLink__367p2\",\"successText\":\"PasswordRecoveryForm_successText__1otci\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"ShareBox_title__WiPG3\",\"boxWrapper\":\"ShareBox_boxWrapper__3TyNt\",\"textInfo\":\"ShareBox_textInfo__3FgL6\",\"formControl\":\"ShareBox_formControl__2hn95\",\"searchIconButton\":\"ShareBox_searchIconButton__29YgR\",\"socialList\":\"ShareBox_socialList__28h88\",\"socialItem\":\"ShareBox_socialItem__6JBJR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"TerritoryDashboard_wrapper__BEtBZ\",\"content\":\"TerritoryDashboard_content__1-DD3\",\"logo\":\"TerritoryDashboard_logo__yQRGp\",\"contentBox\":\"TerritoryDashboard_contentBox__K9_MO\",\"formBox\":\"TerritoryDashboard_formBox__2Hjf0\",\"contentWrapper\":\"TerritoryDashboard_contentWrapper__3SkZl\",\"contentTitleWrapper\":\"TerritoryDashboard_contentTitleWrapper__1c-6S\",\"contentTitle\":\"TerritoryDashboard_contentTitle__k1mBi\",\"imageBox\":\"TerritoryDashboard_imageBox__9CM5o\",\"moduleContentWrapper\":\"TerritoryDashboard_moduleContentWrapper__3oze5\",\"sectionTitleGrid\":\"TerritoryDashboard_sectionTitleGrid__RpFIa\",\"sectionTitleBox\":\"TerritoryDashboard_sectionTitleBox__1I7ux\",\"sectionTitleBoxTitle\":\"TerritoryDashboard_sectionTitleBoxTitle__-cWzy\",\"sectionTitleBoxSubtitle\":\"TerritoryDashboard_sectionTitleBoxSubtitle__2-yCx\",\"sectionTitleBoxInfo\":\"TerritoryDashboard_sectionTitleBoxInfo__3CRIo\",\"triangleArrow\":\"TerritoryDashboard_triangleArrow__11jfJ\",\"yearTitle\":\"TerritoryDashboard_yearTitle__2ZHrs\",\"yearBlockImage\":\"TerritoryDashboard_yearBlockImage__1zijy\",\"title\":\"TerritoryDashboard_title__LFE62\",\"subtitle\":\"TerritoryDashboard_subtitle__3WhyQ\",\"formControl\":\"TerritoryDashboard_formControl__1razK\",\"actionsWrapper\":\"TerritoryDashboard_actionsWrapper__39uWc\",\"footer\":\"TerritoryDashboard_footer__yao2f\",\"copyText\":\"TerritoryDashboard_copyText__2vYdg\",\"button\":\"TerritoryDashboard_button__UoIiE\",\"section\":\"TerritoryDashboard_section__1GwoO\",\"secondaryTitle\":\"TerritoryDashboard_secondaryTitle__21EJH\",\"secondaryTitleExtraInfo\":\"TerritoryDashboard_secondaryTitleExtraInfo__2YOl5\",\"progressWrapper\":\"TerritoryDashboard_progressWrapper__3E-NP\",\"actionWrapper\":\"TerritoryDashboard_actionWrapper__13QUZ\",\"actionButton\":\"TerritoryDashboard_actionButton__2m8gm\",\"infoBox\":\"TerritoryDashboard_infoBox__2RQOW\",\"modulesBlock\":\"TerritoryDashboard_modulesBlock__D9fsW\",\"moduleBlock\":\"TerritoryDashboard_moduleBlock__2RfVO\",\"moduleBlockIcon\":\"TerritoryDashboard_moduleBlockIcon__cMej7\",\"moduleBlockTitle\":\"TerritoryDashboard_moduleBlockTitle__l3QIU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formWrapper\":\"LoginForm_formWrapper__OLIBc\",\"textInfo\":\"LoginForm_textInfo__2FuLh\",\"formControl\":\"LoginForm_formControl__3VJs8\",\"actionsWrapper\":\"LoginForm_actionsWrapper__2SJUJ\",\"helperLink\":\"LoginForm_helperLink__2mJTf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dialogWrapper\":\"MapEditDialog_dialogWrapper__KUWAP\",\"header\":\"MapEditDialog_header__3GwnH\",\"title\":\"MapEditDialog_title__3vwZC\",\"closeButton\":\"MapEditDialog_closeButton__3uw4U\",\"content\":\"MapEditDialog_content__3yTL_\",\"contentDescription\":\"MapEditDialog_contentDescription__1eDKV\",\"actions\":\"MapEditDialog_actions__LQWmm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Footer_wrapper__3xouO\",\"versionText\":\"Footer_versionText__2JHZr\",\"copyText\":\"Footer_copyText__IoOT4\",\"alertText\":\"Footer_alertText__33vwr\",\"ecostageImage\":\"Footer_ecostageImage__2_p4l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tableWrapper\":\"StickyTable_tableWrapper__uzpqT\",\"categoriesTitle\":\"StickyTable_categoriesTitle__36aMz\",\"tableCategoriesList\":\"StickyTable_tableCategoriesList__3GJIc\",\"table\":\"StickyTable_table__3UD2t\",\"categoryCell\":\"StickyTable_categoryCell__2et1O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentWrapper\":\"SankeyChartControl_contentWrapper__pX1PA\",\"sankeyWrapper\":\"SankeyChartControl_sankeyWrapper__2MaXr\",\"sankeyYears\":\"SankeyChartControl_sankeyYears__PM1JF\",\"autocompleteFormControl\":\"SankeyChartControl_autocompleteFormControl__27IHs\",\"downloadButton\":\"SankeyChartControl_downloadButton__3BXCA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MapboxControl_wrapper__176iZ\",\"wrapperHeader\":\"MapboxControl_wrapperHeader__37fUj\",\"controlWrapper\":\"MapboxControl_controlWrapper__2pvMD\",\"searchButton\":\"MapboxControl_searchButton__7T9k0\",\"title\":\"MapboxControl_title__ZPr38\",\"formWrapper\":\"MapboxControl_formWrapper__3Lf2q\",\"textInfo\":\"MapboxControl_textInfo__11CTa\",\"formControl\":\"MapboxControl_formControl__29F67\",\"searchIconButton\":\"MapboxControl_searchIconButton__1Q29S\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"YearTimeline_wrapper__18l33\",\"wrapperWithHeader\":\"YearTimeline_wrapperWithHeader__1R49Z\",\"sliderWrapper\":\"YearTimeline_sliderWrapper__23thR\",\"timelineMark\":\"YearTimeline_timelineMark__3ofMN\",\"headerInfo\":\"YearTimeline_headerInfo__2PXu_\",\"headerInfoLabel\":\"YearTimeline_headerInfoLabel__37jPy\",\"headerInfoValue\":\"YearTimeline_headerInfoValue__35cuN\",\"headerInfoToggleButton\":\"YearTimeline_headerInfoToggleButton__1FLTX\",\"timelineInfo\":\"YearTimeline_timelineInfo__249ez\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"ShareControl_wrapper__vZQHo\",\"wrapperHeader\":\"ShareControl_wrapperHeader__1_znC\",\"controlWrapper\":\"ShareControl_controlWrapper__3JuA7\",\"searchButton\":\"ShareControl_searchButton__P3uKz\",\"title\":\"ShareControl_title__1m_gh\",\"formWrapper\":\"ShareControl_formWrapper__2V_gZ\",\"textInfo\":\"ShareControl_textInfo__3ojx6\",\"formControl\":\"ShareControl_formControl__2RWmT\",\"searchIconButton\":\"ShareControl_searchIconButton__3zU-V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"PageFooter_wrapper__3X6EO\",\"versionText\":\"PageFooter_versionText__oqXsU\",\"copyText\":\"PageFooter_copyText__3PnkL\",\"alertText\":\"PageFooter_alertText__10g-N\",\"ecostageImage\":\"PageFooter_ecostageImage__19Zcu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"list\":\"ActiveOptionsList_list__2wFV_\",\"listItem\":\"ActiveOptionsList_listItem__1rcNQ\",\"listItemText\":\"ActiveOptionsList_listItemText__vbq6W\",\"listItemRemoveButton\":\"ActiveOptionsList_listItemRemoveButton__1RfQH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"boxWrapper\":\"TranslateOptionsBox_boxWrapper__1ShrY\",\"button\":\"TranslateOptionsBox_button__21_Bz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"CoordinatesInfo_wrapper__3JFHO\",\"wrapperWithoutHeader\":\"CoordinatesInfo_wrapperWithoutHeader__IYQtW\",\"controlWrapper\":\"CoordinatesInfo_controlWrapper__RBEi6\",\"mouseCoordinatesInfo\":\"CoordinatesInfo_mouseCoordinatesInfo__uZALW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MapControls_wrapper__19yyu\",\"baseMapsItemWrapper\":\"MapControls_baseMapsItemWrapper__-sfxq\",\"baseMapsContentWrapper\":\"MapControls_baseMapsContentWrapper__1DHH8\",\"wrapperWithoutHeader\":\"MapControls_wrapperWithoutHeader__1szev\",\"wrapperWithBeforeAndAfterMosaic\":\"MapControls_wrapperWithBeforeAndAfterMosaic__3DQgB\",\"actionBox\":\"MapControls_actionBox__2hCcq\",\"actionBoxContent\":\"MapControls_actionBoxContent__3nUz4\",\"actionBoxContentOpacity\":\"MapControls_actionBoxContentOpacity__12buy\",\"actionButton\":\"MapControls_actionButton__3KZ41\",\"actionButtonDisabled\":\"MapControls_actionButtonDisabled__1aTbP\",\"switchControl\":\"MapControls_switchControl__FBSys\",\"radioGroupControl\":\"MapControls_radioGroupControl__1O4ce\",\"switchLabel\":\"MapControls_switchLabel__1yB2U\",\"radioGroupLabel\":\"MapControls_radioGroupLabel__3zcZs\",\"radioGroupInput\":\"MapControls_radioGroupInput__20zwy\",\"actionBoxContentScrollWrapper\":\"MapControls_actionBoxContentScrollWrapper__2c2IC\",\"actionBoxItemWrapper\":\"MapControls_actionBoxItemWrapper__-XhDL\",\"actionBoxItemHeader\":\"MapControls_actionBoxItemHeader__3ngvg\",\"actionBoxItemControl\":\"MapControls_actionBoxItemControl__2rC_9\",\"actionBoxControlButton\":\"MapControls_actionBoxControlButton__3UIMD\",\"actionBoxControlButtonToggle\":\"MapControls_actionBoxControlButtonToggle__3dKaT\",\"actionBoxItemLegend\":\"MapControls_actionBoxItemLegend__1K30g\"};","module.exports = __webpack_public_path__ + \"static/media/logo.b3a100e6.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"QualityClasses_title__2uKtU\",\"text\":\"QualityClasses_text__3RT4h\",\"legendGradient\":\"QualityClasses_legendGradient__wzR2p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"InstitutionalMenu_title__3Gx6v\",\"navListWrapper\":\"InstitutionalMenu_navListWrapper__3EKN4\",\"navList\":\"InstitutionalMenu_navList__3-VpA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pageWrapper\":\"BasePage_pageWrapper__616cZ\",\"contentWrapper\":\"BasePage_contentWrapper__1v1xU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"FormFooter_wrapper__VUzlm\",\"helperLink\":\"FormFooter_helperLink__DMiNk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MapbiomasCreateAccount_wrapper__T1zJA\",\"content\":\"MapbiomasCreateAccount_content__zyNUn\",\"logo\":\"MapbiomasCreateAccount_logo__37YTF\",\"box\":\"MapbiomasCreateAccount_box__3gqjf\",\"form\":\"MapbiomasCreateAccount_form__BBx4d\",\"MuiInputBase-root\":\"MapbiomasCreateAccount_MuiInputBase-root__2rCR6\",\"contentWrapper\":\"MapbiomasCreateAccount_contentWrapper__1W9ge\",\"title\":\"MapbiomasCreateAccount_title__3pByc\",\"subtitle\":\"MapbiomasCreateAccount_subtitle__d-rXG\",\"formControl\":\"MapbiomasCreateAccount_formControl__-03up\",\"mb\":\"MapbiomasCreateAccount_mb__2Es1d\",\"button\":\"MapbiomasCreateAccount_button__3YAXh\",\"createAcountLegend\":\"MapbiomasCreateAccount_createAcountLegend__13Wto\",\"actionsWrapper\":\"MapbiomasCreateAccount_actionsWrapper__16Waz\",\"helperLink\":\"MapbiomasCreateAccount_helperLink__1iM0V\",\"textArea\":\"MapbiomasCreateAccount_textArea__3tYaN\",\"privacyLink\":\"MapbiomasCreateAccount_privacyLink__1vwOJ\",\"privacyCheck\":\"MapbiomasCreateAccount_privacyCheck__2Bh_t\",\"privacyLabel\":\"MapbiomasCreateAccount_privacyLabel__1KTKQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"DashboardDialogTransitionContent_content__27Owu\",\"radioGroup\":\"DashboardDialogTransitionContent_radioGroup__1URZE\",\"radioLabel\":\"DashboardDialogTransitionContent_radioLabel__1BGSy\",\"radioGroupInput\":\"DashboardDialogTransitionContent_radioGroupInput__rHuYy\",\"tabListWrapper\":\"DashboardDialogTransitionContent_tabListWrapper__2wffs\",\"sankeyWrapper\":\"DashboardDialogTransitionContent_sankeyWrapper__3tssd\",\"sankeyYears\":\"DashboardDialogTransitionContent_sankeyYears__3x5O8\",\"loadingWrapper\":\"DashboardDialogTransitionContent_loadingWrapper__2iMC4\",\"categoryCell\":\"DashboardDialogTransitionContent_categoryCell__3uuJE\",\"tableContainer\":\"DashboardDialogTransitionContent_tableContainer__3QTdm\",\"matrixTable\":\"DashboardDialogTransitionContent_matrixTable__3kAHp\",\"tableWrapper\":\"DashboardDialogTransitionContent_tableWrapper__vqAtI\",\"tableLeftTag\":\"DashboardDialogTransitionContent_tableLeftTag__3ETu4\",\"tableTopTag\":\"DashboardDialogTransitionContent_tableTopTag__3qP67\",\"tableCategoriesList\":\"DashboardDialogTransitionContent_tableCategoriesList__35zP8\",\"tableHeader\":\"DashboardDialogTransitionContent_tableHeader__OKYbY\",\"tableTitle\":\"DashboardDialogTransitionContent_tableTitle__382Gq\",\"csvDownloadLink\":\"DashboardDialogTransitionContent_csvDownloadLink__rNDby\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"BaseForm_wrapper__3eOYV\",\"wrapperInline\":\"BaseForm_wrapperInline__2IdWk\",\"formControl\":\"BaseForm_formControl__3Kiop\",\"radioGroup\":\"BaseForm_radioGroup__2O0_O\",\"radioLabel\":\"BaseForm_radioLabel__3qMZO\",\"radioInput\":\"BaseForm_radioInput__1Pne0\",\"checkboxRoot\":\"BaseForm_checkboxRoot__3APgB\",\"checkboxControl\":\"BaseForm_checkboxControl__2ggWh\",\"checkboxLabel\":\"BaseForm_checkboxLabel__Xdn7x\",\"tooltipWrapper\":\"BaseForm_tooltipWrapper__16SVX\",\"yearRangeFormControl\":\"BaseForm_yearRangeFormControl__2ILjP\",\"groupList\":\"BaseForm_groupList__2Ld9y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"CARBox_wrapper__3oKkG\",\"wrapperWithoutHeader\":\"CARBox_wrapperWithoutHeader__1mvAR\",\"wrapperWithBeforeAndAfterMosaic\":\"CARBox_wrapperWithBeforeAndAfterMosaic__1TSCM\",\"controlWrapper\":\"CARBox_controlWrapper__2tnpb\",\"searchButton\":\"CARBox_searchButton__aXfe6\",\"title\":\"CARBox_title__1hXRZ\",\"formWrapper\":\"CARBox_formWrapper__17W7I\",\"textInfo\":\"CARBox_textInfo__3S75g\",\"formControl\":\"CARBox_formControl__WNcn2\",\"searchIconButton\":\"CARBox_searchIconButton__2McjE\",\"infoIcon\":\"CARBox_infoIcon__2i4w6\",\"loadingProgressWrapper\":\"CARBox_loadingProgressWrapper__3BEU7\",\"carInfoWrapper\":\"CARBox_carInfoWrapper__16fCz\",\"carInfoWrapperWithoutHeader\":\"CARBox_carInfoWrapperWithoutHeader__RLNuJ\",\"header\":\"CARBox_header__2tJAh\",\"closeButton\":\"CARBox_closeButton__2vumz\",\"dataList\":\"CARBox_dataList__2rHIn\",\"dataListItem\":\"CARBox_dataListItem__3jEPx\",\"dataListItemLabel\":\"CARBox_dataListItemLabel__1_Zgt\",\"dataListItemValue\":\"CARBox_dataListItemValue__3fCEJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputLabel\":\"CustomSelect_inputLabel__20BZg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Classes_wrapper__3L1Av\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"InfoTooltip_icon__2el5S\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"GenericClasses_wrapper__2Xjmt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MapPointDialog_wrapper__16jMJ\",\"wrapperWithHeader\":\"MapPointDialog_wrapperWithHeader__jp-PI\",\"header\":\"MapPointDialog_header__1IUMY\",\"title\":\"MapPointDialog_title__3Ibbd\",\"titleCar\":\"MapPointDialog_titleCar__13Owt\",\"closeButton\":\"MapPointDialog_closeButton__BGxPO\",\"dataList\":\"MapPointDialog_dataList__1oDcE\",\"dataListCar\":\"MapPointDialog_dataListCar__3xwQi\",\"dataListItem\":\"MapPointDialog_dataListItem__1BTS2\",\"dataListItemFull\":\"MapPointDialog_dataListItemFull__5Da3d\",\"dataListCarItemFull\":\"MapPointDialog_dataListCarItemFull__2wCqf\",\"dataListItemLabel\":\"MapPointDialog_dataListItemLabel__3q6h0\",\"dataListItemValue\":\"MapPointDialog_dataListItemValue__3gQwJ\",\"chartWrapper\":\"MapPointDialog_chartWrapper__1LITi\"};","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAccAAACCCAMAAAAEwPPrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBQTFRFxcVs3Nt3gIKD3+DgoKGi95Y/4Yg3v8DBweTPZ67Eo9e49/z5m9Sy9/f34PLnjM2mgcad5+foiIqL0evbz9DQ9vv9qdzszOTWj9LmsLGy6PXtmJqa5fT5xN3lkJKTbLbO4e7y7+/vfsvibKu/st7E9fn7x8jJgLbIqKmq9PTj+Pjlycl1ncfV8vHM3t2AuLm58Pjzk9Gs19jY5fLrgLya+/v20dBy0NCIy8tv54w51tZ0yejVqtO8uuHK6enIq9u+29uj9vv42O7hkcWn/fjy4+KR/evb449E555d+J1L/Ne39fnx+enZ6emqy+rzr9rB0dGA7/j37u7SyuTsjcLT1OndebbL0Ofu7fb5tuLv/f32os613dyO1O31iMGhoMvZs9fC1+zg7u3Ku9vJj8bX7/fy6/T2+/ruhcDT3t6tcbPJzujZ8/fv6+uzdrDE4/D07vbxmM+v77B3/N7Dwubx+Pjt4uK13e3k6ZNFvNzm+/Dmd7iTdcfgYqW7hMqg////EetX6AAAAIB0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wA4BUtnAAATbElEQVR42uzd52PjxpUAcC2AHJvYsdKSXDFLm0vTtmKS2r3cnYrlKHYuV9LOuZ5yvfd+R5n412865r0pALQS5XVmPiQWAILc+XHqmwEPspC+CukgZEFwDCk4hhQcQwqOwTGk4BhScAwpOAbHkIJjSMExpOAYHEMKjiG9jY7/XHTB06dFV/xlyPZHdzxqnBQwPntWADneXYZ8f2THo9vGFyd+xttbP+S429sGyMd1PLoljj5IyuiHHHd3vW2AfFRHwkgd3ZCc0QdJGKljgHxER8rIHF2QktENSRmZ4/byWyHzH8eRMXJHO2TO6IJkjNxx++0A+SiOnFE42iB1RjskZxSOAfJRHAWjdDQhIaMNUjBKxwD5CI6SUTliSMxoQkpG5Rgg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\"","module.exports = __webpack_public_path__ + \"static/media/logo-mapbiomas-fogo.7c26b36a.png\";","module.exports = __webpack_public_path__ + \"static/media/10-metros-pt-br-horizontal.6993995c.svg\";","module.exports = __webpack_public_path__ + \"static/media/10-metros-en-horizontal.0ba31cfb.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-ecostage.116dc170.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"InfrastructureStatisticsBox_wrapper__8bjOO\",\"wrapperIsHidden\":\"InfrastructureStatisticsBox_wrapperIsHidden__gX8Pk\",\"header\":\"InfrastructureStatisticsBox_header__ywkxh\",\"title\":\"InfrastructureStatisticsBox_title__2SD3y\",\"closeButton\":\"InfrastructureStatisticsBox_closeButton__3I1E5\",\"closeButtonCollapse\":\"InfrastructureStatisticsBox_closeButtonCollapse__MiryW\",\"collapseWrapper\":\"InfrastructureStatisticsBox_collapseWrapper__2EFKc\",\"content\":\"InfrastructureStatisticsBox_content__34aXz\",\"section\":\"InfrastructureStatisticsBox_section__3JilG\",\"secondaryTitle\":\"InfrastructureStatisticsBox_secondaryTitle__1xIGV\",\"secondaryTitleExtraInfo\":\"InfrastructureStatisticsBox_secondaryTitleExtraInfo__U25db\",\"infoList\":\"InfrastructureStatisticsBox_infoList__1-AKt\",\"infoListItem\":\"InfrastructureStatisticsBox_infoListItem__3UFWg\",\"infoListItemValue\":\"InfrastructureStatisticsBox_infoListItemValue__2KmqC\",\"infoListItemLabel\":\"InfrastructureStatisticsBox_infoListItemLabel__1Cnkw\",\"progressWrapper\":\"InfrastructureStatisticsBox_progressWrapper__26yBD\",\"actionWrapper\":\"InfrastructureStatisticsBox_actionWrapper__2YIbw\",\"actionButton\":\"InfrastructureStatisticsBox_actionButton__mAyXR\",\"infoBox\":\"InfrastructureStatisticsBox_infoBox__1y-_N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mapWrapper\":\"MapboxCanvas_mapWrapper__PT5jt\",\"mapWrapperWithHeader\":\"MapboxCanvas_mapWrapperWithHeader__2vGvz\",\"mapSearchButton\":\"MapboxCanvas_mapSearchButton__27hVp\",\"mapWrapperOnPointSearchMode\":\"MapboxCanvas_mapWrapperOnPointSearchMode__2rnLU\",\"mapActionButton\":\"MapboxCanvas_mapActionButton__3ejUq\",\"tutorialButton\":\"MapboxCanvas_tutorialButton__10iX-\",\"mapGeographicalReliefButton\":\"MapboxCanvas_mapGeographicalReliefButton__3BCB_\",\"loadingWrapper\":\"MapboxCanvas_loadingWrapper__3LB3r\",\"opacityBox\":\"MapboxCanvas_opacityBox__2AFt3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dialogWrapper\":\"LandingPage_dialogWrapper__2Fgjv\",\"closeButton\":\"LandingPage_closeButton__d9VIM\",\"alertText\":\"LandingPage_alertText__3rN40\",\"tempDialog\":\"LandingPage_tempDialog__NcfAt\"};","module.exports = __webpack_public_path__ + \"static/media/logo.b3a100e6.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-ecostage.116dc170.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo.b3a100e6.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo.b3a100e6.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"TransitionBaseForm_wrapper__24b_m\",\"wrapperInline\":\"TransitionBaseForm_wrapperInline__311W5\",\"formControl\":\"TransitionBaseForm_formControl__1kCkY\",\"groupList\":\"TransitionBaseForm_groupList__3geIt\",\"yearRangeFormControl\":\"TransitionBaseForm_yearRangeFormControl___9_2R\",\"checkboxControl\":\"TransitionBaseForm_checkboxControl__ixbOP\",\"checkboxLabel\":\"TransitionBaseForm_checkboxLabel__1fLmX\",\"radioGroup\":\"TransitionBaseForm_radioGroup__2Iyi9\",\"radioLabel\":\"TransitionBaseForm_radioLabel__MCTUO\",\"radioInput\":\"TransitionBaseForm_radioInput__2F-XG\",\"checkboxRoot\":\"TransitionBaseForm_checkboxRoot__FQV2V\",\"tooltipWrapper\":\"TransitionBaseForm_tooltipWrapper__1Nufk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MapBiomasLogin_wrapper__1FUB5\",\"content\":\"MapBiomasLogin_content__19wh6\",\"logo\":\"MapBiomasLogin_logo__5VMyt\",\"box\":\"MapBiomasLogin_box__-9-Hv\",\"form\":\"MapBiomasLogin_form__1SLNp\",\"MuiInputBase-root\":\"MapBiomasLogin_MuiInputBase-root__2XY_I\",\"contentWrapper\":\"MapBiomasLogin_contentWrapper__2tJPG\",\"title\":\"MapBiomasLogin_title__6yiwI\",\"subtitle\":\"MapBiomasLogin_subtitle__2BivC\",\"formControl\":\"MapBiomasLogin_formControl__5EjXx\",\"emailField\":\"MapBiomasLogin_emailField__2Xafq\",\"actionsWrapper\":\"MapBiomasLogin_actionsWrapper__20rgd\",\"button\":\"MapBiomasLogin_button__14H6n\",\"createAcountLegend\":\"MapBiomasLogin_createAcountLegend__3u865\",\"helperLink\":\"MapBiomasLogin_helperLink__3-iIW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MapBiomasCreatePassword_wrapper__NQZv5\",\"content\":\"MapBiomasCreatePassword_content__2Qto-\",\"logo\":\"MapBiomasCreatePassword_logo__WIGAY\",\"box\":\"MapBiomasCreatePassword_box__3alGb\",\"form\":\"MapBiomasCreatePassword_form__11PQF\",\"MuiInputBase-root\":\"MapBiomasCreatePassword_MuiInputBase-root__348iE\",\"contentWrapper\":\"MapBiomasCreatePassword_contentWrapper__194NU\",\"title\":\"MapBiomasCreatePassword_title__psJzj\",\"subtitle\":\"MapBiomasCreatePassword_subtitle__2BKeP\",\"formControl\":\"MapBiomasCreatePassword_formControl__ky0wT\",\"actionsWrapper\":\"MapBiomasCreatePassword_actionsWrapper__Hh_u7\",\"button\":\"MapBiomasCreatePassword_button__3eHBB\",\"createAcountLegend\":\"MapBiomasCreatePassword_createAcountLegend__1blVw\",\"helperLink\":\"MapBiomasCreatePassword_helperLink__3MgY5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"MapBiomasPasswordRecovery_wrapper__2wGFc\",\"content\":\"MapBiomasPasswordRecovery_content__3lac8\",\"logo\":\"MapBiomasPasswordRecovery_logo__1_c95\",\"box\":\"MapBiomasPasswordRecovery_box__3qXGT\",\"contentWrapper\":\"MapBiomasPasswordRecovery_contentWrapper__2OQ2Y\",\"title\":\"MapBiomasPasswordRecovery_title__2_UIe\",\"subtitle\":\"MapBiomasPasswordRecovery_subtitle__1QPPc\",\"formControl\":\"MapBiomasPasswordRecovery_formControl__2o5_c\",\"actionsWrapper\":\"MapBiomasPasswordRecovery_actionsWrapper__JjQ-q\",\"footer\":\"MapBiomasPasswordRecovery_footer__GI8xk\",\"copyText\":\"MapBiomasPasswordRecovery_copyText__1Kn7O\",\"accessAccountLegend\":\"MapBiomasPasswordRecovery_accessAccountLegend__1qvmS\",\"helperLink\":\"MapBiomasPasswordRecovery_helperLink__1QYxQ\",\"button\":\"MapBiomasPasswordRecovery_button__2ykXT\"};"],"sourceRoot":""}