@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.
Files changed (404) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +113 -0
  3. package/package.json +137 -0
  4. package/src/components/BodyPortal/BodyPortal.tsx +40 -0
  5. package/src/components/Button/Button.scss +110 -0
  6. package/src/components/Button/Button.tsx +101 -0
  7. package/src/components/Checkbox.scss +93 -0
  8. package/src/components/Checkbox.tsx +47 -0
  9. package/src/components/ExpandableToggle/ExpandableToggle.scss +123 -0
  10. package/src/components/ExpandableToggle/ExpandableToggle.tsx +60 -0
  11. package/src/components/GrapherTabIcon.tsx +156 -0
  12. package/src/components/GrapherTrendArrow.scss +16 -0
  13. package/src/components/GrapherTrendArrow.tsx +30 -0
  14. package/src/components/Halo/Halo.tsx +44 -0
  15. package/src/components/LabeledSwitch/LabeledSwitch.scss +109 -0
  16. package/src/components/LabeledSwitch/LabeledSwitch.tsx +62 -0
  17. package/src/components/MarkdownTextWrap/MarkdownTextWrap.tsx +1173 -0
  18. package/src/components/OverlayHeader.scss +18 -0
  19. package/src/components/OverlayHeader.tsx +29 -0
  20. package/src/components/RadioButton.scss +69 -0
  21. package/src/components/RadioButton.tsx +42 -0
  22. package/src/components/SimpleMarkdownText.tsx +89 -0
  23. package/src/components/TextInput.scss +17 -0
  24. package/src/components/TextInput.tsx +19 -0
  25. package/src/components/TextWrap/TextWrap.tsx +361 -0
  26. package/src/components/TextWrap/TextWrapUtils.ts +32 -0
  27. package/src/components/closeButton/CloseButton.scss +40 -0
  28. package/src/components/closeButton/CloseButton.tsx +27 -0
  29. package/src/components/index.ts +70 -0
  30. package/src/components/loadingIndicator/LoadingIndicator.scss +40 -0
  31. package/src/components/loadingIndicator/LoadingIndicator.tsx +28 -0
  32. package/src/components/markdown/remarkPlainLinks.ts +36 -0
  33. package/src/components/reactUtil.ts +20 -0
  34. package/src/components/stubs/CodeSnippet.tsx +19 -0
  35. package/src/components/stubs/DataCitation.tsx +16 -0
  36. package/src/components/stubs/IndicatorKeyData.tsx +45 -0
  37. package/src/components/stubs/IndicatorProcessing.tsx +15 -0
  38. package/src/components/stubs/IndicatorSources.tsx +15 -0
  39. package/src/components/styles/colors.scss +113 -0
  40. package/src/components/styles/mixins.scss +630 -0
  41. package/src/components/styles/typography.scss +579 -0
  42. package/src/components/styles/util.scss +89 -0
  43. package/src/components/styles/variables.scss +208 -0
  44. package/src/config/ChartsConfig.ts +163 -0
  45. package/src/config/ChartsProvider.tsx +157 -0
  46. package/src/config/index.ts +20 -0
  47. package/src/core-table/CoreTable.ts +1355 -0
  48. package/src/core-table/CoreTableColumns.ts +973 -0
  49. package/src/core-table/CoreTableUtils.ts +793 -0
  50. package/src/core-table/ErrorValues.ts +73 -0
  51. package/src/core-table/OwidTable.ts +1175 -0
  52. package/src/core-table/OwidTableSynthesizers.ts +272 -0
  53. package/src/core-table/OwidTableUtil.ts +76 -0
  54. package/src/core-table/Transforms.ts +484 -0
  55. package/src/core-table/index.ts +82 -0
  56. package/src/explorer/ColumnGrammar.ts +217 -0
  57. package/src/explorer/Explorer.sample.ts +212 -0
  58. package/src/explorer/Explorer.scss +148 -0
  59. package/src/explorer/Explorer.tsx +1283 -0
  60. package/src/explorer/ExplorerConstants.ts +85 -0
  61. package/src/explorer/ExplorerControls.scss +156 -0
  62. package/src/explorer/ExplorerControls.tsx +210 -0
  63. package/src/explorer/ExplorerDecisionMatrix.ts +471 -0
  64. package/src/explorer/ExplorerGrammar.ts +161 -0
  65. package/src/explorer/ExplorerProgram.ts +568 -0
  66. package/src/explorer/ExplorerUtils.ts +59 -0
  67. package/src/explorer/GrapherGrammar.ts +387 -0
  68. package/src/explorer/gridLang/GrammarUtils.ts +121 -0
  69. package/src/explorer/gridLang/GridCell.ts +298 -0
  70. package/src/explorer/gridLang/GridLangConstants.ts +255 -0
  71. package/src/explorer/gridLang/GridProgram.ts +311 -0
  72. package/src/explorer/gridLang/readme.md +17 -0
  73. package/src/explorer/index.ts +69 -0
  74. package/src/explorer/readme.md +19 -0
  75. package/src/explorer/urlMigrations/CO2UrlMigration.ts +46 -0
  76. package/src/explorer/urlMigrations/CovidUrlMigration.ts +37 -0
  77. package/src/explorer/urlMigrations/EnergyUrlMigration.ts +41 -0
  78. package/src/explorer/urlMigrations/ExplorerPageUrlMigrationSpec.ts +12 -0
  79. package/src/explorer/urlMigrations/ExplorerUrlMigrationUtils.ts +45 -0
  80. package/src/explorer/urlMigrations/ExplorerUrlMigrations.ts +33 -0
  81. package/src/explorer/urlMigrations/LegacyCovidUrlMigration.ts +144 -0
  82. package/src/explorer/urlMigrations/readme.md +39 -0
  83. package/src/grapher/axis/Axis.ts +973 -0
  84. package/src/grapher/axis/AxisConfig.ts +179 -0
  85. package/src/grapher/axis/AxisViews.tsx +597 -0
  86. package/src/grapher/barCharts/DiscreteBarChart.tsx +728 -0
  87. package/src/grapher/barCharts/DiscreteBarChartConstants.ts +60 -0
  88. package/src/grapher/barCharts/DiscreteBarChartHelpers.ts +338 -0
  89. package/src/grapher/barCharts/DiscreteBarChartState.ts +354 -0
  90. package/src/grapher/barCharts/DiscreteBarChartThumbnail.tsx +34 -0
  91. package/src/grapher/captionedChart/CaptionedChart.scss +61 -0
  92. package/src/grapher/captionedChart/CaptionedChart.tsx +523 -0
  93. package/src/grapher/captionedChart/Logos.tsx +141 -0
  94. package/src/grapher/captionedChart/LogosSVG.tsx +16 -0
  95. package/src/grapher/captionedChart/StaticChartRasterizer.tsx +178 -0
  96. package/src/grapher/captionedChart/assets/buildcanada-logo-square.svg +15 -0
  97. package/src/grapher/captionedChart/assets/buildcanada-logo.svg +15 -0
  98. package/src/grapher/captionedChart/assets/canadaspends.svg +7 -0
  99. package/src/grapher/captionedChart/readme.md +14 -0
  100. package/src/grapher/chart/Chart.tsx +62 -0
  101. package/src/grapher/chart/ChartAreaContent.tsx +172 -0
  102. package/src/grapher/chart/ChartDimension.ts +121 -0
  103. package/src/grapher/chart/ChartInterface.ts +83 -0
  104. package/src/grapher/chart/ChartManager.ts +113 -0
  105. package/src/grapher/chart/ChartTabs.ts +178 -0
  106. package/src/grapher/chart/ChartTypeMap.tsx +158 -0
  107. package/src/grapher/chart/ChartTypeSwitcher.tsx +26 -0
  108. package/src/grapher/chart/ChartUtils.tsx +364 -0
  109. package/src/grapher/chart/DimensionSlot.ts +45 -0
  110. package/src/grapher/chart/StaticChartWrapper.tsx +94 -0
  111. package/src/grapher/chart/guidedChartUtils.ts +82 -0
  112. package/src/grapher/color/BinningStrategies.ts +484 -0
  113. package/src/grapher/color/BinningStrategyEqualSizeBins.ts +132 -0
  114. package/src/grapher/color/BinningStrategyLogarithmic.ts +121 -0
  115. package/src/grapher/color/CategoricalColorAssigner.ts +97 -0
  116. package/src/grapher/color/ColorBrewerSchemes.ts +80 -0
  117. package/src/grapher/color/ColorConstants.ts +20 -0
  118. package/src/grapher/color/ColorScale.ts +339 -0
  119. package/src/grapher/color/ColorScaleBin.ts +147 -0
  120. package/src/grapher/color/ColorScaleConfig.ts +204 -0
  121. package/src/grapher/color/ColorScheme.ts +137 -0
  122. package/src/grapher/color/ColorSchemes.ts +149 -0
  123. package/src/grapher/color/ColorUtils.ts +86 -0
  124. package/src/grapher/color/CustomSchemes.ts +1772 -0
  125. package/src/grapher/color/readme.md +84 -0
  126. package/src/grapher/comparisonLine/ComparisonLine.tsx +31 -0
  127. package/src/grapher/comparisonLine/ComparisonLineConstants.ts +11 -0
  128. package/src/grapher/comparisonLine/ComparisonLineGenerator.ts +60 -0
  129. package/src/grapher/comparisonLine/ComparisonLineHelpers.ts +10 -0
  130. package/src/grapher/comparisonLine/CustomComparisonLine.tsx +159 -0
  131. package/src/grapher/comparisonLine/VerticalComparisonLine.tsx +208 -0
  132. package/src/grapher/controls/ActionButtons.scss +97 -0
  133. package/src/grapher/controls/ActionButtons.tsx +453 -0
  134. package/src/grapher/controls/CommandPalette.scss +50 -0
  135. package/src/grapher/controls/CommandPalette.tsx +74 -0
  136. package/src/grapher/controls/ContentSwitchers.scss +93 -0
  137. package/src/grapher/controls/ContentSwitchers.tsx +238 -0
  138. package/src/grapher/controls/Controls.scss +158 -0
  139. package/src/grapher/controls/DataTableFilterDropdown.scss +7 -0
  140. package/src/grapher/controls/DataTableFilterDropdown.tsx +168 -0
  141. package/src/grapher/controls/DataTableSearchField.scss +3 -0
  142. package/src/grapher/controls/DataTableSearchField.tsx +76 -0
  143. package/src/grapher/controls/Dropdown.scss +252 -0
  144. package/src/grapher/controls/Dropdown.tsx +235 -0
  145. package/src/grapher/controls/EntitySelectionToggle.tsx +135 -0
  146. package/src/grapher/controls/MapRegionDropdown.scss +3 -0
  147. package/src/grapher/controls/MapRegionDropdown.tsx +104 -0
  148. package/src/grapher/controls/MapResetButton.tsx +115 -0
  149. package/src/grapher/controls/MapZoomDropdown.scss +9 -0
  150. package/src/grapher/controls/MapZoomDropdown.tsx +270 -0
  151. package/src/grapher/controls/MapZoomToSelectionButton.tsx +87 -0
  152. package/src/grapher/controls/SearchField.scss +78 -0
  153. package/src/grapher/controls/SearchField.tsx +63 -0
  154. package/src/grapher/controls/SettingsMenu.scss +191 -0
  155. package/src/grapher/controls/SettingsMenu.tsx +399 -0
  156. package/src/grapher/controls/ShareMenu.scss +58 -0
  157. package/src/grapher/controls/ShareMenu.tsx +304 -0
  158. package/src/grapher/controls/SortIcon.tsx +39 -0
  159. package/src/grapher/controls/VerticalScrollContainer.tsx +263 -0
  160. package/src/grapher/controls/controlsRow/ControlsRow.tsx +168 -0
  161. package/src/grapher/controls/dropdown-icons.scss +4 -0
  162. package/src/grapher/controls/entityPicker/EntityPicker.scss +255 -0
  163. package/src/grapher/controls/entityPicker/EntityPicker.tsx +816 -0
  164. package/src/grapher/controls/entityPicker/EntityPickerConstants.ts +23 -0
  165. package/src/grapher/controls/globalEntitySelector/GlobalEntitySelector.scss +129 -0
  166. package/src/grapher/controls/globalEntitySelector/GlobalEntitySelector.tsx +463 -0
  167. package/src/grapher/controls/globalEntitySelector/GlobalEntitySelectorConstants.ts +3 -0
  168. package/src/grapher/controls/globalEntitySelector/readme.md +17 -0
  169. package/src/grapher/controls/settings/AbsRelToggle.tsx +64 -0
  170. package/src/grapher/controls/settings/AxisScaleToggle.tsx +53 -0
  171. package/src/grapher/controls/settings/FacetStrategySelector.tsx +110 -0
  172. package/src/grapher/controls/settings/FacetYDomainToggle.tsx +51 -0
  173. package/src/grapher/controls/settings/NoDataAreaToggle.tsx +38 -0
  174. package/src/grapher/controls/settings/ZoomToggle.tsx +36 -0
  175. package/src/grapher/core/EntitiesByRegionType.ts +174 -0
  176. package/src/grapher/core/EntityCodes.ts +19 -0
  177. package/src/grapher/core/EntityUrlBuilder.ts +200 -0
  178. package/src/grapher/core/FetchingGrapher.tsx +156 -0
  179. package/src/grapher/core/Grapher.tsx +760 -0
  180. package/src/grapher/core/GrapherAnalytics.ts +229 -0
  181. package/src/grapher/core/GrapherConstants.ts +173 -0
  182. package/src/grapher/core/GrapherState.tsx +3659 -0
  183. package/src/grapher/core/GrapherUrl.ts +184 -0
  184. package/src/grapher/core/GrapherUrlMigrations.ts +29 -0
  185. package/src/grapher/core/GrapherUseHelpers.tsx +147 -0
  186. package/src/grapher/core/LegacyToOwidTable.ts +841 -0
  187. package/src/grapher/core/grapher.entry.ts +5 -0
  188. package/src/grapher/core/grapher.scss +257 -0
  189. package/src/grapher/core/loadGrapherTableHelpers.ts +116 -0
  190. package/src/grapher/core/loadVariable.ts +104 -0
  191. package/src/grapher/core/relatedQuestion.ts +12 -0
  192. package/src/grapher/core/typography.scss +206 -0
  193. package/src/grapher/dataTable/DataTable.sample.ts +206 -0
  194. package/src/grapher/dataTable/DataTable.scss +249 -0
  195. package/src/grapher/dataTable/DataTable.tsx +1332 -0
  196. package/src/grapher/dataTable/DataTableConstants.ts +186 -0
  197. package/src/grapher/entitySelector/EntitySelector.scss +255 -0
  198. package/src/grapher/entitySelector/EntitySelector.tsx +1838 -0
  199. package/src/grapher/facet/FacetChart.tsx +943 -0
  200. package/src/grapher/facet/FacetChartConstants.ts +24 -0
  201. package/src/grapher/facet/FacetChartUtils.ts +51 -0
  202. package/src/grapher/facet/FacetMap.tsx +604 -0
  203. package/src/grapher/facet/FacetMapConstants.ts +23 -0
  204. package/src/grapher/facet/readme.md +13 -0
  205. package/src/grapher/focus/FocusArray.ts +79 -0
  206. package/src/grapher/footer/Footer.scss +63 -0
  207. package/src/grapher/footer/Footer.tsx +809 -0
  208. package/src/grapher/footer/FooterManager.ts +44 -0
  209. package/src/grapher/fullScreen/FullScreen.scss +11 -0
  210. package/src/grapher/fullScreen/FullScreen.tsx +61 -0
  211. package/src/grapher/header/Header.scss +35 -0
  212. package/src/grapher/header/Header.tsx +372 -0
  213. package/src/grapher/header/HeaderManager.ts +28 -0
  214. package/src/grapher/index.ts +157 -0
  215. package/src/grapher/interaction/InteractionState.ts +60 -0
  216. package/src/grapher/legend/HorizontalColorLegends.tsx +923 -0
  217. package/src/grapher/legend/LegendInteractionState.ts +40 -0
  218. package/src/grapher/legend/VerticalColorLegend.tsx +295 -0
  219. package/src/grapher/lineCharts/LineChart.tsx +968 -0
  220. package/src/grapher/lineCharts/LineChartConstants.ts +89 -0
  221. package/src/grapher/lineCharts/LineChartHelpers.ts +184 -0
  222. package/src/grapher/lineCharts/LineChartState.ts +394 -0
  223. package/src/grapher/lineCharts/LineChartThumbnail.tsx +437 -0
  224. package/src/grapher/lineCharts/Lines.tsx +258 -0
  225. package/src/grapher/lineLegend/LineLegend.tsx +723 -0
  226. package/src/grapher/lineLegend/LineLegendConstants.ts +9 -0
  227. package/src/grapher/lineLegend/LineLegendFilterAlgorithms.ts +143 -0
  228. package/src/grapher/lineLegend/LineLegendHelpers.ts +253 -0
  229. package/src/grapher/lineLegend/LineLegendTypes.ts +32 -0
  230. package/src/grapher/mapCharts/CanadaTopology.ts +17922 -0
  231. package/src/grapher/mapCharts/ChoroplethGlobe.tsx +949 -0
  232. package/src/grapher/mapCharts/ChoroplethMap.tsx +662 -0
  233. package/src/grapher/mapCharts/GeoFeatures.ts +184 -0
  234. package/src/grapher/mapCharts/GlobeController.ts +496 -0
  235. package/src/grapher/mapCharts/MapAnnotationPlacements.json +1040 -0
  236. package/src/grapher/mapCharts/MapAnnotationPlacements.ts +31 -0
  237. package/src/grapher/mapCharts/MapAnnotations.ts +723 -0
  238. package/src/grapher/mapCharts/MapChart.sample.ts +59 -0
  239. package/src/grapher/mapCharts/MapChart.scss +5 -0
  240. package/src/grapher/mapCharts/MapChart.tsx +720 -0
  241. package/src/grapher/mapCharts/MapChartConstants.ts +260 -0
  242. package/src/grapher/mapCharts/MapChartState.ts +416 -0
  243. package/src/grapher/mapCharts/MapChartThumbnail.tsx +25 -0
  244. package/src/grapher/mapCharts/MapComponents.tsx +338 -0
  245. package/src/grapher/mapCharts/MapConfig.ts +156 -0
  246. package/src/grapher/mapCharts/MapHelpers.ts +181 -0
  247. package/src/grapher/mapCharts/MapProjections.ts +49 -0
  248. package/src/grapher/mapCharts/MapSparkline.tsx +257 -0
  249. package/src/grapher/mapCharts/MapTooltip.scss +49 -0
  250. package/src/grapher/mapCharts/MapTooltip.tsx +409 -0
  251. package/src/grapher/mapCharts/MapTopology.ts +1766 -0
  252. package/src/grapher/mapCharts/d3-bboxCollide.js +204 -0
  253. package/src/grapher/mapCharts/d3-geo-projection.ts +198 -0
  254. package/src/grapher/modal/DownloadIcons.tsx +39 -0
  255. package/src/grapher/modal/DownloadModal.scss +300 -0
  256. package/src/grapher/modal/DownloadModal.tsx +1226 -0
  257. package/src/grapher/modal/EmbedModal.scss +40 -0
  258. package/src/grapher/modal/EmbedModal.tsx +160 -0
  259. package/src/grapher/modal/EntitySelectorModal.tsx +59 -0
  260. package/src/grapher/modal/Modal.scss +31 -0
  261. package/src/grapher/modal/Modal.tsx +90 -0
  262. package/src/grapher/modal/ModalHeader.scss +12 -0
  263. package/src/grapher/modal/ModalHeader.tsx +16 -0
  264. package/src/grapher/modal/SourcesDescriptions.scss +87 -0
  265. package/src/grapher/modal/SourcesDescriptions.tsx +89 -0
  266. package/src/grapher/modal/SourcesKeyDataTable.scss +49 -0
  267. package/src/grapher/modal/SourcesKeyDataTable.tsx +87 -0
  268. package/src/grapher/modal/SourcesModal.scss +301 -0
  269. package/src/grapher/modal/SourcesModal.tsx +568 -0
  270. package/src/grapher/noDataModal/NoDataModal.tsx +125 -0
  271. package/src/grapher/scatterCharts/ConnectedScatterLegend.tsx +143 -0
  272. package/src/grapher/scatterCharts/MultiColorPolyline.tsx +129 -0
  273. package/src/grapher/scatterCharts/NoDataSection.scss +14 -0
  274. package/src/grapher/scatterCharts/NoDataSection.tsx +56 -0
  275. package/src/grapher/scatterCharts/ScatterPlotChart.tsx +792 -0
  276. package/src/grapher/scatterCharts/ScatterPlotChartConstants.ts +157 -0
  277. package/src/grapher/scatterCharts/ScatterPlotChartState.ts +678 -0
  278. package/src/grapher/scatterCharts/ScatterPlotChartThumbnail.tsx +155 -0
  279. package/src/grapher/scatterCharts/ScatterPlotTooltip.tsx +560 -0
  280. package/src/grapher/scatterCharts/ScatterPoints.tsx +153 -0
  281. package/src/grapher/scatterCharts/ScatterPointsWithLabels.tsx +708 -0
  282. package/src/grapher/scatterCharts/ScatterSizeLegend.tsx +327 -0
  283. package/src/grapher/scatterCharts/ScatterUtils.ts +265 -0
  284. package/src/grapher/scatterCharts/Triangle.tsx +41 -0
  285. package/src/grapher/schema/README.md +33 -0
  286. package/src/grapher/schema/defaultGrapherConfig.ts +100 -0
  287. package/src/grapher/schema/grapher-schema.009.yaml +781 -0
  288. package/src/grapher/schema/migrations/helpers.ts +58 -0
  289. package/src/grapher/schema/migrations/migrate.ts +75 -0
  290. package/src/grapher/schema/migrations/migrations.ts +158 -0
  291. package/src/grapher/selection/MapSelectionArray.ts +99 -0
  292. package/src/grapher/selection/SelectionArray.ts +71 -0
  293. package/src/grapher/selection/readme.md +16 -0
  294. package/src/grapher/sidePanel/SidePanel.scss +10 -0
  295. package/src/grapher/sidePanel/SidePanel.tsx +23 -0
  296. package/src/grapher/slideInDrawer/SlideInDrawer.scss +57 -0
  297. package/src/grapher/slideInDrawer/SlideInDrawer.tsx +125 -0
  298. package/src/grapher/slideshowController/SlideShowController.tsx +43 -0
  299. package/src/grapher/slideshowController/readme.md +7 -0
  300. package/src/grapher/slopeCharts/MarkX.tsx +45 -0
  301. package/src/grapher/slopeCharts/Slope.tsx +102 -0
  302. package/src/grapher/slopeCharts/SlopeChart.tsx +1152 -0
  303. package/src/grapher/slopeCharts/SlopeChartConstants.ts +33 -0
  304. package/src/grapher/slopeCharts/SlopeChartHelpers.ts +73 -0
  305. package/src/grapher/slopeCharts/SlopeChartState.ts +392 -0
  306. package/src/grapher/slopeCharts/SlopeChartThumbnail.tsx +368 -0
  307. package/src/grapher/stackedCharts/AbstractStackedChartState.ts +370 -0
  308. package/src/grapher/stackedCharts/MarimekkoBars.tsx +190 -0
  309. package/src/grapher/stackedCharts/MarimekkoBarsForOneEntity.tsx +168 -0
  310. package/src/grapher/stackedCharts/MarimekkoChart.tsx +1144 -0
  311. package/src/grapher/stackedCharts/MarimekkoChartConstants.ts +112 -0
  312. package/src/grapher/stackedCharts/MarimekkoChartHelpers.ts +21 -0
  313. package/src/grapher/stackedCharts/MarimekkoChartState.ts +465 -0
  314. package/src/grapher/stackedCharts/MarimekkoChartThumbnail.tsx +168 -0
  315. package/src/grapher/stackedCharts/MarimekkoInternalLabels.tsx +124 -0
  316. package/src/grapher/stackedCharts/StackedAreaChart.tsx +678 -0
  317. package/src/grapher/stackedCharts/StackedAreaChartState.ts +34 -0
  318. package/src/grapher/stackedCharts/StackedAreaChartThumbnail.tsx +215 -0
  319. package/src/grapher/stackedCharts/StackedAreas.tsx +223 -0
  320. package/src/grapher/stackedCharts/StackedBarChart.tsx +619 -0
  321. package/src/grapher/stackedCharts/StackedBarChartState.ts +80 -0
  322. package/src/grapher/stackedCharts/StackedBarChartThumbnail.tsx +220 -0
  323. package/src/grapher/stackedCharts/StackedBarSegment.tsx +87 -0
  324. package/src/grapher/stackedCharts/StackedBars.tsx +102 -0
  325. package/src/grapher/stackedCharts/StackedConstants.ts +109 -0
  326. package/src/grapher/stackedCharts/StackedDiscreteBarChart.tsx +270 -0
  327. package/src/grapher/stackedCharts/StackedDiscreteBarChartState.ts +296 -0
  328. package/src/grapher/stackedCharts/StackedDiscreteBarChartThumbnail.tsx +27 -0
  329. package/src/grapher/stackedCharts/StackedDiscreteBars.tsx +648 -0
  330. package/src/grapher/stackedCharts/StackedUtils.ts +142 -0
  331. package/src/grapher/tabs/Tabs.scss +169 -0
  332. package/src/grapher/tabs/Tabs.tsx +54 -0
  333. package/src/grapher/tabs/TabsWithDropdown.scss +62 -0
  334. package/src/grapher/tabs/TabsWithDropdown.tsx +114 -0
  335. package/src/grapher/testData/OwidTestData.sample.ts +273 -0
  336. package/src/grapher/testData/OwidTestData.ts +64 -0
  337. package/src/grapher/timeline/TimelineComponent.scss +139 -0
  338. package/src/grapher/timeline/TimelineComponent.tsx +658 -0
  339. package/src/grapher/timeline/TimelineController.ts +368 -0
  340. package/src/grapher/timeline/readme.md +7 -0
  341. package/src/grapher/tooltip/Tooltip.scss +510 -0
  342. package/src/grapher/tooltip/Tooltip.tsx +294 -0
  343. package/src/grapher/tooltip/TooltipContents.tsx +383 -0
  344. package/src/grapher/tooltip/TooltipProps.ts +123 -0
  345. package/src/grapher/tooltip/TooltipState.ts +81 -0
  346. package/src/grapher/verticalLabels/VerticalLabels.tsx +31 -0
  347. package/src/grapher/verticalLabels/VerticalLabelsState.ts +154 -0
  348. package/src/index.ts +226 -0
  349. package/src/styles/charts.scss +15 -0
  350. package/src/types/NominalType.ts +30 -0
  351. package/src/types/OwidOrigin.ts +18 -0
  352. package/src/types/OwidSource.ts +9 -0
  353. package/src/types/OwidVariable.ts +133 -0
  354. package/src/types/OwidVariableDisplayConfigInterface.ts +49 -0
  355. package/src/types/analyticsTypes.ts +54 -0
  356. package/src/types/dbTypes/Tags.ts +11 -0
  357. package/src/types/domainTypes/Archive.ts +139 -0
  358. package/src/types/domainTypes/Author.ts +28 -0
  359. package/src/types/domainTypes/ContentGraph.ts +76 -0
  360. package/src/types/domainTypes/CoreTableTypes.ts +305 -0
  361. package/src/types/domainTypes/DeployStatus.ts +23 -0
  362. package/src/types/domainTypes/Layout.ts +34 -0
  363. package/src/types/domainTypes/Posts.ts +34 -0
  364. package/src/types/domainTypes/Search.ts +299 -0
  365. package/src/types/domainTypes/Site.ts +8 -0
  366. package/src/types/domainTypes/StaticViz.ts +64 -0
  367. package/src/types/domainTypes/Toc.ts +11 -0
  368. package/src/types/domainTypes/Tombstone.ts +19 -0
  369. package/src/types/domainTypes/Various.ts +79 -0
  370. package/src/types/gdocTypes/Gdoc.ts +280 -0
  371. package/src/types/grapherTypes/BinningStrategyTypes.ts +46 -0
  372. package/src/types/grapherTypes/GrapherConstants.ts +53 -0
  373. package/src/types/grapherTypes/GrapherTypes.ts +743 -0
  374. package/src/types/index.ts +316 -0
  375. package/src/types/wordpressTypes/WordpressTypes.ts +9 -0
  376. package/src/utils/Bounds.ts +439 -0
  377. package/src/utils/BrowserUtils.ts +12 -0
  378. package/src/utils/FuzzySearch.ts +74 -0
  379. package/src/utils/MultiDimDataPageConfig.ts +31 -0
  380. package/src/utils/OwidVariable.ts +82 -0
  381. package/src/utils/PointVector.ts +97 -0
  382. package/src/utils/PromiseCache.ts +36 -0
  383. package/src/utils/PromiseSwitcher.ts +52 -0
  384. package/src/utils/TimeBounds.ts +130 -0
  385. package/src/utils/Tippy.tsx +57 -0
  386. package/src/utils/Util.ts +2369 -0
  387. package/src/utils/archival/archivalDate.ts +48 -0
  388. package/src/utils/dayjs.ts +32 -0
  389. package/src/utils/formatValue.ts +242 -0
  390. package/src/utils/grapherConfigUtils.ts +81 -0
  391. package/src/utils/image.ts +225 -0
  392. package/src/utils/index.ts +318 -0
  393. package/src/utils/isPresent.ts +5 -0
  394. package/src/utils/metadataHelpers.ts +329 -0
  395. package/src/utils/persistable/Persistable.ts +82 -0
  396. package/src/utils/persistable/readme.md +50 -0
  397. package/src/utils/regions.json +5635 -0
  398. package/src/utils/regions.ts +463 -0
  399. package/src/utils/serializers.ts +16 -0
  400. package/src/utils/string.ts +42 -0
  401. package/src/utils/urls/Url.ts +195 -0
  402. package/src/utils/urls/UrlMigration.ts +10 -0
  403. package/src/utils/urls/UrlUtils.ts +54 -0
  404. package/src/utils/urls/readme.md +90 -0
