highcharts 12.2.0 → 12.4.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 (1311) hide show
  1. package/bower.json +1 -1
  2. package/css/annotations/popup.css +86 -45
  3. package/css/highcharts.css +40 -35
  4. package/css/stocktools/gui.css +28 -11
  5. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +3 -3
  6. package/es-modules/Accessibility/Components/LegendComponent.js +10 -1
  7. package/es-modules/Accessibility/Components/MenuComponent.js +26 -23
  8. package/es-modules/Accessibility/Components/NavigatorComponent.js +5 -1
  9. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +3 -1
  10. package/es-modules/Accessibility/FocusBorder.js +4 -0
  11. package/es-modules/Accessibility/HighContrastMode.js +0 -5
  12. package/es-modules/Accessibility/Options/A11yDefaults.js +12 -0
  13. package/es-modules/Core/Axis/Axis.js +4 -3
  14. package/es-modules/Core/Axis/Axis3DComposition.js +0 -3
  15. package/es-modules/Core/Axis/AxisDefaults.js +5 -8
  16. package/es-modules/Core/Axis/BrokenAxis.js +114 -90
  17. package/es-modules/Core/Axis/Color/ColorAxis.js +3 -3
  18. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +2 -3
  19. package/es-modules/Core/Axis/OrdinalAxis.js +19 -12
  20. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +15 -2
  21. package/es-modules/Core/Axis/RadialAxis.js +18 -7
  22. package/es-modules/Core/Axis/ScrollbarAxis.js +19 -17
  23. package/es-modules/Core/Axis/Stacking/StackingAxis.js +0 -1
  24. package/es-modules/Core/Axis/Tick.js +1 -1
  25. package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +36 -51
  26. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +39 -17
  27. package/es-modules/Core/Axis/WaterfallAxis.js +4 -4
  28. package/es-modules/Core/Chart/Chart.js +41 -34
  29. package/es-modules/Core/Chart/ChartDefaults.js +16 -2
  30. package/es-modules/Core/Chart/GanttChart.js +4 -2
  31. package/es-modules/Core/Chart/StockChart.js +42 -49
  32. package/es-modules/Core/Color/Color.js +4 -8
  33. package/es-modules/Core/Defaults.js +16 -7
  34. package/es-modules/Core/Geometry/CircleUtilities.js +3 -1
  35. package/es-modules/Core/Globals.js +1 -1
  36. package/es-modules/Core/HttpUtilities.js +45 -38
  37. package/es-modules/Core/Legend/Legend.js +8 -7
  38. package/es-modules/Core/Pointer.js +17 -9
  39. package/es-modules/Core/Renderer/HTML/AST.js +15 -15
  40. package/es-modules/Core/Renderer/HTML/HTMLElement.js +8 -3
  41. package/es-modules/Core/Renderer/SVG/SVGElement.js +2 -2
  42. package/es-modules/Core/Renderer/SVG/SVGLabel.js +10 -1
  43. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +10 -7
  44. package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
  45. package/es-modules/Core/Series/DataLabel.js +4 -2
  46. package/es-modules/Core/Series/Point.js +9 -0
  47. package/es-modules/Core/Series/Series.js +17 -7
  48. package/es-modules/Core/Series/SeriesDefaults.js +1 -3
  49. package/es-modules/Core/Series/SeriesRegistry.js +8 -1
  50. package/es-modules/Core/Templating.js +6 -5
  51. package/es-modules/Core/Tooltip.js +3 -1
  52. package/es-modules/Data/Connectors/CSVConnector.js +32 -15
  53. package/es-modules/Data/Connectors/DataConnector.js +107 -12
  54. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +29 -17
  55. package/es-modules/Data/Connectors/HTMLTableConnector.js +3 -3
  56. package/es-modules/Data/Connectors/JSONConnector.js +37 -17
  57. package/es-modules/Data/Converters/HTMLTableConverter.js +2 -2
  58. package/es-modules/Data/Converters/JSONConverter.js +0 -1
  59. package/es-modules/Data/DataPool.js +15 -4
  60. package/es-modules/Data/DataTable.js +1 -2
  61. package/es-modules/Data/Formula/FormulaParser.js +33 -1
  62. package/es-modules/Data/Formula/FormulaProcessor.js +97 -45
  63. package/es-modules/Data/Modifiers/DataModifier.js +1 -1
  64. package/es-modules/Data/Modifiers/FilterModifier.js +168 -0
  65. package/es-modules/Data/Modifiers/FilterModifierOptions.js +14 -0
  66. package/es-modules/Data/Modifiers/SortModifier.js +12 -3
  67. package/es-modules/Extensions/Annotations/Annotation.js +10 -7
  68. package/es-modules/Extensions/Annotations/AnnotationChart.js +7 -3
  69. package/es-modules/Extensions/Annotations/AnnotationDefaults.js +38 -12
  70. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +10 -3
  71. package/es-modules/Extensions/Annotations/MockPoint.js +6 -3
  72. package/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +1 -1
  73. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +10 -4
  74. package/es-modules/Extensions/Annotations/Popup/PopupComposition.js +1 -1
  75. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +0 -3
  76. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +97 -94
  77. package/es-modules/Extensions/Annotations/Types/ElliottWave.js +43 -36
  78. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +86 -82
  79. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +74 -71
  80. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +17 -3
  81. package/es-modules/Extensions/Annotations/Types/Measure.js +229 -226
  82. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +39 -40
  83. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +56 -52
  84. package/es-modules/Extensions/Annotations/Types/Tunnel.js +80 -76
  85. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +57 -53
  86. package/es-modules/Extensions/Boost/Boost.js +5 -1
  87. package/es-modules/Extensions/Boost/BoostSeries.js +53 -21
  88. package/es-modules/Extensions/Boost/WGLRenderer.js +30 -21
  89. package/es-modules/Extensions/Boost/WGLShader.js +18 -5
  90. package/es-modules/Extensions/BoostCanvas.js +0 -5
  91. package/es-modules/Extensions/BorderRadius.js +6 -2
  92. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +1 -1
  93. package/es-modules/Extensions/DownloadURL.js +43 -8
  94. package/es-modules/Extensions/ExportData/ExportData.js +875 -781
  95. package/es-modules/Extensions/ExportData/ExportDataDefaults.js +67 -13
  96. package/es-modules/Extensions/Exporting/Exporting.js +1177 -546
  97. package/es-modules/Extensions/Exporting/ExportingDefaults.js +52 -36
  98. package/es-modules/Extensions/Exporting/Fullscreen.js +2 -2
  99. package/es-modules/Extensions/NonCartesianSeriesZoom/NonCartesianSeriesZoom.js +311 -0
  100. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +254 -575
  101. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +9 -38
  102. package/es-modules/Extensions/Pane/Pane.js +1 -1
  103. package/es-modules/Extensions/Pane/PaneComposition.js +19 -12
  104. package/es-modules/Extensions/Pane/PaneDefaults.js +9 -1
  105. package/es-modules/Extensions/ScrollablePlotArea.js +29 -21
  106. package/es-modules/Extensions/Sonification/Sonification.js +1 -1
  107. package/es-modules/Extensions/StaticScale.js +13 -11
  108. package/es-modules/Extensions/TextPath.js +2 -2
  109. package/es-modules/Extensions/Themes/Adaptive.js +1009 -0
  110. package/es-modules/Maps/MapNavigation.js +1 -1
  111. package/es-modules/Series/Bellcurve/BellcurveSeries.js +16 -9
  112. package/es-modules/Series/Bubble/BubblePoint.js +2 -2
  113. package/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -2
  114. package/es-modules/Series/DataModifyComposition.js +0 -2
  115. package/es-modules/Series/DragNodesComposition.js +4 -0
  116. package/es-modules/Series/DrawPointUtilities.js +1 -1
  117. package/es-modules/Series/Flags/FlagsSeriesDefaults.js +2 -0
  118. package/es-modules/Series/GraphLayoutComposition.js +2 -1
  119. package/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -2
  120. package/es-modules/Series/Histogram/HistogramSeries.js +19 -17
  121. package/es-modules/Series/Item/ItemSeries.js +1 -1
  122. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +5 -0
  123. package/es-modules/Series/Pie/PieDataLabel.js +2 -2
  124. package/es-modules/Series/Pie/PieSeries.js +2 -2
  125. package/es-modules/Series/Pie/PieSeriesDefaults.js +1 -2
  126. package/es-modules/Series/PolarComposition.js +37 -2
  127. package/es-modules/Series/SeriesOnPointComposition.js +0 -1
  128. package/es-modules/Series/SimulationSeriesUtilities.js +7 -0
  129. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +7 -2
  130. package/es-modules/Series/SolidGauge/SolidGaugeSeriesDefaults.js +13 -0
  131. package/es-modules/Series/Treegraph/TreegraphLayout.js +10 -4
  132. package/es-modules/Series/Treegraph/TreegraphSeries.js +3 -1
  133. package/es-modules/Series/Treemap/TreemapSeries.js +4 -4
  134. package/es-modules/Series/Variwide/VariwideComposition.js +9 -11
  135. package/es-modules/Series/Variwide/VariwideSeries.js +8 -1
  136. package/es-modules/Series/Waterfall/WaterfallSeries.js +12 -17
  137. package/es-modules/Series/Wordcloud/WordcloudSeries.js +87 -10
  138. package/es-modules/Series/XRange/XRangePoint.js +2 -1
  139. package/es-modules/Shared/BaseForm.js +6 -3
  140. package/es-modules/Shared/TimeBase.js +5 -1
  141. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +1 -1
  142. package/es-modules/Stock/Navigator/NavigatorComposition.js +2 -2
  143. package/es-modules/Stock/Scrollbar/Scrollbar.js +5 -7
  144. package/es-modules/Stock/StockTools/StockToolbar.js +1 -1
  145. package/es-modules/Stock/StockTools/StockToolsBindings.js +34 -113
  146. package/es-modules/masters/highcharts-3d.src.js +3 -1
  147. package/es-modules/masters/highcharts-gantt.src.js +8 -2
  148. package/es-modules/masters/highcharts-more.src.js +2 -2
  149. package/es-modules/masters/highcharts.src.js +2 -2
  150. package/es-modules/masters/highmaps.src.js +2 -2
  151. package/es-modules/masters/highstock.src.js +2 -2
  152. package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
  153. package/es-modules/masters/i18n/fr-FR.src.js +1 -1
  154. package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
  155. package/es-modules/masters/i18n/nb-NO.src.js +1 -1
  156. package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
  157. package/es-modules/masters/i18n/zh-CN.src.js +1 -1
  158. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  159. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  160. package/es-modules/masters/indicators/ao.src.js +1 -1
  161. package/es-modules/masters/indicators/apo.src.js +1 -1
  162. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  163. package/es-modules/masters/indicators/aroon.src.js +1 -1
  164. package/es-modules/masters/indicators/atr.src.js +1 -1
  165. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  166. package/es-modules/masters/indicators/cci.src.js +1 -1
  167. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  168. package/es-modules/masters/indicators/cmf.src.js +1 -1
  169. package/es-modules/masters/indicators/cmo.src.js +1 -1
  170. package/es-modules/masters/indicators/dema.src.js +1 -1
  171. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  172. package/es-modules/masters/indicators/dmi.src.js +1 -1
  173. package/es-modules/masters/indicators/dpo.src.js +1 -1
  174. package/es-modules/masters/indicators/ema.src.js +0 -3
  175. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  176. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  177. package/es-modules/masters/indicators/indicators.src.js +1 -1
  178. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  179. package/es-modules/masters/indicators/klinger.src.js +1 -1
  180. package/es-modules/masters/indicators/macd.src.js +1 -1
  181. package/es-modules/masters/indicators/mfi.src.js +1 -1
  182. package/es-modules/masters/indicators/momentum.src.js +1 -1
  183. package/es-modules/masters/indicators/natr.src.js +1 -1
  184. package/es-modules/masters/indicators/obv.src.js +1 -1
  185. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  186. package/es-modules/masters/indicators/ppo.src.js +1 -1
  187. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  188. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  189. package/es-modules/masters/indicators/psar.src.js +1 -1
  190. package/es-modules/masters/indicators/regressions.src.js +1 -1
  191. package/es-modules/masters/indicators/roc.src.js +1 -1
  192. package/es-modules/masters/indicators/rsi.src.js +1 -1
  193. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  194. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  195. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  196. package/es-modules/masters/indicators/tema.src.js +1 -1
  197. package/es-modules/masters/indicators/trendline.src.js +1 -1
  198. package/es-modules/masters/indicators/trix.src.js +1 -1
  199. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  200. package/es-modules/masters/indicators/vwap.src.js +1 -1
  201. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  202. package/es-modules/masters/indicators/wma.src.js +1 -1
  203. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  204. package/es-modules/masters/modules/accessibility.src.js +1 -1
  205. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  206. package/es-modules/masters/modules/annotations.src.js +1 -1
  207. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  208. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  209. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  210. package/es-modules/masters/modules/boost.src.js +1 -1
  211. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  212. package/es-modules/masters/modules/bullet.src.js +1 -1
  213. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  214. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  215. package/es-modules/masters/modules/cylinder.src.js +1 -1
  216. package/es-modules/masters/modules/data-tools.src.d.ts +1 -0
  217. package/es-modules/masters/modules/data-tools.src.js +2 -1
  218. package/es-modules/masters/modules/data.src.js +1 -1
  219. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  220. package/es-modules/masters/modules/debugger.src.js +1 -1
  221. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  222. package/es-modules/masters/modules/dotplot.src.js +1 -1
  223. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  224. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  225. package/es-modules/masters/modules/drilldown.src.js +3 -1
  226. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  227. package/es-modules/masters/modules/export-data.src.js +3 -3
  228. package/es-modules/masters/modules/exporting.src.js +5 -1
  229. package/es-modules/masters/modules/flowmap.src.js +1 -1
  230. package/es-modules/masters/modules/full-screen.src.js +1 -1
  231. package/es-modules/masters/modules/funnel.src.js +1 -1
  232. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  233. package/es-modules/masters/modules/gantt.src.js +1 -1
  234. package/es-modules/masters/modules/geoheatmap.src.js +1 -1
  235. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  236. package/es-modules/masters/modules/heatmap.src.js +1 -1
  237. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  238. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  239. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  240. package/es-modules/masters/modules/item-series.src.js +1 -1
  241. package/es-modules/masters/modules/lollipop.src.js +1 -1
  242. package/es-modules/masters/modules/map.src.js +1 -1
  243. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  244. package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  245. package/es-modules/masters/modules/navigator.src.js +1 -1
  246. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  247. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  248. package/es-modules/masters/modules/non-cartesian-zoom.src.d.ts +2 -0
  249. package/es-modules/masters/modules/non-cartesian-zoom.src.js +18 -0
  250. package/es-modules/masters/modules/offline-exporting.src.js +2 -2
  251. package/es-modules/masters/modules/organization.src.js +1 -1
  252. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  253. package/es-modules/masters/modules/pareto.src.js +1 -1
  254. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  255. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  256. package/es-modules/masters/modules/pictorial.src.js +1 -1
  257. package/es-modules/masters/modules/pointandfigure.src.js +1 -1
  258. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  259. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  260. package/es-modules/masters/modules/renko.src.js +1 -1
  261. package/es-modules/masters/modules/sankey.src.js +1 -1
  262. package/es-modules/masters/modules/series-label.src.js +1 -1
  263. package/es-modules/masters/modules/series-on-point.src.js +1 -1
  264. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  265. package/es-modules/masters/modules/sonification.src.js +1 -1
  266. package/es-modules/masters/modules/static-scale.src.js +1 -1
  267. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  268. package/es-modules/masters/modules/stock.src.js +1 -1
  269. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  270. package/es-modules/masters/modules/sunburst.src.js +1 -1
  271. package/es-modules/masters/modules/textpath.src.js +1 -1
  272. package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
  273. package/es-modules/masters/modules/tilemap.src.js +1 -1
  274. package/es-modules/masters/modules/timeline.src.js +1 -1
  275. package/es-modules/masters/modules/treegraph.src.js +1 -1
  276. package/es-modules/masters/modules/treegrid.src.js +1 -1
  277. package/es-modules/masters/modules/treemap.src.js +1 -1
  278. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  279. package/es-modules/masters/modules/variwide.src.js +1 -1
  280. package/es-modules/masters/modules/vector.src.js +1 -1
  281. package/es-modules/masters/modules/venn.src.js +1 -1
  282. package/es-modules/masters/modules/windbarb.src.js +1 -1
  283. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  284. package/es-modules/masters/modules/xrange.src.js +1 -1
  285. package/es-modules/masters/standalone-navigator.src.js +7 -6
  286. package/es-modules/masters/themes/adaptive.src.d.ts +2 -0
  287. package/es-modules/masters/themes/adaptive.src.js +15 -0
  288. package/es-modules/masters/themes/avocado.src.js +1 -1
  289. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  290. package/es-modules/masters/themes/brand-light.src.js +1 -1
  291. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  292. package/es-modules/masters/themes/dark-green.src.js +1 -1
  293. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  294. package/es-modules/masters/themes/gray.src.js +1 -1
  295. package/es-modules/masters/themes/grid-light.src.js +1 -1
  296. package/es-modules/masters/themes/grid.src.js +1 -1
  297. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  298. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  299. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  300. package/es-modules/masters/themes/skies.src.js +1 -1
  301. package/es-modules/masters/themes/sunset.src.js +1 -1
  302. package/es-modules/tsconfig.tsbuildinfo +1 -1
  303. package/esm/highcharts-3d.js +11 -1
  304. package/esm/highcharts-3d.src.js +3 -4
  305. package/esm/highcharts-gantt.js +14 -1
  306. package/esm/highcharts-gantt.src.js +8 -2
  307. package/esm/highcharts-more.js +9 -1
  308. package/esm/highcharts-more.src.js +516 -57
  309. package/esm/highcharts.js +9 -2
  310. package/esm/highcharts.src.js +273 -168
  311. package/esm/highmaps.js +8 -1
  312. package/esm/highmaps.src.js +2 -2
  313. package/esm/highstock.js +8 -1
  314. package/esm/highstock.src.js +2 -2
  315. package/esm/i18n/fr-FR.js +13 -1
  316. package/esm/i18n/fr-FR.src.js +1 -1
  317. package/esm/i18n/nb-NO.js +13 -1
  318. package/esm/i18n/nb-NO.src.js +1 -1
  319. package/esm/i18n/zh-CN.js +13 -1
  320. package/esm/i18n/zh-CN.src.js +1 -1
  321. package/esm/indicators/acceleration-bands.js +12 -1
  322. package/esm/indicators/acceleration-bands.src.js +1 -1
  323. package/esm/indicators/accumulation-distribution.js +12 -1
  324. package/esm/indicators/accumulation-distribution.src.js +1 -1
  325. package/esm/indicators/ao.js +12 -1
  326. package/esm/indicators/ao.src.js +1 -1
  327. package/esm/indicators/apo.js +12 -1
  328. package/esm/indicators/apo.src.js +1 -1
  329. package/esm/indicators/aroon-oscillator.js +12 -1
  330. package/esm/indicators/aroon-oscillator.src.js +1 -1
  331. package/esm/indicators/aroon.js +12 -1
  332. package/esm/indicators/aroon.src.js +1 -1
  333. package/esm/indicators/atr.js +12 -1
  334. package/esm/indicators/atr.src.js +1 -1
  335. package/esm/indicators/bollinger-bands.js +12 -1
  336. package/esm/indicators/bollinger-bands.src.js +1 -1
  337. package/esm/indicators/cci.js +12 -1
  338. package/esm/indicators/cci.src.js +1 -1
  339. package/esm/indicators/chaikin.js +12 -1
  340. package/esm/indicators/chaikin.src.js +1 -1
  341. package/esm/indicators/cmf.js +11 -1
  342. package/esm/indicators/cmf.src.js +1 -1
  343. package/esm/indicators/cmo.js +12 -1
  344. package/esm/indicators/cmo.src.js +1 -1
  345. package/esm/indicators/dema.js +12 -1
  346. package/esm/indicators/dema.src.js +1 -1
  347. package/esm/indicators/disparity-index.js +12 -1
  348. package/esm/indicators/disparity-index.src.js +1 -1
  349. package/esm/indicators/dmi.js +12 -1
  350. package/esm/indicators/dmi.src.js +1 -1
  351. package/esm/indicators/dpo.js +12 -1
  352. package/esm/indicators/dpo.src.js +1 -1
  353. package/esm/indicators/ema.src.js +0 -3
  354. package/esm/indicators/ichimoku-kinko-hyo.js +12 -1
  355. package/esm/indicators/ichimoku-kinko-hyo.src.js +1 -1
  356. package/esm/indicators/indicators-all.js +12 -1
  357. package/esm/indicators/indicators-all.src.js +2 -2
  358. package/esm/indicators/indicators.js +12 -1
  359. package/esm/indicators/indicators.src.js +1 -1
  360. package/esm/indicators/keltner-channels.js +12 -1
  361. package/esm/indicators/keltner-channels.src.js +1 -1
  362. package/esm/indicators/klinger.js +12 -1
  363. package/esm/indicators/klinger.src.js +1 -1
  364. package/esm/indicators/macd.js +12 -1
  365. package/esm/indicators/macd.src.js +2 -2
  366. package/esm/indicators/mfi.js +12 -1
  367. package/esm/indicators/mfi.src.js +1 -1
  368. package/esm/indicators/momentum.js +12 -1
  369. package/esm/indicators/momentum.src.js +1 -1
  370. package/esm/indicators/natr.js +12 -1
  371. package/esm/indicators/natr.src.js +1 -1
  372. package/esm/indicators/obv.js +12 -1
  373. package/esm/indicators/obv.src.js +1 -1
  374. package/esm/indicators/pivot-points.js +12 -1
  375. package/esm/indicators/pivot-points.src.js +1 -1
  376. package/esm/indicators/ppo.js +12 -1
  377. package/esm/indicators/ppo.src.js +1 -1
  378. package/esm/indicators/price-channel.js +12 -1
  379. package/esm/indicators/price-channel.src.js +1 -1
  380. package/esm/indicators/price-envelopes.js +12 -1
  381. package/esm/indicators/price-envelopes.src.js +1 -1
  382. package/esm/indicators/psar.js +12 -1
  383. package/esm/indicators/psar.src.js +1 -1
  384. package/esm/indicators/regressions.js +12 -1
  385. package/esm/indicators/regressions.src.js +1 -1
  386. package/esm/indicators/roc.js +12 -1
  387. package/esm/indicators/roc.src.js +1 -1
  388. package/esm/indicators/rsi.js +12 -1
  389. package/esm/indicators/rsi.src.js +1 -1
  390. package/esm/indicators/slow-stochastic.js +12 -1
  391. package/esm/indicators/slow-stochastic.src.js +1 -1
  392. package/esm/indicators/stochastic.js +12 -1
  393. package/esm/indicators/stochastic.src.js +1 -1
  394. package/esm/indicators/supertrend.js +12 -1
  395. package/esm/indicators/supertrend.src.js +1 -1
  396. package/esm/indicators/tema.js +12 -1
  397. package/esm/indicators/tema.src.js +1 -1
  398. package/esm/indicators/trendline.js +12 -1
  399. package/esm/indicators/trendline.src.js +1 -1
  400. package/esm/indicators/trix.js +12 -1
  401. package/esm/indicators/trix.src.js +1 -1
  402. package/esm/indicators/volume-by-price.js +12 -1
  403. package/esm/indicators/volume-by-price.src.js +1 -1
  404. package/esm/indicators/vwap.js +12 -1
  405. package/esm/indicators/vwap.src.js +1 -1
  406. package/esm/indicators/williams-r.js +12 -1
  407. package/esm/indicators/williams-r.src.js +1 -1
  408. package/esm/indicators/wma.js +12 -1
  409. package/esm/indicators/wma.src.js +1 -1
  410. package/esm/indicators/zigzag.js +12 -1
  411. package/esm/indicators/zigzag.src.js +1 -1
  412. package/esm/modules/accessibility.js +12 -1
  413. package/esm/modules/accessibility.src.js +92 -63
  414. package/esm/modules/annotations-advanced.js +11 -1
  415. package/esm/modules/annotations-advanced.src.js +872 -778
  416. package/esm/modules/annotations.js +11 -1
  417. package/esm/modules/annotations.src.js +95 -43
  418. package/esm/modules/arc-diagram.js +11 -1
  419. package/esm/modules/arc-diagram.src.js +3 -3
  420. package/esm/modules/arrow-symbols.js +11 -1
  421. package/esm/modules/arrow-symbols.src.js +1 -1
  422. package/esm/modules/boost-canvas.js +12 -1
  423. package/esm/modules/boost-canvas.src.js +102 -53
  424. package/esm/modules/boost.js +13 -1
  425. package/esm/modules/boost.src.js +107 -49
  426. package/esm/modules/broken-axis.js +9 -1
  427. package/esm/modules/broken-axis.src.js +115 -91
  428. package/esm/modules/bullet.js +11 -1
  429. package/esm/modules/bullet.src.js +1 -1
  430. package/esm/modules/coloraxis.js +11 -1
  431. package/esm/modules/coloraxis.src.js +6 -7
  432. package/esm/modules/current-date-indicator.js +11 -1
  433. package/esm/modules/current-date-indicator.src.js +1 -1
  434. package/esm/modules/cylinder.js +12 -1
  435. package/esm/modules/cylinder.src.js +1 -1
  436. package/esm/modules/data-tools.js +11 -1
  437. package/esm/modules/data-tools.src.js +542 -125
  438. package/esm/modules/data.js +11 -1
  439. package/esm/modules/data.src.js +46 -39
  440. package/esm/modules/datagrouping.js +11 -1
  441. package/esm/modules/datagrouping.src.js +1 -1
  442. package/esm/modules/debugger.js +11 -1
  443. package/esm/modules/debugger.src.js +1 -1
  444. package/esm/modules/dependency-wheel.js +12 -1
  445. package/esm/modules/dependency-wheel.src.js +3 -3
  446. package/esm/modules/dotplot.js +11 -1
  447. package/esm/modules/dotplot.src.js +1 -1
  448. package/esm/modules/drag-panes.js +13 -1
  449. package/esm/modules/drag-panes.src.js +1 -1
  450. package/esm/modules/draggable-points.js +9 -1
  451. package/esm/modules/draggable-points.src.js +1 -1
  452. package/esm/modules/drilldown.js +13 -1
  453. package/esm/modules/drilldown.src.js +4 -2
  454. package/esm/modules/dumbbell.js +9 -1
  455. package/esm/modules/dumbbell.src.js +1 -1
  456. package/esm/modules/export-data.js +12 -1
  457. package/esm/modules/export-data.src.js +985 -799
  458. package/esm/modules/exporting.js +11 -1
  459. package/esm/modules/exporting.src.js +1453 -634
  460. package/esm/modules/flowmap.js +9 -1
  461. package/esm/modules/flowmap.src.js +1 -1
  462. package/esm/modules/full-screen.js +12 -1
  463. package/esm/modules/full-screen.src.js +3 -3
  464. package/esm/modules/funnel.js +11 -1
  465. package/esm/modules/funnel.src.js +7 -3
  466. package/esm/modules/funnel3d.js +13 -1
  467. package/esm/modules/funnel3d.src.js +1 -1
  468. package/esm/modules/gantt.js +11 -1
  469. package/esm/modules/gantt.src.js +254 -212
  470. package/esm/modules/geoheatmap.js +9 -1
  471. package/esm/modules/geoheatmap.src.js +1 -1
  472. package/esm/modules/grid-axis.js +11 -1
  473. package/esm/modules/grid-axis.src.js +1 -1
  474. package/esm/modules/heatmap.js +9 -1
  475. package/esm/modules/heatmap.src.js +2 -3
  476. package/esm/modules/heikinashi.js +12 -1
  477. package/esm/modules/heikinashi.src.js +1 -1
  478. package/esm/modules/histogram-bellcurve.js +10 -1
  479. package/esm/modules/histogram-bellcurve.src.js +36 -27
  480. package/esm/modules/hollowcandlestick.js +12 -1
  481. package/esm/modules/hollowcandlestick.src.js +1 -1
  482. package/esm/modules/item-series.js +11 -1
  483. package/esm/modules/item-series.src.js +3 -5
  484. package/esm/modules/lollipop.js +9 -1
  485. package/esm/modules/lollipop.src.js +1 -1
  486. package/esm/modules/map.js +11 -1
  487. package/esm/modules/map.src.js +5 -6
  488. package/esm/modules/marker-clusters.js +11 -1
  489. package/esm/modules/marker-clusters.src.js +1 -1
  490. package/esm/modules/mouse-wheel-zoom.js +11 -1
  491. package/esm/modules/mouse-wheel-zoom.src.js +1 -1
  492. package/esm/modules/navigator.js +11 -1
  493. package/esm/modules/navigator.src.js +29 -29
  494. package/esm/modules/networkgraph.js +11 -1
  495. package/esm/modules/networkgraph.src.js +16 -4
  496. package/esm/modules/no-data-to-display.js +12 -1
  497. package/esm/modules/no-data-to-display.src.js +1 -1
  498. package/esm/modules/non-cartesian-zoom.d.ts +2 -0
  499. package/esm/modules/non-cartesian-zoom.js +11 -0
  500. package/esm/modules/non-cartesian-zoom.src.d.ts +2 -0
  501. package/esm/modules/non-cartesian-zoom.src.js +374 -0
  502. package/esm/modules/offline-exporting.js +12 -1
  503. package/esm/modules/offline-exporting.src.js +339 -3363
  504. package/esm/modules/organization.js +11 -1
  505. package/esm/modules/organization.src.js +3 -3
  506. package/esm/modules/parallel-coordinates.js +11 -1
  507. package/esm/modules/parallel-coordinates.src.js +1 -1
  508. package/esm/modules/pareto.js +11 -1
  509. package/esm/modules/pareto.src.js +1 -1
  510. package/esm/modules/pathfinder.js +11 -1
  511. package/esm/modules/pathfinder.src.js +1 -1
  512. package/esm/modules/pattern-fill.js +12 -1
  513. package/esm/modules/pattern-fill.src.js +1 -1
  514. package/esm/modules/pictorial.js +11 -1
  515. package/esm/modules/pictorial.src.js +1 -1
  516. package/esm/modules/pointandfigure.js +12 -1
  517. package/esm/modules/pointandfigure.src.js +1 -1
  518. package/esm/modules/price-indicator.js +13 -1
  519. package/esm/modules/price-indicator.src.js +1 -1
  520. package/esm/modules/pyramid3d.js +14 -1
  521. package/esm/modules/pyramid3d.src.js +1 -1
  522. package/esm/modules/renko.js +12 -1
  523. package/esm/modules/renko.src.js +1 -1
  524. package/esm/modules/sankey.js +11 -1
  525. package/esm/modules/sankey.src.js +3 -3
  526. package/esm/modules/series-label.js +9 -1
  527. package/esm/modules/series-label.src.js +1 -1
  528. package/esm/modules/series-on-point.js +12 -1
  529. package/esm/modules/series-on-point.src.js +1 -9
  530. package/esm/modules/solid-gauge.js +12 -1
  531. package/esm/modules/solid-gauge.src.js +27 -5
  532. package/esm/modules/sonification.js +12 -1
  533. package/esm/modules/sonification.src.js +45 -10
  534. package/esm/modules/static-scale.js +11 -1
  535. package/esm/modules/static-scale.src.js +14 -12
  536. package/esm/modules/stock-tools.js +13 -1
  537. package/esm/modules/stock-tools.src.js +37 -116
  538. package/esm/modules/stock.js +11 -1
  539. package/esm/modules/stock.src.js +98 -98
  540. package/esm/modules/streamgraph.js +11 -1
  541. package/esm/modules/streamgraph.src.js +1 -1
  542. package/esm/modules/sunburst.js +10 -1
  543. package/esm/modules/sunburst.src.js +9 -9
  544. package/esm/modules/textpath.js +9 -1
  545. package/esm/modules/textpath.src.js +3 -3
  546. package/esm/modules/tiledwebmap.js +10 -2
  547. package/esm/modules/tiledwebmap.src.js +1 -1
  548. package/esm/modules/tilemap.js +12 -1
  549. package/esm/modules/tilemap.src.js +1 -1
  550. package/esm/modules/timeline.js +12 -1
  551. package/esm/modules/timeline.src.js +1 -1
  552. package/esm/modules/treegraph.js +11 -1
  553. package/esm/modules/treegraph.src.js +16 -8
  554. package/esm/modules/treegrid.js +11 -1
  555. package/esm/modules/treegrid.src.js +190 -159
  556. package/esm/modules/treemap.js +10 -1
  557. package/esm/modules/treemap.src.js +7 -7
  558. package/esm/modules/variable-pie.js +11 -1
  559. package/esm/modules/variable-pie.src.js +1 -1
  560. package/esm/modules/variwide.js +11 -1
  561. package/esm/modules/variwide.src.js +18 -13
  562. package/esm/modules/vector.js +11 -1
  563. package/esm/modules/vector.src.js +1 -1
  564. package/esm/modules/venn.js +10 -1
  565. package/esm/modules/venn.src.js +5 -3
  566. package/esm/modules/windbarb.js +11 -1
  567. package/esm/modules/windbarb.src.js +1 -1
  568. package/esm/modules/wordcloud.js +10 -1
  569. package/esm/modules/wordcloud.src.js +89 -12
  570. package/esm/modules/xrange.js +11 -1
  571. package/esm/modules/xrange.src.js +3 -2
  572. package/esm/standalone-navigator.js +11 -2
  573. package/esm/standalone-navigator.src.js +312 -206
  574. package/esm/themes/adaptive.d.ts +2 -0
  575. package/esm/themes/adaptive.js +130 -0
  576. package/esm/themes/adaptive.src.d.ts +2 -0
  577. package/esm/themes/adaptive.src.js +1069 -0
  578. package/esm/themes/avocado.js +9 -1
  579. package/esm/themes/avocado.src.js +1 -1
  580. package/esm/themes/brand-dark.js +9 -1
  581. package/esm/themes/brand-dark.src.js +1 -1
  582. package/esm/themes/brand-light.js +9 -1
  583. package/esm/themes/brand-light.src.js +1 -1
  584. package/esm/themes/dark-blue.js +9 -1
  585. package/esm/themes/dark-blue.src.js +1 -1
  586. package/esm/themes/dark-green.js +9 -1
  587. package/esm/themes/dark-green.src.js +1 -1
  588. package/esm/themes/dark-unica.js +9 -1
  589. package/esm/themes/dark-unica.src.js +1 -1
  590. package/esm/themes/gray.js +9 -1
  591. package/esm/themes/gray.src.js +1 -1
  592. package/esm/themes/grid-light.js +9 -1
  593. package/esm/themes/grid-light.src.js +1 -1
  594. package/esm/themes/grid.js +9 -1
  595. package/esm/themes/grid.src.js +1 -1
  596. package/esm/themes/high-contrast-dark.js +9 -1
  597. package/esm/themes/high-contrast-dark.src.js +1 -1
  598. package/esm/themes/high-contrast-light.js +9 -1
  599. package/esm/themes/high-contrast-light.src.js +1 -1
  600. package/esm/themes/sand-signika.js +9 -1
  601. package/esm/themes/sand-signika.src.js +1 -1
  602. package/esm/themes/skies.js +9 -1
  603. package/esm/themes/skies.src.js +1 -1
  604. package/esm/themes/sunset.js +9 -1
  605. package/esm/themes/sunset.src.js +1 -1
  606. package/highcharts-3d.d.ts +1 -9
  607. package/highcharts-3d.js +11 -1
  608. package/highcharts-3d.src.d.ts +1 -9
  609. package/highcharts-3d.src.js +3 -4
  610. package/highcharts-gantt.js +15 -2
  611. package/highcharts-gantt.src.js +546 -392
  612. package/highcharts-more.d.ts +10 -9
  613. package/highcharts-more.js +9 -1
  614. package/highcharts-more.src.d.ts +10 -9
  615. package/highcharts-more.src.js +516 -57
  616. package/highcharts.d.ts +4526 -1522
  617. package/highcharts.js +9 -2
  618. package/highcharts.src.d.ts +4526 -1522
  619. package/highcharts.src.js +273 -168
  620. package/highmaps.js +9 -2
  621. package/highmaps.src.js +294 -191
  622. package/highstock.js +9 -2
  623. package/highstock.src.js +490 -361
  624. package/i18n/fr-FR.js +13 -1
  625. package/i18n/fr-FR.src.js +8 -8
  626. package/i18n/nb-NO.js +13 -1
  627. package/i18n/nb-NO.src.js +8 -8
  628. package/i18n/zh-CN.js +13 -1
  629. package/i18n/zh-CN.src.js +8 -8
  630. package/indicators/acceleration-bands.d.ts +1 -9
  631. package/indicators/acceleration-bands.js +12 -1
  632. package/indicators/acceleration-bands.src.d.ts +1 -9
  633. package/indicators/acceleration-bands.src.js +1 -1
  634. package/indicators/accumulation-distribution.d.ts +1 -9
  635. package/indicators/accumulation-distribution.js +12 -1
  636. package/indicators/accumulation-distribution.src.d.ts +1 -9
  637. package/indicators/accumulation-distribution.src.js +1 -1
  638. package/indicators/ao.d.ts +1 -9
  639. package/indicators/ao.js +12 -1
  640. package/indicators/ao.src.d.ts +1 -9
  641. package/indicators/ao.src.js +1 -1
  642. package/indicators/apo.d.ts +1 -9
  643. package/indicators/apo.js +12 -1
  644. package/indicators/apo.src.d.ts +1 -9
  645. package/indicators/apo.src.js +1 -1
  646. package/indicators/aroon-oscillator.d.ts +1 -9
  647. package/indicators/aroon-oscillator.js +12 -1
  648. package/indicators/aroon-oscillator.src.d.ts +1 -9
  649. package/indicators/aroon-oscillator.src.js +1 -1
  650. package/indicators/aroon.d.ts +1 -9
  651. package/indicators/aroon.js +12 -1
  652. package/indicators/aroon.src.d.ts +1 -9
  653. package/indicators/aroon.src.js +1 -1
  654. package/indicators/atr.d.ts +1 -9
  655. package/indicators/atr.js +12 -1
  656. package/indicators/atr.src.d.ts +1 -9
  657. package/indicators/atr.src.js +1 -1
  658. package/indicators/bollinger-bands.d.ts +1 -9
  659. package/indicators/bollinger-bands.js +12 -1
  660. package/indicators/bollinger-bands.src.d.ts +1 -9
  661. package/indicators/bollinger-bands.src.js +1 -1
  662. package/indicators/cci.d.ts +1 -9
  663. package/indicators/cci.js +12 -1
  664. package/indicators/cci.src.d.ts +1 -9
  665. package/indicators/cci.src.js +1 -1
  666. package/indicators/chaikin.d.ts +1 -9
  667. package/indicators/chaikin.js +12 -1
  668. package/indicators/chaikin.src.d.ts +1 -9
  669. package/indicators/chaikin.src.js +1 -1
  670. package/indicators/cmf.d.ts +1 -9
  671. package/indicators/cmf.js +11 -1
  672. package/indicators/cmf.src.d.ts +1 -9
  673. package/indicators/cmf.src.js +1 -1
  674. package/indicators/cmo.d.ts +1 -9
  675. package/indicators/cmo.js +12 -1
  676. package/indicators/cmo.src.d.ts +1 -9
  677. package/indicators/cmo.src.js +1 -1
  678. package/indicators/dema.d.ts +1 -9
  679. package/indicators/dema.js +12 -1
  680. package/indicators/dema.src.d.ts +1 -9
  681. package/indicators/dema.src.js +1 -1
  682. package/indicators/disparity-index.d.ts +1 -9
  683. package/indicators/disparity-index.js +12 -1
  684. package/indicators/disparity-index.src.d.ts +1 -9
  685. package/indicators/disparity-index.src.js +1 -1
  686. package/indicators/dmi.d.ts +1 -9
  687. package/indicators/dmi.js +12 -1
  688. package/indicators/dmi.src.d.ts +1 -9
  689. package/indicators/dmi.src.js +1 -1
  690. package/indicators/dpo.d.ts +1 -9
  691. package/indicators/dpo.js +12 -1
  692. package/indicators/dpo.src.d.ts +1 -9
  693. package/indicators/dpo.src.js +1 -1
  694. package/indicators/ema.d.ts +1 -9
  695. package/indicators/ema.src.d.ts +1 -9
  696. package/indicators/ema.src.js +3 -6
  697. package/indicators/ichimoku-kinko-hyo.d.ts +1 -9
  698. package/indicators/ichimoku-kinko-hyo.js +12 -1
  699. package/indicators/ichimoku-kinko-hyo.src.d.ts +1 -9
  700. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  701. package/indicators/indicators-all.d.ts +1 -9
  702. package/indicators/indicators-all.js +12 -1
  703. package/indicators/indicators-all.src.d.ts +1 -9
  704. package/indicators/indicators-all.src.js +2 -2
  705. package/indicators/indicators.d.ts +1 -9
  706. package/indicators/indicators.js +12 -1
  707. package/indicators/indicators.src.d.ts +1 -9
  708. package/indicators/indicators.src.js +1 -1
  709. package/indicators/keltner-channels.d.ts +1 -9
  710. package/indicators/keltner-channels.js +12 -1
  711. package/indicators/keltner-channels.src.d.ts +1 -9
  712. package/indicators/keltner-channels.src.js +1 -1
  713. package/indicators/klinger.d.ts +1 -9
  714. package/indicators/klinger.js +12 -1
  715. package/indicators/klinger.src.d.ts +1 -9
  716. package/indicators/klinger.src.js +1 -1
  717. package/indicators/macd.d.ts +1 -9
  718. package/indicators/macd.js +12 -1
  719. package/indicators/macd.src.d.ts +1 -9
  720. package/indicators/macd.src.js +2 -2
  721. package/indicators/mfi.d.ts +1 -9
  722. package/indicators/mfi.js +12 -1
  723. package/indicators/mfi.src.d.ts +1 -9
  724. package/indicators/mfi.src.js +1 -1
  725. package/indicators/momentum.d.ts +1 -9
  726. package/indicators/momentum.js +12 -1
  727. package/indicators/momentum.src.d.ts +1 -9
  728. package/indicators/momentum.src.js +1 -1
  729. package/indicators/natr.d.ts +1 -9
  730. package/indicators/natr.js +12 -1
  731. package/indicators/natr.src.d.ts +1 -9
  732. package/indicators/natr.src.js +1 -1
  733. package/indicators/obv.d.ts +1 -9
  734. package/indicators/obv.js +12 -1
  735. package/indicators/obv.src.d.ts +1 -9
  736. package/indicators/obv.src.js +1 -1
  737. package/indicators/pivot-points.d.ts +1 -9
  738. package/indicators/pivot-points.js +12 -1
  739. package/indicators/pivot-points.src.d.ts +1 -9
  740. package/indicators/pivot-points.src.js +1 -1
  741. package/indicators/ppo.d.ts +1 -9
  742. package/indicators/ppo.js +12 -1
  743. package/indicators/ppo.src.d.ts +1 -9
  744. package/indicators/ppo.src.js +1 -1
  745. package/indicators/price-channel.d.ts +1 -9
  746. package/indicators/price-channel.js +12 -1
  747. package/indicators/price-channel.src.d.ts +1 -9
  748. package/indicators/price-channel.src.js +1 -1
  749. package/indicators/price-envelopes.d.ts +1 -9
  750. package/indicators/price-envelopes.js +12 -1
  751. package/indicators/price-envelopes.src.d.ts +1 -9
  752. package/indicators/price-envelopes.src.js +1 -1
  753. package/indicators/psar.d.ts +1 -9
  754. package/indicators/psar.js +12 -1
  755. package/indicators/psar.src.d.ts +1 -9
  756. package/indicators/psar.src.js +1 -1
  757. package/indicators/regressions.d.ts +1 -9
  758. package/indicators/regressions.js +12 -1
  759. package/indicators/regressions.src.d.ts +1 -9
  760. package/indicators/regressions.src.js +1 -1
  761. package/indicators/roc.d.ts +1 -9
  762. package/indicators/roc.js +12 -1
  763. package/indicators/roc.src.d.ts +1 -9
  764. package/indicators/roc.src.js +1 -1
  765. package/indicators/rsi.d.ts +1 -9
  766. package/indicators/rsi.js +12 -1
  767. package/indicators/rsi.src.d.ts +1 -9
  768. package/indicators/rsi.src.js +1 -1
  769. package/indicators/slow-stochastic.d.ts +1 -9
  770. package/indicators/slow-stochastic.js +12 -1
  771. package/indicators/slow-stochastic.src.d.ts +1 -9
  772. package/indicators/slow-stochastic.src.js +1 -1
  773. package/indicators/stochastic.d.ts +1 -9
  774. package/indicators/stochastic.js +12 -1
  775. package/indicators/stochastic.src.d.ts +1 -9
  776. package/indicators/stochastic.src.js +1 -1
  777. package/indicators/supertrend.d.ts +1 -9
  778. package/indicators/supertrend.js +12 -1
  779. package/indicators/supertrend.src.d.ts +1 -9
  780. package/indicators/supertrend.src.js +1 -1
  781. package/indicators/tema.d.ts +1 -9
  782. package/indicators/tema.js +12 -1
  783. package/indicators/tema.src.d.ts +1 -9
  784. package/indicators/tema.src.js +1 -1
  785. package/indicators/trendline.d.ts +1 -9
  786. package/indicators/trendline.js +12 -1
  787. package/indicators/trendline.src.d.ts +1 -9
  788. package/indicators/trendline.src.js +1 -1
  789. package/indicators/trix.d.ts +1 -9
  790. package/indicators/trix.js +12 -1
  791. package/indicators/trix.src.d.ts +1 -9
  792. package/indicators/trix.src.js +1 -1
  793. package/indicators/volume-by-price.d.ts +1 -9
  794. package/indicators/volume-by-price.js +12 -1
  795. package/indicators/volume-by-price.src.d.ts +1 -9
  796. package/indicators/volume-by-price.src.js +1 -1
  797. package/indicators/vwap.d.ts +1 -9
  798. package/indicators/vwap.js +12 -1
  799. package/indicators/vwap.src.d.ts +1 -9
  800. package/indicators/vwap.src.js +1 -1
  801. package/indicators/williams-r.d.ts +1 -9
  802. package/indicators/williams-r.js +12 -1
  803. package/indicators/williams-r.src.d.ts +1 -9
  804. package/indicators/williams-r.src.js +1 -1
  805. package/indicators/wma.d.ts +1 -9
  806. package/indicators/wma.js +12 -1
  807. package/indicators/wma.src.d.ts +1 -9
  808. package/indicators/wma.src.js +1 -1
  809. package/indicators/zigzag.d.ts +1 -9
  810. package/indicators/zigzag.js +12 -1
  811. package/indicators/zigzag.src.d.ts +1 -9
  812. package/indicators/zigzag.src.js +1 -1
  813. package/modules/accessibility.d.ts +1 -11
  814. package/modules/accessibility.js +12 -1
  815. package/modules/accessibility.src.d.ts +1 -11
  816. package/modules/accessibility.src.js +92 -63
  817. package/modules/annotations-advanced.d.ts +1 -9
  818. package/modules/annotations-advanced.js +21 -1
  819. package/modules/annotations-advanced.src.d.ts +1 -9
  820. package/modules/annotations-advanced.src.js +888 -794
  821. package/modules/annotations.d.ts +1 -9
  822. package/modules/annotations.js +11 -1
  823. package/modules/annotations.src.d.ts +1 -9
  824. package/modules/annotations.src.js +95 -43
  825. package/modules/arc-diagram.d.ts +1 -9
  826. package/modules/arc-diagram.js +11 -1
  827. package/modules/arc-diagram.src.d.ts +1 -9
  828. package/modules/arc-diagram.src.js +3 -3
  829. package/modules/arrow-symbols.d.ts +1 -9
  830. package/modules/arrow-symbols.js +11 -1
  831. package/modules/arrow-symbols.src.d.ts +1 -9
  832. package/modules/arrow-symbols.src.js +1 -1
  833. package/modules/boost-canvas.d.ts +1 -9
  834. package/modules/boost-canvas.js +12 -1
  835. package/modules/boost-canvas.src.d.ts +1 -9
  836. package/modules/boost-canvas.src.js +102 -53
  837. package/modules/boost.d.ts +1 -9
  838. package/modules/boost.js +13 -1
  839. package/modules/boost.src.d.ts +1 -9
  840. package/modules/boost.src.js +107 -49
  841. package/modules/broken-axis.d.ts +1 -9
  842. package/modules/broken-axis.js +9 -1
  843. package/modules/broken-axis.src.d.ts +1 -9
  844. package/modules/broken-axis.src.js +115 -91
  845. package/modules/bullet.d.ts +1 -9
  846. package/modules/bullet.js +11 -1
  847. package/modules/bullet.src.d.ts +1 -9
  848. package/modules/bullet.src.js +1 -1
  849. package/modules/coloraxis.d.ts +1 -9
  850. package/modules/coloraxis.js +11 -1
  851. package/modules/coloraxis.src.d.ts +1 -9
  852. package/modules/coloraxis.src.js +6 -7
  853. package/modules/current-date-indicator.d.ts +1 -9
  854. package/modules/current-date-indicator.js +11 -1
  855. package/modules/current-date-indicator.src.d.ts +1 -9
  856. package/modules/current-date-indicator.src.js +1 -1
  857. package/modules/cylinder.d.ts +1 -9
  858. package/modules/cylinder.js +12 -1
  859. package/modules/cylinder.src.d.ts +1 -9
  860. package/modules/cylinder.src.js +1 -1
  861. package/modules/data-tools.js +11 -1
  862. package/modules/data-tools.src.js +542 -125
  863. package/modules/data.d.ts +1 -9
  864. package/modules/data.js +11 -1
  865. package/modules/data.src.d.ts +1 -9
  866. package/modules/data.src.js +46 -39
  867. package/modules/datagrouping.d.ts +1 -9
  868. package/modules/datagrouping.js +11 -1
  869. package/modules/datagrouping.src.d.ts +1 -9
  870. package/modules/datagrouping.src.js +1 -1
  871. package/modules/debugger.d.ts +1 -9
  872. package/modules/debugger.js +11 -1
  873. package/modules/debugger.src.d.ts +1 -9
  874. package/modules/debugger.src.js +1 -1
  875. package/modules/dependency-wheel.d.ts +1 -9
  876. package/modules/dependency-wheel.js +12 -1
  877. package/modules/dependency-wheel.src.d.ts +1 -9
  878. package/modules/dependency-wheel.src.js +3 -3
  879. package/modules/dotplot.d.ts +1 -9
  880. package/modules/dotplot.js +11 -1
  881. package/modules/dotplot.src.d.ts +1 -9
  882. package/modules/dotplot.src.js +1 -1
  883. package/modules/drag-panes.d.ts +1 -9
  884. package/modules/drag-panes.js +13 -1
  885. package/modules/drag-panes.src.d.ts +1 -9
  886. package/modules/drag-panes.src.js +1 -1
  887. package/modules/draggable-points.d.ts +1 -9
  888. package/modules/draggable-points.js +9 -1
  889. package/modules/draggable-points.src.d.ts +1 -9
  890. package/modules/draggable-points.src.js +1 -1
  891. package/modules/drilldown.d.ts +1 -9
  892. package/modules/drilldown.js +13 -1
  893. package/modules/drilldown.src.d.ts +1 -9
  894. package/modules/drilldown.src.js +4 -2
  895. package/modules/dumbbell.d.ts +1 -9
  896. package/modules/dumbbell.js +9 -1
  897. package/modules/dumbbell.src.d.ts +1 -9
  898. package/modules/dumbbell.src.js +1 -1
  899. package/modules/export-data.d.ts +2 -79
  900. package/modules/export-data.js +12 -1
  901. package/modules/export-data.src.d.ts +2 -79
  902. package/modules/export-data.src.js +997 -804
  903. package/modules/exporting.d.ts +35 -21
  904. package/modules/exporting.js +11 -1
  905. package/modules/exporting.src.d.ts +35 -21
  906. package/modules/exporting.src.js +1452 -628
  907. package/modules/flowmap.d.ts +1 -9
  908. package/modules/flowmap.js +9 -1
  909. package/modules/flowmap.src.d.ts +1 -9
  910. package/modules/flowmap.src.js +1 -1
  911. package/modules/full-screen.d.ts +1 -9
  912. package/modules/full-screen.js +12 -1
  913. package/modules/full-screen.src.d.ts +1 -9
  914. package/modules/full-screen.src.js +3 -3
  915. package/modules/funnel.d.ts +1 -9
  916. package/modules/funnel.js +11 -1
  917. package/modules/funnel.src.d.ts +1 -9
  918. package/modules/funnel.src.js +7 -3
  919. package/modules/funnel3d.d.ts +1 -9
  920. package/modules/funnel3d.js +13 -1
  921. package/modules/funnel3d.src.d.ts +1 -9
  922. package/modules/funnel3d.src.js +1 -1
  923. package/modules/gantt.d.ts +1 -9
  924. package/modules/gantt.js +31 -1
  925. package/modules/gantt.src.d.ts +1 -9
  926. package/modules/gantt.src.js +273 -230
  927. package/modules/geoheatmap.d.ts +1 -9
  928. package/modules/geoheatmap.js +9 -1
  929. package/modules/geoheatmap.src.d.ts +1 -9
  930. package/modules/geoheatmap.src.js +1 -1
  931. package/modules/grid-axis.d.ts +1 -9
  932. package/modules/grid-axis.js +11 -1
  933. package/modules/grid-axis.src.d.ts +1 -9
  934. package/modules/grid-axis.src.js +1 -1
  935. package/modules/heatmap.d.ts +1 -9
  936. package/modules/heatmap.js +19 -1
  937. package/modules/heatmap.src.d.ts +1 -9
  938. package/modules/heatmap.src.js +21 -23
  939. package/modules/heikinashi.d.ts +1 -9
  940. package/modules/heikinashi.js +12 -1
  941. package/modules/heikinashi.src.d.ts +1 -9
  942. package/modules/heikinashi.src.js +1 -1
  943. package/modules/histogram-bellcurve.d.ts +2 -11
  944. package/modules/histogram-bellcurve.js +10 -1
  945. package/modules/histogram-bellcurve.src.d.ts +2 -11
  946. package/modules/histogram-bellcurve.src.js +36 -27
  947. package/modules/hollowcandlestick.d.ts +1 -9
  948. package/modules/hollowcandlestick.js +12 -1
  949. package/modules/hollowcandlestick.src.d.ts +1 -9
  950. package/modules/hollowcandlestick.src.js +1 -1
  951. package/modules/item-series.d.ts +1 -9
  952. package/modules/item-series.js +11 -1
  953. package/modules/item-series.src.d.ts +1 -9
  954. package/modules/item-series.src.js +3 -5
  955. package/modules/lollipop.d.ts +1 -9
  956. package/modules/lollipop.js +9 -1
  957. package/modules/lollipop.src.d.ts +1 -9
  958. package/modules/lollipop.src.js +1 -1
  959. package/modules/map.d.ts +1 -9
  960. package/modules/map.js +21 -1
  961. package/modules/map.src.d.ts +1 -9
  962. package/modules/map.src.js +25 -27
  963. package/modules/marker-clusters.d.ts +1 -9
  964. package/modules/marker-clusters.js +11 -1
  965. package/modules/marker-clusters.src.d.ts +1 -9
  966. package/modules/marker-clusters.src.js +1 -1
  967. package/modules/mouse-wheel-zoom.d.ts +1 -9
  968. package/modules/mouse-wheel-zoom.js +11 -1
  969. package/modules/mouse-wheel-zoom.src.d.ts +1 -9
  970. package/modules/mouse-wheel-zoom.src.js +1 -1
  971. package/modules/navigator.d.ts +1 -9
  972. package/modules/navigator.js +11 -1
  973. package/modules/navigator.src.d.ts +1 -9
  974. package/modules/navigator.src.js +29 -29
  975. package/modules/networkgraph.d.ts +1 -9
  976. package/modules/networkgraph.js +11 -1
  977. package/modules/networkgraph.src.d.ts +1 -9
  978. package/modules/networkgraph.src.js +16 -4
  979. package/modules/no-data-to-display.d.ts +1 -9
  980. package/modules/no-data-to-display.js +12 -1
  981. package/modules/no-data-to-display.src.d.ts +1 -9
  982. package/modules/no-data-to-display.src.js +1 -1
  983. package/modules/non-cartesian-zoom.d.ts +9 -0
  984. package/modules/non-cartesian-zoom.js +11 -0
  985. package/modules/non-cartesian-zoom.src.d.ts +9 -0
  986. package/modules/non-cartesian-zoom.src.js +427 -0
  987. package/modules/offline-exporting.d.ts +2 -90
  988. package/modules/offline-exporting.js +12 -1
  989. package/modules/offline-exporting.src.d.ts +2 -90
  990. package/modules/offline-exporting.src.js +355 -3380
  991. package/modules/organization.d.ts +1 -9
  992. package/modules/organization.js +11 -1
  993. package/modules/organization.src.d.ts +1 -9
  994. package/modules/organization.src.js +3 -3
  995. package/modules/parallel-coordinates.d.ts +1 -9
  996. package/modules/parallel-coordinates.js +11 -1
  997. package/modules/parallel-coordinates.src.d.ts +1 -9
  998. package/modules/parallel-coordinates.src.js +1 -1
  999. package/modules/pareto.d.ts +1 -9
  1000. package/modules/pareto.js +11 -1
  1001. package/modules/pareto.src.d.ts +1 -9
  1002. package/modules/pareto.src.js +1 -1
  1003. package/modules/pathfinder.d.ts +1 -9
  1004. package/modules/pathfinder.js +11 -1
  1005. package/modules/pathfinder.src.d.ts +1 -9
  1006. package/modules/pathfinder.src.js +1 -1
  1007. package/modules/pattern-fill.d.ts +1 -9
  1008. package/modules/pattern-fill.js +12 -1
  1009. package/modules/pattern-fill.src.d.ts +1 -9
  1010. package/modules/pattern-fill.src.js +1 -1
  1011. package/modules/pictorial.d.ts +1 -9
  1012. package/modules/pictorial.js +11 -1
  1013. package/modules/pictorial.src.d.ts +1 -9
  1014. package/modules/pictorial.src.js +1 -1
  1015. package/modules/pointandfigure.d.ts +1 -9
  1016. package/modules/pointandfigure.js +12 -1
  1017. package/modules/pointandfigure.src.d.ts +1 -9
  1018. package/modules/pointandfigure.src.js +1 -1
  1019. package/modules/price-indicator.d.ts +1 -9
  1020. package/modules/price-indicator.js +13 -1
  1021. package/modules/price-indicator.src.d.ts +1 -9
  1022. package/modules/price-indicator.src.js +1 -1
  1023. package/modules/pyramid3d.d.ts +1 -9
  1024. package/modules/pyramid3d.js +14 -1
  1025. package/modules/pyramid3d.src.d.ts +1 -9
  1026. package/modules/pyramid3d.src.js +1 -1
  1027. package/modules/renko.d.ts +1 -9
  1028. package/modules/renko.js +12 -1
  1029. package/modules/renko.src.d.ts +1 -9
  1030. package/modules/renko.src.js +1 -1
  1031. package/modules/sankey.d.ts +1 -9
  1032. package/modules/sankey.js +11 -1
  1033. package/modules/sankey.src.d.ts +1 -9
  1034. package/modules/sankey.src.js +3 -3
  1035. package/modules/series-label.d.ts +1 -9
  1036. package/modules/series-label.js +9 -1
  1037. package/modules/series-label.src.d.ts +1 -9
  1038. package/modules/series-label.src.js +1 -1
  1039. package/modules/series-on-point.d.ts +1 -9
  1040. package/modules/series-on-point.js +12 -1
  1041. package/modules/series-on-point.src.d.ts +1 -9
  1042. package/modules/series-on-point.src.js +6 -16
  1043. package/modules/solid-gauge.d.ts +1 -9
  1044. package/modules/solid-gauge.js +12 -1
  1045. package/modules/solid-gauge.src.d.ts +1 -9
  1046. package/modules/solid-gauge.src.js +27 -5
  1047. package/modules/sonification.d.ts +1 -9
  1048. package/modules/sonification.js +12 -1
  1049. package/modules/sonification.src.d.ts +1 -9
  1050. package/modules/sonification.src.js +45 -10
  1051. package/modules/static-scale.d.ts +1 -9
  1052. package/modules/static-scale.js +11 -1
  1053. package/modules/static-scale.src.d.ts +1 -9
  1054. package/modules/static-scale.src.js +14 -12
  1055. package/modules/stock-tools.d.ts +1 -9
  1056. package/modules/stock-tools.js +13 -1
  1057. package/modules/stock-tools.src.d.ts +1 -9
  1058. package/modules/stock-tools.src.js +37 -116
  1059. package/modules/stock.d.ts +1 -9
  1060. package/modules/stock.js +21 -1
  1061. package/modules/stock.src.d.ts +1 -9
  1062. package/modules/stock.src.js +233 -209
  1063. package/modules/streamgraph.d.ts +1 -9
  1064. package/modules/streamgraph.js +11 -1
  1065. package/modules/streamgraph.src.d.ts +1 -9
  1066. package/modules/streamgraph.src.js +1 -1
  1067. package/modules/sunburst.d.ts +1 -9
  1068. package/modules/sunburst.js +10 -1
  1069. package/modules/sunburst.src.d.ts +1 -9
  1070. package/modules/sunburst.src.js +9 -9
  1071. package/modules/textpath.d.ts +1 -9
  1072. package/modules/textpath.js +9 -1
  1073. package/modules/textpath.src.d.ts +1 -9
  1074. package/modules/textpath.src.js +3 -3
  1075. package/modules/tiledwebmap.d.ts +1 -9
  1076. package/modules/tiledwebmap.js +10 -2
  1077. package/modules/tiledwebmap.src.d.ts +1 -9
  1078. package/modules/tiledwebmap.src.js +1 -1
  1079. package/modules/tilemap.d.ts +1 -9
  1080. package/modules/tilemap.js +12 -1
  1081. package/modules/tilemap.src.d.ts +1 -9
  1082. package/modules/tilemap.src.js +1 -1
  1083. package/modules/timeline.d.ts +1 -9
  1084. package/modules/timeline.js +12 -1
  1085. package/modules/timeline.src.d.ts +1 -9
  1086. package/modules/timeline.src.js +1 -1
  1087. package/modules/treegraph.d.ts +1 -9
  1088. package/modules/treegraph.js +11 -1
  1089. package/modules/treegraph.src.d.ts +1 -9
  1090. package/modules/treegraph.src.js +16 -8
  1091. package/modules/treegrid.d.ts +1 -9
  1092. package/modules/treegrid.js +11 -1
  1093. package/modules/treegrid.src.d.ts +1 -9
  1094. package/modules/treegrid.src.js +190 -159
  1095. package/modules/treemap.d.ts +1 -9
  1096. package/modules/treemap.js +10 -1
  1097. package/modules/treemap.src.d.ts +1 -9
  1098. package/modules/treemap.src.js +7 -7
  1099. package/modules/variable-pie.d.ts +1 -9
  1100. package/modules/variable-pie.js +11 -1
  1101. package/modules/variable-pie.src.d.ts +1 -9
  1102. package/modules/variable-pie.src.js +1 -1
  1103. package/modules/variwide.d.ts +1 -9
  1104. package/modules/variwide.js +11 -1
  1105. package/modules/variwide.src.d.ts +1 -9
  1106. package/modules/variwide.src.js +18 -13
  1107. package/modules/vector.d.ts +1 -9
  1108. package/modules/vector.js +11 -1
  1109. package/modules/vector.src.d.ts +1 -9
  1110. package/modules/vector.src.js +1 -1
  1111. package/modules/venn.d.ts +1 -9
  1112. package/modules/venn.js +10 -1
  1113. package/modules/venn.src.d.ts +1 -9
  1114. package/modules/venn.src.js +5 -3
  1115. package/modules/windbarb.d.ts +1 -9
  1116. package/modules/windbarb.js +11 -1
  1117. package/modules/windbarb.src.d.ts +1 -9
  1118. package/modules/windbarb.src.js +1 -1
  1119. package/modules/wordcloud.d.ts +1 -9
  1120. package/modules/wordcloud.js +10 -1
  1121. package/modules/wordcloud.src.d.ts +1 -9
  1122. package/modules/wordcloud.src.js +89 -12
  1123. package/modules/xrange.d.ts +1 -9
  1124. package/modules/xrange.js +11 -1
  1125. package/modules/xrange.src.d.ts +1 -9
  1126. package/modules/xrange.src.js +3 -2
  1127. package/options/abands.d.ts +8 -0
  1128. package/options/abands.src.d.ts +8 -0
  1129. package/options/ao.d.ts +8 -0
  1130. package/options/ao.src.d.ts +8 -0
  1131. package/options/arcdiagram.d.ts +8 -0
  1132. package/options/arcdiagram.src.d.ts +8 -0
  1133. package/options/area.d.ts +9 -0
  1134. package/options/area.src.d.ts +9 -0
  1135. package/options/arearange.d.ts +9 -0
  1136. package/options/arearange.src.d.ts +9 -0
  1137. package/options/areaspline.d.ts +9 -0
  1138. package/options/areaspline.src.d.ts +9 -0
  1139. package/options/areasplinerange.d.ts +9 -0
  1140. package/options/areasplinerange.src.d.ts +9 -0
  1141. package/options/aroon.d.ts +8 -0
  1142. package/options/aroon.src.d.ts +8 -0
  1143. package/options/atr.d.ts +8 -0
  1144. package/options/atr.src.d.ts +8 -0
  1145. package/options/bellcurve.d.ts +8 -0
  1146. package/options/bellcurve.src.d.ts +8 -0
  1147. package/options/boxplot.d.ts +8 -0
  1148. package/options/boxplot.src.d.ts +8 -0
  1149. package/options/bullet.d.ts +8 -0
  1150. package/options/bullet.src.d.ts +8 -0
  1151. package/options/chaikin.d.ts +8 -0
  1152. package/options/chaikin.src.d.ts +8 -0
  1153. package/options/cmo.d.ts +8 -0
  1154. package/options/cmo.src.d.ts +8 -0
  1155. package/options/columnpyramid.d.ts +9 -0
  1156. package/options/columnpyramid.src.d.ts +9 -0
  1157. package/options/columnrange.d.ts +9 -0
  1158. package/options/columnrange.src.d.ts +9 -0
  1159. package/options/dmi.d.ts +8 -0
  1160. package/options/dmi.src.d.ts +8 -0
  1161. package/options/errorbar.d.ts +8 -0
  1162. package/options/errorbar.src.d.ts +8 -0
  1163. package/options/flags.d.ts +8 -0
  1164. package/options/flags.src.d.ts +8 -0
  1165. package/options/funnel.d.ts +8 -0
  1166. package/options/funnel.src.d.ts +8 -0
  1167. package/options/gauge.d.ts +8 -0
  1168. package/options/gauge.src.d.ts +8 -0
  1169. package/options/item.d.ts +8 -0
  1170. package/options/item.src.d.ts +8 -0
  1171. package/options/keltnerchannels.d.ts +8 -0
  1172. package/options/keltnerchannels.src.d.ts +8 -0
  1173. package/options/line.d.ts +9 -0
  1174. package/options/line.src.d.ts +9 -0
  1175. package/options/linearregressionangle.d.ts +8 -0
  1176. package/options/linearregressionangle.src.d.ts +8 -0
  1177. package/options/linearregressionintercept.d.ts +8 -0
  1178. package/options/linearregressionintercept.src.d.ts +8 -0
  1179. package/options/map.d.ts +8 -0
  1180. package/options/map.src.d.ts +8 -0
  1181. package/options/mfi.d.ts +8 -0
  1182. package/options/mfi.src.d.ts +8 -0
  1183. package/options/natr.d.ts +8 -0
  1184. package/options/natr.src.d.ts +8 -0
  1185. package/options/ohlc.d.ts +8 -0
  1186. package/options/ohlc.src.d.ts +8 -0
  1187. package/options/packedbubble.d.ts +8 -0
  1188. package/options/packedbubble.src.d.ts +8 -0
  1189. package/options/pictorial.d.ts +8 -0
  1190. package/options/pictorial.src.d.ts +8 -0
  1191. package/options/pointandfigure.d.ts +8 -0
  1192. package/options/pointandfigure.src.d.ts +8 -0
  1193. package/options/polygon.d.ts +9 -0
  1194. package/options/polygon.src.d.ts +9 -0
  1195. package/options/ppo.d.ts +8 -0
  1196. package/options/ppo.src.d.ts +8 -0
  1197. package/options/psar.d.ts +8 -0
  1198. package/options/psar.src.d.ts +8 -0
  1199. package/options/pyramid.d.ts +8 -0
  1200. package/options/pyramid.src.d.ts +8 -0
  1201. package/options/renko.d.ts +8 -0
  1202. package/options/renko.src.d.ts +8 -0
  1203. package/options/roc.d.ts +8 -0
  1204. package/options/roc.src.d.ts +8 -0
  1205. package/options/sankey.d.ts +8 -0
  1206. package/options/sankey.src.d.ts +8 -0
  1207. package/options/scatter.d.ts +9 -0
  1208. package/options/scatter.src.d.ts +9 -0
  1209. package/options/series.d.ts +9 -0
  1210. package/options/series.src.d.ts +9 -0
  1211. package/options/sma.d.ts +8 -0
  1212. package/options/sma.src.d.ts +8 -0
  1213. package/options/solidgauge.d.ts +14 -0
  1214. package/options/solidgauge.src.d.ts +14 -0
  1215. package/options/spline.d.ts +9 -0
  1216. package/options/spline.src.d.ts +9 -0
  1217. package/options/stochastic.d.ts +8 -0
  1218. package/options/stochastic.src.d.ts +8 -0
  1219. package/options/tema.d.ts +8 -0
  1220. package/options/tema.src.d.ts +8 -0
  1221. package/options/tiledwebmap.d.ts +8 -0
  1222. package/options/tiledwebmap.src.d.ts +8 -0
  1223. package/options/timeline.d.ts +8 -0
  1224. package/options/timeline.src.d.ts +8 -0
  1225. package/options/treegraph.d.ts +8 -0
  1226. package/options/treegraph.src.d.ts +8 -0
  1227. package/options/trix.d.ts +8 -0
  1228. package/options/trix.src.d.ts +8 -0
  1229. package/options/variablepie.d.ts +8 -0
  1230. package/options/variablepie.src.d.ts +8 -0
  1231. package/options/variwide.d.ts +8 -0
  1232. package/options/variwide.src.d.ts +8 -0
  1233. package/options/vbp.d.ts +8 -0
  1234. package/options/vbp.src.d.ts +8 -0
  1235. package/options/vector.d.ts +9 -0
  1236. package/options/vector.src.d.ts +9 -0
  1237. package/options/venn.d.ts +8 -0
  1238. package/options/venn.src.d.ts +8 -0
  1239. package/options/vwap.d.ts +8 -0
  1240. package/options/vwap.src.d.ts +8 -0
  1241. package/options/windbarb.d.ts +9 -0
  1242. package/options/windbarb.src.d.ts +9 -0
  1243. package/options/wma.d.ts +8 -0
  1244. package/options/wma.src.d.ts +8 -0
  1245. package/options/wordcloud.d.ts +8 -0
  1246. package/options/wordcloud.src.d.ts +8 -0
  1247. package/options/zigzag.d.ts +8 -0
  1248. package/options/zigzag.src.d.ts +8 -0
  1249. package/package.json +1 -1
  1250. package/standalone-navigator.js +11 -2
  1251. package/standalone-navigator.src.js +312 -206
  1252. package/themes/adaptive.d.ts +18 -0
  1253. package/themes/adaptive.js +130 -0
  1254. package/themes/adaptive.src.d.ts +18 -0
  1255. package/themes/adaptive.src.js +1122 -0
  1256. package/themes/avocado.d.ts +1 -9
  1257. package/themes/avocado.js +9 -1
  1258. package/themes/avocado.src.d.ts +1 -9
  1259. package/themes/avocado.src.js +1 -1
  1260. package/themes/brand-dark.d.ts +1 -9
  1261. package/themes/brand-dark.js +9 -1
  1262. package/themes/brand-dark.src.d.ts +1 -9
  1263. package/themes/brand-dark.src.js +1 -1
  1264. package/themes/brand-light.d.ts +1 -9
  1265. package/themes/brand-light.js +9 -1
  1266. package/themes/brand-light.src.d.ts +1 -9
  1267. package/themes/brand-light.src.js +1 -1
  1268. package/themes/dark-blue.d.ts +1 -9
  1269. package/themes/dark-blue.js +9 -1
  1270. package/themes/dark-blue.src.d.ts +1 -9
  1271. package/themes/dark-blue.src.js +1 -1
  1272. package/themes/dark-green.d.ts +1 -9
  1273. package/themes/dark-green.js +9 -1
  1274. package/themes/dark-green.src.d.ts +1 -9
  1275. package/themes/dark-green.src.js +1 -1
  1276. package/themes/dark-unica.d.ts +1 -9
  1277. package/themes/dark-unica.js +9 -1
  1278. package/themes/dark-unica.src.d.ts +1 -9
  1279. package/themes/dark-unica.src.js +1 -1
  1280. package/themes/gray.d.ts +1 -9
  1281. package/themes/gray.js +9 -1
  1282. package/themes/gray.src.d.ts +1 -9
  1283. package/themes/gray.src.js +1 -1
  1284. package/themes/grid-light.d.ts +1 -9
  1285. package/themes/grid-light.js +9 -1
  1286. package/themes/grid-light.src.d.ts +1 -9
  1287. package/themes/grid-light.src.js +1 -1
  1288. package/themes/grid.d.ts +1 -9
  1289. package/themes/grid.js +9 -1
  1290. package/themes/grid.src.d.ts +1 -9
  1291. package/themes/grid.src.js +1 -1
  1292. package/themes/high-contrast-dark.d.ts +1 -9
  1293. package/themes/high-contrast-dark.js +9 -1
  1294. package/themes/high-contrast-dark.src.d.ts +1 -9
  1295. package/themes/high-contrast-dark.src.js +1 -1
  1296. package/themes/high-contrast-light.d.ts +1 -9
  1297. package/themes/high-contrast-light.js +9 -1
  1298. package/themes/high-contrast-light.src.d.ts +1 -9
  1299. package/themes/high-contrast-light.src.js +1 -1
  1300. package/themes/sand-signika.d.ts +1 -9
  1301. package/themes/sand-signika.js +9 -1
  1302. package/themes/sand-signika.src.d.ts +1 -9
  1303. package/themes/sand-signika.src.js +1 -1
  1304. package/themes/skies.d.ts +1 -9
  1305. package/themes/skies.js +9 -1
  1306. package/themes/skies.src.d.ts +1 -9
  1307. package/themes/skies.src.js +1 -1
  1308. package/themes/sunset.d.ts +1 -9
  1309. package/themes/sunset.js +9 -1
  1310. package/themes/sunset.src.d.ts +1 -9
  1311. package/themes/sunset.src.js +1 -1
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Highcharts JS v12.2.0 (2025-04-07)
2
+ * @license Highcharts JS v12.4.0 (2025-09-04)
3
3
  * @module highcharts/modules/export-data
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/exporting
6
6
  *
