@ntlab/ntjs-assets 2.73.0 → 2.74.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 (838) hide show
  1. package/assets/js/cdn.json +1 -1
  2. package/assets/js/exif-js/exif.min.js +1 -8
  3. package/assets/js/highcharts/css/annotations/popup.css +86 -45
  4. package/assets/js/highcharts/css/highcharts.css +40 -30
  5. package/assets/js/highcharts/css/stocktools/gui.css +28 -11
  6. package/assets/js/highcharts/es-modules/Accessibility/Components/InfoRegionsComponent.js +3 -3
  7. package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +10 -1
  8. package/assets/js/highcharts/es-modules/Accessibility/Components/MenuComponent.js +23 -22
  9. package/assets/js/highcharts/es-modules/Accessibility/HighContrastMode.js +0 -5
  10. package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +5 -0
  11. package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +19 -11
  12. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +14 -1
  13. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +3 -4
  14. package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +1 -1
  15. package/assets/js/highcharts/es-modules/Core/Axis/WaterfallAxis.js +4 -4
  16. package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +31 -25
  17. package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +13 -0
  18. package/assets/js/highcharts/es-modules/Core/Chart/GanttChart.js +4 -2
  19. package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +1 -1
  20. package/assets/js/highcharts/es-modules/Core/Color/Color.js +4 -8
  21. package/assets/js/highcharts/es-modules/Core/Defaults.js +4 -0
  22. package/assets/js/highcharts/es-modules/Core/Globals.js +1 -1
  23. package/assets/js/highcharts/es-modules/Core/HttpUtilities.js +45 -38
  24. package/assets/js/highcharts/es-modules/Core/Pointer.js +3 -4
  25. package/assets/js/highcharts/es-modules/Core/Renderer/HTML/AST.js +14 -14
  26. package/assets/js/highcharts/es-modules/Core/Renderer/HTML/HTMLElement.js +6 -2
  27. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +4 -1
  28. package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +4 -2
  29. package/assets/js/highcharts/es-modules/Core/Series/Series.js +16 -6
  30. package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +1 -3
  31. package/assets/js/highcharts/es-modules/Core/Templating.js +6 -5
  32. package/assets/js/highcharts/es-modules/Core/Tooltip.js +3 -1
  33. package/assets/js/highcharts/es-modules/Data/Connectors/CSVConnector.js +32 -15
  34. package/assets/js/highcharts/es-modules/Data/Connectors/DataConnector.js +107 -12
  35. package/assets/js/highcharts/es-modules/Data/Connectors/GoogleSheetsConnector.js +29 -17
  36. package/assets/js/highcharts/es-modules/Data/Connectors/HTMLTableConnector.js +3 -3
  37. package/assets/js/highcharts/es-modules/Data/Connectors/JSONConnector.js +37 -16
  38. package/assets/js/highcharts/es-modules/Data/Converters/HTMLTableConverter.js +1 -1
  39. package/assets/js/highcharts/es-modules/Data/DataPool.js +15 -4
  40. package/assets/js/highcharts/es-modules/Extensions/Annotations/Annotation.js +10 -7
  41. package/assets/js/highcharts/es-modules/Extensions/Annotations/AnnotationChart.js +7 -3
  42. package/assets/js/highcharts/es-modules/Extensions/Annotations/AnnotationDefaults.js +38 -12
  43. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +10 -3
  44. package/assets/js/highcharts/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +1 -1
  45. package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +10 -4
  46. package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupComposition.js +1 -1
  47. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +0 -3
  48. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/CrookedLine.js +97 -94
  49. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/ElliottWave.js +43 -36
  50. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Fibonacci.js +86 -82
  51. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +74 -71
  52. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/InfinityLine.js +17 -3
  53. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +229 -226
  54. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Pitchfork.js +39 -40
  55. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/TimeCycles.js +56 -52
  56. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Tunnel.js +80 -76
  57. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/VerticalLine.js +57 -53
  58. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +22 -3
  59. package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +41 -8
  60. package/assets/js/highcharts/es-modules/Extensions/ExportData/ExportData.js +876 -780
  61. package/assets/js/highcharts/es-modules/Extensions/ExportData/ExportDataDefaults.js +67 -13
  62. package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +1091 -546
  63. package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +52 -36
  64. package/assets/js/highcharts/es-modules/Extensions/Exporting/Fullscreen.js +2 -2
  65. package/assets/js/highcharts/es-modules/Extensions/NonCartesianSeriesZoom/NonCartesianSeriesZoom.js +311 -0
  66. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +254 -575
  67. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +9 -38
  68. package/assets/js/highcharts/es-modules/Extensions/Pane/Pane.js +1 -1
  69. package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +9 -1
  70. package/assets/js/highcharts/es-modules/Extensions/Themes/Adaptive.js +1009 -0
  71. package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +1 -1
  72. package/assets/js/highcharts/es-modules/Series/Bubble/BubblePoint.js +2 -2
  73. package/assets/js/highcharts/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -2
  74. package/assets/js/highcharts/es-modules/Series/DragNodesComposition.js +4 -0
  75. package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeriesDefaults.js +2 -0
  76. package/assets/js/highcharts/es-modules/Series/GraphLayoutComposition.js +2 -1
  77. package/assets/js/highcharts/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -2
  78. package/assets/js/highcharts/es-modules/Series/Item/ItemSeries.js +1 -1
  79. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubblePoint.js +5 -0
  80. package/assets/js/highcharts/es-modules/Series/Pie/PieSeriesDefaults.js +1 -2
  81. package/assets/js/highcharts/es-modules/Series/PolarComposition.js +1 -1
  82. package/assets/js/highcharts/es-modules/Series/SolidGauge/SolidGaugeSeries.js +7 -2
  83. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +3 -1
  84. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +8 -1
  85. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +6 -8
  86. package/assets/js/highcharts/es-modules/Series/Wordcloud/WordcloudSeries.js +87 -10
  87. package/assets/js/highcharts/es-modules/Shared/BaseForm.js +6 -3
  88. package/assets/js/highcharts/es-modules/Shared/TimeBase.js +5 -1
  89. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorComposition.js +2 -2
  90. package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +5 -7
  91. package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolbar.js +1 -1
  92. package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolsBindings.js +34 -113
  93. package/assets/js/highcharts/es-modules/masters/highcharts-3d.src.js +3 -1
  94. package/assets/js/highcharts/es-modules/masters/highcharts-gantt.src.js +1 -1
  95. package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +1 -1
  96. package/assets/js/highcharts/es-modules/masters/highcharts.src.js +1 -1
  97. package/assets/js/highcharts/es-modules/masters/highmaps.src.js +1 -1
  98. package/assets/js/highcharts/es-modules/masters/highstock.src.js +1 -1
  99. package/assets/js/highcharts/es-modules/masters/i18n/fr-FR.src.js +1 -1
  100. package/assets/js/highcharts/es-modules/masters/i18n/nb-NO.src.js +1 -1
  101. package/assets/js/highcharts/es-modules/masters/i18n/zh-CN.src.js +1 -1
  102. package/assets/js/highcharts/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  103. package/assets/js/highcharts/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  104. package/assets/js/highcharts/es-modules/masters/indicators/ao.src.js +1 -1
  105. package/assets/js/highcharts/es-modules/masters/indicators/apo.src.js +1 -1
  106. package/assets/js/highcharts/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  107. package/assets/js/highcharts/es-modules/masters/indicators/aroon.src.js +1 -1
  108. package/assets/js/highcharts/es-modules/masters/indicators/atr.src.js +1 -1
  109. package/assets/js/highcharts/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  110. package/assets/js/highcharts/es-modules/masters/indicators/cci.src.js +1 -1
  111. package/assets/js/highcharts/es-modules/masters/indicators/chaikin.src.js +1 -1
  112. package/assets/js/highcharts/es-modules/masters/indicators/cmf.src.js +1 -1
  113. package/assets/js/highcharts/es-modules/masters/indicators/cmo.src.js +1 -1
  114. package/assets/js/highcharts/es-modules/masters/indicators/dema.src.js +1 -1
  115. package/assets/js/highcharts/es-modules/masters/indicators/disparity-index.src.js +1 -1
  116. package/assets/js/highcharts/es-modules/masters/indicators/dmi.src.js +1 -1
  117. package/assets/js/highcharts/es-modules/masters/indicators/dpo.src.js +1 -1
  118. package/assets/js/highcharts/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  119. package/assets/js/highcharts/es-modules/masters/indicators/indicators-all.src.js +1 -1
  120. package/assets/js/highcharts/es-modules/masters/indicators/indicators.src.js +1 -1
  121. package/assets/js/highcharts/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  122. package/assets/js/highcharts/es-modules/masters/indicators/klinger.src.js +1 -1
  123. package/assets/js/highcharts/es-modules/masters/indicators/macd.src.js +1 -1
  124. package/assets/js/highcharts/es-modules/masters/indicators/mfi.src.js +1 -1
  125. package/assets/js/highcharts/es-modules/masters/indicators/momentum.src.js +1 -1
  126. package/assets/js/highcharts/es-modules/masters/indicators/natr.src.js +1 -1
  127. package/assets/js/highcharts/es-modules/masters/indicators/obv.src.js +1 -1
  128. package/assets/js/highcharts/es-modules/masters/indicators/pivot-points.src.js +1 -1
  129. package/assets/js/highcharts/es-modules/masters/indicators/ppo.src.js +1 -1
  130. package/assets/js/highcharts/es-modules/masters/indicators/price-channel.src.js +1 -1
  131. package/assets/js/highcharts/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  132. package/assets/js/highcharts/es-modules/masters/indicators/psar.src.js +1 -1
  133. package/assets/js/highcharts/es-modules/masters/indicators/regressions.src.js +1 -1
  134. package/assets/js/highcharts/es-modules/masters/indicators/roc.src.js +1 -1
  135. package/assets/js/highcharts/es-modules/masters/indicators/rsi.src.js +1 -1
  136. package/assets/js/highcharts/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  137. package/assets/js/highcharts/es-modules/masters/indicators/stochastic.src.js +1 -1
  138. package/assets/js/highcharts/es-modules/masters/indicators/supertrend.src.js +1 -1
  139. package/assets/js/highcharts/es-modules/masters/indicators/tema.src.js +1 -1
  140. package/assets/js/highcharts/es-modules/masters/indicators/trendline.src.js +1 -1
  141. package/assets/js/highcharts/es-modules/masters/indicators/trix.src.js +1 -1
  142. package/assets/js/highcharts/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  143. package/assets/js/highcharts/es-modules/masters/indicators/vwap.src.js +1 -1
  144. package/assets/js/highcharts/es-modules/masters/indicators/williams-r.src.js +1 -1
  145. package/assets/js/highcharts/es-modules/masters/indicators/wma.src.js +1 -1
  146. package/assets/js/highcharts/es-modules/masters/indicators/zigzag.src.js +1 -1
  147. package/assets/js/highcharts/es-modules/masters/modules/accessibility.src.js +1 -1
  148. package/assets/js/highcharts/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  149. package/assets/js/highcharts/es-modules/masters/modules/annotations.src.js +1 -1
  150. package/assets/js/highcharts/es-modules/masters/modules/arc-diagram.src.js +1 -1
  151. package/assets/js/highcharts/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  152. package/assets/js/highcharts/es-modules/masters/modules/boost-canvas.src.js +1 -1
  153. package/assets/js/highcharts/es-modules/masters/modules/boost.src.js +1 -1
  154. package/assets/js/highcharts/es-modules/masters/modules/broken-axis.src.js +1 -1
  155. package/assets/js/highcharts/es-modules/masters/modules/bullet.src.js +1 -1
  156. package/assets/js/highcharts/es-modules/masters/modules/coloraxis.src.js +1 -1
  157. package/assets/js/highcharts/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  158. package/assets/js/highcharts/es-modules/masters/modules/cylinder.src.js +1 -1
  159. package/assets/js/highcharts/es-modules/masters/modules/data-tools.src.js +1 -1
  160. package/assets/js/highcharts/es-modules/masters/modules/data.src.js +1 -1
  161. package/assets/js/highcharts/es-modules/masters/modules/datagrouping.src.js +1 -1
  162. package/assets/js/highcharts/es-modules/masters/modules/debugger.src.js +1 -1
  163. package/assets/js/highcharts/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  164. package/assets/js/highcharts/es-modules/masters/modules/dotplot.src.js +1 -1
  165. package/assets/js/highcharts/es-modules/masters/modules/drag-panes.src.js +1 -1
  166. package/assets/js/highcharts/es-modules/masters/modules/draggable-points.src.js +1 -1
  167. package/assets/js/highcharts/es-modules/masters/modules/drilldown.src.js +3 -1
  168. package/assets/js/highcharts/es-modules/masters/modules/dumbbell.src.js +1 -1
  169. package/assets/js/highcharts/es-modules/masters/modules/export-data.src.js +3 -3
  170. package/assets/js/highcharts/es-modules/masters/modules/exporting.src.js +5 -1
  171. package/assets/js/highcharts/es-modules/masters/modules/flowmap.src.js +1 -1
  172. package/assets/js/highcharts/es-modules/masters/modules/full-screen.src.js +1 -1
  173. package/assets/js/highcharts/es-modules/masters/modules/funnel.src.js +1 -1
  174. package/assets/js/highcharts/es-modules/masters/modules/funnel3d.src.js +1 -1
  175. package/assets/js/highcharts/es-modules/masters/modules/gantt.src.js +1 -1
  176. package/assets/js/highcharts/es-modules/masters/modules/geoheatmap.src.js +1 -1
  177. package/assets/js/highcharts/es-modules/masters/modules/grid-axis.src.js +1 -1
  178. package/assets/js/highcharts/es-modules/masters/modules/heatmap.src.js +1 -1
  179. package/assets/js/highcharts/es-modules/masters/modules/heikinashi.src.js +1 -1
  180. package/assets/js/highcharts/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  181. package/assets/js/highcharts/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  182. package/assets/js/highcharts/es-modules/masters/modules/item-series.src.js +1 -1
  183. package/assets/js/highcharts/es-modules/masters/modules/lollipop.src.js +1 -1
  184. package/assets/js/highcharts/es-modules/masters/modules/map.src.js +1 -1
  185. package/assets/js/highcharts/es-modules/masters/modules/marker-clusters.src.js +1 -1
  186. package/assets/js/highcharts/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  187. package/assets/js/highcharts/es-modules/masters/modules/navigator.src.js +1 -1
  188. package/assets/js/highcharts/es-modules/masters/modules/networkgraph.src.js +1 -1
  189. package/assets/js/highcharts/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  190. package/assets/js/highcharts/es-modules/masters/modules/non-cartesian-zoom.src.js +18 -0
  191. package/assets/js/highcharts/es-modules/masters/modules/offline-exporting.src.js +2 -2
  192. package/assets/js/highcharts/es-modules/masters/modules/organization.src.js +1 -1
  193. package/assets/js/highcharts/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  194. package/assets/js/highcharts/es-modules/masters/modules/pareto.src.js +1 -1
  195. package/assets/js/highcharts/es-modules/masters/modules/pathfinder.src.js +1 -1
  196. package/assets/js/highcharts/es-modules/masters/modules/pattern-fill.src.js +1 -1
  197. package/assets/js/highcharts/es-modules/masters/modules/pictorial.src.js +1 -1
  198. package/assets/js/highcharts/es-modules/masters/modules/pointandfigure.src.js +1 -1
  199. package/assets/js/highcharts/es-modules/masters/modules/price-indicator.src.js +1 -1
  200. package/assets/js/highcharts/es-modules/masters/modules/pyramid3d.src.js +1 -1
  201. package/assets/js/highcharts/es-modules/masters/modules/renko.src.js +1 -1
  202. package/assets/js/highcharts/es-modules/masters/modules/sankey.src.js +1 -1
  203. package/assets/js/highcharts/es-modules/masters/modules/series-label.src.js +1 -1
  204. package/assets/js/highcharts/es-modules/masters/modules/series-on-point.src.js +1 -1
  205. package/assets/js/highcharts/es-modules/masters/modules/solid-gauge.src.js +1 -1
  206. package/assets/js/highcharts/es-modules/masters/modules/sonification.src.js +1 -1
  207. package/assets/js/highcharts/es-modules/masters/modules/static-scale.src.js +1 -1
  208. package/assets/js/highcharts/es-modules/masters/modules/stock-tools.src.js +1 -1
  209. package/assets/js/highcharts/es-modules/masters/modules/stock.src.js +1 -1
  210. package/assets/js/highcharts/es-modules/masters/modules/streamgraph.src.js +1 -1
  211. package/assets/js/highcharts/es-modules/masters/modules/sunburst.src.js +1 -1
  212. package/assets/js/highcharts/es-modules/masters/modules/textpath.src.js +1 -1
  213. package/assets/js/highcharts/es-modules/masters/modules/tiledwebmap.src.js +1 -1
  214. package/assets/js/highcharts/es-modules/masters/modules/tilemap.src.js +1 -1
  215. package/assets/js/highcharts/es-modules/masters/modules/timeline.src.js +1 -1
  216. package/assets/js/highcharts/es-modules/masters/modules/treegraph.src.js +1 -1
  217. package/assets/js/highcharts/es-modules/masters/modules/treegrid.src.js +1 -1
  218. package/assets/js/highcharts/es-modules/masters/modules/treemap.src.js +1 -1
  219. package/assets/js/highcharts/es-modules/masters/modules/variable-pie.src.js +1 -1
  220. package/assets/js/highcharts/es-modules/masters/modules/variwide.src.js +1 -1
  221. package/assets/js/highcharts/es-modules/masters/modules/vector.src.js +1 -1
  222. package/assets/js/highcharts/es-modules/masters/modules/venn.src.js +1 -1
  223. package/assets/js/highcharts/es-modules/masters/modules/windbarb.src.js +1 -1
  224. package/assets/js/highcharts/es-modules/masters/modules/wordcloud.src.js +1 -1
  225. package/assets/js/highcharts/es-modules/masters/modules/xrange.src.js +1 -1
  226. package/assets/js/highcharts/es-modules/masters/themes/adaptive.src.js +15 -0
  227. package/assets/js/highcharts/es-modules/masters/themes/avocado.src.js +1 -1
  228. package/assets/js/highcharts/es-modules/masters/themes/brand-dark.src.js +1 -1
  229. package/assets/js/highcharts/es-modules/masters/themes/brand-light.src.js +1 -1
  230. package/assets/js/highcharts/es-modules/masters/themes/dark-blue.src.js +1 -1
  231. package/assets/js/highcharts/es-modules/masters/themes/dark-green.src.js +1 -1
  232. package/assets/js/highcharts/es-modules/masters/themes/dark-unica.src.js +1 -1
  233. package/assets/js/highcharts/es-modules/masters/themes/gray.src.js +1 -1
  234. package/assets/js/highcharts/es-modules/masters/themes/grid-light.src.js +1 -1
  235. package/assets/js/highcharts/es-modules/masters/themes/grid.src.js +1 -1
  236. package/assets/js/highcharts/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  237. package/assets/js/highcharts/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  238. package/assets/js/highcharts/es-modules/masters/themes/sand-signika.src.js +1 -1
  239. package/assets/js/highcharts/es-modules/masters/themes/skies.src.js +1 -1
  240. package/assets/js/highcharts/es-modules/masters/themes/sunset.src.js +1 -1
  241. package/assets/js/highcharts/esm/highcharts-3d.js +11 -1
  242. package/assets/js/highcharts/esm/highcharts-3d.src.js +3 -1
  243. package/assets/js/highcharts/esm/highcharts-gantt.js +8 -1
  244. package/assets/js/highcharts/esm/highcharts-gantt.src.js +1 -1
  245. package/assets/js/highcharts/esm/highcharts-more.js +9 -1
  246. package/assets/js/highcharts/esm/highcharts-more.src.js +44 -29
  247. package/assets/js/highcharts/esm/highcharts.js +9 -2
  248. package/assets/js/highcharts/esm/highcharts.src.js +138 -80
  249. package/assets/js/highcharts/esm/highmaps.js +8 -1
  250. package/assets/js/highcharts/esm/highmaps.src.js +1 -1
  251. package/assets/js/highcharts/esm/highstock.js +8 -1
  252. package/assets/js/highcharts/esm/highstock.src.js +1 -1
  253. package/assets/js/highcharts/esm/i18n/fr-FR.js +13 -1
  254. package/assets/js/highcharts/esm/i18n/fr-FR.src.js +1 -1
  255. package/assets/js/highcharts/esm/i18n/nb-NO.js +13 -1
  256. package/assets/js/highcharts/esm/i18n/nb-NO.src.js +1 -1
  257. package/assets/js/highcharts/esm/i18n/zh-CN.js +13 -1
  258. package/assets/js/highcharts/esm/i18n/zh-CN.src.js +1 -1
  259. package/assets/js/highcharts/esm/indicators/acceleration-bands.js +12 -1
  260. package/assets/js/highcharts/esm/indicators/acceleration-bands.src.js +1 -1
  261. package/assets/js/highcharts/esm/indicators/accumulation-distribution.js +12 -1
  262. package/assets/js/highcharts/esm/indicators/accumulation-distribution.src.js +1 -1
  263. package/assets/js/highcharts/esm/indicators/ao.js +12 -1
  264. package/assets/js/highcharts/esm/indicators/ao.src.js +1 -1
  265. package/assets/js/highcharts/esm/indicators/apo.js +12 -1
  266. package/assets/js/highcharts/esm/indicators/apo.src.js +1 -1
  267. package/assets/js/highcharts/esm/indicators/aroon-oscillator.js +12 -1
  268. package/assets/js/highcharts/esm/indicators/aroon-oscillator.src.js +1 -1
  269. package/assets/js/highcharts/esm/indicators/aroon.js +12 -1
  270. package/assets/js/highcharts/esm/indicators/aroon.src.js +1 -1
  271. package/assets/js/highcharts/esm/indicators/atr.js +12 -1
  272. package/assets/js/highcharts/esm/indicators/atr.src.js +1 -1
  273. package/assets/js/highcharts/esm/indicators/bollinger-bands.js +12 -1
  274. package/assets/js/highcharts/esm/indicators/bollinger-bands.src.js +1 -1
  275. package/assets/js/highcharts/esm/indicators/cci.js +12 -1
  276. package/assets/js/highcharts/esm/indicators/cci.src.js +1 -1
  277. package/assets/js/highcharts/esm/indicators/chaikin.js +12 -1
  278. package/assets/js/highcharts/esm/indicators/chaikin.src.js +1 -1
  279. package/assets/js/highcharts/esm/indicators/cmf.js +11 -1
  280. package/assets/js/highcharts/esm/indicators/cmf.src.js +1 -1
  281. package/assets/js/highcharts/esm/indicators/cmo.js +12 -1
  282. package/assets/js/highcharts/esm/indicators/cmo.src.js +1 -1
  283. package/assets/js/highcharts/esm/indicators/dema.js +12 -1
  284. package/assets/js/highcharts/esm/indicators/dema.src.js +1 -1
  285. package/assets/js/highcharts/esm/indicators/disparity-index.js +12 -1
  286. package/assets/js/highcharts/esm/indicators/disparity-index.src.js +1 -1
  287. package/assets/js/highcharts/esm/indicators/dmi.js +12 -1
  288. package/assets/js/highcharts/esm/indicators/dmi.src.js +1 -1
  289. package/assets/js/highcharts/esm/indicators/dpo.js +12 -1
  290. package/assets/js/highcharts/esm/indicators/dpo.src.js +1 -1
  291. package/assets/js/highcharts/esm/indicators/ichimoku-kinko-hyo.js +12 -1
  292. package/assets/js/highcharts/esm/indicators/ichimoku-kinko-hyo.src.js +1 -1
  293. package/assets/js/highcharts/esm/indicators/indicators-all.js +12 -1
  294. package/assets/js/highcharts/esm/indicators/indicators-all.src.js +1 -1
  295. package/assets/js/highcharts/esm/indicators/indicators.js +12 -1
  296. package/assets/js/highcharts/esm/indicators/indicators.src.js +1 -1
  297. package/assets/js/highcharts/esm/indicators/keltner-channels.js +12 -1
  298. package/assets/js/highcharts/esm/indicators/keltner-channels.src.js +1 -1
  299. package/assets/js/highcharts/esm/indicators/klinger.js +12 -1
  300. package/assets/js/highcharts/esm/indicators/klinger.src.js +1 -1
  301. package/assets/js/highcharts/esm/indicators/macd.js +12 -1
  302. package/assets/js/highcharts/esm/indicators/macd.src.js +1 -1
  303. package/assets/js/highcharts/esm/indicators/mfi.js +12 -1
  304. package/assets/js/highcharts/esm/indicators/mfi.src.js +1 -1
  305. package/assets/js/highcharts/esm/indicators/momentum.js +12 -1
  306. package/assets/js/highcharts/esm/indicators/momentum.src.js +1 -1
  307. package/assets/js/highcharts/esm/indicators/natr.js +12 -1
  308. package/assets/js/highcharts/esm/indicators/natr.src.js +1 -1
  309. package/assets/js/highcharts/esm/indicators/obv.js +12 -1
  310. package/assets/js/highcharts/esm/indicators/obv.src.js +1 -1
  311. package/assets/js/highcharts/esm/indicators/pivot-points.js +12 -1
  312. package/assets/js/highcharts/esm/indicators/pivot-points.src.js +1 -1
  313. package/assets/js/highcharts/esm/indicators/ppo.js +12 -1
  314. package/assets/js/highcharts/esm/indicators/ppo.src.js +1 -1
  315. package/assets/js/highcharts/esm/indicators/price-channel.js +12 -1
  316. package/assets/js/highcharts/esm/indicators/price-channel.src.js +1 -1
  317. package/assets/js/highcharts/esm/indicators/price-envelopes.js +12 -1
  318. package/assets/js/highcharts/esm/indicators/price-envelopes.src.js +1 -1
  319. package/assets/js/highcharts/esm/indicators/psar.js +12 -1
  320. package/assets/js/highcharts/esm/indicators/psar.src.js +1 -1
  321. package/assets/js/highcharts/esm/indicators/regressions.js +12 -1
  322. package/assets/js/highcharts/esm/indicators/regressions.src.js +1 -1
  323. package/assets/js/highcharts/esm/indicators/roc.js +12 -1
  324. package/assets/js/highcharts/esm/indicators/roc.src.js +1 -1
  325. package/assets/js/highcharts/esm/indicators/rsi.js +12 -1
  326. package/assets/js/highcharts/esm/indicators/rsi.src.js +1 -1
  327. package/assets/js/highcharts/esm/indicators/slow-stochastic.js +12 -1
  328. package/assets/js/highcharts/esm/indicators/slow-stochastic.src.js +1 -1
  329. package/assets/js/highcharts/esm/indicators/stochastic.js +12 -1
  330. package/assets/js/highcharts/esm/indicators/stochastic.src.js +1 -1
  331. package/assets/js/highcharts/esm/indicators/supertrend.js +12 -1
  332. package/assets/js/highcharts/esm/indicators/supertrend.src.js +1 -1
  333. package/assets/js/highcharts/esm/indicators/tema.js +12 -1
  334. package/assets/js/highcharts/esm/indicators/tema.src.js +1 -1
  335. package/assets/js/highcharts/esm/indicators/trendline.js +12 -1
  336. package/assets/js/highcharts/esm/indicators/trendline.src.js +1 -1
  337. package/assets/js/highcharts/esm/indicators/trix.js +12 -1
  338. package/assets/js/highcharts/esm/indicators/trix.src.js +1 -1
  339. package/assets/js/highcharts/esm/indicators/volume-by-price.js +12 -1
  340. package/assets/js/highcharts/esm/indicators/volume-by-price.src.js +1 -1
  341. package/assets/js/highcharts/esm/indicators/vwap.js +12 -1
  342. package/assets/js/highcharts/esm/indicators/vwap.src.js +1 -1
  343. package/assets/js/highcharts/esm/indicators/williams-r.js +12 -1
  344. package/assets/js/highcharts/esm/indicators/williams-r.src.js +1 -1
  345. package/assets/js/highcharts/esm/indicators/wma.js +12 -1
  346. package/assets/js/highcharts/esm/indicators/wma.src.js +1 -1
  347. package/assets/js/highcharts/esm/indicators/zigzag.js +12 -1
  348. package/assets/js/highcharts/esm/indicators/zigzag.src.js +1 -1
  349. package/assets/js/highcharts/esm/modules/accessibility.js +12 -1
  350. package/assets/js/highcharts/esm/modules/accessibility.src.js +46 -43
  351. package/assets/js/highcharts/esm/modules/annotations-advanced.js +11 -1
  352. package/assets/js/highcharts/esm/modules/annotations-advanced.src.js +866 -775
  353. package/assets/js/highcharts/esm/modules/annotations.js +11 -1
  354. package/assets/js/highcharts/esm/modules/annotations.src.js +89 -40
  355. package/assets/js/highcharts/esm/modules/arc-diagram.js +11 -1
  356. package/assets/js/highcharts/esm/modules/arc-diagram.src.js +1 -1
  357. package/assets/js/highcharts/esm/modules/arrow-symbols.js +11 -1
  358. package/assets/js/highcharts/esm/modules/arrow-symbols.src.js +1 -1
  359. package/assets/js/highcharts/esm/modules/boost-canvas.js +12 -1
  360. package/assets/js/highcharts/esm/modules/boost-canvas.src.js +23 -4
  361. package/assets/js/highcharts/esm/modules/boost.js +13 -1
  362. package/assets/js/highcharts/esm/modules/boost.src.js +23 -4
  363. package/assets/js/highcharts/esm/modules/broken-axis.js +9 -1
  364. package/assets/js/highcharts/esm/modules/broken-axis.src.js +1 -1
  365. package/assets/js/highcharts/esm/modules/bullet.js +11 -1
  366. package/assets/js/highcharts/esm/modules/bullet.src.js +1 -1
  367. package/assets/js/highcharts/esm/modules/coloraxis.js +11 -1
  368. package/assets/js/highcharts/esm/modules/coloraxis.src.js +1 -1
  369. package/assets/js/highcharts/esm/modules/current-date-indicator.js +11 -1
  370. package/assets/js/highcharts/esm/modules/current-date-indicator.src.js +1 -1
  371. package/assets/js/highcharts/esm/modules/cylinder.js +12 -1
  372. package/assets/js/highcharts/esm/modules/cylinder.src.js +1 -1
  373. package/assets/js/highcharts/esm/modules/data-tools.js +11 -1
  374. package/assets/js/highcharts/esm/modules/data-tools.src.js +225 -69
  375. package/assets/js/highcharts/esm/modules/data.js +11 -1
  376. package/assets/js/highcharts/esm/modules/data.src.js +46 -39
  377. package/assets/js/highcharts/esm/modules/datagrouping.js +11 -1
  378. package/assets/js/highcharts/esm/modules/datagrouping.src.js +1 -1
  379. package/assets/js/highcharts/esm/modules/debugger.js +11 -1
  380. package/assets/js/highcharts/esm/modules/debugger.src.js +1 -1
  381. package/assets/js/highcharts/esm/modules/dependency-wheel.js +12 -1
  382. package/assets/js/highcharts/esm/modules/dependency-wheel.src.js +1 -1
  383. package/assets/js/highcharts/esm/modules/dotplot.js +11 -1
  384. package/assets/js/highcharts/esm/modules/dotplot.src.js +1 -1
  385. package/assets/js/highcharts/esm/modules/drag-panes.js +13 -1
  386. package/assets/js/highcharts/esm/modules/drag-panes.src.js +1 -1
  387. package/assets/js/highcharts/esm/modules/draggable-points.js +9 -1
  388. package/assets/js/highcharts/esm/modules/draggable-points.src.js +1 -1
  389. package/assets/js/highcharts/esm/modules/drilldown.js +13 -1
  390. package/assets/js/highcharts/esm/modules/drilldown.src.js +3 -1
  391. package/assets/js/highcharts/esm/modules/dumbbell.js +9 -1
  392. package/assets/js/highcharts/esm/modules/dumbbell.src.js +1 -1
  393. package/assets/js/highcharts/esm/modules/export-data.js +12 -1
  394. package/assets/js/highcharts/esm/modules/export-data.src.js +984 -798
  395. package/assets/js/highcharts/esm/modules/exporting.js +11 -1
  396. package/assets/js/highcharts/esm/modules/exporting.src.js +1373 -642
  397. package/assets/js/highcharts/esm/modules/flowmap.js +9 -1
  398. package/assets/js/highcharts/esm/modules/flowmap.src.js +1 -1
  399. package/assets/js/highcharts/esm/modules/full-screen.js +12 -1
  400. package/assets/js/highcharts/esm/modules/full-screen.src.js +3 -3
  401. package/assets/js/highcharts/esm/modules/funnel.js +11 -1
  402. package/assets/js/highcharts/esm/modules/funnel.src.js +1 -1
  403. package/assets/js/highcharts/esm/modules/funnel3d.js +13 -1
  404. package/assets/js/highcharts/esm/modules/funnel3d.src.js +1 -1
  405. package/assets/js/highcharts/esm/modules/gantt.js +11 -1
  406. package/assets/js/highcharts/esm/modules/gantt.src.js +33 -25
  407. package/assets/js/highcharts/esm/modules/geoheatmap.js +9 -1
  408. package/assets/js/highcharts/esm/modules/geoheatmap.src.js +1 -1
  409. package/assets/js/highcharts/esm/modules/grid-axis.js +11 -1
  410. package/assets/js/highcharts/esm/modules/grid-axis.src.js +1 -1
  411. package/assets/js/highcharts/esm/modules/heatmap.js +9 -1
  412. package/assets/js/highcharts/esm/modules/heatmap.src.js +2 -3
  413. package/assets/js/highcharts/esm/modules/heikinashi.js +12 -1
  414. package/assets/js/highcharts/esm/modules/heikinashi.src.js +1 -1
  415. package/assets/js/highcharts/esm/modules/histogram-bellcurve.js +10 -1
  416. package/assets/js/highcharts/esm/modules/histogram-bellcurve.src.js +1 -1
  417. package/assets/js/highcharts/esm/modules/hollowcandlestick.js +12 -1
  418. package/assets/js/highcharts/esm/modules/hollowcandlestick.src.js +1 -1
  419. package/assets/js/highcharts/esm/modules/item-series.js +11 -1
  420. package/assets/js/highcharts/esm/modules/item-series.src.js +3 -5
  421. package/assets/js/highcharts/esm/modules/lollipop.js +9 -1
  422. package/assets/js/highcharts/esm/modules/lollipop.src.js +1 -1
  423. package/assets/js/highcharts/esm/modules/map.js +11 -1
  424. package/assets/js/highcharts/esm/modules/map.src.js +5 -6
  425. package/assets/js/highcharts/esm/modules/marker-clusters.js +11 -1
  426. package/assets/js/highcharts/esm/modules/marker-clusters.src.js +1 -1
  427. package/assets/js/highcharts/esm/modules/mouse-wheel-zoom.js +11 -1
  428. package/assets/js/highcharts/esm/modules/mouse-wheel-zoom.src.js +1 -1
  429. package/assets/js/highcharts/esm/modules/navigator.js +11 -1
  430. package/assets/js/highcharts/esm/modules/navigator.src.js +10 -12
  431. package/assets/js/highcharts/esm/modules/networkgraph.js +11 -1
  432. package/assets/js/highcharts/esm/modules/networkgraph.src.js +7 -2
  433. package/assets/js/highcharts/esm/modules/no-data-to-display.js +12 -1
  434. package/assets/js/highcharts/esm/modules/no-data-to-display.src.js +1 -1
  435. package/assets/js/highcharts/esm/modules/non-cartesian-zoom.js +11 -0
  436. package/assets/js/highcharts/esm/modules/non-cartesian-zoom.src.js +374 -0
  437. package/assets/js/highcharts/esm/modules/offline-exporting.js +12 -1
  438. package/assets/js/highcharts/esm/modules/offline-exporting.src.js +334 -3360
  439. package/assets/js/highcharts/esm/modules/organization.js +11 -1
  440. package/assets/js/highcharts/esm/modules/organization.src.js +1 -1
  441. package/assets/js/highcharts/esm/modules/parallel-coordinates.js +11 -1
  442. package/assets/js/highcharts/esm/modules/parallel-coordinates.src.js +1 -1
  443. package/assets/js/highcharts/esm/modules/pareto.js +11 -1
  444. package/assets/js/highcharts/esm/modules/pareto.src.js +1 -1
  445. package/assets/js/highcharts/esm/modules/pathfinder.js +11 -1
  446. package/assets/js/highcharts/esm/modules/pathfinder.src.js +1 -1
  447. package/assets/js/highcharts/esm/modules/pattern-fill.js +12 -1
  448. package/assets/js/highcharts/esm/modules/pattern-fill.src.js +1 -1
  449. package/assets/js/highcharts/esm/modules/pictorial.js +11 -1
  450. package/assets/js/highcharts/esm/modules/pictorial.src.js +1 -1
  451. package/assets/js/highcharts/esm/modules/pointandfigure.js +12 -1
  452. package/assets/js/highcharts/esm/modules/pointandfigure.src.js +1 -1
  453. package/assets/js/highcharts/esm/modules/price-indicator.js +13 -1
  454. package/assets/js/highcharts/esm/modules/price-indicator.src.js +1 -1
  455. package/assets/js/highcharts/esm/modules/pyramid3d.js +14 -1
  456. package/assets/js/highcharts/esm/modules/pyramid3d.src.js +1 -1
  457. package/assets/js/highcharts/esm/modules/renko.js +12 -1
  458. package/assets/js/highcharts/esm/modules/renko.src.js +1 -1
  459. package/assets/js/highcharts/esm/modules/sankey.js +11 -1
  460. package/assets/js/highcharts/esm/modules/sankey.src.js +1 -1
  461. package/assets/js/highcharts/esm/modules/series-label.js +9 -1
  462. package/assets/js/highcharts/esm/modules/series-label.src.js +1 -1
  463. package/assets/js/highcharts/esm/modules/series-on-point.js +12 -1
  464. package/assets/js/highcharts/esm/modules/series-on-point.src.js +1 -1
  465. package/assets/js/highcharts/esm/modules/solid-gauge.js +12 -1
  466. package/assets/js/highcharts/esm/modules/solid-gauge.src.js +8 -3
  467. package/assets/js/highcharts/esm/modules/sonification.js +12 -1
  468. package/assets/js/highcharts/esm/modules/sonification.src.js +42 -9
  469. package/assets/js/highcharts/esm/modules/static-scale.js +11 -1
  470. package/assets/js/highcharts/esm/modules/static-scale.src.js +1 -1
  471. package/assets/js/highcharts/esm/modules/stock-tools.js +13 -1
  472. package/assets/js/highcharts/esm/modules/stock-tools.src.js +37 -116
  473. package/assets/js/highcharts/esm/modules/stock.js +11 -1
  474. package/assets/js/highcharts/esm/modules/stock.src.js +32 -24
  475. package/assets/js/highcharts/esm/modules/streamgraph.js +11 -1
  476. package/assets/js/highcharts/esm/modules/streamgraph.src.js +1 -1
  477. package/assets/js/highcharts/esm/modules/sunburst.js +10 -1
  478. package/assets/js/highcharts/esm/modules/sunburst.src.js +1 -1
  479. package/assets/js/highcharts/esm/modules/textpath.js +9 -1
  480. package/assets/js/highcharts/esm/modules/textpath.src.js +1 -1
  481. package/assets/js/highcharts/esm/modules/tiledwebmap.js +10 -2
  482. package/assets/js/highcharts/esm/modules/tiledwebmap.src.js +1 -1
  483. package/assets/js/highcharts/esm/modules/tilemap.js +12 -1
  484. package/assets/js/highcharts/esm/modules/tilemap.src.js +1 -1
  485. package/assets/js/highcharts/esm/modules/timeline.js +12 -1
  486. package/assets/js/highcharts/esm/modules/timeline.src.js +1 -1
  487. package/assets/js/highcharts/esm/modules/treegraph.js +11 -1
  488. package/assets/js/highcharts/esm/modules/treegraph.src.js +4 -2
  489. package/assets/js/highcharts/esm/modules/treegrid.js +11 -1
  490. package/assets/js/highcharts/esm/modules/treegrid.src.js +1 -1
  491. package/assets/js/highcharts/esm/modules/treemap.js +10 -1
  492. package/assets/js/highcharts/esm/modules/treemap.src.js +1 -1
  493. package/assets/js/highcharts/esm/modules/variable-pie.js +11 -1
  494. package/assets/js/highcharts/esm/modules/variable-pie.src.js +1 -1
  495. package/assets/js/highcharts/esm/modules/variwide.js +11 -1
  496. package/assets/js/highcharts/esm/modules/variwide.src.js +9 -2
  497. package/assets/js/highcharts/esm/modules/vector.js +11 -1
  498. package/assets/js/highcharts/esm/modules/vector.src.js +1 -1
  499. package/assets/js/highcharts/esm/modules/venn.js +10 -1
  500. package/assets/js/highcharts/esm/modules/venn.src.js +1 -1
  501. package/assets/js/highcharts/esm/modules/windbarb.js +11 -1
  502. package/assets/js/highcharts/esm/modules/windbarb.src.js +1 -1
  503. package/assets/js/highcharts/esm/modules/wordcloud.js +10 -1
  504. package/assets/js/highcharts/esm/modules/wordcloud.src.js +88 -11
  505. package/assets/js/highcharts/esm/modules/xrange.js +11 -1
  506. package/assets/js/highcharts/esm/modules/xrange.src.js +1 -1
  507. package/assets/js/highcharts/esm/standalone-navigator.js +9 -2
  508. package/assets/js/highcharts/esm/standalone-navigator.src.js +146 -90
  509. package/assets/js/highcharts/esm/themes/adaptive.js +130 -0
  510. package/assets/js/highcharts/esm/themes/adaptive.src.js +1069 -0
  511. package/assets/js/highcharts/esm/themes/avocado.js +9 -1
  512. package/assets/js/highcharts/esm/themes/avocado.src.js +1 -1
  513. package/assets/js/highcharts/esm/themes/brand-dark.js +9 -1
  514. package/assets/js/highcharts/esm/themes/brand-dark.src.js +1 -1
  515. package/assets/js/highcharts/esm/themes/brand-light.js +9 -1
  516. package/assets/js/highcharts/esm/themes/brand-light.src.js +1 -1
  517. package/assets/js/highcharts/esm/themes/dark-blue.js +9 -1
  518. package/assets/js/highcharts/esm/themes/dark-blue.src.js +1 -1
  519. package/assets/js/highcharts/esm/themes/dark-green.js +9 -1
  520. package/assets/js/highcharts/esm/themes/dark-green.src.js +1 -1
  521. package/assets/js/highcharts/esm/themes/dark-unica.js +9 -1
  522. package/assets/js/highcharts/esm/themes/dark-unica.src.js +1 -1
  523. package/assets/js/highcharts/esm/themes/gray.js +9 -1
  524. package/assets/js/highcharts/esm/themes/gray.src.js +1 -1
  525. package/assets/js/highcharts/esm/themes/grid-light.js +9 -1
  526. package/assets/js/highcharts/esm/themes/grid-light.src.js +1 -1
  527. package/assets/js/highcharts/esm/themes/grid.js +9 -1
  528. package/assets/js/highcharts/esm/themes/grid.src.js +1 -1
  529. package/assets/js/highcharts/esm/themes/high-contrast-dark.js +9 -1
  530. package/assets/js/highcharts/esm/themes/high-contrast-dark.src.js +1 -1
  531. package/assets/js/highcharts/esm/themes/high-contrast-light.js +9 -1
  532. package/assets/js/highcharts/esm/themes/high-contrast-light.src.js +1 -1
  533. package/assets/js/highcharts/esm/themes/sand-signika.js +9 -1
  534. package/assets/js/highcharts/esm/themes/sand-signika.src.js +1 -1
  535. package/assets/js/highcharts/esm/themes/skies.js +9 -1
  536. package/assets/js/highcharts/esm/themes/skies.src.js +1 -1
  537. package/assets/js/highcharts/esm/themes/sunset.js +9 -1
  538. package/assets/js/highcharts/esm/themes/sunset.src.js +1 -1
  539. package/assets/js/highcharts/highcharts-3d.js +11 -1
  540. package/assets/js/highcharts/highcharts-3d.src.js +3 -1
  541. package/assets/js/highcharts/highcharts-gantt.js +16 -2
  542. package/assets/js/highcharts/highcharts-gantt.src.js +173 -107
  543. package/assets/js/highcharts/highcharts-more.js +9 -1
  544. package/assets/js/highcharts/highcharts-more.src.js +44 -29
  545. package/assets/js/highcharts/highcharts.js +9 -2
  546. package/assets/js/highcharts/highcharts.src.js +138 -80
  547. package/assets/js/highcharts/highmaps.js +16 -2
  548. package/assets/js/highcharts/highmaps.src.js +145 -88
  549. package/assets/js/highcharts/highstock.js +16 -2
  550. package/assets/js/highcharts/highstock.src.js +172 -106
  551. package/assets/js/highcharts/i18n/fr-FR.js +13 -1
  552. package/assets/js/highcharts/i18n/fr-FR.src.js +8 -8
  553. package/assets/js/highcharts/i18n/nb-NO.js +13 -1
  554. package/assets/js/highcharts/i18n/nb-NO.src.js +8 -8
  555. package/assets/js/highcharts/i18n/zh-CN.js +13 -1
  556. package/assets/js/highcharts/i18n/zh-CN.src.js +8 -8
  557. package/assets/js/highcharts/indicators/acceleration-bands.js +12 -1
  558. package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
  559. package/assets/js/highcharts/indicators/accumulation-distribution.js +12 -1
  560. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
  561. package/assets/js/highcharts/indicators/ao.js +12 -1
  562. package/assets/js/highcharts/indicators/ao.src.js +1 -1
  563. package/assets/js/highcharts/indicators/apo.js +12 -1
  564. package/assets/js/highcharts/indicators/apo.src.js +1 -1
  565. package/assets/js/highcharts/indicators/aroon-oscillator.js +12 -1
  566. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
  567. package/assets/js/highcharts/indicators/aroon.js +12 -1
  568. package/assets/js/highcharts/indicators/aroon.src.js +1 -1
  569. package/assets/js/highcharts/indicators/atr.js +12 -1
  570. package/assets/js/highcharts/indicators/atr.src.js +1 -1
  571. package/assets/js/highcharts/indicators/bollinger-bands.js +12 -1
  572. package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
  573. package/assets/js/highcharts/indicators/cci.js +12 -1
  574. package/assets/js/highcharts/indicators/cci.src.js +1 -1
  575. package/assets/js/highcharts/indicators/chaikin.js +12 -1
  576. package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
  577. package/assets/js/highcharts/indicators/cmf.js +11 -1
  578. package/assets/js/highcharts/indicators/cmf.src.js +1 -1
  579. package/assets/js/highcharts/indicators/cmo.js +12 -1
  580. package/assets/js/highcharts/indicators/cmo.src.js +1 -1
  581. package/assets/js/highcharts/indicators/dema.js +12 -1
  582. package/assets/js/highcharts/indicators/dema.src.js +1 -1
  583. package/assets/js/highcharts/indicators/disparity-index.js +12 -1
  584. package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
  585. package/assets/js/highcharts/indicators/dmi.js +12 -1
  586. package/assets/js/highcharts/indicators/dmi.src.js +1 -1
  587. package/assets/js/highcharts/indicators/dpo.js +12 -1
  588. package/assets/js/highcharts/indicators/dpo.src.js +1 -1
  589. package/assets/js/highcharts/indicators/ema.src.js +3 -3
  590. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +12 -1
  591. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
  592. package/assets/js/highcharts/indicators/indicators-all.js +12 -1
  593. package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
  594. package/assets/js/highcharts/indicators/indicators.js +12 -1
  595. package/assets/js/highcharts/indicators/indicators.src.js +1 -1
  596. package/assets/js/highcharts/indicators/keltner-channels.js +12 -1
  597. package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
  598. package/assets/js/highcharts/indicators/klinger.js +12 -1
  599. package/assets/js/highcharts/indicators/klinger.src.js +1 -1
  600. package/assets/js/highcharts/indicators/macd.js +12 -1
  601. package/assets/js/highcharts/indicators/macd.src.js +1 -1
  602. package/assets/js/highcharts/indicators/mfi.js +12 -1
  603. package/assets/js/highcharts/indicators/mfi.src.js +1 -1
  604. package/assets/js/highcharts/indicators/momentum.js +12 -1
  605. package/assets/js/highcharts/indicators/momentum.src.js +1 -1
  606. package/assets/js/highcharts/indicators/natr.js +12 -1
  607. package/assets/js/highcharts/indicators/natr.src.js +1 -1
  608. package/assets/js/highcharts/indicators/obv.js +12 -1
  609. package/assets/js/highcharts/indicators/obv.src.js +1 -1
  610. package/assets/js/highcharts/indicators/pivot-points.js +12 -1
  611. package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
  612. package/assets/js/highcharts/indicators/ppo.js +12 -1
  613. package/assets/js/highcharts/indicators/ppo.src.js +1 -1
  614. package/assets/js/highcharts/indicators/price-channel.js +12 -1
  615. package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
  616. package/assets/js/highcharts/indicators/price-envelopes.js +12 -1
  617. package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
  618. package/assets/js/highcharts/indicators/psar.js +12 -1
  619. package/assets/js/highcharts/indicators/psar.src.js +1 -1
  620. package/assets/js/highcharts/indicators/regressions.js +12 -1
  621. package/assets/js/highcharts/indicators/regressions.src.js +1 -1
  622. package/assets/js/highcharts/indicators/roc.js +12 -1
  623. package/assets/js/highcharts/indicators/roc.src.js +1 -1
  624. package/assets/js/highcharts/indicators/rsi.js +12 -1
  625. package/assets/js/highcharts/indicators/rsi.src.js +1 -1
  626. package/assets/js/highcharts/indicators/slow-stochastic.js +12 -1
  627. package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
  628. package/assets/js/highcharts/indicators/stochastic.js +12 -1
  629. package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
  630. package/assets/js/highcharts/indicators/supertrend.js +12 -1
  631. package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
  632. package/assets/js/highcharts/indicators/tema.js +12 -1
  633. package/assets/js/highcharts/indicators/tema.src.js +1 -1
  634. package/assets/js/highcharts/indicators/trendline.js +12 -1
  635. package/assets/js/highcharts/indicators/trendline.src.js +1 -1
  636. package/assets/js/highcharts/indicators/trix.js +12 -1
  637. package/assets/js/highcharts/indicators/trix.src.js +1 -1
  638. package/assets/js/highcharts/indicators/volume-by-price.js +12 -1
  639. package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
  640. package/assets/js/highcharts/indicators/vwap.js +12 -1
  641. package/assets/js/highcharts/indicators/vwap.src.js +1 -1
  642. package/assets/js/highcharts/indicators/williams-r.js +12 -1
  643. package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
  644. package/assets/js/highcharts/indicators/wma.js +12 -1
  645. package/assets/js/highcharts/indicators/wma.src.js +1 -1
  646. package/assets/js/highcharts/indicators/zigzag.js +12 -1
  647. package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
  648. package/assets/js/highcharts/modules/accessibility.js +12 -1
  649. package/assets/js/highcharts/modules/accessibility.src.js +46 -43
  650. package/assets/js/highcharts/modules/annotations-advanced.js +21 -1
  651. package/assets/js/highcharts/modules/annotations-advanced.src.js +879 -788
  652. package/assets/js/highcharts/modules/annotations.js +11 -1
  653. package/assets/js/highcharts/modules/annotations.src.js +89 -40
  654. package/assets/js/highcharts/modules/arc-diagram.js +11 -1
  655. package/assets/js/highcharts/modules/arc-diagram.src.js +1 -1
  656. package/assets/js/highcharts/modules/arrow-symbols.js +11 -1
  657. package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
  658. package/assets/js/highcharts/modules/boost-canvas.js +12 -1
  659. package/assets/js/highcharts/modules/boost-canvas.src.js +23 -4
  660. package/assets/js/highcharts/modules/boost.js +13 -1
  661. package/assets/js/highcharts/modules/boost.src.js +23 -4
  662. package/assets/js/highcharts/modules/broken-axis.js +9 -1
  663. package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
  664. package/assets/js/highcharts/modules/bullet.js +11 -1
  665. package/assets/js/highcharts/modules/bullet.src.js +1 -1
  666. package/assets/js/highcharts/modules/coloraxis.js +11 -1
  667. package/assets/js/highcharts/modules/coloraxis.src.js +1 -1
  668. package/assets/js/highcharts/modules/current-date-indicator.js +11 -1
  669. package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
  670. package/assets/js/highcharts/modules/cylinder.js +12 -1
  671. package/assets/js/highcharts/modules/cylinder.src.js +1 -1
  672. package/assets/js/highcharts/modules/data-tools.js +11 -1
  673. package/assets/js/highcharts/modules/data-tools.src.js +225 -69
  674. package/assets/js/highcharts/modules/data.js +11 -1
  675. package/assets/js/highcharts/modules/data.src.js +46 -39
  676. package/assets/js/highcharts/modules/datagrouping.js +11 -1
  677. package/assets/js/highcharts/modules/datagrouping.src.js +1 -1
  678. package/assets/js/highcharts/modules/debugger.js +11 -1
  679. package/assets/js/highcharts/modules/debugger.src.js +1 -1
  680. package/assets/js/highcharts/modules/dependency-wheel.js +12 -1
  681. package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
  682. package/assets/js/highcharts/modules/dotplot.js +11 -1
  683. package/assets/js/highcharts/modules/dotplot.src.js +1 -1
  684. package/assets/js/highcharts/modules/drag-panes.js +13 -1
  685. package/assets/js/highcharts/modules/drag-panes.src.js +1 -1
  686. package/assets/js/highcharts/modules/draggable-points.js +9 -1
  687. package/assets/js/highcharts/modules/draggable-points.src.js +1 -1
  688. package/assets/js/highcharts/modules/drilldown.js +13 -1
  689. package/assets/js/highcharts/modules/drilldown.src.js +3 -1
  690. package/assets/js/highcharts/modules/dumbbell.js +9 -1
  691. package/assets/js/highcharts/modules/dumbbell.src.js +1 -1
  692. package/assets/js/highcharts/modules/export-data.js +12 -1
  693. package/assets/js/highcharts/modules/export-data.src.js +996 -803
  694. package/assets/js/highcharts/modules/exporting.js +11 -1
  695. package/assets/js/highcharts/modules/exporting.src.js +1372 -636
  696. package/assets/js/highcharts/modules/flowmap.js +9 -1
  697. package/assets/js/highcharts/modules/flowmap.src.js +1 -1
  698. package/assets/js/highcharts/modules/full-screen.js +12 -1
  699. package/assets/js/highcharts/modules/full-screen.src.js +3 -3
  700. package/assets/js/highcharts/modules/funnel.js +11 -1
  701. package/assets/js/highcharts/modules/funnel.src.js +1 -1
  702. package/assets/js/highcharts/modules/funnel3d.js +13 -1
  703. package/assets/js/highcharts/modules/funnel3d.src.js +1 -1
  704. package/assets/js/highcharts/modules/gantt.js +31 -1
  705. package/assets/js/highcharts/modules/gantt.src.js +36 -28
  706. package/assets/js/highcharts/modules/geoheatmap.js +9 -1
  707. package/assets/js/highcharts/modules/geoheatmap.src.js +1 -1
  708. package/assets/js/highcharts/modules/grid-axis.js +11 -1
  709. package/assets/js/highcharts/modules/grid-axis.src.js +1 -1
  710. package/assets/js/highcharts/modules/heatmap.js +19 -1
  711. package/assets/js/highcharts/modules/heatmap.src.js +3 -4
  712. package/assets/js/highcharts/modules/heikinashi.js +12 -1
  713. package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
  714. package/assets/js/highcharts/modules/histogram-bellcurve.js +10 -1
  715. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
  716. package/assets/js/highcharts/modules/hollowcandlestick.js +12 -1
  717. package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
  718. package/assets/js/highcharts/modules/item-series.js +11 -1
  719. package/assets/js/highcharts/modules/item-series.src.js +3 -5
  720. package/assets/js/highcharts/modules/lollipop.js +9 -1
  721. package/assets/js/highcharts/modules/lollipop.src.js +1 -1
  722. package/assets/js/highcharts/modules/map.js +21 -1
  723. package/assets/js/highcharts/modules/map.src.js +6 -7
  724. package/assets/js/highcharts/modules/marker-clusters.js +11 -1
  725. package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
  726. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +11 -1
  727. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
  728. package/assets/js/highcharts/modules/navigator.js +11 -1
  729. package/assets/js/highcharts/modules/navigator.src.js +10 -12
  730. package/assets/js/highcharts/modules/networkgraph.js +11 -1
  731. package/assets/js/highcharts/modules/networkgraph.src.js +7 -2
  732. package/assets/js/highcharts/modules/no-data-to-display.js +12 -1
  733. package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
  734. package/assets/js/highcharts/modules/non-cartesian-zoom.js +11 -0
  735. package/assets/js/highcharts/modules/non-cartesian-zoom.src.js +427 -0
  736. package/assets/js/highcharts/modules/offline-exporting.js +12 -1
  737. package/assets/js/highcharts/modules/offline-exporting.src.js +353 -3380
  738. package/assets/js/highcharts/modules/organization.js +11 -1
  739. package/assets/js/highcharts/modules/organization.src.js +1 -1
  740. package/assets/js/highcharts/modules/parallel-coordinates.js +11 -1
  741. package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
  742. package/assets/js/highcharts/modules/pareto.js +11 -1
  743. package/assets/js/highcharts/modules/pareto.src.js +1 -1
  744. package/assets/js/highcharts/modules/pathfinder.js +11 -1
  745. package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
  746. package/assets/js/highcharts/modules/pattern-fill.js +12 -1
  747. package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
  748. package/assets/js/highcharts/modules/pictorial.js +11 -1
  749. package/assets/js/highcharts/modules/pictorial.src.js +1 -1
  750. package/assets/js/highcharts/modules/pointandfigure.js +12 -1
  751. package/assets/js/highcharts/modules/pointandfigure.src.js +1 -1
  752. package/assets/js/highcharts/modules/price-indicator.js +13 -1
  753. package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
  754. package/assets/js/highcharts/modules/pyramid3d.js +14 -1
  755. package/assets/js/highcharts/modules/pyramid3d.src.js +1 -1
  756. package/assets/js/highcharts/modules/renko.js +12 -1
  757. package/assets/js/highcharts/modules/renko.src.js +1 -1
  758. package/assets/js/highcharts/modules/sankey.js +11 -1
  759. package/assets/js/highcharts/modules/sankey.src.js +1 -1
  760. package/assets/js/highcharts/modules/series-label.js +9 -1
  761. package/assets/js/highcharts/modules/series-label.src.js +1 -1
  762. package/assets/js/highcharts/modules/series-on-point.js +12 -1
  763. package/assets/js/highcharts/modules/series-on-point.src.js +1 -1
  764. package/assets/js/highcharts/modules/solid-gauge.js +12 -1
  765. package/assets/js/highcharts/modules/solid-gauge.src.js +8 -3
  766. package/assets/js/highcharts/modules/sonification.js +12 -1
  767. package/assets/js/highcharts/modules/sonification.src.js +42 -9
  768. package/assets/js/highcharts/modules/static-scale.js +11 -1
  769. package/assets/js/highcharts/modules/static-scale.src.js +1 -1
  770. package/assets/js/highcharts/modules/stock-tools.js +13 -1
  771. package/assets/js/highcharts/modules/stock-tools.src.js +37 -116
  772. package/assets/js/highcharts/modules/stock.js +29 -1
  773. package/assets/js/highcharts/modules/stock.src.js +35 -27
  774. package/assets/js/highcharts/modules/streamgraph.js +11 -1
  775. package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
  776. package/assets/js/highcharts/modules/sunburst.js +10 -1
  777. package/assets/js/highcharts/modules/sunburst.src.js +1 -1
  778. package/assets/js/highcharts/modules/textpath.js +9 -1
  779. package/assets/js/highcharts/modules/textpath.src.js +1 -1
  780. package/assets/js/highcharts/modules/tiledwebmap.js +10 -2
  781. package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
  782. package/assets/js/highcharts/modules/tilemap.js +12 -1
  783. package/assets/js/highcharts/modules/tilemap.src.js +1 -1
  784. package/assets/js/highcharts/modules/timeline.js +12 -1
  785. package/assets/js/highcharts/modules/timeline.src.js +1 -1
  786. package/assets/js/highcharts/modules/treegraph.js +11 -1
  787. package/assets/js/highcharts/modules/treegraph.src.js +4 -2
  788. package/assets/js/highcharts/modules/treegrid.js +11 -1
  789. package/assets/js/highcharts/modules/treegrid.src.js +1 -1
  790. package/assets/js/highcharts/modules/treemap.js +10 -1
  791. package/assets/js/highcharts/modules/treemap.src.js +1 -1
  792. package/assets/js/highcharts/modules/variable-pie.js +11 -1
  793. package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
  794. package/assets/js/highcharts/modules/variwide.js +11 -1
  795. package/assets/js/highcharts/modules/variwide.src.js +9 -2
  796. package/assets/js/highcharts/modules/vector.js +11 -1
  797. package/assets/js/highcharts/modules/vector.src.js +1 -1
  798. package/assets/js/highcharts/modules/venn.js +10 -1
  799. package/assets/js/highcharts/modules/venn.src.js +1 -1
  800. package/assets/js/highcharts/modules/windbarb.js +11 -1
  801. package/assets/js/highcharts/modules/windbarb.src.js +1 -1
  802. package/assets/js/highcharts/modules/wordcloud.js +10 -1
  803. package/assets/js/highcharts/modules/wordcloud.src.js +88 -11
  804. package/assets/js/highcharts/modules/xrange.js +11 -1
  805. package/assets/js/highcharts/modules/xrange.src.js +1 -1
  806. package/assets/js/highcharts/standalone-navigator.js +9 -2
  807. package/assets/js/highcharts/standalone-navigator.src.js +146 -90
  808. package/assets/js/highcharts/themes/adaptive.js +130 -0
  809. package/assets/js/highcharts/themes/adaptive.src.js +1122 -0
  810. package/assets/js/highcharts/themes/avocado.js +9 -1
  811. package/assets/js/highcharts/themes/avocado.src.js +1 -1
  812. package/assets/js/highcharts/themes/brand-dark.js +9 -1
  813. package/assets/js/highcharts/themes/brand-dark.src.js +1 -1
  814. package/assets/js/highcharts/themes/brand-light.js +9 -1
  815. package/assets/js/highcharts/themes/brand-light.src.js +1 -1
  816. package/assets/js/highcharts/themes/dark-blue.js +9 -1
  817. package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
  818. package/assets/js/highcharts/themes/dark-green.js +9 -1
  819. package/assets/js/highcharts/themes/dark-green.src.js +1 -1
  820. package/assets/js/highcharts/themes/dark-unica.js +9 -1
  821. package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
  822. package/assets/js/highcharts/themes/gray.js +9 -1
  823. package/assets/js/highcharts/themes/gray.src.js +1 -1
  824. package/assets/js/highcharts/themes/grid-light.js +9 -1
  825. package/assets/js/highcharts/themes/grid-light.src.js +1 -1
  826. package/assets/js/highcharts/themes/grid.js +9 -1
  827. package/assets/js/highcharts/themes/grid.src.js +1 -1
  828. package/assets/js/highcharts/themes/high-contrast-dark.js +9 -1
  829. package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
  830. package/assets/js/highcharts/themes/high-contrast-light.js +9 -1
  831. package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
  832. package/assets/js/highcharts/themes/sand-signika.js +9 -1
  833. package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
  834. package/assets/js/highcharts/themes/skies.js +9 -1
  835. package/assets/js/highcharts/themes/skies.src.js +1 -1
  836. package/assets/js/highcharts/themes/sunset.js +9 -1
  837. package/assets/js/highcharts/themes/sunset.src.js +1 -1
  838. package/package.json +1 -1
