@buildcanada/charts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +8 -0
- package/README.md +113 -0
- package/package.json +137 -0
- package/src/components/BodyPortal/BodyPortal.tsx +40 -0
- package/src/components/Button/Button.scss +110 -0
- package/src/components/Button/Button.tsx +101 -0
- package/src/components/Checkbox.scss +93 -0
- package/src/components/Checkbox.tsx +47 -0
- package/src/components/ExpandableToggle/ExpandableToggle.scss +123 -0
- package/src/components/ExpandableToggle/ExpandableToggle.tsx +60 -0
- package/src/components/GrapherTabIcon.tsx +156 -0
- package/src/components/GrapherTrendArrow.scss +16 -0
- package/src/components/GrapherTrendArrow.tsx +30 -0
- package/src/components/Halo/Halo.tsx +44 -0
- package/src/components/LabeledSwitch/LabeledSwitch.scss +109 -0
- package/src/components/LabeledSwitch/LabeledSwitch.tsx +62 -0
- package/src/components/MarkdownTextWrap/MarkdownTextWrap.tsx +1173 -0
- package/src/components/OverlayHeader.scss +18 -0
- package/src/components/OverlayHeader.tsx +29 -0
- package/src/components/RadioButton.scss +69 -0
- package/src/components/RadioButton.tsx +42 -0
- package/src/components/SimpleMarkdownText.tsx +89 -0
- package/src/components/TextInput.scss +17 -0
- package/src/components/TextInput.tsx +19 -0
- package/src/components/TextWrap/TextWrap.tsx +361 -0
- package/src/components/TextWrap/TextWrapUtils.ts +32 -0
- package/src/components/closeButton/CloseButton.scss +40 -0
- package/src/components/closeButton/CloseButton.tsx +27 -0
- package/src/components/index.ts +70 -0
- package/src/components/loadingIndicator/LoadingIndicator.scss +40 -0
- package/src/components/loadingIndicator/LoadingIndicator.tsx +28 -0
- package/src/components/markdown/remarkPlainLinks.ts +36 -0
- package/src/components/reactUtil.ts +20 -0
- package/src/components/stubs/CodeSnippet.tsx +19 -0
- package/src/components/stubs/DataCitation.tsx +16 -0
- package/src/components/stubs/IndicatorKeyData.tsx +45 -0
- package/src/components/stubs/IndicatorProcessing.tsx +15 -0
- package/src/components/stubs/IndicatorSources.tsx +15 -0
- package/src/components/styles/colors.scss +113 -0
- package/src/components/styles/mixins.scss +630 -0
- package/src/components/styles/typography.scss +579 -0
- package/src/components/styles/util.scss +89 -0
- package/src/components/styles/variables.scss +208 -0
- package/src/config/ChartsConfig.ts +163 -0
- package/src/config/ChartsProvider.tsx +157 -0
- package/src/config/index.ts +20 -0
- package/src/core-table/CoreTable.ts +1355 -0
- package/src/core-table/CoreTableColumns.ts +973 -0
- package/src/core-table/CoreTableUtils.ts +793 -0
- package/src/core-table/ErrorValues.ts +73 -0
- package/src/core-table/OwidTable.ts +1175 -0
- package/src/core-table/OwidTableSynthesizers.ts +272 -0
- package/src/core-table/OwidTableUtil.ts +76 -0
- package/src/core-table/Transforms.ts +484 -0
- package/src/core-table/index.ts +82 -0
- package/src/explorer/ColumnGrammar.ts +217 -0
- package/src/explorer/Explorer.sample.ts +212 -0
- package/src/explorer/Explorer.scss +148 -0
- package/src/explorer/Explorer.tsx +1283 -0
- package/src/explorer/ExplorerConstants.ts +85 -0
- package/src/explorer/ExplorerControls.scss +156 -0
- package/src/explorer/ExplorerControls.tsx +210 -0
- package/src/explorer/ExplorerDecisionMatrix.ts +471 -0
- package/src/explorer/ExplorerGrammar.ts +161 -0
- package/src/explorer/ExplorerProgram.ts +568 -0
- package/src/explorer/ExplorerUtils.ts +59 -0
- package/src/explorer/GrapherGrammar.ts +387 -0
- package/src/explorer/gridLang/GrammarUtils.ts +121 -0
- package/src/explorer/gridLang/GridCell.ts +298 -0
- package/src/explorer/gridLang/GridLangConstants.ts +255 -0
- package/src/explorer/gridLang/GridProgram.ts +311 -0
- package/src/explorer/gridLang/readme.md +17 -0
- package/src/explorer/index.ts +69 -0
- package/src/explorer/readme.md +19 -0
- package/src/explorer/urlMigrations/CO2UrlMigration.ts +46 -0
- package/src/explorer/urlMigrations/CovidUrlMigration.ts +37 -0
- package/src/explorer/urlMigrations/EnergyUrlMigration.ts +41 -0
- package/src/explorer/urlMigrations/ExplorerPageUrlMigrationSpec.ts +12 -0
- package/src/explorer/urlMigrations/ExplorerUrlMigrationUtils.ts +45 -0
- package/src/explorer/urlMigrations/ExplorerUrlMigrations.ts +33 -0
- package/src/explorer/urlMigrations/LegacyCovidUrlMigration.ts +144 -0
- package/src/explorer/urlMigrations/readme.md +39 -0
- package/src/grapher/axis/Axis.ts +973 -0
- package/src/grapher/axis/AxisConfig.ts +179 -0
- package/src/grapher/axis/AxisViews.tsx +597 -0
- package/src/grapher/barCharts/DiscreteBarChart.tsx +728 -0
- package/src/grapher/barCharts/DiscreteBarChartConstants.ts +60 -0
- package/src/grapher/barCharts/DiscreteBarChartHelpers.ts +338 -0
- package/src/grapher/barCharts/DiscreteBarChartState.ts +354 -0
- package/src/grapher/barCharts/DiscreteBarChartThumbnail.tsx +34 -0
- package/src/grapher/captionedChart/CaptionedChart.scss +61 -0
- package/src/grapher/captionedChart/CaptionedChart.tsx +523 -0
- package/src/grapher/captionedChart/Logos.tsx +141 -0
- package/src/grapher/captionedChart/LogosSVG.tsx +16 -0
- package/src/grapher/captionedChart/StaticChartRasterizer.tsx +178 -0
- package/src/grapher/captionedChart/assets/buildcanada-logo-square.svg +15 -0
- package/src/grapher/captionedChart/assets/buildcanada-logo.svg +15 -0
- package/src/grapher/captionedChart/assets/canadaspends.svg +7 -0
- package/src/grapher/captionedChart/readme.md +14 -0
- package/src/grapher/chart/Chart.tsx +62 -0
- package/src/grapher/chart/ChartAreaContent.tsx +172 -0
- package/src/grapher/chart/ChartDimension.ts +121 -0
- package/src/grapher/chart/ChartInterface.ts +83 -0
- package/src/grapher/chart/ChartManager.ts +113 -0
- package/src/grapher/chart/ChartTabs.ts +178 -0
- package/src/grapher/chart/ChartTypeMap.tsx +158 -0
- package/src/grapher/chart/ChartTypeSwitcher.tsx +26 -0
- package/src/grapher/chart/ChartUtils.tsx +364 -0
- package/src/grapher/chart/DimensionSlot.ts +45 -0
- package/src/grapher/chart/StaticChartWrapper.tsx +94 -0
- package/src/grapher/chart/guidedChartUtils.ts +82 -0
- package/src/grapher/color/BinningStrategies.ts +484 -0
- package/src/grapher/color/BinningStrategyEqualSizeBins.ts +132 -0
- package/src/grapher/color/BinningStrategyLogarithmic.ts +121 -0
- package/src/grapher/color/CategoricalColorAssigner.ts +97 -0
- package/src/grapher/color/ColorBrewerSchemes.ts +80 -0
- package/src/grapher/color/ColorConstants.ts +20 -0
- package/src/grapher/color/ColorScale.ts +339 -0
- package/src/grapher/color/ColorScaleBin.ts +147 -0
- package/src/grapher/color/ColorScaleConfig.ts +204 -0
- package/src/grapher/color/ColorScheme.ts +137 -0
- package/src/grapher/color/ColorSchemes.ts +149 -0
- package/src/grapher/color/ColorUtils.ts +86 -0
- package/src/grapher/color/CustomSchemes.ts +1772 -0
- package/src/grapher/color/readme.md +84 -0
- package/src/grapher/comparisonLine/ComparisonLine.tsx +31 -0
- package/src/grapher/comparisonLine/ComparisonLineConstants.ts +11 -0
- package/src/grapher/comparisonLine/ComparisonLineGenerator.ts +60 -0
- package/src/grapher/comparisonLine/ComparisonLineHelpers.ts +10 -0
- package/src/grapher/comparisonLine/CustomComparisonLine.tsx +159 -0
- package/src/grapher/comparisonLine/VerticalComparisonLine.tsx +208 -0
- package/src/grapher/controls/ActionButtons.scss +97 -0
- package/src/grapher/controls/ActionButtons.tsx +453 -0
- package/src/grapher/controls/CommandPalette.scss +50 -0
- package/src/grapher/controls/CommandPalette.tsx +74 -0
- package/src/grapher/controls/ContentSwitchers.scss +93 -0
- package/src/grapher/controls/ContentSwitchers.tsx +238 -0
- package/src/grapher/controls/Controls.scss +158 -0
- package/src/grapher/controls/DataTableFilterDropdown.scss +7 -0
- package/src/grapher/controls/DataTableFilterDropdown.tsx +168 -0
- package/src/grapher/controls/DataTableSearchField.scss +3 -0
- package/src/grapher/controls/DataTableSearchField.tsx +76 -0
- package/src/grapher/controls/Dropdown.scss +252 -0
- package/src/grapher/controls/Dropdown.tsx +235 -0
- package/src/grapher/controls/EntitySelectionToggle.tsx +135 -0
- package/src/grapher/controls/MapRegionDropdown.scss +3 -0
- package/src/grapher/controls/MapRegionDropdown.tsx +104 -0
- package/src/grapher/controls/MapResetButton.tsx +115 -0
- package/src/grapher/controls/MapZoomDropdown.scss +9 -0
- package/src/grapher/controls/MapZoomDropdown.tsx +270 -0
- package/src/grapher/controls/MapZoomToSelectionButton.tsx +87 -0
- package/src/grapher/controls/SearchField.scss +78 -0
- package/src/grapher/controls/SearchField.tsx +63 -0
- package/src/grapher/controls/SettingsMenu.scss +191 -0
- package/src/grapher/controls/SettingsMenu.tsx +399 -0
- package/src/grapher/controls/ShareMenu.scss +58 -0
- package/src/grapher/controls/ShareMenu.tsx +304 -0
- package/src/grapher/controls/SortIcon.tsx +39 -0
- package/src/grapher/controls/VerticalScrollContainer.tsx +263 -0
- package/src/grapher/controls/controlsRow/ControlsRow.tsx +168 -0
- package/src/grapher/controls/dropdown-icons.scss +4 -0
- package/src/grapher/controls/entityPicker/EntityPicker.scss +255 -0
- package/src/grapher/controls/entityPicker/EntityPicker.tsx +816 -0
- package/src/grapher/controls/entityPicker/EntityPickerConstants.ts +23 -0
- package/src/grapher/controls/globalEntitySelector/GlobalEntitySelector.scss +129 -0
- package/src/grapher/controls/globalEntitySelector/GlobalEntitySelector.tsx +463 -0
- package/src/grapher/controls/globalEntitySelector/GlobalEntitySelectorConstants.ts +3 -0
- package/src/grapher/controls/globalEntitySelector/readme.md +17 -0
- package/src/grapher/controls/settings/AbsRelToggle.tsx +64 -0
- package/src/grapher/controls/settings/AxisScaleToggle.tsx +53 -0
- package/src/grapher/controls/settings/FacetStrategySelector.tsx +110 -0
- package/src/grapher/controls/settings/FacetYDomainToggle.tsx +51 -0
- package/src/grapher/controls/settings/NoDataAreaToggle.tsx +38 -0
- package/src/grapher/controls/settings/ZoomToggle.tsx +36 -0
- package/src/grapher/core/EntitiesByRegionType.ts +174 -0
- package/src/grapher/core/EntityCodes.ts +19 -0
- package/src/grapher/core/EntityUrlBuilder.ts +200 -0
- package/src/grapher/core/FetchingGrapher.tsx +156 -0
- package/src/grapher/core/Grapher.tsx +760 -0
- package/src/grapher/core/GrapherAnalytics.ts +229 -0
- package/src/grapher/core/GrapherConstants.ts +173 -0
- package/src/grapher/core/GrapherState.tsx +3659 -0
- package/src/grapher/core/GrapherUrl.ts +184 -0
- package/src/grapher/core/GrapherUrlMigrations.ts +29 -0
- package/src/grapher/core/GrapherUseHelpers.tsx +147 -0
- package/src/grapher/core/LegacyToOwidTable.ts +841 -0
- package/src/grapher/core/grapher.entry.ts +5 -0
- package/src/grapher/core/grapher.scss +257 -0
- package/src/grapher/core/loadGrapherTableHelpers.ts +116 -0
- package/src/grapher/core/loadVariable.ts +104 -0
- package/src/grapher/core/relatedQuestion.ts +12 -0
- package/src/grapher/core/typography.scss +206 -0
- package/src/grapher/dataTable/DataTable.sample.ts +206 -0
- package/src/grapher/dataTable/DataTable.scss +249 -0
- package/src/grapher/dataTable/DataTable.tsx +1332 -0
- package/src/grapher/dataTable/DataTableConstants.ts +186 -0
- package/src/grapher/entitySelector/EntitySelector.scss +255 -0
- package/src/grapher/entitySelector/EntitySelector.tsx +1838 -0
- package/src/grapher/facet/FacetChart.tsx +943 -0
- package/src/grapher/facet/FacetChartConstants.ts +24 -0
- package/src/grapher/facet/FacetChartUtils.ts +51 -0
- package/src/grapher/facet/FacetMap.tsx +604 -0
- package/src/grapher/facet/FacetMapConstants.ts +23 -0
- package/src/grapher/facet/readme.md +13 -0
- package/src/grapher/focus/FocusArray.ts +79 -0
- package/src/grapher/footer/Footer.scss +63 -0
- package/src/grapher/footer/Footer.tsx +809 -0
- package/src/grapher/footer/FooterManager.ts +44 -0
- package/src/grapher/fullScreen/FullScreen.scss +11 -0
- package/src/grapher/fullScreen/FullScreen.tsx +61 -0
- package/src/grapher/header/Header.scss +35 -0
- package/src/grapher/header/Header.tsx +372 -0
- package/src/grapher/header/HeaderManager.ts +28 -0
- package/src/grapher/index.ts +157 -0
- package/src/grapher/interaction/InteractionState.ts +60 -0
- package/src/grapher/legend/HorizontalColorLegends.tsx +923 -0
- package/src/grapher/legend/LegendInteractionState.ts +40 -0
- package/src/grapher/legend/VerticalColorLegend.tsx +295 -0
- package/src/grapher/lineCharts/LineChart.tsx +968 -0
- package/src/grapher/lineCharts/LineChartConstants.ts +89 -0
- package/src/grapher/lineCharts/LineChartHelpers.ts +184 -0
- package/src/grapher/lineCharts/LineChartState.ts +394 -0
- package/src/grapher/lineCharts/LineChartThumbnail.tsx +437 -0
- package/src/grapher/lineCharts/Lines.tsx +258 -0
- package/src/grapher/lineLegend/LineLegend.tsx +723 -0
- package/src/grapher/lineLegend/LineLegendConstants.ts +9 -0
- package/src/grapher/lineLegend/LineLegendFilterAlgorithms.ts +143 -0
- package/src/grapher/lineLegend/LineLegendHelpers.ts +253 -0
- package/src/grapher/lineLegend/LineLegendTypes.ts +32 -0
- package/src/grapher/mapCharts/CanadaTopology.ts +17922 -0
- package/src/grapher/mapCharts/ChoroplethGlobe.tsx +949 -0
- package/src/grapher/mapCharts/ChoroplethMap.tsx +662 -0
- package/src/grapher/mapCharts/GeoFeatures.ts +184 -0
- package/src/grapher/mapCharts/GlobeController.ts +496 -0
- package/src/grapher/mapCharts/MapAnnotationPlacements.json +1040 -0
- package/src/grapher/mapCharts/MapAnnotationPlacements.ts +31 -0
- package/src/grapher/mapCharts/MapAnnotations.ts +723 -0
- package/src/grapher/mapCharts/MapChart.sample.ts +59 -0
- package/src/grapher/mapCharts/MapChart.scss +5 -0
- package/src/grapher/mapCharts/MapChart.tsx +720 -0
- package/src/grapher/mapCharts/MapChartConstants.ts +260 -0
- package/src/grapher/mapCharts/MapChartState.ts +416 -0
- package/src/grapher/mapCharts/MapChartThumbnail.tsx +25 -0
- package/src/grapher/mapCharts/MapComponents.tsx +338 -0
- package/src/grapher/mapCharts/MapConfig.ts +156 -0
- package/src/grapher/mapCharts/MapHelpers.ts +181 -0
- package/src/grapher/mapCharts/MapProjections.ts +49 -0
- package/src/grapher/mapCharts/MapSparkline.tsx +257 -0
- package/src/grapher/mapCharts/MapTooltip.scss +49 -0
- package/src/grapher/mapCharts/MapTooltip.tsx +409 -0
- package/src/grapher/mapCharts/MapTopology.ts +1766 -0
- package/src/grapher/mapCharts/d3-bboxCollide.js +204 -0
- package/src/grapher/mapCharts/d3-geo-projection.ts +198 -0
- package/src/grapher/modal/DownloadIcons.tsx +39 -0
- package/src/grapher/modal/DownloadModal.scss +300 -0
- package/src/grapher/modal/DownloadModal.tsx +1226 -0
- package/src/grapher/modal/EmbedModal.scss +40 -0
- package/src/grapher/modal/EmbedModal.tsx +160 -0
- package/src/grapher/modal/EntitySelectorModal.tsx +59 -0
- package/src/grapher/modal/Modal.scss +31 -0
- package/src/grapher/modal/Modal.tsx +90 -0
- package/src/grapher/modal/ModalHeader.scss +12 -0
- package/src/grapher/modal/ModalHeader.tsx +16 -0
- package/src/grapher/modal/SourcesDescriptions.scss +87 -0
- package/src/grapher/modal/SourcesDescriptions.tsx +89 -0
- package/src/grapher/modal/SourcesKeyDataTable.scss +49 -0
- package/src/grapher/modal/SourcesKeyDataTable.tsx +87 -0
- package/src/grapher/modal/SourcesModal.scss +301 -0
- package/src/grapher/modal/SourcesModal.tsx +568 -0
- package/src/grapher/noDataModal/NoDataModal.tsx +125 -0
- package/src/grapher/scatterCharts/ConnectedScatterLegend.tsx +143 -0
- package/src/grapher/scatterCharts/MultiColorPolyline.tsx +129 -0
- package/src/grapher/scatterCharts/NoDataSection.scss +14 -0
- package/src/grapher/scatterCharts/NoDataSection.tsx +56 -0
- package/src/grapher/scatterCharts/ScatterPlotChart.tsx +792 -0
- package/src/grapher/scatterCharts/ScatterPlotChartConstants.ts +157 -0
- package/src/grapher/scatterCharts/ScatterPlotChartState.ts +678 -0
- package/src/grapher/scatterCharts/ScatterPlotChartThumbnail.tsx +155 -0
- package/src/grapher/scatterCharts/ScatterPlotTooltip.tsx +560 -0
- package/src/grapher/scatterCharts/ScatterPoints.tsx +153 -0
- package/src/grapher/scatterCharts/ScatterPointsWithLabels.tsx +708 -0
- package/src/grapher/scatterCharts/ScatterSizeLegend.tsx +327 -0
- package/src/grapher/scatterCharts/ScatterUtils.ts +265 -0
- package/src/grapher/scatterCharts/Triangle.tsx +41 -0
- package/src/grapher/schema/README.md +33 -0
- package/src/grapher/schema/defaultGrapherConfig.ts +100 -0
- package/src/grapher/schema/grapher-schema.009.yaml +781 -0
- package/src/grapher/schema/migrations/helpers.ts +58 -0
- package/src/grapher/schema/migrations/migrate.ts +75 -0
- package/src/grapher/schema/migrations/migrations.ts +158 -0
- package/src/grapher/selection/MapSelectionArray.ts +99 -0
- package/src/grapher/selection/SelectionArray.ts +71 -0
- package/src/grapher/selection/readme.md +16 -0
- package/src/grapher/sidePanel/SidePanel.scss +10 -0
- package/src/grapher/sidePanel/SidePanel.tsx +23 -0
- package/src/grapher/slideInDrawer/SlideInDrawer.scss +57 -0
- package/src/grapher/slideInDrawer/SlideInDrawer.tsx +125 -0
- package/src/grapher/slideshowController/SlideShowController.tsx +43 -0
- package/src/grapher/slideshowController/readme.md +7 -0
- package/src/grapher/slopeCharts/MarkX.tsx +45 -0
- package/src/grapher/slopeCharts/Slope.tsx +102 -0
- package/src/grapher/slopeCharts/SlopeChart.tsx +1152 -0
- package/src/grapher/slopeCharts/SlopeChartConstants.ts +33 -0
- package/src/grapher/slopeCharts/SlopeChartHelpers.ts +73 -0
- package/src/grapher/slopeCharts/SlopeChartState.ts +392 -0
- package/src/grapher/slopeCharts/SlopeChartThumbnail.tsx +368 -0
- package/src/grapher/stackedCharts/AbstractStackedChartState.ts +370 -0
- package/src/grapher/stackedCharts/MarimekkoBars.tsx +190 -0
- package/src/grapher/stackedCharts/MarimekkoBarsForOneEntity.tsx +168 -0
- package/src/grapher/stackedCharts/MarimekkoChart.tsx +1144 -0
- package/src/grapher/stackedCharts/MarimekkoChartConstants.ts +112 -0
- package/src/grapher/stackedCharts/MarimekkoChartHelpers.ts +21 -0
- package/src/grapher/stackedCharts/MarimekkoChartState.ts +465 -0
- package/src/grapher/stackedCharts/MarimekkoChartThumbnail.tsx +168 -0
- package/src/grapher/stackedCharts/MarimekkoInternalLabels.tsx +124 -0
- package/src/grapher/stackedCharts/StackedAreaChart.tsx +678 -0
- package/src/grapher/stackedCharts/StackedAreaChartState.ts +34 -0
- package/src/grapher/stackedCharts/StackedAreaChartThumbnail.tsx +215 -0
- package/src/grapher/stackedCharts/StackedAreas.tsx +223 -0
- package/src/grapher/stackedCharts/StackedBarChart.tsx +619 -0
- package/src/grapher/stackedCharts/StackedBarChartState.ts +80 -0
- package/src/grapher/stackedCharts/StackedBarChartThumbnail.tsx +220 -0
- package/src/grapher/stackedCharts/StackedBarSegment.tsx +87 -0
- package/src/grapher/stackedCharts/StackedBars.tsx +102 -0
- package/src/grapher/stackedCharts/StackedConstants.ts +109 -0
- package/src/grapher/stackedCharts/StackedDiscreteBarChart.tsx +270 -0
- package/src/grapher/stackedCharts/StackedDiscreteBarChartState.ts +296 -0
- package/src/grapher/stackedCharts/StackedDiscreteBarChartThumbnail.tsx +27 -0
- package/src/grapher/stackedCharts/StackedDiscreteBars.tsx +648 -0
- package/src/grapher/stackedCharts/StackedUtils.ts +142 -0
- package/src/grapher/tabs/Tabs.scss +169 -0
- package/src/grapher/tabs/Tabs.tsx +54 -0
- package/src/grapher/tabs/TabsWithDropdown.scss +62 -0
- package/src/grapher/tabs/TabsWithDropdown.tsx +114 -0
- package/src/grapher/testData/OwidTestData.sample.ts +273 -0
- package/src/grapher/testData/OwidTestData.ts +64 -0
- package/src/grapher/timeline/TimelineComponent.scss +139 -0
- package/src/grapher/timeline/TimelineComponent.tsx +658 -0
- package/src/grapher/timeline/TimelineController.ts +368 -0
- package/src/grapher/timeline/readme.md +7 -0
- package/src/grapher/tooltip/Tooltip.scss +510 -0
- package/src/grapher/tooltip/Tooltip.tsx +294 -0
- package/src/grapher/tooltip/TooltipContents.tsx +383 -0
- package/src/grapher/tooltip/TooltipProps.ts +123 -0
- package/src/grapher/tooltip/TooltipState.ts +81 -0
- package/src/grapher/verticalLabels/VerticalLabels.tsx +31 -0
- package/src/grapher/verticalLabels/VerticalLabelsState.ts +154 -0
- package/src/index.ts +226 -0
- package/src/styles/charts.scss +15 -0
- package/src/types/NominalType.ts +30 -0
- package/src/types/OwidOrigin.ts +18 -0
- package/src/types/OwidSource.ts +9 -0
- package/src/types/OwidVariable.ts +133 -0
- package/src/types/OwidVariableDisplayConfigInterface.ts +49 -0
- package/src/types/analyticsTypes.ts +54 -0
- package/src/types/dbTypes/Tags.ts +11 -0
- package/src/types/domainTypes/Archive.ts +139 -0
- package/src/types/domainTypes/Author.ts +28 -0
- package/src/types/domainTypes/ContentGraph.ts +76 -0
- package/src/types/domainTypes/CoreTableTypes.ts +305 -0
- package/src/types/domainTypes/DeployStatus.ts +23 -0
- package/src/types/domainTypes/Layout.ts +34 -0
- package/src/types/domainTypes/Posts.ts +34 -0
- package/src/types/domainTypes/Search.ts +299 -0
- package/src/types/domainTypes/Site.ts +8 -0
- package/src/types/domainTypes/StaticViz.ts +64 -0
- package/src/types/domainTypes/Toc.ts +11 -0
- package/src/types/domainTypes/Tombstone.ts +19 -0
- package/src/types/domainTypes/Various.ts +79 -0
- package/src/types/gdocTypes/Gdoc.ts +280 -0
- package/src/types/grapherTypes/BinningStrategyTypes.ts +46 -0
- package/src/types/grapherTypes/GrapherConstants.ts +53 -0
- package/src/types/grapherTypes/GrapherTypes.ts +743 -0
- package/src/types/index.ts +316 -0
- package/src/types/wordpressTypes/WordpressTypes.ts +9 -0
- package/src/utils/Bounds.ts +439 -0
- package/src/utils/BrowserUtils.ts +12 -0
- package/src/utils/FuzzySearch.ts +74 -0
- package/src/utils/MultiDimDataPageConfig.ts +31 -0
- package/src/utils/OwidVariable.ts +82 -0
- package/src/utils/PointVector.ts +97 -0
- package/src/utils/PromiseCache.ts +36 -0
- package/src/utils/PromiseSwitcher.ts +52 -0
- package/src/utils/TimeBounds.ts +130 -0
- package/src/utils/Tippy.tsx +57 -0
- package/src/utils/Util.ts +2369 -0
- package/src/utils/archival/archivalDate.ts +48 -0
- package/src/utils/dayjs.ts +32 -0
- package/src/utils/formatValue.ts +242 -0
- package/src/utils/grapherConfigUtils.ts +81 -0
- package/src/utils/image.ts +225 -0
- package/src/utils/index.ts +318 -0
- package/src/utils/isPresent.ts +5 -0
- package/src/utils/metadataHelpers.ts +329 -0
- package/src/utils/persistable/Persistable.ts +82 -0
- package/src/utils/persistable/readme.md +50 -0
- package/src/utils/regions.json +5635 -0
- package/src/utils/regions.ts +463 -0
- package/src/utils/serializers.ts +16 -0
- package/src/utils/string.ts +42 -0
- package/src/utils/urls/Url.ts +195 -0
- package/src/utils/urls/UrlMigration.ts +10 -0
- package/src/utils/urls/UrlUtils.ts +54 -0
- package/src/utils/urls/readme.md +90 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { z } from "zod"
|
|
2
|
+
|
|
3
|
+
export const StaticVizTableName = "static_viz"
|
|
4
|
+
|
|
5
|
+
export interface DbRawStaticViz {
|
|
6
|
+
id: number
|
|
7
|
+
name: string
|
|
8
|
+
description: string | null
|
|
9
|
+
grapherSlug: string | null
|
|
10
|
+
sourceUrl: string | null
|
|
11
|
+
imageId: number
|
|
12
|
+
mobileImageId: number | null
|
|
13
|
+
createdBy: number | null
|
|
14
|
+
updatedBy: number | null
|
|
15
|
+
createdAt: Date
|
|
16
|
+
updatedAt: Date
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type StaticVizImage = {
|
|
20
|
+
id: number
|
|
21
|
+
cloudflareId: string
|
|
22
|
+
filename: string
|
|
23
|
+
originalHeight: number
|
|
24
|
+
originalWidth: number
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// A type for rendering the static viz admin, with images resolved and user names instead of numeric IDs
|
|
28
|
+
export type DbEnrichedStaticViz = Omit<
|
|
29
|
+
DbRawStaticViz,
|
|
30
|
+
"createdBy" | "updatedBy" | "imageId" | "mobileImageId"
|
|
31
|
+
> & {
|
|
32
|
+
desktop?: StaticVizImage
|
|
33
|
+
mobile?: StaticVizImage
|
|
34
|
+
name: string
|
|
35
|
+
grapherSlug?: string
|
|
36
|
+
chartId?: number
|
|
37
|
+
sourceUrl?: string
|
|
38
|
+
description?: string
|
|
39
|
+
createdBy: string
|
|
40
|
+
updatedBy: string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const StaticVizInsertSchema = z.object({
|
|
44
|
+
name: z.string().min(1),
|
|
45
|
+
description: z.string().nullable().optional(),
|
|
46
|
+
grapherSlug: z.string().nullable().optional(),
|
|
47
|
+
sourceUrl: z.string().nullable().optional(),
|
|
48
|
+
imageId: z.number().min(1),
|
|
49
|
+
mobileImageId: z.number().min(1).nullable().optional(),
|
|
50
|
+
createdBy: z.number().min(1).nullable().optional(),
|
|
51
|
+
updatedBy: z.number().min(1).nullable().optional(),
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
export const StaticVizUpdateSchema = z.object({
|
|
55
|
+
name: z.string().min(1).optional(),
|
|
56
|
+
description: z.string().nullable().optional(),
|
|
57
|
+
grapherSlug: z.string().nullable().optional(),
|
|
58
|
+
sourceUrl: z.string().nullable().optional(),
|
|
59
|
+
imageId: z.number().min(1).optional(),
|
|
60
|
+
mobileImageId: z.number().min(1).nullable().optional(),
|
|
61
|
+
updatedBy: z.number().min(1).nullable().optional(),
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
export type StaticVizUpdate = z.infer<typeof StaticVizUpdateSchema>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TocHeading {
|
|
2
|
+
text: string
|
|
3
|
+
html?: string // used by SectionHeading toc. Excluded from LongFormPage toc.
|
|
4
|
+
slug: string
|
|
5
|
+
isSubheading: boolean
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface TocHeadingWithTitleSupertitle extends TocHeading {
|
|
9
|
+
title: string
|
|
10
|
+
supertitle?: string
|
|
11
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type CreateTombstoneData = {
|
|
2
|
+
reason?: string
|
|
3
|
+
includeArchiveLink?: boolean
|
|
4
|
+
relatedLinkUrl?: string
|
|
5
|
+
relatedLinkTitle?: string
|
|
6
|
+
relatedLinkDescription?: string
|
|
7
|
+
relatedLinkThumbnail?: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type TombstonePageData = {
|
|
11
|
+
slug: string
|
|
12
|
+
reason: string
|
|
13
|
+
includeArchiveLink: boolean
|
|
14
|
+
relatedLinkUrl: string
|
|
15
|
+
relatedLinkTitle: string
|
|
16
|
+
relatedLinkDescription: string
|
|
17
|
+
relatedLinkThumbnail: string
|
|
18
|
+
archiveUrl?: string
|
|
19
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Nominal } from "../NominalType"
|
|
2
|
+
|
|
3
|
+
export type Integer = number
|
|
4
|
+
|
|
5
|
+
export type OwidVariableId = Integer // remove.
|
|
6
|
+
|
|
7
|
+
export type JsonString = string
|
|
8
|
+
export type Base64String = Nominal<string, "Base64">
|
|
9
|
+
export type HexString = Nominal<string, "Hex">
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Pageview information about a single URL
|
|
13
|
+
*/
|
|
14
|
+
export interface RawPageview {
|
|
15
|
+
day: Date
|
|
16
|
+
url: string
|
|
17
|
+
views_7d: number
|
|
18
|
+
views_14d: number
|
|
19
|
+
views_365d: number
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface UserCountryInformation {
|
|
23
|
+
code: string
|
|
24
|
+
name: string
|
|
25
|
+
short_code: string
|
|
26
|
+
slug: string
|
|
27
|
+
regions: string[] | null
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export enum SiteFooterContext {
|
|
31
|
+
gdocsDocument = "gdocsDocument", // the rendered version (on the site)
|
|
32
|
+
grapherPage = "grapherPage",
|
|
33
|
+
dataPageV2 = "dataPageV2",
|
|
34
|
+
multiDimDataPage = "multiDimDataPage",
|
|
35
|
+
dynamicCollectionPage = "dynamicCollectionPage",
|
|
36
|
+
explorerPage = "explorerPage",
|
|
37
|
+
explorerIndexPage = "explorerIndexPage",
|
|
38
|
+
default = "default",
|
|
39
|
+
dataInsightsIndexPage = "data-insights-index-page",
|
|
40
|
+
searchPage = "search-page",
|
|
41
|
+
subscribePage = "subscribe-page",
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface GitCommit {
|
|
45
|
+
author_email: string
|
|
46
|
+
author_name: string
|
|
47
|
+
body: string
|
|
48
|
+
date: string
|
|
49
|
+
hash: string
|
|
50
|
+
message: string
|
|
51
|
+
}
|
|
52
|
+
export interface SerializedGridProgram {
|
|
53
|
+
slug: string
|
|
54
|
+
program: string
|
|
55
|
+
lastCommit?: GitCommit
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export enum TaggableType {
|
|
59
|
+
Charts = "charts",
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Exception format that can be easily given as an API error
|
|
63
|
+
export class JsonError extends Error {
|
|
64
|
+
status: number
|
|
65
|
+
constructor(message: string, status?: number, options?: ErrorOptions) {
|
|
66
|
+
super(message, options)
|
|
67
|
+
this.status = status ?? 400
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface QueryParams {
|
|
72
|
+
[key: string]: string | undefined
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export enum R2GrapherConfigDirectory {
|
|
76
|
+
byUUID = "config/by-uuid",
|
|
77
|
+
publishedGrapherBySlug = "config/by-slug-published",
|
|
78
|
+
multiDim = "multi-dim-config",
|
|
79
|
+
}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stub types for Google Docs integration.
|
|
3
|
+
* These are simplified versions of the full OWID gdocTypes.
|
|
4
|
+
* Most Google Docs CMS functionality is not needed for the standalone charts library,
|
|
5
|
+
* but the types are required for compilation.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { QueryParams } from "../domainTypes/Various.js"
|
|
9
|
+
import { ArchivedPageVersion } from "../domainTypes/Archive.js"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Document types in the OWID CMS.
|
|
13
|
+
*/
|
|
14
|
+
export enum OwidGdocType {
|
|
15
|
+
Article = "article",
|
|
16
|
+
TopicPage = "topic-page",
|
|
17
|
+
LinearTopicPage = "linear-topic-page",
|
|
18
|
+
DataInsight = "data-insight",
|
|
19
|
+
Homepage = "homepage",
|
|
20
|
+
AboutPage = "about-page",
|
|
21
|
+
Author = "author",
|
|
22
|
+
Fragment = "fragment",
|
|
23
|
+
Announcement = "announcement",
|
|
24
|
+
Profile = "profile",
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Information about a narrative chart embedded in content.
|
|
29
|
+
*/
|
|
30
|
+
export interface NarrativeChartInfo {
|
|
31
|
+
name: string
|
|
32
|
+
title: string
|
|
33
|
+
chartConfigId: string
|
|
34
|
+
parentChartSlug: string
|
|
35
|
+
queryParamsForParentChart: QueryParams
|
|
36
|
+
latestArchivedParent?: ArchivedPageVersion
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Detail on demand entry - used for interactive tooltips on terms.
|
|
41
|
+
*/
|
|
42
|
+
export interface EnrichedDetail {
|
|
43
|
+
id: string
|
|
44
|
+
text: string
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Dictionary mapping term IDs to their detail definitions.
|
|
49
|
+
*/
|
|
50
|
+
export type DetailDictionary = Record<string, EnrichedDetail>
|
|
51
|
+
|
|
52
|
+
// =====================================================
|
|
53
|
+
// Stub types for CMS integration
|
|
54
|
+
// These are minimal stubs for type compatibility.
|
|
55
|
+
// The actual CMS functionality is not used by the charts library.
|
|
56
|
+
// =====================================================
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* User country information from geolocation.
|
|
60
|
+
*/
|
|
61
|
+
export interface UserCountryInformation {
|
|
62
|
+
code: string
|
|
63
|
+
name: string
|
|
64
|
+
short_code_v2?: string
|
|
65
|
+
continent?: string
|
|
66
|
+
regions?: string[]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Base interface for Gdoc content.
|
|
71
|
+
*/
|
|
72
|
+
export interface OwidGdocBaseInterface {
|
|
73
|
+
id: string
|
|
74
|
+
slug: string
|
|
75
|
+
content: OwidGdocContent
|
|
76
|
+
published: boolean
|
|
77
|
+
createdAt: Date
|
|
78
|
+
publishedAt: Date | null
|
|
79
|
+
updatedAt: Date | null
|
|
80
|
+
// Allow additional properties for CMS-specific fields
|
|
81
|
+
contentMd5?: string
|
|
82
|
+
breadcrumbs?: unknown
|
|
83
|
+
manualBreadcrumbs?: unknown
|
|
84
|
+
tags?: unknown[]
|
|
85
|
+
linkedAuthors?: unknown[]
|
|
86
|
+
linkedDocuments?: unknown[]
|
|
87
|
+
linkedStaticViz?: unknown[]
|
|
88
|
+
linkedCharts?: unknown[]
|
|
89
|
+
linkedNarrativeCharts?: unknown[]
|
|
90
|
+
linkedIndicators?: unknown[]
|
|
91
|
+
imageMetadata?: unknown
|
|
92
|
+
relatedCharts?: unknown[]
|
|
93
|
+
donors?: unknown
|
|
94
|
+
homepageMetadata?: unknown
|
|
95
|
+
latestDataInsights?: unknown[]
|
|
96
|
+
latestWorkLinks?: unknown[]
|
|
97
|
+
[key: string]: unknown
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Gdoc content type.
|
|
102
|
+
*/
|
|
103
|
+
export interface OwidGdocContent {
|
|
104
|
+
type: OwidGdocType
|
|
105
|
+
title?: string
|
|
106
|
+
body?: OwidEnrichedGdocBlock[]
|
|
107
|
+
[key: string]: unknown
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Generic Gdoc interface.
|
|
112
|
+
*/
|
|
113
|
+
export type OwidGdoc =
|
|
114
|
+
| OwidGdocPostInterface
|
|
115
|
+
| OwidGdocDataInsightInterface
|
|
116
|
+
| OwidGdocAuthorInterface
|
|
117
|
+
| OwidGdocAboutInterface
|
|
118
|
+
| OwidGdocHomepageInterface
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* JSON representation of a Gdoc.
|
|
122
|
+
*/
|
|
123
|
+
export interface OwidGdocJSON {
|
|
124
|
+
id: string
|
|
125
|
+
slug: string
|
|
126
|
+
content: OwidGdocContent
|
|
127
|
+
published: boolean
|
|
128
|
+
createdAt: string
|
|
129
|
+
publishedAt: string | null
|
|
130
|
+
updatedAt: string | null
|
|
131
|
+
[key: string]: unknown
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Post (article/topic page) interface.
|
|
136
|
+
*/
|
|
137
|
+
export interface OwidGdocPostInterface extends OwidGdocBaseInterface {
|
|
138
|
+
content: OwidGdocPostContent
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface OwidGdocPostContent extends OwidGdocContent {
|
|
142
|
+
type:
|
|
143
|
+
| OwidGdocType.Article
|
|
144
|
+
| OwidGdocType.TopicPage
|
|
145
|
+
| OwidGdocType.LinearTopicPage
|
|
146
|
+
| OwidGdocType.Fragment
|
|
147
|
+
| OwidGdocType.AboutPage
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Data insight interface.
|
|
152
|
+
*/
|
|
153
|
+
export interface OwidGdocDataInsightInterface extends OwidGdocBaseInterface {
|
|
154
|
+
content: OwidGdocDataInsightContent
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface OwidGdocDataInsightContent extends OwidGdocContent {
|
|
158
|
+
type: OwidGdocType.DataInsight
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Author interface.
|
|
163
|
+
*/
|
|
164
|
+
export interface OwidGdocAuthorInterface extends OwidGdocBaseInterface {
|
|
165
|
+
content: OwidGdocAuthorContent
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface OwidGdocAuthorContent extends OwidGdocContent {
|
|
169
|
+
type: OwidGdocType.Author
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* About page interface.
|
|
174
|
+
*/
|
|
175
|
+
export interface OwidGdocAboutInterface extends OwidGdocBaseInterface {
|
|
176
|
+
content: OwidGdocAboutContent
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export interface OwidGdocAboutContent extends OwidGdocContent {
|
|
180
|
+
type: OwidGdocType.AboutPage
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Homepage interface.
|
|
185
|
+
*/
|
|
186
|
+
export interface OwidGdocHomepageInterface extends OwidGdocBaseInterface {
|
|
187
|
+
content: OwidGdocHomepageContent
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export interface OwidGdocHomepageContent extends OwidGdocContent {
|
|
191
|
+
type: OwidGdocType.Homepage
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// =====================================================
|
|
195
|
+
// Block and Span types (for content traversal)
|
|
196
|
+
// =====================================================
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Base interface for enriched Gdoc blocks.
|
|
200
|
+
*/
|
|
201
|
+
export interface OwidEnrichedGdocBlock {
|
|
202
|
+
type: string
|
|
203
|
+
parseErrors?: unknown[]
|
|
204
|
+
[key: string]: unknown
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Base interface for spans (inline content).
|
|
209
|
+
*/
|
|
210
|
+
export interface Span {
|
|
211
|
+
spanType: string
|
|
212
|
+
children?: Span[]
|
|
213
|
+
[key: string]: unknown
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Key insights slide block.
|
|
218
|
+
*/
|
|
219
|
+
export interface EnrichedBlockKeyInsightsSlide extends OwidEnrichedGdocBlock {
|
|
220
|
+
type: "key-insights-slide"
|
|
221
|
+
title?: string
|
|
222
|
+
[key: string]: unknown
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Topic page intro related topic.
|
|
227
|
+
*/
|
|
228
|
+
export interface EnrichedTopicPageIntroRelatedTopic {
|
|
229
|
+
text?: string
|
|
230
|
+
url?: string
|
|
231
|
+
[key: string]: unknown
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Topic page intro download button.
|
|
236
|
+
*/
|
|
237
|
+
export interface EnrichedTopicPageIntroDownloadButton {
|
|
238
|
+
text?: string
|
|
239
|
+
url?: string
|
|
240
|
+
[key: string]: unknown
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Hybrid link (can be internal or external).
|
|
245
|
+
*/
|
|
246
|
+
export interface EnrichedHybridLink {
|
|
247
|
+
url?: string
|
|
248
|
+
text?: string
|
|
249
|
+
[key: string]: unknown
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// =====================================================
|
|
253
|
+
// TOC types
|
|
254
|
+
// =====================================================
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Table of contents heading with title and supertitle.
|
|
258
|
+
*/
|
|
259
|
+
export interface TocHeadingWithTitleSupertitle {
|
|
260
|
+
text: string
|
|
261
|
+
slug: string
|
|
262
|
+
isSubheading?: boolean
|
|
263
|
+
supertitle?: string
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// =====================================================
|
|
267
|
+
// Data display types
|
|
268
|
+
// =====================================================
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Source information for display in data pages.
|
|
272
|
+
*/
|
|
273
|
+
export interface DisplaySource {
|
|
274
|
+
label: string
|
|
275
|
+
description?: string
|
|
276
|
+
dataPublishedBy?: string
|
|
277
|
+
retrievedOn?: string
|
|
278
|
+
retrievedFrom?: string
|
|
279
|
+
citation?: string
|
|
280
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export const logBinningStrategies = [
|
|
2
|
+
"log-auto",
|
|
3
|
+
"log-1-2-5",
|
|
4
|
+
"log-1-3",
|
|
5
|
+
"log-10",
|
|
6
|
+
] as const
|
|
7
|
+
|
|
8
|
+
export const equalSizeBinningStrategies = [
|
|
9
|
+
"equalSizeBins-normal",
|
|
10
|
+
"equalSizeBins-few-bins",
|
|
11
|
+
"equalSizeBins-many-bins",
|
|
12
|
+
"equalSizeBins-percent",
|
|
13
|
+
] as const
|
|
14
|
+
|
|
15
|
+
export const automaticBinningStrategies = [
|
|
16
|
+
"auto",
|
|
17
|
+
...logBinningStrategies,
|
|
18
|
+
...equalSizeBinningStrategies,
|
|
19
|
+
] as const
|
|
20
|
+
|
|
21
|
+
export const binningStrategiesIncludingManual = [
|
|
22
|
+
"manual",
|
|
23
|
+
...automaticBinningStrategies,
|
|
24
|
+
] as const
|
|
25
|
+
|
|
26
|
+
export type LogBinningStrategy = (typeof logBinningStrategies)[number]
|
|
27
|
+
export type EqualSizeBinningStrategy =
|
|
28
|
+
(typeof equalSizeBinningStrategies)[number]
|
|
29
|
+
|
|
30
|
+
export type ResolvedLogBinningStrategy = Exclude<LogBinningStrategy, "log-auto">
|
|
31
|
+
|
|
32
|
+
export type AutomaticBinningStrategy =
|
|
33
|
+
(typeof automaticBinningStrategies)[number]
|
|
34
|
+
|
|
35
|
+
export type ResolvedBinningStrategy = Exclude<AutomaticBinningStrategy, "auto">
|
|
36
|
+
export type BinningStrategyIncludingManual =
|
|
37
|
+
(typeof binningStrategiesIncludingManual)[number]
|
|
38
|
+
|
|
39
|
+
export const binningMidpointModes = [
|
|
40
|
+
undefined, // Automatic
|
|
41
|
+
"none", // No midpoint
|
|
42
|
+
"symmetric", // Symmetric bins around a midpoint, with negBins = -1 * posBins
|
|
43
|
+
"same-num-bins", // Symmetric bins around a midpoint, with negBins.length = posBins.length
|
|
44
|
+
"asymmetric", // Bins around a midpoint, with negBins.length not necessarily equal to posBins.length
|
|
45
|
+
] as const
|
|
46
|
+
export type MidpointMode = (typeof binningMidpointModes)[number]
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// todo: remove when we ditch Year and YearIsDay
|
|
2
|
+
export const EPOCH_DATE = "2020-01-21"
|
|
3
|
+
|
|
4
|
+
/** The "plot" is a chart without any header, footer or controls */
|
|
5
|
+
export const IDEAL_PLOT_ASPECT_RATIO = 1.8
|
|
6
|
+
|
|
7
|
+
export const GRAPHER_MAP_TYPE = "WorldMap"
|
|
8
|
+
|
|
9
|
+
export const GRAPHER_CHART_TYPES = {
|
|
10
|
+
LineChart: "LineChart",
|
|
11
|
+
ScatterPlot: "ScatterPlot",
|
|
12
|
+
StackedArea: "StackedArea",
|
|
13
|
+
DiscreteBar: "DiscreteBar",
|
|
14
|
+
StackedDiscreteBar: "StackedDiscreteBar",
|
|
15
|
+
SlopeChart: "SlopeChart",
|
|
16
|
+
StackedBar: "StackedBar",
|
|
17
|
+
Marimekko: "Marimekko",
|
|
18
|
+
} as const
|
|
19
|
+
|
|
20
|
+
export const ALL_GRAPHER_CHART_TYPES = Object.values(GRAPHER_CHART_TYPES)
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Grapher tab specified in the config that determines the default tab to show.
|
|
24
|
+
* If `chart` is selected and Grapher has more than one chart tab, then the
|
|
25
|
+
* first chart tab will be active.
|
|
26
|
+
*/
|
|
27
|
+
export const GRAPHER_TAB_CONFIG_OPTIONS = {
|
|
28
|
+
// general
|
|
29
|
+
table: "table",
|
|
30
|
+
map: "map",
|
|
31
|
+
chart: "chart",
|
|
32
|
+
|
|
33
|
+
// chart types
|
|
34
|
+
line: "line",
|
|
35
|
+
scatter: "scatter",
|
|
36
|
+
"stacked-area": "stacked-area",
|
|
37
|
+
"discrete-bar": "discrete-bar",
|
|
38
|
+
"stacked-discrete-bar": "stacked-discrete-bar",
|
|
39
|
+
slope: "slope",
|
|
40
|
+
"stacked-bar": "stacked-bar",
|
|
41
|
+
marimekko: "marimekko",
|
|
42
|
+
} as const
|
|
43
|
+
|
|
44
|
+
/** Internal tab names used in Grapher */
|
|
45
|
+
export const GRAPHER_TAB_NAMES = {
|
|
46
|
+
Table: "Table",
|
|
47
|
+
WorldMap: "WorldMap",
|
|
48
|
+
|
|
49
|
+
...GRAPHER_CHART_TYPES,
|
|
50
|
+
} as const
|
|
51
|
+
|
|
52
|
+
/** Valid values for the `tab` query parameter in Grapher */
|
|
53
|
+
export const GRAPHER_TAB_QUERY_PARAMS = GRAPHER_TAB_CONFIG_OPTIONS
|