highcharts 11.4.3 → 11.4.4

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 (625) hide show
  1. package/bower.json +1 -1
  2. package/es-modules/Accessibility/Accessibility.js +1 -1
  3. package/es-modules/Accessibility/AccessibilityComponent.js +1 -1
  4. package/es-modules/Accessibility/Components/NavigatorComponent.js +2 -2
  5. package/es-modules/Accessibility/KeyboardNavigation.js +1 -1
  6. package/es-modules/Accessibility/KeyboardNavigationHandler.js +5 -5
  7. package/es-modules/Accessibility/Options/A11yDefaults.js +1 -1
  8. package/es-modules/Accessibility/Options/LangDefaults.js +3 -3
  9. package/es-modules/Accessibility/Utils/EventProvider.js +1 -1
  10. package/es-modules/Accessibility/Utils/HTMLUtilities.js +1 -1
  11. package/es-modules/Core/Animation/Fx.js +4 -2
  12. package/es-modules/Core/Axis/Axis.js +3 -3
  13. package/es-modules/Core/Axis/AxisDefaults.js +1 -0
  14. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +7 -3
  15. package/es-modules/Core/Axis/GridAxis.js +1 -1
  16. package/es-modules/Core/Axis/OrdinalAxis.js +5 -2
  17. package/es-modules/Core/Axis/RadialAxisDefaults.js +3 -3
  18. package/es-modules/Core/Axis/Stacking/StackItem.js +1 -1
  19. package/es-modules/Core/Chart/Chart.js +16 -7
  20. package/es-modules/Core/Chart/MapChart.js +3 -3
  21. package/es-modules/Core/Chart/StockChart.js +1 -1
  22. package/es-modules/Core/Color/Color.js +2 -2
  23. package/es-modules/Core/Defaults.js +27 -1
  24. package/es-modules/Core/Geometry/GeometryUtilities.js +22 -0
  25. package/es-modules/Core/Globals.js +1 -1
  26. package/es-modules/Core/Legend/Legend.js +82 -14
  27. package/es-modules/Core/MSPointer.js +42 -1
  28. package/es-modules/Core/Pointer.js +10 -6
  29. package/es-modules/Core/Renderer/HTML/AST.js +6 -0
  30. package/es-modules/Core/Renderer/HTML/HTMLElement.js +2 -2
  31. package/es-modules/Core/Renderer/SVG/SVGElement.js +31 -98
  32. package/es-modules/Core/Renderer/SVG/SVGLabel.js +20 -0
  33. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +29 -14
  34. package/es-modules/Core/Renderer/SVG/Symbols.js +18 -18
  35. package/es-modules/Core/Responsive.js +6 -1
  36. package/es-modules/Core/Series/DataLabel.js +1 -10
  37. package/es-modules/Core/Series/DataSeriesComposition.js +0 -2
  38. package/es-modules/Core/Series/Point.js +7 -10
  39. package/es-modules/Core/Series/Series.js +40 -24
  40. package/es-modules/Core/Series/SeriesDefaults.js +18 -12
  41. package/es-modules/Core/Templating.js +2 -2
  42. package/es-modules/Core/Tooltip.js +6 -3
  43. package/es-modules/Data/Connectors/JSONConnector.js +1 -0
  44. package/es-modules/Data/Converters/CSVConverter.js +1 -1
  45. package/es-modules/Data/Converters/DataConverter.js +7 -7
  46. package/es-modules/Data/DataTable.js +106 -5
  47. package/es-modules/Data/Formula/FormulaParser.js +2 -2
  48. package/es-modules/Extensions/Annotations/Controllables/ControllableDefaults.js +1 -1
  49. package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +1 -1
  50. package/es-modules/Extensions/Annotations/NavigationBindings.js +1 -2
  51. package/es-modules/Extensions/Boost/Boost.js +1 -1
  52. package/es-modules/Extensions/Boost/BoostChart.js +8 -2
  53. package/es-modules/Extensions/Boost/BoostSeries.js +41 -10
  54. package/es-modules/Extensions/Boost/WGLShader.js +1 -1
  55. package/es-modules/Extensions/BorderRadius.js +3 -3
  56. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +0 -38
  57. package/es-modules/Extensions/Data.js +11 -11
  58. package/es-modules/Extensions/DataGrouping/DataGrouping.js +1 -2
  59. package/es-modules/Extensions/DataGrouping/DataGroupingDefaults.js +1 -1
  60. package/es-modules/Extensions/DownloadURL.js +1 -1
  61. package/es-modules/Extensions/Drilldown/Drilldown.js +0 -2
  62. package/es-modules/Extensions/Exporting/Exporting.js +14 -14
  63. package/es-modules/Extensions/OverlappingDataLabels.js +36 -5
  64. package/es-modules/Extensions/Pane/PaneDefaults.js +3 -2
  65. package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +1 -1
  66. package/es-modules/Extensions/Sonification/MIDI.js +7 -7
  67. package/es-modules/Extensions/Sonification/SonificationInstrument.js +0 -1
  68. package/es-modules/Extensions/Sonification/TimelineFromChart.js +1 -3
  69. package/es-modules/Extensions/TextPath.js +225 -0
  70. package/es-modules/Maps/MapUtilities.js +1 -20
  71. package/es-modules/Maps/MapView.js +3 -1
  72. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +3 -0
  73. package/es-modules/Series/Area/AreaSeries.js +5 -0
  74. package/es-modules/Series/Area/AreaSeriesDefaults.js +1 -1
  75. package/es-modules/Series/Bar/BarSeries.js +1 -1
  76. package/es-modules/Series/Bellcurve/BellcurveSeriesDefaults.js +2 -2
  77. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +2 -1
  78. package/es-modules/Series/Bubble/BubbleLegendComposition.js +4 -7
  79. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +3 -3
  80. package/es-modules/Series/Bubble/BubbleSeries.js +4 -4
  81. package/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -1
  82. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +5 -2
  83. package/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +2 -2
  84. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +2 -2
  85. package/es-modules/Series/Flags/FlagsSeries.js +2 -2
  86. package/es-modules/Series/Flags/FlagsSeriesDefaults.js +1 -1
  87. package/es-modules/Series/Gantt/GanttSeriesDefaults.js +1 -1
  88. package/es-modules/Series/Gauge/GaugeSeries.js +1 -1
  89. package/es-modules/Series/HLC/HLCSeries.js +1 -1
  90. package/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +2 -2
  91. package/es-modules/Series/Item/ItemSeries.js +1 -1
  92. package/es-modules/Series/Map/MapSeries.js +1 -1
  93. package/es-modules/Series/Map/MapSeriesDefaults.js +2 -2
  94. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -1
  95. package/es-modules/Series/Organization/OrganizationSeries.js +3 -0
  96. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
  97. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +8 -5
  98. package/es-modules/Series/Pie/PieDataLabel.js +7 -6
  99. package/es-modules/Series/Pie/PiePoint.js +6 -6
  100. package/es-modules/Series/Pie/PieSeriesDefaults.js +11 -10
  101. package/es-modules/Series/Pie3D/Pie3DSeries.js +1 -1
  102. package/es-modules/Series/Sankey/SankeySeries.js +7 -4
  103. package/es-modules/Series/Sankey/SankeySeriesDefaults.js +1 -1
  104. package/es-modules/Series/Sunburst/SunburstSeries.js +8 -5
  105. package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +2 -2
  106. package/es-modules/Series/Tilemap/TilemapSeriesDefaults.js +2 -2
  107. package/es-modules/Series/Treegraph/TreegraphSeries.js +23 -2
  108. package/es-modules/Series/Treegraph/TreegraphSeriesDefaults.js +2 -2
  109. package/es-modules/Series/Treemap/TreemapPoint.js +2 -1
  110. package/es-modules/Series/Treemap/TreemapSeries.js +15 -7
  111. package/es-modules/Series/Treemap/TreemapSeriesDefaults.js +15 -1
  112. package/es-modules/Series/VariablePie/VariablePieSeriesDefaults.js +2 -2
  113. package/es-modules/Series/Variwide/VariwideComposition.js +1 -1
  114. package/es-modules/Series/Vector/VectorSeries.js +1 -1
  115. package/es-modules/Series/Windbarb/WindbarbSeries.js +2 -2
  116. package/es-modules/Series/Wordcloud/WordcloudSeries.js +2 -2
  117. package/es-modules/Series/Wordcloud/WordcloudSeriesDefaults.js +1 -1
  118. package/es-modules/Stock/Indicators/AD/ADIndicator.js +1 -1
  119. package/es-modules/Stock/Indicators/APO/APOIndicator.js +1 -1
  120. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +1 -1
  121. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +1 -1
  122. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +1 -1
  123. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +3 -3
  124. package/es-modules/Stock/Indicators/LinearRegression/LinearRegressionIndicator.js +1 -1
  125. package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +1 -1
  126. package/es-modules/Stock/Indicators/PC/PCIndicator.js +1 -1
  127. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -1
  128. package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +1 -1
  129. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +3 -3
  130. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +1 -1
  131. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +2 -2
  132. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +3 -3
  133. package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +1 -1
  134. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +1 -1
  135. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +1 -1
  136. package/es-modules/Stock/Navigator/Navigator.js +141 -55
  137. package/es-modules/Stock/Navigator/NavigatorDefaults.js +1 -1
  138. package/es-modules/Stock/RangeSelector/RangeSelector.js +1 -1
  139. package/es-modules/Stock/RangeSelector/RangeSelectorDefaults.js +1 -1
  140. package/es-modules/Stock/Scrollbar/ScrollbarDefaults.js +1 -1
  141. package/es-modules/Stock/StockTools/StockToolbar.js +115 -37
  142. package/es-modules/Stock/StockTools/StockToolsDefaults.js +7 -1
  143. package/es-modules/Stock/StockTools/StockToolsGui.js +24 -23
  144. package/es-modules/Stock/StockTools/StockToolsUtilities.js +26 -0
  145. package/es-modules/masters/highcharts-more.src.js +2 -2
  146. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  147. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  148. package/es-modules/masters/indicators/ao.src.js +1 -1
  149. package/es-modules/masters/indicators/apo.src.js +1 -1
  150. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  151. package/es-modules/masters/indicators/aroon.src.js +1 -1
  152. package/es-modules/masters/indicators/atr.src.js +1 -1
  153. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  154. package/es-modules/masters/indicators/cci.src.js +1 -1
  155. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  156. package/es-modules/masters/indicators/cmf.src.js +1 -1
  157. package/es-modules/masters/indicators/cmo.src.js +1 -1
  158. package/es-modules/masters/indicators/dema.src.js +1 -1
  159. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  160. package/es-modules/masters/indicators/dmi.src.js +1 -1
  161. package/es-modules/masters/indicators/dpo.src.js +1 -1
  162. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  163. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  164. package/es-modules/masters/indicators/indicators.src.js +1 -1
  165. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  166. package/es-modules/masters/indicators/klinger.src.js +1 -1
  167. package/es-modules/masters/indicators/macd.src.js +1 -1
  168. package/es-modules/masters/indicators/mfi.src.js +1 -1
  169. package/es-modules/masters/indicators/momentum.src.js +1 -1
  170. package/es-modules/masters/indicators/natr.src.js +1 -1
  171. package/es-modules/masters/indicators/obv.src.js +1 -1
  172. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  173. package/es-modules/masters/indicators/ppo.src.js +1 -1
  174. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  175. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  176. package/es-modules/masters/indicators/psar.src.js +1 -1
  177. package/es-modules/masters/indicators/regressions.src.js +1 -1
  178. package/es-modules/masters/indicators/roc.src.js +1 -1
  179. package/es-modules/masters/indicators/rsi.src.js +1 -1
  180. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  181. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  182. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  183. package/es-modules/masters/indicators/tema.src.js +1 -1
  184. package/es-modules/masters/indicators/trendline.src.js +1 -1
  185. package/es-modules/masters/indicators/trix.src.js +1 -1
  186. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  187. package/es-modules/masters/indicators/vwap.src.js +1 -1
  188. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  189. package/es-modules/masters/indicators/wma.src.js +1 -1
  190. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  191. package/es-modules/masters/modules/arc-diagram.src.js +2 -3
  192. package/es-modules/masters/modules/cylinder.src.js +1 -1
  193. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  194. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  195. package/es-modules/masters/modules/export-data.src.js +1 -1
  196. package/es-modules/masters/modules/funnel3d.src.js +2 -2
  197. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  198. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  199. package/es-modules/masters/modules/map.src.js +1 -1
  200. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  201. package/es-modules/masters/modules/organization.src.js +1 -1
  202. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  203. package/es-modules/masters/modules/pyramid3d.src.js +3 -3
  204. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  205. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  206. package/es-modules/masters/modules/textpath.src.d.ts +1 -0
  207. package/es-modules/masters/modules/textpath.src.js +16 -0
  208. package/es-modules/masters/modules/tilemap.src.js +1 -1
  209. package/es-modules/masters/modules/treegraph.src.js +1 -1
  210. package/es-modules/tsconfig.tsbuildinfo +1 -1
  211. package/highcharts-3d.js +2 -2
  212. package/highcharts-3d.src.js +4 -4
  213. package/highcharts-gantt.js +3 -3
  214. package/highcharts-gantt.src.js +3374 -3042
  215. package/highcharts-more.d.ts +42 -2
  216. package/highcharts-more.js +2 -2
  217. package/highcharts-more.src.d.ts +42 -2
  218. package/highcharts-more.src.js +260 -35
  219. package/highcharts.d.ts +828 -428
  220. package/highcharts.js +3 -3
  221. package/highcharts.src.d.ts +828 -428
  222. package/highcharts.src.js +5844 -5600
  223. package/highmaps.js +3 -3
  224. package/highmaps.src.js +3270 -3043
  225. package/highstock.js +3 -3
  226. package/highstock.src.js +3379 -3048
  227. package/indicators/acceleration-bands.js +2 -2
  228. package/indicators/acceleration-bands.src.js +4 -4
  229. package/indicators/accumulation-distribution.js +2 -2
  230. package/indicators/accumulation-distribution.src.js +5 -5
  231. package/indicators/ao.js +2 -2
  232. package/indicators/ao.src.js +4 -4
  233. package/indicators/apo.js +2 -2
  234. package/indicators/apo.src.js +5 -5
  235. package/indicators/aroon-oscillator.js +2 -2
  236. package/indicators/aroon-oscillator.src.js +4 -4
  237. package/indicators/aroon.js +2 -2
  238. package/indicators/aroon.src.js +5 -5
  239. package/indicators/atr.js +2 -2
  240. package/indicators/atr.src.js +4 -4
  241. package/indicators/bollinger-bands.js +2 -2
  242. package/indicators/bollinger-bands.src.js +4 -4
  243. package/indicators/cci.js +2 -2
  244. package/indicators/cci.src.js +4 -4
  245. package/indicators/chaikin.js +2 -2
  246. package/indicators/chaikin.src.js +6 -6
  247. package/indicators/cmf.js +2 -2
  248. package/indicators/cmf.src.js +5 -5
  249. package/indicators/cmo.js +2 -2
  250. package/indicators/cmo.src.js +4 -4
  251. package/indicators/dema.js +2 -2
  252. package/indicators/dema.src.js +4 -4
  253. package/indicators/disparity-index.js +2 -2
  254. package/indicators/disparity-index.src.js +4 -4
  255. package/indicators/dmi.js +2 -2
  256. package/indicators/dmi.src.js +4 -4
  257. package/indicators/dpo.js +2 -2
  258. package/indicators/dpo.src.js +4 -4
  259. package/indicators/ema.js +1 -1
  260. package/indicators/ema.src.js +2 -2
  261. package/indicators/ichimoku-kinko-hyo.js +2 -2
  262. package/indicators/ichimoku-kinko-hyo.src.js +7 -7
  263. package/indicators/indicators-all.js +2 -2
  264. package/indicators/indicators-all.src.js +29 -29
  265. package/indicators/indicators.js +2 -2
  266. package/indicators/indicators.src.js +5 -5
  267. package/indicators/keltner-channels.js +2 -2
  268. package/indicators/keltner-channels.src.js +4 -4
  269. package/indicators/klinger.js +2 -2
  270. package/indicators/klinger.src.js +4 -4
  271. package/indicators/macd.js +2 -2
  272. package/indicators/macd.src.js +4 -4
  273. package/indicators/mfi.js +2 -2
  274. package/indicators/mfi.src.js +5 -5
  275. package/indicators/momentum.js +2 -2
  276. package/indicators/momentum.src.js +4 -4
  277. package/indicators/natr.js +2 -2
  278. package/indicators/natr.src.js +4 -4
  279. package/indicators/obv.js +2 -2
  280. package/indicators/obv.src.js +4 -4
  281. package/indicators/pivot-points.js +2 -2
  282. package/indicators/pivot-points.src.js +7 -7
  283. package/indicators/ppo.js +2 -2
  284. package/indicators/ppo.src.js +5 -5
  285. package/indicators/price-channel.js +2 -2
  286. package/indicators/price-channel.src.js +5 -5
  287. package/indicators/price-envelopes.js +2 -2
  288. package/indicators/price-envelopes.src.js +4 -4
  289. package/indicators/psar.js +2 -2
  290. package/indicators/psar.src.js +5 -5
  291. package/indicators/regressions.js +2 -2
  292. package/indicators/regressions.src.js +5 -5
  293. package/indicators/roc.js +2 -2
  294. package/indicators/roc.src.js +4 -4
  295. package/indicators/rsi.js +2 -2
  296. package/indicators/rsi.src.js +4 -4
  297. package/indicators/slow-stochastic.js +2 -2
  298. package/indicators/slow-stochastic.src.js +6 -6
  299. package/indicators/stochastic.js +2 -2
  300. package/indicators/stochastic.src.js +4 -4
  301. package/indicators/supertrend.js +2 -2
  302. package/indicators/supertrend.src.js +7 -7
  303. package/indicators/tema.js +2 -2
  304. package/indicators/tema.src.js +4 -4
  305. package/indicators/trendline.js +2 -2
  306. package/indicators/trendline.src.js +5 -5
  307. package/indicators/trix.js +2 -2
  308. package/indicators/trix.src.js +4 -4
  309. package/indicators/volume-by-price.js +2 -2
  310. package/indicators/volume-by-price.src.js +4 -4
  311. package/indicators/vwap.js +2 -2
  312. package/indicators/vwap.src.js +5 -5
  313. package/indicators/williams-r.js +2 -2
  314. package/indicators/williams-r.src.js +5 -5
  315. package/indicators/wma.js +2 -2
  316. package/indicators/wma.src.js +4 -4
  317. package/indicators/zigzag.js +2 -2
  318. package/indicators/zigzag.src.js +4 -4
  319. package/modules/accessibility.js +2 -2
  320. package/modules/accessibility.src.js +162 -77
  321. package/modules/annotations-advanced.js +2 -2
  322. package/modules/annotations-advanced.src.js +8 -9
  323. package/modules/annotations.js +2 -2
  324. package/modules/annotations.src.js +8 -9
  325. package/modules/arc-diagram.d.ts +120 -1
  326. package/modules/arc-diagram.js +2 -2
  327. package/modules/arc-diagram.src.d.ts +120 -1
  328. package/modules/arc-diagram.src.js +9363 -5
  329. package/modules/arrow-symbols.js +2 -2
  330. package/modules/arrow-symbols.src.js +3 -3
  331. package/modules/boost-canvas.js +2 -2
  332. package/modules/boost-canvas.src.js +53 -16
  333. package/modules/boost.js +2 -2
  334. package/modules/boost.src.js +54 -17
  335. package/modules/broken-axis.js +2 -2
  336. package/modules/broken-axis.src.js +3 -3
  337. package/modules/bullet.js +2 -2
  338. package/modules/bullet.src.js +3 -3
  339. package/modules/coloraxis.js +2 -2
  340. package/modules/coloraxis.src.js +10 -6
  341. package/modules/current-date-indicator.js +2 -2
  342. package/modules/current-date-indicator.src.js +3 -3
  343. package/modules/cylinder.js +2 -2
  344. package/modules/cylinder.src.js +4 -4
  345. package/modules/data-tools.js +2 -2
  346. package/modules/data-tools.src.js +120 -18
  347. package/modules/data.js +2 -2
  348. package/modules/data.src.js +14 -14
  349. package/modules/datagrouping.js +2 -2
  350. package/modules/datagrouping.src.js +5 -6
  351. package/modules/debugger.js +2 -2
  352. package/modules/debugger.src.js +3 -3
  353. package/modules/dependency-wheel.js +2 -2
  354. package/modules/dependency-wheel.src.js +8 -7
  355. package/modules/dotplot.js +2 -2
  356. package/modules/dotplot.src.js +3 -3
  357. package/modules/drag-panes.js +2 -2
  358. package/modules/drag-panes.src.js +4 -4
  359. package/modules/draggable-points.js +2 -2
  360. package/modules/draggable-points.src.js +3 -3
  361. package/modules/drilldown.js +2 -2
  362. package/modules/drilldown.src.js +3 -43
  363. package/modules/dumbbell.js +2 -2
  364. package/modules/dumbbell.src.js +5 -5
  365. package/modules/export-data.js +2 -2
  366. package/modules/export-data.src.js +5 -5
  367. package/modules/exporting.js +2 -2
  368. package/modules/exporting.src.js +17 -17
  369. package/modules/flowmap.js +2 -2
  370. package/modules/flowmap.src.js +3 -3
  371. package/modules/full-screen.js +2 -2
  372. package/modules/full-screen.src.js +3 -3
  373. package/modules/funnel.js +2 -2
  374. package/modules/funnel.src.js +3 -3
  375. package/modules/funnel3d.js +2 -2
  376. package/modules/funnel3d.src.js +4 -4
  377. package/modules/gantt.js +2 -2
  378. package/modules/gantt.src.js +155 -67
  379. package/modules/geoheatmap.js +2 -2
  380. package/modules/geoheatmap.src.js +3 -3
  381. package/modules/grid-axis.js +2 -2
  382. package/modules/grid-axis.src.js +4 -4
  383. package/modules/heatmap.js +2 -2
  384. package/modules/heatmap.src.js +12 -8
  385. package/modules/heikinashi.js +2 -2
  386. package/modules/heikinashi.src.js +4 -4
  387. package/modules/histogram-bellcurve.js +2 -2
  388. package/modules/histogram-bellcurve.src.js +5 -5
  389. package/modules/hollowcandlestick.js +2 -2
  390. package/modules/hollowcandlestick.src.js +4 -4
  391. package/modules/item-series.js +2 -2
  392. package/modules/item-series.src.js +4 -4
  393. package/modules/lollipop.js +2 -2
  394. package/modules/lollipop.src.js +3 -3
  395. package/modules/map.d.ts +1 -1
  396. package/modules/map.js +2 -2
  397. package/modules/map.src.d.ts +1 -1
  398. package/modules/map.src.js +34 -51
  399. package/modules/marker-clusters.js +2 -2
  400. package/modules/marker-clusters.src.js +3 -3
  401. package/modules/mouse-wheel-zoom.js +2 -2
  402. package/modules/mouse-wheel-zoom.src.js +3 -3
  403. package/modules/navigator.js +2 -2
  404. package/modules/navigator.src.js +146 -61
  405. package/modules/networkgraph.d.ts +40 -0
  406. package/modules/networkgraph.js +2 -2
  407. package/modules/networkgraph.src.d.ts +40 -0
  408. package/modules/networkgraph.src.js +231 -5
  409. package/modules/no-data-to-display.js +2 -2
  410. package/modules/no-data-to-display.src.js +3 -3
  411. package/modules/offline-exporting.js +2 -2
  412. package/modules/offline-exporting.src.js +6 -6
  413. package/modules/organization.js +2 -2
  414. package/modules/organization.src.js +6 -5
  415. package/modules/overlapping-datalabels.js +2 -2
  416. package/modules/overlapping-datalabels.src.js +3 -3
  417. package/modules/parallel-coordinates.js +2 -2
  418. package/modules/parallel-coordinates.src.js +4 -4
  419. package/modules/pareto.js +2 -2
  420. package/modules/pareto.src.js +3 -3
  421. package/modules/pathfinder.js +2 -2
  422. package/modules/pathfinder.src.js +3 -3
  423. package/modules/pattern-fill.js +2 -2
  424. package/modules/pattern-fill.src.js +3 -3
  425. package/modules/pictorial.js +2 -2
  426. package/modules/pictorial.src.js +3 -3
  427. package/modules/price-indicator.js +2 -2
  428. package/modules/price-indicator.src.js +4 -4
  429. package/modules/pyramid3d.js +2 -2
  430. package/modules/pyramid3d.src.js +4 -4
  431. package/modules/sankey.d.ts +42 -1
  432. package/modules/sankey.js +2 -2
  433. package/modules/sankey.src.d.ts +42 -1
  434. package/modules/sankey.src.js +235 -9
  435. package/modules/series-label.js +2 -2
  436. package/modules/series-label.src.js +3 -3
  437. package/modules/series-on-point.js +2 -2
  438. package/modules/series-on-point.src.js +3 -3
  439. package/modules/solid-gauge.js +2 -2
  440. package/modules/solid-gauge.src.js +4 -4
  441. package/modules/sonification.js +2 -2
  442. package/modules/sonification.src.js +12 -15
  443. package/modules/static-scale.js +2 -2
  444. package/modules/static-scale.src.js +3 -3
  445. package/modules/stock-tools.d.ts +15 -1
  446. package/modules/stock-tools.js +2 -2
  447. package/modules/stock-tools.src.d.ts +15 -1
  448. package/modules/stock-tools.src.js +178 -70
  449. package/modules/stock.js +2 -2
  450. package/modules/stock.src.js +160 -73
  451. package/modules/streamgraph.js +2 -2
  452. package/modules/streamgraph.src.js +3 -3
  453. package/modules/sunburst.d.ts +40 -0
  454. package/modules/sunburst.js +2 -2
  455. package/modules/sunburst.src.d.ts +40 -0
  456. package/modules/sunburst.src.js +269 -58
  457. package/modules/textpath.d.ts +58 -0
  458. package/modules/textpath.js +7 -0
  459. package/modules/textpath.src.d.ts +58 -0
  460. package/modules/textpath.src.js +269 -0
  461. package/modules/tiledwebmap.js +3 -3
  462. package/modules/tiledwebmap.src.js +3 -3
  463. package/modules/tilemap.js +2 -2
  464. package/modules/tilemap.src.js +6 -6
  465. package/modules/timeline.js +2 -2
  466. package/modules/timeline.src.js +3 -3
  467. package/modules/treegraph.d.ts +40 -0
  468. package/modules/treegraph.js +2 -2
  469. package/modules/treegraph.src.d.ts +40 -0
  470. package/modules/treegraph.src.js +253 -9
  471. package/modules/treegrid.js +2 -2
  472. package/modules/treegrid.src.js +4 -4
  473. package/modules/treemap.js +2 -2
  474. package/modules/treemap.src.js +35 -50
  475. package/modules/variable-pie.js +2 -2
  476. package/modules/variable-pie.src.js +5 -5
  477. package/modules/variwide.js +2 -2
  478. package/modules/variwide.src.js +4 -4
  479. package/modules/vector.js +2 -2
  480. package/modules/vector.src.js +4 -4
  481. package/modules/venn.js +2 -2
  482. package/modules/venn.src.js +3 -88
  483. package/modules/windbarb.js +2 -2
  484. package/modules/windbarb.src.js +5 -5
  485. package/modules/wordcloud.js +2 -2
  486. package/modules/wordcloud.src.js +6 -6
  487. package/modules/xrange.js +2 -2
  488. package/modules/xrange.src.js +3 -3
  489. package/options/ad.d.ts +17 -9
  490. package/options/ad.src.d.ts +17 -9
  491. package/options/apo.d.ts +17 -9
  492. package/options/apo.src.d.ts +17 -9
  493. package/options/arearange.d.ts +17 -9
  494. package/options/arearange.src.d.ts +17 -9
  495. package/options/areaspline.d.ts +17 -9
  496. package/options/areaspline.src.d.ts +17 -9
  497. package/options/bar.d.ts +17 -9
  498. package/options/bar.src.d.ts +17 -9
  499. package/options/bb.d.ts +17 -9
  500. package/options/bb.src.d.ts +17 -9
  501. package/options/bubble.d.ts +17 -9
  502. package/options/bubble.src.d.ts +17 -9
  503. package/options/candlestick.d.ts +17 -9
  504. package/options/candlestick.src.d.ts +17 -9
  505. package/options/cci.d.ts +17 -9
  506. package/options/cci.src.d.ts +17 -9
  507. package/options/cmf.d.ts +17 -9
  508. package/options/cmf.src.d.ts +17 -9
  509. package/options/column.d.ts +17 -9
  510. package/options/column.src.d.ts +17 -9
  511. package/options/columnpyramid.d.ts +17 -9
  512. package/options/columnpyramid.src.d.ts +17 -9
  513. package/options/columnrange.d.ts +17 -9
  514. package/options/columnrange.src.d.ts +17 -9
  515. package/options/cylinder.d.ts +17 -9
  516. package/options/cylinder.src.d.ts +17 -9
  517. package/options/dema.d.ts +17 -9
  518. package/options/dema.src.d.ts +17 -9
  519. package/options/dependencywheel.d.ts +17 -9
  520. package/options/dependencywheel.src.d.ts +17 -9
  521. package/options/disparityindex.d.ts +17 -9
  522. package/options/disparityindex.src.d.ts +17 -9
  523. package/options/dpo.d.ts +17 -9
  524. package/options/dpo.src.d.ts +17 -9
  525. package/options/dumbbell.d.ts +17 -9
  526. package/options/dumbbell.src.d.ts +17 -9
  527. package/options/ema.d.ts +17 -9
  528. package/options/ema.src.d.ts +17 -9
  529. package/options/funnel.d.ts +17 -9
  530. package/options/funnel.src.d.ts +17 -9
  531. package/options/gantt.d.ts +16 -8
  532. package/options/gantt.src.d.ts +16 -8
  533. package/options/klinger.d.ts +17 -9
  534. package/options/klinger.src.d.ts +17 -9
  535. package/options/linearregression.d.ts +17 -9
  536. package/options/linearregression.src.d.ts +17 -9
  537. package/options/lollipop.d.ts +17 -9
  538. package/options/lollipop.src.d.ts +17 -9
  539. package/options/macd.d.ts +17 -9
  540. package/options/macd.src.d.ts +17 -9
  541. package/options/momentum.d.ts +17 -9
  542. package/options/momentum.src.d.ts +17 -9
  543. package/options/ohlc.d.ts +17 -9
  544. package/options/ohlc.src.d.ts +17 -9
  545. package/options/organization.d.ts +17 -9
  546. package/options/organization.src.d.ts +17 -9
  547. package/options/pareto.d.ts +16 -8
  548. package/options/pareto.src.d.ts +16 -8
  549. package/options/pc.d.ts +17 -9
  550. package/options/pc.src.d.ts +17 -9
  551. package/options/polygon.d.ts +17 -9
  552. package/options/polygon.src.d.ts +17 -9
  553. package/options/ppo.d.ts +17 -9
  554. package/options/ppo.src.d.ts +17 -9
  555. package/options/psar.d.ts +17 -9
  556. package/options/psar.src.d.ts +17 -9
  557. package/options/pyramid.d.ts +17 -9
  558. package/options/pyramid.src.d.ts +17 -9
  559. package/options/roc.d.ts +17 -9
  560. package/options/roc.src.d.ts +17 -9
  561. package/options/sankey.d.ts +17 -9
  562. package/options/sankey.src.d.ts +17 -9
  563. package/options/scatter.d.ts +17 -9
  564. package/options/scatter.src.d.ts +17 -9
  565. package/options/series.d.ts +17 -9
  566. package/options/series.src.d.ts +17 -9
  567. package/options/sma.d.ts +17 -9
  568. package/options/sma.src.d.ts +17 -9
  569. package/options/spline.d.ts +17 -9
  570. package/options/spline.src.d.ts +17 -9
  571. package/options/stochastic.d.ts +17 -9
  572. package/options/stochastic.src.d.ts +17 -9
  573. package/options/supertrend.d.ts +17 -9
  574. package/options/supertrend.src.d.ts +17 -9
  575. package/options/tilemap.d.ts +17 -9
  576. package/options/tilemap.src.d.ts +17 -9
  577. package/options/treegraph.d.ts +24 -9
  578. package/options/treegraph.src.d.ts +24 -9
  579. package/options/treemap.d.ts +23 -8
  580. package/options/treemap.src.d.ts +23 -8
  581. package/options/trendline.d.ts +17 -9
  582. package/options/trendline.src.d.ts +17 -9
  583. package/options/variwide.d.ts +17 -9
  584. package/options/variwide.src.d.ts +17 -9
  585. package/options/vbp.d.ts +17 -9
  586. package/options/vbp.src.d.ts +17 -9
  587. package/options/vector.d.ts +17 -9
  588. package/options/vector.src.d.ts +17 -9
  589. package/options/waterfall.d.ts +17 -9
  590. package/options/waterfall.src.d.ts +17 -9
  591. package/options/williamsr.d.ts +17 -9
  592. package/options/williamsr.src.d.ts +17 -9
  593. package/options/xrange.d.ts +17 -9
  594. package/options/xrange.src.d.ts +17 -9
  595. package/package.json +1 -1
  596. package/standalone-navigator.js +2 -2
  597. package/standalone-navigator.src.js +3363 -3034
  598. package/themes/avocado.js +2 -2
  599. package/themes/avocado.src.js +3 -3
  600. package/themes/brand-dark.js +2 -2
  601. package/themes/brand-dark.src.js +3 -3
  602. package/themes/brand-light.js +2 -2
  603. package/themes/brand-light.src.js +3 -3
  604. package/themes/dark-blue.js +2 -2
  605. package/themes/dark-blue.src.js +3 -3
  606. package/themes/dark-green.js +2 -2
  607. package/themes/dark-green.src.js +3 -3
  608. package/themes/dark-unica.js +2 -2
  609. package/themes/dark-unica.src.js +3 -3
  610. package/themes/gray.js +2 -2
  611. package/themes/gray.src.js +3 -3
  612. package/themes/grid-light.js +2 -2
  613. package/themes/grid-light.src.js +3 -3
  614. package/themes/grid.js +2 -2
  615. package/themes/grid.src.js +3 -3
  616. package/themes/high-contrast-dark.js +2 -2
  617. package/themes/high-contrast-dark.src.js +3 -3
  618. package/themes/high-contrast-light.js +2 -2
  619. package/themes/high-contrast-light.src.js +3 -3
  620. package/themes/sand-signika.js +2 -2
  621. package/themes/sand-signika.src.js +3 -3
  622. package/themes/skies.js +2 -2
  623. package/themes/skies.src.js +3 -3
  624. package/themes/sunset.js +2 -2
  625. package/themes/sunset.src.js +3 -3
