@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,1040 @@
1
+ [
2
+ {
3
+ "id": "Afghanistan",
4
+ "ellipse": { "cx": 65.32, "cy": 33.5, "left": 60.96, "top": 35.75 }
5
+ },
6
+ {
7
+ "id": "Albania",
8
+ "ellipse": { "cx": 19.98, "cy": 40.85, "left": 19.34, "top": 41.71 },
9
+ "direction": "leftBottom",
10
+ "anchorPoint": [20.09, 39.83]
11
+ },
12
+ {
13
+ "id": "Algeria",
14
+ "ellipse": { "cx": 2.38, "cy": 27.59, "left": -4.81, "top": 33.01 }
15
+ },
16
+ {
17
+ "id": "Andorra",
18
+ "direction": "rightBottom",
19
+ "anchorPoint": [1.54, 42.54],
20
+ "bridgeCountries": ["France", "Spain"]
21
+ },
22
+ {
23
+ "id": "Angola",
24
+ "ellipse": { "cx": 17.67, "cy": -13.33, "left": 13.41, "top": -9.28 },
25
+ "direction": "left",
26
+ "anchorPoint": [14.08, -11.48]
27
+ },
28
+ {
29
+ "id": "Antigua and Barbuda",
30
+ "direction": "right",
31
+ "anchorPoint": [-61.79, 17.37]
32
+ },
33
+ {
34
+ "id": "Argentina",
35
+ "ellipse": { "cx": -63.98, "cy": -31.95, "left": -69.7, "top": -24.17 },
36
+ "direction": "rightBottom",
37
+ "anchorPoint": [-65.92, -43.82]
38
+ },
39
+ {
40
+ "id": "Armenia",
41
+ "ellipse": { "cx": 44.54, "cy": 40.57, "left": 43.73, "top": 41.1 }
42
+ },
43
+ {
44
+ "id": "Australia",
45
+ "ellipse": { "cx": 131.63, "cy": -23.79, "left": 119.27, "top": -15.59 }
46
+ },
47
+ {
48
+ "id": "Austria",
49
+ "ellipse": { "cx": 14.25, "cy": 47.1, "left": 12.21, "top": 47.58 }
50
+ },
51
+ {
52
+ "id": "Azerbaijan",
53
+ "ellipse": { "cx": 47.49, "cy": 40.35, "left": 45.87, "top": 41.17 },
54
+ "direction": "rightBottom",
55
+ "anchorPoint": [49.11, 39.65]
56
+ },
57
+ { "id": "Bahamas", "direction": "right", "anchorPoint": [-77.27, 25.51] },
58
+ { "id": "Bahrain", "direction": "rightTop", "anchorPoint": [50.52, 26.1] },
59
+ {
60
+ "id": "Bangladesh",
61
+ "ellipse": { "cx": 89.84, "cy": 23.93, "left": 88.67, "top": 25.27 },
62
+ "direction": "bottom",
63
+ "anchorPoint": [89.7, 22.25]
64
+ },
65
+ { "id": "Barbados", "direction": "right", "anchorPoint": [-59.46, 13.15] },
66
+ {
67
+ "id": "Belarus",
68
+ "ellipse": { "cx": 27.56, "cy": 53.24, "left": 23.78, "top": 54.38 }
69
+ },
70
+ {
71
+ "id": "Belgium",
72
+ "ellipse": { "cx": 4.75, "cy": 50.65, "left": 3.37, "top": 51.12 },
73
+ "direction": "top",
74
+ "anchorPoint": [3.03, 51.1]
75
+ },
76
+ { "id": "Belize", "direction": "right", "anchorPoint": [-88.55, 17.18] },
77
+ {
78
+ "id": "Benin",
79
+ "ellipse": { "cx": 2.29, "cy": 10.18, "left": 1.47, "top": 11.79 },
80
+ "direction": "bottom",
81
+ "anchorPoint": [2.25, 6.2]
82
+ },
83
+ {
84
+ "id": "Bhutan",
85
+ "ellipse": { "cx": 90.47, "cy": 27.47, "left": 89.07, "top": 28.07 }
86
+ },
87
+ {
88
+ "id": "Bolivia",
89
+ "ellipse": { "cx": -64.84, "cy": -16.77, "left": -68.97, "top": -12.43 }
90
+ },
91
+ {
92
+ "id": "Bosnia and Herzegovina",
93
+ "ellipse": { "cx": 17.7, "cy": 44.4, "left": 16.29, "top": 45.07 },
94
+ "direction": "leftBottom",
95
+ "anchorPoint": [18.09, 43],
96
+ "bridgeCountries": ["Croatia"]
97
+ },
98
+ {
99
+ "id": "Botswana",
100
+ "ellipse": { "cx": 24.27, "cy": -21.94, "left": 20.88, "top": -18.89 }
101
+ },
102
+ {
103
+ "id": "Brazil",
104
+ "ellipse": { "cx": -49.05, "cy": -11.83, "left": -59.35, "top": -1.68 }
105
+ },
106
+ { "id": "Brunei", "direction": "leftTop", "anchorPoint": [114.82, 4.72] },
107
+ {
108
+ "id": "Bulgaria",
109
+ "ellipse": { "cx": 25.18, "cy": 42.74, "left": 22.64, "top": 43.64 },
110
+ "direction": "right",
111
+ "anchorPoint": [27.5, 42.88]
112
+ },
113
+ {
114
+ "id": "Burkina Faso",
115
+ "ellipse": { "cx": -1.24, "cy": 12.62, "left": -3.52, "top": 14.22 }
116
+ },
117
+ {
118
+ "id": "Burundi",
119
+ "ellipse": { "cx": 29.82, "cy": -3.53, "left": 29.29, "top": -2.88 }
120
+ },
121
+ {
122
+ "id": "Cambodia",
123
+ "ellipse": { "cx": 104.53, "cy": 12.78, "left": 102.49, "top": 14.32 },
124
+ "direction": "leftBottom",
125
+ "anchorPoint": [103.48, 11.19]
126
+ },
127
+ {
128
+ "id": "Cameroon",
129
+ "ellipse": { "cx": 12.73, "cy": 4.87, "left": 10.99, "top": 7.43 },
130
+ "direction": "leftBottom",
131
+ "anchorPoint": [9.52, 3.88]
132
+ },
133
+ {
134
+ "id": "Canada",
135
+ "ellipse": { "cx": -111.51, "cy": 58.25, "left": -132.65, "top": 62.83 }
136
+ },
137
+ { "id": "Cape Verde", "direction": "top", "anchorPoint": [-24.1, 17.08] },
138
+ {
139
+ "id": "Central African Republic",
140
+ "ellipse": { "cx": 21.55, "cy": 6.91, "left": 18.12, "top": 9.24 }
141
+ },
142
+ {
143
+ "id": "Chad",
144
+ "ellipse": { "cx": 18.9, "cy": 16.32, "left": 15.24, "top": 21.66 }
145
+ },
146
+ { "id": "Chile", "direction": "left", "anchorPoint": [-73.05, -38.3] },
147
+ {
148
+ "id": "China",
149
+ "ellipse": { "cx": 102.62, "cy": 35.16, "left": 86.35, "top": 41.3 }
150
+ },
151
+ {
152
+ "id": "Colombia",
153
+ "ellipse": { "cx": -72.61, "cy": 4.03, "left": -76.99, "top": 6.84 },
154
+ "direction": "left",
155
+ "anchorPoint": [-77.07, 4.44]
156
+ },
157
+ {
158
+ "id": "Comoros",
159
+ "direction": "rightTop",
160
+ "anchorPoint": [43.93, -11.75]
161
+ },
162
+ {
163
+ "id": "Congo",
164
+ "ellipse": { "cx": 15.75, "cy": -0.04, "left": 14.25, "top": 1.74 },
165
+ "direction": "leftBottom",
166
+ "anchorPoint": [11.69, -4.32]
167
+ },
168
+ {
169
+ "id": "Costa Rica",
170
+ "ellipse": { "cx": -84.02, "cy": 10.07, "left": -84.74, "top": 10.69 },
171
+ "direction": "leftBottom",
172
+ "anchorPoint": [-84.1, 9.9]
173
+ },
174
+ {
175
+ "id": "Cote d'Ivoire",
176
+ "ellipse": { "cx": -5.64, "cy": 7.52, "left": -8.07, "top": 9.97 },
177
+ "direction": "bottom",
178
+ "anchorPoint": [-5.38, 5.58]
179
+ },
180
+ {
181
+ "id": "Croatia",
182
+ "ellipse": { "cx": 16.67, "cy": 45.73, "left": 15.65, "top": 46.23 },
183
+ "direction": "leftBottom",
184
+ "anchorPoint": [15.89, 43.85]
185
+ },
186
+ {
187
+ "id": "Cuba",
188
+ "ellipse": { "cx": -75.77, "cy": 20.31, "left": -77.13, "top": 20.71 },
189
+ "direction": "rightTop",
190
+ "anchorPoint": [-75.94, 20.54]
191
+ },
192
+ {
193
+ "id": "Cyprus",
194
+ "direction": "leftBottom",
195
+ "anchorPoint": [32.78, 34.79]
196
+ },
197
+ {
198
+ "id": "Czechia",
199
+ "ellipse": { "cx": 15.16, "cy": 49.7, "left": 12.56, "top": 50.34 }
200
+ },
201
+ {
202
+ "id": "Democratic Republic of Congo",
203
+ "ellipse": { "cx": 23.29, "cy": -1.83, "left": 17.46, "top": 3.85 }
204
+ },
205
+ {
206
+ "id": "Denmark",
207
+ "ellipse": { "cx": 9.26, "cy": 56.42, "left": 8.09, "top": 57.07 },
208
+ "direction": "left",
209
+ "anchorPoint": [8.38, 56.19]
210
+ },
211
+ {
212
+ "id": "Djibouti",
213
+ "ellipse": { "cx": 42.24, "cy": 11.56, "left": 41.74, "top": 12.09 },
214
+ "direction": "rightBottom",
215
+ "anchorPoint": [43.09, 12.23]
216
+ },
217
+ { "id": "Dominica", "direction": "left", "anchorPoint": [-61.29, 15.46] },
218
+ {
219
+ "id": "Dominican Republic",
220
+ "ellipse": { "cx": -70.65, "cy": 19.02, "left": -71.65, "top": 19.61 },
221
+ "direction": "rightTop",
222
+ "anchorPoint": [-70.43, 19.07]
223
+ },
224
+ {
225
+ "id": "East Timor",
226
+ "ellipse": { "cx": 125.62, "cy": -8.85, "left": 125.01, "top": -8.56 },
227
+ "direction": "bottom",
228
+ "anchorPoint": [126, -8.85]
229
+ },
230
+ {
231
+ "id": "Ecuador",
232
+ "ellipse": { "cx": -78.48, "cy": -1.18, "left": -80.26, "top": 0.78 },
233
+ "direction": "left",
234
+ "anchorPoint": [-80.23, -1.31]
235
+ },
236
+ {
237
+ "id": "Egypt",
238
+ "ellipse": { "cx": 29.62, "cy": 25.33, "left": 25, "top": 28.58 }
239
+ },
240
+ {
241
+ "id": "El Salvador",
242
+ "ellipse": { "cx": -89.26, "cy": 13.83, "left": -89.97, "top": 14.2 },
243
+ "direction": "leftBottom",
244
+ "anchorPoint": [-88.87, 13.65]
245
+ },
246
+ {
247
+ "id": "Equatorial Guinea",
248
+ "ellipse": { "cx": 10.38, "cy": 1.65, "left": 9.47, "top": 2.23 },
249
+ "direction": "left",
250
+ "anchorPoint": [9.72, 1.66]
251
+ },
252
+ {
253
+ "id": "Eritrea",
254
+ "ellipse": { "cx": 37.95, "cy": 15.96, "left": 36.69, "top": 16.96 },
255
+ "direction": "rightTop",
256
+ "anchorPoint": [38.63, 16.53]
257
+ },
258
+ {
259
+ "id": "Estonia",
260
+ "ellipse": { "cx": 25.52, "cy": 58.99, "left": 23.37, "top": 59.47 },
261
+ "direction": "left",
262
+ "anchorPoint": [23.6, 58.73]
263
+ },
264
+ {
265
+ "id": "Eswatini",
266
+ "ellipse": { "cx": 31.39, "cy": -26.51, "left": 30.76, "top": -25.85 },
267
+ "direction": "right",
268
+ "anchorPoint": [32.02, -26.5],
269
+ "bridgeCountries": ["South Africa", "Mozambique"]
270
+ },
271
+ {
272
+ "id": "Ethiopia",
273
+ "ellipse": { "cx": 39.05, "cy": 7.97, "left": 34.35, "top": 11.57 }
274
+ },
275
+ {
276
+ "id": "Fiji",
277
+ "ellipse": {
278
+ "cx": 177.94,
279
+ "cy": -17.87,
280
+ "left": 177.33,
281
+ "top": -17.49
282
+ },
283
+ "direction": "right",
284
+ "anchorPoint": [179.35, -17.34]
285
+ },
286
+ {
287
+ "id": "Finland",
288
+ "ellipse": { "cx": 26.05, "cy": 62.65, "left": 21.55, "top": 64.55 },
289
+ "direction": "leftBottom",
290
+ "anchorPoint": [22.5, 60.54]
291
+ },
292
+ {
293
+ "id": "France",
294
+ "ellipse": { "cx": 2.63, "cy": 46.58, "left": -1.15, "top": 49.84 },
295
+ "direction": "left",
296
+ "anchorPoint": [-0.74, 46.05]
297
+ },
298
+ {
299
+ "id": "French Guiana",
300
+ "ellipse": { "cx": -53.05, "cy": 4.02, "left": -54.06, "top": 5.32 },
301
+ "direction": "rightTop",
302
+ "anchorPoint": [-52.95, 4.82]
303
+ },
304
+ {
305
+ "id": "French Southern Territories",
306
+ "ellipse": { "cx": 69.61, "cy": -49.33, "left": 68.73, "top": -48.96 },
307
+ "direction": "right",
308
+ "anchorPoint": [70.81, -49.2]
309
+ },
310
+ {
311
+ "id": "Gabon",
312
+ "ellipse": { "cx": 10.79, "cy": -0.91, "left": 9.03, "top": 1.06 },
313
+ "direction": "leftBottom",
314
+ "anchorPoint": [9.13, -1.06]
315
+ },
316
+ { "id": "Gambia", "direction": "left", "anchorPoint": [-16.52, 13.37] },
317
+ {
318
+ "id": "Georgia",
319
+ "ellipse": { "cx": 43.83, "cy": 42.01, "left": 41.86, "top": 42.56 },
320
+ "direction": "left",
321
+ "anchorPoint": [41.89, 42.01]
322
+ },
323
+ {
324
+ "id": "Germany",
325
+ "ellipse": { "cx": 10.58, "cy": 52.08, "left": 6.84, "top": 53.99 },
326
+ "direction": "left",
327
+ "anchorPoint": [8.95, 54.4]
328
+ },
329
+ {
330
+ "id": "Ghana",
331
+ "ellipse": { "cx": -1.07, "cy": 7.5, "left": -2.64, "top": 9.8 },
332
+ "direction": "bottom",
333
+ "anchorPoint": [-0.99, 5.52]
334
+ },
335
+ {
336
+ "id": "Greece",
337
+ "ellipse": { "cx": 21.57, "cy": 39.51, "left": 20.27, "top": 40.35 },
338
+ "direction": "leftBottom",
339
+ "anchorPoint": [22.07, 37.05]
340
+ },
341
+ {
342
+ "id": "Greenland",
343
+ "ellipse": { "cx": -39.75, "cy": 73.52, "left": -55.21, "top": 77.18 }
344
+ },
345
+ { "id": "Grenada", "direction": "right", "anchorPoint": [-61.64, 12.11] },
346
+ {
347
+ "id": "Guatemala",
348
+ "ellipse": { "cx": -90.49, "cy": 14.99, "left": -91.59, "top": 16.07 },
349
+ "direction": "leftBottom",
350
+ "anchorPoint": [-91.01, 14.59]
351
+ },
352
+ {
353
+ "id": "Guinea",
354
+ "ellipse": { "cx": -12.41, "cy": 11.15, "left": -14.04, "top": 12.3 },
355
+ "direction": "leftBottom",
356
+ "anchorPoint": [-13.98, 10.07]
357
+ },
358
+ {
359
+ "id": "Guinea-Bissau",
360
+ "ellipse": { "cx": -15.18, "cy": 12.04, "left": -16.29, "top": 12.62 },
361
+ "direction": "leftBottom",
362
+ "anchorPoint": [-15.88, 11.77]
363
+ },
364
+ {
365
+ "id": "Guyana",
366
+ "ellipse": { "cx": -58.92, "cy": 5.41, "left": -60.01, "top": 6.98 },
367
+ "direction": "rightTop",
368
+ "anchorPoint": [-58.78, 6.67]
369
+ },
370
+ {
371
+ "id": "Haiti",
372
+ "ellipse": { "cx": -72.21, "cy": 19.22, "left": -72.79, "top": 19.58 },
373
+ "direction": "rightTop",
374
+ "anchorPoint": [-72.27, 19.3]
375
+ },
376
+ {
377
+ "id": "Honduras",
378
+ "ellipse": { "cx": -87.04, "cy": 14.84, "left": -89, "top": 15.76 },
379
+ "direction": "rightTop",
380
+ "anchorPoint": [-84.47, 15.3]
381
+ },
382
+ {
383
+ "id": "Hungary",
384
+ "ellipse": { "cx": 18.95, "cy": 47.04, "left": 16.33, "top": 47.83 }
385
+ },
386
+ {
387
+ "id": "Iceland",
388
+ "ellipse": { "cx": -18.6, "cy": 64.79, "left": -22.93, "top": 65.31 },
389
+ "direction": "right",
390
+ "anchorPoint": [-14.65, 65.07]
391
+ },
392
+ {
393
+ "id": "India",
394
+ "ellipse": { "cx": 79.24, "cy": 22.65, "left": 72.47, "top": 28.4 }
395
+ },
396
+ {
397
+ "id": "Indonesia",
398
+ "ellipse": { "cx": 113.98, "cy": -0.99, "left": 111.34, "top": 1.22 },
399
+ "direction": "leftBottom",
400
+ "anchorPoint": [113.9, -9.1]
401
+ },
402
+ {
403
+ "id": "Iran",
404
+ "ellipse": { "cx": 54.36, "cy": 33.06, "left": 48.19, "top": 36.91 }
405
+ },
406
+ {
407
+ "id": "Iraq",
408
+ "ellipse": { "cx": 42.98, "cy": 33.05, "left": 40.21, "top": 34.99 }
409
+ },
410
+ {
411
+ "id": "Ireland",
412
+ "ellipse": { "cx": -7.71, "cy": 53.24, "left": -9.3, "top": 54.06 },
413
+ "direction": "left",
414
+ "anchorPoint": [-9.07, 53.82]
415
+ },
416
+ { "id": "Israel", "direction": "leftTop", "anchorPoint": [34.59, 31.36] },
417
+ {
418
+ "id": "Italy",
419
+ "ellipse": { "cx": 10.31, "cy": 45.2, "left": 8.27, "top": 46.31 }
420
+ },
421
+ {
422
+ "id": "Jamaica",
423
+ "ellipse": { "cx": -77.27, "cy": 18.12, "left": -78.05, "top": 18.4 },
424
+ "direction": "bottom",
425
+ "anchorPoint": [-77.32, 18.11]
426
+ },
427
+ {
428
+ "id": "Japan",
429
+ "ellipse": { "cx": 138.8, "cy": 36.03, "left": 136.95, "top": 37.25 },
430
+ "direction": "rightBottom",
431
+ "anchorPoint": [139.67, 35.74]
432
+ },
433
+ {
434
+ "id": "Jordan",
435
+ "ellipse": { "cx": 36.4, "cy": 30.72, "left": 35.34, "top": 31.61 }
436
+ },
437
+ {
438
+ "id": "Kazakhstan",
439
+ "ellipse": { "cx": 69.08, "cy": 47.97, "left": 54.75, "top": 51.31 }
440
+ },
441
+ {
442
+ "id": "Kenya",
443
+ "ellipse": { "cx": 38.36, "cy": 0.21, "left": 35.73, "top": 3.57 },
444
+ "direction": "rightBottom",
445
+ "anchorPoint": [40.02, -2.77]
446
+ },
447
+ { "id": "Kiribati", "direction": "right", "anchorPoint": [-156.98, 1.97] },
448
+ {
449
+ "id": "Kosovo",
450
+ "ellipse": { "cx": 20.92, "cy": 42.55, "left": 20.25, "top": 42.97 }
451
+ },
452
+ {
453
+ "id": "Kuwait",
454
+ "ellipse": { "cx": 47.52, "cy": 29.44, "left": 46.91, "top": 29.87 },
455
+ "direction": "right",
456
+ "anchorPoint": [47.88, 29.38]
457
+ },
458
+ {
459
+ "id": "Kyrgyzstan",
460
+ "ellipse": { "cx": 75.56, "cy": 41.85, "left": 72.44, "top": 42.72 }
461
+ },
462
+ {
463
+ "id": "Laos",
464
+ "ellipse": { "cx": 102.57, "cy": 19.54, "left": 101.28, "top": 20.94 }
465
+ },
466
+ {
467
+ "id": "Latvia",
468
+ "ellipse": { "cx": 25.67, "cy": 56.74, "left": 23.48, "top": 57.14 },
469
+ "direction": "left",
470
+ "anchorPoint": [21.52, 57.02]
471
+ },
472
+ { "id": "Lebanon", "direction": "leftTop", "anchorPoint": [35.38, 33.41] },
473
+ {
474
+ "id": "Lesotho",
475
+ "ellipse": { "cx": 28.22, "cy": -29.6, "left": 27.4, "top": -28.99 },
476
+ "direction": "right",
477
+ "anchorPoint": [29.02, -29.74],
478
+ "bridgeCountries": ["South Africa"]
479
+ },
480
+ {
481
+ "id": "Liberia",
482
+ "ellipse": { "cx": -10.21, "cy": 6.98, "left": -11.17, "top": 8 },
483
+ "direction": "leftBottom",
484
+ "anchorPoint": [-9.75, 5.73]
485
+ },
486
+ {
487
+ "id": "Libya",
488
+ "ellipse": { "cx": 17.78, "cy": 27.14, "left": 10.31, "top": 30.08 }
489
+ },
490
+ {
491
+ "id": "Lithuania",
492
+ "ellipse": { "cx": 23.75, "cy": 55.56, "left": 21.18, "top": 56.2 },
493
+ "direction": "left",
494
+ "anchorPoint": [21.41, 55.65]
495
+ },
496
+ {
497
+ "id": "Madagascar",
498
+ "ellipse": { "cx": 46.52, "cy": -19.44, "left": 44.46, "top": -15.76 },
499
+ "direction": "right",
500
+ "anchorPoint": [49.57, -14.55]
501
+ },
502
+ {
503
+ "id": "Malawi",
504
+ "ellipse": { "cx": 33.81, "cy": -13.04, "left": 33.25, "top": -11.69 }
505
+ },
506
+ {
507
+ "id": "Malaysia",
508
+ "ellipse": { "cx": 116.93, "cy": 5.22, "left": 115.52, "top": 6.13 },
509
+ "direction": "leftTop",
510
+ "anchorPoint": [113.13, 2.95]
511
+ },
512
+ { "id": "Maldives", "direction": "bottom", "anchorPoint": [73.38, 3.11] },
513
+ {
514
+ "id": "Mali",
515
+ "ellipse": { "cx": -1.64, "cy": 18.5, "left": -5.71, "top": 21.96 }
516
+ },
517
+ { "id": "Malta", "direction": "right", "anchorPoint": [14.67, 35.88] },
518
+ {
519
+ "id": "Marshall Islands",
520
+ "direction": "right",
521
+ "anchorPoint": [170.65, 6.35]
522
+ },
523
+ {
524
+ "id": "Mauritania",
525
+ "ellipse": { "cx": -9.68, "cy": 19.33, "left": -13.5, "top": 23.09 },
526
+ "direction": "left",
527
+ "anchorPoint": [-15.78, 18.8]
528
+ },
529
+ {
530
+ "id": "Mauritius",
531
+ "direction": "bottom",
532
+ "anchorPoint": [57.53, -20.53]
533
+ },
534
+ {
535
+ "id": "Mexico",
536
+ "ellipse": {
537
+ "cx": -101.25,
538
+ "cy": 21.55,
539
+ "left": -104.98,
540
+ "top": 25.33
541
+ },
542
+ "direction": "leftBottom",
543
+ "anchorPoint": [-102.06, 18.76]
544
+ },
545
+ {
546
+ "id": "Micronesia (country)",
547
+ "direction": "bottom",
548
+ "anchorPoint": [154.45, 5.68]
549
+ },
550
+ {
551
+ "id": "Moldova",
552
+ "ellipse": { "cx": 28.26, "cy": 47.67, "left": 27.43, "top": 48.15 },
553
+ "direction": "rightBottom",
554
+ "anchorPoint": [28.89, 46.15],
555
+ "bridgeCountries": ["Ukraine"]
556
+ },
557
+ {
558
+ "id": "Monaco",
559
+ "direction": "rightBottom",
560
+ "anchorPoint": [7.38, 43.74]
561
+ },
562
+ {
563
+ "id": "Mongolia",
564
+ "ellipse": { "cx": 103, "cy": 46.21, "left": 92.97, "top": 49.56 }
565
+ },
566
+ {
567
+ "id": "Montenegro",
568
+ "ellipse": { "cx": 19.25, "cy": 42.91, "left": 18.64, "top": 43.3 },
569
+ "direction": "leftBottom",
570
+ "anchorPoint": [18.93, 42.35]
571
+ },
572
+ {
573
+ "id": "Morocco",
574
+ "ellipse": { "cx": -6.49, "cy": 32.03, "left": -9.41, "top": 33.7 },
575
+ "direction": "leftTop",
576
+ "anchorPoint": [-8.8, 32.33]
577
+ },
578
+ {
579
+ "id": "Mozambique",
580
+ "ellipse": { "cx": 37.63, "cy": -14.49, "left": 35.69, "top": -11.56 },
581
+ "direction": "right",
582
+ "anchorPoint": [34.35, -20.06]
583
+ },
584
+ {
585
+ "id": "Myanmar",
586
+ "ellipse": { "cx": 95.79, "cy": 21.27, "left": 93.65, "top": 25.35 },
587
+ "direction": "leftBottom",
588
+ "anchorPoint": [94.87, 16.42]
589
+ },
590
+ {
591
+ "id": "Namibia",
592
+ "ellipse": { "cx": 16.97, "cy": -20.29, "left": 13.51, "top": -17.33 },
593
+ "direction": "leftBottom",
594
+ "anchorPoint": [14.71, -22.83]
595
+ },
596
+ { "id": "Nauru", "direction": "right", "anchorPoint": [166.97, -0.53] },
597
+ {
598
+ "id": "Nepal",
599
+ "ellipse": { "cx": 82.47, "cy": 28.83, "left": 80.78, "top": 29.57 }
600
+ },
601
+ {
602
+ "id": "Netherlands",
603
+ "ellipse": { "cx": 5.61, "cy": 52.4, "left": 4.33, "top": 52.95 },
604
+ "direction": "leftTop",
605
+ "anchorPoint": [4.94, 52.95]
606
+ },
607
+ {
608
+ "id": "New Caledonia",
609
+ "direction": "bottom",
610
+ "anchorPoint": [166.34, -21.95]
611
+ },
612
+ {
613
+ "id": "New Zealand",
614
+ "direction": "right",
615
+ "anchorPoint": [174.61, -42.48]
616
+ },
617
+ {
618
+ "id": "Nicaragua",
619
+ "ellipse": { "cx": -85.13, "cy": 12.57, "left": -86.65, "top": 13.98 },
620
+ "direction": "leftBottom",
621
+ "anchorPoint": [-86.15, 12.21]
622
+ },
623
+ {
624
+ "id": "Niger",
625
+ "ellipse": { "cx": 9.31, "cy": 17.09, "left": 4.27, "top": 20.7 }
626
+ },
627
+ {
628
+ "id": "Nigeria",
629
+ "ellipse": { "cx": 7.78, "cy": 9.73, "left": 3.69, "top": 12.98 },
630
+ "direction": "leftBottom",
631
+ "anchorPoint": [6.12, 4.7]
632
+ },
633
+ {
634
+ "id": "North Korea",
635
+ "ellipse": { "cx": 126.32, "cy": 40.11, "left": 124.98, "top": 40.95 },
636
+ "direction": "rightBottom",
637
+ "anchorPoint": [129.16, 41.09]
638
+ },
639
+ {
640
+ "id": "North Macedonia",
641
+ "ellipse": { "cx": 21.77, "cy": 41.64, "left": 20.62, "top": 42.15 }
642
+ },
643
+ {
644
+ "id": "Norway",
645
+ "ellipse": { "cx": 8.65, "cy": 61.29, "left": 5.06, "top": 62.41 },
646
+ "direction": "left",
647
+ "anchorPoint": [6.08, 62.1]
648
+ },
649
+ {
650
+ "id": "Oman",
651
+ "ellipse": { "cx": 56.42, "cy": 20.1, "left": 55.11, "top": 21.17 },
652
+ "direction": "rightBottom",
653
+ "anchorPoint": [56.82, 19.02]
654
+ },
655
+ {
656
+ "id": "Pakistan",
657
+ "ellipse": { "cx": 66.58, "cy": 27.6, "left": 63.5, "top": 29.74 },
658
+ "direction": "bottom",
659
+ "anchorPoint": [65.22, 25.72]
660
+ },
661
+ { "id": "Palau", "direction": "right", "anchorPoint": [134.67, 7.51] },
662
+ {
663
+ "id": "Palestine",
664
+ "direction": "leftTop",
665
+ "anchorPoint": [35.24, 32.37],
666
+ "bridgeCountries": ["Israel"]
667
+ },
668
+ {
669
+ "id": "Panama",
670
+ "ellipse": { "cx": -81.24, "cy": 8.42, "left": -82.14, "top": 8.8 },
671
+ "direction": "leftBottom",
672
+ "anchorPoint": [-81.05, 8.19]
673
+ },
674
+ {
675
+ "id": "Papua New Guinea",
676
+ "ellipse": { "cx": 143.52, "cy": -5.84, "left": 141.02, "top": -3.79 },
677
+ "direction": "top",
678
+ "anchorPoint": [147.46, -3.85]
679
+ },
680
+ {
681
+ "id": "Paraguay",
682
+ "ellipse": { "cx": -57.94, "cy": -23.43, "left": -60.08, "top": -22.2 }
683
+ },
684
+ {
685
+ "id": "Peru",
686
+ "ellipse": { "cx": -76.58, "cy": -6.88, "left": -79.21, "top": -3.12 },
687
+ "direction": "left",
688
+ "anchorPoint": [-76.8, -11.35]
689
+ },
690
+ {
691
+ "id": "Philippines",
692
+ "ellipse": { "cx": 125.45, "cy": 8.09, "left": 124.48, "top": 8.96 },
693
+ "direction": "right",
694
+ "anchorPoint": [125.84, 12.61]
695
+ },
696
+ {
697
+ "id": "Poland",
698
+ "ellipse": { "cx": 18.86, "cy": 52.88, "left": 14.38, "top": 54.43 },
699
+ "direction": "leftTop",
700
+ "anchorPoint": [16.76, 54.35]
701
+ },
702
+ {
703
+ "id": "Portugal",
704
+ "ellipse": { "cx": -7.9, "cy": 40.65, "left": -8.77, "top": 41.79 },
705
+ "direction": "left",
706
+ "anchorPoint": [-9.26, 38.92]
707
+ },
708
+ {
709
+ "id": "Puerto Rico",
710
+ "ellipse": { "cx": -66.43, "cy": 18.24, "left": -67.22, "top": 18.5 },
711
+ "direction": "rightTop",
712
+ "anchorPoint": [-66.51, 18.26]
713
+ },
714
+ { "id": "Qatar", "direction": "right", "anchorPoint": [51.3, 25.36] },
715
+ {
716
+ "id": "Romania",
717
+ "ellipse": { "cx": 24.43, "cy": 45.9, "left": 20.8, "top": 47.1 },
718
+ "direction": "right",
719
+ "anchorPoint": [28.47, 44.54]
720
+ },
721
+ {
722
+ "id": "Russia",
723
+ "ellipse": { "cx": 93.38, "cy": 61.14, "left": 41.48, "top": 66.6 }
724
+ },
725
+ {
726
+ "id": "Rwanda",
727
+ "ellipse": { "cx": 30.24, "cy": -1.84, "left": 29.7, "top": -1.29 }
728
+ },
729
+ {
730
+ "id": "Saint Kitts and Nevis",
731
+ "direction": "left",
732
+ "anchorPoint": [-62.81, 17.3]
733
+ },
734
+ {
735
+ "id": "Saint Lucia",
736
+ "direction": "right",
737
+ "anchorPoint": [-60.91, 13.91]
738
+ },
739
+ {
740
+ "id": "Saint Vincent and the Grenadines",
741
+ "direction": "left",
742
+ "anchorPoint": [-61.3, 13.25]
743
+ },
744
+ { "id": "Samoa", "direction": "bottom", "anchorPoint": [-172.23, -13.94] },
745
+ {
746
+ "id": "San Marino",
747
+ "direction": "rightTop",
748
+ "anchorPoint": [12.44, 43.93],
749
+ "bridgeCountries": ["Italy"]
750
+ },
751
+ {
752
+ "id": "Sao Tome and Principe",
753
+ "direction": "left",
754
+ "anchorPoint": [6.46, 0.21]
755
+ },
756
+ {
757
+ "id": "Saudi Arabia",
758
+ "ellipse": { "cx": 45.31, "cy": 22.73, "left": 39.07, "top": 26.98 }
759
+ },
760
+ {
761
+ "id": "Senegal",
762
+ "ellipse": { "cx": -14.93, "cy": 15.15, "left": -16.83, "top": 16.42 },
763
+ "direction": "left",
764
+ "anchorPoint": [-17.11, 14.7]
765
+ },
766
+ {
767
+ "id": "Serbia",
768
+ "ellipse": { "cx": 20.82, "cy": 44.11, "left": 19.6, "top": 44.94 }
769
+ },
770
+ { "id": "Seychelles", "direction": "right", "anchorPoint": [55.54, -4.7] },
771
+ {
772
+ "id": "Sierra Leone",
773
+ "ellipse": { "cx": -11.78, "cy": 8.55, "left": -12.97, "top": 9.82 },
774
+ "direction": "leftBottom",
775
+ "anchorPoint": [-12.52, 7.71]
776
+ },
777
+ {
778
+ "id": "Singapore",
779
+ "direction": "rightBottom",
780
+ "anchorPoint": [103.84, 1.27]
781
+ },
782
+ {
783
+ "id": "Slovakia",
784
+ "ellipse": { "cx": 19.56, "cy": 48.86, "left": 17.88, "top": 49.22 }
785
+ },
786
+ {
787
+ "id": "Slovenia",
788
+ "ellipse": { "cx": 14.72, "cy": 46.09, "left": 13.72, "top": 46.43 }
789
+ },
790
+ {
791
+ "id": "Solomon Islands",
792
+ "direction": "leftBottom",
793
+ "anchorPoint": [160.22, -10.37]
794
+ },
795
+ {
796
+ "id": "Somalia",
797
+ "ellipse": { "cx": 47.62, "cy": 9.59, "left": 44.59, "top": 10.94 },
798
+ "direction": "rightBottom",
799
+ "anchorPoint": [47.29, 4.31]
800
+ },
801
+ {
802
+ "id": "South Africa",
803
+ "ellipse": { "cx": 22.69, "cy": -30.88, "left": 18.14, "top": -27.81 },
804
+ "direction": "bottom",
805
+ "anchorPoint": [23.51, -33.34]
806
+ },
807
+ {
808
+ "id": "South Korea",
809
+ "ellipse": { "cx": 128.1, "cy": 36.31, "left": 126.73, "top": 37.68 },
810
+ "direction": "right",
811
+ "anchorPoint": [129.07, 36.87]
812
+ },
813
+ {
814
+ "id": "South Sudan",
815
+ "ellipse": { "cx": 29.88, "cy": 7.05, "left": 26.65, "top": 9.5 }
816
+ },
817
+ {
818
+ "id": "Spain",
819
+ "ellipse": { "cx": -3.56, "cy": 40.06, "left": -6.98, "top": 42.2 },
820
+ "direction": "left",
821
+ "anchorPoint": [-8.64, 43.01]
822
+ },
823
+ {
824
+ "id": "Sri Lanka",
825
+ "ellipse": { "cx": 80.63, "cy": 7.59, "left": 79.79, "top": 9.12 },
826
+ "direction": "right",
827
+ "anchorPoint": [81.2, 7.48]
828
+ },
829
+ {
830
+ "id": "Sudan",
831
+ "ellipse": { "cx": 30.34, "cy": 17.05, "left": 23.87, "top": 22 }
832
+ },
833
+ {
834
+ "id": "Suriname",
835
+ "ellipse": { "cx": -55.96, "cy": 4.17, "left": -57.51, "top": 5.77 },
836
+ "direction": "rightTop",
837
+ "anchorPoint": [-55.79, 5.39]
838
+ },
839
+ {
840
+ "id": "Sweden",
841
+ "ellipse": { "cx": 15.25, "cy": 60.04, "left": 12.27, "top": 61.15 },
842
+ "direction": "right",
843
+ "anchorPoint": [16.36, 58.03]
844
+ },
845
+ {
846
+ "id": "Switzerland",
847
+ "ellipse": { "cx": 7.97, "cy": 46.81, "left": 6.29, "top": 47.35 }
848
+ },
849
+ {
850
+ "id": "Syria",
851
+ "ellipse": { "cx": 38.68, "cy": 35.23, "left": 36.21, "top": 36.71 },
852
+ "direction": "left",
853
+ "anchorPoint": [36.09, 35.22]
854
+ },
855
+ {
856
+ "id": "Taiwan",
857
+ "ellipse": { "cx": 120.71, "cy": 23.29, "left": 120.17, "top": 24.19 },
858
+ "direction": "right",
859
+ "anchorPoint": [121.17, 23.62]
860
+ },
861
+ {
862
+ "id": "Tajikistan",
863
+ "ellipse": { "cx": 69.67, "cy": 38.89, "left": 68.19, "top": 39.53 }
864
+ },
865
+ {
866
+ "id": "Tanzania",
867
+ "ellipse": { "cx": 34.05, "cy": -5.52, "left": 30.09, "top": -1.64 },
868
+ "direction": "right",
869
+ "anchorPoint": [38.98, -7.04]
870
+ },
871
+ {
872
+ "id": "Thailand",
873
+ "ellipse": { "cx": 101.66, "cy": 15.42, "left": 100.32, "top": 17.73 },
874
+ "direction": "left",
875
+ "anchorPoint": [98.57, 8.82]
876
+ },
877
+ {
878
+ "id": "Togo",
879
+ "ellipse": { "cx": 1.12, "cy": 7.45, "left": 0.6, "top": 8.81 },
880
+ "direction": "bottom",
881
+ "anchorPoint": [1.43, 6.05]
882
+ },
883
+ { "id": "Tonga", "direction": "right", "anchorPoint": [-173.88, -20.02] },
884
+ {
885
+ "id": "Trinidad and Tobago",
886
+ "direction": "right",
887
+ "anchorPoint": [-61.31, 10.44]
888
+ },
889
+ {
890
+ "id": "Tunisia",
891
+ "ellipse": { "cx": 9.46, "cy": 35.56, "left": 8.38, "top": 37.11 },
892
+ "direction": "rightTop",
893
+ "anchorPoint": [10.87, 33.16]
894
+ },
895
+ {
896
+ "id": "Turkey",
897
+ "ellipse": { "cx": 35.12, "cy": 38.99, "left": 26.8, "top": 41.11 },
898
+ "direction": "bottom",
899
+ "anchorPoint": [29.32, 36.52]
900
+ },
901
+ {
902
+ "id": "Turkmenistan",
903
+ "ellipse": { "cx": 58.3, "cy": 39.71, "left": 54.14, "top": 41.39 },
904
+ "direction": "left",
905
+ "anchorPoint": [53.17, 40.44]
906
+ },
907
+ { "id": "Tuvalu", "direction": "right", "anchorPoint": [-179.59, -8.55] },
908
+ {
909
+ "id": "Uganda",
910
+ "ellipse": { "cx": 32.95, "cy": 1.92, "left": 31.15, "top": 3.79 }
911
+ },
912
+ {
913
+ "id": "Ukraine",
914
+ "ellipse": { "cx": 30.14, "cy": 49.73, "left": 23.72, "top": 51.31 },
915
+ "direction": "rightBottom",
916
+ "anchorPoint": [34.39, 44.86]
917
+ },
918
+ {
919
+ "id": "United Arab Emirates",
920
+ "ellipse": { "cx": 54.22, "cy": 23.4, "left": 53.13, "top": 24.14 },
921
+ "direction": "leftTop",
922
+ "anchorPoint": [55.34, 25.08]
923
+ },
924
+ {
925
+ "id": "United Kingdom",
926
+ "ellipse": { "cx": -1.57, "cy": 52.3, "left": -3.81, "top": 53.79 },
927
+ "direction": "right",
928
+ "anchorPoint": [-2.63, 57.02]
929
+ },
930
+ {
931
+ "id": "United States",
932
+ "ellipse": { "cx": -101.74, "cy": 38.78, "left": -122.73, "top": 45.33 }
933
+ },
934
+ {
935
+ "id": "Uruguay",
936
+ "ellipse": {
937
+ "cx": -55.88,
938
+ "cy": -32.95,
939
+ "left": -58.13,
940
+ "top": -31.18
941
+ },
942
+ "direction": "rightBottom",
943
+ "anchorPoint": [-54.89, -34.33]
944
+ },
945
+ {
946
+ "id": "Uzbekistan",
947
+ "ellipse": { "cx": 62.98, "cy": 42.45, "left": 59.91, "top": 43.56 }
948
+ },
949
+ { "id": "Vanuatu", "direction": "right", "anchorPoint": [167.53, -15.66] },
950
+ {
951
+ "id": "Venezuela",
952
+ "ellipse": { "cx": -64.38, "cy": 7.34, "left": -67.69, "top": 10.11 },
953
+ "direction": "top",
954
+ "anchorPoint": [-66.43, 10.15]
955
+ },
956
+ {
957
+ "id": "Vietnam",
958
+ "ellipse": { "cx": 105.42, "cy": 21.34, "left": 104.48, "top": 23.14 },
959
+ "direction": "right",
960
+ "anchorPoint": [108.92, 12.64]
961
+ },
962
+ {
963
+ "id": "Western Sahara",
964
+ "ellipse": { "cx": -14.68, "cy": 22.5, "left": -16.28, "top": 23.65 },
965
+ "direction": "leftTop",
966
+ "anchorPoint": [-14.66, 24.89]
967
+ },
968
+ {
969
+ "id": "Yemen",
970
+ "ellipse": { "cx": 47.95, "cy": 15.95, "left": 43.44, "top": 17.03 },
971
+ "direction": "rightBottom",
972
+ "anchorPoint": [51.59, 15.9]
973
+ },
974
+ {
975
+ "id": "Zambia",
976
+ "ellipse": { "cx": 25.87, "cy": -14.99, "left": 22.71, "top": -12.42 }
977
+ },
978
+ {
979
+ "id": "Zimbabwe",
980
+ "ellipse": { "cx": 29.79, "cy": -18.85, "left": 26.94, "top": -16.42 }
981
+ },
982
+ {
983
+ "id": "Alberta",
984
+ "ellipse": { "cx": -114.5, "cy": 55, "left": -118, "top": 57 }
985
+ },
986
+ {
987
+ "id": "British Columbia",
988
+ "ellipse": { "cx": -125, "cy": 54, "left": -130, "top": 57 }
989
+ },
990
+ {
991
+ "id": "Manitoba",
992
+ "ellipse": { "cx": -98, "cy": 55, "left": -102, "top": 57 }
993
+ },
994
+ {
995
+ "id": "New Brunswick",
996
+ "ellipse": { "cx": -66, "cy": 46.5, "left": -68, "top": 47.5 },
997
+ "direction": "right",
998
+ "anchorPoint": [-65.5, 46.2]
999
+ },
1000
+ {
1001
+ "id": "Newfoundland and Labrador",
1002
+ "ellipse": { "cx": -60, "cy": 53, "left": -65, "top": 56 }
1003
+ },
1004
+ {
1005
+ "id": "Northwest Territories",
1006
+ "ellipse": { "cx": -120, "cy": 65, "left": -130, "top": 68 }
1007
+ },
1008
+ {
1009
+ "id": "Nova Scotia",
1010
+ "ellipse": { "cx": -63, "cy": 45, "left": -65, "top": 46 },
1011
+ "direction": "rightBottom",
1012
+ "anchorPoint": [-62.5, 44.5]
1013
+ },
1014
+ {
1015
+ "id": "Nunavut",
1016
+ "ellipse": { "cx": -92, "cy": 70, "left": -100, "top": 73 }
1017
+ },
1018
+ {
1019
+ "id": "Ontario",
1020
+ "ellipse": { "cx": -85, "cy": 50, "left": -90, "top": 53 }
1021
+ },
1022
+ {
1023
+ "id": "Prince Edward Island",
1024
+ "ellipse": { "cx": -63, "cy": 46.5, "left": -64, "top": 47 },
1025
+ "direction": "right",
1026
+ "anchorPoint": [-63, 46.3]
1027
+ },
1028
+ {
1029
+ "id": "Quebec",
1030
+ "ellipse": { "cx": -72, "cy": 52, "left": -78, "top": 56 }
1031
+ },
1032
+ {
1033
+ "id": "Saskatchewan",
1034
+ "ellipse": { "cx": -106, "cy": 55, "left": -110, "top": 57 }
1035
+ },
1036
+ {
1037
+ "id": "Yukon",
1038
+ "ellipse": { "cx": -135, "cy": 64, "left": -140, "top": 66 }
1039
+ }
1040
+ ]