7
- * Exporting module
7
+ * Export data module
8
8
  *
9
9
  * (c) 2010-2025 Torstein Honsi
10
10
  *
@@ -70,6 +70,8 @@ var external_highcharts_src_js_default_default = /*#__PURE__*/__webpack_require_
70
70
  * */
71
71
 
72
72
  const { isSafari, win, win: { document: doc } } = (external_highcharts_src_js_default_default());
73
+
74
+ const { error } = (external_highcharts_src_js_default_default());
73
75
  /* *
74
76
  *
75
77
  * Constants
@@ -83,12 +85,15 @@ const domurl = win.URL || win.webkitURL || win;
83
85
  * */
84
86
  /**
85
87
  * Convert base64 dataURL to Blob if supported, otherwise returns undefined.
88
+ *
86
89
  * @private
87
90
  * @function Highcharts.dataURLtoBlob
91
+ *
88
92
  * @param {string} dataURL
89
- * URL to convert
90
- * @return {string|undefined}
91
- * Blob
93
+ * URL to convert.
94
+ *
95
+ * @return {string | undefined}
96
+ * Blob.
92
97
  */
93
98
  function dataURLtoBlob(dataURL) {
94
99
  const parts = dataURL
@@ -115,11 +120,11 @@ function dataURLtoBlob(dataURL) {
115
120
  *
116
121
  * @private
117
122
  * @function Highcharts.downloadURL
118
- * @param {string|global.URL} dataURL
119
- * The dataURL/Blob to download
123
+ *
124
+ * @param {string | global.URL} dataURL
125
+ * The dataURL/Blob to download.
120
126
  * @param {string} filename
121
- * The name of the resulting file (w/extension)
122
- * @return {void}
127
+ * The name of the resulting file (w/extension).
123
128
  */
124
129
  function downloadURL(dataURL, filename) {
125
130
  const nav = win.navigator, a = doc.createElement('a');
@@ -169,6 +174,35 @@ function downloadURL(dataURL, filename) {
169
174
  }
170
175
  }
171
176
  }
177
+ /**
178
+ * Asynchronously downloads a script from a provided location.
179
+ *
180
+ * @private
181
+ * @function Highcharts.getScript
182
+ *
183
+ * @param {string} scriptLocation
184
+ * The location for the script to fetch.
185
+ */
186
+ function getScript(scriptLocation) {
187
+ return new Promise((resolve, reject) => {
188
+ const head = doc.getElementsByTagName('head')[0], script = doc.createElement('script');
189
+ // Set type and location for the script
190
+ script.type = 'text/javascript';
191
+ script.src = scriptLocation;
192
+ // Resolve in case of a succesful script fetching
193
+ script.onload = () => {
194
+ resolve();
195
+ };
196
+ // Reject in case of fail
197
+ script.onerror = () => {
198
+ const msg = `Error loading script ${scriptLocation}`;
199
+ error(msg);
200
+ reject(new Error(msg));
201
+ };
202
+ // Append the newly created script
203
+ head.appendChild(script);
204
+ });
205
+ }
172
206
  /* *
173
207
  *
174
208
  * Default Export
@@ -176,13 +210,17 @@ function downloadURL(dataURL, filename) {
176
210
  * */
177
211
  const DownloadURL = {
178
212
  dataURLtoBlob,
179
- downloadURL
213
+ downloadURL,
214
+ getScript
180
215
  };
181
216
  /* harmony default export */ const Extensions_DownloadURL = (DownloadURL);
182
217
 
183
218
  ;// external ["../highcharts.src.js","default","AST"]
184
219
  const external_highcharts_src_js_default_AST_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"].AST;
185
220
  var external_highcharts_src_js_default_AST_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_AST_namespaceObject);
