highcharts 9.3.2 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (700) 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/A11yI18n.js +4 -4
  8. package/es-modules/Accessibility/Accessibility.js +1 -1
  9. package/es-modules/Accessibility/Components/ContainerComponent.js +8 -9
  10. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +14 -9
  11. package/es-modules/Accessibility/Components/LegendComponent.js +31 -23
  12. package/es-modules/Accessibility/Components/MenuComponent.js +15 -5
  13. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +2 -2
  14. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
  15. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
  16. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +0 -1
  17. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -18
  18. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +84 -33
  19. package/es-modules/Accessibility/Components/ZoomComponent.js +13 -10
  20. package/es-modules/Accessibility/FocusBorder.js +6 -5
  21. package/es-modules/Accessibility/HighContrastMode.js +2 -2
  22. package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
  23. package/es-modules/Accessibility/Options/LangOptions.js +36 -31
  24. package/es-modules/Accessibility/Options/Options.js +66 -3
  25. package/es-modules/Accessibility/ProxyElement.js +14 -6
  26. package/es-modules/Accessibility/ProxyProvider.js +10 -2
  27. package/es-modules/Accessibility/Utils/ChartUtilities.js +9 -4
  28. package/es-modules/Core/Axis/Axis.js +180 -73
  29. package/es-modules/Core/Axis/Color/ColorAxis.js +22 -5
  30. package/es-modules/Core/Axis/GridAxis.js +15 -11
  31. package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
  32. package/es-modules/Core/Axis/OrdinalAxis.js +3 -2
  33. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +1 -1
  34. package/es-modules/Core/Axis/StackingAxis.js +0 -1
  35. package/es-modules/Core/Axis/Tick.js +2 -2
  36. package/es-modules/Core/Axis/TreeGridTick.js +11 -0
  37. package/es-modules/Core/Chart/Chart.js +21 -3
  38. package/es-modules/Core/Chart/Chart3D.js +1 -11
  39. package/es-modules/Core/Chart/ChartDefaults.js +43 -11
  40. package/es-modules/Core/Chart/MapChart.js +1 -6
  41. package/es-modules/Core/Chart/StockChart.js +1 -1
  42. package/es-modules/Core/DefaultOptions.js +8 -4
  43. package/es-modules/Core/Geometry/PolygonClip.js +84 -0
  44. package/es-modules/Core/Globals.js +4 -18
  45. package/es-modules/Core/HttpUtilities.js +13 -8
  46. package/es-modules/Core/Legend/Legend.js +11 -9
  47. package/es-modules/Core/Navigator.js +10 -7
  48. package/es-modules/Core/Pointer.js +15 -11
  49. package/es-modules/Core/Renderer/HTML/AST.js +68 -8
  50. package/es-modules/Core/Renderer/SVG/SVGElement.js +47 -63
  51. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
  52. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +31 -28
  53. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +1 -1
  54. package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
  55. package/es-modules/Core/Scrollbar.js +9 -5
  56. package/es-modules/Core/Series/DataLabel.js +65 -36
  57. package/es-modules/Core/Series/Point.js +2 -2
  58. package/es-modules/Core/Series/Series.js +52 -22
  59. package/es-modules/Core/Series/SeriesDefaults.js +4 -1
  60. package/es-modules/Core/Tooltip.js +14 -31
  61. package/es-modules/Core/Utilities.js +29 -29
  62. package/es-modules/Extensions/Annotations/Annotations.js +9 -2
  63. package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
  64. package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
  65. package/es-modules/Extensions/Annotations/NavigationBindings.js +9 -1
  66. package/es-modules/Extensions/Annotations/Popup.js +1 -1
  67. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +5 -3
  68. package/es-modules/Extensions/Boost/BoostInit.js +6 -1
  69. package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
  70. package/es-modules/Extensions/Boost/Boostables.js +1 -0
  71. package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
  72. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  73. package/es-modules/Extensions/Breadcrumbs.js +873 -0
  74. package/es-modules/Extensions/Data.js +26 -14
  75. package/es-modules/Extensions/DataGrouping.js +8 -3
  76. package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
  77. package/es-modules/Extensions/DraggablePoints.js +9 -7
  78. package/es-modules/Extensions/Drilldown.js +150 -95
  79. package/es-modules/Extensions/ExportData.js +1 -2
  80. package/es-modules/Extensions/Exporting/Exporting.js +31 -20
  81. package/es-modules/Extensions/Exporting/ExportingDefaults.js +49 -1
  82. package/es-modules/Extensions/FullScreen.js +121 -54
  83. package/es-modules/Extensions/GeoJSON.js +151 -125
  84. package/es-modules/Extensions/MarkerClusters.js +34 -20
  85. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
  86. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  87. package/es-modules/Extensions/Oldie/Oldie.js +1 -1
  88. package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
  89. package/es-modules/Extensions/Polar.js +4 -1
  90. package/es-modules/Extensions/ScrollablePlotArea.js +5 -1
  91. package/es-modules/Extensions/Stacking.js +4 -3
  92. package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
  93. package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
  94. package/es-modules/Maps/MapNavigation.js +50 -13
  95. package/es-modules/Maps/MapPointer.js +16 -0
  96. package/es-modules/Maps/MapUtilities.js +56 -0
  97. package/es-modules/Maps/MapView.js +611 -136
  98. package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
  99. package/es-modules/Maps/MapViewOptionsDefault.js +60 -20
  100. package/es-modules/Maps/Projection.js +169 -77
  101. package/es-modules/Maps/Projections/EqualEarth.js +15 -6
  102. package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
  103. package/es-modules/Maps/Projections/Miller.js +23 -10
  104. package/es-modules/Maps/Projections/Orthographic.js +21 -10
  105. package/es-modules/Maps/Projections/WebMercator.js +25 -13
  106. package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +77 -0
  107. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +589 -0
  108. package/es-modules/Series/CenteredUtilities.js +6 -1
  109. package/es-modules/Series/Column/ColumnSeries.js +4 -3
  110. package/es-modules/Series/DataModifyComposition.js +1 -0
  111. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +2 -2
  112. package/es-modules/Series/DrawPointComposition.js +7 -4
  113. package/es-modules/Series/Flags/FlagsSeries.js +7 -12
  114. package/es-modules/Series/Gauge/GaugeSeries.js +1 -1
  115. package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -20
  116. package/es-modules/Series/Lollipop/LollipopSeries.js +1 -1
  117. package/es-modules/Series/Map/MapPoint.js +24 -1
  118. package/es-modules/Series/Map/MapSeries.js +206 -169
  119. package/es-modules/Series/MapBubble/MapBubblePoint.js +16 -24
  120. package/es-modules/Series/MapBubble/MapBubbleSeries.js +58 -1
  121. package/es-modules/Series/MapPoint/MapPointPoint.js +2 -8
  122. package/es-modules/Series/MapPoint/MapPointSeries.js +40 -14
  123. package/es-modules/Series/NodesComposition.js +60 -13
  124. package/es-modules/Series/OHLC/OHLCSeries.js +7 -0
  125. package/es-modules/Series/Organization/OrganizationPoint.js +68 -2
  126. package/es-modules/Series/Organization/OrganizationSeries.js +79 -25
  127. package/es-modules/Series/Pie/PieDataLabel.js +3 -1
  128. package/es-modules/Series/Pie/PiePoint.js +12 -5
  129. package/es-modules/Series/Pie/PieSeries.js +12 -1
  130. package/es-modules/Series/Pie3D/Pie3DSeries.js +19 -0
  131. package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
  132. package/es-modules/Series/Sankey/SankeyPoint.js +37 -1
  133. package/es-modules/Series/Sankey/SankeySeries.js +13 -128
  134. package/es-modules/Series/Scatter/ScatterSeries.js +1 -1
  135. package/es-modules/Series/Sunburst/SunburstSeries.js +14 -3
  136. package/es-modules/Series/Treemap/TreemapSeries.js +88 -80
  137. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -0
  138. package/es-modules/Series/Wordcloud/WordcloudSeries.js +4 -4
  139. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +9 -2
  140. package/es-modules/Stock/StockToolsBindings.js +31 -24
  141. package/es-modules/Stock/StockToolsGui.js +1 -1
  142. package/es-modules/masters/highcharts-3d.src.js +1 -1
  143. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  144. package/es-modules/masters/highcharts-more.src.js +1 -1
  145. package/es-modules/masters/highcharts.src.js +1 -1
  146. package/es-modules/masters/highmaps.src.js +1 -1
  147. package/es-modules/masters/highstock.src.js +1 -1
  148. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  149. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  150. package/es-modules/masters/indicators/ao.src.js +1 -1
  151. package/es-modules/masters/indicators/apo.src.js +1 -1
  152. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  153. package/es-modules/masters/indicators/aroon.src.js +1 -1
  154. package/es-modules/masters/indicators/atr.src.js +1 -1
  155. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  156. package/es-modules/masters/indicators/cci.src.js +1 -1
  157. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  158. package/es-modules/masters/indicators/cmf.src.js +1 -1
  159. package/es-modules/masters/indicators/cmo.src.js +1 -1
  160. package/es-modules/masters/indicators/dema.src.js +1 -1
  161. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  162. package/es-modules/masters/indicators/dmi.src.js +1 -1
  163. package/es-modules/masters/indicators/dpo.src.js +1 -1
  164. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  165. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  166. package/es-modules/masters/indicators/indicators.src.js +1 -1
  167. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  168. package/es-modules/masters/indicators/klinger.src.js +1 -1
  169. package/es-modules/masters/indicators/macd.src.js +1 -1
  170. package/es-modules/masters/indicators/mfi.src.js +1 -1
  171. package/es-modules/masters/indicators/momentum.src.js +1 -1
  172. package/es-modules/masters/indicators/natr.src.js +1 -1
  173. package/es-modules/masters/indicators/obv.src.js +1 -1
  174. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  175. package/es-modules/masters/indicators/ppo.src.js +1 -1
  176. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  177. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  178. package/es-modules/masters/indicators/psar.src.js +1 -1
  179. package/es-modules/masters/indicators/regressions.src.js +1 -1
  180. package/es-modules/masters/indicators/roc.src.js +1 -1
  181. package/es-modules/masters/indicators/rsi.src.js +1 -1
  182. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  183. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  184. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  185. package/es-modules/masters/indicators/tema.src.js +1 -1
  186. package/es-modules/masters/indicators/trendline.src.js +1 -1
  187. package/es-modules/masters/indicators/trix.src.js +1 -1
  188. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  189. package/es-modules/masters/indicators/vwap.src.js +1 -1
  190. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  191. package/es-modules/masters/indicators/wma.src.js +1 -1
  192. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  193. package/es-modules/masters/modules/accessibility.src.js +1 -1
  194. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  195. package/es-modules/masters/modules/annotations.src.js +1 -1
  196. package/es-modules/masters/modules/arc-diagram.src.js +14 -0
  197. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  198. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  199. package/es-modules/masters/modules/boost.src.js +1 -1
  200. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  201. package/es-modules/masters/modules/bullet.src.js +1 -1
  202. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  203. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  204. package/es-modules/masters/modules/cylinder.src.js +1 -1
  205. package/es-modules/masters/modules/data.src.js +1 -1
  206. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  207. package/es-modules/masters/modules/debugger.src.js +1 -1
  208. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  209. package/es-modules/masters/modules/dotplot.src.js +1 -1
  210. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  211. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  212. package/es-modules/masters/modules/drilldown.src.js +2 -1
  213. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  214. package/es-modules/masters/modules/export-data.src.js +1 -1
  215. package/es-modules/masters/modules/exporting.src.js +1 -1
  216. package/es-modules/masters/modules/full-screen.src.js +1 -1
  217. package/es-modules/masters/modules/funnel.src.js +1 -1
  218. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  219. package/es-modules/masters/modules/gantt.src.js +1 -1
  220. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  221. package/es-modules/masters/modules/heatmap.src.js +1 -1
  222. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  223. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  224. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  225. package/es-modules/masters/modules/item-series.src.js +1 -1
  226. package/es-modules/masters/modules/lollipop.src.js +1 -1
  227. package/es-modules/masters/modules/map.src.js +5 -1
  228. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  229. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  230. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  231. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  232. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  233. package/es-modules/masters/modules/oldie.src.js +1 -1
  234. package/es-modules/masters/modules/organization.src.js +1 -1
  235. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  236. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  237. package/es-modules/masters/modules/pareto.src.js +1 -1
  238. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  239. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  240. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  241. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  242. package/es-modules/masters/modules/sankey.src.js +1 -1
  243. package/es-modules/masters/modules/series-label.src.js +1 -1
  244. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  245. package/es-modules/masters/modules/sonification.src.js +1 -1
  246. package/es-modules/masters/modules/static-scale.src.js +1 -1
  247. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  248. package/es-modules/masters/modules/stock.src.js +1 -1
  249. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  250. package/es-modules/masters/modules/sunburst.src.js +1 -1
  251. package/es-modules/masters/modules/tilemap.src.js +1 -1
  252. package/es-modules/masters/modules/timeline.src.js +1 -1
  253. package/es-modules/masters/modules/treegrid.src.js +1 -1
  254. package/es-modules/masters/modules/treemap.src.js +5 -1
  255. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  256. package/es-modules/masters/modules/variwide.src.js +1 -1
  257. package/es-modules/masters/modules/vector.src.js +1 -1
  258. package/es-modules/masters/modules/venn.src.js +1 -1
  259. package/es-modules/masters/modules/windbarb.src.js +1 -1
  260. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  261. package/es-modules/masters/modules/xrange.src.js +1 -1
  262. package/es-modules/masters/themes/avocado.src.js +1 -1
  263. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  264. package/es-modules/masters/themes/brand-light.src.js +1 -1
  265. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  266. package/es-modules/masters/themes/dark-green.src.js +1 -1
  267. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  268. package/es-modules/masters/themes/gray.src.js +1 -1
  269. package/es-modules/masters/themes/grid-light.src.js +1 -1
  270. package/es-modules/masters/themes/grid.src.js +1 -1
  271. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  272. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  273. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  274. package/es-modules/masters/themes/skies.src.js +1 -1
  275. package/es-modules/masters/themes/sunset.src.js +1 -1
  276. package/highcharts-3d.js +99 -98
  277. package/highcharts-3d.js.map +1 -1
  278. package/highcharts-3d.src.js +51 -21
  279. package/highcharts-gantt.js +808 -800
  280. package/highcharts-gantt.js.map +1 -1
  281. package/highcharts-gantt.src.js +781 -426
  282. package/highcharts-more.js +195 -194
  283. package/highcharts-more.js.map +1 -1
  284. package/highcharts-more.src.js +18 -4
  285. package/highcharts.d.ts +3224 -542
  286. package/highcharts.js +592 -584
  287. package/highcharts.js.map +1 -1
  288. package/highcharts.src.d.ts +3224 -542
  289. package/highcharts.src.js +732 -400
  290. package/highmaps.js +760 -728
  291. package/highmaps.js.map +1 -1
  292. package/highmaps.src.js +3840 -2189
  293. package/highstock.js +793 -786
  294. package/highstock.js.map +1 -1
  295. package/highstock.src.js +783 -432
  296. package/indicators/acceleration-bands.js +12 -11
  297. package/indicators/acceleration-bands.js.map +1 -1
  298. package/indicators/acceleration-bands.src.js +11 -2
  299. package/indicators/accumulation-distribution.js +5 -5
  300. package/indicators/accumulation-distribution.js.map +1 -1
  301. package/indicators/accumulation-distribution.src.js +11 -2
  302. package/indicators/ao.js +6 -6
  303. package/indicators/ao.js.map +1 -1
  304. package/indicators/ao.src.js +11 -2
  305. package/indicators/apo.js +5 -5
  306. package/indicators/apo.js.map +1 -1
  307. package/indicators/apo.src.js +11 -2
  308. package/indicators/aroon-oscillator.js +10 -10
  309. package/indicators/aroon-oscillator.js.map +1 -1
  310. package/indicators/aroon-oscillator.src.js +11 -2
  311. package/indicators/aroon.js +11 -11
  312. package/indicators/aroon.js.map +1 -1
  313. package/indicators/aroon.src.js +11 -2
  314. package/indicators/atr.js +5 -5
  315. package/indicators/atr.js.map +1 -1
  316. package/indicators/atr.src.js +11 -2
  317. package/indicators/bollinger-bands.js +12 -12
  318. package/indicators/bollinger-bands.js.map +1 -1
  319. package/indicators/bollinger-bands.src.js +11 -2
  320. package/indicators/cci.js +5 -5
  321. package/indicators/cci.js.map +1 -1
  322. package/indicators/cci.src.js +11 -2
  323. package/indicators/chaikin.js +8 -8
  324. package/indicators/chaikin.js.map +1 -1
  325. package/indicators/chaikin.src.js +11 -2
  326. package/indicators/cmf.js +6 -6
  327. package/indicators/cmf.js.map +1 -1
  328. package/indicators/cmf.src.js +11 -2
  329. package/indicators/cmo.js +5 -5
  330. package/indicators/cmo.js.map +1 -1
  331. package/indicators/cmo.src.js +11 -2
  332. package/indicators/dema.js +5 -5
  333. package/indicators/dema.js.map +1 -1
  334. package/indicators/dema.src.js +11 -2
  335. package/indicators/disparity-index.js +6 -6
  336. package/indicators/disparity-index.js.map +1 -1
  337. package/indicators/disparity-index.src.js +11 -2
  338. package/indicators/dmi.js +12 -12
  339. package/indicators/dmi.js.map +1 -1
  340. package/indicators/dmi.src.js +11 -2
  341. package/indicators/dpo.js +5 -5
  342. package/indicators/dpo.js.map +1 -1
  343. package/indicators/dpo.src.js +11 -2
  344. package/indicators/ema.js +2 -1
  345. package/indicators/ema.js.map +1 -1
  346. package/indicators/ema.src.js +10 -1
  347. package/indicators/ichimoku-kinko-hyo.js +16 -16
  348. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  349. package/indicators/ichimoku-kinko-hyo.src.js +11 -2
  350. package/indicators/indicators-all.js +195 -194
  351. package/indicators/indicators-all.js.map +1 -1
  352. package/indicators/indicators-all.src.js +21 -5
  353. package/indicators/indicators.js +13 -12
  354. package/indicators/indicators.js.map +1 -1
  355. package/indicators/indicators.src.js +21 -5
  356. package/indicators/keltner-channels.js +12 -11
  357. package/indicators/keltner-channels.js.map +1 -1
  358. package/indicators/keltner-channels.src.js +11 -2
  359. package/indicators/klinger.js +13 -13
  360. package/indicators/klinger.js.map +1 -1
  361. package/indicators/klinger.src.js +11 -2
  362. package/indicators/macd.js +12 -11
  363. package/indicators/macd.js.map +1 -1
  364. package/indicators/macd.src.js +11 -2
  365. package/indicators/mfi.js +6 -6
  366. package/indicators/mfi.js.map +1 -1
  367. package/indicators/mfi.src.js +11 -2
  368. package/indicators/momentum.js +5 -5
  369. package/indicators/momentum.js.map +1 -1
  370. package/indicators/momentum.src.js +11 -2
  371. package/indicators/natr.js +5 -4
  372. package/indicators/natr.js.map +1 -1
  373. package/indicators/natr.src.js +11 -2
  374. package/indicators/obv.js +5 -5
  375. package/indicators/obv.js.map +1 -1
  376. package/indicators/obv.src.js +11 -2
  377. package/indicators/pivot-points.js +11 -11
  378. package/indicators/pivot-points.js.map +1 -1
  379. package/indicators/pivot-points.src.js +11 -2
  380. package/indicators/ppo.js +5 -5
  381. package/indicators/ppo.js.map +1 -1
  382. package/indicators/ppo.src.js +11 -2
  383. package/indicators/price-channel.js +11 -11
  384. package/indicators/price-channel.js.map +1 -1
  385. package/indicators/price-channel.src.js +11 -2
  386. package/indicators/price-envelopes.js +8 -8
  387. package/indicators/price-envelopes.js.map +1 -1
  388. package/indicators/price-envelopes.src.js +11 -2
  389. package/indicators/psar.js +7 -6
  390. package/indicators/psar.js.map +1 -1
  391. package/indicators/psar.src.js +11 -2
  392. package/indicators/regressions.js +12 -12
  393. package/indicators/regressions.js.map +1 -1
  394. package/indicators/regressions.src.js +11 -2
  395. package/indicators/roc.js +5 -5
  396. package/indicators/roc.js.map +1 -1
  397. package/indicators/roc.src.js +11 -2
  398. package/indicators/rsi.js +6 -5
  399. package/indicators/rsi.js.map +1 -1
  400. package/indicators/rsi.src.js +11 -2
  401. package/indicators/slow-stochastic.js +5 -5
  402. package/indicators/slow-stochastic.js.map +1 -1
  403. package/indicators/slow-stochastic.src.js +11 -2
  404. package/indicators/stochastic.js +12 -12
  405. package/indicators/stochastic.js.map +1 -1
  406. package/indicators/stochastic.src.js +11 -2
  407. package/indicators/supertrend.js +10 -10
  408. package/indicators/supertrend.js.map +1 -1
  409. package/indicators/supertrend.src.js +11 -2
  410. package/indicators/tema.js +6 -6
  411. package/indicators/tema.js.map +1 -1
  412. package/indicators/tema.src.js +11 -2
  413. package/indicators/trendline.js +5 -5
  414. package/indicators/trendline.js.map +1 -1
  415. package/indicators/trendline.src.js +11 -2
  416. package/indicators/trix.js +4 -4
  417. package/indicators/trix.js.map +1 -1
  418. package/indicators/trix.src.js +11 -2
  419. package/indicators/volume-by-price.js +17 -17
  420. package/indicators/volume-by-price.js.map +1 -1
  421. package/indicators/volume-by-price.src.js +11 -2
  422. package/indicators/vwap.js +5 -5
  423. package/indicators/vwap.js.map +1 -1
  424. package/indicators/vwap.src.js +11 -2
  425. package/indicators/williams-r.js +6 -5
  426. package/indicators/williams-r.js.map +1 -1
  427. package/indicators/williams-r.src.js +11 -2
  428. package/indicators/wma.js +5 -5
  429. package/indicators/wma.js.map +1 -1
  430. package/indicators/wma.src.js +11 -2
  431. package/indicators/zigzag.js +6 -6
  432. package/indicators/zigzag.js.map +1 -1
  433. package/indicators/zigzag.src.js +11 -2
  434. package/lib/jspdf.js +299 -184
  435. package/lib/jspdf.src.js +25266 -18067
  436. package/lib/svg2pdf.js +35 -31
  437. package/lib/svg2pdf.src.js +5721 -4179
  438. package/modules/accessibility.js +245 -240
  439. package/modules/accessibility.js.map +1 -1
  440. package/modules/accessibility.src.js +510 -283
  441. package/modules/annotations-advanced.js +144 -144
  442. package/modules/annotations-advanced.js.map +1 -1
  443. package/modules/annotations-advanced.src.js +37 -11
  444. package/modules/annotations.js +79 -79
  445. package/modules/annotations.js.map +1 -1
  446. package/modules/annotations.src.js +32 -8
  447. package/modules/arc-diagram.js +25 -0
  448. package/modules/arc-diagram.js.map +1 -0
  449. package/modules/arc-diagram.src.js +778 -0
  450. package/modules/arrow-symbols.js +4 -3
  451. package/modules/arrow-symbols.js.map +1 -1
  452. package/modules/arrow-symbols.src.js +11 -2
  453. package/modules/boost-canvas.js +15 -15
  454. package/modules/boost-canvas.js.map +1 -1
  455. package/modules/boost-canvas.src.js +11 -2
  456. package/modules/boost.js +80 -79
  457. package/modules/boost.js.map +1 -1
  458. package/modules/boost.src.js +71 -43
  459. package/modules/broken-axis.js +13 -13
  460. package/modules/broken-axis.js.map +1 -1
  461. package/modules/broken-axis.src.js +11 -2
  462. package/modules/bullet.js +9 -9
  463. package/modules/bullet.js.map +1 -1
  464. package/modules/bullet.src.js +11 -2
  465. package/modules/coloraxis.js +24 -24
  466. package/modules/coloraxis.js.map +1 -1
  467. package/modules/coloraxis.src.js +33 -7
  468. package/modules/current-date-indicator.js +5 -4
  469. package/modules/current-date-indicator.js.map +1 -1
  470. package/modules/current-date-indicator.src.js +11 -2
  471. package/modules/cylinder.js +11 -11
  472. package/modules/cylinder.js.map +1 -1
  473. package/modules/cylinder.src.js +11 -2
  474. package/modules/data.js +34 -33
  475. package/modules/data.js.map +1 -1
  476. package/modules/data.src.js +59 -32
  477. package/modules/datagrouping.js +21 -20
  478. package/modules/datagrouping.js.map +1 -1
  479. package/modules/datagrouping.src.js +19 -5
  480. package/modules/debugger.js +8 -7
  481. package/modules/debugger.js.map +1 -1
  482. package/modules/debugger.src.js +15 -2
  483. package/modules/dependency-wheel.js +12 -11
  484. package/modules/dependency-wheel.js.map +1 -1
  485. package/modules/dependency-wheel.src.js +14 -5
  486. package/modules/dotplot.js +6 -6
  487. package/modules/dotplot.js.map +1 -1
  488. package/modules/dotplot.src.js +11 -2
  489. package/modules/drag-panes.js +10 -10
  490. package/modules/drag-panes.js.map +1 -1
  491. package/modules/drag-panes.src.js +11 -2
  492. package/modules/draggable-points.js +35 -34
  493. package/modules/draggable-points.js.map +1 -1
  494. package/modules/draggable-points.src.js +20 -9
  495. package/modules/drilldown.d.ts +19 -0
  496. package/modules/drilldown.js +36 -25
  497. package/modules/drilldown.js.map +1 -1
  498. package/modules/drilldown.src.d.ts +19 -0
  499. package/modules/drilldown.src.js +1091 -106
  500. package/modules/dumbbell.js +17 -17
  501. package/modules/dumbbell.js.map +1 -1
  502. package/modules/dumbbell.src.js +11 -2
  503. package/modules/export-data.js +21 -20
  504. package/modules/export-data.js.map +1 -1
  505. package/modules/export-data.src.js +12 -4
  506. package/modules/exporting.js +39 -39
  507. package/modules/exporting.js.map +1 -1
  508. package/modules/exporting.src.js +227 -92
  509. package/modules/full-screen.js +8 -7
  510. package/modules/full-screen.js.map +1 -1
  511. package/modules/full-screen.src.js +135 -58
  512. package/modules/funnel.js +12 -12
  513. package/modules/funnel.js.map +1 -1
  514. package/modules/funnel.src.js +11 -2
  515. package/modules/funnel3d.js +21 -21
  516. package/modules/funnel3d.js.map +1 -1
  517. package/modules/funnel3d.src.js +11 -2
  518. package/modules/gantt.js +216 -215
  519. package/modules/gantt.js.map +1 -1
  520. package/modules/gantt.src.js +60 -28
  521. package/modules/grid-axis.js +23 -23
  522. package/modules/grid-axis.js.map +1 -1
  523. package/modules/grid-axis.src.js +27 -13
  524. package/modules/heatmap.js +40 -39
  525. package/modules/heatmap.js.map +1 -1
  526. package/modules/heatmap.src.js +46 -27
  527. package/modules/heikinashi.js +8 -8
  528. package/modules/heikinashi.js.map +1 -1
  529. package/modules/heikinashi.src.js +11 -2
  530. package/modules/histogram-bellcurve.js +13 -13
  531. package/modules/histogram-bellcurve.js.map +1 -1
  532. package/modules/histogram-bellcurve.src.js +11 -2
  533. package/modules/hollowcandlestick.js +9 -9
  534. package/modules/hollowcandlestick.js.map +1 -1
  535. package/modules/hollowcandlestick.src.js +11 -2
  536. package/modules/item-series.js +12 -12
  537. package/modules/item-series.js.map +1 -1
  538. package/modules/item-series.src.js +11 -2
  539. package/modules/lollipop.js +7 -7
  540. package/modules/lollipop.js.map +1 -1
  541. package/modules/lollipop.src.js +12 -3
  542. package/modules/map.d.ts +80 -43
  543. package/modules/map.js +169 -144
  544. package/modules/map.js.map +1 -1
  545. package/modules/map.src.d.ts +80 -43
  546. package/modules/map.src.js +8024 -6696
  547. package/modules/marker-clusters.js +36 -36
  548. package/modules/marker-clusters.js.map +1 -1
  549. package/modules/marker-clusters.src.js +47 -23
  550. package/modules/networkgraph.d.ts +5 -0
  551. package/modules/networkgraph.js +49 -48
  552. package/modules/networkgraph.js.map +1 -1
  553. package/modules/networkgraph.src.d.ts +5 -0
  554. package/modules/networkgraph.src.js +77 -15
  555. package/modules/no-data-to-display.js +5 -5
  556. package/modules/no-data-to-display.js.map +1 -1
  557. package/modules/no-data-to-display.src.js +11 -2
  558. package/modules/offline-exporting.js +20 -18
  559. package/modules/offline-exporting.js.map +1 -1
  560. package/modules/offline-exporting.src.js +126 -25
  561. package/modules/oldie-polyfills.js +7 -7
  562. package/modules/oldie-polyfills.js.map +1 -1
  563. package/modules/oldie-polyfills.src.js +11 -2
  564. package/modules/oldie.js +30 -30
  565. package/modules/oldie.js.map +1 -1
  566. package/modules/oldie.src.js +12 -3
  567. package/modules/organization.js +16 -14
  568. package/modules/organization.js.map +1 -1
  569. package/modules/organization.src.js +166 -32
  570. package/modules/overlapping-datalabels.js +3 -2
  571. package/modules/overlapping-datalabels.js.map +1 -1
  572. package/modules/overlapping-datalabels.src.js +11 -2
  573. package/modules/parallel-coordinates.js +11 -11
  574. package/modules/parallel-coordinates.js.map +1 -1
  575. package/modules/parallel-coordinates.src.js +11 -2
  576. package/modules/pareto.js +7 -7
  577. package/modules/pareto.js.map +1 -1
  578. package/modules/pareto.src.js +11 -2
  579. package/modules/pathfinder.js +31 -31
  580. package/modules/pathfinder.js.map +1 -1
  581. package/modules/pathfinder.src.js +11 -2
  582. package/modules/pattern-fill.js +14 -14
  583. package/modules/pattern-fill.js.map +1 -1
  584. package/modules/pattern-fill.src.js +11 -2
  585. package/modules/price-indicator.js +5 -5
  586. package/modules/price-indicator.js.map +1 -1
  587. package/modules/price-indicator.src.js +11 -2
  588. package/modules/pyramid3d.js +4 -4
  589. package/modules/pyramid3d.js.map +1 -1
  590. package/modules/pyramid3d.src.js +11 -2
  591. package/modules/sankey.d.ts +5 -0
  592. package/modules/sankey.js +32 -29
  593. package/modules/sankey.js.map +1 -1
  594. package/modules/sankey.src.d.ts +5 -0
  595. package/modules/sankey.src.js +341 -157
  596. package/modules/series-label.js +18 -17
  597. package/modules/series-label.js.map +1 -1
  598. package/modules/series-label.src.js +11 -2
  599. package/modules/solid-gauge.js +10 -10
  600. package/modules/solid-gauge.js.map +1 -1
  601. package/modules/solid-gauge.src.js +11 -2
  602. package/modules/sonification.js +59 -59
  603. package/modules/sonification.js.map +1 -1
  604. package/modules/sonification.src.js +11 -2
  605. package/modules/static-scale.js +5 -4
  606. package/modules/static-scale.js.map +1 -1
  607. package/modules/static-scale.src.js +11 -2
  608. package/modules/stock-tools.js +145 -145
  609. package/modules/stock-tools.js.map +1 -1
  610. package/modules/stock-tools.src.js +64 -32
  611. package/modules/stock.js +204 -204
  612. package/modules/stock.js.map +1 -1
  613. package/modules/stock.src.js +62 -34
  614. package/modules/streamgraph.js +5 -4
  615. package/modules/streamgraph.js.map +1 -1
  616. package/modules/streamgraph.src.js +11 -2
  617. package/modules/sunburst.d.ts +3 -0
  618. package/modules/sunburst.js +73 -60
  619. package/modules/sunburst.js.map +1 -1
  620. package/modules/sunburst.src.d.ts +3 -0
  621. package/modules/sunburst.src.js +1048 -97
  622. package/modules/tilemap.js +17 -17
  623. package/modules/tilemap.js.map +1 -1
  624. package/modules/tilemap.src.js +11 -2
  625. package/modules/timeline.js +18 -18
  626. package/modules/timeline.js.map +1 -1
  627. package/modules/timeline.src.js +11 -2
  628. package/modules/treegrid.js +57 -56
  629. package/modules/treegrid.js.map +1 -1
  630. package/modules/treegrid.src.js +38 -13
  631. package/modules/treemap.d.ts +3 -0
  632. package/modules/treemap.js +53 -41
  633. package/modules/treemap.js.map +1 -1
  634. package/modules/treemap.src.d.ts +3 -0
  635. package/modules/treemap.src.js +1037 -95
  636. package/modules/variable-pie.js +9 -9
  637. package/modules/variable-pie.js.map +1 -1
  638. package/modules/variable-pie.src.js +11 -2
  639. package/modules/variwide.js +12 -12
  640. package/modules/variwide.js.map +1 -1
  641. package/modules/variwide.src.js +11 -2
  642. package/modules/vector.js +8 -7
  643. package/modules/vector.js.map +1 -1
  644. package/modules/vector.src.js +11 -2
  645. package/modules/venn.js +31 -31
  646. package/modules/venn.js.map +1 -1
  647. package/modules/venn.src.js +18 -6
  648. package/modules/windbarb.js +15 -15
  649. package/modules/windbarb.js.map +1 -1
  650. package/modules/windbarb.src.js +11 -2
  651. package/modules/wordcloud.js +24 -23
  652. package/modules/wordcloud.js.map +1 -1
  653. package/modules/wordcloud.src.js +22 -10
  654. package/modules/xrange.js +16 -16
  655. package/modules/xrange.js.map +1 -1
  656. package/modules/xrange.src.js +11 -2
  657. package/package.json +1 -1
  658. package/themes/avocado.js +4 -3
  659. package/themes/avocado.js.map +1 -1
  660. package/themes/avocado.src.js +11 -2
  661. package/themes/brand-dark.js +9 -8
  662. package/themes/brand-dark.js.map +1 -1
  663. package/themes/brand-dark.src.js +11 -2
  664. package/themes/brand-light.js +8 -8
  665. package/themes/brand-light.js.map +1 -1
  666. package/themes/brand-light.src.js +11 -2
  667. package/themes/dark-blue.js +9 -8
  668. package/themes/dark-blue.js.map +1 -1
  669. package/themes/dark-blue.src.js +11 -2
  670. package/themes/dark-green.js +9 -8
  671. package/themes/dark-green.js.map +1 -1
  672. package/themes/dark-green.src.js +11 -2
  673. package/themes/dark-unica.js +8 -7
  674. package/themes/dark-unica.js.map +1 -1
  675. package/themes/dark-unica.src.js +11 -2
  676. package/themes/gray.js +9 -8
  677. package/themes/gray.js.map +1 -1
  678. package/themes/gray.src.js +11 -2
  679. package/themes/grid-light.js +5 -4
  680. package/themes/grid-light.js.map +1 -1
  681. package/themes/grid-light.src.js +11 -2
  682. package/themes/grid.js +5 -5
  683. package/themes/grid.js.map +1 -1
  684. package/themes/grid.src.js +11 -2
  685. package/themes/high-contrast-dark.js +7 -7
  686. package/themes/high-contrast-dark.js.map +1 -1
  687. package/themes/high-contrast-dark.src.js +21 -12
  688. package/themes/high-contrast-light.js +3 -3
  689. package/themes/high-contrast-light.js.map +1 -1
  690. package/themes/high-contrast-light.src.js +21 -12
  691. package/themes/sand-signika.js +5 -5
  692. package/themes/sand-signika.js.map +1 -1
  693. package/themes/sand-signika.src.js +11 -2
  694. package/themes/skies.js +5 -5
  695. package/themes/skies.js.map +1 -1
  696. package/themes/skies.src.js +11 -2
  697. package/themes/sunset.js +3 -3
  698. package/themes/sunset.js.map +1 -1
  699. package/themes/sunset.src.js +11 -2
  700. package/es-modules/Maps/ProjectionDefinition.js +0 -9
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v9.3.2 (2021-11-29)
2
+ * @license Highcharts JS v10.1.0 (2022-04-29)
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,948 @@
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
+ var button = chart.renderer
356
+ .button(breadcrumbs.getButtonText(breadcrumb),
357
+ posX,
358
+ posY,
359
+ function (e) {
360
+ // Extract events from button object and call
361
+ var buttonEvents = breadcrumbsOptions.events &&
362
+ breadcrumbsOptions.events.click;
363
+ var callDefaultEvent;
364
+ if (buttonEvents) {
365
+ callDefaultEvent = buttonEvents.call(breadcrumbs, e, breadcrumb);
366
+ }
367
+ // (difference in behaviour of showFullPath and drillUp)
368
+ if (callDefaultEvent !== false) {
369
+ // For single button we are not going to the button
370
+ // level, but the one level up
371
+ if (!breadcrumbsOptions.showFullPath) {
372
+ e.newLevel = breadcrumbs.level - 1;
373
+ }
374
+ else {
375
+ e.newLevel = breadcrumb.level;
376
+ }
377
+ fireEvent(breadcrumbs, 'up', e);
378
+ }
379
+ }, buttonTheme)
380
+ .addClass('highcharts-breadcrumbs-button')
381
+ .add(breadcrumbs.group);
382
+ if (!chart.styledMode) {
383
+ button.attr(breadcrumbsOptions.style);
384
+ }
385
+ return button;
386
+ };
387
+ /**
388
+ * Render a separator.
389
+ *
390
+ * @requires modules/breadcrums
391
+ *
392
+ * @function Highcharts.Breadcrumbs#renderSeparator
393
+ * @param {Highcharts.Breadcrumbs} this
394
+ * Breadcrumbs class.
395
+ * @param {Highcharts.Breadcrumbs} posX
396
+ * Initial horizontal position
397
+ * @param {Highcharts.Breadcrumbs} posY
398
+ * Initial vertical position
399
+ * @return {Highcharts.SVGElement}
400
+ * Returns the SVG button
401
+ */
402
+ Breadcrumbs.prototype.renderSeparator = function (posX, posY) {
403
+ var breadcrumbs = this,
404
+ chart = this.chart,
405
+ breadcrumbsOptions = breadcrumbs.options,
406
+ separatorOptions = breadcrumbsOptions.separator;
407
+ var separator = chart.renderer
408
+ .label(separatorOptions.text,
409
+ posX,
410
+ posY,
411
+ void 0,
412
+ void 0,
413
+ void 0,
414
+ false)
415
+ .addClass('highcharts-breadcrumbs-separator')
416
+ .add(breadcrumbs.group);
417
+ if (!chart.styledMode) {
418
+ separator.css(separatorOptions.style);
419
+ }
420
+ return separator;
421
+ };
422
+ /**
423
+ * Update.
424
+ * @function Highcharts.Breadcrumbs#update
425
+ *
426
+ * @requires modules/breadcrumbs
427
+ *
428
+ * @param {Highcharts.Breadcrumbs} this
429
+ * Breadcrumbs class.
430
+ * @param {Highcharts.BreadcrumbsOptions} options
431
+ * Breadcrumbs class.
432
+ * @param {boolean} redraw
433
+ * Redraw flag
434
+ */
435
+ Breadcrumbs.prototype.update = function (options) {
436
+ merge(true, this.options, options);
437
+ this.destroy();
438
+ this.isDirty = true;
439
+ };
440
+ /**
441
+ * Update button text when the showFullPath set to false.
442
+ * @function Highcharts.Breadcrumbs#updateSingleButton
443
+ *
444
+ * @requires modules/breadcrumbs
445
+ *
446
+ * @param {Highcharts.Breadcrumbs} this
447
+ * Breadcrumbs class.
448
+ */
449
+ Breadcrumbs.prototype.updateSingleButton = function () {
450
+ var chart = this.chart,
451
+ currentBreadcrumb = this.list[this.level - 1];
452
+ if (chart.drillUpButton) {
453
+ chart.drillUpButton.attr({
454
+ text: this.getButtonText(currentBreadcrumb)
455
+ });
456
+ }
457
+ };
458
+ /**
459
+ * Destroy the chosen breadcrumbs group
460
+ *
461
+ * @requires modules/breadcrumbs
462
+ *
463
+ * @function Highcharts.Breadcrumbs#destroy
464
+ * @param {Highcharts.Breadcrumbs} this
465
+ * Breadcrumbs class.
466
+ */
467
+ Breadcrumbs.prototype.destroy = function () {
468
+ this.destroySingleButton();
469
+ // Destroy elements one by one. It's necessary beacause
470
+ // g().destroy() does not remove added HTML
471
+ this.destroyListElements(true);
472
+ // Then, destroy the group itself.
473
+ if (this.group) {
474
+ this.group.destroy();
475
+ }
476
+ this.group = void 0;
477
+ };
478
+ /**
479
+ * Destroy the elements' buttons and separators.
480
+ *
481
+ * @requires modules/breadcrumbs
482
+ *
483
+ * @function Highcharts.Breadcrumbs#destroyListElements
484
+ * @param {Highcharts.Breadcrumbs} this
485
+ * Breadcrumbs class.
486
+ */
487
+ Breadcrumbs.prototype.destroyListElements = function (force) {
488
+ var elementList = this.elementList;
489
+ objectEach(elementList, function (element, level) {
490
+ if (force ||
491
+ !elementList[level].updated) {
492
+ element = elementList[level];
493
+ element.button && element.button.destroy();
494
+ element.separator && element.separator.destroy();
495
+ delete element.button;
496
+ delete element.separator;
497
+ delete elementList[level];
498
+ }
499
+ });
500
+ if (force) {
501
+ this.elementList = {};
502
+ }
503
+ };
504
+ /**
505
+ * Destroy the single button if exists.
506
+ *
507
+ * @requires modules/breadcrumbs
508
+ *
509
+ * @function Highcharts.Breadcrumbs#destroySingleButton
510
+ * @param {Highcharts.Breadcrumbs} this
511
+ * Breadcrumbs class.
512
+ */
513
+ Breadcrumbs.prototype.destroySingleButton = function () {
514
+ if (this.chart.drillUpButton) {
515
+ this.chart.drillUpButton.destroy();
516
+ this.chart.drillUpButton = void 0;
517
+ }
518
+ };
519
+ /**
520
+ * Reset state for all buttons in elementList.
521
+ *
522
+ * @requires modules/breadcrumbs
523
+ *
524
+ * @function Highcharts.Breadcrumbs#resetElementListState
525
+ * @param {Highcharts.Breadcrumbs} this
526
+ * Breadcrumbs class.
527
+ */
528
+ Breadcrumbs.prototype.resetElementListState = function () {
529
+ objectEach(this.elementList, function (element) {
530
+ element.updated = false;
531
+ });
532
+ };
533
+ /**
534
+ * Update rendered elements inside the elementList.
535
+ *
536
+ * @requires modules/breadcrumbs
537
+ *
538
+ * @function Highcharts.Breadcrumbs#updateListElements
539
+ * @param {Highcharts.Breadcrumbs} this
540
+ * Breadcrumbs class.
541
+ */
542
+ Breadcrumbs.prototype.updateListElements = function () {
543
+ var updateXPosition = function (element,
544
+ spacing) {
545
+ return element.getBBox().width + spacing;
546
+ }, breadcrumbs = this, elementList = breadcrumbs.elementList, buttonSpacing = breadcrumbs.options.buttonSpacing, list = breadcrumbs.list;
547
+ // Inital position for calculating the breadcrumbs group.
548
+ var posX = breadcrumbs.group ?
549
+ updateXPosition(breadcrumbs.group,
550
+ buttonSpacing) :
551
+ buttonSpacing,
552
+ posY = buttonSpacing,
553
+ currentBreadcrumb;
554
+ list.forEach(function (breadcrumb, index) {
555
+ var isLast = index === list.length - 1;
556
+ var button,
557
+ separator;
558
+ if (elementList[breadcrumb.level]) {
559
+ currentBreadcrumb = elementList[breadcrumb.level];
560
+ button = currentBreadcrumb.button;
561
+ // Render a separator if it was not created before.
562
+ if (!currentBreadcrumb.separator &&
563
+ !isLast) {
564
+ // Add spacing for the next separator
565
+ posX += buttonSpacing;
566
+ currentBreadcrumb.separator =
567
+ breadcrumbs.renderSeparator(posX, posY);
568
+ posX += updateXPosition(currentBreadcrumb.separator, buttonSpacing);
569
+ }
570
+ else if (currentBreadcrumb.separator &&
571
+ isLast) {
572
+ currentBreadcrumb.separator.destroy();
573
+ delete currentBreadcrumb.separator;
574
+ }
575
+ elementList[breadcrumb.level].updated = true;
576
+ }
577
+ else {
578
+ // Render a button.
579
+ button = breadcrumbs.renderButton(breadcrumb, posX, posY);
580
+ posX += updateXPosition(button, buttonSpacing);
581
+ // Render a separator.
582
+ if (!isLast) {
583
+ separator = breadcrumbs.renderSeparator(posX, posY);
584
+ posX += updateXPosition(separator, buttonSpacing);
585
+ }
586
+ elementList[breadcrumb.level] = {
587
+ button: button,
588
+ separator: separator,
589
+ updated: true
590
+ };
591
+ }
592
+ if (button) {
593
+ button.setState(isLast ? 2 : 0);
594
+ }
595
+ });
596
+ };
597
+ /**
598
+ * Options for breadcrumbs. Breadcrumbs general options are defined in
599
+ * `navigation.breadcrumbs`. Specific options for drilldown are set in
600
+ * `drilldown.breadcrumbs` and for tree-like series traversing, in
601
+ * `plotOptions[series].breadcrumbs`.
602
+ *
603
+ * @since 10.0.0
604
+ * @product highcharts
605
+ * @optionparent navigation.breadcrumbs
606
+ */
607
+ Breadcrumbs.defaultBreadcrumbsOptions = {
608
+ /**
609
+ * A collection of attributes for the buttons. The object takes SVG
610
+ * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,
611
+ * a collection of CSS properties for the text.
612
+ *
613
+ * The object can also be extended with states, so you can set
614
+ * presentational options for `hover`, `select` or `disabled` button
615
+ * states.
616
+ *
617
+ * @sample {highcharts} highcharts/breadcrumbs/single-button
618
+ * Themed, single button
619
+ *
620
+ * @type {Highcharts.SVGAttributes}
621
+ * @since 10.0.0
622
+ * @product highcharts
623
+ */
624
+ buttonTheme: {
625
+ /** @ignore */
626
+ fill: 'none',
627
+ /** @ignore */
628
+ height: 18,
629
+ /** @ignore */
630
+ padding: 2,
631
+ /** @ignore */
632
+ 'stroke-width': 0,
633
+ /** @ignore */
634
+ zIndex: 7,
635
+ /** @ignore */
636
+ states: {
637
+ select: {
638
+ fill: 'none'
639
+ }
640
+ },
641
+ style: {
642
+ color: "#335cad" /* highlightColor80 */
643
+ }
644
+ },
645
+ /**
646
+ * The default padding for each button and separator in each direction.
647
+ *
648
+ * @type {number}
649
+ * @since 10.0.0
650
+ */
651
+ buttonSpacing: 5,
652
+ /**
653
+ * Fires when clicking on the breadcrumbs button. Two arguments are
654
+ * passed to the function. First breadcrumb button as an SVG element.
655
+ * Second is the breadcrumbs class, containing reference to the chart,
656
+ * series etc.
657
+ *
658
+ * ```js
659
+ * click: function(button, breadcrumbs) {
660
+ * console.log(button);
661
+ * }
662
+ * ```
663
+ *
664
+ * Return false to stop default buttons click action.
665
+ *
666
+ * @type {Highcharts.BreadcrumbsClickCallbackFunction}
667
+ * @since 10.0.0
668
+ * @apioption navigation.breadcrumbs.events.click
669
+ */
670
+ /**
671
+ * When the breadcrumbs are floating, the plot area will not move to
672
+ * make space for it. By default, the chart will not make space for the
673
+ * buttons. This property won't work when positioned in the middle.
674
+ *
675
+ * @sample highcharts/breadcrumbs/single-button
676
+ * Floating button
677
+ * @type {boolean}
678
+ * @since 10.0.0
679
+ */
680
+ floating: false,
681
+ /**
682
+ * A format string for the breadcrumbs button. Variables are enclosed by
683
+ * curly brackets. Available values are passed in the declared point
684
+ * options.
685
+ *
686
+ * @type {string|undefined}
687
+ * @since 10.0.0
688
+ * @default undefined
689
+ * @sample {highcharts} highcharts/breadcrumbs/format Display custom
690
+ * values in breadcrumb button.
691
+ */
692
+ format: void 0,
693
+ /**
694
+ * Callback function to format the breadcrumb text from scratch.
695
+ *
696
+ * @type {Highcharts.BreadcrumbsFormatterCallbackFunction}
697
+ * @since 10.0.0
698
+ * @default undefined
699
+ * @apioption navigation.breadcrumbs.formatter
700
+ */
701
+ /**
702
+ * What box to align the button to. Can be either `plotBox` or
703
+ * `spacingBox`.
704
+ *
705
+ * @type {Highcharts.ButtonRelativeToValue}
706
+ * @default plotBox
707
+ * @since 10.0.0
708
+ * @product highcharts highmaps
709
+ */
710
+ relativeTo: 'plotBox',
711
+ /**
712
+ * Positioning for the button row. The breadcrumbs buttons will be
713
+ * aligned properly for the default chart layout (title, subtitle,
714
+ * legend, range selector) for the custom chart layout set the position
715
+ * properties.
716
+ * @type {Highcharts.BreadcrumbsAlignOptions}
717
+ * @since 10.0.0
718
+ * @product highcharts highmaps
719
+ * @sample {highcharts} highcharts/breadcrumbs/single-button
720
+ * Single, right aligned button
721
+ */
722
+ position: {
723
+ /**
724
+ * Horizontal alignment of the breadcrumbs buttons.
725
+ *
726
+ * @type {Highcharts.AlignValue}
727
+ */
728
+ align: 'left',
729
+ /**
730
+ * Vertical alignment of the breadcrumbs buttons.
731
+ *
732
+ * @type {Highcharts.VerticalAlignValue}
733
+ */
734
+ verticalAlign: 'top',
735
+ /**
736
+ * The X offset of the breadcrumbs button group.
737
+ *
738
+ * @type {number}
739
+ */
740
+ x: 0,
741
+ /**
742
+ * The Y offset of the breadcrumbs button group. When `undefined`,
743
+ * and `floating` is `false`, the `y` position is adapted so that
744
+ * the breadcrumbs are rendered outside the target area.
745
+ *
746
+ * @type {number|undefined}
747
+ */
748
+ y: void 0
749
+ },
750
+ /**
751
+ * Options object for Breadcrumbs separator.
752
+ *
753
+ * @since 10.0.0
754
+ */
755
+ separator: {
756
+ /**
757
+ * @type {string}
758
+ * @since 10.0.0
759
+ * @product highcharts
760
+ */
761
+ text: '/',
762
+ /**
763
+ * CSS styles for the breadcrumbs separator.
764
+ *
765
+ * In styled mode, the breadcrumbs separators are styled by the
766
+ * `.highcharts-separator` rule with its different states.
767
+ * @type {Highcharts.CSSObject}
768
+ * @since 10.0.0
769
+ */
770
+ style: {
771
+ color: "#666666" /* neutralColor60 */
772
+ }
773
+ },
774
+ /**
775
+ * Show full path or only a single button.
776
+ *
777
+ * @type {boolean}
778
+ * @since 10.0.0
779
+ * @sample {highcharts} highcharts/breadcrumbs/single-button
780
+ * Single, styled button
781
+ */
782
+ showFullPath: true,
783
+ /**
784
+ * CSS styles for all breadcrumbs.
785
+ *
786
+ * In styled mode, the breadcrumbs buttons are styled by the
787
+ * `.highcharts-breadcrumbs-buttons .highcharts-button` rule with its
788
+ * different states.
789
+ * @type {Highcharts.SVGAttributes}
790
+ * @since 10.0.0
791
+ */
792
+ style: {},
793
+ /**
794
+ * Whether to use HTML to render the breadcrumbs items texts.
795
+ *
796
+ * @type {boolean}
797
+ * @since 10.0.0
798
+ */
799
+ useHTML: false,
800
+ /**
801
+ * The z index of the breadcrumbs group.
802
+ *
803
+ * @type {number}
804
+ * @since 10.0.0
805
+ */
806
+ zIndex: 7
807
+ };
808
+ return Breadcrumbs;
809
+ }());
810
+ /* eslint-disable no-invalid-this */
811
+ if (!H.Breadcrumbs) {
812
+ H.Breadcrumbs = Breadcrumbs;
813
+ // Logic for making space for the buttons above the plot area
814
+ addEvent(Chart, 'getMargins', function () {
815
+ var breadcrumbs = this.breadcrumbs;
816
+ if (breadcrumbs &&
817
+ !breadcrumbs.options.floating &&
818
+ breadcrumbs.level) {
819
+ var breadcrumbsOptions = breadcrumbs.options,
820
+ buttonTheme = breadcrumbsOptions.buttonTheme,
821
+ breadcrumbsHeight = ((buttonTheme.height || 0) +
822
+ 2 * (buttonTheme.padding || 0) +
823
+ breadcrumbsOptions.buttonSpacing),
824
+ verticalAlign = breadcrumbsOptions.position.verticalAlign;
825
+ if (verticalAlign === 'bottom') {
826
+ this.marginBottom = (this.marginBottom || 0) + breadcrumbsHeight;
827
+ breadcrumbs.yOffset = breadcrumbsHeight;
828
+ }
829
+ else if (verticalAlign !== 'middle') {
830
+ this.plotTop += breadcrumbsHeight;
831
+ breadcrumbs.yOffset = -breadcrumbsHeight;
832
+ }
833
+ else {
834
+ breadcrumbs.yOffset = void 0;
835
+ }
836
+ }
837
+ });
838
+ addEvent(Chart, 'redraw', function () {
839
+ this.breadcrumbs && this.breadcrumbs.redraw();
840
+ });
841
+ // Remove resize/afterSetExtremes at chart destroy
842
+ addEvent(Chart, 'destroy', function destroyEvents() {
843
+ if (this.breadcrumbs) {
844
+ this.breadcrumbs.destroy();
845
+ this.breadcrumbs = void 0;
846
+ }
847
+ });
848
+ // Shift the drillUpButton to make the space for resetZoomButton, #8095.
849
+ addEvent(Chart, 'afterShowResetZoom', function () {
850
+ var chart = this;
851
+ if (chart.breadcrumbs) {
852
+ var bbox = chart.resetZoomButton &&
853
+ chart.resetZoomButton.getBBox(),
854
+ breadcrumbsOptions = chart.breadcrumbs.options;
855
+ if (bbox &&
856
+ breadcrumbsOptions.position.align === 'right' &&
857
+ breadcrumbsOptions.relativeTo === 'plotBox') {
858
+ chart.breadcrumbs.alignBreadcrumbsGroup(-bbox.width - breadcrumbsOptions.buttonSpacing);
859
+ }
860
+ }
861
+ });
862
+ // After zooming out, shift the drillUpButton
863
+ // to the previous position, #8095.
864
+ addEvent(Chart, 'selection', function (event) {
865
+ if (event.resetSelection === true &&
866
+ this.breadcrumbs) {
867
+ this.breadcrumbs.alignBreadcrumbsGroup();
868
+ }
869
+ });
870
+ }
871
+ /* *
872
+ *
873
+ * Default Export
874
+ *
875
+ * */
876
+ /* *
877
+ *
878
+ * API Declarations
879
+ *
880
+ * */
881
+ /**
882
+ * Callback function to react on button clicks.
883
+ *
884
+ * @callback Highcharts.BreadcrumbsClickCallbackFunction
885
+ *
886
+ * @param {Highcharts.Event} event
887
+ * Event.
888
+ *
889
+ * @param {Highcharts.BreadcrumbOptions} options
890
+ * Breadcrumb options.
891
+ *
892
+ * @param {global.Event} e
893
+ * Event arguments.
894
+ */
895
+ /**
896
+ * Callback function to format the breadcrumb text from scratch.
897
+ *
898
+ * @callback Highcharts.BreadcrumbsFormatterCallbackFunction
899
+ *
900
+ * @param {Highcharts.Event} event
901
+ * Event.
902
+ *
903
+ * @param {Highcharts.BreadcrumbOptions} options
904
+ * Breadcrumb options.
905
+ *
906
+ * @return {string}
907
+ * Formatted text or false
908
+ */
909
+ /**
910
+ * Options for the one breadcrumb.
911
+ *
912
+ * @interface Highcharts.BreadcrumbOptions
913
+ */
914
+ /**
915
+ * Level connected to a specific breadcrumb.
916
+ * @name Highcharts.BreadcrumbOptions#level
917
+ * @type {number}
918
+ */
919
+ /**
920
+ * Options for series or point connected to a specific breadcrumb.
921
+ * @name Highcharts.BreadcrumbOptions#levelOptions
922
+ * @type {SeriesOptions|PointOptionsObject}
923
+ */
924
+ /**
925
+ * Options for aligning breadcrumbs group.
926
+ *
927
+ * @interface Highcharts.BreadcrumbsAlignOptions
928
+ */
929
+ /**
930
+ * Align of a Breadcrumb group.
931
+ * @default right
932
+ * @name Highcharts.BreadcrumbsAlignOptions#align
933
+ * @type {AlignValue}
934
+ */
935
+ /**
936
+ * Vertical align of a Breadcrumb group.
937
+ * @default top
938
+ * @name Highcharts.BreadcrumbsAlignOptions#verticalAlign
939
+ * @type {VerticalAlignValue}
940
+ */
941
+ /**
942
+ * X offset of a Breadcrumbs group.
943
+ * @name Highcharts.BreadcrumbsAlignOptions#x
944
+ * @type {number}
945
+ */
946
+ /**
947
+ * Y offset of a Breadcrumbs group.
948
+ * @name Highcharts.BreadcrumbsAlignOptions#y
949
+ * @type {number}
950
+ */
951
+ /**
952
+ * Options for all breadcrumbs.
953
+ *
954
+ * @interface Highcharts.BreadcrumbsOptions
955
+ */
956
+ /**
957
+ * Button theme.
958
+ * @name Highcharts.BreadcrumbsOptions#buttonTheme
959
+ * @type { SVGAttributes | undefined }
960
+ */
961
+ (''); // Keeps doclets above in JS file
962
+
963
+ return Breadcrumbs;
964
+ });
965
+ _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
966
  /* *
33
967
  *
34
968
  * Highcharts Drilldown module
@@ -174,18 +1108,20 @@
174
1108
  * @optionparent lang
175
1109
  */
