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