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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v9.3.3 (2022-02-01)
2
+ * @license Highcharts JS v10.0.0 (2022-03-07)
3
3
  *
4
4
  * Highcharts Drilldown module
5
5
  *
@@ -7,7 +7,6 @@
7
7
  * License: www.highcharts.com/license
8
8
  *
9
9
  */
10
- 'use strict';
11
10
  (function (factory) {
12
11
  if (typeof module === 'object' && module.exports) {
13
12
  factory['default'] = factory;
@@ -22,13 +21,950 @@
22
21
  factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
23
22
  }
24
23
  }(function (Highcharts) {
24
+ 'use strict';
25
25
  var _modules = Highcharts ? Highcharts._modules : {};
26
26
  function _registerModule(obj, path, args, fn) {
27
27
  if (!obj.hasOwnProperty(path)) {
28
28
  obj[path] = fn.apply(null, args);
29
+
30
+ if (typeof CustomEvent === 'function') {
31
+ window.dispatchEvent(
32
+ new CustomEvent(
33
+ 'HighchartsModuleLoaded',
34
+ { detail: { path: path, module: obj[path] }
35
+ })
36
+ );
37
+ }
29
38
  }
30
39
  }
31
- _registerModule(_modules, 'Extensions/Drilldown.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Color/Color.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js']], function (A, Axis, Chart, Color, ColumnSeries, F, H, D, Point, Series, SeriesRegistry, SVGRenderer, Tick, U) {
40
+ _registerModule(_modules, 'Extensions/Breadcrumbs.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Globals.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Utilities.js'], _modules['Core/FormatUtilities.js']], function (Chart, H, D, U, F) {
41
+ /* *
42
+ *
43
+ * Highcharts Breadcrumbs module
44
+ *
45
+ * Authors: Grzegorz Blachlinski, Karol Kolodziej
46
+ *
47
+ * License: www.highcharts.com/license
48
+ *
49
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
50
+ *
51
+ * */
52
+ var defaultOptions = D.defaultOptions;
53
+ var format = F.format;
54
+ var addEvent = U.addEvent,
55
+ objectEach = U.objectEach,
56
+ extend = U.extend,
57
+ fireEvent = U.fireEvent,
58
+ merge = U.merge,
59
+ pick = U.pick,
60
+ defined = U.defined,
61
+ isString = U.isString;
62
+ // Add language support.
63
+ extend(defaultOptions.lang,
64
+ /**
65
+ * @optionparent lang
66
+ */
67
+ {
68
+ /**
69
+ * @since 10.0.0
70
+ * @product highcharts
71
+ */
72
+ mainBreadcrumb: 'Main'
73
+ });
74
+ /**
75
+ * The Breadcrumbs class
76
+ *
77
+ * @private
78
+ * @class
79
+ * @name Highcharts.Breadcrumbs
80
+ *
81
+ * @param {Highcharts.Chart} chart
82
+ * Chart object
83
+ * @param {Highcharts.Options} userOptions
84
+ * User options
85
+ */
86
+ var Breadcrumbs = /** @class */ (function () {
87
+ function Breadcrumbs(chart, userOptions) {
88
+ /* *
89
+ *
90
+ * Properties
91
+ *
92
+ * */
93
+ this.group = void 0;
94
+ this.list = [];
95
+ this.elementList = {};
96
+ this.isDirty = true;
97
+ this.level = 0;
98
+ this.options = void 0;
99
+ var chartOptions = merge(chart.options.drilldown &&
100
+ chart.options.drilldown.drillUpButton,
101
+ Breadcrumbs.defaultBreadcrumbsOptions,
102
+ chart.options.navigation && chart.options.navigation.breadcrumbs,
103
+ userOptions);
104
+ this.chart = chart;
105
+ this.options = chartOptions || {};
106
+ }
107
+ /**
108
+ * Update Breadcrumbs properties, like level and list.
109
+ *
110
+ * @requires modules/breadcrumbs
111
+ *
112
+ * @function Highcharts.Breadcrumbs#updateProperties
113
+ * @param {Highcharts.Breadcrumbs} this
114
+ * Breadcrumbs class.
115
+ */
116
+ Breadcrumbs.prototype.updateProperties = function (list) {
117
+ this.setList(list);
118
+ this.setLevel();
119
+ this.isDirty = true;
120
+ };
121
+ /**
122
+ * Set breadcrumbs list.
123
+ * @function Highcharts.Breadcrumbs#setList
124
+ *
125
+ * @requires modules/breadcrumbs
126
+ *
127
+ * @param {Highcharts.Breadcrumbs} this
128
+ * Breadcrumbs class.
129
+ * @param {Highcharts.BreadcrumbsOptions} list
130
+ * Breadcrumbs list.
131
+ */
132
+ Breadcrumbs.prototype.setList = function (list) {
133
+ this.list = list;
134
+ };
135
+ /**
136
+ * Calcule level on which chart currently is.
137
+ *
138
+ * @requires modules/breadcrumbs
139
+ *
140
+ * @function Highcharts.Breadcrumbs#setLevel
141
+ * @param {Highcharts.Breadcrumbs} this
142
+ * Breadcrumbs class.
143
+ */
144
+ Breadcrumbs.prototype.setLevel = function () {
145
+ this.level = this.list.length && this.list.length - 1;
146
+ };
147
+ /**
148
+ * Get Breadcrumbs level
149
+ *
150
+ * @requires modules/breadcrumbs
151
+ *
152
+ * @function Highcharts.Breadcrumbs#getLevel
153
+ * @param {Highcharts.Breadcrumbs} this
154
+ * Breadcrumbs class.
155
+ */
156
+ Breadcrumbs.prototype.getLevel = function () {
157
+ return this.level;
158
+ };
159
+ /**
160
+ * Default button text formatter.
161
+ *
162
+ * @requires modules/breadcrumbs
163
+ *
164
+ * @function Highcharts.Breadcrumbs#getButtonText
165
+ * @param {Highcharts.Breadcrumbs} this
166
+ * Breadcrumbs class.
167
+ * @param {Highcharts.Breadcrumbs} breadcrumb
168
+ * Breadcrumb.
169
+ * @return {string}
170
+ * Formatted text.
171
+ */
172
+ Breadcrumbs.prototype.getButtonText = function (breadcrumb) {
173
+ var breadcrumbs = this,
174
+ chart = breadcrumbs.chart,
175
+ breadcrumbsOptions = breadcrumbs.options,
176
+ lang = chart.options.lang,
177
+ textFormat = pick(breadcrumbsOptions.format,
178
+ breadcrumbsOptions.showFullPath ?
179
+ '{level.name}' : '← {level.name}'),
180
+ defaultText = lang && pick(lang.drillUpText,
181
+ lang.mainBreadcrumb);
182
+ var returnText = breadcrumbsOptions.formatter &&
183
+ breadcrumbsOptions.formatter(breadcrumb) ||
184
+ format(textFormat, { level: breadcrumb.levelOptions },
185
+ chart) || '';
186
+ if (((isString(returnText) &&
187
+ !returnText.length) ||
188
+ returnText === '← ') &&
189
+ defined(defaultText)) {
190
+ returnText = !breadcrumbsOptions.showFullPath ?
191
+ '← ' + defaultText :
192
+ defaultText;
193
+ }
194
+ return returnText;
195
+ };
196
+ /**
197
+ * Redraw.
198
+ *
199
+ * @requires modules/breadcrums
200
+ *
201
+ * @function Highcharts.Breadcrumbs#redraw
202
+ * @param {Highcharts.Breadcrumbs} this
203
+ * Breadcrumbs class.
204
+ */
205
+ Breadcrumbs.prototype.redraw = function () {
206
+ if (this.isDirty) {
207
+ this.render();
208
+ }
209
+ if (this.group) {
210
+ this.group.align();
211
+ }
212
+ this.isDirty = false;
213
+ };
214
+ /**
215
+ * Create a group, then draw breadcrumbs together with the separators.
216
+ *
217
+ * @requires modules/breadcrumbs
218
+ *
219
+ * @function Highcharts.Breadcrumbs#render
220
+ * @param {Highcharts.Breadcrumbs} this
221
+ * Breadcrumbs class.
222
+ */
223
+ Breadcrumbs.prototype.render = function () {
224
+ var breadcrumbs = this,
225
+ chart = breadcrumbs.chart,
226
+ breadcrumbsOptions = breadcrumbs.options;
227
+ // A main group for the breadcrumbs.
228
+ if (!breadcrumbs.group && breadcrumbsOptions) {
229
+ breadcrumbs.group = chart.renderer
230
+ .g('breadcrumbs-group')
231
+ .addClass('highcharts-no-tooltip highcharts-breadcrumbs')
232
+ .attr({
233
+ zIndex: breadcrumbsOptions.zIndex
234
+ })
235
+ .add();
236
+ }
237
+ // Draw breadcrumbs.
238
+ if (breadcrumbsOptions.showFullPath) {
239
+ this.renderFullPathButtons();
240
+ }
241
+ else {
242
+ this.renderSingleButton();
243
+ }
244
+ this.alignBreadcrumbsGroup();
245
+ };
246
+ /**
247
+ * Draw breadcrumbs together with the separators.
248
+ *
249
+ * @requires modules/breadcrumbs
250
+ *
251
+ * @function Highcharts.Breadcrumbs#renderFullPathButtons
252
+ * @param {Highcharts.Breadcrumbs} this
253
+ * Breadcrumbs class.
254
+ */
255
+ Breadcrumbs.prototype.renderFullPathButtons = function () {
256
+ // Make sure that only one type of button is visible.
257
+ this.destroySingleButton();
258
+ this.resetElementListState();
259
+ this.updateListElements();
260
+ this.destroyListElements();
261
+ };
262
+ /**
263
+ * Render Single button - when showFullPath is not used. The button is
264
+ * similar to the old drillUpButton
265
+ *
266
+ * @requires modules/breadcrumbs
267
+ *
268
+ * @function Highcharts.Breadcrumbs#renderSingleButton
269
+ * @param {Highcharts.Breadcrumbs} this Breadcrumbs class.
270
+ */
271
+ Breadcrumbs.prototype.renderSingleButton = function () {
272
+ var breadcrumbs = this,
273
+ chart = breadcrumbs.chart,
274
+ list = breadcrumbs.list,
275
+ breadcrumbsOptions = breadcrumbs.options,
276
+ buttonSpacing = breadcrumbsOptions.buttonSpacing;
277
+ // Make sure that only one type of button is visible.
278
+ this.destroyListElements();
279
+ // Draw breadcrumbs. Inital position for calculating the breadcrumbs
280
+ // group.
281
+ var posX = breadcrumbs.group ?
282
+ breadcrumbs.group.getBBox().width :
283
+ buttonSpacing,
284
+ posY = buttonSpacing;
285
+ var previousBreadcrumb = list[list.length - 2];
286
+ if (!chart.drillUpButton && (this.level > 0)) {
287
+ chart.drillUpButton = breadcrumbs.renderButton(previousBreadcrumb, posX, posY);
288
+ }
289
+ else if (chart.drillUpButton) {
290
+ if (this.level > 0) {
291
+ // Update button.
292
+ this.updateSingleButton();
293
+ }
294
+ else {
295
+ this.destroySingleButton();
296
+ }
297
+ }
298
+ };
299
+ /**
300
+ * Update group position based on align and it's width.
301
+ *
302
+ * @requires modules/breadcrumbs
303
+ *
304
+ * @function Highcharts.Breadcrumbs#renderSingleButton
305
+ * @param {Highcharts.Breadcrumbs} this
306
+ * Breadcrumbs class.
307
+ */
308
+ Breadcrumbs.prototype.alignBreadcrumbsGroup = function (xOffset) {
309
+ var breadcrumbs = this;
310
+ if (breadcrumbs.group) {
311
+ var breadcrumbsOptions = breadcrumbs.options,
312
+ buttonTheme = breadcrumbsOptions.buttonTheme,
313
+ positionOptions = breadcrumbsOptions.position,
314
+ alignTo = (breadcrumbsOptions.relativeTo === 'chart' ||
315
+ breadcrumbsOptions.relativeTo === 'spacingBox' ?
316
+ void 0 :
317
+ 'scrollablePlotBox'),
318
+ bBox = breadcrumbs.group.getBBox(),
319
+ additionalSpace = 2 * (buttonTheme.padding || 0) +
320
+ breadcrumbsOptions.buttonSpacing;
321
+ // Store positionOptions
322
+ positionOptions.width = bBox.width + additionalSpace;
323
+ positionOptions.height = bBox.height + additionalSpace;
324
+ var newPositions = merge(positionOptions);
325
+ // Add x offset if specified.
326
+ if (xOffset) {
327
+ newPositions.x += xOffset;
328
+ }
329
+ newPositions.y = pick(newPositions.y, this.yOffset, 0);
330
+ breadcrumbs.group.align(newPositions, true, alignTo);
331
+ }
332
+ };
333
+ /**
334
+ * Render a button.
335
+ *
336
+ * @requires modules/breadcrums
337
+ *
338
+ * @function Highcharts.Breadcrumbs#renderButton
339
+ * @param {Highcharts.Breadcrumbs} this
340
+ * Breadcrumbs class.
341
+ * @param {Highcharts.Breadcrumbs} breadcrumb
342
+ * Current breadcrumb
343
+ * @param {Highcharts.Breadcrumbs} posX
344
+ * Initial horizontal position
345
+ * @param {Highcharts.Breadcrumbs} posY
346
+ * Initial vertical position
347
+ * @return {SVGElement|void}
348
+ * Returns the SVG button
349
+ */
350
+ Breadcrumbs.prototype.renderButton = function (breadcrumb, posX, posY) {
351
+ var breadcrumbs = this,
352
+ chart = this.chart,
353
+ breadcrumbsOptions = breadcrumbs.options,
354
+ buttonTheme = merge(breadcrumbsOptions.buttonTheme),
355
+ states = buttonTheme.states;
356
+ delete buttonTheme.states;
357
+ var button = chart.renderer
358
+ .button(breadcrumbs.getButtonText(breadcrumb),
359
+ posX,
360
+ posY,
361
+ function (e) {
362
+ // Extract events from button object and call
363
+ var buttonEvents = breadcrumbsOptions.events &&
364
+ breadcrumbsOptions.events.click;
365
+ var callDefaultEvent;
366
+ if (buttonEvents) {
367
+ callDefaultEvent = buttonEvents.call(breadcrumbs, e, breadcrumb);
368
+ }
369
+ // (difference in behaviour of showFullPath and drillUp)
370
+ if (callDefaultEvent !== false) {
371
+ // For single button we are not going to the button
372
+ // level, but the one level up
373
+ if (!breadcrumbsOptions.showFullPath) {
374
+ e.newLevel = breadcrumbs.level - 1;
375
+ }
376
+ else {
377
+ e.newLevel = breadcrumb.level;
378
+ }
379
+ fireEvent(breadcrumbs, 'up', e);
380
+ }
381
+ }, buttonTheme, states && states.hover, states && states.select, states && states.disabled)
382
+ .addClass('highcharts-breadcrumbs-button')
383
+ .add(breadcrumbs.group);
384
+ if (!chart.styledMode) {
385
+ button.attr(breadcrumbsOptions.style);
386
+ }
387
+ return button;
388
+ };
389
+ /**
390
+ * Render a separator.
391
+ *
392
+ * @requires modules/breadcrums
393
+ *
394
+ * @function Highcharts.Breadcrumbs#renderSeparator
395
+ * @param {Highcharts.Breadcrumbs} this
396
+ * Breadcrumbs class.
397
+ * @param {Highcharts.Breadcrumbs} posX
398
+ * Initial horizontal position
399
+ * @param {Highcharts.Breadcrumbs} posY
400
+ * Initial vertical position
401
+ * @return {Highcharts.SVGElement}
402
+ * Returns the SVG button
403
+ */
404
+ Breadcrumbs.prototype.renderSeparator = function (posX, posY) {
405
+ var breadcrumbs = this,
406
+ chart = this.chart,
407
+ breadcrumbsOptions = breadcrumbs.options,
408
+ separatorOptions = breadcrumbsOptions.separator;
409
+ var separator = chart.renderer
410
+ .label(separatorOptions.text,
411
+ posX,
412
+ posY,
413
+ void 0,
414
+ void 0,
415
+ void 0,
416
+ false)
417
+ .addClass('highcharts-breadcrumbs-separator')
418
+ .add(breadcrumbs.group);
419
+ if (!chart.styledMode) {
420
+ separator.css(separatorOptions.style);
421
+ }
422
+ return separator;
423
+ };
424
+ /**
425
+ * Update.
426
+ * @function Highcharts.Breadcrumbs#update
427
+ *
428
+ * @requires modules/breadcrumbs
429
+ *
430
+ * @param {Highcharts.Breadcrumbs} this
431
+ * Breadcrumbs class.
432
+ * @param {Highcharts.BreadcrumbsOptions} options
433
+ * Breadcrumbs class.
434
+ * @param {boolean} redraw
435
+ * Redraw flag
436
+ */
437
+ Breadcrumbs.prototype.update = function (options) {
438
+ merge(true, this.options, options);
439
+ this.destroy();
440
+ this.isDirty = true;
441
+ };
442
+ /**
443
+ * Update button text when the showFullPath set to false.
444
+ * @function Highcharts.Breadcrumbs#updateSingleButton
445
+ *
446
+ * @requires modules/breadcrumbs
447
+ *
448
+ * @param {Highcharts.Breadcrumbs} this
449
+ * Breadcrumbs class.
450
+ */
451
+ Breadcrumbs.prototype.updateSingleButton = function () {
452
+ var chart = this.chart,
453
+ currentBreadcrumb = this.list[this.level - 1];
454
+ if (chart.drillUpButton) {
455
+ chart.drillUpButton.attr({
456
+ text: this.getButtonText(currentBreadcrumb)
457
+ });
458
+ }
459
+ };
460
+ /**
461
+ * Destroy the chosen breadcrumbs group
462
+ *
463
+ * @requires modules/breadcrumbs
464
+ *
465
+ * @function Highcharts.Breadcrumbs#destroy
466
+ * @param {Highcharts.Breadcrumbs} this
467
+ * Breadcrumbs class.
468
+ */
469
+ Breadcrumbs.prototype.destroy = function () {
470
+ this.destroySingleButton();
471
+ // Destroy elements one by one. It's necessary beacause
472
+ // g().destroy() does not remove added HTML
473
+ this.destroyListElements(true);
474
+ // Then, destroy the group itself.
475
+ if (this.group) {
476
+ this.group.destroy();
477
+ }
478
+ this.group = void 0;
479
+ };
480
+ /**
481
+ * Destroy the elements' buttons and separators.
482
+ *
483
+ * @requires modules/breadcrumbs
484
+ *
485
+ * @function Highcharts.Breadcrumbs#destroyListElements
486
+ * @param {Highcharts.Breadcrumbs} this
487
+ * Breadcrumbs class.
488
+ */
489
+ Breadcrumbs.prototype.destroyListElements = function (force) {
490
+ var elementList = this.elementList;
491
+ objectEach(elementList, function (element, level) {
492
+ if (force ||
493
+ !elementList[level].updated) {
494
+ element = elementList[level];
495
+ element.button && element.button.destroy();
496
+ element.separator && element.separator.destroy();
497
+ delete element.button;
498
+ delete element.separator;
499
+ delete elementList[level];
500
+ }
501
+ });
502
+ if (force) {
503
+ this.elementList = {};
504
+ }
505
+ };
506
+ /**
507
+ * Destroy the single button if exists.
508
+ *
509
+ * @requires modules/breadcrumbs
510
+ *
511
+ * @function Highcharts.Breadcrumbs#destroySingleButton
512
+ * @param {Highcharts.Breadcrumbs} this
513
+ * Breadcrumbs class.
514
+ */
515
+ Breadcrumbs.prototype.destroySingleButton = function () {
516
+ if (this.chart.drillUpButton) {
517
+ this.chart.drillUpButton.destroy();
518
+ this.chart.drillUpButton = void 0;
519
+ }
520
+ };
521
+ /**
522
+ * Reset state for all buttons in elementList.
523
+ *
524
+ * @requires modules/breadcrumbs
525
+ *
526
+ * @function Highcharts.Breadcrumbs#resetElementListState
527
+ * @param {Highcharts.Breadcrumbs} this
528
+ * Breadcrumbs class.
529
+ */
530
+ Breadcrumbs.prototype.resetElementListState = function () {
531
+ objectEach(this.elementList, function (element) {
532
+ element.updated = false;
533
+ });
534
+ };
535
+ /**
536
+ * Update rendered elements inside the elementList.
537
+ *
538
+ * @requires modules/breadcrumbs
539
+ *
540
+ * @function Highcharts.Breadcrumbs#updateListElements
541
+ * @param {Highcharts.Breadcrumbs} this
542
+ * Breadcrumbs class.
543
+ */
544
+ Breadcrumbs.prototype.updateListElements = function () {
545
+ var updateXPosition = function (element,
546
+ spacing) {
547
+ return element.getBBox().width + spacing;
548
+ }, breadcrumbs = this, elementList = breadcrumbs.elementList, buttonSpacing = breadcrumbs.options.buttonSpacing, list = breadcrumbs.list;
549
+ // Inital position for calculating the breadcrumbs group.
550
+ var posX = breadcrumbs.group ?
551
+ updateXPosition(breadcrumbs.group,
552
+ buttonSpacing) :
553
+ buttonSpacing,
554
+ posY = buttonSpacing,
555
+ currentBreadcrumb;
556
+ list.forEach(function (breadcrumb, index) {
557
+ var isLast = index === list.length - 1;
558
+ var button,
559
+ separator;
560
+ if (elementList[breadcrumb.level]) {
561
+ currentBreadcrumb = elementList[breadcrumb.level];
562
+ button = currentBreadcrumb.button;
563
+ // Render a separator if it was not created before.
564
+ if (!currentBreadcrumb.separator &&
565
+ !isLast) {
566
+ // Add spacing for the next separator
567
+ posX += buttonSpacing;
568
+ currentBreadcrumb.separator =
569
+ breadcrumbs.renderSeparator(posX, posY);
570
+ posX += updateXPosition(currentBreadcrumb.separator, buttonSpacing);
571
+ }
572
+ else if (currentBreadcrumb.separator &&
573
+ isLast) {
574
+ currentBreadcrumb.separator.destroy();
575
+ delete currentBreadcrumb.separator;
576
+ }
577
+ elementList[breadcrumb.level].updated = true;
578
+ }
579
+ else {
580
+ // Render a button.
581
+ button = breadcrumbs.renderButton(breadcrumb, posX, posY);
582
+ posX += updateXPosition(button, buttonSpacing);
583
+ // Render a separator.
584
+ if (!isLast) {
585
+ separator = breadcrumbs.renderSeparator(posX, posY);
586
+ posX += updateXPosition(separator, buttonSpacing);
587
+ }
588
+ elementList[breadcrumb.level] = {
589
+ button: button,
590
+ separator: separator,
591
+ updated: true
592
+ };
593
+ }
594
+ if (button) {
595
+ button.setState(isLast ? 2 : 0);
596
+ }
597
+ });
598
+ };
599
+ /**
600
+ * Options for breadcrumbs. Breadcrumbs general options are defined in
601
+ * `navigation.breadcrumbs`. Specific options for drilldown are set in
602
+ * `drilldown.breadcrumbs` and for tree-like series traversing, in
603
+ * `plotOptions[series].breadcrumbs`.
604
+ *
605
+ * @since 10.0.0
606
+ * @product highcharts
607
+ * @optionparent navigation.breadcrumbs
608
+ */
609
+ Breadcrumbs.defaultBreadcrumbsOptions = {
610
+ /**
611
+ * A collection of attributes for the buttons. The object takes SVG
612
+ * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,
613
+ * a collection of CSS properties for the text.
614
+ *
615
+ * The object can also be extended with states, so you can set
616
+ * presentational options for `hover`, `select` or `disabled` button
617
+ * states.
618
+ *
619
+ * @sample {highcharts} highcharts/breadcrumbs/single-button
620
+ * Themed, single button
621
+ *
622
+ * @type {Highcharts.SVGAttributes}
623
+ * @since 10.0.0
624
+ * @product highcharts
625
+ */
626
+ buttonTheme: {
627
+ /** @ignore */
628
+ fill: 'none',
629
+ /** @ignore */
630
+ height: 18,
631
+ /** @ignore */
632
+ padding: 2,
633
+ /** @ignore */
634
+ 'stroke-width': 0,
635
+ /** @ignore */
636
+ zIndex: 7,
637
+ /** @ignore */
638
+ states: {
639
+ select: {
640
+ fill: 'none'
641
+ }
642
+ },
643
+ style: {
644
+ color: "#335cad" /* highlightColor80 */
645
+ }
646
+ },
647
+ /**
648
+ * The default padding for each button and separator in each direction.
649
+ *
650
+ * @type {number}
651
+ * @since 10.0.0
652
+ */
653
+ buttonSpacing: 5,
654
+ /**
655
+ * Fires when clicking on the breadcrumbs button. Two arguments are
656
+ * passed to the function. First breadcrumb button as an SVG element.
657
+ * Second is the breadcrumbs class, containing reference to the chart,
658
+ * series etc.
659
+ *
660
+ * ```js
661
+ * click: function(button, breadcrumbs) {
662
+ * console.log(button);
663
+ * }
664
+ * ```
665
+ *
666
+ * Return false to stop default buttons click action.
667
+ *
668
+ * @type {Highcharts.BreadcrumbsClickCallbackFunction}
669
+ * @since 10.0.0
670
+ * @apioption navigation.breadcrumbs.events.click
671
+ */
672
+ /**
673
+ * When the breadcrumbs are floating, the plot area will not move to
674
+ * make space for it. By default, the chart will not make space for the
675
+ * buttons. This property won't work when positioned in the middle.
676
+ *
677
+ * @sample highcharts/breadcrumbs/single-button
678
+ * Floating button
679
+ * @type {boolean}
680
+ * @since 10.0.0
681
+ */
682
+ floating: false,
683
+ /**
684
+ * A format string for the breadcrumbs button. Variables are enclosed by
685
+ * curly brackets. Available values are passed in the declared point
686
+ * options.
687
+ *
688
+ * @type {string|undefined}
689
+ * @since 10.0.0
690
+ * @default undefined
691
+ * @sample {highcharts} highcharts/breadcrumbs/format Display custom
692
+ * values in breadcrumb button.
693
+ */
694
+ format: void 0,
695
+ /**
696
+ * Callback function to format the breadcrumb text from scratch.
697
+ *
698
+ * @type {Highcharts.BreadcrumbsFormatterCallbackFunction}
699
+ * @since 10.0.0
700
+ * @default undefined
701
+ * @apioption navigation.breadcrumbs.formatter
702
+ */
703
+ /**
704
+ * What box to align the button to. Can be either `plotBox` or
705
+ * `spacingBox`.
706
+ *
707
+ * @type {Highcharts.ButtonRelativeToValue}
708
+ * @default plotBox
709
+ * @since 10.0.0
710
+ * @product highcharts highmaps
711
+ */
712
+ relativeTo: 'plotBox',
713
+ /**
714
+ * Positioning for the button row. The breadcrumbs buttons will be
715
+ * aligned properly for the default chart layout (title, subtitle,
716
+ * legend, range selector) for the custom chart layout set the position
717
+ * properties.
718
+ * @type {Highcharts.BreadcrumbsAlignOptions}
719
+ * @since 10.0.0
720
+ * @product highcharts highmaps
721
+ * @sample {highcharts} highcharts/breadcrumbs/single-button
722
+ * Single, right aligned button
723
+ */
724
+ position: {
725
+ /**
726
+ * Horizontal alignment of the breadcrumbs buttons.
727
+ *
728
+ * @type {Highcharts.AlignValue}
729
+ */
730
+ align: 'left',
731
+ /**
732
+ * Vertical alignment of the breadcrumbs buttons.
733
+ *
734
+ * @type {Highcharts.VerticalAlignValue}
735
+ */
736
+ verticalAlign: 'top',
737
+ /**
738
+ * The X offset of the breadcrumbs button group.
739
+ *
740
+ * @type {number}
741
+ */
742
+ x: 0,
743
+ /**
744
+ * The Y offset of the breadcrumbs button group. When `undefined`,
745
+ * and `floating` is `false`, the `y` position is adapted so that
746
+ * the breadcrumbs are rendered outside the target area.
747
+ *
748
+ * @type {number|undefined}
749
+ */
750
+ y: void 0
751
+ },
752
+ /**
753
+ * Options object for Breadcrumbs separator.
754
+ *
755
+ * @since 10.0.0
756
+ */
757
+ separator: {
758
+ /**
759
+ * @type {string}
760
+ * @since 10.0.0
761
+ * @product highcharts
762
+ */
763
+ text: '/',
764
+ /**
765
+ * CSS styles for the breadcrumbs separator.
766
+ *
767
+ * In styled mode, the breadcrumbs separators are styled by the
768
+ * `.highcharts-separator` rule with its different states.
769
+ * @type {Highcharts.CSSObject}
770
+ * @since 10.0.0
771
+ */
772
+ style: {
773
+ color: "#666666" /* neutralColor60 */
774
+ }
775
+ },
776
+ /**
777
+ * Show full path or only a single button.
778
+ *
779
+ * @type {boolean}
780
+ * @since 10.0.0
781
+ * @sample {highcharts} highcharts/breadcrumbs/single-button
782
+ * Single, styled button
783
+ */
784
+ showFullPath: true,
785
+ /**
786
+ * CSS styles for all breadcrumbs.
787
+ *
788
+ * In styled mode, the breadcrumbs buttons are styled by the
789
+ * `.highcharts-breadcrumbs-buttons .highcharts-button` rule with its
790
+ * different states.
791
+ * @type {Highcharts.SVGAttributes}
792
+ * @since 10.0.0
793
+ */
794
+ style: {},
795
+ /**
796
+ * Whether to use HTML to render the breadcrumbs items texts.
797
+ *
798
+ * @type {boolean}
799
+ * @since 10.0.0
800
+ */
801
+ useHTML: false,
802
+ /**
803
+ * The z index of the breadcrumbs group.
804
+ *
805
+ * @type {number}
806
+ * @since 10.0.0
807
+ */
808
+ zIndex: 7
809
+ };
810
+ return Breadcrumbs;
811
+ }());
812
+ /* eslint-disable no-invalid-this */
813
+ if (!H.Breadcrumbs) {
814
+ H.Breadcrumbs = Breadcrumbs;
815
+ // Logic for making space for the buttons above the plot area
816
+ addEvent(Chart, 'getMargins', function () {
817
+ var breadcrumbs = this.breadcrumbs;
818
+ if (breadcrumbs &&
819
+ !breadcrumbs.options.floating &&
820
+ breadcrumbs.level) {
821
+ var breadcrumbsOptions = breadcrumbs.options,
822
+ buttonTheme = breadcrumbsOptions.buttonTheme,
823
+ breadcrumbsHeight = ((buttonTheme.height || 0) +
824
+ 2 * (buttonTheme.padding || 0) +
825
+ breadcrumbsOptions.buttonSpacing),
826
+ verticalAlign = breadcrumbsOptions.position.verticalAlign;
827
+ if (verticalAlign === 'bottom') {
828
+ this.marginBottom = (this.marginBottom || 0) + breadcrumbsHeight;
829
+ breadcrumbs.yOffset = breadcrumbsHeight;
830
+ }
831
+ else if (verticalAlign !== 'middle') {
832
+ this.plotTop += breadcrumbsHeight;
833
+ breadcrumbs.yOffset = -breadcrumbsHeight;
834
+ }
835
+ else {
836
+ breadcrumbs.yOffset = void 0;
837
+ }
838
+ }
839
+ });
840
+ addEvent(Chart, 'redraw', function () {
841
+ this.breadcrumbs && this.breadcrumbs.redraw();
842
+ });
843
+ // Remove resize/afterSetExtremes at chart destroy
844
+ addEvent(Chart, 'destroy', function destroyEvents() {
845
+ if (this.breadcrumbs) {
846
+ this.breadcrumbs.destroy();
847
+ this.breadcrumbs = void 0;
848
+ }
849
+ });
850
+ // Shift the drillUpButton to make the space for resetZoomButton, #8095.
851
+ addEvent(Chart, 'afterShowResetZoom', function () {
852
+ var chart = this;
853
+ if (chart.breadcrumbs) {
854
+ var bbox = chart.resetZoomButton &&
855
+ chart.resetZoomButton.getBBox(),
856
+ breadcrumbsOptions = chart.breadcrumbs.options;
857
+ if (bbox &&
858
+ breadcrumbsOptions.position.align === 'right' &&
859
+ breadcrumbsOptions.relativeTo === 'plotBox') {
860
+ chart.breadcrumbs.alignBreadcrumbsGroup(-bbox.width - breadcrumbsOptions.buttonSpacing);
861
+ }
862
+ }
863
+ });
864
+ // After zooming out, shift the drillUpButton
865
+ // to the previous position, #8095.
866
+ addEvent(Chart, 'selection', function (event) {
867
+ if (event.resetSelection === true &&
868
+ this.breadcrumbs) {
869
+ this.breadcrumbs.alignBreadcrumbsGroup();
870
+ }
871
+ });
872
+ }
873
+ /* *
874
+ *
875
+ * Default Export
876
+ *
877
+ * */
878
+ /* *
879
+ *
880
+ * API Declarations
881
+ *
882
+ * */
883
+ /**
884
+ * Callback function to react on button clicks.
885
+ *
886
+ * @callback Highcharts.BreadcrumbsClickCallbackFunction
887
+ *
888
+ * @param {Highcharts.Event} event
889
+ * Event.
890
+ *
891
+ * @param {Highcharts.BreadcrumbOptions} options
892
+ * Breadcrumb options.
893
+ *
894
+ * @param {global.Event} e
895
+ * Event arguments.
896
+ */
897
+ /**
898
+ * Callback function to format the breadcrumb text from scratch.
899
+ *
900
+ * @callback Highcharts.BreadcrumbsFormatterCallbackFunction
901
+ *
902
+ * @param {Highcharts.Event} event
903
+ * Event.
904
+ *
905
+ * @param {Highcharts.BreadcrumbOptions} options
906
+ * Breadcrumb options.
907
+ *
908
+ * @return {string}
909
+ * Formatted text or false
910
+ */
911
+ /**
912
+ * Options for the one breadcrumb.
913
+ *
914
+ * @interface Highcharts.BreadcrumbOptions
915
+ */
916
+ /**
917
+ * Level connected to a specific breadcrumb.
918
+ * @name Highcharts.BreadcrumbOptions#level
919
+ * @type {number}
920
+ */
921
+ /**
922
+ * Options for series or point connected to a specific breadcrumb.
923
+ * @name Highcharts.BreadcrumbOptions#levelOptions
924
+ * @type {SeriesOptions|PointOptionsObject}
925
+ */
926
+ /**
927
+ * Options for aligning breadcrumbs group.
928
+ *
929
+ * @interface Highcharts.BreadcrumbsAlignOptions
930
+ */
931
+ /**
932
+ * Align of a Breadcrumb group.
933
+ * @default right
934
+ * @name Highcharts.BreadcrumbsAlignOptions#align
935
+ * @type {AlignValue}
936
+ */
937
+ /**
938
+ * Vertical align of a Breadcrumb group.
939
+ * @default top
940
+ * @name Highcharts.BreadcrumbsAlignOptions#verticalAlign
941
+ * @type {VerticalAlignValue}
942
+ */
943
+ /**
944
+ * X offset of a Breadcrumbs group.
945
+ * @name Highcharts.BreadcrumbsAlignOptions#x
946
+ * @type {number}
947
+ */
948
+ /**
949
+ * Y offset of a Breadcrumbs group.
950
+ * @name Highcharts.BreadcrumbsAlignOptions#y
951
+ * @type {number}
952
+ */
953
+ /**
954
+ * Options for all breadcrumbs.
955
+ *
956
+ * @interface Highcharts.BreadcrumbsOptions
957
+ */
958
+ /**
959
+ * Button theme.
960
+ * @name Highcharts.BreadcrumbsOptions#buttonTheme
961
+ * @type { SVGAttributes | undefined }
962
+ */
963
+ (''); // Keeps doclets above in JS file
964
+
965
+ return Breadcrumbs;
966
+ });
967
+ _registerModule(_modules, 'Extensions/Drilldown.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Color/Color.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js'], _modules['Extensions/Breadcrumbs.js']], function (A, Axis, Chart, Color, ColumnSeries, F, H, D, Point, Series, SeriesRegistry, SVGRenderer, Tick, U, Breadcrumbs) {
32
968
  /* *
33
969
  *
34
970
  * Highcharts Drilldown module
@@ -174,18 +1110,20 @@
174
1110
  * @optionparent lang
175
1111
  */
176
1112
  {
177
- /**
178
- * The text for the button that appears when drilling down, linking back
179
- * to the parent series. The parent series' name is inserted for
180
- * `{series.name}`.
181
- *
182
- * @since 3.0.8
183
- * @product highcharts highmaps
184
- * @requires modules/drilldown
185
- *
186
- * @private
187
- */
188
- drillUpText: '◁ Back to {series.name}'
1113
+ /**
1114
+ * The text for the button that appears when drilling down, linking back
1115
+ * to the parent series. The parent series' name is inserted for
1116
+ * `{series.name}`.
1117
+ *
1118
+ * @since 3.0.8
1119
+ * @product highcharts highmaps
1120
+ * @requires modules/drilldown
1121
+ * @apioption lang.drillUpText
1122
+ *
1123
+ * @deprecated
1124
+ *
1125
+ * @private
1126
+ */
189
1127
  });