@@ -0,0 +1,781 @@
1
+ $schema: "http://json-schema.org/draft-07/schema#"
2
+ # if you update the required keys, make sure that the mergeGrapherConfigs and
3
+ # diffGrapherConfigs functions both reflect this change
4
+ $id: "https://files.ourworldindata.org/schemas/grapher-schema.009.json"
5
+ required:
6
+ - $schema
7
+ - dimensions
8
+ type: object
9
+ description: |
10
+ Our World In Data grapher configuration. Most of the fields can be left empty and will be
11
+ filled with reasonable default values.
12
+ properties:
13
+ $schema:
14
+ type: string
15
+ description: Url of the concrete schema version to use to validate this document
16
+ format: uri
17
+ default: "https://files.ourworldindata.org/schemas/grapher-schema.009.json"
18
+ # We restrict the $schema field to a single value since we expect all
19
+ # configs in our database to be valid against the latest schema.
20
+ # If we ever need to validate configs against multiple schema versions,
21
+ # we can remove this constraint.
22
+ const: "https://files.ourworldindata.org/schemas/grapher-schema.009.json"
23
+ id:
24
+ type: integer
25
+ description: Internal DB id. Useful internally for OWID but not required if just using grapher directly.
26
+ minimum: 0
27
+ map:
28
+ type: object
29
+ description: Configuration of the world map chart
30
+ properties:
31
+ region:
32
+ type: string
33
+ description: Which region to focus on
34
+ enum:
35
+ - World
36
+ - Europe
37
+ - Africa
38
+ - Asia
39
+ - NorthAmerica
40
+ - SouthAmerica
41
+ - Oceania
42
+ default: World
43
+ hideTimeline:
44
+ type: boolean
45
+ default: false
46
+ description: Whether the timeline should be hidden in the map view and thus the user not be able to change the year
47
+ colorScale:
48
+ $ref: "#/$defs/colorScale"
49
+ timeTolerance:
50
+ type: integer
51
+ description: |
52
+ Tolerance to use. If data points are missing for a time point, a match is accepted if it lies
53
+ within the specified time period. The unit is the dominating time unit, usually years but can be days for
54
+ daily time series. If not provided, the tolerance specified in the metadata of the indicator is used.
55
+ If that's not specified, 0 is used.
56
+ minimum: 0
57
+ toleranceStrategy:
58
+ type: string
59
+ description: |
60
+ Tolerance strategy to use. Options include accepting matches that are "closest" to the time point in question
61
+ (going forwards and backwards in time), and accepting matches that lie in the past ("backwards") or
62
+ the future ("forwards").
63
+ enum:
64
+ - closest
65
+ - forwards
66
+ - backwards
67
+ default: closest
68
+ tooltipUseCustomLabels:
69
+ type: boolean
70
+ default: false
71
+ description: Show the label from colorSchemeLabels in the tooltip instead of the numeric value
72
+ time:
73
+ description: Select a specific time to be displayed. If startTime is given, this acts as the end time.
74
+ default: "latest"
75
+ oneOf:
76
+ - type: number
77
+ - type: string
78
+ enum:
79
+ - latest
80
+ - earliest
81
+ startTime:
82
+ description: Select a specific start time to be displayed. If given, two maps are shown next to each other.
83
+ oneOf:
84
+ - type: number
85
+ - type: string
86
+ enum:
87
+ - latest
88
+ - earliest
89
+ columnSlug:
90
+ # TODO: remove this once we have a convention of using the first y dimension instead
91
+ description: |
92
+ Column to show in the map tab. Can be a column slug (e.g. in explorers) or a variable ID (as string).
93
+ If not provided, the first y dimension is used.
94
+ type: string
95
+ selectedEntityNames:
96
+ type: array
97
+ description: The initial selection of entities to show on the map
98
+ default: []
99
+ items:
100
+ type:
101
+ - string
102
+ globe:
103
+ type: object
104
+ description: Configuration of the globe
105
+ properties:
106
+ isActive:
107
+ type: boolean
108
+ description: Whether the globe is initially shown
109
+ rotation:
110
+ type: array
111
+ description: Latitude and Longitude of the globe rotation
112
+ items:
113
+ type:
114
+ - number
115
+ zoom:
116
+ type: number
117
+ description: Zoom level of the globe
118
+ additionalProperties: false
119
+ additionalProperties: false
120
+ maxTime:
121
+ description: End point of the initially selected time span.
122
+ default: latest
123
+ oneOf:
124
+ - type: number
125
+ - type: string
126
+ enum:
127
+ - latest
128
+ - earliest
129
+ subtitle:
130
+ type: string
131
+ description: The longer subtitle text to show beneath the title
132
+ selectedEntityNames:
133
+ type: array
134
+ description: The initial selection of entities
135
+ default: []
136
+ items:
137
+ type:
138
+ - string
139
+ focusedSeriesNames:
140
+ type: array
141
+ description: |
142
+ The initially focused chart elements. Is either a list of entity or variable names.
143
+ Only works for line and slope charts for now.
144
+ default: []
145
+ items:
146
+ type:
147
+ - string
148
+ baseColorScheme:
149
+ $ref: "#/$defs/colorScheme"
150
+ yAxis:
151
+ $ref: "#/$defs/axis"
152
+ tab:
153
+ type: string
154
+ description: The tab that is shown initially
155
+ default: chart
156
+ enum:
157
+ - chart
158
+ - map
159
+ - table
160
+ - line
161
+ - slope
162
+ - discrete-bar
163
+ - marimekko
164
+ matchingEntitiesOnly:
165
+ type: boolean
166
+ default: false
167
+ description: Exclude entities that do not belong in any color group
168
+ hideLegend:
169
+ type: boolean
170
+ default: false
171
+ hideLogo:
172
+ type: boolean
173
+ default: false
174
+ timelineMinTime:
175
+ description: |
176
+ The lowest year to show in the timeline. If this is set then the user is not able to see
177
+ any data before this year. If set to "earliest", then the earliest year in the data is used.
178
+ default: earliest
179
+ oneOf:
180
+ - type: number
181
+ - type: string
182
+ enum:
183
+ - earliest
184
+ variantName:
185
+ type: string
186
+ description: Optional internal variant name for distinguishing charts with the same title
187
+ hideTimeline:
188
+ type: boolean
189
+ default: false
190
+ description: "Whether to hide the timeline from the user. If it is hidden then the user can't change the time"
191
+ originUrl:
192
+ type: string
193
+ description: The page containing this chart where more context can be found
194
+ colorScale:
195
+ $ref: "#/$defs/colorScale"
196
+ scatterPointLabelStrategy:
197
+ type: string
198
+ default: year
199
+ description: |
200
+ When a user hovers over a connected series line in a ScatterPlot we show
201
+ a label for each point. By default that value will be from the "year" column
202
+ but by changing this option the column used for the x or y axis could be used instead.
203
+ enum:
204
+ - x
205
+ - "y"
206
+ - year
207
+ selectedFacetStrategy:
208
+ type: string
209
+ default: none
210
+ description: The desired facetting strategy (none for no facetting)
211
+ enum:
212
+ - none
213
+ - entity
214
+ - metric
215
+ sourceDesc:
216
+ type: string
217
+ description: Short comma-separated list of source names
218
+ isPublished:
219
+ type: boolean
220
+ description: Indicates if the chart is published on Our World In Data or still in draft
221
+ invertColorScheme:
222
+ type: boolean
223
+ default: false
224
+ description: Reverse the order of colors in the color scheme
225
+ hideRelativeToggle:
226
+ type: boolean
227
+ default: true
228
+ description: Whether to hide the relative mode UI toggle
229
+ comparisonLines:
230
+ description: List of comparison lines to draw
231
+ type: array
232
+ default: []
233
+ items:
234
+ anyOf:
235
+ - type: object
236
+ description: Comparison line of arbitrary shape defined by a formula. Defaults to `yEquals = x` if not specified
237
+ properties:
238
+ label:
239
+ type: string
240
+ yEquals:
241
+ type: string
242
+ additionalProperties: false
243
+ - type: object
244
+ description: Vertical comparison line drawn at a specific x-value
245
+ properties:
246
+ label:
247
+ type: string
248
+ xEquals:
249
+ type: number
250
+ required: [xEquals]
251
+ additionalProperties: false
252
+ slug:
253
+ type: string
254
+ description: Slug of the chart on Our World In Data
255
+ internalNotes:
256
+ type: string
257
+ version:
258
+ type: integer
259
+ minimum: 0
260
+ logo:
261
+ type: string
262
+ description: Which logo to show on the upper right side
263
+ default: owid
264
+ enum:
265
+ - owid
266
+ - core+owid
267
+ - gv+owid
268
+ entityType:
269
+ type: string
270
+ default: country or region
271
+ description: Display string for naming the primary entities of the data. Default is 'country or region', but you can specify a different one such as 'state' or 'region'
272
+ facettingLabelByYVariables:
273
+ type: string
274
+ default: metric
275
+ description: Display string that replaces 'metric' in the 'Split by metric' label in facet controls (e.g. 'product' displays 'Split by product')
276
+ note:
277
+ type: string
278
+ description: Note displayed in the footer of the chart. To be used for clarifications etc about the data.
279
+ dimensions:
280
+ type: array
281
+ description: List of dimensions and their mapping to variables
282
+ items:
283
+ type: object
284
+ required:
285
+ - property
286
+ - variableId
287
+ properties:
288
+ targetYear:
289
+ type: integer
290
+ description: |
291
+ Charts that can display more than one primary dimensions (i.e. scatter and marimekko)
292
+ sometimes need to "hardcode" one dimension to a specific year. This happens e.g. when
293
+ mixing a daily X variable in a scatter plot with a yearly one, e.g. population.
294
+ property:
295
+ type: string
296
+ description: Which dimension this property maps to
297
+ enum:
298
+ - "y"
299
+ - "x"
300
+ - "size"
301
+ - "color"
302
+ - "table"
303
+ display:
304
+ type: object
305
+ properties:
306
+ isProjection:
307
+ type: boolean
308
+ default: false
309
+ description: |
310
+ Indicates if this time series is a forward projection (if yes then this is rendered
311
+ differently in e.g. line charts)
312
+ plotMarkersOnlyInLineChart:
313
+ type: boolean
314
+ default: false
315
+ description: |
316
+ Indicates if data points should be connected with a line in a line chart
317
+ name:
318
+ type: string
319
+ description: The display string for this variable
320
+ description:
321
+ type: string
322
+ description: Variable description
323
+ $comment: This is a new field that did not exist prior to November 2021 in the DB. It overrides the description on the variable DB table.
324
+ tableDisplay:
325
+ type: object
326
+ description: Configuration for the table sheet for this variable
327
+ properties:
328
+ hideAbsoluteChange:
329
+ type: boolean
330
+ default: false
331
+ hideRelativeChange:
332
+ type: boolean
333
+ default: false
334
+ additionalProperties: false
335
+ tolerance:
336
+ type: integer
337
+ default: 0
338
+ description: |
339
+ Tolerance to use. If data points are missing for a time point, a match is accepted if it lies
340
+ within the specified time period. The unit is the dominating time unit, either years or days.
341
+ minimum: 0
342
+ entityAnnotationsMap:
343
+ type: string
344
+ description: Entity annotations
345
+ yearIsDay:
346
+ type: boolean
347
+ default: false
348
+ description: Switch to indicate if the number in the year column represents a day (since zeroDay) or not i.e. a year
349
+ color:
350
+ type: string
351
+ description: Default color for this time series
352
+ includeInTable:
353
+ type: boolean
354
+ default: true
355
+ description: Whether to render this time series in the table sheet
356
+ shortUnit:
357
+ type: string
358
+ description: Short unit symbol - This is used in tight UI spaces when the value is shown
359
+ conversionFactor:
360
+ type: number
361
+ description: Conversion factor to apply before showing values
362
+ unit:
363
+ type: string
364
+ description: Long unit text - This is shown in the UI when there is more space (e.g. tooltips) after values
365
+ roundingMode:
366
+ type: string
367
+ description: |
368
+ Rounding strategy to use. Supported are rounding to a fixed number of decimals and rounding to significant figures.
369
+ If 'decimalPlaces' is selected, then 'numDecimalPlaces' is used. If 'significantFigures' is selected, then 'numSignificantFigures' is used.
370
+ default: decimalPlaces
371
+ enum:
372
+ - decimalPlaces
373
+ - significantFigures
374
+ numDecimalPlaces:
375
+ type: integer
376
+ description: Number of decimal places to show
377
+ minimum: 0
378
+ default: 2
379
+ numSignificantFigures:
380
+ type: integer
381
+ description: Number of significant figures to show
382
+ minimum: 1
383
+ default: 3
384
+ zeroDay:
385
+ type: string
386
+ description: Iso date day string for the starting date if yearIsDay is used
387
+ default: "2020-01-21"
388
+ additionalProperties: false
389
+ variableId:
390
+ type: integer
391
+ description: The variable id to get the values for this time series
392
+ minimum: 0
393
+ additionalProperties: false
394
+ addCountryMode:
395
+ type: string
396
+ description: Whether the user can change countries, add additional ones or neither
397
+ default: add-country
398
+ enum:
399
+ - add-country
400
+ - change-country
401
+ - disabled
402
+ compareEndPointsOnly:
403
+ type: boolean
404
+ default: false
405
+ description: Drops in between points in scatter plots
406
+ selectedEntityColors:
407
+ type: object
408
+ description: Colors for selected entities
409
+ patternProperties:
410
+ ".*":
411
+ type: string
412
+ relatedQuestions:
413
+ type: array
414
+ description: Links to related questions
415
+ default: []
416
+ items:
417
+ type: object
418
+ properties:
419
+ url:
420
+ type: string
421
+ text:
422
+ type: string
423
+ additionalProperties: false
424
+ title:
425
+ type: string
426
+ description: Big title text of the chart
427
+ chartTypes:
428
+ type: array
429
+ description: Which chart types should be shown
430
+ default: ["LineChart", "DiscreteBar"]
431
+ items:
432
+ type: string
433
+ enum:
434
+ - LineChart
435
+ - ScatterPlot
436
+ - StackedArea
437
+ - DiscreteBar
438
+ - StackedDiscreteBar
439
+ - SlopeChart
440
+ - StackedBar
441
+ - Marimekko
442
+ hasMapTab:
443
+ type: boolean
444
+ default: false
445
+ description: Indicates if the map tab should be shown
446
+ stackMode:
447
+ type: string
448
+ description: Stack mode. Only absolute and relative are actively used.
449
+ default: absolute
450
+ enum:
451
+ - absolute
452
+ - relative
453
+ - grouped
454
+ - stacked
455
+ minTime:
456
+ description: Start point of the initially selected time span.
457
+ default: earliest
458
+ oneOf:
459
+ - type: number
460
+ - type: string
461
+ enum:
462
+ - latest
463
+ - earliest
464
+ hideAnnotationFieldsInTitle:
465
+ type: object
466
+ description: Whether to hide any automatically added title annotations like the selected year
467
+ properties:
468
+ entity:
469
+ type: boolean
470
+ description: Whether to hide the entity annotation
471
+ default: false
472
+ time:
473
+ type: boolean
474
+ description: Whether to hide the time annotation
475
+ default: false
476
+ changeInPrefix:
477
+ type: boolean
478
+ description: Whether to hide "Change in" in relative line charts
479
+ default: false
480
+ excludedEntityNames:
481
+ type: array
482
+ description: Entities that should be excluded (opposite of includedEntityNames)
483
+ default: []
484
+ items:
485
+ type: string
486
+ includedEntityNames:
487
+ type: array
488
+ description: |
489
+ Entities that should be included (opposite of excludedEntityNames).
490
+ If empty, all available entities are used. If set, all entities not specified here are excluded.
491
+ excludedEntityNames are evaluated afterwards and can still remove entities even if they were included before.
492
+ default: []
493
+ items:
494
+ type: string
495
+ xAxis:
496
+ $ref: "#/$defs/axis"
497
+ timelineMaxTime:
498
+ description: |
499
+ The highest year to show in the timeline. If this is set then the user is not able to see
500
+ any data after this year. If set to "latest", then the latest year in the data is used.
501
+ default: latest
502
+ oneOf:
503
+ - type: number
504
+ - type: string
505
+ enum:
506
+ - latest
507
+ hideConnectedScatterLines:
508
+ type: boolean
509
+ default: false
510
+ description: Whether to hide connecting lines on scatter plots when a time range is selected
511
+ showNoDataArea:
512
+ type: boolean
513
+ default: true
514
+ description: Whether to show an area for entities that have no data (currently only used in marimekko charts)
515
+ zoomToSelection:
516
+ type: boolean
517
+ default: false
518
+ description: Whether to zoom to the selected data points
519
+ showYearLabels:
520
+ type: boolean
521
+ default: false
522
+ description: Whether to show year labels in bar charts
523
+ hideTotalValueLabel:
524
+ type: boolean
525
+ default: false
526
+ description: Whether to hide the total value label (used on stacked discrete bar charts)
527
+ hideScatterLabels:
528
+ type: boolean
529
+ default: false
530
+ description: Hide entity names in Scatter plots
531
+ sortBy:
532
+ type: string
533
+ description: Sort criterium (used by stacked bar charts and marimekko)
534
+ default: total
535
+ enum:
536
+ - column
537
+ - total
538
+ - entityName
539
+ - custom
540
+ sortOrder:
541
+ type: string
542
+ description: Sort order (used by stacked bar charts and marimekko)
543
+ default: desc
544
+ enum:
545
+ - desc
546
+ - asc
547
+ sortColumnSlug:
548
+ description: Sort column if sortBy is column (used by stacked bar charts and marimekko)
549
+ type: string
550
+ hideFacetControl:
551
+ type: boolean
552
+ default: true
553
+ description: Whether to hide the faceting control
554
+ entityTypePlural:
555
+ description: Plural of the entity type (i.e. when entityType is 'country' this would be 'countries')
556
+ default: countries and regions
557
+ type: string
558
+ missingDataStrategy:
559
+ type: string
560
+ default: auto
561
+ description: The desired strategy for handling entities with missing data
562
+ enum:
563
+ - auto
564
+ - hide
565
+ - show
566
+ additionalProperties: false
567
+
568
+ $defs:
569
+ axis:
570
+ type: object
571
+ properties:
572
+ removePointsOutsideDomain:
573
+ type: boolean
574
+ default: false
575
+ label:
576
+ type: string
577
+ description: Axis label
578
+ min:
579
+ description: |
580
+ Minimum domain value of the axis. Inferred from data if set to "auto".
581
+ Usually defaults to "auto", but defaults to 0 for line charts on the y-axis.
582
+ oneOf:
583
+ - type: number
584
+ - type: string
585
+ enum:
586
+ - auto
587
+ scaleType:
588
+ type: string
589
+ description: Toggle linear/logarithmic
590
+ default: linear
591
+ enum:
592
+ - linear
593
+ - log
594
+ max:
595
+ description: Maximum domain value of the axis. Inferred from data if set to "auto".
596
+ default: auto
597
+ oneOf:
598
+ - type: number
599
+ - type: string
600
+ enum:
601
+ - auto
602
+ canChangeScaleType:
603
+ type: boolean
604
+ description: Allow user to change lin/log
605
+ default: false
606
+ facetDomain:
607
+ type: string
608
+ description: Whether the axis domain should be the same across faceted charts (if possible)
609
+ default: shared
610
+ enum:
611
+ - independent
612
+ - shared
613
+ additionalProperties: false
614
+ colorScheme:
615
+ type: string
616
+ description: |
617
+ One of the predefined base color schemes.
618
+ If not provided, a default is automatically chosen based on the chart type.
619
+ enum:
620
+ - YlGn
621
+ - YlGnBu
622
+ - GnBu
623
+ - BuGn
624
+ - PuBuGn
625
+ - BuPu
626
+ - RdPu
627
+ - PuRd
628
+ - OrRd
629
+ - YlOrRd
630
+ - YlOrBr
631
+ - Purples
632
+ - Blues
633
+ - Greens
634
+ - Oranges
635
+ - Reds
636
+ - Greys
637
+ - PuOr
638
+ - BrBG
639
+ - PRGn
640
+ - PiYG
641
+ - RdBu
642
+ - RdGy
643
+ - RdYlBu
644
+ - Spectral
645
+ - RdYlGn
646
+ - Accent
647
+ - Dark2
648
+ - Paired
649
+ - Pastel1
650
+ - Pastel2
651
+ - Set1
652
+ - Set2
653
+ - Set3
654
+ - PuBu
655
+ - Magma
656
+ - Inferno
657
+ - Plasma
658
+ - Viridis
659
+ - continents
660
+ - stackedAreaDefault
661
+ - owid-distinct
662
+ - SingleColorDenim
663
+ - SingleColorTeal
664
+ - SingleColorPurple
665
+ - SingleColorDustyCoral
666
+ - SingleColorDarkCopper
667
+ - OwidCategoricalA
668
+ - OwidCategoricalB
669
+ - OwidCategoricalC
670
+ - OwidCategoricalD
671
+ - OwidCategoricalE
672
+ - OwidEnergy
673
+ - OwidEnergyLines
674
+ - OwidDistinctLines
675
+ - BinaryMapPaletteA
676
+ - BinaryMapPaletteB
677
+ - BinaryMapPaletteC
678
+ - BinaryMapPaletteD
679
+ - BinaryMapPaletteE
680
+ - SingleColorGradientDenim
681
+ - SingleColorGradientTeal
682
+ - SingleColorGradientPurple
683
+ - SingleColorGradientDustyCoral
684
+ - SingleColorGradientDarkCopper
685
+ colorScale:
686
+ type: object
687
+ description: Color scale definition
688
+ properties:
689
+ customNumericLabels:
690
+ type: array
691
+ description: |
692
+ Custom labels for each numeric bin. Only applied when strategy is `manual`.
693
+ `null` falls back to default label.
694
+ items:
695
+ type:
696
+ - string
697
+ - "null"
698
+ customCategoryColors:
699
+ type: object
700
+ description: Map of categorical values to colors. Colors are CSS colors, usually in the form `#aa9944`
701
+ patternProperties:
702
+ ".*":
703
+ type: string
704
+ baseColorScheme:
705
+ $ref: "#/$defs/colorScheme"
706
+ customHiddenCategories:
707
+ type: object
708
+ description: Allow hiding categories from the legend
709
+ patternProperties:
710
+ ".*":
711
+ type: boolean
712
+ binningStrategy:
713
+ type: string
714
+ description: The strategy for generating the bin boundaries
715
+ default: auto
716
+ enum:
717
+ - manual
718
+ - auto
719
+ - log-auto
720
+ - log-1-2-5
721
+ - log-1-3
722
+ - log-10
723
+ - equalSizeBins-few-bins
724
+ - equalSizeBins-normal
725
+ - equalSizeBins-many-bins
726
+ - equalSizeBins-percent
727
+ minValue:
728
+ type: number
729
+ description: Minimum value of the color scale, for automated binning.
730
+ maxValue:
731
+ type: number
732
+ description: Maximum value of the color scale, for automated binning.
733
+ midpoint:
734
+ type: number
735
+ default: 0
736
+ description: Midpoint value for the color scale, for automated binning around the midpoint.
737
+ midpointMode:
738
+ type: string
739
+ description: How to handle the midpoint when generating bins. Undefined means automatically choosing between 'none' and 'symmetric'.
740
+ enum:
741
+ - none
742
+ - symmetric
743
+ - same-num-bins
744
+ - asymmetric
745
+ createBinForMidpoint:
746
+ type: boolean
747
+ default: false
748
+ description: Whether to create a separate bin that only contains the midpoint value.
749
+ legendDescription:
750
+ type: string
751
+ description: A custom legend description. Only used in ScatterPlot legend titles for now.
752
+ customNumericColors:
753
+ type: array
754
+ description: |
755
+ Override some or all colors for the numerical color legend.
756
+ Colors are CSS colors, usually in the form `#aa9944`
757
+ `null` falls back the color scheme color.
758
+ items:
759
+ type:
760
+ - string
761
+ - "null"
762
+ customNumericValues:
763
+ type: array
764
+ description: Custom maximum brackets for each numeric bin. Only applied when strategy is `manual`
765
+ items:
766
+ type: number
767
+ customNumericColorsActive:
768
+ type: boolean
769
+ default: false
770
+ description: Whether `customNumericColors` are used to override the color scheme
771
+ colorSchemeInvert:
772
+ type: boolean
773
+ default: false
774
+ description: Reverse the order of colors in the color scheme
775
+ customCategoryLabels:
776
+ type: object
777
+ description: Map of category values to color legend labels.
778
+ patternProperties:
779
+ ".*":
780
+ type: string
781
+ additionalProperties: false