221
+ ;// external ["../highcharts.src.js","default","Chart"]
222
+ const external_highcharts_src_js_default_Chart_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"].Chart;
223
+ var external_highcharts_src_js_default_Chart_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_Chart_namespaceObject);
186
224
  ;// ./code/es-modules/Extensions/ExportData/ExportDataDefaults.js
187
225
  /* *
188
226
  *
@@ -213,7 +251,7 @@ const exporting = {
213
251
  * @sample highcharts/export-data/multilevel-table
214
252
  * Multiple table headers
215
253
  *
216
- * @type {boolean|string}
254
+ * @type {boolean | string}
217
255
  * @since 6.0.4
218
256
  * @requires modules/export-data
219
257
  * @apioption exporting.tableCaption
@@ -223,8 +261,8 @@ const exporting = {
223
261
  * in a HTML table or a JavaScript structure.
224
262
  *
225
263
  * This module adds data export options to the export menu and provides
226
- * functions like `Chart.getCSV`, `Chart.getTable`, `Chart.getDataRows`
227
- * and `Chart.viewData`.
264
+ * functions like `Exporting.getCSV`, `Exporting.getTable`,
265
+ * `Exporting.getDataRows` and `Exporting.viewData`.
228
266
  *
229
267
  * The XLS converter is limited and only creates a HTML string that is
230
268
  * passed for download, which works but creates a warning before
@@ -244,7 +282,7 @@ const exporting = {
244
282
  *
245
283
  * Options for annotations in the export-data table.
246
284
  *
247
- * @since 8.2.0
285
+ * @since 8.2.0
248
286
  * @requires modules/export-data
249
287
  * @requires modules/annotations
250
288
  *
@@ -255,7 +293,7 @@ const exporting = {
255
293
  * The way to mark the separator for annotations
256
294
  * combined in one export-data table cell.
257
295
  *
258
- * @since 8.2.0
296
+ * @since 8.2.0
259
297
  * @requires modules/annotations
260
298
  */