190
1128
  /**
191
1129
  * Options for drill down, the concept of inspecting increasingly high
@@ -217,6 +1155,15 @@
217
1155
  * @product highcharts
218
1156
  * @apioption drilldown.allowPointDrilldown
219
1157
  */
1158
+ /**
1159
+ * Options for the breadcrumbs, the navigation at the top leading the way
1160
+ * up through the drilldown levels.
1161
+ *
1162
+ * @since 10.0.0
1163
+ * @product highcharts
1164
+ * @extends navigation.breadcrumbs
1165
+ * @optionparent drilldown.breadcrumbs
1166
+ */
220
1167
  /**
221
1168
  * An array of series configurations for the drill down. Each series
222
1169
  * configuration uses the same syntax as the [series](#series) option set.
@@ -303,17 +1250,23 @@
303
1250
  duration: 500
304
1251
  },
305
1252
  /**
1253
+ *
306
1254
  * Options for the drill up button that appears when drilling down on a
307
1255
  * series. The text for the button is defined in
308
1256
  * [lang.drillUpText](#lang.drillUpText).
309
1257
  *
310
- * @sample {highcharts} highcharts/drilldown/drillupbutton/
311
- * Drill up button
312
- * @sample {highmaps} highcharts/drilldown/drillupbutton/
313
- * Drill up button
1258
+ * This option is deprecated since 9.3.2, use `drilldown.breadcrumbs`
1259
+ * instead.
1260
+ *
1261
+ * @sample highcharts/breadcrumbs/single-button
1262
+ * Breadcrumbs set up like a legacy button
1263
+ * @sample {highcharts} highcharts/drilldown/drillupbutton/ Drill up button
1264
+ * @sample {highmaps} highcharts/drilldown/drillupbutton/ Drill up button
314
1265
  *
315
1266
  * @since 3.0.8
316
1267
  * @product highcharts highmaps
1268
+ *
1269
+ * @deprecated
317
1270
  */