@@ -14,858 +14,954 @@
14
14
  // module importing the same data.
15
15
  'use strict';
16
16
  import AST from '../../Core/Renderer/HTML/AST.js';
17
+ import Chart from '../../Core/Chart/Chart.js';
17
18
  import D from '../../Core/Defaults.js';
18
19
  const { getOptions, setOptions } = D;
19
20
  import DownloadURL from '../DownloadURL.js';
20
21
  const { downloadURL } = DownloadURL;
21
22
  import ExportDataDefaults from './ExportDataDefaults.js';
22
- import H from '../../Core/Globals.js';
23
- const { doc, win } = H;
23
+ import G from '../../Core/Globals.js';
24
+ const { composed, doc, win } = G;
24
25
  import U from '../../Core/Utilities.js';
25
- const { addEvent, defined, extend, find, fireEvent, isNumber, pick } = U;
26
+ const { addEvent, defined, extend, find, fireEvent, isNumber, pick, pushUnique } = U;
26
27
  /* *
27
28
  *
28
- * Functions
29
+ * Composition
29
30
  *
30
31
  * */
31
- /**
32
- * Wrapper function for the download functions, which handles showing and hiding
33
- * the loading message
34
- *
35
- * @private
36
- *
37
- */
38
- function wrapLoading(fn) {
39
- const showMessage = Boolean(this.options.exporting?.showExportInProgress);
40
- // Prefer requestAnimationFrame if available
41
- const timeoutFn = win.requestAnimationFrame || setTimeout;
42
- // Outer timeout avoids menu freezing on click
43
- timeoutFn(() => {
44
- showMessage && this.showLoading(this.options.lang.exportInProgress);
45
- timeoutFn(() => {
46
- try {
47
- fn.call(this);
48
- }
49
- finally {
50
- showMessage && this.hideLoading();
32
+ var ExportData;
33
+ (function (ExportData) {
34
+ /* *
35
+ *
36
+ * Declarations
37
+ *
38
+ * */
39
+ /* *
40
+ *
41
+ * Functions
42
+ *
43
+ * */
44
+ /**
45
+ * Composition function.
46
+ *
47
+ * @private
48
+ * @function Highcharts.Exporting#compose
49
+ *
50
+ * @param {ChartClass} ChartClass
51
+ * Chart class.
52
+ * @param {ExportingClass} ExportingClass
53
+ * Exporting class.
54
+ * @param {SeriesClass} SeriesClass
55
+ * Series class.
56
+ *
57
+ * @requires modules/exporting
58
+ * @requires modules/export-data
59
+ */
60
+ function compose(ChartClass, ExportingClass, SeriesClass) {
61
+ // Check the composition registry for the Exporting
62
+ if (!pushUnique(composed, 'ExportData')) {
63
+ return;
64
+ }
65
+ // Adding wrappers for the deprecated functions
66
+ extend(Chart.prototype, {
67
+ downloadCSV: function () {
68
+ return this.exporting?.downloadCSV();
69
+ },
70
+ downloadXLS: function () {
71
+ return this.exporting?.downloadXLS();
72
+ },
73
+ getCSV: function (useLocalDecimalPoint) {
74
+ return this.exporting?.getCSV(useLocalDecimalPoint);
75
+ },
76
+ getDataRows: function (multiLevelHeaders) {
77
+ return this.exporting?.getDataRows(multiLevelHeaders);
78
+ },
79
+ getTable: function (useLocalDecimalPoint) {
80
+ return this.exporting?.getTable(useLocalDecimalPoint);
81
+ },
82
+ getTableAST: function (useLocalDecimalPoint) {
83
+ return this.exporting?.getTableAST(useLocalDecimalPoint);
84
+ },
85
+ hideData: function () {
86
+ return this.exporting?.hideData();
87
+ },
88
+ toggleDataTable: function (show) {
89
+ return this.exporting?.toggleDataTable(show);
90
+ },
91
+ viewData: function () {
92
+ return this.exporting?.viewData();
51
93
  }
52
94
  });
53
- });
54
- }
55
- /**
56
- * Generates a data URL of CSV for local download in the browser. This is the
57
- * default action for a click on the 'Download CSV' button.
58
- *
59
- * See {@link Highcharts.Chart#getCSV} to get the CSV data itself.
60
- *
61
- * @function Highcharts.Chart#downloadCSV
62
- *
63
- * @requires modules/exporting
64
- */
65
- function chartDownloadCSV() {
66
- wrapLoading.call(this, () => {
67
- const csv = this.getCSV(true);
68
- downloadURL(getBlobFromContent(csv, 'text/csv') ||
69
- 'data:text/csv,\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');
70
- });
71
- }
72
- /**
73
- * Generates a data URL of an XLS document for local download in the browser.
74
- * This is the default action for a click on the 'Download XLS' button.
75
- *
76
- * See {@link Highcharts.Chart#getTable} to get the table data itself.
77
- *
78
- * @function Highcharts.Chart#downloadXLS
79
- *
80
- * @requires modules/exporting
81
- */
82
- function chartDownloadXLS() {
83
- wrapLoading.call(this, () => {
84
- const uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' +
85
- 'xmlns:x="urn:schemas-microsoft-com:office:excel" ' +
86
- 'xmlns="http://www.w3.org/TR/REC-html40">' +
87
- '<head><!--[if gte mso 9]><xml><x:ExcelWorkbook>' +
88
- '<x:ExcelWorksheets><x:ExcelWorksheet>' +
89
- '<x:Name>Ark1</x:Name>' +
90
- '<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>' +
91
- '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>' +
92
- '</xml><![endif]-->' +
93
- '<style>td{border:none;font-family: Calibri, sans-serif;} ' +
94
- '.number{mso-number-format:"0.00";} ' +
95
- '.text{ mso-number-format:"\@";}</style>' +
96
- '<meta name=ProgId content=Excel.Sheet>' +
97
- '<meta charset=UTF-8>' +
98
- '</head><body>' +
99
- this.getTable(true) +
100
- '</body></html>', base64 = function (s) {
101
- return win.btoa(unescape(encodeURIComponent(s))); // #50
102
- };
103
- downloadURL(getBlobFromContent(template, 'application/vnd.ms-excel') ||
104
- uri + base64(template), this.getFilename() + '.xls');
105
- });
106
- }
107
- /**
108
- * Export-data module required. Returns the current chart data as a CSV string.
109
- *
110
- * @function Highcharts.Chart#getCSV
111
- *
112
- * @param {boolean} [useLocalDecimalPoint]
113
- * Whether to use the local decimal point as detected from the browser.
114
- * This makes it easier to export data to Excel in the same locale as the
115
- * user is.
116
- *
117
- * @return {string}
118
- * CSV representation of the data
119
- */
120
- function chartGetCSV(useLocalDecimalPoint) {
121
- let csv = '';
122
- const rows = this.getDataRows(), csvOptions = this.options.exporting.csv, decimalPoint = pick(csvOptions.decimalPoint, csvOptions.itemDelimiter !== ',' && useLocalDecimalPoint ?
123
- (1.1).toLocaleString()[1] :
124
- '.'),
125
- // Use ';' for direct to Excel
126
- itemDelimiter = pick(csvOptions.itemDelimiter, decimalPoint === ',' ? ';' : ','),
127
- // '\n' isn't working with the js csv data extraction
128
- lineDelimiter = csvOptions.lineDelimiter;
129
- // Transform the rows to CSV
130
- rows.forEach((row, i) => {
131
- let val = '', j = row.length;
132
- while (j--) {
133
- val = row[j];
134
- if (typeof val === 'string') {
135
- val = `"${val}"`;
136
- }
137
- if (typeof val === 'number') {
138
- if (decimalPoint !== '.') {
139
- val = val.toString().replace('.', decimalPoint);
140
- }
95
+ const exportingProto = ExportingClass.prototype;
96
+ if (!exportingProto.downloadCSV) {
97
+ // Add an event listener to handle the showTable option
98
+ addEvent(ChartClass, 'afterViewData', onChartAfterViewData);
99
+ addEvent(ChartClass, 'render', onChartRenderer);
100
+ addEvent(ChartClass, 'destroy', onChartDestroy);
101
+ // Adding functions to the Exporting prototype
102
+ exportingProto.downloadCSV = downloadCSV;
103
+ exportingProto.downloadXLS = downloadXLS;
104
+ exportingProto.getCSV = getCSV;
105
+ exportingProto.getDataRows = getDataRows;
106
+ exportingProto.getTable = getTable;
107
+ exportingProto.getTableAST = getTableAST;
108
+ exportingProto.hideData = hideData;
109
+ exportingProto.toggleDataTable = toggleDataTable;
110
+ exportingProto.wrapLoading = wrapLoading;
111
+ exportingProto.viewData = viewData;
112
+ // Update with defaults of the export data module
113
+ setOptions(ExportDataDefaults);
114
+ // Additionaly, extend the menuItems with the export data variants
115
+ const menuItems = getOptions().exporting?.buttons?.contextButton?.menuItems;
116
+ menuItems && menuItems.push('separator', 'downloadCSV', 'downloadXLS', 'viewData');
117
+ const { arearange: AreaRangeSeries, gantt: GanttSeries, map: MapSeries, mapbubble: MapBubbleSeries, treemap: TreemapSeries, xrange: XRangeSeries } = SeriesClass.types;
118
+ if (AreaRangeSeries) {
119
+ AreaRangeSeries.prototype.keyToAxis = {
120
+ low: 'y',
121
+ high: 'y'
122
+ };
141
123
  }
142
- row[j] = val;
143
- }
144
- // The first row is the header - it defines the number of columns.
145
- // Empty columns between not-empty cells are covered in the getDataRows
146
- // method.
147
- // Now add empty values only to the end of the row so all rows have
148
- // the same number of columns, #17186
149
- row.length = rows.length ? rows[0].length : 0;
150
- // Add the values
151
- csv += row.join(itemDelimiter);
152
- // Add the line delimiter
153
- if (i < rows.length - 1) {
154
- csv += lineDelimiter;
155
- }
156
- });
157
- return csv;
158
- }
159
- /**
160
- * Export-data module required. Returns a two-dimensional array containing the
161
- * current chart data.
162
- *
163
- * @function Highcharts.Chart#getDataRows
164
- *
165
- * @param {boolean} [multiLevelHeaders]
166
- * Use multilevel headers for the rows by default. Adds an extra row with
167
- * top level headers. If a custom columnHeaderFormatter is defined, this
168
- * can override the behavior.
169
- *
170
- * @return {Array<Array<(number|string)>>}
171
- * The current chart data
172
- *
173
- * @emits Highcharts.Chart#event:exportData
174
- */
175
- function chartGetDataRows(multiLevelHeaders) {
176
- 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,
177
- // Options
178
- columnHeaderFormatter = function (item, key, keyLength) {
179
- if (csvOptions.columnHeaderFormatter) {
180
- const s = csvOptions.columnHeaderFormatter(item, key, keyLength);
181
- if (s !== false) {
182
- return s;
124
+ if (GanttSeries) {
125
+ GanttSeries.prototype.exportKey = 'name';
126
+ GanttSeries.prototype.keyToAxis = {
127
+ start: 'x',
128
+ end: 'x'
129
+ };
130
+ }
131
+ if (MapSeries) {
132
+ MapSeries.prototype.exportKey = 'name';
133
+ }
134
+ if (MapBubbleSeries) {
135
+ MapBubbleSeries.prototype.exportKey = 'name';
136
+ }
137
+ if (TreemapSeries) {
138
+ TreemapSeries.prototype.exportKey = 'name';
139
+ }
140
+ if (XRangeSeries) {
141
+ XRangeSeries.prototype.keyToAxis = {
142
+ x2: 'x'
143
+ };
183
144
  }
184
145
  }
185
- if (!item) {
186
- return categoryHeader;
187
- }
188
- if (!item.bindAxes) {
189
- return (item.options.title &&
190
- item.options.title.text) || (item.dateTime ?
191
- categoryDatetimeHeader :
192
- categoryHeader);
193
- }
194
- if (multiLevelHeaders) {
195
- return {
196
- columnTitle: keyLength > 1 ?
197
- key :
198
- item.name,
199
- topLevelColumnTitle: item.name
146
+ }
147
+ ExportData.compose = compose;
148
+ /**
149
+ * Generates a data URL of CSV for local download in the browser. This is
150
+ * the default action for a click on the 'Download CSV' button.
151
+ *
152
+ * See {@link Highcharts.Exporting#getCSV} to get the CSV data itself.
153
+ *
154
+ * @function Highcharts.Exporting#downloadCSV
155
+ *
156
+ * @requires modules/exporting
157
+ * @requires modules/export-data
158
+ */
159
+ function downloadCSV() {
160
+ this.wrapLoading(() => {
161
+ const csv = this.getCSV(true);
162
+ downloadURL(getBlobFromContent(csv, 'text/csv') ||
163
+ 'data:text/csv,\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');
164
+ });
165
+ }
166
+ /**
167
+ * Generates a data URL of an XLS document for local download in the
168
+ * browser. This is the default action for a click on the 'Download XLS'
169
+ * button.
170
+ *
171
+ * See {@link Highcharts.Exporting#getTable} to get the table data itself.
172
+ *
173
+ * @function Highcharts.Exporting#downloadXLS
174
+ *
175
+ * @requires modules/exporting
176
+ * @requires modules/export-data
177
+ */
178
+ function downloadXLS() {
179
+ this.wrapLoading(() => {
180
+ const uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' +
181
+ 'xmlns:x="urn:schemas-microsoft-com:office:excel" ' +
182
+ 'xmlns="http://www.w3.org/TR/REC-html40">' +
183
+ '<head><!--[if gte mso 9]><xml><x:ExcelWorkbook>' +
184
+ '<x:ExcelWorksheets><x:ExcelWorksheet>' +
185
+ '<x:Name>Ark1</x:Name>' +
186
+ '<x:WorksheetOptions><x:DisplayGridlines/>' +
187
+ '</x:WorksheetOptions>' +
188
+ '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>' +
189
+ '</xml><![endif]-->' +
190
+ '<style>td{border:none;font-family: Calibri, sans-serif;} ' +
191
+ '.number{mso-number-format:"0.00";} ' +
192
+ '.text{ mso-number-format:"\@";}</style>' +
193
+ '<meta name=ProgId content=Excel.Sheet>' +
194
+ '<meta charset=UTF-8>' +
195
+ '</head><body>' +
196
+ this.getTable(true) +
197
+ '</body></html>', base64 = function (s) {
198
+ return win.btoa(unescape(encodeURIComponent(s))); // #50
200
199
  };
201
- }
202
- return item.name + (keyLength > 1 ? ' (' + key + ')' : '');
203
- },
204
- // Map the categories for value axes
205
- getCategoryAndDateTimeMap = function (series, pointArrayMap, pIdx) {
206
- const categoryMap = {}, dateTimeValueAxisMap = {};
207
- pointArrayMap.forEach(function (prop) {
208
- const axisName = ((series.keyToAxis && series.keyToAxis[prop]) ||
209
- prop) + 'Axis',
210
- // Points in parallel coordinates refers to all yAxis
211
- // not only `series.yAxis`
212
- axis = isNumber(pIdx) ?
213
- series.chart[axisName][pIdx] :
214
- series[axisName];
215
- categoryMap[prop] = (axis && axis.categories) || [];
216
- dateTimeValueAxisMap[prop] = (axis && axis.dateTime);
200
+ downloadURL(getBlobFromContent(template, 'application/vnd.ms-excel') ||
201
+ uri + base64(template), this.getFilename() + '.xls');
217
202
  });
218
- return {
219
- categoryMap: categoryMap,
220
- dateTimeValueAxisMap: dateTimeValueAxisMap
221
- };
222
- },
223
- // Create point array depends if xAxis is category
224
- // or point.name is defined #13293
225
- getPointArray = function (series, xAxis) {
226
- const pointArrayMap = series.pointArrayMap || ['y'], namedPoints = series.data.some((d) => (typeof d.y !== 'undefined') && d.name);
227
- // If there are points with a name, we also want the x value in the
228
- // table
229
- if (namedPoints &&
230
- xAxis &&
231
- !xAxis.categories &&
232
- series.exportKey !== 'name') {
233
- return ['x', ...pointArrayMap];
203
+ }
204
+ /**
205
+ * Get a blob object from content, if blob is supported.
206
+ *
207
+ * @private
208
+ * @function Highcharts.getBlobFromContent
209
+ *
210
+ * @param {string} content
211
+ * The content to create the blob from.
212
+ * @param {string} type
213
+ * The type of the content.
214
+ *
215
+ * @return {string | undefined}
216
+ * The blob object, or undefined if not supported.
217
+ *
218
+ * @requires modules/exporting
219
+ * @requires modules/export-data
220
+ */
221
+ function getBlobFromContent(content, type) {
222
+ const nav = win.navigator, domurl = win.URL || win.webkitURL || win;
223
+ try {
224
+ // MS specific
225
+ if ((nav.msSaveOrOpenBlob) && win.MSBlobBuilder) {
226
+ const blob = new win.MSBlobBuilder();
227
+ blob.append(content);
228
+ return blob.getBlob('image/svg+xml');
229
+ }
230
+ return domurl.createObjectURL(new win.Blob(['\uFEFF' + content], // #7084
231
+ { type: type }));
234
232
  }
235
- return pointArrayMap;
236
- }, xAxisIndices = [];
237
- let xAxis, dataRows, columnTitleObj, i = 0, // Loop the series and index values
238
- x, xTitle;
239
- this.series.forEach(function (series) {
240
- const keys = series.options.keys, xAxis = series.xAxis, pointArrayMap = keys || getPointArray(series, xAxis), valueCount = pointArrayMap.length, xTaken = !series.requireSorting && {}, xAxisIndex = xAxes.indexOf(xAxis);
241
- let categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap), mockSeries, j;
242
- if (series.options.includeInDataExport !== false &&
243
- !series.options.isInternal &&
244
- series.visible !== false // #55
245
- ) {
246
- // Build a lookup for X axis index and the position of the first
247
- // series that belongs to that X axis. Includes -1 for non-axis
248
- // series types like pies.
249
- if (!find(xAxisIndices, function (index) {
250
- return index[0] === xAxisIndex;
251
- })) {
252
- xAxisIndices.push([xAxisIndex, i]);
253
- }
254
- // Compute the column headers and top level headers, usually the
255
- // same as series names
256
- j = 0;
257
- while (j < valueCount) {
258
- columnTitleObj = columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length);
259
- columnTitles.push(columnTitleObj.columnTitle || columnTitleObj);
260
- if (multiLevelHeaders) {
261
- topLevelColumnTitles.push(columnTitleObj.topLevelColumnTitle ||
262
- columnTitleObj);
233
+ catch (e) {
234
+ // Ignore
235
+ }
236
+ }
237
+ /**
238
+ * Returns the current chart data as a CSV string.
239
+ *
240
+ * @function Highcharts.Exporting#getCSV
241
+ *
242
+ * @param {boolean} [useLocalDecimalPoint]
243
+ * Whether to use the local decimal point as detected from the browser. This
244
+ * makes it easier to export data to Excel in the same locale as the user
245
+ * is.
246
+ *
247
+ * @return {string}
248
+ * CSV representation of the data.
249
+ *
250
+ * @requires modules/exporting
251
+ * @requires modules/export-data
252
+ */
253
+ function getCSV(useLocalDecimalPoint) {
254
+ let csv = '';
255
+ const rows = this.getDataRows(), csvOptions = this.options?.csv, decimalPoint = pick(csvOptions?.decimalPoint, csvOptions?.itemDelimiter !== ',' && useLocalDecimalPoint ?
256
+ (1.1).toLocaleString()[1] :
257
+ '.'),
258
+ // Use ';' for direct to Excel
259
+ itemDelimiter = pick(csvOptions?.itemDelimiter, decimalPoint === ',' ? ';' : ','),
260
+ // '\n' isn't working with the js csv data extraction
261
+ lineDelimiter = csvOptions?.lineDelimiter;
262
+ // Transform the rows to CSV
263
+ rows.forEach((row, i) => {
264
+ let val = '', j = row.length;
265
+ while (j--) {
266
+ val = row[j];
267
+ if (typeof val === 'string') {
268
+ val = `"${val}"`;
263
269
  }
264
- j++;
265
- }
266
- mockSeries = {
267
- chart: series.chart,
268
- autoIncrement: series.autoIncrement,
269
- options: series.options,
270
- pointArrayMap: series.pointArrayMap,
271
- index: series.index
270
+ if (typeof val === 'number') {
271
+ if (decimalPoint !== '.') {
272
+ val = val.toString().replace('.', decimalPoint);
273
+ }
274
+ }
275
+ row[j] = val;
276
+ }
277
+ // The first row is the header - it defines the number of columns.
278
+ // Empty columns between not-empty cells are covered in the
279
+ // getDataRows method.
280
+ // Now add empty values only to the end of the row so all rows have
281
+ // the same number of columns, #17186
282
+ row.length = rows.length ? rows[0].length : 0;
283
+ // Add the values
284
+ csv += row.join(itemDelimiter);
285
+ // Add the line delimiter
286
+ if (i < rows.length - 1) {
287
+ csv += lineDelimiter;
288
+ }
289
+ });
290
+ return csv;
291
+ }
292
+ /**
293
+ * Returns a two-dimensional array containing the current chart data.
294
+ *
295
+ * @function Highcharts.Exporting#getDataRows
296
+ *
297
+ * @param {boolean} [multiLevelHeaders]
298
+ * Use multilevel headers for the rows by default. Adds an extra row with
299
+ * top level headers. If a custom columnHeaderFormatter is defined, this can
300
+ * override the behavior.
301
+ *
302
+ * @return {Array<Array<(number | string)>>}
303
+ * The current chart data
304
+ *
305
+ * @emits Highcharts.Chart#event:exportData
306
+ *
307
+ * @requires modules/exporting
308
+ * @requires modules/export-data
309
+ */
310
+ function getDataRows(multiLevelHeaders) {
311
+ 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,
312
+ // Options
313
+ columnHeaderFormatter = function (item, key, keyLength) {
314
+ if (csvOptions.columnHeaderFormatter) {
315
+ const s = csvOptions.columnHeaderFormatter(item, key, keyLength);
316
+ if (s !== false) {
317
+ return s;
318
+ }
319
+ }
320
+ if (!item && categoryHeader) {
321
+ return categoryHeader;
322
+ }
323
+ if (!item.bindAxes &&
324
+ categoryDatetimeHeader &&
325
+ categoryHeader) {
326
+ return (item.options.title &&
327
+ item.options.title.text) || (item.dateTime ?
328
+ categoryDatetimeHeader :
329
+ categoryHeader);
330
+ }
331
+ if (multiLevelHeaders) {
332
+ return {
333
+ columnTitle: ((keyLength || 0) > 1 ?
334
+ key :
335
+ item.name) || '',
336
+ topLevelColumnTitle: item.name
337
+ };
338
+ }
339
+ return item.name + ((keyLength || 0) > 1 ? ' (' + key + ')' : '');
340
+ },
341
+ // Map the categories for value axes
342
+ getCategoryAndDateTimeMap = function (series, pointArrayMap, pIdx) {
343
+ const categoryMap = {}, dateTimeValueAxisMap = {};
344
+ pointArrayMap.forEach(function (prop) {
345
+ const axisName = ((series.keyToAxis && series.keyToAxis[prop]) ||
346
+ prop) + 'Axis',
347
+ // Points in parallel coordinates refers to all yAxis
348
+ // not only `series.yAxis`
349
+ axis = isNumber(pIdx) ?
350
+ series.chart[axisName][pIdx] :
351
+ series[axisName];
352
+ categoryMap[prop] = (axis && axis.categories) || [];
353
+ dateTimeValueAxisMap[prop] = (axis && axis.dateTime);
354
+ });
355
+ return {
356
+ categoryMap: categoryMap,
357
+ dateTimeValueAxisMap: dateTimeValueAxisMap
272
358
  };
273
- // Export directly from options.data because we need the uncropped
274
- // data (#7913), and we need to support Boost (#7026).
275
- series.options.data.forEach(function eachData(options, pIdx) {
276
- const mockPoint = { series: mockSeries };
277
- let key, prop, val;
278
- // In parallel coordinates chart, each data point is connected
279
- // to a separate yAxis, conform this
280
- if (hasParallelCoords) {
281
- categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap, pIdx);
359
+ },
360
+ // Create point array depends if xAxis is category
361
+ // or point.name is defined #13293
362
+ getPointArray = function (series, xAxis) {
363
+ const pointArrayMap = series.pointArrayMap || ['y'], namedPoints = series.data.some((d) => (typeof d.y !== 'undefined') && d.name);
364
+ // If there are points with a name, we also want the x value in
365
+ // the table
366
+ if (namedPoints &&
367
+ xAxis &&
368
+ !xAxis.categories &&
369
+ series.exportKey !== 'name') {
370
+ return ['x', ...pointArrayMap];
371
+ }
372
+ return pointArrayMap;
373
+ }, xAxisIndices = [];
374
+ let xAxis, dataRows, columnTitleObj, i = 0, // Loop the series and index values
375
+ x, xTitle;
376
+ chart.series.forEach(function (series) {
377
+ const keys = series.options.keys, xAxis = series.xAxis, pointArrayMap = keys || getPointArray(series, xAxis), valueCount = pointArrayMap.length, xTaken = !series.requireSorting && {}, xAxisIndex = xAxes.indexOf(xAxis);
378
+ let categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap), mockSeries, j;
379
+ if (series.options.includeInDataExport !== false &&
380
+ !series.options.isInternal &&
381
+ series.visible !== false // #55
382
+ ) {
383
+ // Build a lookup for X axis index and the position of the first
384
+ // series that belongs to that X axis. Includes -1 for non-axis
385
+ // series types like pies.
386
+ if (!find(xAxisIndices, function (index) {
387
+ return index[0] === xAxisIndex;
388
+ })) {
389
+ xAxisIndices.push([xAxisIndex, i]);
282
390
  }
283
- series.pointClass.prototype.applyOptions.apply(mockPoint, [options]);
284
- const name = series.data[pIdx] && series.data[pIdx].name;
285
- key = (mockPoint.x ?? '') + ',' + name;
391
+ // Compute the column headers and top level headers, usually the
392
+ // same as series names
286
393
  j = 0;
287
- // Pies, funnels, geo maps etc. use point name in X row
288
- if (!xAxis ||
289
- series.exportKey === 'name' ||
290
- (!hasParallelCoords && xAxis && xAxis.hasNames) && name) {
291
- key = name;
292
- }
293
- if (xTaken) {
294
- if (xTaken[key]) {
295
- key += '|' + pIdx;
394
+ while (j < valueCount) {
395
+ columnTitleObj = columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length);
396
+ columnTitles.push(columnTitleObj.columnTitle ||
397
+ columnTitleObj);
398
+ if (multiLevelHeaders) {
399
+ topLevelColumnTitles.push(columnTitleObj.topLevelColumnTitle ||
400
+ columnTitleObj);
296
401
  }
297
- xTaken[key] = true;
402
+ j++;
298
403
  }
299
- if (!rows[key]) {
300
- rows[key] = [];
301
- rows[key].xValues = [];
302
- // ES5 replacement for Array.from / fill.
303
- const arr = [];
304
- for (let i = 0; i < series.chart.series.length; i++) {
305
- arr[i] = 0;
404
+ mockSeries = {
405
+ chart: series.chart,
406
+ autoIncrement: series.autoIncrement,
407
+ options: series.options,
408
+ pointArrayMap: series.pointArrayMap,
409
+ index: series.index
410
+ };
411
+ // Export directly from options.data because we need the
412
+ // uncropped data (#7913), and we need to support Boost (#7026).
413
+ series.options.data?.forEach(function eachData(options, pIdx) {
414
+ const mockPoint = { series: mockSeries };
415
+ let key, prop, val;
416
+ // In parallel coordinates chart, each data point is
417
+ // connected to a separate yAxis, conform this
418
+ if (hasParallelCoords) {
419
+ categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap, pIdx);
306
420
  }
307
- // Create pointers array, holding information how many
308
- // duplicates of specific x occurs in each series.
309
- // Used for creating rows with duplicates.
310
- rows[key].pointers = arr;
311
- rows[key].pointers[series.index] = 1;
312
- }
313
- else {
314
- // Handle duplicates (points with the same x), by creating
315
- // extra rows based on pointers for better performance.
316
- const modifiedKey = `${key},${rows[key].pointers[series.index]}`, originalKey = key;
317
- if (rows[key].pointers[series.index]) {
318
- if (!rows[modifiedKey]) {
319
- rows[modifiedKey] = [];
320
- rows[modifiedKey].xValues = [];
321
- rows[modifiedKey].pointers = [];
421
+ series.pointClass.prototype.applyOptions.apply(mockPoint, [options]);
422
+ const name = series.data[pIdx] && series.data[pIdx].name;
423
+ key = (mockPoint.x ?? '') + ',' + name;
424
+ j = 0;
425
+ // Pies, funnels, geo maps etc. use point name in X row
426
+ if (!xAxis ||
427
+ series.exportKey === 'name' ||
428
+ (!hasParallelCoords && xAxis && xAxis.hasNames) && name) {
429
+ key = name;
430
+ }
431
+ if (xTaken) {
432
+ if (xTaken[key]) {
433
+ key += '|' + pIdx;
322
434
  }
323
- key = modifiedKey;
435
+ xTaken[key] = true;
324
436
  }
325
- rows[originalKey].pointers[series.index] += 1;
326
- }
327
- rows[key].x = mockPoint.x;
328
- rows[key].name = name;
329
- rows[key].xValues[xAxisIndex] = mockPoint.x;
330
- while (j < valueCount) {
331
- prop = pointArrayMap[j]; // `y`, `z` etc
332
- val = series.pointClass.prototype.getNestedProperty.apply(mockPoint, [prop]); // Allow values from nested properties (#20470)
333
- rows[key][i + j] = pick(
334
- // Y axis category if present
335
- categoryAndDatetimeMap.categoryMap[prop][val],
336
- // Datetime yAxis
337
- categoryAndDatetimeMap.dateTimeValueAxisMap[prop] ?
338
- time.dateFormat(csvOptions.dateFormat, val) :
339
- null,
340
- // Linear/log yAxis
341
- val);
342
- j++;
343
- }
344
- });
345
- i = i + j;
346
- }
347
- });
348
- // Make a sortable array
349
- for (x in rows) {
350
- if (Object.hasOwnProperty.call(rows, x)) {
351
- rowArr.push(rows[x]);
352
- }
353
- }
354
- let xAxisIndex, column;
355
- // Add computed column headers and top level headers to final row set
356
- dataRows = multiLevelHeaders ? [topLevelColumnTitles, columnTitles] :
357
- [columnTitles];
358
- i = xAxisIndices.length;
359
- while (i--) { // Start from end to splice in
360
- xAxisIndex = xAxisIndices[i][0];
361
- column = xAxisIndices[i][1];
362
- xAxis = xAxes[xAxisIndex];
363
- // Sort it by X values
364
- rowArr.sort(function (// eslint-disable-line no-loop-func
365
- a, b) {
366
- return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
367
- });
368
- // Add header row
369
- xTitle = columnHeaderFormatter(xAxis);
370
- dataRows[0].splice(column, 0, xTitle);
371
- if (multiLevelHeaders && dataRows[1]) {
372
- // If using multi level headers, we just added top level header.
373
- // Also add for sub level
374
- dataRows[1].splice(column, 0, xTitle);
375
- }
376
- // Add the category column
377
- rowArr.forEach(function (// eslint-disable-line no-loop-func
378
- row) {
379
- let category = row.name;
380
- if (xAxis && !defined(category)) {
381
- if (xAxis.dateTime) {
382
- if (row.x instanceof Date) {
383
- row.x = row.x.getTime();
437
+ if (!rows[key]) {
438
+ rows[key] = [];
439
+ rows[key].xValues = [];
440
+ // ES5 replacement for Array.from / fill.
441
+ const arr = [];
442
+ for (let i = 0; i < series.chart.series.length; i++) {
443
+ arr[i] = 0;
444
+ }
445
+ // Create pointers array, holding information how many
446
+ // duplicates of specific x occurs in each series.
447
+ // Used for creating rows with duplicates.
448
+ rows[key].pointers = arr;
449
+ rows[key].pointers[series.index] = 1;
384
450
  }
385
- category = time.dateFormat(csvOptions.dateFormat, row.x);
386
- }
387
- else if (xAxis.categories) {
388
- category = pick(xAxis.names[row.x], xAxis.categories[row.x], row.x);
389
- }
390
- else {
391
- category = row.x;
392
- }
451
+ else {
452
+ // Handle duplicates (points with the same x), by
453
+ // creating extra rows based on pointers for better
454
+ // performance.
455
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
456
+ const modifiedKey = `${key},${rows[key].pointers[series.index]}`, originalKey = key;
457
+ if (rows[key].pointers[series.index]) {
458
+ if (!rows[modifiedKey]) {
459
+ rows[modifiedKey] = [];
460
+ rows[modifiedKey].xValues = [];
461
+ rows[modifiedKey].pointers = [];
462
+ }
463
+ key = modifiedKey;
464
+ }
465
+ rows[originalKey].pointers[series.index] += 1;
466
+ }
467
+ rows[key].x = mockPoint.x;
468
+ rows[key].name = name;
469
+ rows[key].xValues[xAxisIndex] = mockPoint.x;
470
+ while (j < valueCount) {
471
+ prop = pointArrayMap[j]; // `y`, `z` etc
472
+ val =
473
+ series.pointClass.prototype.getNestedProperty.apply(mockPoint, [prop]);
474
+ // Allow values from nested properties (#20470)
475
+ rows[key][i + j] = pick(
476
+ // Y axis category if present
477
+ categoryAndDatetimeMap.categoryMap[prop][val],
478
+ // Datetime yAxis
479
+ categoryAndDatetimeMap.dateTimeValueAxisMap[prop] ?
480
+ time.dateFormat(csvOptions.dateFormat, val) :
481
+ null,
482
+ // Linear/log yAxis
483
+ val);
484
+ j++;
485
+ }
486
+ });
487
+ i = i + j;
393
488
  }
394
- // Add the X/date/category
395
- row.splice(column, 0, category);
396
489
  });
397
- }
398
- dataRows = dataRows.concat(rowArr);
399
- fireEvent(this, 'exportData', { dataRows: dataRows });
400
- return dataRows;
401
- }
402
- /**
403
- * Export-data module required. Build a HTML table with the chart's current
404
- * data.
405
- *
406
- * @sample highcharts/export-data/viewdata/
407
- * View the data from the export menu
408
- *
409
- * @function Highcharts.Chart#getTable
410
- *
411
- * @param {boolean} [useLocalDecimalPoint]
412
- * Whether to use the local decimal point as detected from the browser.
413
- * This makes it easier to export data to Excel in the same locale as the
414
- * user is.
415
- *
416
- * @return {string}
417
- * HTML representation of the data.
418
- *
419
- * @emits Highcharts.Chart#event:afterGetTable
420
- */
421
- function chartGetTable(useLocalDecimalPoint) {
422
- const serialize = (node) => {
423
- if (!node.tagName || node.tagName === '#text') {
424
- // Text node
425
- return node.textContent || '';
490
+ // Make a sortable array
491
+ for (x in rows) {
492
+ if (Object.hasOwnProperty.call(rows, x)) {
493
+ rowArr.push(rows[x]);
494
+ }
426
495
  }
427
- const attributes = node.attributes;
428
- let html = `<${node.tagName}`;
429
- if (attributes) {
430
- Object.keys(attributes)
431
- .forEach((key) => {
432
- const value = attributes[key];
433
- html += ` ${key}="${value}"`;
496
+ let xAxisIndex, column;
497
+ // Add computed column headers and top level headers to final row set
498
+ dataRows = multiLevelHeaders ? [topLevelColumnTitles, columnTitles] :
499
+ [columnTitles];
500
+ i = xAxisIndices.length;
501
+ while (i--) { // Start from end to splice in
502
+ xAxisIndex = xAxisIndices[i][0];
503
+ column = xAxisIndices[i][1];
504
+ xAxis = xAxes[xAxisIndex];
505
+ // Sort it by X values
506
+ rowArr.sort(function (// eslint-disable-line no-loop-func
507
+ a, b) {
508
+ return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
434
509
  });
435
- }
436
- html += '>';
437
- html += node.textContent || '';
438
- (node.children || []).forEach((child) => {
439
- html += serialize(child);
440
- });
441
- html += `</${node.tagName}>`;
442
- return html;
443
- };
444
- const tree = this.getTableAST(useLocalDecimalPoint);
445
- return serialize(tree);
446
- }
447
- /**
448
- * Get the AST of a HTML table representing the chart data.
449
- *
450
- * @private
451
- *
452
- * @function Highcharts.Chart#getTableAST
453
- *
454
- * @param {boolean} [useLocalDecimalPoint]
455
- * Whether to use the local decimal point as detected from the browser.
456
- * This makes it easier to export data to Excel in the same locale as the
457
- * user is.
458
- *
459
- * @return {Highcharts.ASTNode}
460
- * The abstract syntax tree
461
- */
462
- function chartGetTableAST(useLocalDecimalPoint) {
463
- let rowLength = 0;
464
- const treeChildren = [];
465
- 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(),
466
- // Compare two rows for equality
467
- isRowEqual = function (row1, row2) {
468
- let i = row1.length;
469
- if (row2.length === i) {
470
- while (i--) {
471
- if (row1[i] !== row2[i]) {
472
- return false;
473
- }
510
+ // Add header row
511
+ xTitle = columnHeaderFormatter(xAxis);
512
+ dataRows[0].splice(column, 0, xTitle);
513
+ if (multiLevelHeaders && dataRows[1]) {
514
+ // If using multi level headers, we just added top level header.
515
+ // Also add for sub level
516
+ dataRows[1].splice(column, 0, xTitle);
474
517
  }
518
+ // Add the category column
519
+ rowArr.forEach(function (// eslint-disable-line no-loop-func
520
+ row) {
521
+ let category = row.name;
522
+ if (xAxis && !defined(category)) {
523
+ if (xAxis.dateTime) {
524
+ if (row.x instanceof Date) {
525
+ row.x = row.x.getTime();
526
+ }
527
+ category = time.dateFormat(csvOptions.dateFormat, row.x);
528
+ }
529
+ else if (xAxis.categories) {
530
+ category = pick(xAxis.names[row.x], xAxis.categories[row.x], row.x);
531
+ }
532
+ else {
533
+ category = row.x;
534
+ }
535
+ }
536
+ // Add the X/date/category
537
+ row.splice(column, 0, category);
538
+ });
475
539
  }
476
- else {
477
- return false;
478
- }
479
- return true;
480
- },
481
- // Get table cell HTML from value
482
- getCellHTMLFromValue = function (tagName, classes, attributes, value) {
483
- let textContent = pick(value, ''), className = 'highcharts-text' + (classes ? ' ' + classes : '');
484
- // Convert to string if number
485
- if (typeof textContent === 'number') {
486
- textContent = textContent.toString();
487
- if (decimalPoint === ',') {
488
- textContent = textContent.replace('.', decimalPoint);
489
- }
490
- className = 'highcharts-number';
491
- }
492
- else if (!value) {
493
- className = 'highcharts-empty';
494
- }
495
- attributes = extend({ 'class': className }, attributes);
496
- return {
497
- tagName,
498
- attributes,
499
- textContent
540
+ dataRows = dataRows.concat(rowArr);
541
+ fireEvent(chart, 'exportData', { dataRows: dataRows });
542
+ return dataRows;
543
+ }
544
+ /**
545
+ * Build a HTML table with the chart's current data.
546
+ *
547
+ * @sample highcharts/export-data/viewdata/
548
+ * View the data from the export menu
549
+ *
550
+ * @function Highcharts.Exporting#getTable
551
+ *
552
+ * @param {boolean} [useLocalDecimalPoint]
553
+ * Whether to use the local decimal point as detected from the browser. This
554
+ * makes it easier to export data to Excel in the same locale as the user
555
+ * is.
556
+ *
557
+ * @return {string}
558
+ * HTML representation of the data.
559
+ *
560
+ * @emits Highcharts.Chart#event:afterGetTable
561
+ *
562
+ * @requires modules/exporting
563
+ * @requires modules/export-data
564
+ */
565
+ function getTable(useLocalDecimalPoint) {
566
+ const serialize = (node) => {
567
+ if (!node.tagName || node.tagName === '#text') {
568
+ // Text node
569
+ return node.textContent || '';
570
+ }
571
+ const attributes = node.attributes;
572
+ let html = `<${node.tagName}`;
573
+ if (attributes) {
574
+ Object.keys(attributes)
575
+ .forEach((key) => {
576
+ const value = attributes[key];
577
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
578
+ html += ` ${key}="${value}"`;
579
+ });
580
+ }
581
+ html += '>';
582
+ html += node.textContent || '';
583
+ (node.children || []).forEach((child) => {
584
+ html += serialize(child);
585
+ });
586
+ html += `</${node.tagName}>`;
587
+ return html;
500
588
  };
501
- },
502
- // Get table header markup from row data
503
- getTableHeaderHTML = function (topheaders, subheaders, rowLength) {
504
- const theadChildren = [];
505
- let i = 0, len = rowLength || subheaders && subheaders.length, next, cur, curColspan = 0, rowspan;
506
- // Clean up multiple table headers. Chart.getDataRows() returns two
507
- // levels of headers when using multilevel, not merged. We need to
508
- // merge identical headers, remove redundant headers, and keep it
509
- // all marked up nicely.
510
- if (useMultiLevelHeaders &&
511
- topheaders &&
512
- subheaders &&
513
- !isRowEqual(topheaders, subheaders)) {
514
- const trChildren = [];
515
- for (; i < len; ++i) {
516
- cur = topheaders[i];
517
- next = topheaders[i + 1];
518
- if (cur === next) {
519
- ++curColspan;
589
+ const tree = this.getTableAST(useLocalDecimalPoint);
590
+ return serialize(tree);
591
+ }
592
+ /**
593
+ * Get the AST of a HTML table representing the chart data.
594
+ *
595
+ * @private
596
+ * @function Highcharts.Exporting#getTableAST
597
+ *
598
+ * @param {boolean} [useLocalDecimalPoint]
599
+ * Whether to use the local decimal point as detected from the browser. This
600
+ * makes it easier to export data to Excel in the same locale as the user
601
+ * is.
602
+ *
603
+ * @return {Highcharts.ASTNode}
604
+ * The abstract syntax tree
605
+ *
606
+ * @requires modules/exporting
607
+ * @requires modules/export-data
608
+ */
609
+ function getTableAST(useLocalDecimalPoint) {
610
+ let rowLength = 0;
611
+ 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(),
612
+ // Compare two rows for equality
613
+ isRowEqual = function (row1, row2) {
614
+ let i = row1.length;
615
+ if (row2.length === i) {
616
+ while (i--) {
617
+ if (row1[i] !== row2[i]) {
618
+ return false;
619
+ }
520
620
  }
521
- else if (curColspan) {
522
- // Ended colspan
523
- // Add cur to HTML with colspan.
524
- trChildren.push(getCellHTMLFromValue('th', 'highcharts-table-topheading', {
525
- scope: 'col',
526
- colspan: curColspan + 1
527
- }, cur));
528
- curColspan = 0;
621
+ }
622
+ else {
623
+ return false;
624
+ }
625
+ return true;
626
+ },
627
+ // Get table cell HTML from value
628
+ getCellHTMLFromValue = function (tagName, classes, attributes, value) {
629
+ let textContent = pick(value, ''), className = 'highcharts-text' + (classes ? ' ' + classes : '');
630
+ // Convert to string if number
631
+ if (typeof textContent === 'number') {
632
+ textContent = textContent.toString();
633
+ if (decimalPoint === ',') {
634
+ textContent = textContent.replace('.', decimalPoint);
529
635
  }
530
- else {
531
- // Cur is standalone. If it is same as sublevel,
532
- // remove sublevel and add just toplevel.
533
- if (cur === subheaders[i]) {
534
- if (options.exporting.useRowspanHeaders) {
535
- rowspan = 2;
536
- delete subheaders[i];
636
+ className = 'highcharts-number';
637
+ }
638
+ else if (!value) {
639
+ className = 'highcharts-empty';
640
+ }
641
+ attributes = extend({ 'class': className }, attributes);
642
+ return {
643
+ tagName,
644
+ attributes,
645
+ textContent
646
+ };
647
+ },
648
+ // Get table header markup from row data
649
+ getTableHeaderHTML = function (topheaders, subheaders, rowLength) {
650
+ const theadChildren = [];
651
+ let i = 0, len = rowLength || subheaders && subheaders.length, next, cur, curColspan = 0, rowspan;
652
+ // Clean up multiple table headers. Chart.getDataRows() returns
653
+ // two levels of headers when using multilevel, not merged. We
654
+ // need to merge identical headers, remove redundant headers,
655
+ // and keep it all marked up nicely.
656
+ if (useMultiLevelHeaders &&
657
+ topheaders &&
658
+ subheaders &&
659
+ !isRowEqual(topheaders, subheaders)) {
660
+ const trChildren = [];
661
+ for (; i < len; ++i) {
662
+ cur = topheaders[i];
663
+ next = topheaders[i + 1];
664
+ if (cur === next) {
665
+ ++curColspan;
666
+ }
667
+ else if (curColspan) {
668
+ // Ended colspan
669
+ // Add cur to HTML with colspan.
670
+ trChildren.push(getCellHTMLFromValue('th', 'highcharts-table-topheading', {
671
+ scope: 'col',
672
+ colspan: curColspan + 1
673
+ }, cur));
674
+ curColspan = 0;
675
+ }
676
+ else {
677
+ // Cur is standalone. If it is same as sublevel,
678
+ // remove sublevel and add just toplevel.
679
+ if (cur === subheaders[i]) {
680
+ if (exporting.options.useRowspanHeaders) {
681
+ rowspan = 2;
682
+ delete subheaders[i];
683
+ }
684
+ else {
685
+ rowspan = 1;
686
+ subheaders[i] = '';
687
+ }
537
688
  }
538
689
  else {
539
690
  rowspan = 1;
540
- subheaders[i] = '';
541
691
  }
692
+ const cell = getCellHTMLFromValue('th', 'highcharts-table-topheading', { scope: 'col' }, cur);
693
+ if (rowspan > 1 && cell.attributes) {
694
+ cell.attributes.valign = 'top';
695
+ cell.attributes.rowspan = rowspan;
696
+ }
697
+ trChildren.push(cell);
542
698
  }
543
- else {
544
- rowspan = 1;
545
- }
546
- const cell = getCellHTMLFromValue('th', 'highcharts-table-topheading', { scope: 'col' }, cur);
547
- if (rowspan > 1 && cell.attributes) {
548
- cell.attributes.valign = 'top';
549
- cell.attributes.rowspan = rowspan;
699
+ }
700
+ theadChildren.push({
701
+ tagName: 'tr',
702
+ children: trChildren
703
+ });
704
+ }
705
+ // Add the subheaders (the only headers if not using
706
+ // multilevels)
707
+ if (subheaders) {
708
+ const trChildren = [];
709
+ for (i = 0, len = subheaders.length; i < len; ++i) {
710
+ if (typeof subheaders[i] !== 'undefined') {
711
+ trChildren.push(getCellHTMLFromValue('th', null, { scope: 'col' }, subheaders[i]));
550
712
  }
551
- trChildren.push(cell);
552
713
  }
714
+ theadChildren.push({
715
+ tagName: 'tr',
716
+ children: trChildren
717
+ });
553
718
  }
554
- theadChildren.push({
555
- tagName: 'tr',
556
- children: trChildren
719
+ return {
720
+ tagName: 'thead',
721
+ children: theadChildren
722
+ };
723
+ };
724
+ // Add table caption
725
+ const { tableCaption } = exporting.options || {};
726
+ if (tableCaption !== false) {
727
+ treeChildren.push({
728
+ tagName: 'caption',
729
+ attributes: {
730
+ 'class': 'highcharts-table-caption'
731
+ },
732
+ textContent: typeof tableCaption === 'string' ?
733
+ tableCaption :
734
+ options.title?.text || options.lang.chartTitle
557
735
  });
558
736
  }
559
- // Add the subheaders (the only headers if not using multilevels)
560
- if (subheaders) {
737
+ // Find longest row
738
+ for (let i = 0, len = rows.length; i < len; ++i) {
739
+ if (rows[i].length > rowLength) {
740
+ rowLength = rows[i].length;
741
+ }
742
+ }
743
+ // Add header
744
+ treeChildren.push(getTableHeaderHTML(topHeaders, subHeaders || [], Math.max(rowLength, subHeaders?.length || 0)));
745
+ // Transform the rows to HTML
746
+ const trs = [];
747
+ rows.forEach(function (row) {
561
748
  const trChildren = [];
562
- for (i = 0, len = subheaders.length; i < len; ++i) {
563
- if (typeof subheaders[i] !== 'undefined') {
564
- trChildren.push(getCellHTMLFromValue('th', null, { scope: 'col' }, subheaders[i]));
565
- }
749
+ for (let j = 0; j < rowLength; j++) {
750
+ // Make first column a header too. Especially important for
751
+ // category axes, but also might make sense for datetime? Should
752
+ // await user feedback on this.
753
+ trChildren.push(getCellHTMLFromValue(j ? 'td' : 'th', null, j ? {} : { scope: 'row' }, row[j]));
566
754
  }
567
- theadChildren.push({
755
+ trs.push({
568
756
  tagName: 'tr',
569
757
  children: trChildren
570
758
  });
571
- }
572
- return {
573
- tagName: 'thead',
574
- children: theadChildren
575
- };
576
- };
577
- // Add table caption
578
- const { tableCaption } = options.exporting || {};
579
- if (tableCaption !== false) {
759
+ });
580
760
  treeChildren.push({
581
- tagName: 'caption',
582
- attributes: {
583
- 'class': 'highcharts-table-caption'
584
- },
585
- textContent: typeof tableCaption === 'string' ?
586
- tableCaption :
587
- options.title?.text || options.lang.chartTitle
761
+ tagName: 'tbody',
762
+ children: trs
588
763
  });
764
+ const e = {
765
+ tree: {
766
+ tagName: 'table',
767
+ id: `highcharts-data-table-${chart.index}`,
768
+ children: treeChildren
769
+ }
770
+ };
771
+ fireEvent(chart, 'afterGetTableAST', e);
772
+ return e.tree;
589
773
  }
590
- // Find longest row
591
- for (let i = 0, len = rows.length; i < len; ++i) {
592
- if (rows[i].length > rowLength) {
593
- rowLength = rows[i].length;
594
- }
774
+ /**
775
+ * Hide the data table when visible.
776
+ *
777
+ * @function Highcharts.Exporting#hideData
778
+ *
779
+ * @requires modules/exporting
780
+ * @requires modules/export-data
781
+ */
782
+ function hideData() {
783
+ this.toggleDataTable(false);
595
784
  }
596
- // Add header
597
- treeChildren.push(getTableHeaderHTML(topHeaders, subHeaders, Math.max(rowLength, subHeaders.length)));
598
- // Transform the rows to HTML
599
- const trs = [];
600
- rows.forEach(function (row) {
601
- const trChildren = [];
602
- for (let j = 0; j < rowLength; j++) {
603
- // Make first column a header too. Especially important for
604
- // category axes, but also might make sense for datetime? Should
605
- // await user feedback on this.
606
- trChildren.push(getCellHTMLFromValue(j ? 'td' : 'th', null, j ? {} : { scope: 'row' }, row[j]));
607
- }
608
- trs.push({
609
- tagName: 'tr',
610
- children: trChildren
611
- });
612
- });
613
- treeChildren.push({
614
- tagName: 'tbody',
615
- children: trs
616
- });
617
- const e = {
618
- tree: {
619
- tagName: 'table',
620
- id: `highcharts-data-table-${this.index}`,
621
- children: treeChildren
622
- }
623
- };
624
- fireEvent(this, 'aftergetTableAST', e);
625
- return e.tree;
626
- }
627
- /**
628
- * Export-data module required. Hide the data table when visible.
629
- *
630
- * @function Highcharts.Chart#hideData
631
- */
632
- function chartHideData() {
633
- this.toggleDataTable(false);
634
- }
635
- /**
636
- * @private
637
- */
638
- function chartToggleDataTable(show) {
639
- show = pick(show, !this.isDataTableVisible);
640
- // Create the div
641
- const createContainer = show && !this.dataTableDiv;
642
- if (createContainer) {
643
- this.dataTableDiv = doc.createElement('div');
644
- this.dataTableDiv.className = 'highcharts-data-table';
645
- // Insert after the chart container
646
- this.renderTo.parentNode.insertBefore(this.dataTableDiv, this.renderTo.nextSibling);
647
- }
648
- // Toggle the visibility
649
- if (this.dataTableDiv) {
650
- const style = this.dataTableDiv.style, oldDisplay = style.display;
651
- style.display = show ? 'block' : 'none';
652
- // Generate the data table
653
- if (show) {
654
- this.dataTableDiv.innerHTML = AST.emptyHTML;
655
- const ast = new AST([this.getTableAST()]);
656
- ast.addToDOM(this.dataTableDiv);
657
- fireEvent(this, 'afterViewData', {
658
- element: this.dataTableDiv,
659
- wasHidden: createContainer || oldDisplay !== style.display
660
- });
785
+ /**
786
+ * Toggle showing data table.
787
+ *
788
+ * @private
789
+ * @function Highcharts.Exporting#hideData
790
+ *
791
+ * @param {boolean} [show]
792
+ * Whether to show data table or not.
793
+ *
794
+ * @requires modules/exporting
795
+ * @requires modules/export-data
796
+ */
797
+ function toggleDataTable(show) {
798
+ const chart = this.chart,
799
+ // Create the div
800
+ createContainer = (show = pick(show, !this.isDataTableVisible)) &&
801
+ !this.dataTableDiv;
802
+ if (createContainer) {
803
+ this.dataTableDiv = doc.createElement('div');
804
+ this.dataTableDiv.className = 'highcharts-data-table';
805
+ // Insert after the chart container
806
+ chart.renderTo.parentNode.insertBefore(this.dataTableDiv, chart.renderTo.nextSibling);
807
+ }
808
+ // Toggle the visibility
809
+ if (this.dataTableDiv) {
810
+ const style = this.dataTableDiv.style, oldDisplay = style.display;
811
+ style.display = show ? 'block' : 'none';
812
+ // Generate the data table
813
+ if (show) {
814
+ this.dataTableDiv.innerHTML = AST.emptyHTML;
815
+ const ast = new AST([this.getTableAST()]);
816
+ ast.addToDOM(this.dataTableDiv);
817
+ fireEvent(chart, 'afterViewData', {
818
+ element: this.dataTableDiv,
819
+ wasHidden: createContainer || oldDisplay !== style.display
820
+ });
821
+ }
822
+ else {
823
+ fireEvent(chart, 'afterHideData');
824
+ }
661
825
  }
662
- else {
663
- fireEvent(this, 'afterHideData');
826
+ // Set the flag
827
+ this.isDataTableVisible = show;
828
+ // Change the menu item text
829
+ const exportDivElements = this.divElements, options = this.options, menuItems = options.buttons?.contextButton.menuItems, lang = chart.options.lang;
830
+ if (options &&
831
+ options.menuItemDefinitions &&
832
+ lang &&
833
+ lang.viewData &&
834
+ lang.hideData &&
835
+ menuItems &&
836
+ exportDivElements) {
837
+ const exportDivElement = exportDivElements[menuItems.indexOf('viewData')];
838
+ if (exportDivElement) {
839
+ AST.setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);
840
+ }
664
841
  }
665
842
  }
666
- // Set the flag
667
- this.isDataTableVisible = show;
668
- // Change the menu item text
669
- const exportDivElements = this.exportDivElements, options = this.options.exporting, menuItems = options &&
670
- options.buttons &&
671
- options.buttons.contextButton.menuItems, lang = this.options.lang;
672
- if (options &&
673
- options.menuItemDefinitions &&
674
- lang &&
675
- lang.viewData &&
676
- lang.hideData &&
677
- menuItems &&
678
- exportDivElements) {
679
- const exportDivElement = exportDivElements[menuItems.indexOf('viewData')];
680
- if (exportDivElement) {
681
- AST.setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);
682
- }
843
+ /**
844
+ * View the data in a table below the chart.
845
+ *
846
+ * @function Highcharts.Exporting#viewData
847
+ *
848
+ * @emits Highcharts.Chart#event:afterViewData
849
+ *
850
+ * @requires modules/exporting
851
+ * @requires modules/export-data
852
+ */
853
+ function viewData() {
854
+ this.toggleDataTable(true);
683
855
  }
684
- }
685
- /**
686
- * Export-data module required. View the data in a table below the chart.
687
- *
688
- * @function Highcharts.Chart#viewData
689
- *
690
- * @emits Highcharts.Chart#event:afterViewData
691
- */
692
- function chartViewData() {
693
- this.toggleDataTable(true);
694
- }
695
- /**
696
- * @private
697
- */
698
- function compose(ChartClass, SeriesClass) {
699
- const chartProto = ChartClass.prototype;
700
- if (!chartProto.getCSV) {
701
- const exportingOptions = getOptions().exporting;
702
- // Add an event listener to handle the showTable option
703
- addEvent(ChartClass, 'afterViewData', onChartAfterViewData);
704
- addEvent(ChartClass, 'render', onChartRenderer);
705
- addEvent(ChartClass, 'destroy', onChartDestroy);
706
- chartProto.downloadCSV = chartDownloadCSV;
707
- chartProto.downloadXLS = chartDownloadXLS;
708
- chartProto.getCSV = chartGetCSV;
709
- chartProto.getDataRows = chartGetDataRows;
710
- chartProto.getTable = chartGetTable;
711
- chartProto.getTableAST = chartGetTableAST;
712
- chartProto.hideData = chartHideData;
713
- chartProto.toggleDataTable = chartToggleDataTable;
714
- chartProto.viewData = chartViewData;
715
- // Add "Download CSV" to the exporting menu.
716
- // @todo consider move to defaults
717
- if (exportingOptions) {
718
- extend(exportingOptions.menuItemDefinitions, {
719
- downloadCSV: {
720
- textKey: 'downloadCSV',
721
- onclick: function () {
722
- this.downloadCSV();
723
- }
724
- },
725
- downloadXLS: {
726
- textKey: 'downloadXLS',
727
- onclick: function () {
728
- this.downloadXLS();
729
- }
730
- },
731
- viewData: {
732
- textKey: 'viewData',
733
- onclick: function () {
734
- wrapLoading.call(this, this.toggleDataTable);
735
- }
856
+ /**
857
+ * Wrapper function for the download functions, which handles showing and
858
+ * hiding the loading message
859
+ *
860
+ * @private
861
+ *
862
+ * @requires modules/exporting
863
+ * @requires modules/export-data
864
+ */
865
+ function wrapLoading(fn) {
866
+ const chart = this.chart, showMessage = Boolean(this.options.showExportInProgress);
867
+ // Prefer requestAnimationFrame if available
868
+ const timeoutFn = win.requestAnimationFrame || setTimeout;
869
+ // Outer timeout avoids menu freezing on click
870
+ timeoutFn(() => {
871
+ showMessage &&
872
+ chart.showLoading(chart.options.lang.exportInProgress);
873
+ timeoutFn(() => {
874
+ try {
875
+ fn.call(this);
876
+ }
877
+ finally {
878
+ showMessage && chart.hideLoading();
736
879
  }
737
880
  });
738
- if (exportingOptions.buttons &&
739
- exportingOptions.buttons.contextButton.menuItems) {
740
- exportingOptions.buttons.contextButton.menuItems.push('separator', 'downloadCSV', 'downloadXLS', 'viewData');
741
- }
742
- }
743
- setOptions(ExportDataDefaults);
744
- const { arearange: AreaRangeSeries, gantt: GanttSeries, map: MapSeries, mapbubble: MapBubbleSeries, treemap: TreemapSeries, xrange: XRangeSeries } = SeriesClass.types;
745
- if (AreaRangeSeries) {
746
- AreaRangeSeries.prototype.keyToAxis = {
747
- low: 'y',
748
- high: 'y'
749
- };
750
- }
751
- if (GanttSeries) {
752
- GanttSeries.prototype.exportKey = 'name';
753
- GanttSeries.prototype.keyToAxis = {
754
- start: 'x',
755
- end: 'x'
756
- };
757
- }
758
- if (MapSeries) {
759
- MapSeries.prototype.exportKey = 'name';
760
- }
761
- if (MapBubbleSeries) {
762
- MapBubbleSeries.prototype.exportKey = 'name';
763
- }
764
- if (TreemapSeries) {
765
- TreemapSeries.prototype.exportKey = 'name';
766
- }
767
- if (XRangeSeries) {
768
- XRangeSeries.prototype.keyToAxis = {
769
- x2: 'x'
770
- };
771
- }
772
- }
773
- }
774
- /**
775
- * Get a blob object from content, if blob is supported
776
- *
777
- * @private
778
- * @param {string} content
779
- * The content to create the blob from.
780
- * @param {string} type
781
- * The type of the content.
782
- * @return {string|undefined}
783
- * The blob object, or undefined if not supported.
784
- */
785
- function getBlobFromContent(content, type) {
786
- const nav = win.navigator, domurl = win.URL || win.webkitURL || win;
787
- try {
788
- // MS specific
789
- if ((nav.msSaveOrOpenBlob) && win.MSBlobBuilder) {
790
- const blob = new win.MSBlobBuilder();
791
- blob.append(content);
792
- return blob.getBlob('image/svg+xml');
793
- }
794
- return domurl.createObjectURL(new win.Blob(['\uFEFF' + content], // #7084
795
- { type: type }));
796
- }
797
- catch (e) {
798
- // Ignore
881
+ });
799
882
  }
800
- }
801
- /**
802
- * @private
803
- */
804
- function onChartAfterViewData() {
805
- const chart = this, dataTableDiv = chart.dataTableDiv, getCellValue = (tr, index) => tr.children[index].textContent, comparer = (index, ascending) => (a, b) => {
806
- const sort = (v1, v2) => (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?
807
- v1 - v2 :
808
- v1.toString().localeCompare(v2));
809
- return sort(getCellValue(ascending ? a : b, index), getCellValue(ascending ? b : a, index));
810
- };
811
- if (dataTableDiv &&
812
- chart.options.exporting &&
813
- chart.options.exporting.allowTableSorting) {
814
- const row = dataTableDiv.querySelector('thead tr');
815
- if (row) {
816
- row.childNodes.forEach((th) => {
817
- const table = th.closest('table');
818
- th.addEventListener('click', function () {
819
- const rows = [...dataTableDiv.querySelectorAll('tr:not(thead tr)')], headers = [...th.parentNode.children];
820
- rows.sort(comparer(headers.indexOf(th), chart.ascendingOrderInTable =
821
- !chart.ascendingOrderInTable)).forEach((tr) => {
822
- table.appendChild(tr);
823
- });
824
- headers.forEach((th) => {
825
- [
826
- 'highcharts-sort-ascending',
827
- 'highcharts-sort-descending'
828
- ].forEach((className) => {
829
- if (th.classList.contains(className)) {
830
- th.classList.remove(className);
831
- }
832
- });
883
+ /**
884
+ * Function that runs on the chart's 'afterViewData' event.
885
+ *
886
+ * @private
887
+ * @function Highcharts.Chart#onChartAfterViewData
888
+ *
889
+ * @requires modules/exporting
890
+ * @requires modules/export-data
891
+ */
892
+ function onChartAfterViewData() {
893
+ const exporting = this.exporting, dataTableDiv = exporting?.dataTableDiv, getCellValue = (tr, index) => tr.children[index].textContent, comparer = (index, ascending) => (a, b) => {
894
+ const sort = (v1, v2) => (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?
895
+ v1 - v2 :
896
+ v1.toString().localeCompare(v2));
897
+ return sort(getCellValue(ascending ? a : b, index), getCellValue(ascending ? b : a, index));
898
+ };
899
+ if (dataTableDiv && exporting.options.allowTableSorting) {
900
+ const row = dataTableDiv.querySelector('thead tr');
901
+ if (row) {
902
+ row.childNodes.forEach((th) => {
903
+ const tableBody = dataTableDiv.querySelector('tbody');
904
+ th.addEventListener('click', function () {
905
+ const rows = [...dataTableDiv.querySelectorAll('tr:not(thead tr)')], headers = [...th.parentNode.children];
906
+ if (exporting) {
907
+ rows.sort(comparer(headers.indexOf(th), exporting.ascendingOrderInTable =
908
+ !exporting.ascendingOrderInTable)).forEach((tr) => {
909
+ tableBody?.appendChild(tr);
910
+ });
911
+ headers.forEach((th) => {
912
+ [
913
+ 'highcharts-sort-ascending',
914
+ 'highcharts-sort-descending'
915
+ ].forEach((className) => {
916
+ if (th.classList.contains(className)) {
917
+ th.classList.remove(className);
918
+ }
919
+ });
920
+ });
921
+ th.classList.add(exporting.ascendingOrderInTable ?
922
+ 'highcharts-sort-ascending' :
923
+ 'highcharts-sort-descending');
924
+ }
833
925
  });
834
- th.classList.add(chart.ascendingOrderInTable ?
835
- 'highcharts-sort-ascending' :
836
- 'highcharts-sort-descending');
837
926
  });
838
- });
927
+ }
839
928
  }
840
929
  }
841
- }
842
- /**
843
- * Handle the showTable option
844
- * @private
845
- */
846
- function onChartRenderer() {
847
- if (this.options &&
848
- this.options.exporting &&
849
- this.options.exporting.showTable &&
850
- !this.options.chart.forExport) {
851
- this.viewData();
930
+ /**
931
+ * Function that runs on the chart's 'render' event. Handle the showTable
932
+ * option.
933
+ *
934
+ * @private
935
+ * @function Highcharts.Chart#onChartRenderer
936
+ *
937
+ * @requires modules/exporting
938
+ * @requires modules/export-data
939
+ */
940
+ function onChartRenderer() {
941
+ if (this.options?.exporting?.showTable &&
942
+ !this.options.chart.forExport) {
943
+ this.exporting?.viewData();
944
+ }
852
945
  }
853
- }
854
- /**
855
- * Clean up
856
- * @private
857
- */
858
- function onChartDestroy() {
859
- this.dataTableDiv?.remove();
860
- }
946
+ /**
947
+ * Function that runs on the chart's 'destroy' event. Handle cleaning up the
948
+ * dataTableDiv element.
949
+ *
950
+ * @private
951
+ * @function Highcharts.Chart#onChartDestroy
952
+ *
953
+ * @requires modules/exporting
954
+ * @requires modules/export-data
955
+ */
956
+ function onChartDestroy() {
957
+ this.exporting?.dataTableDiv?.remove();
958
+ }
959
+ })(ExportData || (ExportData = {}));
861
960
  /* *
862
961
  *
863
- * Default Export
962
+ * Default Export
864
963
  *
865
964
  * */
866
- const ExportData = {
867
- compose
868
- };
869
965
  export default ExportData;
870
966
  /* *
871
967
  *