@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
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Highcharts JS v12.2.0 (2025-04-07)
2
+ * @license Highcharts JS v12.3.0 (2025-06-21)
3
3
  * @module highcharts/modules/export-data
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/exporting
6
6
  *
7
- * Exporting module
7
+ * Export data module
8
8
  *
9
9
  * (c) 2010-2025 Torstein Honsi
10
10
  *
@@ -70,6 +70,8 @@ var external_highcharts_src_js_default_default = /*#__PURE__*/__webpack_require_
70
70
  * */
71
71
 
72
72
  const { isSafari, win, win: { document: doc } } = (external_highcharts_src_js_default_default());
73
+
74
+ const { error } = (external_highcharts_src_js_default_default());
73
75
  /* *
74
76
  *
75
77
  * Constants
@@ -83,12 +85,15 @@ const domurl = win.URL || win.webkitURL || win;
83
85
  * */
84
86
  /**
85
87
  * Convert base64 dataURL to Blob if supported, otherwise returns undefined.
88
+ *
86
89
  * @private
87
90
  * @function Highcharts.dataURLtoBlob
91
+ *
88
92
  * @param {string} dataURL
89
- * URL to convert
90
- * @return {string|undefined}
91
- * Blob
93
+ * URL to convert.
94
+ *
95
+ * @return {string | undefined}
96
+ * Blob.
92
97
  */
93
98
  function dataURLtoBlob(dataURL) {
94
99
  const parts = dataURL
@@ -115,11 +120,11 @@ function dataURLtoBlob(dataURL) {
115
120
  *
116
121
  * @private
117
122
  * @function Highcharts.downloadURL
118
- * @param {string|global.URL} dataURL
119
- * The dataURL/Blob to download
123
+ *
124
+ * @param {string | global.URL} dataURL
125
+ * The dataURL/Blob to download.
120
126
  * @param {string} filename
121
- * The name of the resulting file (w/extension)
122
- * @return {void}
127
+ * The name of the resulting file (w/extension).
123
128
  */
124
129
  function downloadURL(dataURL, filename) {
125
130
  const nav = win.navigator, a = doc.createElement('a');
@@ -169,6 +174,33 @@ function downloadURL(dataURL, filename) {
169
174
  }
170
175
  }
171
176
  }
177
+ /**
178
+ * Asynchronously downloads a script from a provided location.
179
+ *
180
+ * @private
181
+ * @function Highcharts.getScript
182
+ *
183
+ * @param {string} scriptLocation
184
+ * The location for the script to fetch.
185
+ */
186
+ function getScript(scriptLocation) {
187
+ return new Promise((resolve, reject) => {
188
+ const head = doc.getElementsByTagName('head')[0], script = doc.createElement('script');
189
+ // Set type and location for the script
190
+ script.type = 'text/javascript';
191
+ script.src = scriptLocation;
192
+ // Resolve in case of a succesful script fetching
193
+ script.onload = () => {
194
+ resolve();
195
+ };
196
+ // Reject in case of fail
197
+ script.onerror = () => {
198
+ reject(error(`Error loading script ${scriptLocation}`));
199
+ };
200
+ // Append the newly created script
201
+ head.appendChild(script);
202
+ });
203
+ }
172
204
  /* *
173
205
  *
174
206
  * Default Export
@@ -176,13 +208,17 @@ function downloadURL(dataURL, filename) {
176
208
  * */
177
209
  const DownloadURL = {
178
210
  dataURLtoBlob,
179
- downloadURL
211
+ downloadURL,
212
+ getScript
180
213
  };
181
214
  /* harmony default export */ const Extensions_DownloadURL = (DownloadURL);
182
215
 
183
216
  ;// external ["../highcharts.src.js","default","AST"]
184
217
  const external_highcharts_src_js_default_AST_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"].AST;
185
218
  var external_highcharts_src_js_default_AST_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_AST_namespaceObject);
219
+ ;// external ["../highcharts.src.js","default","Chart"]
220
+ const external_highcharts_src_js_default_Chart_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"].Chart;
221
+ var external_highcharts_src_js_default_Chart_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_Chart_namespaceObject);
186
222
  ;// ./code/es-modules/Extensions/ExportData/ExportDataDefaults.js
187
223
  /* *
188
224
  *
@@ -213,7 +249,7 @@ const exporting = {
213
249
  * @sample highcharts/export-data/multilevel-table
214
250
  * Multiple table headers
215
251
  *
216
- * @type {boolean|string}
252
+ * @type {boolean | string}
217
253
  * @since 6.0.4
218
254
  * @requires modules/export-data
219
255
  * @apioption exporting.tableCaption
@@ -223,8 +259,8 @@ const exporting = {
223
259
  * in a HTML table or a JavaScript structure.
224
260
  *
225
261
  * This module adds data export options to the export menu and provides
226
- * functions like `Chart.getCSV`, `Chart.getTable`, `Chart.getDataRows`
227
- * and `Chart.viewData`.
262
+ * functions like `Exporting.getCSV`, `Exporting.getTable`,
263
+ * `Exporting.getDataRows` and `Exporting.viewData`.
228
264
  *
229
265
  * The XLS converter is limited and only creates a HTML string that is
230
266
  * passed for download, which works but creates a warning before
@@ -244,7 +280,7 @@ const exporting = {
244
280
  *
245
281
  * Options for annotations in the export-data table.
246
282
  *
247
- * @since 8.2.0
283
+ * @since 8.2.0
248
284
  * @requires modules/export-data
249
285
  * @requires modules/annotations
250
286
  *
@@ -255,7 +291,7 @@ const exporting = {
255
291
  * The way to mark the separator for annotations
256
292
  * combined in one export-data table cell.
257
293
  *
258
- * @since 8.2.0
294
+ * @since 8.2.0
259
295
  * @requires modules/annotations
260
296
  */
261
297
  itemDelimiter: '; ',