261
299
  itemDelimiter: '; ',
@@ -266,7 +304,7 @@ const exporting = {
266
304
  * @sample highcharts/export-data/join-annotations/
267
305
  * Concatenate point annotations with itemDelimiter set.
268
306
  *
269
- * @since 8.2.0
307
+ * @since 8.2.0
270
308
  * @requires modules/annotations
271
309
  */
272
310
  join: false
@@ -297,7 +335,7 @@ const exporting = {
297
335
  * @sample highcharts/export-data/multilevel-table
298
336
  * Multiple table headers
299
337
  *
300
- * @type {Function|null}
338
+ * @type {Function | null}
301
339
  */
302
340
  columnHeaderFormatter: null,
303
341
  /**
@@ -310,7 +348,7 @@ const exporting = {
310
348
  * as the browser locale, typically `.` (English) or `,` (German,
311
349
  * French etc).
312
350
  *
313
- * @type {string|null}
351
+ * @type {string | null}
314
352
  * @since 6.0.4
315
353
  */
316
354
  decimalPoint: null,
@@ -320,7 +358,7 @@ const exporting = {
320
358
  * locale. If the locale _decimal point_ is `,`, the `itemDelimiter`
321
359
  * defaults to `;`, otherwise the `itemDelimiter` defaults to `,`.
322
360
  *
323
- * @type {string|null}
361
+ * @type {string | null}
324
362
  */
325
363
  itemDelimiter: null,
326
364
  /**
@@ -328,6 +366,60 @@ const exporting = {
328
366
  */
329
367
  lineDelimiter: '\n'
330
368
  },
369
+ /**
370
+ * An object consisting of definitions for the menu items in the context
371
+ * menu. Each key value pair has a `key` that is referenced in the
372
+ * [menuItems](#exporting.buttons.contextButton.menuItems) setting,
373
+ * and a `value`, which is an object with the following properties:
374
+ *
375
+ * - **onclick:** The click handler for the menu item
376
+ *
377
+ * - **text:** The text for the menu item
378
+ *
379
+ * - **textKey:** If internationalization is required, the key to a language
380
+ * string
381
+ *
382
+ * Custom text for the "exitFullScreen" can be set only in lang options
383
+ * (it is not a separate button).
384
+ *
385
+ * @sample highcharts/exporting/menuitemdefinitions/
386
+ * Menu item definitions
387
+ * @sample highcharts/exporting/menuitemdefinitions-webp/
388
+ * Adding a custom menu item for WebP export
389
+ *
390
+ * @type {Highcharts.Dictionary<Highcharts.ExportingMenuObject>}
391
+ * @default {"downloadCSV": {}, "downloadXLS": {}, "viewData": {}}
392
+ * @requires modules/export-data
393
+ */
394
+ menuItemDefinitions: {
395
+ /**
396
+ * @ignore
397
+ */
398
+ downloadCSV: {
399
+ textKey: 'downloadCSV',
400
+ onclick: function () {
401
+ this.exporting?.downloadCSV();
402
+ }
403
+ },
404
+ /**
405
+ * @ignore
406
+ */
407
+ downloadXLS: {
408
+ textKey: 'downloadXLS',
409
+ onclick: function () {
410
+ this.exporting?.downloadXLS();
411
+ }
412
+ },
413
+ /**
414
+ * @ignore
415
+ */
416
+ viewData: {
417
+ textKey: 'viewData',
418
+ onclick: function () {
419
+ this.exporting?.wrapLoading(this.exporting.toggleDataTable);
420
+ }
421
+ }
422
+ },
331
423
  /**
332
424
  * Show a HTML table below the chart with the chart's current data.
333
425
  *
@@ -370,7 +462,7 @@ const exporting = {
370
462
  *
371
463
  * The message can be altered by changing [](#lang.exporting.exportInProgress)
372
464
  *
373
- * @since 11.3.0
465
+ * @since 11.3.0
374
466
  * @requires modules/export-data
375
467
  */
376
468
  showExportInProgress: true
@@ -397,7 +489,7 @@ const lang = {
397
489
  /**
398
490
  * The text for exported table.
399
491
  *
400
- * @since 8.1.0
492
+ * @since 8.1.0
401
493
  * @requires modules/export-data
402
494
  */
403
495
  exportData: {
@@ -424,14 +516,14 @@ const lang = {
424
516
  /**
425
517
  * The text for the menu item.
426
518
  *
427
- * @since 8.2.0
519
+ * @since 8.2.0
428
520
  * @requires modules/export-data
429
521
  */
430
522
  hideData: 'Hide data table',
431
523
  /**
432
524
  * Text to show when export is in progress.
433
525
  *
434
- * @since 11.3.0
526
+ * @since 11.3.0
435
527
  * @requires modules/export-data
436
528
  */
437
529
  exportInProgress: 'Exporting...'
@@ -492,857 +584,951 @@ const ExportDataDefaults = {
492
584
 
493
585
 
494
586
 
587
+
495
588
  const { getOptions, setOptions } = (external_highcharts_src_js_default_default());
496
589
 
497
590
  const { downloadURL: ExportData_downloadURL } = Extensions_DownloadURL;
498
591
 
499
592
 
500
- const { doc: ExportData_doc, win: ExportData_win } = (external_highcharts_src_js_default_default());
593
+ const { composed, doc: ExportData_doc, win: ExportData_win } = (external_highcharts_src_js_default_default());
501
594
 
502
- const { addEvent, defined, extend, find, fireEvent, isNumber, pick } = (external_highcharts_src_js_default_default());
595
+ const { addEvent, defined, extend, find, fireEvent, isNumber, pick, pushUnique } = (external_highcharts_src_js_default_default());
503
596
  /* *
504
597
  *
505
- * Functions
598
+ * Composition
506
599
  *
507
600
  * */
508
- /**
509
- * Wrapper function for the download functions, which handles showing and hiding
510
- * the loading message
511
- *
512
- * @private
513
- *
514
- */
515
- function wrapLoading(fn) {
516
- const showMessage = Boolean(this.options.exporting?.showExportInProgress);
517
- // Prefer requestAnimationFrame if available
518
- const timeoutFn = ExportData_win.requestAnimationFrame || setTimeout;
519
- // Outer timeout avoids menu freezing on click
520
- timeoutFn(() => {
521
- showMessage && this.showLoading(this.options.lang.exportInProgress);
522
- timeoutFn(() => {
523
- try {
524
- fn.call(this);
525
- }
526
- finally {
527
- showMessage && this.hideLoading();
601
+ var ExportData;
602
+ (function (ExportData) {
603
+ /* *
604
+ *
605
+ * Declarations
606
+ *
607
+ * */
608
+ /* *
609
+ *
610
+ * Functions
611
+ *
612
+ * */
613
+ /**
614
+ * Composition function.
615
+ *
616
+ * @private
617
+ * @function Highcharts.Exporting#compose
618
+ *
619
+ * @param {ChartClass} ChartClass
620
+ * Chart class.
621
+ * @param {ExportingClass} ExportingClass
622
+ * Exporting class.
623
+ * @param {SeriesClass} SeriesClass
624
+ * Series class.
625
+ *
626
+ * @requires modules/exporting
627
+ * @requires modules/export-data
628
+ */
629
+ function compose(ChartClass, ExportingClass, SeriesClass) {
630
+ // Check the composition registry for the Exporting
631
+ if (!pushUnique(composed, 'ExportData')) {
632
+ return;
633
+ }
634
+ // Adding wrappers for the deprecated functions
635
+ extend((external_highcharts_src_js_default_Chart_default()).prototype, {
636
+ downloadCSV: function () {
637
+ return this.exporting?.downloadCSV();
638
+ },
639
+ downloadXLS: function () {
640
+ return this.exporting?.downloadXLS();
641
+ },
642
+ getCSV: function (useLocalDecimalPoint) {
643
+ return this.exporting?.getCSV(useLocalDecimalPoint);
644
+ },
645
+ getDataRows: function (multiLevelHeaders) {
646
+ return this.exporting?.getDataRows(multiLevelHeaders);
647
+ },
648
+ getTable: function (useLocalDecimalPoint) {
649
+ return this.exporting?.getTable(useLocalDecimalPoint);
650
+ },
651
+ getTableAST: function (useLocalDecimalPoint) {
652
+ return this.exporting?.getTableAST(useLocalDecimalPoint);
653
+ },
654
+ hideData: function () {
655
+ return this.exporting?.hideData();
656
+ },
657
+ toggleDataTable: function (show) {
658
+ return this.exporting?.toggleDataTable(show);
659
+ },
660
+ viewData: function () {
661
+ return this.exporting?.viewData();
528
662
  }
529
663
  });
530
- });
531
- }
532
- /**
533
- * Generates a data URL of CSV for local download in the browser. This is the
534
- * default action for a click on the 'Download CSV' button.
535
- *
536
- * See {@link Highcharts.Chart#getCSV} to get the CSV data itself.
537
- *
538
- * @function Highcharts.Chart#downloadCSV
539
- *
540
- * @requires modules/exporting
541
- */
542
- function chartDownloadCSV() {
543
- wrapLoading.call(this, () => {
544
- const csv = this.getCSV(true);
545
- ExportData_downloadURL(getBlobFromContent(csv, 'text/csv') ||
546
- 'data:text/csv,\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');
547
- });
548
- }
549
- /**
550
- * Generates a data URL of an XLS document for local download in the browser.
551
- * This is the default action for a click on the 'Download XLS' button.
552
- *
553
- * See {@link Highcharts.Chart#getTable} to get the table data itself.
554
- *
555
- * @function Highcharts.Chart#downloadXLS
556
- *
557
- * @requires modules/exporting
558
- */
559
- function chartDownloadXLS() {
560
- wrapLoading.call(this, () => {
561
- const uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' +
562
- 'xmlns:x="urn:schemas-microsoft-com:office:excel" ' +
563
- 'xmlns="http://www.w3.org/TR/REC-html40">' +
564
- '<head><!--[if gte mso 9]><xml><x:ExcelWorkbook>' +
565
- '<x:ExcelWorksheets><x:ExcelWorksheet>' +
566
- '<x:Name>Ark1</x:Name>' +
567
- '<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>' +
568
- '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>' +
569
- '</xml><![endif]-->' +
570
- '<style>td{border:none;font-family: Calibri, sans-serif;} ' +
571
- '.number{mso-number-format:"0.00";} ' +
572
- '.text{ mso-number-format:"\@";}</style>' +
573
- '<meta name=ProgId content=Excel.Sheet>' +
574
- '<meta charset=UTF-8>' +
575
- '</head><body>' +
576
- this.getTable(true) +
577
- '</body></html>', base64 = function (s) {
578
- return ExportData_win.btoa(unescape(encodeURIComponent(s))); // #50
579
- };
580
- ExportData_downloadURL(getBlobFromContent(template, 'application/vnd.ms-excel') ||
581
- uri + base64(template), this.getFilename() + '.xls');
582
- });
583
- }
584
- /**
585
- * Export-data module required. Returns the current chart data as a CSV string.
586
- *
587
- * @function Highcharts.Chart#getCSV
588
- *
589
- * @param {boolean} [useLocalDecimalPoint]
590
- * Whether to use the local decimal point as detected from the browser.
591
- * This makes it easier to export data to Excel in the same locale as the
592
- * user is.
593
- *
594
- * @return {string}
595
- * CSV representation of the data
596
- */
597
- function chartGetCSV(useLocalDecimalPoint) {
598
- let csv = '';
599
- const rows = this.getDataRows(), csvOptions = this.options.exporting.csv, decimalPoint = pick(csvOptions.decimalPoint, csvOptions.itemDelimiter !== ',' && useLocalDecimalPoint ?
600
- (1.1).toLocaleString()[1] :
601
- '.'),
602
- // Use ';' for direct to Excel
603
- itemDelimiter = pick(csvOptions.itemDelimiter, decimalPoint === ',' ? ';' : ','),
604
- // '\n' isn't working with the js csv data extraction
605
- lineDelimiter = csvOptions.lineDelimiter;
606
- // Transform the rows to CSV
607
- rows.forEach((row, i) => {
608
- let val = '', j = row.length;
609
- while (j--) {
610
- val = row[j];
611
- if (typeof val === 'string') {
612
- val = `"${val}"`;
664
+ const exportingProto = ExportingClass.prototype;
665
+ if (!exportingProto.downloadCSV) {
666
+ // Add an event listener to handle the showTable option
667
+ addEvent(ChartClass, 'afterViewData', onChartAfterViewData);
668
+ addEvent(ChartClass, 'render', onChartRenderer);
669
+ addEvent(ChartClass, 'destroy', onChartDestroy);
670
+ // Adding functions to the Exporting prototype
671
+ exportingProto.downloadCSV = downloadCSV;
672
+ exportingProto.downloadXLS = downloadXLS;
673
+ exportingProto.getCSV = getCSV;
674
+ exportingProto.getDataRows = getDataRows;
675
+ exportingProto.getTable = getTable;
676
+ exportingProto.getTableAST = getTableAST;
677
+ exportingProto.hideData = hideData;
678
+ exportingProto.toggleDataTable = toggleDataTable;
679
+ exportingProto.wrapLoading = wrapLoading;
680
+ exportingProto.viewData = viewData;
681
+ // Update with defaults of the export data module
682
+ setOptions(ExportData_ExportDataDefaults);
683
+ // Additionaly, extend the menuItems with the export data variants
684
+ const menuItems = getOptions().exporting?.buttons?.contextButton?.menuItems;
685
+ menuItems && menuItems.push('separator', 'downloadCSV', 'downloadXLS', 'viewData');
686
+ const { arearange: AreaRangeSeries, gantt: GanttSeries, map: MapSeries, mapbubble: MapBubbleSeries, treemap: TreemapSeries, xrange: XRangeSeries } = SeriesClass.types;
687
+ if (AreaRangeSeries) {
688
+ AreaRangeSeries.prototype.keyToAxis = {
689
+ low: 'y',
690
+ high: 'y'
691
+ };
613
692
  }
614
- if (typeof val === 'number') {
615
- if (decimalPoint !== '.') {
616
- val = val.toString().replace('.', decimalPoint);
617
- }
693
+ if (GanttSeries) {
694
+ GanttSeries.prototype.exportKey = 'name';
695
+ GanttSeries.prototype.keyToAxis = {
696
+ start: 'x',
697
+ end: 'x'
698
+ };
618
699
  }
619
- row[j] = val;
620
- }
621
- // The first row is the header - it defines the number of columns.
622
- // Empty columns between not-empty cells are covered in the getDataRows
623
- // method.
624
- // Now add empty values only to the end of the row so all rows have
625
- // the same number of columns, #17186
626
- row.length = rows.length ? rows[0].length : 0;
627
- // Add the values
628
- csv += row.join(itemDelimiter);
629
- // Add the line delimiter
630
- if (i < rows.length - 1) {
631
- csv += lineDelimiter;
632
- }
633
- });
634
- return csv;
635
- }
636
- /**
637
- * Export-data module required. Returns a two-dimensional array containing the
638
- * current chart data.
639
- *
640
- * @function Highcharts.Chart#getDataRows
641
- *
642
- * @param {boolean} [multiLevelHeaders]
643
- * Use multilevel headers for the rows by default. Adds an extra row with
644
- * top level headers. If a custom columnHeaderFormatter is defined, this
645
- * can override the behavior.
646
- *
647
- * @return {Array<Array<(number|string)>>}
648
- * The current chart data
649
- *
650
- * @emits Highcharts.Chart#event:exportData
651
- */
652
- function chartGetDataRows(multiLevelHeaders) {
653
- const hasParallelCoords = this.hasParallelCoordinates, time = this.time, csvOptions = ((this.options.exporting && this.options.exporting.csv) || {}), xAxes = this.xAxis, rows = {}, rowArr = [], topLevelColumnTitles = [], columnTitles = [], langOptions = this.options.lang, exportDataOptions = langOptions.exportData, categoryHeader = exportDataOptions.categoryHeader, categoryDatetimeHeader = exportDataOptions.categoryDatetimeHeader,
654
- // Options
655
- columnHeaderFormatter = function (item, key, keyLength) {
656
- if (csvOptions.columnHeaderFormatter) {
657
- const s = csvOptions.columnHeaderFormatter(item, key, keyLength);
658
- if (s !== false) {
659
- return s;
700
+ if (MapSeries) {
701
+ MapSeries.prototype.exportKey = 'name';
702
+ }
703
+ if (MapBubbleSeries) {
704
+ MapBubbleSeries.prototype.exportKey = 'name';
705
+ }
706
+ if (TreemapSeries) {
707
+ TreemapSeries.prototype.exportKey = 'name';
708
+ }
709
+ if (XRangeSeries) {
710
+ XRangeSeries.prototype.keyToAxis = {
711
+ x2: 'x'
712
+ };
660
713
  }
661
714
  }
662
- if (!item) {
663
- return categoryHeader;
664
- }
665
- if (!item.bindAxes) {
666
- return (item.options.title &&
667
- item.options.title.text) || (item.dateTime ?
668
- categoryDatetimeHeader :
669
- categoryHeader);
670
- }
671
- if (multiLevelHeaders) {
672
- return {
673
- columnTitle: keyLength > 1 ?
674
- key :
675
- item.name,
676
- topLevelColumnTitle: item.name
715
+ }
716
+ ExportData.compose = compose;
717
+ /**
718
+ * Generates a data URL of CSV for local download in the browser. This is
719
+ * the default action for a click on the 'Download CSV' button.
720
+ *
721
+ * See {@link Highcharts.Exporting#getCSV} to get the CSV data itself.
722
+ *
723
+ * @function Highcharts.Exporting#downloadCSV
724
+ *
725
+ * @requires modules/exporting
726
+ * @requires modules/export-data
727
+ */
728
+ function downloadCSV() {
729
+ this.wrapLoading(() => {
730
+ const csv = this.getCSV(true);
731
+ ExportData_downloadURL(getBlobFromContent(csv, 'text/csv') ||
732
+ 'data:text/csv,\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');
733
+ });
734
+ }
735
+ /**
736
+ * Generates a data URL of an XLS document for local download in the
737
+ * browser. This is the default action for a click on the 'Download XLS'
738
+ * button.
739
+ *
740
+ * See {@link Highcharts.Exporting#getTable} to get the table data itself.
741
+ *
742
+ * @function Highcharts.Exporting#downloadXLS
743
+ *
744
+ * @requires modules/exporting
745
+ * @requires modules/export-data
746
+ */
747
+ function downloadXLS() {
748
+ this.wrapLoading(() => {
749
+ const uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' +
750
+ 'xmlns:x="urn:schemas-microsoft-com:office:excel" ' +
751
+ 'xmlns="http://www.w3.org/TR/REC-html40">' +
752
+ '<head><!--[if gte mso 9]><xml><x:ExcelWorkbook>' +
753
+ '<x:ExcelWorksheets><x:ExcelWorksheet>' +
754
+ '<x:Name>Ark1</x:Name>' +
755
+ '<x:WorksheetOptions><x:DisplayGridlines/>' +
756
+ '</x:WorksheetOptions>' +
757
+ '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>' +
758
+ '</xml><![endif]-->' +
759
+ '<style>td{border:none;font-family: Calibri, sans-serif;} ' +
760
+ '.number{mso-number-format:"0.00";} ' +
761
+ '.text{ mso-number-format:"\@";}</style>' +
762
+ '<meta name=ProgId content=Excel.Sheet>' +
763
+ '<meta charset=UTF-8>' +
764
+ '</head><body>' +
765
+ this.getTable(true) +
766
+ '</body></html>', base64 = function (s) {
767
+ return ExportData_win.btoa(unescape(encodeURIComponent(s))); // #50
677
768
  };
678
- }
679
- return item.name + (keyLength > 1 ? ' (' + key + ')' : '');
680
- },
681
- // Map the categories for value axes
682
- getCategoryAndDateTimeMap = function (series, pointArrayMap, pIdx) {
683
- const categoryMap = {}, dateTimeValueAxisMap = {};
684
- pointArrayMap.forEach(function (prop) {
685
- const axisName = ((series.keyToAxis && series.keyToAxis[prop]) ||
686
- prop) + 'Axis',
687
- // Points in parallel coordinates refers to all yAxis
688
- // not only `series.yAxis`
689
- axis = isNumber(pIdx) ?
690
- series.chart[axisName][pIdx] :
691
- series[axisName];
692
- categoryMap[prop] = (axis && axis.categories) || [];
693
- dateTimeValueAxisMap[prop] = (axis && axis.dateTime);
769
+ ExportData_downloadURL(getBlobFromContent(template, 'application/vnd.ms-excel') ||
770
+ uri + base64(template), this.getFilename() + '.xls');
694
771
  });
695
- return {
696
- categoryMap: categoryMap,
697
- dateTimeValueAxisMap: dateTimeValueAxisMap
698
- };
699
- },
700
- // Create point array depends if xAxis is category
701
- // or point.name is defined #13293
702
- getPointArray = function (series, xAxis) {
703
- const pointArrayMap = series.pointArrayMap || ['y'], namedPoints = series.data.some((d) => (typeof d.y !== 'undefined') && d.name);
704
- // If there are points with a name, we also want the x value in the
705
- // table
706
- if (namedPoints &&
707
- xAxis &&
708
- !xAxis.categories &&
709
- series.exportKey !== 'name') {
710
- return ['x', ...pointArrayMap];
772
+ }
773
+ /**
774
+ * Get a blob object from content, if blob is supported.
775
+ *
776
+ * @private
777
+ * @function Highcharts.getBlobFromContent
778
+ *
779
+ * @param {string} content
780
+ * The content to create the blob from.
781
+ * @param {string} type
782
+ * The type of the content.
783
+ *
784
+ * @return {string | undefined}
785
+ * The blob object, or undefined if not supported.
786
+ *
787
+ * @requires modules/exporting
788
+ * @requires modules/export-data
789
+ */
790
+ function getBlobFromContent(content, type) {
791
+ const nav = ExportData_win.navigator, domurl = ExportData_win.URL || ExportData_win.webkitURL || ExportData_win;
792
+ try {
793
+ // MS specific
794
+ if ((nav.msSaveOrOpenBlob) && ExportData_win.MSBlobBuilder) {
795
+ const blob = new ExportData_win.MSBlobBuilder();
796
+ blob.append(content);
797
+ return blob.getBlob('image/svg+xml');
798
+ }
799
+ return domurl.createObjectURL(new ExportData_win.Blob(['\uFEFF' + content], // #7084
800
+ { type: type }));
801
+ }
802
+ catch {
803
+ // Ignore
711
804
  }
712
- return pointArrayMap;
713
- }, xAxisIndices = [];
714
- let xAxis, dataRows, columnTitleObj, i = 0, // Loop the series and index values
715
- x, xTitle;
716
- this.series.forEach(function (series) {
717
- const keys = series.options.keys, xAxis = series.xAxis, pointArrayMap = keys || getPointArray(series, xAxis), valueCount = pointArrayMap.length, xTaken = !series.requireSorting && {}, xAxisIndex = xAxes.indexOf(xAxis);
718
- let categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap), mockSeries, j;
719
- if (series.options.includeInDataExport !== false &&
720
- !series.options.isInternal &&
721
- series.visible !== false // #55
722
- ) {
723
- // Build a lookup for X axis index and the position of the first
724
- // series that belongs to that X axis. Includes -1 for non-axis
725
- // series types like pies.
726
- if (!find(xAxisIndices, function (index) {
727
- return index[0] === xAxisIndex;
728
- })) {
729
- xAxisIndices.push([xAxisIndex, i]);
805
+ }
806
+ /**
807
+ * Returns the current chart data as a CSV string.
808
+ *
809
+ * @function Highcharts.Exporting#getCSV
810
+ *
811
+ * @param {boolean} [useLocalDecimalPoint]
812
+ * Whether to use the local decimal point as detected from the browser. This
813
+ * makes it easier to export data to Excel in the same locale as the user
814
+ * is.
815
+ *
816
+ * @return {string}
817
+ * CSV representation of the data.
818
+ *
819
+ * @requires modules/exporting
820
+ * @requires modules/export-data
821
+ */
822
+ function getCSV(useLocalDecimalPoint) {
823
+ let csv = '';
824
+ const rows = this.getDataRows(), csvOptions = this.options?.csv, decimalPoint = pick(csvOptions?.decimalPoint, csvOptions?.itemDelimiter !== ',' && useLocalDecimalPoint ?
825
+ (1.1).toLocaleString()[1] :
826
+ '.'),
827
+ // Use ';' for direct to Excel
828
+ itemDelimiter = pick(csvOptions?.itemDelimiter, decimalPoint === ',' ? ';' : ','),
829
+ // '\n' isn't working with the js csv data extraction
830
+ lineDelimiter = csvOptions?.lineDelimiter;
831
+ // Transform the rows to CSV
832
+ rows.forEach((row, i) => {
833
+ let val = '', j = row.length;
834
+ while (j--) {
835
+ val = row[j];
836
+ if (typeof val === 'string') {
837
+ val = `"${val}"`;
838
+ }
839
+ if (typeof val === 'number') {
840
+ if (decimalPoint !== '.') {
841
+ val = val.toString().replace('.', decimalPoint);
842
+ }
843
+ }
844
+ row[j] = val;
730
845
  }
731
- // Compute the column headers and top level headers, usually the
732
- // same as series names
733
- j = 0;
734
- while (j < valueCount) {
735
- columnTitleObj = columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length);
736
- columnTitles.push(columnTitleObj.columnTitle || columnTitleObj);
737
- if (multiLevelHeaders) {
738
- topLevelColumnTitles.push(columnTitleObj.topLevelColumnTitle ||
739
- columnTitleObj);
846
+ // The first row is the header - it defines the number of columns.
847
+ // Empty columns between not-empty cells are covered in the
848
+ // getDataRows method.
849
+ // Now add empty values only to the end of the row so all rows have
850
+ // the same number of columns, #17186
851
+ row.length = rows.length ? rows[0].length : 0;
852
+ // Add the values
853
+ csv += row.join(itemDelimiter);
854
+ // Add the line delimiter
855
+ if (i < rows.length - 1) {
856
+ csv += lineDelimiter;
857
+ }
858
+ });
859
+ return csv;
860
+ }
861
+ /**
862
+ * Returns a two-dimensional array containing the current chart data.
863
+ *
864
+ * @function Highcharts.Exporting#getDataRows
865
+ *
866
+ * @param {boolean} [multiLevelHeaders]
867
+ * Use multilevel headers for the rows by default. Adds an extra row with
868
+ * top level headers. If a custom columnHeaderFormatter is defined, this can
869
+ * override the behavior.
870
+ *
871
+ * @return {Array<Array<(number | string)>>}
872
+ * The current chart data
873
+ *
874
+ * @emits Highcharts.Chart#event:exportData
875
+ *
876
+ * @requires modules/exporting
877
+ * @requires modules/export-data
878
+ */
879
+ function getDataRows(multiLevelHeaders) {
880
+ const chart = this.chart, hasParallelCoords = chart.hasParallelCoordinates, time = chart.time, csvOptions = this.options?.csv || {}, xAxes = chart.xAxis, rows = {}, rowArr = [], topLevelColumnTitles = [], columnTitles = [], langOptions = chart.options.lang, exportDataOptions = langOptions.exportData, categoryHeader = exportDataOptions?.categoryHeader, categoryDatetimeHeader = exportDataOptions?.categoryDatetimeHeader,
881
+ // Options
882
+ columnHeaderFormatter = function (item, key, keyLength) {
883
+ if (csvOptions.columnHeaderFormatter) {
884
+ const s = csvOptions.columnHeaderFormatter(item, key, keyLength);
885
+ if (s !== false) {
886
+ return s;
740
887
  }
741
- j++;
742
888
  }
743
- mockSeries = {
744
- chart: series.chart,
745
- autoIncrement: series.autoIncrement,
746
- options: series.options,
747
- pointArrayMap: series.pointArrayMap,
748
- index: series.index
889
+ if (!item && categoryHeader) {
890
+ return categoryHeader;
891
+ }
892
+ if (!item.bindAxes &&
893
+ categoryDatetimeHeader &&
894
+ categoryHeader) {
895
+ return (item.options.title &&
896
+ item.options.title.text) || (item.dateTime ?
897
+ categoryDatetimeHeader :
898
+ categoryHeader);
899
+ }
900
+ if (multiLevelHeaders) {
901
+ return {
902
+ columnTitle: ((keyLength || 0) > 1 ?
903
+ key :
904
+ item.name) || '',
905
+ topLevelColumnTitle: item.name
906
+ };
907
+ }
908
+ return item.name + ((keyLength || 0) > 1 ? ' (' + key + ')' : '');
909
+ },
910
+ // Map the categories for value axes
911
+ getCategoryAndDateTimeMap = function (series, pointArrayMap, pIdx) {
912
+ const categoryMap = {}, dateTimeValueAxisMap = {};
913
+ pointArrayMap.forEach(function (prop) {
914
+ const axisName = ((series.keyToAxis && series.keyToAxis[prop]) ||
915
+ prop) + 'Axis',
916
+ // Points in parallel coordinates refers to all yAxis
917
+ // not only `series.yAxis`
918
+ axis = isNumber(pIdx) ?
919
+ series.chart[axisName][pIdx] :
920
+ series[axisName];
921
+ categoryMap[prop] = (axis && axis.categories) || [];
922
+ dateTimeValueAxisMap[prop] = (axis && axis.dateTime);
923
+ });
924
+ return {
925
+ categoryMap: categoryMap,
926
+ dateTimeValueAxisMap: dateTimeValueAxisMap
749
927
  };
750
- // Export directly from options.data because we need the uncropped
751
- // data (#7913), and we need to support Boost (#7026).
752
- series.options.data.forEach(function eachData(options, pIdx) {
753
- const mockPoint = { series: mockSeries };
754
- let key, prop, val;
755
- // In parallel coordinates chart, each data point is connected
756
- // to a separate yAxis, conform this
757
- if (hasParallelCoords) {
758
- categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap, pIdx);
928
+ },
929
+ // Create point array depends if xAxis is category
930
+ // or point.name is defined #13293
931
+ getPointArray = function (series, xAxis) {
932
+ const pointArrayMap = series.pointArrayMap || ['y'], namedPoints = series.data.some((d) => (typeof d.y !== 'undefined') && d.name);
933
+ // If there are points with a name, we also want the x value in
934
+ // the table
935
+ if (namedPoints &&
936
+ xAxis &&
937
+ !xAxis.categories &&
938
+ series.exportKey !== 'name') {
939
+ return ['x', ...pointArrayMap];
940
+ }
941
+ return pointArrayMap;
942
+ }, xAxisIndices = [];
943
+ let xAxis, dataRows, columnTitleObj, i = 0, // Loop the series and index values
944
+ x, xTitle;
945
+ chart.series.forEach(function (series) {
946
+ const keys = series.options.keys, xAxis = series.xAxis, pointArrayMap = keys || getPointArray(series, xAxis), valueCount = pointArrayMap.length, xTaken = !series.requireSorting && {}, xAxisIndex = xAxes.indexOf(xAxis);
947
+ let categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap), mockSeries, j;
948
+ if (series.options.includeInDataExport !== false &&
949
+ !series.options.isInternal &&
950
+ series.visible !== false // #55
951
+ ) {
952
+ // Build a lookup for X axis index and the position of the first
953
+ // series that belongs to that X axis. Includes -1 for non-axis
954
+ // series types like pies.
955
+ if (!find(xAxisIndices, function (index) {
956
+ return index[0] === xAxisIndex;
957
+ })) {
958
+ xAxisIndices.push([xAxisIndex, i]);
759
959
  }
760
- series.pointClass.prototype.applyOptions.apply(mockPoint, [options]);
761
- const name = series.data[pIdx] && series.data[pIdx].name;
762
- key = (mockPoint.x ?? '') + ',' + name;
960
+ // Compute the column headers and top level headers, usually the
961
+ // same as series names
763
962
  j = 0;
764
- // Pies, funnels, geo maps etc. use point name in X row
765
- if (!xAxis ||
766
- series.exportKey === 'name' ||
767
- (!hasParallelCoords && xAxis && xAxis.hasNames) && name) {
768
- key = name;
769
- }
770
- if (xTaken) {
771
- if (xTaken[key]) {
772
- key += '|' + pIdx;
963
+ while (j < valueCount) {
964
+ columnTitleObj = columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length);
965
+ columnTitles.push(columnTitleObj.columnTitle ||
966
+ columnTitleObj);
967
+ if (multiLevelHeaders) {
968
+ topLevelColumnTitles.push(columnTitleObj.topLevelColumnTitle ||
969
+ columnTitleObj);
773
970
  }
774
- xTaken[key] = true;
971
+ j++;
775
972
  }
776
- if (!rows[key]) {
777
- rows[key] = [];
778
- rows[key].xValues = [];
779
- // ES5 replacement for Array.from / fill.
780
- const arr = [];
781
- for (let i = 0; i < series.chart.series.length; i++) {
782
- arr[i] = 0;
973
+ mockSeries = {
974
+ chart: series.chart,
975
+ autoIncrement: series.autoIncrement,
976
+ options: series.options,
977
+ pointArrayMap: series.pointArrayMap,
978
+ index: series.index
979
+ };
980
+ // Export directly from options.data because we need the
981
+ // uncropped data (#7913), and we need to support Boost (#7026).
982
+ series.options.data?.forEach(function eachData(options, pIdx) {
983
+ const mockPoint = { series: mockSeries };
984
+ let key, prop, val;
985
+ // In parallel coordinates chart, each data point is
986
+ // connected to a separate yAxis, conform this
987
+ if (hasParallelCoords) {
988
+ categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap, pIdx);
783
989
  }
784
- // Create pointers array, holding information how many
785
- // duplicates of specific x occurs in each series.
786
- // Used for creating rows with duplicates.
787
- rows[key].pointers = arr;
788
- rows[key].pointers[series.index] = 1;
789
- }
790
- else {
791
- // Handle duplicates (points with the same x), by creating
792
- // extra rows based on pointers for better performance.
793
- const modifiedKey = `${key},${rows[key].pointers[series.index]}`, originalKey = key;
794
- if (rows[key].pointers[series.index]) {
795
- if (!rows[modifiedKey]) {
796
- rows[modifiedKey] = [];
797
- rows[modifiedKey].xValues = [];
798
- rows[modifiedKey].pointers = [];
990
+ series.pointClass.prototype.applyOptions.apply(mockPoint, [options]);
991
+ const name = series.data[pIdx] && series.data[pIdx].name;
992
+ key = (mockPoint.x ?? '') + ',' + name;
993
+ j = 0;
994
+ // Pies, funnels, geo maps etc. use point name in X row
995
+ if (!xAxis ||
996
+ series.exportKey === 'name' ||
997
+ (!hasParallelCoords && xAxis && xAxis.hasNames) && name) {
998
+ key = name;
999
+ }
1000
+ if (xTaken) {
1001
+ if (xTaken[key]) {
1002
+ key += '|' + pIdx;
799
1003
  }
800
- key = modifiedKey;
1004
+ xTaken[key] = true;
801
1005
  }
802
- rows[originalKey].pointers[series.index] += 1;
803
- }
804
- rows[key].x = mockPoint.x;
805
- rows[key].name = name;
806
- rows[key].xValues[xAxisIndex] = mockPoint.x;
807
- while (j < valueCount) {
808
- prop = pointArrayMap[j]; // `y`, `z` etc
809
- val = series.pointClass.prototype.getNestedProperty.apply(mockPoint, [prop]); // Allow values from nested properties (#20470)
810
- rows[key][i + j] = pick(
811
- // Y axis category if present
812
- categoryAndDatetimeMap.categoryMap[prop][val],
813
- // Datetime yAxis
814
- categoryAndDatetimeMap.dateTimeValueAxisMap[prop] ?
815
- time.dateFormat(csvOptions.dateFormat, val) :
816
- null,
817
- // Linear/log yAxis
818
- val);
819
- j++;
820
- }
821
- });
822
- i = i + j;
823
- }
824
- });
825
- // Make a sortable array
826
- for (x in rows) {
827
- if (Object.hasOwnProperty.call(rows, x)) {
828
- rowArr.push(rows[x]);
829
- }
830
- }
831
- let xAxisIndex, column;
832
- // Add computed column headers and top level headers to final row set
833
- dataRows = multiLevelHeaders ? [topLevelColumnTitles, columnTitles] :
834
- [columnTitles];
835
- i = xAxisIndices.length;
836
- while (i--) { // Start from end to splice in
837
- xAxisIndex = xAxisIndices[i][0];
838
- column = xAxisIndices[i][1];
839
- xAxis = xAxes[xAxisIndex];
840
- // Sort it by X values
841
- rowArr.sort(function (// eslint-disable-line no-loop-func
842
- a, b) {
843
- return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
844
- });
845
- // Add header row
846
- xTitle = columnHeaderFormatter(xAxis);
847
- dataRows[0].splice(column, 0, xTitle);
848
- if (multiLevelHeaders && dataRows[1]) {
849
- // If using multi level headers, we just added top level header.
850
- // Also add for sub level
851
- dataRows[1].splice(column, 0, xTitle);
852
- }
853
- // Add the category column
854
- rowArr.forEach(function (// eslint-disable-line no-loop-func
855
- row) {
856
- let category = row.name;
857
- if (xAxis && !defined(category)) {
858
- if (xAxis.dateTime) {
859
- if (row.x instanceof Date) {
860
- row.x = row.x.getTime();
1006
+ if (!rows[key]) {
1007
+ rows[key] = [];
1008
+ rows[key].xValues = [];
1009
+ // ES5 replacement for Array.from / fill.
1010
+ const arr = [];
1011
+ for (let i = 0; i < series.chart.series.length; i++) {
1012
+ arr[i] = 0;
1013
+ }
1014
+ // Create pointers array, holding information how many
1015
+ // duplicates of specific x occurs in each series.
1016
+ // Used for creating rows with duplicates.
1017
+ rows[key].pointers = arr;
1018
+ rows[key].pointers[series.index] = 1;
861
1019
  }
862
- category = time.dateFormat(csvOptions.dateFormat, row.x);
863
- }
864
- else if (xAxis.categories) {
865
- category = pick(xAxis.names[row.x], xAxis.categories[row.x], row.x);
866
- }
867
- else {
868
- category = row.x;
869
- }
1020
+ else {
1021
+ // Handle duplicates (points with the same x), by
1022
+ // creating extra rows based on pointers for better
1023
+ // performance.
1024
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
1025
+ const modifiedKey = `${key},${rows[key].pointers[series.index]}`, originalKey = key;
1026
+ if (rows[key].pointers[series.index]) {
1027
+ if (!rows[modifiedKey]) {
1028
+ rows[modifiedKey] = [];
1029
+ rows[modifiedKey].xValues = [];
1030
+ rows[modifiedKey].pointers = [];
1031
+ }
1032
+ key = modifiedKey;
1033
+ }
1034
+ rows[originalKey].pointers[series.index] += 1;
1035
+ }
1036
+ rows[key].x = mockPoint.x;
1037
+ rows[key].name = name;
1038
+ rows[key].xValues[xAxisIndex] = mockPoint.x;
1039
+ while (j < valueCount) {
1040
+ prop = pointArrayMap[j]; // `y`, `z` etc
1041
+ val =
1042
+ series.pointClass.prototype.getNestedProperty.apply(mockPoint, [prop]);
1043
+ // Allow values from nested properties (#20470)
1044
+ rows[key][i + j] = pick(
1045
+ // Y axis category if present
1046
+ categoryAndDatetimeMap.categoryMap[prop][val],
1047
+ // Datetime yAxis
1048
+ categoryAndDatetimeMap.dateTimeValueAxisMap[prop] ?
1049
+ time.dateFormat(csvOptions.dateFormat, val) :
1050
+ null,
1051
+ // Linear/log yAxis
1052
+ val);
1053
+ j++;
1054
+ }
1055
+ });
1056
+ i = i + j;
870
1057
  }
871
- // Add the X/date/category
872
- row.splice(column, 0, category);
873
1058
  });
874
- }
875
- dataRows = dataRows.concat(rowArr);
876
- fireEvent(this, 'exportData', { dataRows: dataRows });
877
- return dataRows;
878
- }
879
- /**
880
- * Export-data module required. Build a HTML table with the chart's current
881
- * data.
882
- *
883
- * @sample highcharts/export-data/viewdata/
884
- * View the data from the export menu
885
- *
886
- * @function Highcharts.Chart#getTable
887
- *
888
- * @param {boolean} [useLocalDecimalPoint]
889
- * Whether to use the local decimal point as detected from the browser.
890
- * This makes it easier to export data to Excel in the same locale as the
891
- * user is.
892
- *
893
- * @return {string}
894
- * HTML representation of the data.
895
- *
896
- * @emits Highcharts.Chart#event:afterGetTable
897
- */
898
- function chartGetTable(useLocalDecimalPoint) {
899
- const serialize = (node) => {
900
- if (!node.tagName || node.tagName === '#text') {
901
- // Text node
902
- return node.textContent || '';
1059
+ // Make a sortable array
1060
+ for (x in rows) {
1061
+ if (Object.hasOwnProperty.call(rows, x)) {
1062
+ rowArr.push(rows[x]);
1063
+ }
903
1064
  }
904
- const attributes = node.attributes;
905
- let html = `<${node.tagName}`;
906
- if (attributes) {
907
- Object.keys(attributes)
908
- .forEach((key) => {
909
- const value = attributes[key];
910
- html += ` ${key}="${value}"`;
1065
+ let xAxisIndex, column;
1066
+ // Add computed column headers and top level headers to final row set
1067
+ dataRows = multiLevelHeaders ? [topLevelColumnTitles, columnTitles] :
1068
+ [columnTitles];
1069
+ i = xAxisIndices.length;
1070
+ while (i--) { // Start from end to splice in
1071
+ xAxisIndex = xAxisIndices[i][0];
1072
+ column = xAxisIndices[i][1];
1073
+ xAxis = xAxes[xAxisIndex];
1074
+ // Sort it by X values
1075
+ rowArr.sort(function (// eslint-disable-line no-loop-func
1076
+ a, b) {
1077
+ return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
911
1078
  });
912
- }
913
- html += '>';
914
- html += node.textContent || '';
915
- (node.children || []).forEach((child) => {
916
- html += serialize(child);
917
- });
918
- html += `</${node.tagName}>`;
919
- return html;
920
- };
921
- const tree = this.getTableAST(useLocalDecimalPoint);
922
- return serialize(tree);
923
- }
924
- /**
925
- * Get the AST of a HTML table representing the chart data.
926
- *
927
- * @private
928
- *
929
- * @function Highcharts.Chart#getTableAST
930
- *
931
- * @param {boolean} [useLocalDecimalPoint]
932
- * Whether to use the local decimal point as detected from the browser.
933
- * This makes it easier to export data to Excel in the same locale as the
934
- * user is.
935
- *
936
- * @return {Highcharts.ASTNode}
937
- * The abstract syntax tree
938
- */
939
- function chartGetTableAST(useLocalDecimalPoint) {
940
- let rowLength = 0;
941
- const treeChildren = [];
942
- const options = this.options, decimalPoint = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.', useMultiLevelHeaders = pick(options.exporting.useMultiLevelHeaders, true), rows = this.getDataRows(useMultiLevelHeaders), topHeaders = useMultiLevelHeaders ? rows.shift() : null, subHeaders = rows.shift(),
943
- // Compare two rows for equality
944
- isRowEqual = function (row1, row2) {
945
- let i = row1.length;
946
- if (row2.length === i) {
947
- while (i--) {
948
- if (row1[i] !== row2[i]) {
949
- return false;
950
- }
1079
+ // Add header row
1080
+ xTitle = columnHeaderFormatter(xAxis);
1081
+ dataRows[0].splice(column, 0, xTitle);
1082
+ if (multiLevelHeaders && dataRows[1]) {
1083
+ // If using multi level headers, we just added top level header.
1084
+ // Also add for sub level
1085
+ dataRows[1].splice(column, 0, xTitle);
951
1086
  }
1087
+ // Add the category column
1088
+ rowArr.forEach(function (// eslint-disable-line no-loop-func
1089
+ row) {
1090
+ let category = row.name;
1091
+ if (xAxis && !defined(category)) {
1092
+ if (xAxis.dateTime) {
1093
+ if (row.x instanceof Date) {
1094
+ row.x = row.x.getTime();
1095
+ }
1096
+ category = time.dateFormat(csvOptions.dateFormat, row.x);
1097
+ }
1098
+ else if (xAxis.categories) {
1099
+ category = pick(xAxis.names[row.x], xAxis.categories[row.x], row.x);
1100
+ }
1101
+ else {
1102
+ category = row.x;
1103
+ }
1104
+ }
1105
+ // Add the X/date/category
1106
+ row.splice(column, 0, category);
1107
+ });
952
1108
  }
953
- else {
954
- return false;
955
- }
956
- return true;
957
- },
958
- // Get table cell HTML from value
959
- getCellHTMLFromValue = function (tagName, classes, attributes, value) {
960
- let textContent = pick(value, ''), className = 'highcharts-text' + (classes ? ' ' + classes : '');
961
- // Convert to string if number
962
- if (typeof textContent === 'number') {
963
- textContent = textContent.toString();
964
- if (decimalPoint === ',') {
965
- textContent = textContent.replace('.', decimalPoint);
1109
+ dataRows = dataRows.concat(rowArr);
1110
+ fireEvent(chart, 'exportData', { dataRows: dataRows });
1111
+ return dataRows;
1112
+ }
1113
+ /**
1114
+ * Build a HTML table with the chart's current data.
1115
+ *
1116
+ * @sample highcharts/export-data/viewdata/
1117
+ * View the data from the export menu
1118
+ *
1119
+ * @function Highcharts.Exporting#getTable
1120
+ *
1121
+ * @param {boolean} [useLocalDecimalPoint]
1122
+ * Whether to use the local decimal point as detected from the browser. This
1123
+ * makes it easier to export data to Excel in the same locale as the user
1124
+ * is.
1125
+ *
1126
+ * @return {string}
1127
+ * HTML representation of the data.
1128
+ *
1129
+ * @emits Highcharts.Chart#event:afterGetTable
1130
+ *
1131
+ * @requires modules/exporting
1132
+ * @requires modules/export-data
1133
+ */
1134
+ function getTable(useLocalDecimalPoint) {
1135
+ const serialize = (node) => {
1136
+ if (!node.tagName || node.tagName === '#text') {
1137
+ // Text node
1138
+ return node.textContent || '';
966
1139
  }
967
- className = 'highcharts-number';
968
- }
969
- else if (!value) {
970
- className = 'highcharts-empty';
971
- }
972
- attributes = extend({ 'class': className }, attributes);
973
- return {
974
- tagName,
975
- attributes,
976
- textContent
1140
+ const attributes = node.attributes;
1141
+ let html = `<${node.tagName}`;
1142
+ if (attributes) {
1143
+ Object.keys(attributes)
1144
+ .forEach((key) => {
1145
+ const value = attributes[key];
1146
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
1147
+ html += ` ${key}="${value}"`;
1148
+ });
1149
+ }
1150
+ html += '>';
1151
+ html += node.textContent || '';
1152
+ (node.children || []).forEach((child) => {
1153
+ html += serialize(child);
1154
+ });
1155
+ html += `</${node.tagName}>`;
1156
+ return html;
977
1157
  };
978
- },
979
- // Get table header markup from row data
980
- getTableHeaderHTML = function (topheaders, subheaders, rowLength) {
981
- const theadChildren = [];
982
- let i = 0, len = rowLength || subheaders && subheaders.length, next, cur, curColspan = 0, rowspan;
983
- // Clean up multiple table headers. Chart.getDataRows() returns two
984
- // levels of headers when using multilevel, not merged. We need to
985
- // merge identical headers, remove redundant headers, and keep it
986
- // all marked up nicely.
987
- if (useMultiLevelHeaders &&
988
- topheaders &&
989
- subheaders &&
990
- !isRowEqual(topheaders, subheaders)) {
991
- const trChildren = [];
992
- for (; i < len; ++i) {
993
- cur = topheaders[i];
994
- next = topheaders[i + 1];
995
- if (cur === next) {
996
- ++curColspan;
997
- }
998
- else if (curColspan) {
999
- // Ended colspan
1000
- // Add cur to HTML with colspan.
1001
- trChildren.push(getCellHTMLFromValue('th', 'highcharts-table-topheading', {
1002
- scope: 'col',
1003
- colspan: curColspan + 1
1004
- }, cur));
1005
- curColspan = 0;
1158
+ const tree = this.getTableAST(useLocalDecimalPoint);
1159
+ return serialize(tree);
1160
+ }
1161
+ /**
1162
+ * Get the AST of a HTML table representing the chart data.
1163
+ *
1164
+ * @private
1165
+ * @function Highcharts.Exporting#getTableAST
1166
+ *
1167
+ * @param {boolean} [useLocalDecimalPoint]
1168
+ * Whether to use the local decimal point as detected from the browser. This
1169
+ * makes it easier to export data to Excel in the same locale as the user
1170
+ * is.
1171
+ *
1172
+ * @return {Highcharts.ASTNode}
1173
+ * The abstract syntax tree
1174
+ *
1175
+ * @requires modules/exporting
1176
+ * @requires modules/export-data
1177
+ */
1178
+ function getTableAST(useLocalDecimalPoint) {
1179
+ let rowLength = 0;
1180
+ const treeChildren = [], exporting = this, chart = exporting.chart, options = chart.options, decimalPoint = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.', useMultiLevelHeaders = pick(exporting.options.useMultiLevelHeaders, true), rows = exporting.getDataRows(useMultiLevelHeaders), topHeaders = useMultiLevelHeaders ? rows.shift() : null, subHeaders = rows.shift(),
1181
+ // Compare two rows for equality
1182
+ isRowEqual = function (row1, row2) {
1183
+ let i = row1.length;
1184
+ if (row2.length === i) {
1185
+ while (i--) {
1186
+ if (row1[i] !== row2[i]) {
1187
+ return false;
1188
+ }
1006
1189
  }
1007
- else {
1008
- // Cur is standalone. If it is same as sublevel,
1009
- // remove sublevel and add just toplevel.
1010
- if (cur === subheaders[i]) {
1011
- if (options.exporting.useRowspanHeaders) {
1012
- rowspan = 2;
1013
- delete subheaders[i];
1190
+ }
1191
+ else {
1192
+ return false;
1193
+ }
1194
+ return true;
1195
+ },
1196
+ // Get table cell HTML from value
1197
+ getCellHTMLFromValue = function (tagName, classes, attributes, value) {
1198
+ let textContent = pick(value, ''), className = 'highcharts-text' + (classes ? ' ' + classes : '');
1199
+ // Convert to string if number
1200
+ if (typeof textContent === 'number') {
1201
+ textContent = chart.numberFormatter(textContent, -1, decimalPoint, tagName === 'th' ? '' : void 0);
1202
+ className = 'highcharts-number';
1203
+ }
1204
+ else if (!value) {
1205
+ className = 'highcharts-empty';
1206
+ }
1207
+ attributes = extend({ 'class': className }, attributes);
1208
+ return {
1209
+ tagName,
1210
+ attributes,
1211
+ textContent
1212
+ };
1213
+ },
1214
+ // Get table header markup from row data
1215
+ getTableHeaderHTML = function (topheaders, subheaders, rowLength) {
1216
+ const theadChildren = [];
1217
+ let i = 0, len = rowLength || subheaders && subheaders.length, next, cur, curColspan = 0, rowspan;
1218
+ // Clean up multiple table headers. Chart.getDataRows() returns
1219
+ // two levels of headers when using multilevel, not merged. We
1220
+ // need to merge identical headers, remove redundant headers,
1221
+ // and keep it all marked up nicely.
1222
+ if (useMultiLevelHeaders &&
1223
+ topheaders &&
1224
+ subheaders &&
1225
+ !isRowEqual(topheaders, subheaders)) {
1226
+ const trChildren = [];
1227
+ for (; i < len; ++i) {
1228
+ cur = topheaders[i];
1229
+ next = topheaders[i + 1];
1230
+ if (cur === next) {
1231
+ ++curColspan;
1232
+ }
1233
+ else if (curColspan) {
1234
+ // Ended colspan
1235
+ // Add cur to HTML with colspan.
1236
+ trChildren.push(getCellHTMLFromValue('th', 'highcharts-table-topheading', {
1237
+ scope: 'col',
1238
+ colspan: curColspan + 1
1239
+ }, cur));
1240
+ curColspan = 0;
1241
+ }
1242
+ else {
1243
+ // Cur is standalone. If it is same as sublevel,
1244
+ // remove sublevel and add just toplevel.
1245
+ if (cur === subheaders[i]) {
1246
+ if (exporting.options.useRowspanHeaders) {
1247
+ rowspan = 2;
1248
+ // eslint-disable-next-line @typescript-eslint/no-array-delete
1249
+ delete subheaders[i];
1250
+ }
1251
+ else {
1252
+ rowspan = 1;
1253
+ subheaders[i] = '';
1254
+ }
1014
1255
  }
1015
1256
  else {
1016
1257
  rowspan = 1;
1017
- subheaders[i] = '';
1018
1258
  }
1259
+ const cell = getCellHTMLFromValue('th', 'highcharts-table-topheading', { scope: 'col' }, cur);
1260
+ if (rowspan > 1 && cell.attributes) {
1261
+ cell.attributes.valign = 'top';
1262
+ cell.attributes.rowspan = rowspan;
1263
+ }
1264
+ trChildren.push(cell);
1019
1265
  }
1020
- else {
1021
- rowspan = 1;
1022
- }
1023
- const cell = getCellHTMLFromValue('th', 'highcharts-table-topheading', { scope: 'col' }, cur);
1024
- if (rowspan > 1 && cell.attributes) {
1025
- cell.attributes.valign = 'top';
1026
- cell.attributes.rowspan = rowspan;
1266
+ }
1267
+ theadChildren.push({
1268
+ tagName: 'tr',
1269
+ children: trChildren
1270
+ });
1271
+ }
1272
+ // Add the subheaders (the only headers if not using
1273
+ // multilevels)
1274
+ if (subheaders) {
1275
+ const trChildren = [];
1276
+ for (i = 0, len = subheaders.length; i < len; ++i) {
1277
+ if (typeof subheaders[i] !== 'undefined') {
1278
+ trChildren.push(getCellHTMLFromValue('th', null, { scope: 'col' }, subheaders[i]));
1027
1279
  }
1028
- trChildren.push(cell);
1029
1280
  }
1281
+ theadChildren.push({
1282
+ tagName: 'tr',
1283
+ children: trChildren
1284
+ });
1030
1285
  }
1031
- theadChildren.push({
1032
- tagName: 'tr',
1033
- children: trChildren
1286
+ return {
1287
+ tagName: 'thead',
1288
+ children: theadChildren
1289
+ };
1290
+ };
1291
+ // Add table caption
1292
+ const { tableCaption } = exporting.options || {};
1293
+ if (tableCaption !== false) {
1294
+ treeChildren.push({
1295
+ tagName: 'caption',
1296
+ attributes: {
1297
+ 'class': 'highcharts-table-caption'
1298
+ },
1299
+ textContent: typeof tableCaption === 'string' ?
1300
+ tableCaption :
1301
+ options.title?.text || options.lang.chartTitle
1034
1302
  });
1035
1303
  }
1036
- // Add the subheaders (the only headers if not using multilevels)
1037
- if (subheaders) {
1304
+ // Find longest row
1305
+ for (let i = 0, len = rows.length; i < len; ++i) {
1306
+ if (rows[i].length > rowLength) {
1307
+ rowLength = rows[i].length;
1308
+ }
1309
+ }
1310
+ // Add header
1311
+ treeChildren.push(getTableHeaderHTML(topHeaders, subHeaders || [], Math.max(rowLength, subHeaders?.length || 0)));
1312
+ // Transform the rows to HTML
1313
+ const trs = [];
1314
+ rows.forEach(function (row) {
1038
1315
  const trChildren = [];
1039
- for (i = 0, len = subheaders.length; i < len; ++i) {
1040
- if (typeof subheaders[i] !== 'undefined') {
1041
- trChildren.push(getCellHTMLFromValue('th', null, { scope: 'col' }, subheaders[i]));
1042
- }
1316
+ for (let j = 0; j < rowLength; j++) {
1317
+ // Make first column a header too. Especially important for
1318
+ // category axes, but also might make sense for datetime? Should
1319
+ // await user feedback on this.
1320
+ trChildren.push(getCellHTMLFromValue(j ? 'td' : 'th', null, j ? {} : { scope: 'row' }, row[j]));
1043
1321
  }
1044
- theadChildren.push({
1322
+ trs.push({
1045
1323
  tagName: 'tr',
1046
1324
  children: trChildren
1047
1325
  });
1048
- }
1049
- return {
1050
- tagName: 'thead',
1051
- children: theadChildren
1052
- };
1053
- };
1054
- // Add table caption
1055
- const { tableCaption } = options.exporting || {};
1056
- if (tableCaption !== false) {
1326
+ });
1057
1327
  treeChildren.push({
1058
- tagName: 'caption',
1059
- attributes: {
1060
- 'class': 'highcharts-table-caption'
1061
- },
1062
- textContent: typeof tableCaption === 'string' ?
1063
- tableCaption :
1064
- options.title?.text || options.lang.chartTitle
1328
+ tagName: 'tbody',
1329
+ children: trs
1065
1330
  });
1331
+ const e = {
1332
+ tree: {
1333
+ tagName: 'table',
1334
+ id: `highcharts-data-table-${chart.index}`,
1335
+ children: treeChildren
1336
+ }
1337
+ };
1338
+ fireEvent(chart, 'afterGetTableAST', e);
1339
+ return e.tree;
1066
1340
  }
1067
- // Find longest row
1068
- for (let i = 0, len = rows.length; i < len; ++i) {
1069
- if (rows[i].length > rowLength) {
1070
- rowLength = rows[i].length;
1071
- }
1341
+ /**
1342
+ * Hide the data table when visible.
1343
+ *
1344
+ * @function Highcharts.Exporting#hideData
1345
+ *
1346
+ * @requires modules/exporting
1347
+ * @requires modules/export-data
1348
+ */
1349
+ function hideData() {
1350
+ this.toggleDataTable(false);
1072
1351
  }
1073
- // Add header
1074
- treeChildren.push(getTableHeaderHTML(topHeaders, subHeaders, Math.max(rowLength, subHeaders.length)));
1075
- // Transform the rows to HTML
1076
- const trs = [];
1077
- rows.forEach(function (row) {
1078
- const trChildren = [];
1079
- for (let j = 0; j < rowLength; j++) {
1080
- // Make first column a header too. Especially important for
1081
- // category axes, but also might make sense for datetime? Should
1082
- // await user feedback on this.
1083
- trChildren.push(getCellHTMLFromValue(j ? 'td' : 'th', null, j ? {} : { scope: 'row' }, row[j]));
1084
- }
1085
- trs.push({
1086
- tagName: 'tr',
1087
- children: trChildren
1088
- });
1089
- });
1090
- treeChildren.push({
1091
- tagName: 'tbody',
1092
- children: trs
1093
- });
1094
- const e = {
1095
- tree: {
1096
- tagName: 'table',
1097
- id: `highcharts-data-table-${this.index}`,
1098
- children: treeChildren
1352
+ /**
1353
+ * Toggle showing data table.
1354
+ *
1355
+ * @private
1356
+ * @function Highcharts.Exporting#hideData
1357
+ *
1358
+ * @param {boolean} [show]
1359
+ * Whether to show data table or not.
1360
+ *
1361
+ * @requires modules/exporting
1362
+ * @requires modules/export-data
1363
+ */
1364
+ function toggleDataTable(show) {
1365
+ const chart = this.chart,
1366
+ // Create the div
1367
+ createContainer = (show = pick(show, !this.isDataTableVisible)) &&
1368
+ !this.dataTableDiv;
1369
+ if (createContainer) {
1370
+ this.dataTableDiv = ExportData_doc.createElement('div');
1371
+ this.dataTableDiv.className = 'highcharts-data-table';
1372
+ // Insert after the chart container
1373
+ chart.renderTo.parentNode.insertBefore(this.dataTableDiv, chart.renderTo.nextSibling);
1099
1374
  }
1100
- };
1101
- fireEvent(this, 'aftergetTableAST', e);
1102
- return e.tree;
1103
- }
1104
- /**
1105
- * Export-data module required. Hide the data table when visible.
1106
- *
1107
- * @function Highcharts.Chart#hideData
1108
- */
1109
- function chartHideData() {
1110
- this.toggleDataTable(false);
1111
- }
1112
- /**
1113
- * @private
1114
- */
1115
- function chartToggleDataTable(show) {
1116
- show = pick(show, !this.isDataTableVisible);
1117
- // Create the div
1118
- const createContainer = show && !this.dataTableDiv;
1119
- if (createContainer) {
1120
- this.dataTableDiv = ExportData_doc.createElement('div');
1121
- this.dataTableDiv.className = 'highcharts-data-table';
1122
- // Insert after the chart container
1123
- this.renderTo.parentNode.insertBefore(this.dataTableDiv, this.renderTo.nextSibling);
1124
- }
1125
- // Toggle the visibility
1126
- if (this.dataTableDiv) {
1127
- const style = this.dataTableDiv.style, oldDisplay = style.display;
1128
- style.display = show ? 'block' : 'none';
1129
- // Generate the data table
1130
- if (show) {
1131
- this.dataTableDiv.innerHTML = (external_highcharts_src_js_default_AST_default()).emptyHTML;
1132
- const ast = new (external_highcharts_src_js_default_AST_default())([this.getTableAST()]);
1133
- ast.addToDOM(this.dataTableDiv);
1134
- fireEvent(this, 'afterViewData', {
1135
- element: this.dataTableDiv,
1136
- wasHidden: createContainer || oldDisplay !== style.display
1137
- });
1375
+ // Toggle the visibility
1376
+ if (this.dataTableDiv) {
1377
+ const style = this.dataTableDiv.style, oldDisplay = style.display;
1378
+ style.display = show ? 'block' : 'none';
1379
+ // Generate the data table
1380
+ if (show) {
1381
+ this.dataTableDiv.innerHTML = (external_highcharts_src_js_default_AST_default()).emptyHTML;
1382
+ const ast = new (external_highcharts_src_js_default_AST_default())([this.getTableAST()]);
1383
+ ast.addToDOM(this.dataTableDiv);
1384
+ fireEvent(chart, 'afterViewData', {
1385
+ element: this.dataTableDiv,
1386
+ wasHidden: createContainer || oldDisplay !== style.display
1387
+ });
1388
+ }
1389
+ else {
1390
+ fireEvent(chart, 'afterHideData');
1391
+ }
1138
1392
  }
1139
- else {
1140
- fireEvent(this, 'afterHideData');
1393
+ // Set the flag
1394
+ this.isDataTableVisible = show;
1395
+ // Change the menu item text
1396
+ const exportDivElements = this.divElements, options = this.options, menuItems = options.buttons?.contextButton.menuItems, lang = chart.options.lang;
1397
+ if (options &&
1398
+ options.menuItemDefinitions &&
1399
+ lang &&
1400
+ lang.viewData &&
1401
+ lang.hideData &&
1402
+ menuItems &&
1403
+ exportDivElements) {
1404
+ const exportDivElement = exportDivElements[menuItems.indexOf('viewData')];
1405
+ if (exportDivElement) {
1406
+ external_highcharts_src_js_default_AST_default().setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);
1407
+ }
1141
1408
  }
1142
1409
  }
1143
- // Set the flag
1144
- this.isDataTableVisible = show;
1145
- // Change the menu item text
1146
- const exportDivElements = this.exportDivElements, options = this.options.exporting, menuItems = options &&
1147
- options.buttons &&
1148
- options.buttons.contextButton.menuItems, lang = this.options.lang;
1149
- if (options &&
1150
- options.menuItemDefinitions &&
1151
- lang &&
1152
- lang.viewData &&
1153
- lang.hideData &&
1154
- menuItems &&
1155
- exportDivElements) {
1156
- const exportDivElement = exportDivElements[menuItems.indexOf('viewData')];
1157
- if (exportDivElement) {
1158
- external_highcharts_src_js_default_AST_default().setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);
1159
- }
1410
+ /**
1411
+ * View the data in a table below the chart.
1412
+ *
1413
+ * @function Highcharts.Exporting#viewData
1414
+ *
1415
+ * @emits Highcharts.Chart#event:afterViewData
1416
+ *
1417
+ * @requires modules/exporting
1418
+ * @requires modules/export-data
1419
+ */
1420
+ function viewData() {
1421
+ this.toggleDataTable(true);
1160
1422
  }
1161
- }
1162
- /**
1163
- * Export-data module required. View the data in a table below the chart.
1164
- *
1165
- * @function Highcharts.Chart#viewData
1166
- *
1167
- * @emits Highcharts.Chart#event:afterViewData
1168
- */
1169
- function chartViewData() {
1170
- this.toggleDataTable(true);
1171
- }
1172
- /**
1173
- * @private
1174
- */
1175
- function compose(ChartClass, SeriesClass) {
1176
- const chartProto = ChartClass.prototype;
1177
- if (!chartProto.getCSV) {
1178
- const exportingOptions = getOptions().exporting;
1179
- // Add an event listener to handle the showTable option
1180
- addEvent(ChartClass, 'afterViewData', onChartAfterViewData);
1181
- addEvent(ChartClass, 'render', onChartRenderer);
1182
- addEvent(ChartClass, 'destroy', onChartDestroy);
1183
- chartProto.downloadCSV = chartDownloadCSV;
1184
- chartProto.downloadXLS = chartDownloadXLS;
1185
- chartProto.getCSV = chartGetCSV;
1186
- chartProto.getDataRows = chartGetDataRows;
1187
- chartProto.getTable = chartGetTable;
1188
- chartProto.getTableAST = chartGetTableAST;
1189
- chartProto.hideData = chartHideData;
1190
- chartProto.toggleDataTable = chartToggleDataTable;
1191
- chartProto.viewData = chartViewData;
1192
- // Add "Download CSV" to the exporting menu.
1193
- // @todo consider move to defaults
1194
- if (exportingOptions) {
1195
- extend(exportingOptions.menuItemDefinitions, {
1196
- downloadCSV: {
1197
- textKey: 'downloadCSV',
1198
- onclick: function () {
1199
- this.downloadCSV();
1200
- }
1201
- },
1202
- downloadXLS: {
1203
- textKey: 'downloadXLS',
1204
- onclick: function () {
1205
- this.downloadXLS();
1206
- }
1207
- },
1208
- viewData: {
1209
- textKey: 'viewData',
1210
- onclick: function () {
1211
- wrapLoading.call(this, this.toggleDataTable);
1212
- }
1423
+ /**
1424
+ * Wrapper function for the download functions, which handles showing and
1425
+ * hiding the loading message
1426
+ *
1427
+ * @private
1428
+ *
1429
+ * @requires modules/exporting
1430
+ * @requires modules/export-data
1431
+ */
1432
+ function wrapLoading(fn) {
1433
+ const chart = this.chart, showMessage = Boolean(this.options.showExportInProgress);
1434
+ // Prefer requestAnimationFrame if available
1435
+ const timeoutFn = ExportData_win.requestAnimationFrame || setTimeout;
1436
+ // Outer timeout avoids menu freezing on click
1437
+ timeoutFn(() => {
1438
+ showMessage &&
1439
+ chart.showLoading(chart.options.lang.exportInProgress);
1440
+ timeoutFn(() => {
1441
+ try {
1442
+ fn.call(this);
1443
+ }
1444
+ finally {
1445
+ showMessage && chart.hideLoading();
1213
1446
  }
1214
1447
  });
1215
- if (exportingOptions.buttons &&
1216
- exportingOptions.buttons.contextButton.menuItems) {
1217
- exportingOptions.buttons.contextButton.menuItems.push('separator', 'downloadCSV', 'downloadXLS', 'viewData');
1218
- }
1219
- }
1220
- setOptions(ExportData_ExportDataDefaults);
1221
- const { arearange: AreaRangeSeries, gantt: GanttSeries, map: MapSeries, mapbubble: MapBubbleSeries, treemap: TreemapSeries, xrange: XRangeSeries } = SeriesClass.types;
1222
- if (AreaRangeSeries) {
1223
- AreaRangeSeries.prototype.keyToAxis = {
1224
- low: 'y',
1225
- high: 'y'
1226
- };
1227
- }
1228
- if (GanttSeries) {
1229
- GanttSeries.prototype.exportKey = 'name';
1230
- GanttSeries.prototype.keyToAxis = {
1231
- start: 'x',
1232
- end: 'x'
1233
- };
1234
- }
1235
- if (MapSeries) {
1236
- MapSeries.prototype.exportKey = 'name';
1237
- }
1238
- if (MapBubbleSeries) {
1239
- MapBubbleSeries.prototype.exportKey = 'name';
1240
- }
1241
- if (TreemapSeries) {
1242
- TreemapSeries.prototype.exportKey = 'name';
1243
- }
1244
- if (XRangeSeries) {
1245
- XRangeSeries.prototype.keyToAxis = {
1246
- x2: 'x'
1247
- };
1248
- }
1249
- }
1250
- }
1251
- /**
1252
- * Get a blob object from content, if blob is supported
1253
- *
1254
- * @private
1255
- * @param {string} content
1256
- * The content to create the blob from.
1257
- * @param {string} type
1258
- * The type of the content.
1259
- * @return {string|undefined}
1260
- * The blob object, or undefined if not supported.
1261
- */
1262
- function getBlobFromContent(content, type) {
1263
- const nav = ExportData_win.navigator, domurl = ExportData_win.URL || ExportData_win.webkitURL || ExportData_win;
1264
- try {
1265
- // MS specific
1266
- if ((nav.msSaveOrOpenBlob) && ExportData_win.MSBlobBuilder) {
1267
- const blob = new ExportData_win.MSBlobBuilder();
1268
- blob.append(content);
1269
- return blob.getBlob('image/svg+xml');
1270
- }
1271
- return domurl.createObjectURL(new ExportData_win.Blob(['\uFEFF' + content], // #7084
1272
- { type: type }));
1273
- }
1274
- catch (e) {
1275
- // Ignore
1448
+ });
1276
1449
  }
1277
- }
1278
- /**
1279
- * @private
1280
- */
1281
- function onChartAfterViewData() {
1282
- const chart = this, dataTableDiv = chart.dataTableDiv, getCellValue = (tr, index) => tr.children[index].textContent, comparer = (index, ascending) => (a, b) => {
1283
- const sort = (v1, v2) => (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?
1284
- v1 - v2 :
1285
- v1.toString().localeCompare(v2));
1286
- return sort(getCellValue(ascending ? a : b, index), getCellValue(ascending ? b : a, index));
1287
- };
1288
- if (dataTableDiv &&
1289
- chart.options.exporting &&
1290
- chart.options.exporting.allowTableSorting) {
1291
- const row = dataTableDiv.querySelector('thead tr');
1292
- if (row) {
1293
- row.childNodes.forEach((th) => {
1294
- const table = th.closest('table');
1295
- th.addEventListener('click', function () {
1296
- const rows = [...dataTableDiv.querySelectorAll('tr:not(thead tr)')], headers = [...th.parentNode.children];
1297
- rows.sort(comparer(headers.indexOf(th), chart.ascendingOrderInTable =
1298
- !chart.ascendingOrderInTable)).forEach((tr) => {
1299
- table.appendChild(tr);
1300
- });
1301
- headers.forEach((th) => {
1302
- [
1303
- 'highcharts-sort-ascending',
1304
- 'highcharts-sort-descending'
1305
- ].forEach((className) => {
1306
- if (th.classList.contains(className)) {
1307
- th.classList.remove(className);
1308
- }
1309
- });
1450
+ /**
1451
+ * Function that runs on the chart's 'afterViewData' event.
1452
+ *
1453
+ * @private
1454
+ * @function Highcharts.Chart#onChartAfterViewData
1455
+ *
1456
+ * @requires modules/exporting
1457
+ * @requires modules/export-data
1458
+ */
1459
+ function onChartAfterViewData() {
1460
+ const exporting = this.exporting, dataTableDiv = exporting?.dataTableDiv, getCellValue = (tr, index) => tr.children[index].textContent, comparer = (index, ascending) => (a, b) => {
1461
+ const sort = (v1, v2) => (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?
1462
+ v1 - v2 :
1463
+ v1.toString().localeCompare(v2));
1464
+ return sort(getCellValue(ascending ? a : b, index), getCellValue(ascending ? b : a, index));
1465
+ };
1466
+ if (dataTableDiv && exporting.options.allowTableSorting) {
1467
+ const row = dataTableDiv.querySelector('thead tr');
1468
+ if (row) {
1469
+ row.childNodes.forEach((th) => {
1470
+ const tableBody = dataTableDiv.querySelector('tbody');
1471
+ th.addEventListener('click', function () {
1472
+ const rows = [...dataTableDiv.querySelectorAll('tr:not(thead tr)')], headers = [...th.parentNode.children];
1473
+ if (exporting) {
1474
+ rows.sort(comparer(headers.indexOf(th), exporting.ascendingOrderInTable =
1475
+ !exporting.ascendingOrderInTable)).forEach((tr) => {
1476
+ tableBody?.appendChild(tr);
1477
+ });
1478
+ headers.forEach((th) => {
1479
+ [
1480
+ 'highcharts-sort-ascending',
1481
+ 'highcharts-sort-descending'
1482
+ ].forEach((className) => {
1483
+ if (th.classList.contains(className)) {
1484
+ th.classList.remove(className);
1485
+ }
1486
+ });
1487
+ });
1488
+ th.classList.add(exporting.ascendingOrderInTable ?
1489
+ 'highcharts-sort-ascending' :
1490
+ 'highcharts-sort-descending');
1491
+ }
1310
1492
  });
1311
- th.classList.add(chart.ascendingOrderInTable ?
1312
- 'highcharts-sort-ascending' :
1313
- 'highcharts-sort-descending');
1314
1493
  });
1315
- });
1494
+ }
1316
1495
  }
1317
1496
  }
1318
- }
1319
- /**
1320
- * Handle the showTable option
1321
- * @private
1322
- */
1323
- function onChartRenderer() {
1324
- if (this.options &&
1325
- this.options.exporting &&
1326
- this.options.exporting.showTable &&
1327
- !this.options.chart.forExport) {
1328
- this.viewData();
1497
+ /**
1498
+ * Function that runs on the chart's 'render' event. Handle the showTable
1499
+ * option.
1500
+ *
1501
+ * @private
1502
+ * @function Highcharts.Chart#onChartRenderer
1503
+ *
1504
+ * @requires modules/exporting
1505
+ * @requires modules/export-data
1506
+ */
1507
+ function onChartRenderer() {
1508
+ if (this.options?.exporting?.showTable &&
1509
+ !this.options.chart.forExport) {
1510
+ this.exporting?.viewData();
1511
+ }
1329
1512
  }
1330
- }
1331
- /**
1332
- * Clean up
1333
- * @private
1334
- */
1335
- function onChartDestroy() {
1336
- this.dataTableDiv?.remove();
1337
- }
1513
+ /**
1514
+ * Function that runs on the chart's 'destroy' event. Handle cleaning up the
1515
+ * dataTableDiv element.
1516
+ *
1517
+ * @private
1518
+ * @function Highcharts.Chart#onChartDestroy
1519
+ *
1520
+ * @requires modules/exporting
1521
+ * @requires modules/export-data
1522
+ */
1523
+ function onChartDestroy() {
1524
+ this.exporting?.dataTableDiv?.remove();
1525
+ }
1526
+ })(ExportData || (ExportData = {}));
1338
1527
  /* *
1339
1528
  *
1340
- * Default Export
1529
+ * Default Export
1341
1530
  *
1342
1531
  * */
1343
- const ExportData = {
1344
- compose
1345
- };
1346
1532
  /* harmony default export */ const ExportData_ExportData = (ExportData);
1347
1533
  /* *
1348
1534
  *
@@ -1393,7 +1579,7 @@ const G = (external_highcharts_src_js_default_default());
1393
1579
  G.dataURLtoBlob = G.dataURLtoBlob || Extensions_DownloadURL.dataURLtoBlob;
1394
1580
  G.downloadURL = G.downloadURL || Extensions_DownloadURL.downloadURL;
1395
1581
  // Compose
1396
- ExportData_ExportData.compose(G.Chart, G.Series);
1582
+ ExportData_ExportData.compose(G.Chart, G.Exporting, G.Series);
1397
1583
  /* harmony default export */ const export_data_src = ((external_highcharts_src_js_default_default()));
1398
1584
 
1399
1585
  export { export_data_src as default };