176
1110
  {
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}'
1111
+ /**
1112
+ * The text for the button that appears when drilling down, linking back
1113
+ * to the parent series. The parent series' name is inserted for
1114
+ * `{series.name}`.
1115
+ *
1116
+ * @since 3.0.8
1117
+ * @product highcharts highmaps
1118
+ * @requires modules/drilldown
1119
+ * @apioption lang.drillUpText
1120
+ *
1121
+ * @deprecated
1122
+ *
1123
+ * @private
1124
+ */
189
1125
  });
190
1126
  /**
191
1127
  * Options for drill down, the concept of inspecting increasingly high
@@ -217,6 +1153,15 @@
217
1153
  * @product highcharts
218
1154
  * @apioption drilldown.allowPointDrilldown
219
1155
  */
1156
+ /**
1157
+ * Options for the breadcrumbs, the navigation at the top leading the way
1158
+ * up through the drilldown levels.
1159
+ *
1160
+ * @since 10.0.0
1161
+ * @product highcharts
1162
+ * @extends navigation.breadcrumbs
1163
+ * @optionparent drilldown.breadcrumbs
1164
+ */
220
1165
  /**
221
1166
  * An array of series configurations for the drill down. Each series
222
1167
  * configuration uses the same syntax as the [series](#series) option set.
@@ -303,17 +1248,23 @@
303
1248
  duration: 500
304
1249
  },
305
1250
  /**
1251
+ *
306
1252
  * Options for the drill up button that appears when drilling down on a
307
1253
  * series. The text for the button is defined in
308
1254
  * [lang.drillUpText](#lang.drillUpText).
309
1255
  *
310
- * @sample {highcharts} highcharts/drilldown/drillupbutton/
311
- * Drill up button
312
- * @sample {highmaps} highcharts/drilldown/drillupbutton/
313
- * Drill up button
1256
+ * This option is deprecated since 9.3.2, use `drilldown.breadcrumbs`
1257
+ * instead.
1258
+ *
1259
+ * @sample highcharts/breadcrumbs/single-button
1260
+ * Breadcrumbs set up like a legacy button
1261
+ * @sample {highcharts} highcharts/drilldown/drillupbutton/ Drill up button
1262
+ * @sample {highmaps} highcharts/drilldown/drillupbutton/ Drill up button
314
1263
  *
315
1264
  * @since 3.0.8
316
1265
  * @product highcharts highmaps
1266
+ *
1267
+ * @deprecated
317
1268
  */