318
1271
  drillUpButton: {
319
1272
  /**
@@ -610,50 +1563,51 @@
610
1563
  delete this.resetZoomButton;
611
1564
  }
612
1565
  this.pointer.reset();
613
- this.redraw();
614
- this.showDrillUpButton();
615
1566
  fireEvent(this, 'afterDrilldown');
1567
+ this.redraw();
1568
+ fireEvent(this, 'afterApplyDrilldown');
616
1569
  };
617
- Chart.prototype.getDrilldownBackText = function () {
618
- var drilldownLevels = this.drilldownLevels,
619
- lastLevel;
620
- if (drilldownLevels && drilldownLevels.length > 0) { // #3352, async loading
621
- lastLevel = drilldownLevels[drilldownLevels.length - 1];
622
- lastLevel.series = lastLevel.seriesOptions;
623
- return format(this.options.lang.drillUpText || '', lastLevel);
624
- }
625
- };
626
- Chart.prototype.showDrillUpButton = function () {
627
- var chart = this,
628
- backText = this.getDrilldownBackText(),
629
- buttonOptions = chart.options.drilldown.drillUpButton,
630
- attr,
631
- states,
632
- alignTo = (buttonOptions.relativeTo === 'chart' ||
633
- buttonOptions.relativeTo === 'spacingBox' ?
634
- null :
635
- 'scrollablePlotBox');
636
- if (!this.drillUpButton) {
637
- attr = buttonOptions.theme;
638
- states = attr && attr.states;
639
- this.drillUpButton = this.renderer
640
- .button(backText, null, null, function () {
641
- chart.drillUp();
642
- }, attr, states && states.hover, states && states.select)
643
- .addClass('highcharts-drillup-button')
644
- .attr({
645
- align: buttonOptions.position.align,
646
- zIndex: 7
647
- })
648
- .add()
649
- .align(buttonOptions.position, false, alignTo);
650
- }
651
- else {
652
- this.drillUpButton.attr({
653
- text: backText
654
- })
655
- .align();
1570
+ /**
1571
+ * This method creates an array of arrays containing a level number
1572
+ * with the corresponding series/point.
1573
+ *
1574
+ * @requires modules/breadcrumbs
1575
+ *
1576
+ * @private
1577
+ * @param {Highcharts.Chart} chart
1578
+ * Highcharts Chart object.
1579
+ * @return {Array<Breadcrumbs.BreadcrumbOptions>}
1580
+ * List for Highcharts Breadcrumbs.
1581
+ */
1582
+ var createBreadcrumbsList = function (chart) {
1583
+ var list = [],
1584
+ drilldownLevels = chart.drilldownLevels;
1585
+ // The list is based on drilldown levels from the chart object
1586
+ if (drilldownLevels && drilldownLevels.length) {
1587
+ // Add the initial series as the first element.
1588
+ if (!list[0]) {
1589
+ list.push({
1590
+ level: 0,
1591
+ levelOptions: drilldownLevels[0].seriesOptions
1592
+ });
1593
+ }
1594
+ var lastBreadcrumb_1 = list[list.length - 1];
1595
+ drilldownLevels.forEach(function (level) {
1596
+ // If level is already added to breadcrumbs list,
1597
+ // don't add it again- drilling categories
1598
+ // + 1 because of the wrong levels numeration
1599
+ // in drilldownLevels array.
1600
+ if (level.levelNumber + 1 > lastBreadcrumb_1.level) {
1601
+ list.push({
1602
+ level: level.levelNumber + 1,
1603
+ levelOptions: merge({
1604
+ name: level.lowerSeries.name
1605
+ }, level.pointOptions)
1606
+ });
1607
+ }
1608
+ });
656
1609
  }
1610
+ return list;
657
1611
  };
658
1612
  /**
659
1613
  * When the chart is drilled down to a child series, calling `chart.drillUp()`
@@ -670,6 +1624,7 @@
670
1624
  if (!this.drilldownLevels || this.drilldownLevels.length === 0) {
671
1625
  return;
672
1626
  }
1627
+ fireEvent(this, 'beforeDrillUp');
673
1628
  var chart = this,
674
1629
  drilldownLevels = chart.drilldownLevels,
675
1630
  levelNumber = drilldownLevels[drilldownLevels.length - 1].levelNumber,
@@ -696,6 +1651,7 @@
696
1651
  newSeries = addedSeries;
697
1652
  }
698
1653
  };
1654
+ var drilldownLevelsNumber = chart.drilldownLevels.length;
699
1655
  while (i--) {
700
1656
  level = drilldownLevels[i];
701
1657
  if (level.levelNumber === levelNumber) {
@@ -715,12 +1671,19 @@
715
1671
  }
716
1672
  }
717
1673
  oldSeries.xData = []; // Overcome problems with minRange (#2898)
1674
+ // Reset the names to start new series from the beginning.
1675
+ // Do it once to preserve names when multiple
1676
+ // series are added for the same axis, #16135.
1677
+ if (oldSeries.xAxis &&
1678
+ oldSeries.xAxis.names &&
1679
+ (drilldownLevelsNumber === 0 || i === drilldownLevelsNumber)) {
1680
+ oldSeries.xAxis.names.length = 0;
1681
+ }
718
1682
  level.levelSeriesOptions.forEach(addSeries);
719
1683
  fireEvent(chart, 'drillup', {
720
1684
  seriesOptions: level.seriesPurgedOptions ||
721
1685
  level.seriesOptions
722
1686
  });
723
- this.resetZoomButton && this.resetZoomButton.destroy(); // #8095
724
1687
  if (newSeries.type === oldSeries.type) {
725
1688
  newSeries.drilldownLevel = level;
726
1689
  newSeries.options.animation =
@@ -741,30 +1704,46 @@
741
1704
  // it to the chart and show it.
742
1705
  if (level.resetZoomButton) {
743
1706
  chart.resetZoomButton = level.resetZoomButton;
744
- chart.resetZoomButton.show();
745
1707
  }
746
1708
  }
747
1709
  }
1710
+ fireEvent(chart, 'afterDrillUp');
748
1711
  this.redraw();
749
- if (this.drilldownLevels.length === 0) {
750
- this.drillUpButton = this.drillUpButton.destroy();
751
- }
752
- else {
753
- this.drillUpButton.attr({
754
- text: this.getDrilldownBackText()
755
- })
756
- .align();
757
- }
758
1712
  this.ddDupes.length = []; // #3315
759
1713
  // Fire a once-off event after all series have been drilled up (#5158)
760
1714
  fireEvent(chart, 'drillupall');
761
1715
  };
1716
+ /**
1717
+ * A function to fade in a group. First, the element is being hidden,
1718
+ * then, using `opactiy`, is faded in. Used for example by `dataLabelsGroup`
1719
+ * where simple SVGElement.fadeIn() is not enough, because of other features
1720
+ * (e.g. InactiveState) using `opacity` to fadeIn/fadeOut.
1721
+ *
1722
+ * @requires module:modules/drilldown
1723
+ *
1724
+ * @param {undefined|SVGElement} [group]
1725
+ * The SVG element to be faded in.
1726
+ */
1727
+ function fadeInGroup(group) {
1728
+ var animationOptions = animObject(this.chart.options.drilldown.animation);
1729
+ if (group) {
1730
+ group.hide();
1731
+ syncTimeout(function () {
1732
+ // Make sure neither the group, or the chart, were destroyed
1733
+ if (group && group.added) {
1734
+ group.fadeIn();
1735
+ }
1736
+ }, Math.max(animationOptions.duration - 50, 0));
1737
+ }
1738
+ }
762
1739
  /* eslint-disable no-invalid-this */
763
1740
  // Add update function to be called internally from Chart.update
764
1741
  // (#7600, #12855)
765
1742
  addEvent(Chart, 'afterInit', function () {
766
1743
  var chart = this;
767
1744
  chart.drilldown = {
1745
+ chart: chart,
1746
+ fadeInGroup: fadeInGroup,
768
1747
  update: function (options, redraw) {
769
1748
  merge(true, chart.options.drilldown, options);
770
1749
  if (pick(redraw, true)) {
@@ -773,24 +1752,6 @@
773
1752
  }
774
1753
  };
775
1754
  });
776
- // Shift the drillUpButton to make the space for resetZoomButton, #8095.
777
- addEvent(Chart, 'afterShowResetZoom', function () {
778
- var chart = this,
779
- bbox = chart.resetZoomButton && chart.resetZoomButton.getBBox(),
780
- buttonOptions = (chart.options.drilldown &&
781
- chart.options.drilldown.drillUpButton);
782
- if (this.drillUpButton &&
783
- bbox &&
784
- buttonOptions &&
785
- buttonOptions.position &&
786
- buttonOptions.position.x) {
787
- this.drillUpButton.align({
788
- x: buttonOptions.position.x - bbox.width - 10,
789
- y: buttonOptions.position.y,
790
- align: buttonOptions.position.align
791
- }, false, buttonOptions.relativeTo || 'plotBox');
792
- }
793
- });
794
1755
  addEvent(Chart, 'render', function () {
795
1756
  (this.xAxis || []).forEach(function (axis) {
796
1757
  axis.ddPoints = {};
@@ -824,6 +1785,35 @@
824
1785
  objectEach(axis.ticks, Tick.prototype.drillable);
825
1786
  });
826
1787
  });
1788
+ addEvent(H.Breadcrumbs, 'up', function (e) {
1789
+ var chart = this.chart,
1790
+ drillUpsNumber = this.getLevel() - e.newLevel;
1791
+ for (var i = 0; i < drillUpsNumber; i++) {
1792
+ chart.drillUp();
1793
+ }
1794
+ });
1795
+ addEvent(Chart, 'afterDrilldown', function () {
1796
+ var chart = this,
1797
+ drilldownOptions = chart.options.drilldown,
1798
+ breadcrumbsOptions = drilldownOptions && drilldownOptions.breadcrumbs;
1799
+ if (!chart.breadcrumbs) {
1800
+ chart.breadcrumbs = new Breadcrumbs(chart, breadcrumbsOptions);
1801
+ }
1802
+ chart.breadcrumbs.updateProperties(createBreadcrumbsList(chart));
1803
+ });
1804
+ addEvent(Chart, 'afterDrillUp', function () {
1805
+ var chart = this;
1806
+ chart.breadcrumbs &&
1807
+ chart.breadcrumbs.updateProperties(createBreadcrumbsList(chart));
1808
+ });
1809
+ addEvent(Chart, 'update', function (e) {
1810
+ var breadcrumbs = this.breadcrumbs,
1811
+ breadcrumbOptions = e.options.drilldown &&
1812
+ e.options.drilldown.breadcrumbs;
1813
+ if (breadcrumbs && breadcrumbOptions) {
1814
+ breadcrumbs.update(e.options.drilldown.breadcrumbs);
1815
+ }
1816
+ });
827
1817
  /**
828
1818
  * When drilling up, keep the upper series invisible until the lower series has
829
1819
  * moved into place.
@@ -916,10 +1906,10 @@
916
1906
  .attr(animateFrom)
917
1907
  .animate(extend(point.shapeArgs, { fill: point.color || series.color }), animationOptions);
918
1908
  }
919
- if (point.dataLabel) {
920
- point.dataLabel.fadeIn(animationOptions);
921
- }
922
1909
  });
1910
+ if (chart.drilldown) {
1911
+ chart.drilldown.fadeInGroup(this.dataLabelsGroup);
1912
+ }
923
1913
  // Reset to prototype
924
1914
  delete this.animate;
925
1915
  }
@@ -1006,6 +1996,9 @@
1006
1996
  }))[animationOptions ? 'animate' : 'attr'](animateTo, animationOptions);
1007
1997
  }
1008
1998
  });
1999
+ if (this.chart.drilldown) {
2000
+ this.chart.drilldown.fadeInGroup(this.dataLabelsGroup);
2001
+ }
1009
2002
  // Reset to prototype
1010
2003
  delete this.animate;
1011
2004
  }
@@ -1239,24 +2232,16 @@
1239
2232
  applyCursorCSS(this.series.halo, 'auto', false, styledMode);
1240
2233
  }
1241
2234
  });
1242
- // After zooming out, shift the drillUpButton to the previous position, #8095.
1243
- addEvent(Chart, 'selection', function (event) {
1244
- if (event.resetSelection === true && this.drillUpButton) {
1245
- var buttonOptions = (this.options.drilldown && this.options.drilldown.drillUpButton);
1246
- if (buttonOptions && buttonOptions.position) {
1247
- this.drillUpButton.align({
1248
- x: buttonOptions.position.x,
1249
- y: buttonOptions.position.y,
1250
- align: buttonOptions.position.align
1251
- }, false, buttonOptions.relativeTo || 'plotBox');
1252
- }
1253
- }
1254
- });
1255
2235
  addEvent(Chart, 'drillup', function () {
1256
2236
  if (this.resetZoomButton) {
1257
2237
  this.resetZoomButton = this.resetZoomButton.destroy();
1258
2238
  }
1259
2239
  });
2240
+ addEvent(Chart, 'drillupall', function () {
2241
+ if (this.resetZoomButton) {
2242
+ this.showResetZoom();
2243
+ }
2244
+ });
1260
2245
 
1261
2246
  });
1262
2247
  _registerModule(_modules, 'masters/modules/drilldown.src.js', [], function () {