@@ -266,7 +302,7 @@ const exporting = {
266
302
  * @sample highcharts/export-data/join-annotations/
267
303
  * Concatenate point annotations with itemDelimiter set.
268
304
  *
269
- * @since 8.2.0
305
+ * @since 8.2.0
270
306
  * @requires modules/annotations
271
307
  */
272
308
  join: false
@@ -297,7 +333,7 @@ const exporting = {
297
333
  * @sample highcharts/export-data/multilevel-table
298
334
  * Multiple table headers
299
335
  *
300
- * @type {Function|null}
336
+ * @type {Function | null}
301
337
  */
302
338
  columnHeaderFormatter: null,
303
339
  /**
@@ -310,7 +346,7 @@ const exporting = {
310
346
  * as the browser locale, typically `.` (English) or `,` (German,
311
347
  * French etc).
312
348
  *
313
- * @type {string|null}
349
+ * @type {string | null}
314
350
  * @since 6.0.4
315
351
  */
316
352
  decimalPoint: null,
@@ -320,7 +356,7 @@ const exporting = {
320
356
  * locale. If the locale _decimal point_ is `,`, the `itemDelimiter`
321
357
  * defaults to `;`, otherwise the `itemDelimiter` defaults to `,`.
322
358
  *
323
- * @type {string|null}
359
+ * @type {string | null}
324
360
  */
325
361
  itemDelimiter: null,
326
362
  /**
@@ -328,6 +364,60 @@ const exporting = {
328
364
  */
329
365
  lineDelimiter: '\n'
330
366
  },
367
+ /**
368
+ * An object consisting of definitions for the menu items in the context
369
+ * menu. Each key value pair has a `key` that is referenced in the
370
+ * [menuItems](#exporting.buttons.contextButton.menuItems) setting,
371
+ * and a `value`, which is an object with the following properties:
372
+ *
373
+ * - **onclick:** The click handler for the menu item
374
+ *
375
+ * - **text:** The text for the menu item
376
+ *
377
+ * - **textKey:** If internationalization is required, the key to a language
378
+ * string
379
+ *
380
+ * Custom text for the "exitFullScreen" can be set only in lang options
381
+ * (it is not a separate button).
382
+ *
383
+ * @sample highcharts/exporting/menuitemdefinitions/
384
+ * Menu item definitions
385
+ * @sample highcharts/exporting/menuitemdefinitions-webp/
386
+ * Adding a custom menu item for WebP export
387
+ *
388
+ * @type {Highcharts.Dictionary<Highcharts.ExportingMenuObject>}
389
+ * @default {"downloadCSV": {}, "downloadXLS": {}, "viewData": {}}
390
+ * @requires modules/export-data
391
+ */
392
+ menuItemDefinitions: {
393
+ /**
394
+ * @ignore
395
+ */
396
+ downloadCSV: {
397
+ textKey: 'downloadCSV',
398
+ onclick: function () {
399
+ this.exporting?.downloadCSV();
400
+ }
401
+ },
402
+ /**
403
+ * @ignore
404
+ */
405
+ downloadXLS: {
406
+ textKey: 'downloadXLS',
407
+ onclick: function () {
408
+ this.exporting?.downloadXLS();
409
+ }
410
+ },
411
+ /**
412
+ * @ignore
413
+ */
414
+ viewData: {
415
+ textKey: 'viewData',
416
+ onclick: function () {
417
+ this.exporting?.wrapLoading(this.exporting.toggleDataTable);
418
+ }
419
+ }
420
+ },
331
421
  /**
332
422
  * Show a HTML table below the chart with the chart's current data.
333
423
  *
@@ -370,7 +460,7 @@ const exporting = {
370
460
  *
371
461
  * The message can be altered by changing [](#lang.exporting.exportInProgress)
372
462
  *
373
- * @since 11.3.0
463
+ * @since 11.3.0
374
464
  * @requires modules/export-data
375
465
  */
376
466
  showExportInProgress: true
@@ -397,7 +487,7 @@ const lang = {
397
487
  /**
398
488
  * The text for exported table.
399
489
  *
400
- * @since 8.1.0
490
+ * @since 8.1.0
401
491
  * @requires modules/export-data
402
492
  */
403
493
  exportData: {
@@ -424,14 +514,14 @@ const lang = {
424
514
  /**
425
515
  * The text for the menu item.
426
516
  *
427
- * @since 8.2.0
517
+ * @since 8.2.0
428
518
  * @requires modules/export-data
429
519
  */
430
520
  hideData: 'Hide data table',
431
521
  /**
432
522
  * Text to show when export is in progress.
433
523
  *
434
- * @since 11.3.0
524
+ * @since 11.3.0
435
525
  * @requires modules/export-data
436
526
  */
437
527
  exportInProgress: 'Exporting...'
@@ -492,857 +582,953 @@ const ExportDataDefaults = {
492
582
 
493
583
 
494
584
 
585
+
495
586
  const { getOptions, setOptions } = (external_highcharts_src_js_default_default());
496
587
 
497
588
  const { downloadURL: ExportData_downloadURL } = Extensions_DownloadURL;
498
589
 
499
590
 
500
- const { doc: ExportData_doc, win: ExportData_win } = (external_highcharts_src_js_default_default());
591
+ const { composed, doc: ExportData_doc, win: ExportData_win } = (external_highcharts_src_js_default_default());
501
592
 
502
- const { addEvent, defined, extend, find, fireEvent, isNumber, pick } = (external_highcharts_src_js_default_default());
593
+ const { addEvent, defined, extend, find, fireEvent, isNumber, pick, pushUnique } = (external_highcharts_src_js_default_default());
503
594
  /* *
504
595
  *
505
- * Functions
596
+ * Composition
506
597
  *
507
598
  * */
508
- /**
509
- * Wrapper function for the download functions, which handles showing and hiding
510
- * the loading message
511
- *
512
- * @private
513
- *
514
- */
515
- function wrapLoading(fn) {
516
- const showMessage = Boolean(this.options.exporting?.showExportInProgress);
517
- // Prefer requestAnimationFrame if available
518
- const timeoutFn = ExportData_win.requestAnimationFrame || setTimeout;
519
- // Outer timeout avoids menu freezing on click
520
- timeoutFn(() => {
521
- showMessage && this.showLoading(this.options.lang.exportInProgress);
522
- timeoutFn(() => {
523
- try {
524
- fn.call(this);
525
- }
526
- finally {
527
- showMessage && this.hideLoading();
599
+ var ExportData;
600
+ (function (ExportData) {
601
+ /* *
602
+ *
603
+ * Declarations
604
+ *
605
+ * */
606
+ /* *
607
+ *
608
+ * Functions
609
+ *
610
+ * */
611
+ /**
612
+ * Composition function.
613
+ *
614
+ * @private
615
+ * @function Highcharts.Exporting#compose
616
+ *
617
+ * @param {ChartClass} ChartClass
618
+ * Chart class.
619
+ * @param {ExportingClass} ExportingClass
620
+ * Exporting class.
621
+ * @param {SeriesClass} SeriesClass
622
+ * Series class.
623
+ *
624
+ * @requires modules/exporting
625
+ * @requires modules/export-data
626
+ */
627
+ function compose(ChartClass, ExportingClass, SeriesClass) {
628
+ // Check the composition registry for the Exporting
629
+ if (!pushUnique(composed, 'ExportData')) {
630
+ return;
631
+ }
632
+ // Adding wrappers for the deprecated functions
633
+ extend((external_highcharts_src_js_default_Chart_default()).prototype, {
634
+ downloadCSV: function () {
635
+ return this.exporting?.downloadCSV();
636
+ },
637
+ downloadXLS: function () {
638
+ return this.exporting?.downloadXLS();
639
+ },
640
+ getCSV: function (useLocalDecimalPoint) {
641
+ return this.exporting?.getCSV(useLocalDecimalPoint);
642
+ },
643
+ getDataRows: function (multiLevelHeaders) {
644
+ return this.exporting?.getDataRows(multiLevelHeaders);
645
+ },
646
+ getTable: function (useLocalDecimalPoint) {
647
+ return this.exporting?.getTable(useLocalDecimalPoint);
648
+ },
649
+ getTableAST: function (useLocalDecimalPoint) {
650
+ return this.exporting?.getTableAST(useLocalDecimalPoint);
651
+ },
652
+ hideData: function () {
653
+ return this.exporting?.hideData();
654
+ },
655
+ toggleDataTable: function (show) {
656
+ return this.exporting?.toggleDataTable(show);
657
+ },
658
+ viewData: function () {
659
+ return this.exporting?.viewData();
528
660
  }
529
661
  });
530
- });
531
- }
532
- /**
533
- * Generates a data URL of CSV for local download in the browser. This is the
534
- * default action for a click on the 'Download CSV' button.
535
- *
536
- * See {@link Highcharts.Chart#getCSV} to get the CSV data itself.
537
- *
538
- * @function Highcharts.Chart#downloadCSV
539
- *
540
- * @requires modules/exporting
541
- */
542
- function chartDownloadCSV() {
543
- wrapLoading.call(this, () => {
544
- const csv = this.getCSV(true);
545
- ExportData_downloadURL(getBlobFromContent(csv, 'text/csv') ||
546
- 'data:text/csv,\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');
547
- });
548
- }
549
- /**
550
- * Generates a data URL of an XLS document for local download in the browser.
551
- * This is the default action for a click on the 'Download XLS' button.
552
- *
553
- * See {@link Highcharts.Chart#getTable} to get the table data itself.
554
- *
555
- * @function Highcharts.Chart#downloadXLS
556
- *
557
- * @requires modules/exporting
558
- */
559
- function chartDownloadXLS() {
560
- wrapLoading.call(this, () => {
561
- const uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' +
562
- 'xmlns:x="urn:schemas-microsoft-com:office:excel" ' +
563
- 'xmlns="http://www.w3.org/TR/REC-html40">' +
564
- '<head><!--[if gte mso 9]><xml><x:ExcelWorkbook>' +
565
- '<x:ExcelWorksheets><x:ExcelWorksheet>' +
566
- '<x:Name>Ark1</x:Name>' +
567
- '<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>' +
568
- '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>' +
569
- '</xml><![endif]-->' +
570
- '<style>td{border:none;font-family: Calibri, sans-serif;} ' +
571
- '.number{mso-number-format:"0.00";} ' +
572
- '.text{ mso-number-format:"\@";}</style>' +
573
- '<meta name=ProgId content=Excel.Sheet>' +
574
- '<meta charset=UTF-8>' +
575
- '</head><body>' +
576
- this.getTable(true) +
577
- '</body></html>', base64 = function (s) {
578
- return ExportData_win.btoa(unescape(encodeURIComponent(s))); // #50
579
- };
580
- ExportData_downloadURL(getBlobFromContent(template, 'application/vnd.ms-excel') ||
581
- uri + base64(template), this.getFilename() + '.xls');
582
- });
583
- }
584
- /**
585
- * Export-data module required. Returns the current chart data as a CSV string.
586
- *
587
- * @function Highcharts.Chart#getCSV
588
- *
589
- * @param {boolean} [useLocalDecimalPoint]
590
- * Whether to use the local decimal point as detected from the browser.
591
- * This makes it easier to export data to Excel in the same locale as the
592
- * user is.
593
- *
594
- * @return {string}
595
- * CSV representation of the data
596
- */
597
- function chartGetCSV(useLocalDecimalPoint) {
598
- let csv = '';
599
- const rows = this.getDataRows(), csvOptions = this.options.exporting.csv, decimalPoint = pick(csvOptions.decimalPoint, csvOptions.itemDelimiter !== ',' && useLocalDecimalPoint ?
600
- (1.1).toLocaleString()[1] :
601
- '.'),
602
- // Use ';' for direct to Excel
603
- itemDelimiter = pick(csvOptions.itemDelimiter, decimalPoint === ',' ? ';' : ','),
604
- // '\n' isn't working with the js csv data extraction
605
- lineDelimiter = csvOptions.lineDelimiter;
606
- // Transform the rows to CSV
607
- rows.forEach((row, i) => {
608
- let val = '', j = row.length;
609
- while (j--) {
610
- val = row[j];
611
- if (typeof val === 'string') {
612
- val = `"${val}"`;
662
+ const exportingProto = ExportingClass.prototype;
663
+ if (!exportingProto.downloadCSV) {
664
+ // Add an event listener to handle the showTable option
665
+ addEvent(ChartClass, 'afterViewData', onChartAfterViewData);
666
+ addEvent(ChartClass, 'render', onChartRenderer);
667
+ addEvent(ChartClass, 'destroy', onChartDestroy);
668
+ // Adding functions to the Exporting prototype
669
+ exportingProto.downloadCSV = downloadCSV;
670
+ exportingProto.downloadXLS = downloadXLS;
671
+ exportingProto.getCSV = getCSV;
672
+ exportingProto.getDataRows = getDataRows;
673
+ exportingProto.getTable = getTable;
674
+ exportingProto.getTableAST = getTableAST;
675
+ exportingProto.hideData = hideData;
676
+ exportingProto.toggleDataTable = toggleDataTable;
677
+ exportingProto.wrapLoading = wrapLoading;
678
+ exportingProto.viewData = viewData;
679
+ // Update with defaults of the export data module
680
+ setOptions(ExportData_ExportDataDefaults);
681
+ // Additionaly, extend the menuItems with the export data variants
682
+ const menuItems = getOptions().exporting?.buttons?.contextButton?.menuItems;
683
+ menuItems && menuItems.push('separator', 'downloadCSV', 'downloadXLS', 'viewData');
684
+ const { arearange: AreaRangeSeries, gantt: GanttSeries, map: MapSeries, mapbubble: MapBubbleSeries, treemap: TreemapSeries, xrange: XRangeSeries } = SeriesClass.types;
685
+ if (AreaRangeSeries) {
686
+ AreaRangeSeries.prototype.keyToAxis = {
687
+ low: 'y',
688
+ high: 'y'
689
+ };
613
690
  }
614
- if (typeof val === 'number') {
615
- if (decimalPoint !== '.') {
616
- val = val.toString().replace('.', decimalPoint);
617
- }
691
+ if (GanttSeries) {
692
+ GanttSeries.prototype.exportKey = 'name';
693
+ GanttSeries.prototype.keyToAxis = {
694
+ start: 'x',
695
+ end: 'x'
696
+ };
618
697
  }
619
- row[j] = val;
620
- }
621
- // The first row is the header - it defines the number of columns.
622
- // Empty columns between not-empty cells are covered in the getDataRows
623
- // method.
624
- // Now add empty values only to the end of the row so all rows have
625
- // the same number of columns, #17186
626
- row.length = rows.length ? rows[0].length : 0;
627
- // Add the values
628
- csv += row.join(itemDelimiter);
629
- // Add the line delimiter
630
- if (i < rows.length - 1) {
631
- csv += lineDelimiter;
632
- }
633
- });
634
- return csv;
635
- }
636
- /**
637
- * Export-data module required. Returns a two-dimensional array containing the
638
- * current chart data.
639
- *
640
- * @function Highcharts.Chart#getDataRows
641
- *
642
- * @param {boolean} [multiLevelHeaders]
643
- * Use multilevel headers for the rows by default. Adds an extra row with
644
- * top level headers. If a custom columnHeaderFormatter is defined, this
645
- * can override the behavior.
646
- *
647
- * @return {Array<Array<(number|string)>>}
648
- * The current chart data
649
- *
650
- * @emits Highcharts.Chart#event:exportData
651
- */
652
- function chartGetDataRows(multiLevelHeaders) {
653
- const hasParallelCoords = this.hasParallelCoordinates, time = this.time, csvOptions = ((this.options.exporting && this.options.exporting.csv) || {}), xAxes = this.xAxis, rows = {}, rowArr = [], topLevelColumnTitles = [], columnTitles = [], langOptions = this.options.lang, exportDataOptions = langOptions.exportData, categoryHeader = exportDataOptions.categoryHeader, categoryDatetimeHeader = exportDataOptions.categoryDatetimeHeader,
654
- // Options
655
- columnHeaderFormatter = function (item, key, keyLength) {
656
- if (csvOptions.columnHeaderFormatter) {
657
- const s = csvOptions.columnHeaderFormatter(item, key, keyLength);
658
- if (s !== false) {
659
- return s;
698
+ if (MapSeries) {
699
+ MapSeries.prototype.exportKey = 'name';
700
+ }
701
+ if (MapBubbleSeries) {
702
+ MapBubbleSeries.prototype.exportKey = 'name';
703
+ }
704
+ if (TreemapSeries) {
705
+ TreemapSeries.prototype.exportKey = 'name';
706
+ }
707
+ if (XRangeSeries) {
708
+ XRangeSeries.prototype.keyToAxis = {
709
+ x2: 'x'
710
+ };
660
711
  }
661
712
  }
662
- if (!item) {
663
- return categoryHeader;
664
- }
665
- if (!item.bindAxes) {
666
- return (item.options.title &&
667
- item.options.title.text) || (item.dateTime ?
668
- categoryDatetimeHeader :
669
- categoryHeader);
670
- }
671
- if (multiLevelHeaders) {
672
- return {
673
- columnTitle: keyLength > 1 ?
674
- key :
675
- item.name,
676
- topLevelColumnTitle: item.name
713
+ }
714
+ ExportData.compose = compose;
715
+ /**
716
+ * Generates a data URL of CSV for local download in the browser. This is
717
+ * the default action for a click on the 'Download CSV' button.
718
+ *
719
+ * See {@link Highcharts.Exporting#getCSV} to get the CSV data itself.
720
+ *
721
+ * @function Highcharts.Exporting#downloadCSV
722
+ *
723
+ * @requires modules/exporting
724
+ * @requires modules/export-data
725
+ */
726
+ function downloadCSV() {
727
+ this.wrapLoading(() => {
728
+ const csv = this.getCSV(true);
729
+ ExportData_downloadURL(getBlobFromContent(csv, 'text/csv') ||
730
+ 'data:text/csv,\uFEFF' + encodeURIComponent(csv), this.getFilename() + '.csv');
731
+ });
732
+ }
733
+ /**
734
+ * Generates a data URL of an XLS document for local download in the
735
+ * browser. This is the default action for a click on the 'Download XLS'
736
+ * button.
737
+ *
738
+ * See {@link Highcharts.Exporting#getTable} to get the table data itself.
739
+ *
740
+ * @function Highcharts.Exporting#downloadXLS
741
+ *
742
+ * @requires modules/exporting
743
+ * @requires modules/export-data
744
+ */
745
+ function downloadXLS() {
746
+ this.wrapLoading(() => {
747
+ const uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' +
748
+ 'xmlns:x="urn:schemas-microsoft-com:office:excel" ' +
749
+ 'xmlns="http://www.w3.org/TR/REC-html40">' +
750
+ '<head><!--[if gte mso 9]><xml><x:ExcelWorkbook>' +
751
+ '<x:ExcelWorksheets><x:ExcelWorksheet>' +
752
+ '<x:Name>Ark1</x:Name>' +
753
+ '<x:WorksheetOptions><x:DisplayGridlines/>' +
754
+ '</x:WorksheetOptions>' +
755
+ '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>' +
756
+ '</xml><![endif]-->' +
757
+ '<style>td{border:none;font-family: Calibri, sans-serif;} ' +
758
+ '.number{mso-number-format:"0.00";} ' +
759
+ '.text{ mso-number-format:"\@";}</style>' +
760
+ '<meta name=ProgId content=Excel.Sheet>' +
761
+ '<meta charset=UTF-8>' +
762
+ '</head><body>' +
763
+ this.getTable(true) +
764
+ '</body></html>', base64 = function (s) {
765
+ return ExportData_win.btoa(unescape(encodeURIComponent(s))); // #50
677
766
  };
678
- }
679
- return item.name + (keyLength > 1 ? ' (' + key + ')' : '');
680
- },
681
- // Map the categories for value axes
682
- getCategoryAndDateTimeMap = function (series, pointArrayMap, pIdx) {
683
- const categoryMap = {}, dateTimeValueAxisMap = {};
684
- pointArrayMap.forEach(function (prop) {
685
- const axisName = ((series.keyToAxis && series.keyToAxis[prop]) ||
686
- prop) + 'Axis',
687
- // Points in parallel coordinates refers to all yAxis
688
- // not only `series.yAxis`
689
- axis = isNumber(pIdx) ?
690
- series.chart[axisName][pIdx] :
691
- series[axisName];
692
- categoryMap[prop] = (axis && axis.categories) || [];
693
- dateTimeValueAxisMap[prop] = (axis && axis.dateTime);
767
+ ExportData_downloadURL(getBlobFromContent(template, 'application/vnd.ms-excel') ||
768
+ uri + base64(template), this.getFilename() + '.xls');
694
769
  });
695
- return {
696
- categoryMap: categoryMap,
697
- dateTimeValueAxisMap: dateTimeValueAxisMap
698
- };
699
- },
700
- // Create point array depends if xAxis is category
701
- // or point.name is defined #13293
702
- getPointArray = function (series, xAxis) {
703
- const pointArrayMap = series.pointArrayMap || ['y'], namedPoints = series.data.some((d) => (typeof d.y !== 'undefined') && d.name);
704
- // If there are points with a name, we also want the x value in the
705
- // table
706
- if (namedPoints &&
707
- xAxis &&
708
- !xAxis.categories &&
709
- series.exportKey !== 'name') {
710
- return ['x', ...pointArrayMap];
770
+ }
771
+ /**
772
+ * Get a blob object from content, if blob is supported.
773
+ *
774
+ * @private
775
+ * @function Highcharts.getBlobFromContent
776
+ *
777
+ * @param {string} content
778
+ * The content to create the blob from.
779
+ * @param {string} type
780
+ * The type of the content.
781
+ *
782
+ * @return {string | undefined}
783
+ * The blob object, or undefined if not supported.
784
+ *
785
+ * @requires modules/exporting
786
+ * @requires modules/export-data
787
+ */
788
+ function getBlobFromContent(content, type) {
789
+ const nav = ExportData_win.navigator, domurl = ExportData_win.URL || ExportData_win.webkitURL || ExportData_win;
790
+ try {
791
+ // MS specific
792
+ if ((nav.msSaveOrOpenBlob) && ExportData_win.MSBlobBuilder) {
793
+ const blob = new ExportData_win.MSBlobBuilder();
794
+ blob.append(content);
795
+ return blob.getBlob('image/svg+xml');
796
+ }
797
+ return domurl.createObjectURL(new ExportData_win.Blob(['\uFEFF' + content], // #7084
798
+ { type: type }));
799
+ }
800
+ catch (e) {
801
+ // Ignore
711
802
  }
712
- return pointArrayMap;
713
- }, xAxisIndices = [];
714
- let xAxis, dataRows, columnTitleObj, i = 0, // Loop the series and index values
715
- x, xTitle;
716
- this.series.forEach(function (series) {
717
- const keys = series.options.keys, xAxis = series.xAxis, pointArrayMap = keys || getPointArray(series, xAxis), valueCount = pointArrayMap.length, xTaken = !series.requireSorting && {}, xAxisIndex = xAxes.indexOf(xAxis);
718
- let categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap), mockSeries, j;
719
- if (series.options.includeInDataExport !== false &&
720
- !series.options.isInternal &&
721
- series.visible !== false // #55
722
- ) {
723
- // Build a lookup for X axis index and the position of the first
724
- // series that belongs to that X axis. Includes -1 for non-axis
725
- // series types like pies.
726
- if (!find(xAxisIndices, function (index) {
727
- return index[0] === xAxisIndex;
728
- })) {
729
- xAxisIndices.push([xAxisIndex, i]);
803
+ }
804
+ /**
805
+ * Returns the current chart data as a CSV string.
806
+ *
807
+ * @function Highcharts.Exporting#getCSV
808
+ *
809
+ * @param {boolean} [useLocalDecimalPoint]
810
+ * Whether to use the local decimal point as detected from the browser. This
811
+ * makes it easier to export data to Excel in the same locale as the user
812
+ * is.
813
+ *
814
+ * @return {string}
815
+ * CSV representation of the data.
816
+ *
817
+ * @requires modules/exporting
818
+ * @requires modules/export-data
819
+ */
820
+ function getCSV(useLocalDecimalPoint) {
821
+ let csv = '';
822
+ const rows = this.getDataRows(), csvOptions = this.options?.csv, decimalPoint = pick(csvOptions?.decimalPoint, csvOptions?.itemDelimiter !== ',' && useLocalDecimalPoint ?
823
+ (1.1).toLocaleString()[1] :
824
+ '.'),
825
+ // Use ';' for direct to Excel
826
+ itemDelimiter = pick(csvOptions?.itemDelimiter, decimalPoint === ',' ? ';' : ','),
827
+ // '\n' isn't working with the js csv data extraction
828
+ lineDelimiter = csvOptions?.lineDelimiter;
829
+ // Transform the rows to CSV
830
+ rows.forEach((row, i) => {
831
+ let val = '', j = row.length;
832
+ while (j--) {
833
+ val = row[j];
834
+ if (typeof val === 'string') {
835
+ val = `"${val}"`;
836
+ }
837
+ if (typeof val === 'number') {
838
+ if (decimalPoint !== '.') {
839
+ val = val.toString().replace('.', decimalPoint);
840
+ }
841
+ }
842
+ row[j] = val;
730
843
  }
731
- // Compute the column headers and top level headers, usually the
732
- // same as series names
733
- j = 0;
734
- while (j < valueCount) {
735
- columnTitleObj = columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length);
736
- columnTitles.push(columnTitleObj.columnTitle || columnTitleObj);
737
- if (multiLevelHeaders) {
738
- topLevelColumnTitles.push(columnTitleObj.topLevelColumnTitle ||
739
- columnTitleObj);
844
+ // The first row is the header - it defines the number of columns.
845
+ // Empty columns between not-empty cells are covered in the
846
+ // getDataRows method.
847
+ // Now add empty values only to the end of the row so all rows have
848
+ // the same number of columns, #17186
849
+ row.length = rows.length ? rows[0].length : 0;
850
+ // Add the values
851
+ csv += row.join(itemDelimiter);
852
+ // Add the line delimiter
853
+ if (i < rows.length - 1) {
854
+ csv += lineDelimiter;
855
+ }
856
+ });
857
+ return csv;
858
+ }
859
+ /**
860
+ * Returns a two-dimensional array containing the current chart data.
861
+ *
862
+ * @function Highcharts.Exporting#getDataRows
863
+ *
864
+ * @param {boolean} [multiLevelHeaders]
865
+ * Use multilevel headers for the rows by default. Adds an extra row with
866
+ * top level headers. If a custom columnHeaderFormatter is defined, this can
867
+ * override the behavior.
868
+ *
869
+ * @return {Array<Array<(number | string)>>}
870
+ * The current chart data
871
+ *
872
+ * @emits Highcharts.Chart#event:exportData
873
+ *
874
+ * @requires modules/exporting
875
+ * @requires modules/export-data
876
+ */
877
+ function getDataRows(multiLevelHeaders) {
878
+ 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,
879
+ // Options
880
+ columnHeaderFormatter = function (item, key, keyLength) {
881
+ if (csvOptions.columnHeaderFormatter) {
882
+ const s = csvOptions.columnHeaderFormatter(item, key, keyLength);
883
+ if (s !== false) {
884
+ return s;
740
885
  }
741
- j++;
742
886
  }
743
- mockSeries = {
744
- chart: series.chart,
745
- autoIncrement: series.autoIncrement,
746
- options: series.options,
747
- pointArrayMap: series.pointArrayMap,
748
- index: series.index
887
+ if (!item && categoryHeader) {
888
+ return categoryHeader;
889
+ }
890
+ if (!item.bindAxes &&
891
+ categoryDatetimeHeader &&
892
+ categoryHeader) {
893
+ return (item.options.title &&
894
+ item.options.title.text) || (item.dateTime ?
895
+ categoryDatetimeHeader :
896
+ categoryHeader);
897
+ }
898
+ if (multiLevelHeaders) {
899
+ return {
900
+ columnTitle: ((keyLength || 0) > 1 ?
901
+ key :
902
+ item.name) || '',
903
+ topLevelColumnTitle: item.name
904
+ };
905
+ }
906
+ return item.name + ((keyLength || 0) > 1 ? ' (' + key + ')' : '');
907
+ },
908
+ // Map the categories for value axes
909
+ getCategoryAndDateTimeMap = function (series, pointArrayMap, pIdx) {
910
+ const categoryMap = {}, dateTimeValueAxisMap = {};
911
+ pointArrayMap.forEach(function (prop) {
912
+ const axisName = ((series.keyToAxis && series.keyToAxis[prop]) ||
913
+ prop) + 'Axis',
914
+ // Points in parallel coordinates refers to all yAxis
915
+ // not only `series.yAxis`
916
+ axis = isNumber(pIdx) ?
917
+ series.chart[axisName][pIdx] :
918
+ series[axisName];
919
+ categoryMap[prop] = (axis && axis.categories) || [];
920
+ dateTimeValueAxisMap[prop] = (axis && axis.dateTime);
921
+ });
922
+ return {
923
+ categoryMap: categoryMap,
924
+ dateTimeValueAxisMap: dateTimeValueAxisMap
749
925
  };
750
- // Export directly from options.data because we need the uncropped
751
- // data (#7913), and we need to support Boost (#7026).
752
- series.options.data.forEach(function eachData(options, pIdx) {
753
- const mockPoint = { series: mockSeries };
754
- let key, prop, val;
755
- // In parallel coordinates chart, each data point is connected
756
- // to a separate yAxis, conform this
757
- if (hasParallelCoords) {
758
- categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap, pIdx);
926
+ },
927
+ // Create point array depends if xAxis is category
928
+ // or point.name is defined #13293
929
+ getPointArray = function (series, xAxis) {
930
+ const pointArrayMap = series.pointArrayMap || ['y'], namedPoints = series.data.some((d) => (typeof d.y !== 'undefined') && d.name);
931
+ // If there are points with a name, we also want the x value in
932
+ // the table
933
+ if (namedPoints &&
934
+ xAxis &&
935
+ !xAxis.categories &&
936
+ series.exportKey !== 'name') {
937
+ return ['x', ...pointArrayMap];
938
+ }
939
+ return pointArrayMap;
940
+ }, xAxisIndices = [];
941
+ let xAxis, dataRows, columnTitleObj, i = 0, // Loop the series and index values
942
+ x, xTitle;
943
+ chart.series.forEach(function (series) {
944
+ const keys = series.options.keys, xAxis = series.xAxis, pointArrayMap = keys || getPointArray(series, xAxis), valueCount = pointArrayMap.length, xTaken = !series.requireSorting && {}, xAxisIndex = xAxes.indexOf(xAxis);
945
+ let categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap), mockSeries, j;
946
+ if (series.options.includeInDataExport !== false &&
947
+ !series.options.isInternal &&
948
+ series.visible !== false // #55
949
+ ) {
950
+ // Build a lookup for X axis index and the position of the first
951
+ // series that belongs to that X axis. Includes -1 for non-axis
952
+ // series types like pies.
953
+ if (!find(xAxisIndices, function (index) {
954
+ return index[0] === xAxisIndex;
955
+ })) {
956
+ xAxisIndices.push([xAxisIndex, i]);
759
957
  }
760
- series.pointClass.prototype.applyOptions.apply(mockPoint, [options]);
761
- const name = series.data[pIdx] && series.data[pIdx].name;
762
- key = (mockPoint.x ?? '') + ',' + name;
958
+ // Compute the column headers and top level headers, usually the
959
+ // same as series names
763
960
  j = 0;
764
- // Pies, funnels, geo maps etc. use point name in X row
765
- if (!xAxis ||
766
- series.exportKey === 'name' ||
767
- (!hasParallelCoords && xAxis && xAxis.hasNames) && name) {
768
- key = name;
769
- }
770
- if (xTaken) {
771
- if (xTaken[key]) {
772
- key += '|' + pIdx;
961
+ while (j < valueCount) {
962
+ columnTitleObj = columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length);
963
+ columnTitles.push(columnTitleObj.columnTitle ||
964
+ columnTitleObj);
965
+ if (multiLevelHeaders) {
966
+ topLevelColumnTitles.push(columnTitleObj.topLevelColumnTitle ||
967
+ columnTitleObj);
773
968
  }
774
- xTaken[key] = true;
969
+ j++;
775
970
  }
776
- if (!rows[key]) {
777
- rows[key] = [];
778
- rows[key].xValues = [];
779
- // ES5 replacement for Array.from / fill.
780
- const arr = [];
781
- for (let i = 0; i < series.chart.series.length; i++) {
782
- arr[i] = 0;
971
+ mockSeries = {
972
+ chart: series.chart,
973
+ autoIncrement: series.autoIncrement,
974
+ options: series.options,
975
+ pointArrayMap: series.pointArrayMap,
976
+ index: series.index
977
+ };
978
+ // Export directly from options.data because we need the
979
+ // uncropped data (#7913), and we need to support Boost (#7026).
980
+ series.options.data?.forEach(function eachData(options, pIdx) {
981
+ const mockPoint = { series: mockSeries };
982
+ let key, prop, val;
983
+ // In parallel coordinates chart, each data point is
984
+ // connected to a separate yAxis, conform this
985
+ if (hasParallelCoords) {
986
+ categoryAndDatetimeMap = getCategoryAndDateTimeMap(series, pointArrayMap, pIdx);
783
987
  }
784
- // Create pointers array, holding information how many
785
- // duplicates of specific x occurs in each series.
786
- // Used for creating rows with duplicates.
787
- rows[key].pointers = arr;
788
- rows[key].pointers[series.index] = 1;
789
- }
790
- else {
791
- // Handle duplicates (points with the same x), by creating
792
- // extra rows based on pointers for better performance.
793
- const modifiedKey = `${key},${rows[key].pointers[series.index]}`, originalKey = key;
794
- if (rows[key].pointers[series.index]) {
795
- if (!rows[modifiedKey]) {
796
- rows[modifiedKey] = [];
797
- rows[modifiedKey].xValues = [];
798
- rows[modifiedKey].pointers = [];
988
+ series.pointClass.prototype.applyOptions.apply(mockPoint, [options]);
989
+ const name = series.data[pIdx] && series.data[pIdx].name;
990
+ key = (mockPoint.x ?? '') + ',' + name;
991
+ j = 0;
992
+ // Pies, funnels, geo maps etc. use point name in X row
993
+ if (!xAxis ||
994
+ series.exportKey === 'name' ||
995
+ (!hasParallelCoords && xAxis && xAxis.hasNames) && name) {
996
+ key = name;
997
+ }
998
+ if (xTaken) {
999
+ if (xTaken[key]) {
1000
+ key += '|' + pIdx;
799
1001
  }
800
- key = modifiedKey;
1002
+ xTaken[key] = true;
801
1003
  }
802
- rows[originalKey].pointers[series.index] += 1;
803
- }
804
- rows[key].x = mockPoint.x;
805
- rows[key].name = name;
806
- rows[key].xValues[xAxisIndex] = mockPoint.x;
807
- while (j < valueCount) {
808
- prop = pointArrayMap[j]; // `y`, `z` etc
809
- val = series.pointClass.prototype.getNestedProperty.apply(mockPoint, [prop]); // Allow values from nested properties (#20470)
810
- rows[key][i + j] = pick(
811
- // Y axis category if present
812
- categoryAndDatetimeMap.categoryMap[prop][val],
813
- // Datetime yAxis
814
- categoryAndDatetimeMap.dateTimeValueAxisMap[prop] ?
815
- time.dateFormat(csvOptions.dateFormat, val) :
816
- null,
817
- // Linear/log yAxis
818
- val);
819
- j++;
820
- }
821
- });
822
- i = i + j;
823
- }
824
- });
825
- // Make a sortable array
826
- for (x in rows) {
827
- if (Object.hasOwnProperty.call(rows, x)) {
828
- rowArr.push(rows[x]);
829
- }
830
- }
831
- let xAxisIndex, column;
832
- // Add computed column headers and top level headers to final row set
833
- dataRows = multiLevelHeaders ? [topLevelColumnTitles, columnTitles] :
834
- [columnTitles];
835
- i = xAxisIndices.length;
836
- while (i--) { // Start from end to splice in
837
- xAxisIndex = xAxisIndices[i][0];
838
- column = xAxisIndices[i][1];
839
- xAxis = xAxes[xAxisIndex];
840
- // Sort it by X values
841
- rowArr.sort(function (// eslint-disable-line no-loop-func
842
- a, b) {
843
- return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
844
- });
845
- // Add header row
846
- xTitle = columnHeaderFormatter(xAxis);
847
- dataRows[0].splice(column, 0, xTitle);
848
- if (multiLevelHeaders && dataRows[1]) {
849
- // If using multi level headers, we just added top level header.
850
- // Also add for sub level
851
- dataRows[1].splice(column, 0, xTitle);
852
- }
853
- // Add the category column
854
- rowArr.forEach(function (// eslint-disable-line no-loop-func
855
- row) {
856
- let category = row.name;
857
- if (xAxis && !defined(category)) {
858
- if (xAxis.dateTime) {
859
- if (row.x instanceof Date) {
860
- row.x = row.x.getTime();
1004
+ if (!rows[key]) {
1005
+ rows[key] = [];
1006
+ rows[key].xValues = [];
1007
+ // ES5 replacement for Array.from / fill.
1008
+ const arr = [];
1009
+ for (let i = 0; i < series.chart.series.length; i++) {
1010
+ arr[i] = 0;
1011
+ }
1012
+ // Create pointers array, holding information how many
1013
+ // duplicates of specific x occurs in each series.
1014
+ // Used for creating rows with duplicates.
1015
+ rows[key].pointers = arr;
1016
+ rows[key].pointers[series.index] = 1;
861
1017
  }
862
- category = time.dateFormat(csvOptions.dateFormat, row.x);
863
- }
864
- else if (xAxis.categories) {
865
- category = pick(xAxis.names[row.x], xAxis.categories[row.x], row.x);
866
- }
867
- else {
868
- category = row.x;
869
- }
1018
+ else {
1019
+ // Handle duplicates (points with the same x), by
1020
+ // creating extra rows based on pointers for better
1021
+ // performance.
1022
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
1023
+ const modifiedKey = `${key},${rows[key].pointers[series.index]}`, originalKey = key;
1024
+ if (rows[key].pointers[series.index]) {
1025
+ if (!rows[modifiedKey]) {
1026
+ rows[modifiedKey] = [];
1027
+ rows[modifiedKey].xValues = [];
1028
+ rows[modifiedKey].pointers = [];
1029
+ }
1030
+ key = modifiedKey;
1031
+ }
1032
+ rows[originalKey].pointers[series.index] += 1;
1033
+ }
1034
+ rows[key].x = mockPoint.x;
1035
+ rows[key].name = name;
1036
+ rows[key].xValues[xAxisIndex] = mockPoint.x;
1037
+ while (j < valueCount) {
1038
+ prop = pointArrayMap[j]; // `y`, `z` etc
1039
+ val =
1040
+ series.pointClass.prototype.getNestedProperty.apply(mockPoint, [prop]);
1041
+ // Allow values from nested properties (#20470)
1042
+ rows[key][i + j] = pick(
1043
+ // Y axis category if present
1044
+ categoryAndDatetimeMap.categoryMap[prop][val],
1045
+ // Datetime yAxis
1046
+ categoryAndDatetimeMap.dateTimeValueAxisMap[prop] ?
1047
+ time.dateFormat(csvOptions.dateFormat, val) :
1048
+ null,
1049
+ // Linear/log yAxis
1050
+ val);
1051
+ j++;
1052
+ }
1053
+ });
1054
+ i = i + j;
870
1055
  }
871
- // Add the X/date/category
872
- row.splice(column, 0, category);
873
1056
  });
874
- }
875
- dataRows = dataRows.concat(rowArr);
876
- fireEvent(this, 'exportData', { dataRows: dataRows });
877
- return dataRows;
878
- }
879
- /**
880
- * Export-data module required. Build a HTML table with the chart's current
881
- * data.
882
- *
883
- * @sample highcharts/export-data/viewdata/
884
- * View the data from the export menu
885
- *
886
- * @function Highcharts.Chart#getTable
887
- *
888
- * @param {boolean} [useLocalDecimalPoint]
889
- * Whether to use the local decimal point as detected from the browser.
890
- * This makes it easier to export data to Excel in the same locale as the
891
- * user is.
892
- *
893
- * @return {string}
894
- * HTML representation of the data.
895
- *
896
- * @emits Highcharts.Chart#event:afterGetTable
897
- */
898
- function chartGetTable(useLocalDecimalPoint) {
899
- const serialize = (node) => {
900
- if (!node.tagName || node.tagName === '#text') {
901
- // Text node
902
- return node.textContent || '';
1057
+ // Make a sortable array
1058
+ for (x in rows) {
1059
+ if (Object.hasOwnProperty.call(rows, x)) {
1060
+ rowArr.push(rows[x]);
1061
+ }
903
1062
  }
904
- const attributes = node.attributes;
905
- let html = `<${node.tagName}`;
906
- if (attributes) {
907
- Object.keys(attributes)
908
- .forEach((key) => {
909
- const value = attributes[key];
910
- html += ` ${key}="${value}"`;
1063
+ let xAxisIndex, column;
1064
+ // Add computed column headers and top level headers to final row set
1065
+ dataRows = multiLevelHeaders ? [topLevelColumnTitles, columnTitles] :
1066
+ [columnTitles];
1067
+ i = xAxisIndices.length;
1068
+ while (i--) { // Start from end to splice in
1069
+ xAxisIndex = xAxisIndices[i][0];
1070
+ column = xAxisIndices[i][1];
1071
+ xAxis = xAxes[xAxisIndex];
1072
+ // Sort it by X values
1073
+ rowArr.sort(function (// eslint-disable-line no-loop-func
1074
+ a, b) {
1075
+ return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
911
1076
  });
912
- }
913
- html += '>';
914
- html += node.textContent || '';
915
- (node.children || []).forEach((child) => {
916
- html += serialize(child);
917
- });
918
- html += `</${node.tagName}>`;
919
- return html;
920
- };
921
- const tree = this.getTableAST(useLocalDecimalPoint);
922
- return serialize(tree);
923
- }
924
- /**
925
- * Get the AST of a HTML table representing the chart data.
926
- *
927
- * @private
928
- *
929
- * @function Highcharts.Chart#getTableAST
930
- *
931
- * @param {boolean} [useLocalDecimalPoint]
932
- * Whether to use the local decimal point as detected from the browser.
933
- * This makes it easier to export data to Excel in the same locale as the
934
- * user is.
935
- *
936
- * @return {Highcharts.ASTNode}
937
- * The abstract syntax tree
938
- */
939
- function chartGetTableAST(useLocalDecimalPoint) {
940
- let rowLength = 0;
941
- const treeChildren = [];
942
- const options = this.options, decimalPoint = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.', useMultiLevelHeaders = pick(options.exporting.useMultiLevelHeaders, true), rows = this.getDataRows(useMultiLevelHeaders), topHeaders = useMultiLevelHeaders ? rows.shift() : null, subHeaders = rows.shift(),
943
- // Compare two rows for equality
944
- isRowEqual = function (row1, row2) {
945
- let i = row1.length;
946
- if (row2.length === i) {
947
- while (i--) {
948
- if (row1[i] !== row2[i]) {
949
- return false;
950
- }
1077
+ // Add header row
1078
+ xTitle = columnHeaderFormatter(xAxis);
1079
+ dataRows[0].splice(column, 0, xTitle);
1080
+ if (multiLevelHeaders && dataRows[1]) {
1081
+ // If using multi level headers, we just added top level header.
1082
+ // Also add for sub level
1083
+ dataRows[1].splice(column, 0, xTitle);
951
1084
  }
1085
+ // Add the category column
1086
+ rowArr.forEach(function (// eslint-disable-line no-loop-func
1087
+ row) {
1088
+ let category = row.name;
1089
+ if (xAxis && !defined(category)) {
1090
+ if (xAxis.dateTime) {
1091
+ if (row.x instanceof Date) {
1092
+ row.x = row.x.getTime();
1093
+ }
1094
+ category = time.dateFormat(csvOptions.dateFormat, row.x);
1095
+ }
1096
+ else if (xAxis.categories) {
1097
+ category = pick(xAxis.names[row.x], xAxis.categories[row.x], row.x);
1098
+ }
1099
+ else {
1100
+ category = row.x;
1101
+ }
1102
+ }
1103
+ // Add the X/date/category
1104
+ row.splice(column, 0, category);
1105
+ });
952
1106
  }
953
- else {
954
- return false;
955
- }
956
- return true;
957
- },
958
- // Get table cell HTML from value
959
- getCellHTMLFromValue = function (tagName, classes, attributes, value) {
960
- let textContent = pick(value, ''), className = 'highcharts-text' + (classes ? ' ' + classes : '');
961
- // Convert to string if number
962
- if (typeof textContent === 'number') {
963
- textContent = textContent.toString();
964
- if (decimalPoint === ',') {
965
- textContent = textContent.replace('.', decimalPoint);
1107
+ dataRows = dataRows.concat(rowArr);
1108
+ fireEvent(chart, 'exportData', { dataRows: dataRows });
1109
+ return dataRows;
1110
+ }
1111
+ /**
1112
+ * Build a HTML table with the chart's current data.
1113
+ *
1114
+ * @sample highcharts/export-data/viewdata/
1115
+ * View the data from the export menu
1116
+ *
1117
+ * @function Highcharts.Exporting#getTable
1118
+ *
1119
+ * @param {boolean} [useLocalDecimalPoint]
1120
+ * Whether to use the local decimal point as detected from the browser. This
1121
+ * makes it easier to export data to Excel in the same locale as the user
1122
+ * is.
1123
+ *
1124
+ * @return {string}
1125
+ * HTML representation of the data.
1126
+ *
1127
+ * @emits Highcharts.Chart#event:afterGetTable
1128
+ *
1129
+ * @requires modules/exporting
1130
+ * @requires modules/export-data
1131
+ */
1132
+ function getTable(useLocalDecimalPoint) {
1133
+ const serialize = (node) => {
1134
+ if (!node.tagName || node.tagName === '#text') {
1135
+ // Text node
1136
+ return node.textContent || '';
966
1137
  }
967
- className = 'highcharts-number';
968
- }
969
- else if (!value) {
970
- className = 'highcharts-empty';
971
- }
972
- attributes = extend({ 'class': className }, attributes);
973
- return {
974
- tagName,
975
- attributes,
976
- textContent
1138
+ const attributes = node.attributes;
1139
+ let html = `<${node.tagName}`;
1140
+ if (attributes) {
1141
+ Object.keys(attributes)
1142
+ .forEach((key) => {
1143
+ const value = attributes[key];
1144
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
1145
+ html += ` ${key}="${value}"`;
1146
+ });
1147
+ }
1148
+ html += '>';
1149
+ html += node.textContent || '';
1150
+ (node.children || []).forEach((child) => {
1151
+ html += serialize(child);
1152
+ });
1153
+ html += `</${node.tagName}>`;
1154
+ return html;
977
1155
  };
978
- },
979
- // Get table header markup from row data
980
- getTableHeaderHTML = function (topheaders, subheaders, rowLength) {
981
- const theadChildren = [];
982
- let i = 0, len = rowLength || subheaders && subheaders.length, next, cur, curColspan = 0, rowspan;
983
- // Clean up multiple table headers. Chart.getDataRows() returns two
984
- // levels of headers when using multilevel, not merged. We need to
985
- // merge identical headers, remove redundant headers, and keep it
986
- // all marked up nicely.
987
- if (useMultiLevelHeaders &&
988
- topheaders &&
989
- subheaders &&
990
- !isRowEqual(topheaders, subheaders)) {
991
- const trChildren = [];
992
- for (; i < len; ++i) {
993
- cur = topheaders[i];
994
- next = topheaders[i + 1];
995
- if (cur === next) {
996
- ++curColspan;
1156
+ const tree = this.getTableAST(useLocalDecimalPoint);
1157
+ return serialize(tree);
1158
+ }
1159
+ /**
1160
+ * Get the AST of a HTML table representing the chart data.
1161
+ *
1162
+ * @private
1163
+ * @function Highcharts.Exporting#getTableAST
1164
+ *
1165
+ * @param {boolean} [useLocalDecimalPoint]
1166
+ * Whether to use the local decimal point as detected from the browser. This
1167
+ * makes it easier to export data to Excel in the same locale as the user
1168
+ * is.
1169
+ *
1170
+ * @return {Highcharts.ASTNode}
1171
+ * The abstract syntax tree
1172
+ *
1173
+ * @requires modules/exporting
1174
+ * @requires modules/export-data
1175
+ */
1176
+ function getTableAST(useLocalDecimalPoint) {
1177
+ let rowLength = 0;
1178
+ 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(),
1179
+ // Compare two rows for equality
1180
+ isRowEqual = function (row1, row2) {
1181
+ let i = row1.length;
1182
+ if (row2.length === i) {
1183
+ while (i--) {
1184
+ if (row1[i] !== row2[i]) {
1185
+ return false;
1186
+ }
997
1187
  }
998
- else if (curColspan) {
999
- // Ended colspan
1000
- // Add cur to HTML with colspan.
1001
- trChildren.push(getCellHTMLFromValue('th', 'highcharts-table-topheading', {
1002
- scope: 'col',
1003
- colspan: curColspan + 1
1004
- }, cur));
1005
- curColspan = 0;
1188
+ }
1189
+ else {
1190
+ return false;
1191
+ }
1192
+ return true;
1193
+ },
1194
+ // Get table cell HTML from value
1195
+ getCellHTMLFromValue = function (tagName, classes, attributes, value) {
1196
+ let textContent = pick(value, ''), className = 'highcharts-text' + (classes ? ' ' + classes : '');
1197
+ // Convert to string if number
1198
+ if (typeof textContent === 'number') {
1199
+ textContent = textContent.toString();
1200
+ if (decimalPoint === ',') {
1201
+ textContent = textContent.replace('.', decimalPoint);
1006
1202
  }
1007
- else {
1008
- // Cur is standalone. If it is same as sublevel,
1009
- // remove sublevel and add just toplevel.
1010
- if (cur === subheaders[i]) {
1011
- if (options.exporting.useRowspanHeaders) {
1012
- rowspan = 2;
1013
- delete subheaders[i];
1203
+ className = 'highcharts-number';
1204
+ }
1205
+ else if (!value) {
1206
+ className = 'highcharts-empty';
1207
+ }
1208
+ attributes = extend({ 'class': className }, attributes);
1209
+ return {
1210
+ tagName,
1211
+ attributes,
1212
+ textContent
1213
+ };
1214
+ },
1215
+ // Get table header markup from row data
1216
+ getTableHeaderHTML = function (topheaders, subheaders, rowLength) {
1217
+ const theadChildren = [];
1218
+ let i = 0, len = rowLength || subheaders && subheaders.length, next, cur, curColspan = 0, rowspan;
1219
+ // Clean up multiple table headers. Chart.getDataRows() returns
1220
+ // two levels of headers when using multilevel, not merged. We
1221
+ // need to merge identical headers, remove redundant headers,
1222
+ // and keep it all marked up nicely.
1223
+ if (useMultiLevelHeaders &&
1224
+ topheaders &&
1225
+ subheaders &&
1226
+ !isRowEqual(topheaders, subheaders)) {
1227
+ const trChildren = [];
1228
+ for (; i < len; ++i) {
1229
+ cur = topheaders[i];
1230
+ next = topheaders[i + 1];
1231
+ if (cur === next) {
1232
+ ++curColspan;
1233
+ }
1234
+ else if (curColspan) {
1235
+ // Ended colspan
1236
+ // Add cur to HTML with colspan.
1237
+ trChildren.push(getCellHTMLFromValue('th', 'highcharts-table-topheading', {
1238
+ scope: 'col',
1239
+ colspan: curColspan + 1
1240
+ }, cur));
1241
+ curColspan = 0;
1242
+ }
1243
+ else {
1244
+ // Cur is standalone. If it is same as sublevel,
1245
+ // remove sublevel and add just toplevel.
1246
+ if (cur === subheaders[i]) {
1247
+ if (exporting.options.useRowspanHeaders) {
1248
+ rowspan = 2;
1249
+ delete subheaders[i];
1250
+ }
1251
+ else {
1252
+ rowspan = 1;
1253
+ subheaders[i] = '';
1254
+ }
1014
1255
  }
1015
1256
  else {
1016
1257
  rowspan = 1;
1017
- subheaders[i] = '';
1018
1258
  }
1259
+ const cell = getCellHTMLFromValue('th', 'highcharts-table-topheading', { scope: 'col' }, cur);
1260
+ if (rowspan > 1 && cell.attributes) {
1261
+ cell.attributes.valign = 'top';
1262
+ cell.attributes.rowspan = rowspan;
1263
+ }
1264
+ trChildren.push(cell);
1019
1265
  }
1020
- else {
1021
- rowspan = 1;
1022
- }
1023
- const cell = getCellHTMLFromValue('th', 'highcharts-table-topheading', { scope: 'col' }, cur);
1024
- if (rowspan > 1 && cell.attributes) {
1025
- cell.attributes.valign = 'top';
1026
- cell.attributes.rowspan = rowspan;
1266
+ }
1267
+ theadChildren.push({
1268
+ tagName: 'tr',
1269
+ children: trChildren
1270
+ });
1271
+ }
1272
+ // Add the subheaders (the only headers if not using
1273
+ // multilevels)
1274
+ if (subheaders) {
1275
+ const trChildren = [];
1276
+ for (i = 0, len = subheaders.length; i < len; ++i) {
1277
+ if (typeof subheaders[i] !== 'undefined') {
1278
+ trChildren.push(getCellHTMLFromValue('th', null, { scope: 'col' }, subheaders[i]));
1027
1279
  }
1028
- trChildren.push(cell);
1029
1280
  }
1281
+ theadChildren.push({
1282
+ tagName: 'tr',
1283
+ children: trChildren
1284
+ });
1030
1285
  }
1031
- theadChildren.push({
1032
- tagName: 'tr',
1033
- children: trChildren
1286
+ return {
1287
+ tagName: 'thead',
1288
+ children: theadChildren
1289
+ };
1290
+ };
1291
+ // Add table caption
1292
+ const { tableCaption } = exporting.options || {};
1293
+ if (tableCaption !== false) {
1294
+ treeChildren.push({
1295
+ tagName: 'caption',
1296
+ attributes: {
1297
+ 'class': 'highcharts-table-caption'
1298
+ },
1299
+ textContent: typeof tableCaption === 'string' ?
1300
+ tableCaption :
1301
+ options.title?.text || options.lang.chartTitle
1034
1302
  });
1035
1303
  }
1036
- // Add the subheaders (the only headers if not using multilevels)
1037
- if (subheaders) {
1304
+ // Find longest row
1305
+ for (let i = 0, len = rows.length; i < len; ++i) {
1306
+ if (rows[i].length > rowLength) {
1307
+ rowLength = rows[i].length;
1308
+ }
1309
+ }
1310
+ // Add header
1311
+ treeChildren.push(getTableHeaderHTML(topHeaders, subHeaders || [], Math.max(rowLength, subHeaders?.length || 0)));
1312
+ // Transform the rows to HTML
1313
+ const trs = [];
1314
+ rows.forEach(function (row) {
1038
1315
  const trChildren = [];
1039
- for (i = 0, len = subheaders.length; i < len; ++i) {
1040
- if (typeof subheaders[i] !== 'undefined') {
1041
- trChildren.push(getCellHTMLFromValue('th', null, { scope: 'col' }, subheaders[i]));
1042
- }
1316
+ for (let j = 0; j < rowLength; j++) {
1317
+ // Make first column a header too. Especially important for
1318
+ // category axes, but also might make sense for datetime? Should
1319
+ // await user feedback on this.
1320
+ trChildren.push(getCellHTMLFromValue(j ? 'td' : 'th', null, j ? {} : { scope: 'row' }, row[j]));
1043
1321
  }
1044
- theadChildren.push({
1322
+ trs.push({
1045
1323
  tagName: 'tr',
1046
1324
  children: trChildren
1047
1325
  });
1048
- }
1049
- return {
1050
- tagName: 'thead',
1051
- children: theadChildren
1052
- };
1053
- };
1054
- // Add table caption
1055
- const { tableCaption } = options.exporting || {};
1056
- if (tableCaption !== false) {
1326
+ });
1057
1327
  treeChildren.push({
1058
- tagName: 'caption',
1059
- attributes: {
1060
- 'class': 'highcharts-table-caption'
1061
- },
1062
- textContent: typeof tableCaption === 'string' ?
1063
- tableCaption :
1064
- options.title?.text || options.lang.chartTitle
1328
+ tagName: 'tbody',
1329
+ children: trs
1065
1330
  });
1331
+ const e = {
1332
+ tree: {
1333
+ tagName: 'table',
1334
+ id: `highcharts-data-table-${chart.index}`,
1335
+ children: treeChildren
1336
+ }
1337
+ };
1338
+ fireEvent(chart, 'afterGetTableAST', e);
1339
+ return e.tree;
1066
1340
  }
1067
- // Find longest row
1068
- for (let i = 0, len = rows.length; i < len; ++i) {
1069
- if (rows[i].length > rowLength) {
1070
- rowLength = rows[i].length;
1071
- }
1341
+ /**
1342
+ * Hide the data table when visible.
1343
+ *
1344
+ * @function Highcharts.Exporting#hideData
1345
+ *
1346
+ * @requires modules/exporting
1347
+ * @requires modules/export-data
1348
+ */
1349
+ function hideData() {
1350
+ this.toggleDataTable(false);
1072
1351
  }
1073
- // Add header
1074
- treeChildren.push(getTableHeaderHTML(topHeaders, subHeaders, Math.max(rowLength, subHeaders.length)));
1075
- // Transform the rows to HTML
1076
- const trs = [];
1077
- rows.forEach(function (row) {
1078
- const trChildren = [];
1079
- for (let j = 0; j < rowLength; j++) {
1080
- // Make first column a header too. Especially important for
1081
- // category axes, but also might make sense for datetime? Should
1082
- // await user feedback on this.
1083
- trChildren.push(getCellHTMLFromValue(j ? 'td' : 'th', null, j ? {} : { scope: 'row' }, row[j]));
1084
- }
1085
- trs.push({
1086
- tagName: 'tr',
1087
- children: trChildren
1088
- });
1089
- });
1090
- treeChildren.push({
1091
- tagName: 'tbody',
1092
- children: trs
1093
- });
1094
- const e = {
1095
- tree: {
1096
- tagName: 'table',
1097
- id: `highcharts-data-table-${this.index}`,
1098
- children: treeChildren
1352
+ /**
1353
+ * Toggle showing data table.
1354
+ *
1355
+ * @private
1356
+ * @function Highcharts.Exporting#hideData
1357
+ *
1358
+ * @param {boolean} [show]
1359
+ * Whether to show data table or not.
1360
+ *
1361
+ * @requires modules/exporting
1362
+ * @requires modules/export-data
1363
+ */
1364
+ function toggleDataTable(show) {
1365
+ const chart = this.chart,
1366
+ // Create the div
1367
+ createContainer = (show = pick(show, !this.isDataTableVisible)) &&
1368
+ !this.dataTableDiv;
1369
+ if (createContainer) {
1370
+ this.dataTableDiv = ExportData_doc.createElement('div');
1371
+ this.dataTableDiv.className = 'highcharts-data-table';
1372
+ // Insert after the chart container
1373
+ chart.renderTo.parentNode.insertBefore(this.dataTableDiv, chart.renderTo.nextSibling);
1099
1374
  }
1100
- };
1101
- fireEvent(this, 'aftergetTableAST', e);
1102
- return e.tree;
1103
- }
1104
- /**
1105
- * Export-data module required. Hide the data table when visible.
1106
- *
1107
- * @function Highcharts.Chart#hideData
1108
- */
1109
- function chartHideData() {
1110
- this.toggleDataTable(false);
1111
- }
1112
- /**
1113
- * @private
1114
- */
1115
- function chartToggleDataTable(show) {
1116
- show = pick(show, !this.isDataTableVisible);
1117
- // Create the div
1118
- const createContainer = show && !this.dataTableDiv;
1119
- if (createContainer) {
1120
- this.dataTableDiv = ExportData_doc.createElement('div');
1121
- this.dataTableDiv.className = 'highcharts-data-table';
1122
- // Insert after the chart container
1123
- this.renderTo.parentNode.insertBefore(this.dataTableDiv, this.renderTo.nextSibling);
1124
- }
1125
- // Toggle the visibility
1126
- if (this.dataTableDiv) {
1127
- const style = this.dataTableDiv.style, oldDisplay = style.display;
1128
- style.display = show ? 'block' : 'none';
1129
- // Generate the data table
1130
- if (show) {
1131
- this.dataTableDiv.innerHTML = (external_highcharts_src_js_default_AST_default()).emptyHTML;
1132
- const ast = new (external_highcharts_src_js_default_AST_default())([this.getTableAST()]);
1133
- ast.addToDOM(this.dataTableDiv);
1134
- fireEvent(this, 'afterViewData', {
1135
- element: this.dataTableDiv,
1136
- wasHidden: createContainer || oldDisplay !== style.display
1137
- });
1375
+ // Toggle the visibility
1376
+ if (this.dataTableDiv) {
1377
+ const style = this.dataTableDiv.style, oldDisplay = style.display;
1378
+ style.display = show ? 'block' : 'none';
1379
+ // Generate the data table
1380
+ if (show) {
1381
+ this.dataTableDiv.innerHTML = (external_highcharts_src_js_default_AST_default()).emptyHTML;
1382
+ const ast = new (external_highcharts_src_js_default_AST_default())([this.getTableAST()]);
1383
+ ast.addToDOM(this.dataTableDiv);
1384
+ fireEvent(chart, 'afterViewData', {
1385
+ element: this.dataTableDiv,
1386
+ wasHidden: createContainer || oldDisplay !== style.display
1387
+ });
1388
+ }
1389
+ else {
1390
+ fireEvent(chart, 'afterHideData');
1391
+ }
1138
1392
  }
1139
- else {
1140
- fireEvent(this, 'afterHideData');
1393
+ // Set the flag
1394
+ this.isDataTableVisible = show;
1395
+ // Change the menu item text
1396
+ const exportDivElements = this.divElements, options = this.options, menuItems = options.buttons?.contextButton.menuItems, lang = chart.options.lang;
1397
+ if (options &&
1398
+ options.menuItemDefinitions &&
1399
+ lang &&
1400
+ lang.viewData &&
1401
+ lang.hideData &&
1402
+ menuItems &&
1403
+ exportDivElements) {
1404
+ const exportDivElement = exportDivElements[menuItems.indexOf('viewData')];
1405
+ if (exportDivElement) {
1406
+ external_highcharts_src_js_default_AST_default().setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);
1407
+ }
1141
1408
  }
1142
1409
  }
1143
- // Set the flag
1144
- this.isDataTableVisible = show;
1145
- // Change the menu item text
1146
- const exportDivElements = this.exportDivElements, options = this.options.exporting, menuItems = options &&
1147
- options.buttons &&
1148
- options.buttons.contextButton.menuItems, lang = this.options.lang;
1149
- if (options &&
1150
- options.menuItemDefinitions &&
1151
- lang &&
1152
- lang.viewData &&
1153
- lang.hideData &&
1154
- menuItems &&
1155
- exportDivElements) {
1156
- const exportDivElement = exportDivElements[menuItems.indexOf('viewData')];
1157
- if (exportDivElement) {
1158
- external_highcharts_src_js_default_AST_default().setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);
1159
- }
1410
+ /**
1411
+ * View the data in a table below the chart.
1412
+ *
1413
+ * @function Highcharts.Exporting#viewData
1414
+ *
1415
+ * @emits Highcharts.Chart#event:afterViewData
1416
+ *
1417
+ * @requires modules/exporting
1418
+ * @requires modules/export-data
1419
+ */
1420
+ function viewData() {
1421
+ this.toggleDataTable(true);
1160
1422
  }
1161
- }
1162
- /**
1163
- * Export-data module required. View the data in a table below the chart.
1164
- *
1165
- * @function Highcharts.Chart#viewData
1166
- *
1167
- * @emits Highcharts.Chart#event:afterViewData
1168
- */
1169
- function chartViewData() {
1170
- this.toggleDataTable(true);
1171
- }
1172
- /**
1173
- * @private
1174
- */
1175
- function compose(ChartClass, SeriesClass) {
1176
- const chartProto = ChartClass.prototype;
1177
- if (!chartProto.getCSV) {
1178
- const exportingOptions = getOptions().exporting;
1179
- // Add an event listener to handle the showTable option
1180
- addEvent(ChartClass, 'afterViewData', onChartAfterViewData);
1181
- addEvent(ChartClass, 'render', onChartRenderer);
1182
- addEvent(ChartClass, 'destroy', onChartDestroy);
1183
- chartProto.downloadCSV = chartDownloadCSV;
1184
- chartProto.downloadXLS = chartDownloadXLS;
1185
- chartProto.getCSV = chartGetCSV;
1186
- chartProto.getDataRows = chartGetDataRows;
1187
- chartProto.getTable = chartGetTable;
1188
- chartProto.getTableAST = chartGetTableAST;
1189
- chartProto.hideData = chartHideData;
1190
- chartProto.toggleDataTable = chartToggleDataTable;
1191
- chartProto.viewData = chartViewData;
1192
- // Add "Download CSV" to the exporting menu.
1193
- // @todo consider move to defaults
1194
- if (exportingOptions) {
1195
- extend(exportingOptions.menuItemDefinitions, {
1196
- downloadCSV: {
1197
- textKey: 'downloadCSV',
1198
- onclick: function () {
1199
- this.downloadCSV();
1200
- }
1201
- },
1202
- downloadXLS: {
1203
- textKey: 'downloadXLS',
1204
- onclick: function () {
1205
- this.downloadXLS();
1206
- }
1207
- },
1208
- viewData: {
1209
- textKey: 'viewData',
1210
- onclick: function () {
1211
- wrapLoading.call(this, this.toggleDataTable);
1212
- }
1423
+ /**
1424
+ * Wrapper function for the download functions, which handles showing and
1425
+ * hiding the loading message
1426
+ *
1427
+ * @private
1428
+ *
1429
+ * @requires modules/exporting
1430
+ * @requires modules/export-data
1431
+ */
1432
+ function wrapLoading(fn) {
1433
+ const chart = this.chart, showMessage = Boolean(this.options.showExportInProgress);
1434
+ // Prefer requestAnimationFrame if available
1435
+ const timeoutFn = ExportData_win.requestAnimationFrame || setTimeout;
1436
+ // Outer timeout avoids menu freezing on click
1437
+ timeoutFn(() => {
1438
+ showMessage &&
1439
+ chart.showLoading(chart.options.lang.exportInProgress);
1440
+ timeoutFn(() => {
1441
+ try {
1442
+ fn.call(this);
1443
+ }
1444
+ finally {
1445
+ showMessage && chart.hideLoading();
1213
1446
  }
1214
1447
  });
1215
- if (exportingOptions.buttons &&
1216
- exportingOptions.buttons.contextButton.menuItems) {
1217
- exportingOptions.buttons.contextButton.menuItems.push('separator', 'downloadCSV', 'downloadXLS', 'viewData');
1218
- }
1219
- }
1220
- setOptions(ExportData_ExportDataDefaults);
1221
- const { arearange: AreaRangeSeries, gantt: GanttSeries, map: MapSeries, mapbubble: MapBubbleSeries, treemap: TreemapSeries, xrange: XRangeSeries } = SeriesClass.types;
1222
- if (AreaRangeSeries) {
1223
- AreaRangeSeries.prototype.keyToAxis = {
1224
- low: 'y',
1225
- high: 'y'
1226
- };
1227
- }
1228
- if (GanttSeries) {
1229
- GanttSeries.prototype.exportKey = 'name';
1230
- GanttSeries.prototype.keyToAxis = {
1231
- start: 'x',
1232
- end: 'x'
1233
- };
1234
- }
1235
- if (MapSeries) {
1236
- MapSeries.prototype.exportKey = 'name';
1237
- }
1238
- if (MapBubbleSeries) {
1239
- MapBubbleSeries.prototype.exportKey = 'name';
1240
- }
1241
- if (TreemapSeries) {
1242
- TreemapSeries.prototype.exportKey = 'name';
1243
- }
1244
- if (XRangeSeries) {
1245
- XRangeSeries.prototype.keyToAxis = {
1246
- x2: 'x'
1247
- };
1248
- }
1249
- }
1250
- }
1251
- /**
1252
- * Get a blob object from content, if blob is supported
1253
- *
1254
- * @private
1255
- * @param {string} content
1256
- * The content to create the blob from.
1257
- * @param {string} type
1258
- * The type of the content.
1259
- * @return {string|undefined}
1260
- * The blob object, or undefined if not supported.
1261
- */
1262
- function getBlobFromContent(content, type) {
1263
- const nav = ExportData_win.navigator, domurl = ExportData_win.URL || ExportData_win.webkitURL || ExportData_win;
1264
- try {
1265
- // MS specific
1266
- if ((nav.msSaveOrOpenBlob) && ExportData_win.MSBlobBuilder) {
1267
- const blob = new ExportData_win.MSBlobBuilder();
1268
- blob.append(content);
1269
- return blob.getBlob('image/svg+xml');
1270
- }
1271
- return domurl.createObjectURL(new ExportData_win.Blob(['\uFEFF' + content], // #7084
1272
- { type: type }));
1273
- }
1274
- catch (e) {
1275
- // Ignore
1448
+ });
1276
1449
  }
1277
- }
1278
- /**
1279
- * @private
1280
- */
1281
- function onChartAfterViewData() {
1282
- const chart = this, dataTableDiv = chart.dataTableDiv, getCellValue = (tr, index) => tr.children[index].textContent, comparer = (index, ascending) => (a, b) => {
1283
- const sort = (v1, v2) => (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?
1284
- v1 - v2 :
1285
- v1.toString().localeCompare(v2));
1286
- return sort(getCellValue(ascending ? a : b, index), getCellValue(ascending ? b : a, index));
1287
- };
1288
- if (dataTableDiv &&
1289
- chart.options.exporting &&
1290
- chart.options.exporting.allowTableSorting) {
1291
- const row = dataTableDiv.querySelector('thead tr');
1292
- if (row) {
1293
- row.childNodes.forEach((th) => {
1294
- const table = th.closest('table');
1295
- th.addEventListener('click', function () {
1296
- const rows = [...dataTableDiv.querySelectorAll('tr:not(thead tr)')], headers = [...th.parentNode.children];
1297
- rows.sort(comparer(headers.indexOf(th), chart.ascendingOrderInTable =
1298
- !chart.ascendingOrderInTable)).forEach((tr) => {
1299
- table.appendChild(tr);
1300
- });
1301
- headers.forEach((th) => {
1302
- [
1303
- 'highcharts-sort-ascending',
1304
- 'highcharts-sort-descending'
1305
- ].forEach((className) => {
1306
- if (th.classList.contains(className)) {
1307
- th.classList.remove(className);
1308
- }
1309
- });
1450
+ /**
1451
+ * Function that runs on the chart's 'afterViewData' event.
1452
+ *
1453
+ * @private
1454
+ * @function Highcharts.Chart#onChartAfterViewData
1455
+ *
1456
+ * @requires modules/exporting
1457
+ * @requires modules/export-data
1458
+ */
1459
+ function onChartAfterViewData() {
1460
+ const exporting = this.exporting, dataTableDiv = exporting?.dataTableDiv, getCellValue = (tr, index) => tr.children[index].textContent, comparer = (index, ascending) => (a, b) => {
1461
+ const sort = (v1, v2) => (v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ?
1462
+ v1 - v2 :
1463
+ v1.toString().localeCompare(v2));
1464
+ return sort(getCellValue(ascending ? a : b, index), getCellValue(ascending ? b : a, index));
1465
+ };
1466
+ if (dataTableDiv && exporting.options.allowTableSorting) {
1467
+ const row = dataTableDiv.querySelector('thead tr');
1468
+ if (row) {
1469
+ row.childNodes.forEach((th) => {
1470
+ const tableBody = dataTableDiv.querySelector('tbody');
1471
+ th.addEventListener('click', function () {
1472
+ const rows = [...dataTableDiv.querySelectorAll('tr:not(thead tr)')], headers = [...th.parentNode.children];
1473
+ if (exporting) {
1474
+ rows.sort(comparer(headers.indexOf(th), exporting.ascendingOrderInTable =
1475
+ !exporting.ascendingOrderInTable)).forEach((tr) => {
1476
+ tableBody?.appendChild(tr);
1477
+ });
1478
+ headers.forEach((th) => {
1479
+ [
1480
+ 'highcharts-sort-ascending',
1481
+ 'highcharts-sort-descending'
1482
+ ].forEach((className) => {
1483
+ if (th.classList.contains(className)) {
1484
+ th.classList.remove(className);
1485
+ }
1486
+ });
1487
+ });
1488
+ th.classList.add(exporting.ascendingOrderInTable ?
1489
+ 'highcharts-sort-ascending' :
1490
+ 'highcharts-sort-descending');
1491
+ }
1310
1492
  });
1311
- th.classList.add(chart.ascendingOrderInTable ?
1312
- 'highcharts-sort-ascending' :
1313
- 'highcharts-sort-descending');
1314
1493
  });
1315
- });
1494
+ }
1316
1495
  }
1317
1496
  }
1318
- }
1319
- /**
1320
- * Handle the showTable option
1321
- * @private
1322
- */
1323
- function onChartRenderer() {
1324
- if (this.options &&
1325
- this.options.exporting &&
1326
- this.options.exporting.showTable &&
1327
- !this.options.chart.forExport) {
1328
- this.viewData();
1497
+ /**
1498
+ * Function that runs on the chart's 'render' event. Handle the showTable
1499
+ * option.
1500
+ *
1501
+ * @private
1502
+ * @function Highcharts.Chart#onChartRenderer
1503
+ *
1504
+ * @requires modules/exporting
1505
+ * @requires modules/export-data
1506
+ */
1507
+ function onChartRenderer() {
1508
+ if (this.options?.exporting?.showTable &&
1509
+ !this.options.chart.forExport) {
1510
+ this.exporting?.viewData();
1511
+ }
1329
1512
  }
1330
- }
1331
- /**
1332
- * Clean up
1333
- * @private
1334
- */
1335
- function onChartDestroy() {
1336
- this.dataTableDiv?.remove();
1337
- }
1513
+ /**
1514
+ * Function that runs on the chart's 'destroy' event. Handle cleaning up the
1515
+ * dataTableDiv element.
1516
+ *
1517
+ * @private
1518
+ * @function Highcharts.Chart#onChartDestroy
1519
+ *
1520
+ * @requires modules/exporting
1521
+ * @requires modules/export-data
1522
+ */
1523
+ function onChartDestroy() {
1524
+ this.exporting?.dataTableDiv?.remove();
1525
+ }
1526
+ })(ExportData || (ExportData = {}));
1338
1527
  /* *
1339
1528
  *
1340
- * Default Export
1529
+ * Default Export
1341
1530
  *
1342
1531
  * */
1343
- const ExportData = {
1344
- compose
1345
- };
1346
1532
  /* harmony default export */ const ExportData_ExportData = (ExportData);
1347
1533
  /* *
1348
1534
  *
@@ -1393,7 +1579,7 @@ const G = (external_highcharts_src_js_default_default());
1393
1579
  G.dataURLtoBlob = G.dataURLtoBlob || Extensions_DownloadURL.dataURLtoBlob;
1394
1580
  G.downloadURL = G.downloadURL || Extensions_DownloadURL.downloadURL;
1395
1581
  // Compose
1396
- ExportData_ExportData.compose(G.Chart, G.Series);
1582
+ ExportData_ExportData.compose(G.Chart, G.Exporting, G.Series);
1397
1583
  /* harmony default export */ const export_data_src = ((external_highcharts_src_js_default_default()));
1398
1584
 
1399
1585
  export { export_data_src as default };