highcharts 9.3.3 → 10.0.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 (670) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +19 -2
  3. package/css/highcharts.scss +17 -2
  4. package/css/themes/dark-unica.css +19 -2
  5. package/css/themes/grid-light.css +19 -2
  6. package/css/themes/sand-signika.css +19 -2
  7. package/es-modules/Accessibility/Accessibility.js +1 -1
  8. package/es-modules/Accessibility/Components/LegendComponent.js +31 -23
  9. package/es-modules/Accessibility/Components/MenuComponent.js +4 -5
  10. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +2 -2
  11. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
  12. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
  13. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +0 -1
  14. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +3 -3
  15. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +61 -29
  16. package/es-modules/Accessibility/Components/ZoomComponent.js +13 -10
  17. package/es-modules/Accessibility/HighContrastMode.js +2 -2
  18. package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
  19. package/es-modules/Accessibility/ProxyElement.js +14 -6
  20. package/es-modules/Accessibility/ProxyProvider.js +10 -2
  21. package/es-modules/Core/Axis/Axis.js +150 -46
  22. package/es-modules/Core/Axis/Color/ColorAxis.js +22 -5
  23. package/es-modules/Core/Axis/GridAxis.js +10 -9
  24. package/es-modules/Core/Axis/TreeGridTick.js +11 -0
  25. package/es-modules/Core/Chart/Chart3D.js +1 -11
  26. package/es-modules/Core/Chart/ChartDefaults.js +32 -11
  27. package/es-modules/Core/Chart/MapChart.js +1 -6
  28. package/es-modules/Core/DefaultOptions.js +2 -0
  29. package/es-modules/Core/Geometry/PolygonClip.js +84 -0
  30. package/es-modules/Core/Globals.js +4 -18
  31. package/es-modules/Core/HttpUtilities.js +13 -8
  32. package/es-modules/Core/Legend/Legend.js +10 -8
  33. package/es-modules/Core/Navigator.js +9 -6
  34. package/es-modules/Core/Pointer.js +15 -11
  35. package/es-modules/Core/Renderer/HTML/AST.js +62 -5
  36. package/es-modules/Core/Renderer/SVG/SVGElement.js +25 -41
  37. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
  38. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +17 -17
  39. package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
  40. package/es-modules/Core/Series/DataLabel.js +11 -3
  41. package/es-modules/Core/Series/Point.js +2 -2
  42. package/es-modules/Core/Series/Series.js +33 -15
  43. package/es-modules/Core/Series/SeriesDefaults.js +4 -1
  44. package/es-modules/Core/Tooltip.js +14 -31
  45. package/es-modules/Core/Utilities.js +28 -28
  46. package/es-modules/Extensions/Annotations/Annotations.js +7 -0
  47. package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
  48. package/es-modules/Extensions/Annotations/NavigationBindings.js +1 -1
  49. package/es-modules/Extensions/Annotations/Popup.js +1 -1
  50. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +5 -3
  51. package/es-modules/Extensions/Boost/BoostInit.js +6 -1
  52. package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
  53. package/es-modules/Extensions/Boost/Boostables.js +1 -0
  54. package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
  55. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  56. package/es-modules/Extensions/Breadcrumbs.js +874 -0
  57. package/es-modules/Extensions/Data.js +26 -14
  58. package/es-modules/Extensions/DataGrouping.js +5 -2
  59. package/es-modules/Extensions/DraggablePoints.js +9 -7
  60. package/es-modules/Extensions/Drilldown.js +147 -94
  61. package/es-modules/Extensions/Exporting/Exporting.js +9 -7
  62. package/es-modules/Extensions/Exporting/ExportingDefaults.js +49 -1
  63. package/es-modules/Extensions/GeoJSON.js +149 -124
  64. package/es-modules/Extensions/MarkerClusters.js +34 -20
  65. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
  66. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  67. package/es-modules/Extensions/Oldie/Oldie.js +1 -1
  68. package/es-modules/Extensions/ScrollablePlotArea.js +5 -1
  69. package/es-modules/Extensions/Stacking.js +3 -2
  70. package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
  71. package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
  72. package/es-modules/Maps/MapNavigation.js +49 -8
  73. package/es-modules/Maps/MapPointer.js +16 -0
  74. package/es-modules/Maps/MapUtilities.js +56 -0
  75. package/es-modules/Maps/MapView.js +606 -135
  76. package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
  77. package/es-modules/Maps/MapViewOptionsDefault.js +58 -20
  78. package/es-modules/Maps/Projection.js +169 -77
  79. package/es-modules/Maps/Projections/EqualEarth.js +15 -6
  80. package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
  81. package/es-modules/Maps/Projections/Miller.js +23 -10
  82. package/es-modules/Maps/Projections/Orthographic.js +21 -10
  83. package/es-modules/Maps/Projections/WebMercator.js +25 -13
  84. package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +77 -0
  85. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +581 -0
  86. package/es-modules/Series/Column/ColumnSeries.js +4 -3
  87. package/es-modules/Series/DataModifyComposition.js +1 -0
  88. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +2 -2
  89. package/es-modules/Series/DrawPointComposition.js +7 -4
  90. package/es-modules/Series/Lollipop/LollipopSeries.js +1 -1
  91. package/es-modules/Series/Map/MapPoint.js +24 -1
  92. package/es-modules/Series/Map/MapSeries.js +196 -169
  93. package/es-modules/Series/MapBubble/MapBubblePoint.js +16 -24
  94. package/es-modules/Series/MapBubble/MapBubbleSeries.js +11 -0
  95. package/es-modules/Series/MapPoint/MapPointPoint.js +2 -8
  96. package/es-modules/Series/MapPoint/MapPointSeries.js +36 -14
  97. package/es-modules/Series/NodesComposition.js +60 -13
  98. package/es-modules/Series/OHLC/OHLCSeries.js +7 -0
  99. package/es-modules/Series/Organization/OrganizationPoint.js +68 -2
  100. package/es-modules/Series/Organization/OrganizationSeries.js +79 -25
  101. package/es-modules/Series/Pie/PiePoint.js +12 -5
  102. package/es-modules/Series/Pie3D/Pie3DSeries.js +19 -0
  103. package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
  104. package/es-modules/Series/Sankey/SankeyPoint.js +37 -1
  105. package/es-modules/Series/Sankey/SankeySeries.js +10 -127
  106. package/es-modules/Series/Scatter/ScatterSeries.js +1 -1
  107. package/es-modules/Series/Sunburst/SunburstSeries.js +13 -2
  108. package/es-modules/Series/Treemap/TreemapSeries.js +88 -80
  109. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -0
  110. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +9 -2
  111. package/es-modules/Stock/StockToolsGui.js +1 -1
  112. package/es-modules/masters/highcharts-3d.src.js +1 -1
  113. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  114. package/es-modules/masters/highcharts-more.src.js +1 -1
  115. package/es-modules/masters/highcharts.src.js +1 -1
  116. package/es-modules/masters/highmaps.src.js +1 -1
  117. package/es-modules/masters/highstock.src.js +1 -1
  118. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  119. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  120. package/es-modules/masters/indicators/ao.src.js +1 -1
  121. package/es-modules/masters/indicators/apo.src.js +1 -1
  122. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  123. package/es-modules/masters/indicators/aroon.src.js +1 -1
  124. package/es-modules/masters/indicators/atr.src.js +1 -1
  125. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  126. package/es-modules/masters/indicators/cci.src.js +1 -1
  127. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  128. package/es-modules/masters/indicators/cmf.src.js +1 -1
  129. package/es-modules/masters/indicators/cmo.src.js +1 -1
  130. package/es-modules/masters/indicators/dema.src.js +1 -1
  131. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  132. package/es-modules/masters/indicators/dmi.src.js +1 -1
  133. package/es-modules/masters/indicators/dpo.src.js +1 -1
  134. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  135. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  136. package/es-modules/masters/indicators/indicators.src.js +1 -1
  137. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  138. package/es-modules/masters/indicators/klinger.src.js +1 -1
  139. package/es-modules/masters/indicators/macd.src.js +1 -1
  140. package/es-modules/masters/indicators/mfi.src.js +1 -1
  141. package/es-modules/masters/indicators/momentum.src.js +1 -1
  142. package/es-modules/masters/indicators/natr.src.js +1 -1
  143. package/es-modules/masters/indicators/obv.src.js +1 -1
  144. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  145. package/es-modules/masters/indicators/ppo.src.js +1 -1
  146. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  147. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  148. package/es-modules/masters/indicators/psar.src.js +1 -1
  149. package/es-modules/masters/indicators/regressions.src.js +1 -1
  150. package/es-modules/masters/indicators/roc.src.js +1 -1
  151. package/es-modules/masters/indicators/rsi.src.js +1 -1
  152. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  153. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  154. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  155. package/es-modules/masters/indicators/tema.src.js +1 -1
  156. package/es-modules/masters/indicators/trendline.src.js +1 -1
  157. package/es-modules/masters/indicators/trix.src.js +1 -1
  158. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  159. package/es-modules/masters/indicators/vwap.src.js +1 -1
  160. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  161. package/es-modules/masters/indicators/wma.src.js +1 -1
  162. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  163. package/es-modules/masters/modules/accessibility.src.js +1 -1
  164. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  165. package/es-modules/masters/modules/annotations.src.js +1 -1
  166. package/es-modules/masters/modules/arc-diagram.src.js +14 -0
  167. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  168. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  169. package/es-modules/masters/modules/boost.src.js +1 -1
  170. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  171. package/es-modules/masters/modules/bullet.src.js +1 -1
  172. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  173. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  174. package/es-modules/masters/modules/cylinder.src.js +1 -1
  175. package/es-modules/masters/modules/data.src.js +1 -1
  176. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  177. package/es-modules/masters/modules/debugger.src.js +1 -1
  178. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  179. package/es-modules/masters/modules/dotplot.src.js +1 -1
  180. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  181. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  182. package/es-modules/masters/modules/drilldown.src.js +2 -1
  183. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  184. package/es-modules/masters/modules/export-data.src.js +1 -1
  185. package/es-modules/masters/modules/exporting.src.js +1 -1
  186. package/es-modules/masters/modules/full-screen.src.js +1 -1
  187. package/es-modules/masters/modules/funnel.src.js +1 -1
  188. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  189. package/es-modules/masters/modules/gantt.src.js +1 -1
  190. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  191. package/es-modules/masters/modules/heatmap.src.js +1 -1
  192. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  193. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  194. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  195. package/es-modules/masters/modules/item-series.src.js +1 -1
  196. package/es-modules/masters/modules/lollipop.src.js +1 -1
  197. package/es-modules/masters/modules/map.src.js +5 -1
  198. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  199. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  200. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  201. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  202. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  203. package/es-modules/masters/modules/oldie.src.js +1 -1
  204. package/es-modules/masters/modules/organization.src.js +1 -1
  205. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  206. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  207. package/es-modules/masters/modules/pareto.src.js +1 -1
  208. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  209. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  210. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  211. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  212. package/es-modules/masters/modules/sankey.src.js +1 -1
  213. package/es-modules/masters/modules/series-label.src.js +1 -1
  214. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  215. package/es-modules/masters/modules/sonification.src.js +1 -1
  216. package/es-modules/masters/modules/static-scale.src.js +1 -1
  217. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  218. package/es-modules/masters/modules/stock.src.js +1 -1
  219. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  220. package/es-modules/masters/modules/sunburst.src.js +1 -1
  221. package/es-modules/masters/modules/tilemap.src.js +1 -1
  222. package/es-modules/masters/modules/timeline.src.js +1 -1
  223. package/es-modules/masters/modules/treegrid.src.js +1 -1
  224. package/es-modules/masters/modules/treemap.src.js +5 -1
  225. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  226. package/es-modules/masters/modules/variwide.src.js +1 -1
  227. package/es-modules/masters/modules/vector.src.js +1 -1
  228. package/es-modules/masters/modules/venn.src.js +1 -1
  229. package/es-modules/masters/modules/windbarb.src.js +1 -1
  230. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  231. package/es-modules/masters/modules/xrange.src.js +1 -1
  232. package/es-modules/masters/themes/avocado.src.js +1 -1
  233. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  234. package/es-modules/masters/themes/brand-light.src.js +1 -1
  235. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  236. package/es-modules/masters/themes/dark-green.src.js +1 -1
  237. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  238. package/es-modules/masters/themes/gray.src.js +1 -1
  239. package/es-modules/masters/themes/grid-light.src.js +1 -1
  240. package/es-modules/masters/themes/grid.src.js +1 -1
  241. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  242. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  243. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  244. package/es-modules/masters/themes/skies.src.js +1 -1
  245. package/es-modules/masters/themes/sunset.src.js +1 -1
  246. package/highcharts-3d.js +99 -98
  247. package/highcharts-3d.js.map +1 -1
  248. package/highcharts-3d.src.js +50 -20
  249. package/highcharts-gantt.js +800 -795
  250. package/highcharts-gantt.js.map +1 -1
  251. package/highcharts-gantt.src.js +528 -290
  252. package/highcharts-more.js +195 -194
  253. package/highcharts-more.js.map +1 -1
  254. package/highcharts-more.src.js +13 -2
  255. package/highcharts.d.ts +2162 -504
  256. package/highcharts.js +586 -581
  257. package/highcharts.js.map +1 -1
  258. package/highcharts.src.d.ts +2162 -504
  259. package/highcharts.src.js +494 -272
  260. package/highmaps.js +753 -723
  261. package/highmaps.js.map +1 -1
  262. package/highmaps.src.js +3603 -2117
  263. package/highstock.js +790 -786
  264. package/highstock.js.map +1 -1
  265. package/highstock.src.js +519 -283
  266. package/indicators/acceleration-bands.js +12 -11
  267. package/indicators/acceleration-bands.js.map +1 -1
  268. package/indicators/acceleration-bands.src.js +11 -2
  269. package/indicators/accumulation-distribution.js +5 -5
  270. package/indicators/accumulation-distribution.js.map +1 -1
  271. package/indicators/accumulation-distribution.src.js +11 -2
  272. package/indicators/ao.js +6 -6
  273. package/indicators/ao.js.map +1 -1
  274. package/indicators/ao.src.js +11 -2
  275. package/indicators/apo.js +5 -5
  276. package/indicators/apo.js.map +1 -1
  277. package/indicators/apo.src.js +11 -2
  278. package/indicators/aroon-oscillator.js +10 -10
  279. package/indicators/aroon-oscillator.js.map +1 -1
  280. package/indicators/aroon-oscillator.src.js +11 -2
  281. package/indicators/aroon.js +11 -11
  282. package/indicators/aroon.js.map +1 -1
  283. package/indicators/aroon.src.js +11 -2
  284. package/indicators/atr.js +5 -5
  285. package/indicators/atr.js.map +1 -1
  286. package/indicators/atr.src.js +11 -2
  287. package/indicators/bollinger-bands.js +12 -12
  288. package/indicators/bollinger-bands.js.map +1 -1
  289. package/indicators/bollinger-bands.src.js +11 -2
  290. package/indicators/cci.js +5 -5
  291. package/indicators/cci.js.map +1 -1
  292. package/indicators/cci.src.js +11 -2
  293. package/indicators/chaikin.js +8 -8
  294. package/indicators/chaikin.js.map +1 -1
  295. package/indicators/chaikin.src.js +11 -2
  296. package/indicators/cmf.js +6 -6
  297. package/indicators/cmf.js.map +1 -1
  298. package/indicators/cmf.src.js +11 -2
  299. package/indicators/cmo.js +5 -5
  300. package/indicators/cmo.js.map +1 -1
  301. package/indicators/cmo.src.js +11 -2
  302. package/indicators/dema.js +5 -5
  303. package/indicators/dema.js.map +1 -1
  304. package/indicators/dema.src.js +11 -2
  305. package/indicators/disparity-index.js +6 -6
  306. package/indicators/disparity-index.js.map +1 -1
  307. package/indicators/disparity-index.src.js +11 -2
  308. package/indicators/dmi.js +12 -12
  309. package/indicators/dmi.js.map +1 -1
  310. package/indicators/dmi.src.js +11 -2
  311. package/indicators/dpo.js +5 -5
  312. package/indicators/dpo.js.map +1 -1
  313. package/indicators/dpo.src.js +11 -2
  314. package/indicators/ema.js +2 -1
  315. package/indicators/ema.js.map +1 -1
  316. package/indicators/ema.src.js +10 -1
  317. package/indicators/ichimoku-kinko-hyo.js +16 -16
  318. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  319. package/indicators/ichimoku-kinko-hyo.src.js +11 -2
  320. package/indicators/indicators-all.js +195 -194
  321. package/indicators/indicators-all.js.map +1 -1
  322. package/indicators/indicators-all.src.js +21 -5
  323. package/indicators/indicators.js +13 -12
  324. package/indicators/indicators.js.map +1 -1
  325. package/indicators/indicators.src.js +21 -5
  326. package/indicators/keltner-channels.js +12 -11
  327. package/indicators/keltner-channels.js.map +1 -1
  328. package/indicators/keltner-channels.src.js +11 -2
  329. package/indicators/klinger.js +13 -13
  330. package/indicators/klinger.js.map +1 -1
  331. package/indicators/klinger.src.js +11 -2
  332. package/indicators/macd.js +12 -11
  333. package/indicators/macd.js.map +1 -1
  334. package/indicators/macd.src.js +11 -2
  335. package/indicators/mfi.js +6 -6
  336. package/indicators/mfi.js.map +1 -1
  337. package/indicators/mfi.src.js +11 -2
  338. package/indicators/momentum.js +5 -5
  339. package/indicators/momentum.js.map +1 -1
  340. package/indicators/momentum.src.js +11 -2
  341. package/indicators/natr.js +5 -4
  342. package/indicators/natr.js.map +1 -1
  343. package/indicators/natr.src.js +11 -2
  344. package/indicators/obv.js +5 -5
  345. package/indicators/obv.js.map +1 -1
  346. package/indicators/obv.src.js +11 -2
  347. package/indicators/pivot-points.js +11 -11
  348. package/indicators/pivot-points.js.map +1 -1
  349. package/indicators/pivot-points.src.js +11 -2
  350. package/indicators/ppo.js +5 -5
  351. package/indicators/ppo.js.map +1 -1
  352. package/indicators/ppo.src.js +11 -2
  353. package/indicators/price-channel.js +11 -11
  354. package/indicators/price-channel.js.map +1 -1
  355. package/indicators/price-channel.src.js +11 -2
  356. package/indicators/price-envelopes.js +8 -8
  357. package/indicators/price-envelopes.js.map +1 -1
  358. package/indicators/price-envelopes.src.js +11 -2
  359. package/indicators/psar.js +7 -6
  360. package/indicators/psar.js.map +1 -1
  361. package/indicators/psar.src.js +11 -2
  362. package/indicators/regressions.js +12 -12
  363. package/indicators/regressions.js.map +1 -1
  364. package/indicators/regressions.src.js +11 -2
  365. package/indicators/roc.js +5 -5
  366. package/indicators/roc.js.map +1 -1
  367. package/indicators/roc.src.js +11 -2
  368. package/indicators/rsi.js +6 -5
  369. package/indicators/rsi.js.map +1 -1
  370. package/indicators/rsi.src.js +11 -2
  371. package/indicators/slow-stochastic.js +5 -5
  372. package/indicators/slow-stochastic.js.map +1 -1
  373. package/indicators/slow-stochastic.src.js +11 -2
  374. package/indicators/stochastic.js +12 -12
  375. package/indicators/stochastic.js.map +1 -1
  376. package/indicators/stochastic.src.js +11 -2
  377. package/indicators/supertrend.js +10 -10
  378. package/indicators/supertrend.js.map +1 -1
  379. package/indicators/supertrend.src.js +11 -2
  380. package/indicators/tema.js +6 -6
  381. package/indicators/tema.js.map +1 -1
  382. package/indicators/tema.src.js +11 -2
  383. package/indicators/trendline.js +5 -5
  384. package/indicators/trendline.js.map +1 -1
  385. package/indicators/trendline.src.js +11 -2
  386. package/indicators/trix.js +4 -4
  387. package/indicators/trix.js.map +1 -1
  388. package/indicators/trix.src.js +11 -2
  389. package/indicators/volume-by-price.js +17 -17
  390. package/indicators/volume-by-price.js.map +1 -1
  391. package/indicators/volume-by-price.src.js +11 -2
  392. package/indicators/vwap.js +5 -5
  393. package/indicators/vwap.js.map +1 -1
  394. package/indicators/vwap.src.js +11 -2
  395. package/indicators/williams-r.js +6 -5
  396. package/indicators/williams-r.js.map +1 -1
  397. package/indicators/williams-r.src.js +11 -2
  398. package/indicators/wma.js +5 -5
  399. package/indicators/wma.js.map +1 -1
  400. package/indicators/wma.src.js +11 -2
  401. package/indicators/zigzag.js +6 -6
  402. package/indicators/zigzag.js.map +1 -1
  403. package/indicators/zigzag.src.js +11 -2
  404. package/lib/jspdf.js +299 -184
  405. package/lib/jspdf.src.js +25266 -18067
  406. package/lib/svg2pdf.js +35 -31
  407. package/lib/svg2pdf.src.js +5721 -4179
  408. package/modules/accessibility.js +231 -229
  409. package/modules/accessibility.js.map +1 -1
  410. package/modules/accessibility.src.js +278 -197
  411. package/modules/annotations-advanced.js +144 -144
  412. package/modules/annotations-advanced.js.map +1 -1
  413. package/modules/annotations-advanced.src.js +26 -8
  414. package/modules/annotations.js +79 -79
  415. package/modules/annotations.js.map +1 -1
  416. package/modules/annotations.src.js +21 -5
  417. package/modules/arc-diagram.js +25 -0
  418. package/modules/arc-diagram.js.map +1 -0
  419. package/modules/arc-diagram.src.js +770 -0
  420. package/modules/arrow-symbols.js +4 -3
  421. package/modules/arrow-symbols.js.map +1 -1
  422. package/modules/arrow-symbols.src.js +11 -2
  423. package/modules/boost-canvas.js +15 -15
  424. package/modules/boost-canvas.js.map +1 -1
  425. package/modules/boost-canvas.src.js +11 -2
  426. package/modules/boost.js +80 -79
  427. package/modules/boost.js.map +1 -1
  428. package/modules/boost.src.js +71 -43
  429. package/modules/broken-axis.js +13 -13
  430. package/modules/broken-axis.js.map +1 -1
  431. package/modules/broken-axis.src.js +11 -2
  432. package/modules/bullet.js +9 -9
  433. package/modules/bullet.js.map +1 -1
  434. package/modules/bullet.src.js +11 -2
  435. package/modules/coloraxis.js +24 -24
  436. package/modules/coloraxis.js.map +1 -1
  437. package/modules/coloraxis.src.js +33 -7
  438. package/modules/current-date-indicator.js +5 -4
  439. package/modules/current-date-indicator.js.map +1 -1
  440. package/modules/current-date-indicator.src.js +11 -2
  441. package/modules/cylinder.js +11 -11
  442. package/modules/cylinder.js.map +1 -1
  443. package/modules/cylinder.src.js +11 -2
  444. package/modules/data.js +34 -33
  445. package/modules/data.js.map +1 -1
  446. package/modules/data.src.js +59 -32
  447. package/modules/datagrouping.js +21 -20
  448. package/modules/datagrouping.js.map +1 -1
  449. package/modules/datagrouping.src.js +16 -4
  450. package/modules/debugger.js +6 -6
  451. package/modules/debugger.js.map +1 -1
  452. package/modules/debugger.src.js +11 -2
  453. package/modules/dependency-wheel.js +12 -11
  454. package/modules/dependency-wheel.js.map +1 -1
  455. package/modules/dependency-wheel.src.js +14 -5
  456. package/modules/dotplot.js +6 -6
  457. package/modules/dotplot.js.map +1 -1
  458. package/modules/dotplot.src.js +11 -2
  459. package/modules/drag-panes.js +10 -10
  460. package/modules/drag-panes.js.map +1 -1
  461. package/modules/drag-panes.src.js +11 -2
  462. package/modules/draggable-points.js +35 -34
  463. package/modules/draggable-points.js.map +1 -1
  464. package/modules/draggable-points.src.js +20 -9
  465. package/modules/drilldown.d.ts +19 -0
  466. package/modules/drilldown.js +37 -25
  467. package/modules/drilldown.js.map +1 -1
  468. package/modules/drilldown.src.d.ts +19 -0
  469. package/modules/drilldown.src.js +1090 -105
  470. package/modules/dumbbell.js +17 -17
  471. package/modules/dumbbell.js.map +1 -1
  472. package/modules/dumbbell.src.js +11 -2
  473. package/modules/export-data.js +21 -20
  474. package/modules/export-data.js.map +1 -1
  475. package/modules/export-data.src.js +11 -2
  476. package/modules/exporting.js +39 -39
  477. package/modules/exporting.js.map +1 -1
  478. package/modules/exporting.src.js +82 -18
  479. package/modules/full-screen.js +8 -7
  480. package/modules/full-screen.js.map +1 -1
  481. package/modules/full-screen.src.js +11 -2
  482. package/modules/funnel.js +12 -12
  483. package/modules/funnel.js.map +1 -1
  484. package/modules/funnel.src.js +11 -2
  485. package/modules/funnel3d.js +21 -21
  486. package/modules/funnel3d.js.map +1 -1
  487. package/modules/funnel3d.src.js +11 -2
  488. package/modules/gantt.js +217 -217
  489. package/modules/gantt.js.map +1 -1
  490. package/modules/gantt.src.js +45 -20
  491. package/modules/grid-axis.js +23 -23
  492. package/modules/grid-axis.js.map +1 -1
  493. package/modules/grid-axis.src.js +22 -11
  494. package/modules/heatmap.js +40 -39
  495. package/modules/heatmap.js.map +1 -1
  496. package/modules/heatmap.src.js +33 -7
  497. package/modules/heikinashi.js +8 -8
  498. package/modules/heikinashi.js.map +1 -1
  499. package/modules/heikinashi.src.js +11 -2
  500. package/modules/histogram-bellcurve.js +13 -13
  501. package/modules/histogram-bellcurve.js.map +1 -1
  502. package/modules/histogram-bellcurve.src.js +11 -2
  503. package/modules/hollowcandlestick.js +9 -9
  504. package/modules/hollowcandlestick.js.map +1 -1
  505. package/modules/hollowcandlestick.src.js +11 -2
  506. package/modules/item-series.js +12 -12
  507. package/modules/item-series.js.map +1 -1
  508. package/modules/item-series.src.js +11 -2
  509. package/modules/lollipop.js +7 -7
  510. package/modules/lollipop.js.map +1 -1
  511. package/modules/lollipop.src.js +12 -3
  512. package/modules/map.d.ts +80 -43
  513. package/modules/map.js +169 -144
  514. package/modules/map.js.map +1 -1
  515. package/modules/map.src.d.ts +80 -43
  516. package/modules/map.src.js +7960 -6687
  517. package/modules/marker-clusters.js +36 -36
  518. package/modules/marker-clusters.js.map +1 -1
  519. package/modules/marker-clusters.src.js +47 -23
  520. package/modules/networkgraph.d.ts +5 -0
  521. package/modules/networkgraph.js +49 -48
  522. package/modules/networkgraph.js.map +1 -1
  523. package/modules/networkgraph.src.d.ts +5 -0
  524. package/modules/networkgraph.src.js +77 -15
  525. package/modules/no-data-to-display.js +5 -5
  526. package/modules/no-data-to-display.js.map +1 -1
  527. package/modules/no-data-to-display.src.js +11 -2
  528. package/modules/offline-exporting.js +20 -18
  529. package/modules/offline-exporting.js.map +1 -1
  530. package/modules/offline-exporting.src.js +126 -25
  531. package/modules/oldie-polyfills.js +7 -7
  532. package/modules/oldie-polyfills.js.map +1 -1
  533. package/modules/oldie-polyfills.src.js +11 -2
  534. package/modules/oldie.js +30 -30
  535. package/modules/oldie.js.map +1 -1
  536. package/modules/oldie.src.js +12 -3
  537. package/modules/organization.js +16 -14
  538. package/modules/organization.js.map +1 -1
  539. package/modules/organization.src.js +166 -32
  540. package/modules/overlapping-datalabels.js +3 -2
  541. package/modules/overlapping-datalabels.js.map +1 -1
  542. package/modules/overlapping-datalabels.src.js +11 -2
  543. package/modules/parallel-coordinates.js +11 -11
  544. package/modules/parallel-coordinates.js.map +1 -1
  545. package/modules/parallel-coordinates.src.js +11 -2
  546. package/modules/pareto.js +7 -7
  547. package/modules/pareto.js.map +1 -1
  548. package/modules/pareto.src.js +11 -2
  549. package/modules/pathfinder.js +31 -31
  550. package/modules/pathfinder.js.map +1 -1
  551. package/modules/pathfinder.src.js +11 -2
  552. package/modules/pattern-fill.js +14 -14
  553. package/modules/pattern-fill.js.map +1 -1
  554. package/modules/pattern-fill.src.js +11 -2
  555. package/modules/price-indicator.js +5 -5
  556. package/modules/price-indicator.js.map +1 -1
  557. package/modules/price-indicator.src.js +11 -2
  558. package/modules/pyramid3d.js +4 -4
  559. package/modules/pyramid3d.js.map +1 -1
  560. package/modules/pyramid3d.src.js +11 -2
  561. package/modules/sankey.d.ts +5 -0
  562. package/modules/sankey.js +32 -29
  563. package/modules/sankey.js.map +1 -1
  564. package/modules/sankey.src.d.ts +5 -0
  565. package/modules/sankey.src.js +338 -156
  566. package/modules/series-label.js +18 -17
  567. package/modules/series-label.js.map +1 -1
  568. package/modules/series-label.src.js +11 -2
  569. package/modules/solid-gauge.js +10 -10
  570. package/modules/solid-gauge.js.map +1 -1
  571. package/modules/solid-gauge.src.js +11 -2
  572. package/modules/sonification.js +59 -59
  573. package/modules/sonification.js.map +1 -1
  574. package/modules/sonification.src.js +11 -2
  575. package/modules/static-scale.js +5 -4
  576. package/modules/static-scale.js.map +1 -1
  577. package/modules/static-scale.src.js +11 -2
  578. package/modules/stock-tools.js +78 -78
  579. package/modules/stock-tools.js.map +1 -1
  580. package/modules/stock-tools.src.js +21 -5
  581. package/modules/stock.js +162 -162
  582. package/modules/stock.js.map +1 -1
  583. package/modules/stock.src.js +36 -13
  584. package/modules/streamgraph.js +5 -4
  585. package/modules/streamgraph.js.map +1 -1
  586. package/modules/streamgraph.src.js +11 -2
  587. package/modules/sunburst.d.ts +3 -0
  588. package/modules/sunburst.js +73 -60
  589. package/modules/sunburst.js.map +1 -1
  590. package/modules/sunburst.src.d.ts +3 -0
  591. package/modules/sunburst.src.js +1049 -96
  592. package/modules/tilemap.js +17 -17
  593. package/modules/tilemap.js.map +1 -1
  594. package/modules/tilemap.src.js +11 -2
  595. package/modules/timeline.js +18 -18
  596. package/modules/timeline.js.map +1 -1
  597. package/modules/timeline.src.js +11 -2
  598. package/modules/treegrid.js +57 -56
  599. package/modules/treegrid.js.map +1 -1
  600. package/modules/treegrid.src.js +33 -11
  601. package/modules/treemap.d.ts +3 -0
  602. package/modules/treemap.js +53 -41
  603. package/modules/treemap.js.map +1 -1
  604. package/modules/treemap.src.d.ts +3 -0
  605. package/modules/treemap.src.js +1039 -95
  606. package/modules/variable-pie.js +9 -9
  607. package/modules/variable-pie.js.map +1 -1
  608. package/modules/variable-pie.src.js +11 -2
  609. package/modules/variwide.js +12 -12
  610. package/modules/variwide.js.map +1 -1
  611. package/modules/variwide.src.js +11 -2
  612. package/modules/vector.js +8 -7
  613. package/modules/vector.js.map +1 -1
  614. package/modules/vector.src.js +11 -2
  615. package/modules/venn.js +31 -31
  616. package/modules/venn.js.map +1 -1
  617. package/modules/venn.src.js +18 -6
  618. package/modules/windbarb.js +15 -15
  619. package/modules/windbarb.js.map +1 -1
  620. package/modules/windbarb.src.js +11 -2
  621. package/modules/wordcloud.js +23 -23
  622. package/modules/wordcloud.js.map +1 -1
  623. package/modules/wordcloud.src.js +18 -6
  624. package/modules/xrange.js +16 -16
  625. package/modules/xrange.js.map +1 -1
  626. package/modules/xrange.src.js +11 -2
  627. package/package.json +1 -1
  628. package/themes/avocado.js +4 -3
  629. package/themes/avocado.js.map +1 -1
  630. package/themes/avocado.src.js +11 -2
  631. package/themes/brand-dark.js +9 -8
  632. package/themes/brand-dark.js.map +1 -1
  633. package/themes/brand-dark.src.js +11 -2
  634. package/themes/brand-light.js +8 -8
  635. package/themes/brand-light.js.map +1 -1
  636. package/themes/brand-light.src.js +11 -2
  637. package/themes/dark-blue.js +9 -8
  638. package/themes/dark-blue.js.map +1 -1
  639. package/themes/dark-blue.src.js +11 -2
  640. package/themes/dark-green.js +9 -8
  641. package/themes/dark-green.js.map +1 -1
  642. package/themes/dark-green.src.js +11 -2
  643. package/themes/dark-unica.js +8 -7
  644. package/themes/dark-unica.js.map +1 -1
  645. package/themes/dark-unica.src.js +11 -2
  646. package/themes/gray.js +9 -8
  647. package/themes/gray.js.map +1 -1
  648. package/themes/gray.src.js +11 -2
  649. package/themes/grid-light.js +5 -4
  650. package/themes/grid-light.js.map +1 -1
  651. package/themes/grid-light.src.js +11 -2
  652. package/themes/grid.js +5 -5
  653. package/themes/grid.js.map +1 -1
  654. package/themes/grid.src.js +11 -2
  655. package/themes/high-contrast-dark.js +7 -7
  656. package/themes/high-contrast-dark.js.map +1 -1
  657. package/themes/high-contrast-dark.src.js +21 -12
  658. package/themes/high-contrast-light.js +3 -3
  659. package/themes/high-contrast-light.js.map +1 -1
  660. package/themes/high-contrast-light.src.js +21 -12
  661. package/themes/sand-signika.js +5 -5
  662. package/themes/sand-signika.js.map +1 -1
  663. package/themes/sand-signika.src.js +11 -2
  664. package/themes/skies.js +5 -5
  665. package/themes/skies.js.map +1 -1
  666. package/themes/skies.src.js +11 -2
  667. package/themes/sunset.js +3 -3
  668. package/themes/sunset.js.map +1 -1
  669. package/themes/sunset.src.js +11 -2
  670. package/es-modules/Maps/ProjectionDefinition.js +0 -9