@@ -162,7 +162,7 @@ class Series {
162
162
  * @name Highcharts.Series#visible
163
163
  * @type {boolean}
164
164
  */
165
- visible,
165
+ visible, // True by default
166
166
  /**
167
167
  * Read only. The series' selected state as set by {@link
168
168
  * Highcharts.Series#select}.
@@ -788,7 +788,7 @@ class Series {
788
788
  */
789
789
  setData(data, redraw = true, animation, updatePoints) {
790
790
  const series = this, oldData = series.points, oldDataLength = (oldData && oldData.length) || 0, options = series.options, chart = series.chart, dataSorting = options.dataSorting, xAxis = series.xAxis, turboThreshold = options.turboThreshold, xData = this.xData, yData = this.yData, pointArrayMap = series.pointArrayMap, valueCount = pointArrayMap && pointArrayMap.length, keys = options.keys;
791
- let i, pt, updatedData, indexOfX = 0, indexOfY = 1, firstPoint = null, copiedData;
791
+ let i, pt, updatedData, indexOfX = 0, indexOfY = 1, copiedData;
792
792
  if (!chart.options.chart.allowMutatingData) { // #4259
793
793
  // Remove old reference
794
794
  if (options.data) {
@@ -826,21 +826,24 @@ class Series {
826
826
  this.parallelArrays.forEach(function (key) {
827
827
  series[key + 'Data'].length = 0;
828
828
  });
829
- // In turbo mode, only one- or twodimensional arrays of numbers
830
- // are allowed. The first value is tested, and we assume that
831
- // all the rest are defined the same way. Although the 'for'
832
- // loops are similar, they are repeated inside each if-else
833
- // conditional for max performance.
834
- if (turboThreshold && dataLength > turboThreshold) {
835
- firstPoint = series.getFirstValidPoint(data);
836
- if (isNumber(firstPoint)) { // Assume all points are numbers
829
+ // In turbo mode, look for one- or twodimensional arrays of numbers.
830
+ // The first and the last valid value are tested, and we assume that
831
+ // all the rest are defined the same way. Although the 'for' loops
832
+ // are similar, they are repeated inside each if-else conditional
833
+ // for max performance.
834
+ let runTurbo = turboThreshold && dataLength > turboThreshold;
835
+ if (runTurbo) {
836
+ const firstPoint = series.getFirstValidPoint(data), lastPoint = series.getFirstValidPoint(data, dataLength - 1, -1), isShortArray = (a) => Boolean(isArray(a) && (keys || isNumber(a[0])));
837
+ // Assume all points are numbers
838
+ if (isNumber(firstPoint) && isNumber(lastPoint)) {
837
839
  for (i = 0; i < dataLength; i++) {
838
840
  xData[i] = this.autoIncrement();
839
841
  yData[i] = data[i];
840
842
  }
841
843
  // Assume all points are arrays when first point is
842
844
  }
843
- else if (isArray(firstPoint)) {
845
+ else if (isShortArray(firstPoint) &&
846
+ isShortArray(lastPoint)) {
844
847
  if (valueCount) { // [x, low, high] or [x, o, h, l, c]
845
848
  if (firstPoint.length === valueCount) {
846
849
  for (i = 0; i < dataLength; i++) {
@@ -885,10 +888,10 @@ class Series {
885
888
  else {
886
889
  // Highcharts expects configs to be numbers or arrays in
887
890
  // turbo mode
888
- error(12, false, chart);
891
+ runTurbo = false;
889
892
  }
890
893
  }
891
- else {
894
+ if (!runTurbo) {
892
895
  for (i = 0; i < dataLength; i++) {
893
896
  pt = { series: series };
894
897
  series.pointClass.prototype.applyOptions.apply(pt, [data[i]]);
@@ -1296,7 +1299,7 @@ class Series {
1296
1299
  }
1297
1300
  }
1298
1301
  const dataExtremes = {
1299
- activeYData,
1302
+ activeYData, // Needed for Stock Cumulative Sum
1300
1303
  dataMin: arrayMin(activeYData),
1301
1304
  dataMax: arrayMax(activeYData)
1302
1305
  };
@@ -1334,21 +1337,26 @@ class Series {
1334
1337
  return dataExtremes;
1335
1338
  }
1336
1339
  /**
1337
- * Find and return the first non null point in the data
1340
+ * Find and return the first non nullish point in the data
1338
1341
  *
1339
1342
  * @private
1340
1343
  * @function Highcharts.Series.getFirstValidPoint
1341
1344
  * @param {Array<Highcharts.PointOptionsType>} data
1342
- * Array of options for points
1345
+ * Array of options for points
1346
+ * @param {number} [start=0]
1347
+ * Index to start searching from
1348
+ * @param {number} [increment=1]
1349
+ * Index increment, set -1 to search backwards
1343
1350
  */
1344
- getFirstValidPoint(data) {
1351
+ getFirstValidPoint(data, start = 0, increment = 1) {
1345
1352
  const dataLength = data.length;
1346
- let i = 0, firstPoint = null;
1347
- while (firstPoint === null && i < dataLength) {
1348
- firstPoint = data[i];
1349
- i++;
1353
+ let i = start;
1354
+ while (i >= 0 && i < dataLength) {
1355
+ if (defined(data[i])) {
1356
+ return data[i];
1357
+ }
1358
+ i += increment;
1350
1359
  }
1351
- return firstPoint;
1352
1360
  }
1353
1361
  /**
1354
1362
  * Translate data points from raw data values to chart specific
@@ -2187,7 +2195,7 @@ class Series {
2187
2195
  rotationOriginY: inverted ?
2188
2196
  (horAxis.len + vertAxis.len) / 2 :
2189
2197
  0,
2190
- scaleX: inverted ? -1 : 1,
2198
+ scaleX: inverted ? -1 : 1, // #1623
2191
2199
  scaleY: 1
2192
2200
  };
2193
2201
  }
@@ -2510,7 +2518,7 @@ class Series {
2510
2518
  if (!chart.styledMode) {
2511
2519
  tracker.attr({
2512
2520
  'stroke-linecap': 'round',
2513
- 'stroke-linejoin': 'round',
2521
+ 'stroke-linejoin': 'round', // #1225
2514
2522
  stroke: TRACKER_FILL,
2515
2523
  fill: trackByArea ? TRACKER_FILL : 'none',
2516
2524
  'stroke-width': series.graph.strokeWidth() +
@@ -3478,6 +3486,10 @@ export default Series;
3478
3486
  * default action is to toggle the visibility of the series. This can be
3479
3487
  * prevented by returning `false` or calling `event.preventDefault()`.
3480
3488
  *
3489
+ * **Note:** This option is deprecated in favor of
3490
+ * Highcharts.LegendItemClickCallbackFunction.
3491
+ *
3492
+ * @deprecated
3481
3493
  * @callback Highcharts.SeriesLegendItemClickCallbackFunction
3482
3494
  *
3483
3495
  * @param {Highcharts.Series} this
@@ -3489,6 +3501,10 @@ export default Series;
3489
3501
  /**
3490
3502
  * Information about the event.
3491
3503
  *
3504
+ * **Note:** This option is deprecated in favor of
3505
+ * Highcharts.LegendItemClickEventObject.
3506
+ *
3507
+ * @deprecated
3492
3508
  * @interface Highcharts.SeriesLegendItemClickEventObject
3493
3509
  */ /**
3494
3510
  * Related browser event.
@@ -897,12 +897,13 @@ const seriesDefaults = {
897
897
  * is to toggle the visibility of the series. This can be prevented
898
898
  * by returning `false` or calling `event.preventDefault()`.
899
899
  *
900
- * @sample {highcharts} highcharts/plotoptions/series-events-legenditemclick/
901
- * Confirm hiding and showing
900
+ * **Note:** This option is deprecated in favor of
901
+ * [legend.events.itemClick](#legend.events.itemClick).
902
902
  *
903
- * @type {Highcharts.SeriesLegendItemClickCallbackFunction}
904
- * @context Highcharts.Series
905
- * @apioption plotOptions.series.events.legendItemClick
903
+ * @type {Highcharts.SeriesLegendItemClickCallbackFunction}
904
+ * @deprecated
905
+ * @context Highcharts.Series
906
+ * @apioption plotOptions.series.events.legendItemClick
906
907
  */
907
908
  /**
908
909
  * Fires when the mouse leaves the graph. One parameter, `event`, is
@@ -2215,15 +2216,20 @@ const seriesDefaults = {
2215
2216
  * @apioption plotOptions.series.tooltip
2216
2217
  */
2217
2218
  /**
2218
- * When a series contains a data array that is longer than this, only
2219
- * one dimensional arrays of numbers, or two dimensional arrays with
2220
- * x and y values are allowed. Also, only the first point is tested,
2221
- * and the rest are assumed to be the same format. This saves expensive
2222
- * data checking and indexing in long series. Set it to `0` disable.
2219
+ * When a series contains a `data` array that is longer than this, the
2220
+ * Series class looks for data configurations of plain numbers or arrays of
2221
+ * numbers. The first and last valid points are checked. If found, the rest
2222
+ * of the data is assumed to be the same. This saves expensive data checking
2223
+ * and indexing in long series, and makes data-heavy charts render faster.
2224
+ *
2225
+ * Set it to `0` disable.
2223
2226
  *
2224
2227
  * Note:
2225
- * In boost mode turbo threshold is forced. Only array of numbers or
2226
- * two dimensional arrays are allowed.
2228
+ * - In boost mode turbo threshold is forced. Only array of numbers or two
2229
+ * dimensional arrays are allowed.
2230
+ * - In version 11.4.3 and earlier, if object configurations were passed
2231
+ * beyond the turbo threshold, a warning was logged in the console and the
2232
+ * data series didn't render.
2227
2233
  *
2228
2234
  * @since 2.2
2229
2235
  * @product highcharts highstock gantt
@@ -121,11 +121,11 @@ function dateFormat(format, timestamp, capitalize) {
121
121
  * The formatted string.
122
122
  */
123
123
  function format(str = '', ctx, chart) {
124
- const regex = /\{([a-zA-Z0-9\:\.\,;\-\/<>%_@"'= #\(\)]+)\}/g,
124
+ const regex = /\{([\w\:\.\,;\-\/<>%@"'’= #\(\)]+)\}/g,
125
125
  // The sub expression regex is the same as the top expression regex,
126
126
  // but except parens and block helpers (#), and surrounded by parens
127
127
  // instead of curly brackets.
128
- subRegex = /\(([a-zA-Z0-9\:\.\,;\-\/<>%_@"'= ]+)\)/g, matches = [], floatRegex = /f$/, decRegex = /\.([0-9])/, lang = defaultOptions.lang, time = chart && chart.time || defaultTime, numberFormatter = chart && chart.numberFormatter || numberFormat;
128
+ subRegex = /\(([\w\:\.\,;\-\/<>%@"'= ]+)\)/g, matches = [], floatRegex = /f$/, decRegex = /\.(\d)/, lang = defaultOptions.lang, time = chart && chart.time || defaultTime, numberFormatter = chart && chart.numberFormatter || numberFormat;
129
129
  /*
130
130
  * Get a literal or variable value inside a template expression. May be
131
131
  * extended with other types like string or null if needed, but keep it
@@ -36,6 +36,9 @@ const { addEvent, clamp, css, discardElement, extend, fireEvent, isArray, isNumb
36
36
  *
37
37
  * @param {Highcharts.TooltipOptions} options
38
38
  * Tooltip options.
39
+ *
40
+ * @param {Highcharts.Pointer} pointer
41
+ * The pointer instance.
39
42
  */
40
43
  class Tooltip {
41
44
  /* *
@@ -371,7 +374,7 @@ class Tooltip {
371
374
  buildDimensionArray = (dim) => {
372
375
  const isX = dim === 'x';
373
376
  return [
374
- dim,
377
+ dim, // Dimension - x or y
375
378
  isX ? outerWidth : outerHeight,
376
379
  isX ? boxWidth : boxHeight
377
380
  ].concat(outside ? [
@@ -719,12 +722,12 @@ class Tooltip {
719
722
  });
720
723
  }
721
724
  label.attr({
725
+ // Add class before the label BBox calculation (#21035)
726
+ 'class': tooltip.getClassName(point),
722
727
  text: text && text.join ?
723
728
  text.join('') :
724
729
  text
725
730
  });
726
- // Set the stroke color of the box to reflect the point
727
- label.addClass(tooltip.getClassName(point), true);
728
731
  if (!styledMode) {
729
732
  label.attr({
730
733
  stroke: (options.borderColor ||
@@ -78,6 +78,7 @@ class JSONConnector extends DataConnector {
78
78
  table.deleteColumns();
79
79
  converter.parse({ data });
80
80
  table.setColumns(converter.getTable().getColumns());
81
+ table.setRowKeysColumn(data.length);
81
82
  }
82
83
  return connector.setModifierOptions(dataModifier).then(() => data);
83
84
  })
@@ -291,7 +291,7 @@ class CSVConverter extends DataConverter {
291
291
  read(i);
292
292
  if (c === '#') {
293
293
  // If there are hexvalues remaining (#13283)
294
- if (!/^#[0-9a-f]{3,3}|[0-9a-f]{6,6}/i.test(columnStr.substring(i))) {
294
+ if (!/^#[A-F\d]{3,3}|[A-F\d]{6,6}/i.test(columnStr.substring(i))) {
295
295
  // The rest of the row is a comment
296
296
  push();
297
297
  return;
@@ -51,7 +51,7 @@ class DataConverter {
51
51
  */
52
52
  this.dateFormats = {
53
53
  'YYYY/mm/dd': {
54
- regex: /^([0-9]{4})([\-\.\/])([0-9]{1,2})\2([0-9]{1,2})$/,
54
+ regex: /^(\d{4})([\-\.\/])(\d{1,2})\2(\d{1,2})$/,
55
55
  parser: function (match) {
56
56
  return (match ?
57
57
  Date.UTC(+match[1], match[3] - 1, +match[4]) :
@@ -59,7 +59,7 @@ class DataConverter {
59
59
  }
60
60
  },
61
61
  'dd/mm/YYYY': {
62
- regex: /^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{4})$/,
62
+ regex: /^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{4})$/,
63
63
  parser: function (match) {
64
64
  return (match ?
65
65
  Date.UTC(+match[4], match[3] - 1, +match[1]) :
@@ -68,7 +68,7 @@ class DataConverter {
68
68
  alternative: 'mm/dd/YYYY' // Different format with the same regex
69
69
  },
70
70
  'mm/dd/YYYY': {
71
- regex: /^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{4})$/,
71
+ regex: /^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{4})$/,
72
72
  parser: function (match) {
73
73
  return (match ?
74
74
  Date.UTC(+match[4], match[1] - 1, +match[3]) :
@@ -76,7 +76,7 @@ class DataConverter {
76
76
  }
77
77
  },
78
78
  'dd/mm/YY': {
79
- regex: /^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{2})$/,
79
+ regex: /^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{2})$/,
80
80
  parser: function (match) {
81
81
  const d = new Date();
82
82
  if (!match) {
@@ -94,7 +94,7 @@ class DataConverter {
94
94
  alternative: 'mm/dd/YY' // Different format with the same regex
95
95
  },
96
96
  'mm/dd/YY': {
97
- regex: /^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{2})$/,
97
+ regex: /^(\d{1,2})([\-\.\/])(\d{1,2})\2(\d{2})$/,
98
98
  parser: function (match) {
99
99
  return (match ?
100
100
  Date.UTC(+match[4] + 2000, match[1] - 1, +match[3]) :
@@ -256,7 +256,7 @@ class DataConverter {
256
256
  data[i] && data[i].length) {
257
257
  thing = data[i]
258
258
  .trim()
259
- .replace(/[-\.\/]/g, ' ')
259
+ .replace(/[\-\.\/]/g, ' ')
260
260
  .split(' ');
261
261
  guessedFormat = [
262
262
  '',
@@ -523,7 +523,7 @@ class DataConverter {
523
523
  if (typeof str === 'string') {
524
524
  str = str.replace(/^\s+|\s+$/g, '');
525
525
  // Clear white space insdie the string, like thousands separators
526
- if (inside && /^[0-9\s]+$/.test(str)) {
526
+ if (inside && /^[\d\s]+$/.test(str)) {
527
527
  str = str.replace(/\s/g, '');
528
528
  }
529
529
  }
@@ -9,6 +9,7 @@
9
9
  * Authors:
10
10
  * - Sophie Bremer
11
11
  * - Gøran Slettemark
12
+ * - Jomar Hønsi
12
13
  *
13
14
  * */
14
15
  'use strict';
@@ -114,7 +115,7 @@ class DataTable {
114
115
  this.autoId = !options.id;
115
116
  this.columns = {};
116
117
  /**
117
- * ID of the table for indentification purposes.
118
+ * ID of the table for identification purposes.
118
119
  *
119
120
  * @name Highcharts.DataTable#id
120
121
  * @type {string}
@@ -123,6 +124,7 @@ class DataTable {
123
124
  this.modified = this;
124
125
  this.rowCount = 0;
125
126
  this.versionTag = uniqueKey();
127
+ this.rowKeysId = options.rowKeysId;
126
128
  const columns = options.columns || {}, columnNames = Object.keys(columns), thisColumns = this.columns;
127
129
  let rowCount = 0;
128
130
  for (let i = 0, iEnd = columnNames.length, column, columnName; i < iEnd; ++i) {
@@ -140,6 +142,7 @@ class DataTable {
140
142
  alias = aliasKeys[i];
141
143
  thisAliases[alias] = aliases[alias];
142
144
  }
145
+ this.setRowKeysColumn(rowCount);
143
146
  }
144
147
  /* *
145
148
  *
@@ -175,6 +178,9 @@ class DataTable {
175
178
  if (!table.autoId) {
176
179
  tableOptions.id = table.id;
177
180
  }
181
+ if (table.rowKeysId) {
182
+ tableOptions.rowKeysId = table.rowKeysId;
183
+ }
178
184
  const tableClone = new DataTable(tableOptions);
179
185
  if (!skipColumns) {
180
186
  tableClone.versionTag = table.versionTag;
@@ -245,7 +251,13 @@ class DataTable {
245
251
  }
246
252
  delete columns[columnName];
247
253
  }
248
- if (!Object.keys(columns).length) {
254
+ let nColumns = Object.keys(columns).length;
255
+ if (table.rowKeysId && nColumns === 1) {
256
+ // All columns deleted, remove row keys column
257
+ delete columns[table.rowKeysId];
258
+ nColumns = 0;
259
+ }
260
+ if (!nColumns) {
249
261
  table.rowCount = 0;
250
262
  }
251
263
  if (modifier) {
@@ -415,7 +427,7 @@ class DataTable {
415
427
  case 'number':
416
428
  return (isNaN(cellValue) && !useNaN ? null : cellValue);
417
429
  }
418
- cellValue = parseFloat(`${cellValue}`);
430
+ cellValue = parseFloat(`${cellValue ?? ''}`);
419
431
  return (isNaN(cellValue) && !useNaN ? null : cellValue);
420
432
  }
421
433
  /**
@@ -437,6 +449,7 @@ class DataTable {
437
449
  columnNameOrAlias = (table.aliases[columnNameOrAlias] ||
438
450
  columnNameOrAlias);
439
451
  const column = table.columns[columnNameOrAlias];
452
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
440
453
  return `${(column && column[rowIndex])}`;
441
454
  }
442
455
  /**
@@ -516,6 +529,7 @@ class DataTable {
516
529
  */
517
530
  getColumnNames() {
518
531
  const table = this, columnNames = Object.keys(table.columns);
532
+ this.removeRowKeysColumn(columnNames);
519
533
  return columnNames;
520
534
  }
521
535
  /**
@@ -536,6 +550,7 @@ class DataTable {
536
550
  getColumns(columnNamesOrAliases, asReference) {
537
551
  const table = this, tableAliasMap = table.aliases, tableColumns = table.columns, columns = {};
538
552
  columnNamesOrAliases = (columnNamesOrAliases || Object.keys(tableColumns));
553
+ this.removeRowKeysColumn(columnNamesOrAliases);
539
554
  for (let i = 0, iEnd = columnNamesOrAliases.length, column, columnName; i < iEnd; ++i) {
540
555
  columnName = columnNamesOrAliases[i];
541
556
  column = tableColumns[(tableAliasMap[columnName] || columnName)];
@@ -652,6 +667,7 @@ class DataTable {
652
667
  getRowObjects(rowIndex = 0, rowCount = (this.rowCount - rowIndex), columnNamesOrAliases) {
653
668
  const table = this, aliases = table.aliases, columns = table.columns, rows = new Array(rowCount);
654
669
  columnNamesOrAliases = (columnNamesOrAliases || Object.keys(columns));
670
+ this.removeRowKeysColumn(columnNamesOrAliases);
655
671
  for (let i = rowIndex, i2 = 0, iEnd = Math.min(table.rowCount, (rowIndex + rowCount)), column, row; i < iEnd; ++i, ++i2) {
656
672
  row = rows[i2] = {};
657
673
  for (const columnName of columnNamesOrAliases) {
@@ -788,6 +804,10 @@ class DataTable {
788
804
  }
789
805
  columns[newColumnName] = columns[columnName];
790
806
  delete columns[columnName];
807
+ if (table.rowKeysId) {
808
+ // Ensure that row keys column is last
809
+ this.moveRowKeysColumnToLast(columns, table.rowKeysId);
810
+ }
791
811
  }
792
812
  return true;
793
813
  }
@@ -923,6 +943,10 @@ class DataTable {
923
943
  if (tableModifier) {
924
944
  tableModifier.modifyColumns(table, columns, (rowIndex || 0));
925
945
  }
946
+ if (table.rowKeysId) {
947
+ // Ensure that the row keys column is always last
948
+ this.moveRowKeysColumnToLast(tableColumns, table.rowKeysId);
949
+ }
926
950
  table.emit({
927
951
  type: 'afterSetColumns',
928
952
  columns,
@@ -931,6 +955,63 @@ class DataTable {
931
955
  rowIndex
932
956
  });
933
957
  }
958
+ /**
959
+ * Sets the row key column. This column is invisible and the cells
960
+ * serve as identifiers to the rows they are contained in. Accessing
961
+ * rows by keys instead of indexes is necessary in cases where rows
962
+ * are rearranged by a DataModifier (e.g. SortModifier or RangeModifier).
963
+ *
964
+ * @function Highcharts.DataTable#setRowKeysColumn
965
+ *
966
+ * @param {number} nRows
967
+ * Number of rows to add to the column.
968
+ *
969
+ */
970
+ setRowKeysColumn(nRows) {
971
+ const id = this.rowKeysId;
972
+ if (!id) {
973
+ return;
974
+ }
975
+ this.columns[id] = [];
976
+ const keysArray = this.columns[id];
977
+ for (let i = 0; i < nRows; i++) {
978
+ keysArray.push(id + '_' + i);
979
+ }
980
+ }
981
+ /**
982
+ * Get the row key column.
983
+ *
984
+ * @function Highcharts.DataTable#getRowKeysColumn
985
+ * *
986
+ * @return {DataTable.Column|undefined}
987
+ * Returns row keys if rowKeysId is defined, else undefined.
988
+ */
989
+ getRowKeysColumn() {
990
+ const id = this.rowKeysId;
991
+ if (id) {
992
+ return this.columns[id];
993
+ }
994
+ }
995
+ /**
996
+ * Get the row index in the original (unmodified) data table.
997
+ *
998
+ * @function Highcharts.DataTable#getRowIndexOriginal
999
+ *
1000
+ * @param {number} idx
1001
+ * Row index in the modified data table.
1002
+ *
1003
+ * @return {string}
1004
+ * Row index in the original data table.
1005
+ */
1006
+ getRowIndexOriginal(idx) {
1007
+ const id = this.rowKeysId;
1008
+ if (id) {
1009
+ const rowKeyCol = this.columns[id];
1010
+ const idxOrig = '' + rowKeyCol[idx];
1011
+ return idxOrig.split('_')[1];
1012
+ }
1013
+ return String(idx);
1014
+ }
934
1015
  /**
935
1016
  * Sets or unsets the modifier for the table.
936
1017
  * @private
@@ -942,7 +1023,7 @@ class DataTable {
942
1023
  * Custom information for pending events.
943
1024
  *
944
1025
  * @return {Promise<Highcharts.DataTable>}
945
- * Resolves to this table if successfull, or rejects on failure.
1026
+ * Resolves to this table if successful, or rejects on failure.
946
1027
  *
947
1028
  * @emits #setModifier
948
1029
  * @emits #afterSetModifier
@@ -1018,7 +1099,7 @@ class DataTable {
1018
1099
  * Row values to set.
1019
1100
  *
1020
1101
  * @param {number} [rowIndex]
1021
- * Index of the first row to set. Leave `undefind` to add as new rows.
1102
+ * Index of the first row to set. Leave `undefined` to add as new rows.
1022
1103
  *
1023
1104
  * @param {Highcharts.DataTableEventDetail} [eventDetail]
1024
1105
  * Custom information for pending events.
@@ -1066,6 +1147,9 @@ class DataTable {
1066
1147
  columns[columnNames[i]].length = indexRowCount;
1067
1148
  }
1068
1149
  }
1150
+ if (this.rowKeysId && !columnNames.includes(this.rowKeysId)) {
1151
+ this.setRowKeysColumn(rowCount);
1152
+ }
1069
1153
  if (modifier) {
1070
1154
  modifier.modifyRows(table, rows, rowIndex);
1071
1155
  }
@@ -1077,6 +1161,23 @@ class DataTable {
1077
1161
  rows
1078
1162
  });
1079
1163
  }
1164
+ // The row keys column must always be the last column
1165
+ moveRowKeysColumnToLast(columns, id) {
1166
+ const rowKeyColumn = columns[id];
1167
+ delete columns[id];
1168
+ columns[id] = rowKeyColumn;
1169
+ }
1170
+ // The row keys column must be removed in some methods
1171
+ // (API backwards compatibility)
1172
+ removeRowKeysColumn(columnNamesOrAliases) {
1173
+ if (this.rowKeysId) {
1174
+ const pos = columnNamesOrAliases.indexOf(this.rowKeysId);
1175
+ if (pos !== -1) {
1176
+ // Always the last column
1177
+ columnNamesOrAliases.pop();
1178
+ }
1179
+ }
1180
+ }
1080
1181
  }
1081
1182
  /* *
1082
1183
  *
@@ -24,12 +24,12 @@ const booleanRegExp = /^(?:FALSE|TRUE)/;
24
24
  * `.`-separated decimal.
25
25
  * @private
26
26
  */
27
- const decimal1RegExp = /^[+-]?\d+(?:\.\d+)?(?:e[+-]\d+)?/;
27
+ const decimal1RegExp = /^[+\-]?\d+(?:\.\d+)?(?:e[+\-]\d+)?/;
28
28
  /**
29
29
  * `,`-separated decimal.
30
30
  * @private
31
31
  */
32
- const decimal2RegExp = /^[+-]?\d+(?:,\d+)?(?:e[+-]\d+)?/;
32
+ const decimal2RegExp = /^[+\-]?\d+(?:,\d+)?(?:e[+\-]\d+)?/;
33
33
  /**
34
34
  * - Group 1: Function name
35
35
  * @private
@@ -57,7 +57,7 @@ const defaultMarkers = {
57
57
  children: [{
58
58
  tagName: 'path',
59
59
  attributes: {
60
- d: 'M 0 0 L 10 5 L 0 10 Z',
60
+ d: 'M 0 0 L 10 5 L 0 10 Z', // Triangle (used as an arrow)
61
61
  'stroke-width': 0
62
62
  }
63
63
  }]
@@ -185,7 +185,7 @@ class ControllablePath extends Controllable {
185
185
  .add(parent);
186
186
  if (!this.annotation.chart.styledMode) {
187
187
  this.tracker.attr({
188
- 'stroke-linejoin': 'round',
188
+ 'stroke-linejoin': 'round', // #1225
189
189
  stroke: TRACKER_FILL,
190
190
  fill: TRACKER_FILL,
191
191
  'stroke-width': this.graphic.strokeWidth() +
@@ -375,8 +375,7 @@ class NavigationBindings {
375
375
  }
376
376
  }
377
377
  else {
378
- chart.stockTools &&
379
- chart.stockTools.toggleButtonActiveClass(button);
378
+ chart.stockTools && button.classList.remove('highcharts-active');
380
379
  svgContainer.removeClass('highcharts-draw-mode');
381
380
  navigation.nextEvent = false;
382
381
  navigation.mouseMoveEvent = false;
@@ -92,7 +92,7 @@ function compose(ChartClass, AxisClass, SeriesClass, seriesTypes, ColorClass) {
92
92
  /**
93
93
  * Returns true if the current browser supports WebGL.
94
94
  *
95
- * @requires module:modules/boost
95
+ * @requires modules/boost
96
96
  *
97
97
  * @function Highcharts.hasWebGLSupport
98
98
  *
@@ -202,14 +202,20 @@ function onChartCallback(chart) {
202
202
  addEvent(chart, 'redraw', canvasToSVG);
203
203
  let prevX = -1;
204
204
  let prevY = -1;
205
- addEvent(chart.pointer, 'afterGetHoverData', () => {
206
- const series = chart.hoverSeries;
205
+ addEvent(chart.pointer, 'afterGetHoverData', (e) => {
206
+ const series = e.hoverPoint?.series;
207
207
  chart.boost = chart.boost || {};
208
208
  if (chart.boost.markerGroup && series) {
209
209
  const xAxis = chart.inverted ? series.yAxis : series.xAxis;
210
210
  const yAxis = chart.inverted ? series.xAxis : series.yAxis;
211
211
  if ((xAxis && xAxis.pos !== prevX) ||
212
212
  (yAxis && yAxis.pos !== prevY)) {
213
+ // #21176: If the axis is changed, hide teh halo without
214
+ // animation to prevent flickering of halos sharing the
215
+ // same marker group
216
+ chart.series.forEach((s) => {
217
+ s.halo?.hide();
218
+ });
213
219
  // #10464: Keep the marker group position in sync with the
214
220
  // position of the hovered series axes since there is only
215
221
  // one shared marker group when boosting.