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
@@ -19,6 +19,8 @@ import Point from '../Core/Series/Point.js';
19
19
  import SeriesRegistry from '../Core/Series/SeriesRegistry.js';
20
20
  var seriesTypes = SeriesRegistry.seriesTypes;
21
21
  import U from '../Core/Utilities.js';
22
+ import D from '../Core/DefaultOptions.js';
23
+ var getOptions = D.getOptions;
22
24
  var addEvent = U.addEvent, defined = U.defined, extend = U.extend, fireEvent = U.fireEvent, isNumber = U.isNumber, merge = U.merge, objectEach = U.objectEach, pick = U.pick, splat = U.splat;
23
25
  /**
24
26
  * Callback function to modify the CSV before parsing it by the data module.
@@ -609,6 +611,10 @@ var Data = /** @class */ (function () {
609
611
  this.firstRowAsNames = pick(options.firstRowAsNames, this.firstRowAsNames, true);
610
612
  this.decimalRegex = (decimalPoint &&
611
613
  new RegExp('^(-?[0-9]+)' + decimalPoint + '([0-9]+)$'));
614
+ // Always stop old polling when we have new options
615
+ if (this.liveDataTimeout !== void 0) {
616
+ clearTimeout(this.liveDataTimeout);
617
+ }
612
618
  // This is a two-dimensional array holding the raw, trimmed string
613
619
  // values with the same organisation as the columns array. It makes it
614
620
  // possible for example to revert from interpreted timestamps to
@@ -617,11 +623,7 @@ var Data = /** @class */ (function () {
617
623
  // No need to parse or interpret anything
618
624
  if (this.columns.length) {
619
625
  this.dataFound();
620
- hasData = true;
621
- }
622
- if (this.hasURLOption(options)) {
623
- clearTimeout(this.liveDataTimeout);
624
- hasData = false;
626
+ hasData = !this.hasURLOption(options);
625
627
  }
626
628
  if (!hasData) {
627
629
  // Fetch live data
@@ -1357,7 +1359,7 @@ var Data = /** @class */ (function () {
1357
1359
  success: function (json) {
1358
1360
  fn(json);
1359
1361
  if (options.enablePolling) {
1360
- setTimeout(function () {
1362
+ data.liveDataTimeout = setTimeout(function () {
1361
1363
  fetchSheet(fn);
1362
1364
  }, refreshRate);
1363
1365
  }
@@ -1451,9 +1453,10 @@ var Data = /** @class */ (function () {
1451
1453
  * Column index
1452
1454
  */
1453
1455
  Data.prototype.parseColumn = function (column, col) {
1454
- var rawColumns = this.rawColumns, columns = this.columns, row = column.length, val, floatVal, trimVal, trimInsideVal, firstRowAsNames = this.firstRowAsNames, isXColumn = this.valueCount.xColumns.indexOf(col) !== -1, dateVal, backup = [], diff, chartOptions = this.chartOptions, descending, columnTypes = this.options.columnTypes || [], columnType = columnTypes[col], forceCategory = isXColumn && ((chartOptions &&
1456
+ var rawColumns = this.rawColumns, columns = this.columns, firstRowAsNames = this.firstRowAsNames, isXColumn = this.valueCount.xColumns.indexOf(col) !== -1, backup = [], chartOptions = this.chartOptions, columnTypes = this.options.columnTypes || [], columnType = columnTypes[col], forceCategory = isXColumn && ((chartOptions &&
1455
1457
  chartOptions.xAxis &&
1456
- splat(chartOptions.xAxis)[0].type === 'category') || columnType === 'string');
1458
+ splat(chartOptions.xAxis)[0].type === 'category') || columnType === 'string'), columnHasName = defined(column.name);
1459
+ var row = column.length, val, floatVal, trimVal, trimInsideVal, dateVal, diff, descending;
1457
1460
  if (!rawColumns[col]) {
1458
1461
  rawColumns[col] = [];
1459
1462
  }
@@ -1468,7 +1471,8 @@ var Data = /** @class */ (function () {
1468
1471
  }
1469
1472
  // Disable number or date parsing by setting the X axis type to
1470
1473
  // category
1471
- if (forceCategory || (row === 0 && firstRowAsNames)) {
1474
+ if (forceCategory ||
1475
+ (row === 0 && firstRowAsNames && !columnHasName)) {
1472
1476
  column[row] = '' + trimVal;
1473
1477
  }
1474
1478
  else if (+trimInsideVal === floatVal) { // is numeric
@@ -1815,7 +1819,7 @@ var Data = /** @class */ (function () {
1815
1819
  * @param {boolean} [redraw=true]
1816
1820
  */
1817
1821
  Data.prototype.update = function (options, redraw) {
1818
- var chart = this.chart;
1822
+ var chart = this.chart, chartOptions = chart.options;
1819
1823
  if (options) {
1820
1824
  // Set the complete handler
1821
1825
  options.afterComplete = function (dataOptions) {
@@ -1834,8 +1838,13 @@ var Data = /** @class */ (function () {
1834
1838
  }
1835
1839
  };
1836
1840
  // Apply it
1837
- merge(true, chart.options.data, options);
1838
- this.init(chart.options.data);
1841
+ merge(true, chartOptions.data, options);
1842
+ // Reset columns if fetching spreadsheet, to force a re-fetch
1843
+ if (chartOptions.data && chartOptions.data.googleSpreadsheetKey &&
1844
+ !options.columns) {
1845
+ delete chartOptions.data.columns;
1846
+ }
1847
+ this.init(chartOptions.data);
1839
1848
  }
1840
1849
  };
1841
1850
  return Data;
@@ -1855,7 +1864,9 @@ G.data = function (dataOptions, chartOptions, chart) {
1855
1864
  addEvent(Chart, 'init', function (e) {
1856
1865
  var chart = this, // eslint-disable-line no-invalid-this
1857
1866
  userOptions = (e.args[0] || {}), callback = e.args[1];
1858
- if (userOptions && userOptions.data && !chart.hasDataDef) {
1867
+ var defaultDataOptions = getOptions().data;
1868
+ if ((defaultDataOptions || userOptions && userOptions.data) &&
1869
+ !chart.hasDataDef) {
1859
1870
  chart.hasDataDef = true;
1860
1871
  /**
1861
1872
  * The data parser for this chart.
@@ -1863,7 +1874,8 @@ addEvent(Chart, 'init', function (e) {
1863
1874
  * @name Highcharts.Chart#data
1864
1875
  * @type {Highcharts.Data|undefined}
1865
1876
  */
1866
- chart.data = new G.Data(extend(userOptions.data, {
1877
+ var dataOptions = merge(defaultDataOptions, userOptions.data);
1878
+ chart.data = new G.Data(extend(dataOptions, {
1867
1879
  afterComplete: function (dataOptions) {
1868
1880
  var i, series;
1869
1881
  // Merge series configs
@@ -735,8 +735,11 @@ Axis.prototype.setDataGrouping = function (dataGrouping, redraw) {
735
735
  }
736
736
  else {
737
737
  this.chart.options.series.forEach(function (seriesOptions) {
738
- seriesOptions.dataGrouping = dataGrouping;
739
- }, false);
738
+ // Merging dataGrouping options with already defined options #16759
739
+ seriesOptions.dataGrouping = typeof dataGrouping === 'boolean' ?
740
+ dataGrouping :
741
+ merge(dataGrouping, seriesOptions.dataGrouping);
742
+ });
740
743
  }
741
744
  // Clear ordinal slope, so we won't accidentaly use the old one (#7827)
742
745
  if (axis.ordinal) {
@@ -811,11 +811,11 @@ var defaultGuideBoxOptions = {
811
811
  }
812
812
  };
813
813
  /**
814
- * Options for the drag handles.
814
+ * Options for the drag handles available in column series.
815
815
  *
816
816
  * @declare Highcharts.DragDropHandleOptionsObject
817
817
  * @since 6.2.0
818
- * @optionparent plotOptions.series.dragDrop.dragHandle
818
+ * @optionparent plotOptions.column.dragDrop.dragHandle
819
819
  *
820
820
  * @private
821
821
  */
@@ -827,7 +827,7 @@ var defaultDragHandleOptions = {
827
827
  *
828
828
  * @type {Function}
829
829
  * @since 6.2.0
830
- * @apioption plotOptions.series.dragDrop.dragHandle.pathFormatter
830
+ * @apioption plotOptions.column.dragDrop.dragHandle.pathFormatter
831
831
  */
832
832
  // pathFormatter: null,
833
833
  /**
@@ -837,7 +837,7 @@ var defaultDragHandleOptions = {
837
837
  *
838
838
  * @type {string}
839
839
  * @since 6.2.0
840
- * @apioption plotOptions.series.dragDrop.dragHandle.cursor
840
+ * @apioption plotOptions.column.dragDrop.dragHandle.cursor
841
841
  */
842
842
  // cursor: null,
843
843
  /**
@@ -1757,13 +1757,15 @@ Point.prototype.showDragHandles = function () {
1757
1757
  // Find position and path of handle
1758
1758
  pos = positioner(point);
1759
1759
  handleAttrs.d = path = pathFormatter(point);
1760
- if (!path || pos.x < 0 || pos.y < 0) {
1760
+ // Correct left edge value depending on the xAxis' type, #16596
1761
+ var minEdge = point.series.xAxis.categories ? -0.5 : 0;
1762
+ if (!path || pos.x < minEdge || pos.y < 0) {
1761
1763
  return;
1762
1764
  }
1763
1765
  // If cursor is not set explicitly, use axis direction
1764
1766
  handleAttrs.cursor = handleOptions.cursor ||
1765
- (val.axis === 'x') !== !!chart.inverted ?
1766
- 'ew-resize' : 'ns-resize';
1767
+ ((val.axis === 'x') !== !!chart.inverted ?
1768
+ 'ew-resize' : 'ns-resize');
1767
1769
  // Create and add the handle element if it doesn't exist
1768
1770
  handle = chart.dragHandles[val.optionName];
1769
1771
  if (!handle) {
@@ -29,6 +29,7 @@ var seriesTypes = SeriesRegistry.seriesTypes;
29
29
  import SVGRenderer from '../Core/Renderer/SVG/SVGRenderer.js';
30
30
  import Tick from '../Core/Axis/Tick.js';
31
31
  import U from '../Core/Utilities.js';
32
+ import Breadcrumbs from './Breadcrumbs.js';
32
33
  var addEvent = U.addEvent, removeEvent = U.removeEvent, extend = U.extend, fireEvent = U.fireEvent, merge = U.merge, objectEach = U.objectEach, pick = U.pick, syncTimeout = U.syncTimeout;
33
34
  /**
34
35
  * Gets fired when a drilldown point is clicked, before the new series is added.
@@ -151,18 +152,20 @@ extend(defaultOptions.lang,
151
152
  * @optionparent lang
152
153
  */
153
154
  {
154
- /**
155
- * The text for the button that appears when drilling down, linking back
156
- * to the parent series. The parent series' name is inserted for
157
- * `{series.name}`.
158
- *
159
- * @since 3.0.8
160
- * @product highcharts highmaps
161
- * @requires modules/drilldown
162
- *
163
- * @private
164
- */
165
- drillUpText: '◁ Back to {series.name}'
155
+ /**
156
+ * The text for the button that appears when drilling down, linking back
157
+ * to the parent series. The parent series' name is inserted for
158
+ * `{series.name}`.
159
+ *
160
+ * @since 3.0.8
161
+ * @product highcharts highmaps
162
+ * @requires modules/drilldown
163
+ * @apioption lang.drillUpText
164
+ *
165
+ * @deprecated
166
+ *
167
+ * @private
168
+ */
166
169
  });
167
170
  /**
168
171
  * Options for drill down, the concept of inspecting increasingly high
@@ -194,6 +197,15 @@ defaultOptions.drilldown = {
194
197
  * @product highcharts
195
198
  * @apioption drilldown.allowPointDrilldown
196
199
  */
200
+ /**
201
+ * Options for the breadcrumbs, the navigation at the top leading the way
202
+ * up through the drilldown levels.
203
+ *
204
+ * @since 10.0.0
205
+ * @product highcharts
206
+ * @extends navigation.breadcrumbs
207
+ * @optionparent drilldown.breadcrumbs
208
+ */
197
209
  /**
198
210
  * An array of series configurations for the drill down. Each series
199
211
  * configuration uses the same syntax as the [series](#series) option set.
@@ -280,17 +292,23 @@ defaultOptions.drilldown = {
280
292
  duration: 500
281
293
  },
282
294
  /**
295
+ *
283
296
  * Options for the drill up button that appears when drilling down on a
284
297
  * series. The text for the button is defined in
285
298
  * [lang.drillUpText](#lang.drillUpText).
286
299
  *
287
- * @sample {highcharts} highcharts/drilldown/drillupbutton/
288
- * Drill up button
289
- * @sample {highmaps} highcharts/drilldown/drillupbutton/
290
- * Drill up button
300
+ * This option is deprecated since 9.3.2, use `drilldown.breadcrumbs`
301
+ * instead.
302
+ *
303
+ * @sample highcharts/breadcrumbs/single-button
304
+ * Breadcrumbs set up like a legacy button
305
+ * @sample {highcharts} highcharts/drilldown/drillupbutton/ Drill up button
306
+ * @sample {highmaps} highcharts/drilldown/drillupbutton/ Drill up button
291
307
  *
292
308
  * @since 3.0.8
293
309
  * @product highcharts highmaps
310
+ *
311
+ * @deprecated
294
312
  */
295
313
  drillUpButton: {
296
314
  /**
@@ -576,44 +594,50 @@ Chart.prototype.applyDrilldown = function () {
576
594
  delete this.resetZoomButton;
577
595
  }
578
596
  this.pointer.reset();
579
- this.redraw();
580
- this.showDrillUpButton();
581
597
  fireEvent(this, 'afterDrilldown');
598
+ this.redraw();
599
+ fireEvent(this, 'afterApplyDrilldown');
582
600
  };
583
- Chart.prototype.getDrilldownBackText = function () {
584
- var drilldownLevels = this.drilldownLevels, lastLevel;
585
- if (drilldownLevels && drilldownLevels.length > 0) { // #3352, async loading
586
- lastLevel = drilldownLevels[drilldownLevels.length - 1];
587
- lastLevel.series = lastLevel.seriesOptions;
588
- return format(this.options.lang.drillUpText || '', lastLevel);
589
- }
590
- };
591
- Chart.prototype.showDrillUpButton = function () {
592
- var chart = this, backText = this.getDrilldownBackText(), buttonOptions = chart.options.drilldown.drillUpButton, attr, states, alignTo = (buttonOptions.relativeTo === 'chart' ||
593
- buttonOptions.relativeTo === 'spacingBox' ?
594
- null :
595
- 'scrollablePlotBox');
596
- if (!this.drillUpButton) {
597
- attr = buttonOptions.theme;
598
- states = attr && attr.states;
599
- this.drillUpButton = this.renderer
600
- .button(backText, null, null, function () {
601
- chart.drillUp();
602
- }, attr, states && states.hover, states && states.select)
603
- .addClass('highcharts-drillup-button')
604
- .attr({
605
- align: buttonOptions.position.align,
606
- zIndex: 7
607
- })
608
- .add()
609
- .align(buttonOptions.position, false, alignTo);
610
- }
611
- else {
612
- this.drillUpButton.attr({
613
- text: backText
614
- })
615
- .align();
601
+ /**
602
+ * This method creates an array of arrays containing a level number
603
+ * with the corresponding series/point.
604
+ *
605
+ * @requires modules/breadcrumbs
606
+ *
607
+ * @private
608
+ * @param {Highcharts.Chart} chart
609
+ * Highcharts Chart object.
610
+ * @return {Array<Breadcrumbs.BreadcrumbOptions>}
611
+ * List for Highcharts Breadcrumbs.
612
+ */
613
+ var createBreadcrumbsList = function (chart) {
614
+ var list = [], drilldownLevels = chart.drilldownLevels;
615
+ // The list is based on drilldown levels from the chart object
616
+ if (drilldownLevels && drilldownLevels.length) {
617
+ // Add the initial series as the first element.
618
+ if (!list[0]) {
619
+ list.push({
620
+ level: 0,
621
+ levelOptions: drilldownLevels[0].seriesOptions
622
+ });
623
+ }
624
+ var lastBreadcrumb_1 = list[list.length - 1];
625
+ drilldownLevels.forEach(function (level) {
626
+ // If level is already added to breadcrumbs list,
627
+ // don't add it again- drilling categories
628
+ // + 1 because of the wrong levels numeration
629
+ // in drilldownLevels array.
630
+ if (level.levelNumber + 1 > lastBreadcrumb_1.level) {
631
+ list.push({
632
+ level: level.levelNumber + 1,
633
+ levelOptions: merge({
634
+ name: level.lowerSeries.name
635
+ }, level.pointOptions)
636
+ });
637
+ }
638
+ });
616
639
  }
640
+ return list;
617
641
  };
618
642
  /**
619
643
  * When the chart is drilled down to a child series, calling `chart.drillUp()`
@@ -630,6 +654,7 @@ Chart.prototype.drillUp = function () {
630
654
  if (!this.drilldownLevels || this.drilldownLevels.length === 0) {
631
655
  return;
632
656
  }
657
+ fireEvent(this, 'beforeDrillUp');
633
658
  var chart = this, drilldownLevels = chart.drilldownLevels, levelNumber = drilldownLevels[drilldownLevels.length - 1].levelNumber, i = drilldownLevels.length, chartSeries = chart.series, seriesI, level, oldSeries, newSeries, oldExtremes, addSeries = function (seriesOptions) {
634
659
  var addedSeries;
635
660
  chartSeries.forEach(function (series) {
@@ -646,6 +671,7 @@ Chart.prototype.drillUp = function () {
646
671
  newSeries = addedSeries;
647
672
  }
648
673
  };
674
+ var drilldownLevelsNumber = chart.drilldownLevels.length;
649
675
  while (i--) {
650
676
  level = drilldownLevels[i];
651
677
  if (level.levelNumber === levelNumber) {
@@ -665,12 +691,19 @@ Chart.prototype.drillUp = function () {
665
691
  }
666
692
  }
667
693
  oldSeries.xData = []; // Overcome problems with minRange (#2898)
694
+ // Reset the names to start new series from the beginning.
695
+ // Do it once to preserve names when multiple
696
+ // series are added for the same axis, #16135.
697
+ if (oldSeries.xAxis &&
698
+ oldSeries.xAxis.names &&
699
+ (drilldownLevelsNumber === 0 || i === drilldownLevelsNumber)) {
700
+ oldSeries.xAxis.names.length = 0;
701
+ }
668
702
  level.levelSeriesOptions.forEach(addSeries);
669
703
  fireEvent(chart, 'drillup', {
670
704
  seriesOptions: level.seriesPurgedOptions ||
671
705
  level.seriesOptions
672
706
  });
673
- this.resetZoomButton && this.resetZoomButton.destroy(); // #8095
674
707
  if (newSeries.type === oldSeries.type) {
675
708
  newSeries.drilldownLevel = level;
676
709
  newSeries.options.animation =
@@ -691,30 +724,46 @@ Chart.prototype.drillUp = function () {
691
724
  // it to the chart and show it.
692
725
  if (level.resetZoomButton) {
693
726
  chart.resetZoomButton = level.resetZoomButton;
694
- chart.resetZoomButton.show();
695
727
  }
696
728
  }
697
729
  }
730
+ fireEvent(chart, 'afterDrillUp');
698
731
  this.redraw();
699
- if (this.drilldownLevels.length === 0) {
700
- this.drillUpButton = this.drillUpButton.destroy();
701
- }
702
- else {
703
- this.drillUpButton.attr({
704
- text: this.getDrilldownBackText()
705
- })
706
- .align();
707
- }
708
732
  this.ddDupes.length = []; // #3315
709
733
  // Fire a once-off event after all series have been drilled up (#5158)
710
734
  fireEvent(chart, 'drillupall');
711
735
  };
736
+ /**
737
+ * A function to fade in a group. First, the element is being hidden,
738
+ * then, using `opactiy`, is faded in. Used for example by `dataLabelsGroup`
739
+ * where simple SVGElement.fadeIn() is not enough, because of other features
740
+ * (e.g. InactiveState) using `opacity` to fadeIn/fadeOut.
741
+ *
742
+ * @requires module:modules/drilldown
743
+ *
744
+ * @param {undefined|SVGElement} [group]
745
+ * The SVG element to be faded in.
746
+ */
747
+ function fadeInGroup(group) {
748
+ var animationOptions = animObject(this.chart.options.drilldown.animation);
749
+ if (group) {
750
+ group.hide();
751
+ syncTimeout(function () {
752
+ // Make sure neither the group, or the chart, were destroyed
753
+ if (group && group.added) {
754
+ group.fadeIn();
755
+ }
756
+ }, Math.max(animationOptions.duration - 50, 0));
757
+ }
758
+ }
712
759
  /* eslint-disable no-invalid-this */
713
760
  // Add update function to be called internally from Chart.update
714
761
  // (#7600, #12855)
715
762
  addEvent(Chart, 'afterInit', function () {
716
763
  var chart = this;
717
764
  chart.drilldown = {
765
+ chart: chart,
766
+ fadeInGroup: fadeInGroup,
718
767
  update: function (options, redraw) {
719
768
  merge(true, chart.options.drilldown, options);
720
769
  if (pick(redraw, true)) {
@@ -723,22 +772,6 @@ addEvent(Chart, 'afterInit', function () {
723
772
  }
724
773
  };
725
774
  });
726
- // Shift the drillUpButton to make the space for resetZoomButton, #8095.
727
- addEvent(Chart, 'afterShowResetZoom', function () {
728
- var chart = this, bbox = chart.resetZoomButton && chart.resetZoomButton.getBBox(), buttonOptions = (chart.options.drilldown &&
729
- chart.options.drilldown.drillUpButton);
730
- if (this.drillUpButton &&
731
- bbox &&
732
- buttonOptions &&
733
- buttonOptions.position &&
734
- buttonOptions.position.x) {
735
- this.drillUpButton.align({
736
- x: buttonOptions.position.x - bbox.width - 10,
737
- y: buttonOptions.position.y,
738
- align: buttonOptions.position.align
739
- }, false, buttonOptions.relativeTo || 'plotBox');
740
- }
741
- });
742
775
  addEvent(Chart, 'render', function () {
743
776
  (this.xAxis || []).forEach(function (axis) {
744
777
  axis.ddPoints = {};
@@ -769,6 +802,31 @@ addEvent(Chart, 'render', function () {
769
802
  objectEach(axis.ticks, Tick.prototype.drillable);
770
803
  });
771
804
  });
805
+ addEvent(H.Breadcrumbs, 'up', function (e) {
806
+ var chart = this.chart, drillUpsNumber = this.getLevel() - e.newLevel;
807
+ for (var i = 0; i < drillUpsNumber; i++) {
808
+ chart.drillUp();
809
+ }
810
+ });
811
+ addEvent(Chart, 'afterDrilldown', function () {
812
+ var chart = this, drilldownOptions = chart.options.drilldown, breadcrumbsOptions = drilldownOptions && drilldownOptions.breadcrumbs;
813
+ if (!chart.breadcrumbs) {
814
+ chart.breadcrumbs = new Breadcrumbs(chart, breadcrumbsOptions);
815
+ }
816
+ chart.breadcrumbs.updateProperties(createBreadcrumbsList(chart));
817
+ });
818
+ addEvent(Chart, 'afterDrillUp', function () {
819
+ var chart = this;
820
+ chart.breadcrumbs &&
821
+ chart.breadcrumbs.updateProperties(createBreadcrumbsList(chart));
822
+ });
823
+ addEvent(Chart, 'update', function (e) {
824
+ var breadcrumbs = this.breadcrumbs, breadcrumbOptions = e.options.drilldown &&
825
+ e.options.drilldown.breadcrumbs;
826
+ if (breadcrumbs && breadcrumbOptions) {
827
+ breadcrumbs.update(e.options.drilldown.breadcrumbs);
828
+ }
829
+ });
772
830
  /**
773
831
  * When drilling up, keep the upper series invisible until the lower series has
774
832
  * moved into place.
@@ -854,10 +912,10 @@ ColumnSeries.prototype.animateDrilldown = function (init) {
854
912
  .attr(animateFrom)
855
913
  .animate(extend(point.shapeArgs, { fill: point.color || series.color }), animationOptions);
856
914
  }
857
- if (point.dataLabel) {
858
- point.dataLabel.fadeIn(animationOptions);
859
- }
860
915
  });
916
+ if (chart.drilldown) {
917
+ chart.drilldown.fadeInGroup(this.dataLabelsGroup);
918
+ }
861
919
  // Reset to prototype
862
920
  delete this.animate;
863
921
  }
@@ -935,6 +993,9 @@ if (PieSeries) {
935
993
  }))[animationOptions ? 'animate' : 'attr'](animateTo, animationOptions);
936
994
  }
937
995
  });
996
+ if (this.chart.drilldown) {
997
+ this.chart.drilldown.fadeInGroup(this.dataLabelsGroup);
998
+ }
938
999
  // Reset to prototype
939
1000
  delete this.animate;
940
1001
  }
@@ -1150,21 +1211,13 @@ addEvent(Point, 'afterSetState', function () {
1150
1211
  applyCursorCSS(this.series.halo, 'auto', false, styledMode);
1151
1212
  }
1152
1213
  });
1153
- // After zooming out, shift the drillUpButton to the previous position, #8095.
1154
- addEvent(Chart, 'selection', function (event) {
1155
- if (event.resetSelection === true && this.drillUpButton) {
1156
- var buttonOptions = (this.options.drilldown && this.options.drilldown.drillUpButton);
1157
- if (buttonOptions && buttonOptions.position) {
1158
- this.drillUpButton.align({
1159
- x: buttonOptions.position.x,
1160
- y: buttonOptions.position.y,
1161
- align: buttonOptions.position.align
1162
- }, false, buttonOptions.relativeTo || 'plotBox');
1163
- }
1164
- }
1165
- });
1166
1214
  addEvent(Chart, 'drillup', function () {
1167
1215
  if (this.resetZoomButton) {
1168
1216
  this.resetZoomButton = this.resetZoomButton.destroy();
1169
1217
  }
1170
1218
  });
1219
+ addEvent(Chart, 'drillupall', function () {
1220
+ if (this.resetZoomButton) {
1221
+ this.showResetZoom();
1222
+ }
1223
+ });
@@ -463,7 +463,7 @@ var Exporting;
463
463
  };
464
464
  css(element, extend({
465
465
  cursor: 'pointer'
466
- }, navOptions.menuItemStyle));
466
+ }, navOptions.menuItemStyle || {}));
467
467
  }
468
468
  }
469
469
  // Keep references to menu divs to be able to destroy them
@@ -917,15 +917,17 @@ var Exporting;
917
917
  dummySVG.removeChild(dummy);
918
918
  }
919
919
  // Loop through all styles and add them inline if they are ok
920
- if (G.isFirefox || G.isMS) {
921
- // Some browsers put lots of styles on the prototype
922
- for (var p in styles) { // eslint-disable-line guard-for-in
920
+ for (var p in styles) {
921
+ if (
922
+ // Some browsers put lots of styles on the prototype...
923
+ G.isFirefox ||
924
+ G.isMS ||
925
+ G.isSafari || // #16902
926
+ // ... Chrome puts them on the instance
927
+ Object.hasOwnProperty.call(styles, p)) {
923
928
  filterStyles(styles[p], p);
924
929
  }
925
930
  }
926
- else {
927
- objectEach(styles, filterStyles);
928
- }
929
931
  // Apply styles
930
932
  if (cssText) {
931
933
  styleAttr = node.getAttribute('style');
@@ -132,7 +132,7 @@ var exporting = {
132
132
  * Path where Highcharts will look for export module dependencies to
133
133
  * load on demand if they don't already exist on `window`. Should currently
134
134
  * point to location of [CanVG](https://github.com/canvg/canvg) library,
135
- * [jsPDF](https://github.com/yWorks/jsPDF) and
135
+ * [jsPDF](https://github.com/parallax/jsPDF) and
136
136
  * [svg2pdf.js](https://github.com/yWorks/svg2pdf.js), required for client
137
137
  * side export in certain browsers.
138
138
  *
@@ -196,6 +196,54 @@ var exporting = {
196
196
  * @since 2.0
197
197
  */
198
198
  url: 'https://export.highcharts.com/',
199
+ /**
200
+ * Settings for a custom font for the exported PDF, when using the
201
+ * `offline-exporting` module. This is used for languages containing
202
+ * non-ASCII characters, like Chinese, Russian, Japanese etc.
203
+ *
204
+ * As described in the [jsPDF
205
+ * docs](https://github.com/parallax/jsPDF#use-of-unicode-characters--utf-8),
206
+ * the 14 standard fonts in PDF are limited to the ASCII-codepage.
207
+ * Therefore, in order to support other text in the exported PDF, one or
208
+ * more TTF font files have to be passed on to the exporting module.
209
+ *
210
+ * See more in [the
211
+ * docs](https://www.highcharts.com/docs/export-module/client-side-export).
212
+ *
213
+ * @sample {highcharts} highcharts/exporting/offline-download-pdffont/
214
+ * Download PDF in a language containing non-Latin characters.
215
+ *
216
+ * @since 10.0.0
217
+ * @requires modules/offline-exporting
218
+ */
219
+ pdfFont: {
220
+ /**
221
+ * The TTF font file for normal `font-style`. If font variations like
222
+ * `bold` or `italic` are not defined, the `normal` font will be used
223
+ * for those too.
224
+ *
225
+ * @type string|undefined
226
+ */
227
+ normal: void 0,
228
+ /**
229
+ * The TTF font file for bold text.
230
+ *
231
+ * @type string|undefined
232
+ */
233
+ bold: void 0,
234
+ /**
235
+ * The TTF font file for bold and italic text.
236
+ *
237
+ * @type string|undefined
238
+ */
239
+ bolditalic: void 0,
240
+ /**
241
+ * The TTF font file for italic text.
242
+ *
243
+ * @type string|undefined
244
+ */
245
+ italic: void 0
246
+ },
199
247
  /**
200
248
  * When printing the chart from the menu item in the burger menu, if
201
249
  * the on-screen chart exceeds this width, it is resized. After printing