@@ -22,10 +22,12 @@ var __extends = (this && this.__extends) || (function () {
22
22
  };
23
23
  })();
24
24
  import ColorMapMixin from '../ColorMapMixin.js';
25
+ import MapUtilities from '../../Maps/MapUtilities.js';
26
+ var boundsFromPath = MapUtilities.boundsFromPath;
25
27
  import SeriesRegistry from '../../Core/Series/SeriesRegistry.js';
26
28
  var ScatterSeries = SeriesRegistry.seriesTypes.scatter;
27
29
  import U from '../../Core/Utilities.js';
28
- var extend = U.extend;
30
+ var extend = U.extend, isNumber = U.isNumber, pick = U.pick;
29
31
  /* *
30
32
  *
31
33
  * Class
@@ -88,6 +90,27 @@ var MapPoint = /** @class */ (function (_super) {
88
90
  }
89
91
  return point;
90
92
  };
93
+ /*
94
+ * Get the bounds in terms of projected units
95
+ * @param projection
96
+ * @return MapBounds|undefined The computed bounds
97
+ */
98
+ MapPoint.prototype.getProjectedBounds = function (projection) {
99
+ var path = MapPoint.getProjectedPath(this, projection), bounds = boundsFromPath(path), properties = this.properties;
100
+ if (bounds) {
101
+ // Cache point bounding box for use to position data labels, bubbles
102
+ // etc
103
+ var propMiddleX = properties && properties['hc-middle-x'], propMiddleY = properties && properties['hc-middle-y'];
104
+ bounds.midX = (bounds.x1 + (bounds.x2 - bounds.x1) * pick(this.middleX, isNumber(propMiddleX) ? propMiddleX : 0.5));
105
+ var middleYFraction = pick(this.middleY, isNumber(propMiddleY) ? propMiddleY : 0.5);
106
+ // No geographic geometry, only path given => flip
107
+ if (!this.geometry) {
108
+ middleYFraction = 1 - middleYFraction;
109
+ }
110
+ bounds.midY = bounds.y2 - (bounds.y2 - bounds.y1) * middleYFraction;
111
+ return bounds;
112
+ }
113
+ };
91
114
  /**
92
115
  * Stop the fade-out
93
116
  * @private
@@ -29,7 +29,7 @@ import H from '../../Core/Globals.js';
29
29
  var noop = H.noop;
30
30
  import LegendSymbol from '../../Core/Legend/LegendSymbol.js';
31
31
  import MapChart from '../../Core/Chart/MapChart.js';
32
- var maps = MapChart.maps, splitPath = MapChart.splitPath;
32
+ var splitPath = MapChart.splitPath;
33
33
  import MapPoint from './MapPoint.js';
34
34
  import MapView from '../../Maps/MapView.js';
35
35
  import Series from '../../Core/Series/Series.js';
@@ -39,7 +39,7 @@ var
39
39
  _a = SeriesRegistry.seriesTypes, ColumnSeries = _a.column, ScatterSeries = _a.scatter;
40
40
  import SVGRenderer from '../../Core/Renderer/SVG/SVGRenderer.js';
41
41
  import U from '../../Core/Utilities.js';
42
- var extend = U.extend, fireEvent = U.fireEvent, getNestedProperty = U.getNestedProperty, isArray = U.isArray, isNumber = U.isNumber, merge = U.merge, objectEach = U.objectEach, pick = U.pick, splat = U.splat;
42
+ var extend = U.extend, find = U.find, fireEvent = U.fireEvent, getNestedProperty = U.getNestedProperty, isArray = U.isArray, isNumber = U.isNumber, isObject = U.isObject, merge = U.merge, objectEach = U.objectEach, pick = U.pick, splat = U.splat;
43
43
  /* *
44
44
  *
45
45
  * Class
@@ -67,7 +67,7 @@ var MapSeries = /** @class */ (function (_super) {
67
67
  _this.joinBy = void 0;
68
68
  _this.options = void 0;
69
69
  _this.points = void 0;
70
- _this.transformGroup = void 0;
70
+ _this.processedData = [];
71
71
  return _this;
72
72
  /* eslint-enable valid-jsdoc */
73
73
  }
@@ -134,7 +134,10 @@ var MapSeries = /** @class */ (function (_super) {
134
134
  scaleX: 1,
135
135
  scaleY: 1,
136
136
  opacity: 1
137
- });
137
+ }, this.chart.options.drilldown.animation);
138
+ if (chart.drilldown) {
139
+ chart.drilldown.fadeInGroup(this.dataLabelsGroup);
140
+ }
138
141
  }