318
1269
  drillUpButton: {
319
1270
  /**
@@ -610,50 +1561,51 @@
610
1561
  delete this.resetZoomButton;
611
1562
  }
612
1563
  this.pointer.reset();
613
- this.redraw();
614
- this.showDrillUpButton();
615
1564
  fireEvent(this, 'afterDrilldown');
1565
+ this.redraw();
1566
+ fireEvent(this, 'afterApplyDrilldown');
616
1567
  };
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();
1568
+ /**
1569
+ * This method creates an array of arrays containing a level number
1570
+ * with the corresponding series/point.
1571
+ *
1572
+ * @requires modules/breadcrumbs
1573
+ *
1574
+ * @private
1575
+ * @param {Highcharts.Chart} chart
1576
+ * Highcharts Chart object.
1577
+ * @return {Array<Breadcrumbs.BreadcrumbOptions>}
1578
+ * List for Highcharts Breadcrumbs.
1579
+ */
1580
+ var createBreadcrumbsList = function (chart) {
1581
+ var list = [],
1582
+ drilldownLevels = chart.drilldownLevels;
1583
+ // The list is based on drilldown levels from the chart object
1584
+ if (drilldownLevels && drilldownLevels.length) {
1585
+ // Add the initial series as the first element.
1586
+ if (!list[0]) {
1587
+ list.push({
1588
+ level: 0,
1589
+ levelOptions: drilldownLevels[0].seriesOptions
1590
+ });
1591
+ }
1592
+ drilldownLevels.forEach(function (level, i) {
1593
+ var lastBreadcrumb = list[list.length - 1];
1594
+ // If level is already added to breadcrumbs list,
1595
+ // don't add it again- drilling categories
1596
+ // + 1 because of the wrong levels numeration
1597
+ // in drilldownLevels array.
1598
+ if (level.levelNumber + 1 > lastBreadcrumb.level) {
1599
+ list.push({
1600
+ level: level.levelNumber + 1,
1601
+ levelOptions: merge({
1602
+ name: level.lowerSeries.name
1603
+ }, level.pointOptions)
1604
+ });
1605
+ }
1606
+ });
656
1607
  }
1608
+ return list;
657
1609
  };
658
1610
  /**
659
1611
  * When the chart is drilled down to a child series, calling `chart.drillUp()`
@@ -670,6 +1622,7 @@
670
1622
  if (!this.drilldownLevels || this.drilldownLevels.length === 0) {
671
1623
  return;
672
1624
  }
1625
+ fireEvent(this, 'beforeDrillUp');
673
1626
  var chart = this,
674
1627
  drilldownLevels = chart.drilldownLevels,
675
1628
  levelNumber = drilldownLevels[drilldownLevels.length - 1].levelNumber,
@@ -696,6 +1649,7 @@
696
1649
  newSeries = addedSeries;
697
1650
  }
698
1651
  };
1652
+ var drilldownLevelsNumber = chart.drilldownLevels.length;
699
1653
  while (i--) {
700
1654
  level = drilldownLevels[i];
701
1655
  if (level.levelNumber === levelNumber) {
@@ -715,12 +1669,19 @@
715
1669
  }
716
1670
  }
717
1671
  oldSeries.xData = []; // Overcome problems with minRange (#2898)
1672
+ // Reset the names to start new series from the beginning.
1673
+ // Do it once to preserve names when multiple
1674
+ // series are added for the same axis, #16135.
1675
+ if (oldSeries.xAxis &&
1676
+ oldSeries.xAxis.names &&
1677
+ (drilldownLevelsNumber === 0 || i === drilldownLevelsNumber)) {
1678
+ oldSeries.xAxis.names.length = 0;
1679
+ }
718
1680
  level.levelSeriesOptions.forEach(addSeries);
719
1681
  fireEvent(chart, 'drillup', {
720
1682
  seriesOptions: level.seriesPurgedOptions ||
721
1683
  level.seriesOptions
722
1684
  });
723
- this.resetZoomButton && this.resetZoomButton.destroy(); // #8095
724
1685
  if (newSeries.type === oldSeries.type) {
725
1686
  newSeries.drilldownLevel = level;
726
1687
  newSeries.options.animation =
@@ -741,30 +1702,48 @@
741
1702
  // it to the chart and show it.
742
1703
  if (level.resetZoomButton) {
743
1704
  chart.resetZoomButton = level.resetZoomButton;
744
- chart.resetZoomButton.show();
745
1705
  }
746
1706
  }
747
1707
  }
1708
+ fireEvent(chart, 'afterDrillUp');
748
1709
  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
- this.ddDupes.length = []; // #3315
1710
+ if (this.ddDupes) {
1711
+ this.ddDupes.length = 0; // #3315
1712
+ } // #8324
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 () {