139
142
  }
140
143
  };
@@ -166,6 +169,7 @@ var MapSeries = /** @class */ (function (_super) {
166
169
  MapSeries.prototype.clearBounds = function () {
167
170
  this.points.forEach(function (point) {
168
171
  delete point.bounds;
172
+ delete point.insetIndex;
169
173
  delete point.projectedPath;
170
174
  });
171
175
  delete this.bounds;
@@ -199,29 +203,43 @@ var MapSeries = /** @class */ (function (_super) {
199
203
  */
200
204
  MapSeries.prototype.drawPoints = function () {
201
205
  var _this = this;
202
- var _a = this, chart = _a.chart, group = _a.group, svgTransform = _a.svgTransform;
206
+ var _a = this, chart = _a.chart, group = _a.group, _b = _a.transformGroups, transformGroups = _b === void 0 ? [] : _b;
203
207
  var mapView = chart.mapView, renderer = chart.renderer;
204
- // Set a group that handles transform during zooming and panning in
205
- // order to preserve clipping on series.group
206
- if (!this.transformGroup) {
207
- this.transformGroup = renderer.g().add(group);
208
- this.transformGroup.survive = true;
208
+ if (!mapView) {
209
+ return;
210
+ }
211
+ // Set groups that handle transform during zooming and panning in order
212
+ // to preserve clipping on series.group
213
+ this.transformGroups = transformGroups;
214
+ if (!transformGroups[0]) {
215
+ transformGroups[0] = renderer.g().add(group);
209
216
  }
217
+ mapView.insets.forEach(function (inset, i) {
218
+ if (!transformGroups[i + 1]) {
219
+ transformGroups.push(renderer.g().add(group));
220
+ }
221
+ });
210
222
  // Draw the shapes again
211
223
  if (this.doFullTranslate()) {
212
224
  // Individual point actions.
213
- if (chart.hasRendered && !chart.styledMode) {
214
- this.points.forEach(function (point) {
215
- // Restore state color on update/redraw (#3529)
216
- if (point.shapeArgs) {
217
- point.shapeArgs.fill = _this.pointAttribs(point, point.state).fill;
218
- }
219
- });
220
- }
221
- // Draw them in transformGroup
222
- this.group = this.transformGroup;
225
+ this.points.forEach(function (point) {
226
+ var graphic = point.graphic, shapeArgs = point.shapeArgs;
227
+ // Points should be added in the corresponding transform group
228
+ point.group = transformGroups[typeof point.insetIndex === 'number' ?
229
+ point.insetIndex + 1 :
230
+ 0];
231
+ // When the point has been moved between insets after
232
+ // MapView.update
233
+ if (graphic && graphic.parentGroup !== point.group) {
234
+ graphic.add(point.group);
235
+ }
236
+ // Restore state color on update/redraw (#3529)
237
+ if (shapeArgs && chart.hasRendered && !chart.styledMode) {
238
+ shapeArgs.fill = _this.pointAttribs(point, point.state).fill;
239
+ }
240
+ });
241
+ // Draw the points
223
242
  ColumnSeries.prototype.drawPoints.apply(this);
224
- this.group = group; // Reset
225
243
  // Add class names
226
244
  this.points.forEach(function (point) {
227
245
  if (point.graphic) {
@@ -231,11 +249,10 @@ var MapSeries = /** @class */ (function (_super) {
231
249
  'highcharts-name-' +
232
250
  point.name.replace(/ /g, '-').toLowerCase();
233
251
  }
234
- if (point.properties &&
235
- point.properties['hc-key']) {
252
+ if (point.properties && point.properties['hc-key']) {
236
253
  className +=
237
254
  ' highcharts-key-' +
238
- point.properties['hc-key'].toLowerCase();
255
+ point.properties['hc-key'].toString().toLowerCase();
239
256
  }
240
257
  if (className) {
241
258
  point.graphic.addClass(className);
@@ -248,9 +265,9 @@ var MapSeries = /** @class */ (function (_super) {
248
265
  });
249
266
  }
250
267
  // Apply the SVG transform
251
- if (mapView && svgTransform) {
252
- var strokeWidth_1 = pick(this.options[(this.pointAttrToOptions &&
253
- this.pointAttrToOptions['stroke-width']) || 'borderWidth'], 1 // Styled mode
268
+ transformGroups.forEach(function (transformGroup, i) {
269
+ var view = i === 0 ? mapView : mapView.insets[i - 1], svgTransform = view.getSVGTransform(), strokeWidth = pick(_this.options[(_this.pointAttrToOptions &&
270
+ _this.pointAttrToOptions['stroke-width']) || 'borderWidth'], 1 // Styled mode
254
271
  );
255
272
  /*
256
273
  Animate or move to the new zoom level. In order to prevent
@@ -265,38 +282,37 @@ var MapSeries = /** @class */ (function (_super) {
265
282
  transform properties, it should induce a single updateTransform and
266
283
  symbolAttr call.
267
284
  */
268
- var scale_1 = svgTransform.scaleX;
269
- var flipFactor_1 = svgTransform.scaleY > 0 ? 1 : -1;
270
- var transformGroup_1 = this.transformGroup;
285
+ var scale = svgTransform.scaleX;
286
+ var flipFactor = svgTransform.scaleY > 0 ? 1 : -1;
271
287
  if (renderer.globalAnimation && chart.hasRendered) {
272
- var startTranslateX_1 = Number(transformGroup_1.attr('translateX')), startTranslateY_1 = Number(transformGroup_1.attr('translateY')), startScale_1 = Number(transformGroup_1.attr('scaleX'));
288
+ var startTranslateX_1 = Number(transformGroup.attr('translateX'));
289
+ var startTranslateY_1 = Number(transformGroup.attr('translateY'));
290
+ var startScale_1 = Number(transformGroup.attr('scaleX'));
273
291
  var step = function (now, fx) {
274
292
  var scaleStep = startScale_1 +
275
- (scale_1 - startScale_1) * fx.pos;
276
- transformGroup_1.attr({
277
- translateX: (startTranslateX_1 +
278
- (svgTransform.translateX - startTranslateX_1) * fx.pos),
279
- translateY: (startTranslateY_1 +
280
- (svgTransform.translateY - startTranslateY_1) * fx.pos),
293
+ (scale - startScale_1) * fx.pos;
294
+ transformGroup.attr({
295
+ translateX: (startTranslateX_1 + (svgTransform.translateX - startTranslateX_1) * fx.pos),
296
+ translateY: (startTranslateY_1 + (svgTransform.translateY - startTranslateY_1) * fx.pos),
281
297
  scaleX: scaleStep,
282
- scaleY: scaleStep * flipFactor_1
298
+ scaleY: scaleStep * flipFactor
283
299
  });
284
- group.element.setAttribute('stroke-width', strokeWidth_1 / scaleStep);
300
+ transformGroup.element.setAttribute('stroke-width', strokeWidth / scaleStep);
285
301
  };
286
- transformGroup_1
302
+ transformGroup
287
303
  .attr({ animator: 0 })
288
304
  .animate({ animator: 1 }, { step: step });
289
305
  // When dragging or first rendering, animation is off
290
306
  }
291
307
  else {
292
- transformGroup_1.attr(svgTransform);
308
+ transformGroup.attr(svgTransform);
293
309
  // Set the stroke-width directly on the group element so the
294
310
  // children inherit it. We need to use setAttribute directly,
295
311
  // because the stroke-widthSetter method expects a stroke color
296
312
  // also to be set.
297
- group.element.setAttribute('stroke-width', strokeWidth_1 / scale_1);
313
+ transformGroup.element.setAttribute('stroke-width', strokeWidth / scale);
298
314
  }
299
- }
315
+ });
300
316
  this.drawMapDataLabels();
301
317
  };
302
318
  /**
@@ -304,9 +320,8 @@ var MapSeries = /** @class */ (function (_super) {
304
320
  *
305
321
  */
306
322
  MapSeries.prototype.getProjectedBounds = function () {
307
- if (!this.bounds) {
308
- var MAX_VALUE_1 = Number.MAX_VALUE, projection_1 = this.chart.mapView &&
309
- this.chart.mapView.projection, allBounds_1 = [];
323
+ if (!this.bounds && this.chart.mapView) {
324
+ var MAX_VALUE = Number.MAX_VALUE, _a = this.chart.mapView, insets_1 = _a.insets, projection_1 = _a.projection, allBounds_1 = [];
310
325
  // Find the bounding box of each point
311
326
  (this.points || []).forEach(function (point) {
312
327
  if (point.path || point.geometry) {
@@ -322,38 +337,32 @@ var MapSeries = /** @class */ (function (_super) {
322
337
  }
323
338
  // The first time a map point is used, analyze its box
324
339
  if (!point.bounds) {
325
- var path = MapPoint.getProjectedPath(point, projection_1), properties = point.properties;
326
- var x2_1 = -MAX_VALUE_1, x1_1 = MAX_VALUE_1, y2_1 = -MAX_VALUE_1, y1_1 = MAX_VALUE_1, validBounds_1;
327
- path.forEach(function (seg) {
328
- var x = seg[seg.length - 2];
329
- var y = seg[seg.length - 1];
330
- if (typeof x === 'number' &&
331
- typeof y === 'number') {
332
- x1_1 = Math.min(x1_1, x);
333
- x2_1 = Math.max(x2_1, x);
334
- y1_1 = Math.min(y1_1, y);
335
- y2_1 = Math.max(y2_1, y);
336
- validBounds_1 = true;
337
- }
338
- });
339
- if (validBounds_1) {
340
- // Cache point bounding box for use to position data
341
- // labels, bubbles etc
342
- var propMiddleX = (properties && properties['hc-middle-x']), midX = (x1_1 + (x2_1 - x1_1) * pick(point.middleX, isNumber(propMiddleX) ?
343
- propMiddleX : 0.5)), propMiddleY = (properties && properties['hc-middle-y']);
344
- var middleYFraction = pick(point.middleY, isNumber(propMiddleY) ? propMiddleY : 0.5);
345
- // No geographic geometry, only path given => flip
346
- if (!point.geometry) {
347
- middleYFraction = 1 - middleYFraction;
348
- }
349
- var midY = y2_1 - (y2_1 - y1_1) * middleYFraction;
350
- point.bounds = { midX: midX, midY: midY, x1: x1_1, y1: y1_1, x2: x2_1, y2: y2_1 };
340
+ var bounds = point.getProjectedBounds(projection_1);
341
+ if (bounds) {
351
342
  point.labelrank = pick(point.labelrank,
352
343
  // Bigger shape, higher rank
353
- (x2_1 - x1_1) * (y2_1 - y1_1));
344
+ ((bounds.x2 - bounds.x1) *
345
+ (bounds.y2 - bounds.y1)));
346
+ var midX_1 = bounds.midX, midY_1 = bounds.midY;
347
+ if (insets_1 && isNumber(midX_1) && isNumber(midY_1)) {
348
+ var inset = find(insets_1, function (inset) { return inset.isInside({
349
+ x: midX_1, y: midY_1
350
+ }); });
351
+ if (inset) {
352
+ // Project again, but with the inset
353
+ // projection
354
+ delete point.projectedPath;
355
+ bounds = point.getProjectedBounds(inset.projection);
356
+ if (bounds) {
357
+ inset.allBounds.push(bounds);
358
+ }
359
+ point.insetIndex = insets_1.indexOf(inset);
360
+ }
361
+ }
362
+ point.bounds = bounds;
354
363
  }
355
364
  }
356
- if (point.bounds) {
365
+ if (point.bounds && point.insetIndex === void 0) {
357
366
  allBounds_1.push(point.bounds);
358
367
  }
359
368
  }
@@ -400,37 +409,70 @@ var MapSeries = /** @class */ (function (_super) {
400
409
  return attr;
401
410
  };
402
411
  /**
403
- * Extend setData to join in mapData. If the allAreas option is true, all
404
- * areas from the mapData are used, and those that don't correspond to a
405
- * data value are given null values.
412
+ * Extend setData to call processData and generatePoints immediately.
406
413
  * @private
407
414
  */
408
- MapSeries.prototype.setData = function (data, redraw, animation, updatePoints) {
409
- var options = this.options, chartOptions = this.chart.options.chart, globalMapData = chartOptions && chartOptions.map, mapData = options.mapData, joinBy = this.joinBy, pointArrayMap = options.keys || this.pointArrayMap, dataUsed = [], mapMap = {}, mapPoint, mapTransforms = this.chart.mapTransforms, props, i;
410
- // Collect mapData from chart options if not defined on series
411
- if (!mapData && globalMapData) {
412
- mapData = typeof globalMapData === 'string' ?
413
- maps[globalMapData] :
414
- globalMapData;
415
+ MapSeries.prototype.setData = function () {
416
+ _super.prototype.setData.apply(this, arguments);
417
+ this.processData();
418
+ this.generatePoints();
419
+ };
420
+ /**
421
+ * Extend processData to join in mapData. If the allAreas option is true,
422
+ * all areas from the mapData are used, and those that don't correspond to a
423
+ * data value are given null values. The results are stored in
424
+ * `processedData` in order to avoid mutating `data`.
425
+ * @private
426
+ */
427
+ MapSeries.prototype.processData = function () {
428
+ var options = this.options, data = options.data, chartOptions = this.chart.options.chart, joinBy = this.joinBy, pointArrayMap = options.keys || this.pointArrayMap, dataUsed = [], mapMap = {};
429
+ var mapView = this.chart.mapView, mapDataObject = mapView && (
430
+ // Get map either from series or global
431
+ isObject(options.mapData, true) ?
432
+ mapView.getGeoMap(options.mapData) : mapView.geoMap), mapTransforms = this.chart.mapTransforms, mapPoint, props, i;
433
+ // Pick up transform definitions for chart
434
+ this.chart.mapTransforms = mapTransforms =
435
+ chartOptions.mapTransforms ||
436
+ mapDataObject && mapDataObject['hc-transform'] ||
437
+ mapTransforms;
438
+ // Cache cos/sin of transform rotation angle
439
+ if (mapTransforms) {
440
+ objectEach(mapTransforms, function (transform) {
441
+ if (transform.rotation) {
442
+ transform.cosAngle = Math.cos(transform.rotation);
443
+ transform.sinAngle = Math.sin(transform.rotation);
444
+ }
445
+ });
446
+ }
447
+ var mapData;
448
+ if (isArray(options.mapData)) {
449
+ mapData = options.mapData;
450
+ }
451
+ else if (mapDataObject && mapDataObject.type === 'FeatureCollection') {
452
+ this.mapTitle = mapDataObject.title;
453
+ mapData = H.geojson(mapDataObject, this.type, this);
415
454
  }
416
- // Pick up numeric values, add index
417
- // Convert Array point definitions to objects using pointArrayMap
455
+ // Reset processedData
456
+ this.processedData = [];
457
+ var processedData = this.processedData;
458
+ // Pick up numeric values, add index. Convert Array point definitions to
459
+ // objects using pointArrayMap.
418
460
  if (data) {
419
461
  data.forEach(function (val, i) {
420
462
  var ix = 0;
421
463
  if (isNumber(val)) {
422
- data[i] = {
464
+ processedData[i] = {
423
465
  value: val
424
466
  };
425
467
  }
426
468
  else if (isArray(val)) {
427
- data[i] = {};
469
+ processedData[i] = {};
428
470
  // Automatically copy first item to hc-key if there is
429
471
  // an extra leading string
430
472
  if (!options.keys &&
431
473
  val.length > pointArrayMap.length &&
432
474
  typeof val[0] === 'string') {
433
- data[i]['hc-key'] = val[0];
475
+ processedData[i]['hc-key'] = val[0];
434
476
  ++ix;
435
477
  }
436
478
  // Run through pointArrayMap and what's left of the
@@ -439,40 +481,24 @@ var MapSeries = /** @class */ (function (_super) {
439
481
  if (pointArrayMap[j] &&
440
482
  typeof val[ix] !== 'undefined') {
441
483
  if (pointArrayMap[j].indexOf('.') > 0) {
442
- MapPoint.prototype.setNestedProperty(data[i], val[ix], pointArrayMap[j]);
484
+ MapPoint.prototype.setNestedProperty(processedData[i], val[ix], pointArrayMap[j]);
443
485
  }
444
486
  else {
445
- data[i][pointArrayMap[j]] =
487
+ processedData[i][pointArrayMap[j]] =
446
488
  val[ix];
447
489
  }
448
490
  }
449
491
  }
450
492
  }
451
- if (joinBy && joinBy[0] === '_i') {
452
- data[i]._i = i;
493
+ else {
494
+ processedData[i] = data[i];
453
495
  }
454
- });
455
- }
456
- // this.getBox(data as any);
457
- // Pick up transform definitions for chart
458
- this.chart.mapTransforms = mapTransforms =
459
- chartOptions.mapTransforms ||
460
- mapData && mapData['hc-transform'] ||
461
- mapTransforms;
462
- // Cache cos/sin of transform rotation angle
463
- if (mapTransforms) {
464
- objectEach(mapTransforms, function (transform) {
465
- if (transform.rotation) {
466
- transform.cosAngle = Math.cos(transform.rotation);
467
- transform.sinAngle = Math.sin(transform.rotation);
496
+ if (joinBy && joinBy[0] === '_i') {
497
+ processedData[i]._i = i;
468
498
  }
469
499
  });
470
500
  }
471
501
  if (mapData) {
472
- if (mapData.type === 'FeatureCollection') {
473
- this.mapTitle = mapData.title;
474
- mapData = H.geojson(mapData, this.type, this);
475
- }
476
502
  this.mapData = mapData;
477
503
  this.mapMap = {};
478
504
  for (i = 0; i < mapData.length; i++) {
@@ -487,9 +513,9 @@ var MapSeries = /** @class */ (function (_super) {
487
513
  }
488
514
  this.mapMap = mapMap;
489
515
  // Registered the point codes that actually hold data
490
- if (data && joinBy[1]) {
516
+ if (joinBy[1]) {
491
517
  var joinKey_1 = joinBy[1];
492
- data.forEach(function (pointOptions) {
518
+ processedData.forEach(function (pointOptions) {
493
519
  var mapKey = getNestedProperty(joinKey_1, pointOptions);
494
520
  if (mapMap[mapKey]) {
495
521
  dataUsed.push(mapMap[mapKey]);
@@ -497,37 +523,35 @@ var MapSeries = /** @class */ (function (_super) {
497
523
  });
498
524
  }
499
525
  if (options.allAreas) {
500
- // this.getBox(mapData);
501
- data = data || [];
502
- // Registered the point codes that actually hold data
526
+ // Register the point codes that actually hold data
503
527
  if (joinBy[1]) {
504
528
  var joinKey_2 = joinBy[1];
505
- data.forEach(function (pointOptions) {
529
+ processedData.forEach(function (pointOptions) {
506
530
  dataUsed.push(getNestedProperty(joinKey_2, pointOptions));
507
531
  });
508
532
  }
509
533
  // Add those map points that don't correspond to data, which
510
- // will be drawn as null points
511
- dataUsed = ('|' + dataUsed.map(function (point) {
512
- return point && point[joinBy[0]];
513
- }).join('|') + '|'); // Faster than array.indexOf
534
+ // will be drawn as null points. Searching a string is faster
535
+ // than Array.indexOf
536
+ var dataUsedString_1 = ('|' +
537
+ dataUsed
538
+ .map(function (point) {
539
+ return point && point[joinBy[0]];
540
+ })
541
+ .join('|') +
542
+ '|');
514
543
  mapData.forEach(function (mapPoint) {
515
544
  if (!joinBy[0] ||
516
- dataUsed.indexOf('|' + mapPoint[joinBy[0]] + '|') === -1) {
517
- data.push(merge(mapPoint, { value: null }));
518
- // #5050 - adding all areas causes the update
519
- // optimization of setData to kick in, even though
520
- // the point order has changed
521
- updatePoints = false;
545
+ dataUsedString_1.indexOf('|' + mapPoint[joinBy[0]] + '|') === -1) {
546
+ processedData.push(merge(mapPoint, { value: null }));
522
547
  }
523
548
  });
524
- } /* else {
525
- this.getBox(dataUsed); // Issue #4784
526
- } */
549
+ }
527
550
  }
528
- Series.prototype.setData.call(this, data, redraw, animation, updatePoints);
529
- this.processData();
530
- this.generatePoints();
551
+ // The processedXData array is used by general chart logic for checking
552
+ // data length in various scanarios
553
+ this.processedXData = new Array(processedData.length);
554
+ return void 0;
531
555
  };
532
556
  /**
533
557
  * Extend setOptions by picking up the joinBy option and applying it to a
@@ -559,41 +583,30 @@ var MapSeries = /** @class */ (function (_super) {
559
583
  delete this.bounds;
560
584
  this.getProjectedBounds();
561
585
  }
562
- // Calculate the SVG transform
563
- var svgTransform;
564
586
  if (mapView) {
565
- var scale = mapView.getScale();
566
- var _a = mapView.projection.forward(mapView.center), x = _a[0], y = _a[1];
567
- // When dealing with unprojected coordinates, y axis is flipped.
568
- var flipFactor = mapView.projection.hasCoordinates ? -1 : 1;
569
- var translateX = this.chart.plotWidth / 2 - x * scale, translateY = this.chart.plotHeight / 2 - y * scale * flipFactor;
570
- svgTransform = {
571
- scaleX: scale,
572
- scaleY: scale * flipFactor,
573
- translateX: translateX,
574
- translateY: translateY
575
- };
576
- this.svgTransform = svgTransform;
587
+ var mainSvgTransform_1 = mapView.getSVGTransform();
588
+ series.points.forEach(function (point) {
589
+ var svgTransform = (isNumber(point.insetIndex) &&
590
+ mapView.insets[point.insetIndex].getSVGTransform()) || mainSvgTransform_1;
591
+ // Record the middle point (loosely based on centroid),
592
+ // determined by the middleX and middleY options.
593
+ if (svgTransform &&
594
+ point.bounds &&
595
+ isNumber(point.bounds.midX) &&
596
+ isNumber(point.bounds.midY)) {
597
+ point.plotX = point.bounds.midX * svgTransform.scaleX +
598
+ svgTransform.translateX;
599
+ point.plotY = point.bounds.midY * svgTransform.scaleY +
600
+ svgTransform.translateY;
601
+ }
602
+ if (doFullTranslate) {
603
+ point.shapeType = 'path';
604
+ point.shapeArgs = {
605
+ d: MapPoint.getProjectedPath(point, projection)
606
+ };
607
+ }
608
+ });
577
609
  }
578
- series.points.forEach(function (point) {
579
- // Record the middle point (loosely based on centroid),
580
- // determined by the middleX and middleY options.
581
- if (svgTransform &&
582
- point.bounds &&
583
- isNumber(point.bounds.midX) &&
584
- isNumber(point.bounds.midY)) {
585
- point.plotX = point.bounds.midX * svgTransform.scaleX +
586
- svgTransform.translateX;
587
- point.plotY = point.bounds.midY * svgTransform.scaleY +
588
- svgTransform.translateY;
589
- }
590
- if (doFullTranslate) {
591
- point.shapeType = 'path';
592
- point.shapeArgs = {
593
- d: MapPoint.getProjectedPath(point, projection)
594
- };
595
- }
596
- });
597
610
  fireEvent(series, 'afterTranslate');
598
611
  };
599
612
  /**
@@ -609,6 +622,16 @@ var MapSeries = /** @class */ (function (_super) {
609
622
  * @optionparent plotOptions.map
610
623
  */
611
624
  MapSeries.defaultOptions = merge(ScatterSeries.defaultOptions, {
625
+ /**
626
+ * Whether the MapView takes this series into account when computing the
627
+ * default zoom and center of the map.
628
+ *
629
+ * @sample maps/series/affectsmapview/
630
+ * US map with world map backdrop
631
+ *
632
+ * @since 10.0.0
633
+ */
634
+ affectsMapView: true,
612
635
  animation: false,
613
636
  dataLabels: {
614
637
  crop: false,
@@ -881,13 +904,17 @@ export default MapSeries;
881
904
  *
882
905
  * */
883
906
  /**
884
- * A map data object containing a `geometry` or `path` definition and optionally
885
- * additional properties to join in the `data` as per the `joinBy` option.
907
+ * An array of objects containing a `geometry` or `path` definition and
908
+ * optionally additional properties to join in the `data` as per the `joinBy`
909
+ * option. GeoJSON and TopoJSON structures can also be passed directly into
910
+ * `mapData`.
886
911
  *
887
912
  * @sample maps/demo/category-map/
888
913
  * Map data and joinBy
914
+ * @sample maps/series/mapdata-multiple/
915
+ * Multiple map sources
889
916
  *
890
- * @type {Array<Highcharts.SeriesMapDataOptions>|*}
917
+ * @type {Array<Highcharts.SeriesMapDataOptions>|Highcharts.GeoJSON|Highcharts.TopoJSON}
891
918
  * @product highmaps
892
919
  * @apioption series.mapData
893
920
  */
@@ -21,10 +21,14 @@ var __extends = (this && this.__extends) || (function () {
21
21
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
22
22
  };
23
23
  })();
24
+ /* *
25
+ *
26
+ * Imports
27
+ *
28
+ * */
29
+ import MapPoint from '../Map/MapPoint.js';
24
30
  import SeriesRegistry from '../../Core/Series/SeriesRegistry.js';
25
31
  var _a = SeriesRegistry.seriesTypes, BubbleSeries = _a.bubble, MapSeries = _a.map;
26
- import U from '../../Core/Utilities.js';
27
- var extend = U.extend, merge = U.merge;
28
32
  /* *
29
33
  *
30
34
  * Class
@@ -33,30 +37,18 @@ var extend = U.extend, merge = U.merge;
33
37
  var MapBubblePoint = /** @class */ (function (_super) {
34
38
  __extends(MapBubblePoint, _super);
35
39
  function MapBubblePoint() {
36
- return _super !== null && _super.apply(this, arguments) || this;
40
+ /* *
41
+ *
42
+ * Functions
43
+ *
44
+ * */
45
+ var _this = _super !== null && _super.apply(this, arguments) || this;
46
+ _this.applyOptions = MapSeries.prototype.pointClass.prototype.applyOptions;
47
+ _this.getProjectedBounds = MapPoint.prototype.getProjectedBounds;
48
+ return _this;
49
+ /* eslint-enable valid-jsdoc */
37
50
  }
38
- /* *
39
- *
40
- * Functions
41
- *
42
- * */
43
51
  /* eslint-disable valid-jsdoc */
44
- /**
45
- * @private
46
- */
47
- MapBubblePoint.prototype.applyOptions = function (options, x) {
48
- var point;
49
- if (options &&
50
- typeof options.lat !== 'undefined' &&
51
- typeof options.lon !== 'undefined') {
52
- point = _super.prototype.applyOptions.call(this, merge(options, this.series.chart.fromLatLonToPoint(options)), x);
53
- }
54
- else {
55
- point = MapSeries.prototype.pointClass.prototype
56
- .applyOptions.call(this, options, x);
57
- }
58
- return point;
59
- };
60
52
  /**
61
53
  * @private
62
54
  */