@ntlab/ntjs-assets 2.72.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,5 +1,5 @@
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/exporting
4
4
  * @requires highcharts
5
5
  *
@@ -116,6 +116,7 @@ var highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcha
116
116
  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_);
117
117
  // EXTERNAL MODULE: external {"amd":["highcharts/highcharts","Chart"],"commonjs":["highcharts","Chart"],"commonjs2":["highcharts","Chart"],"root":["Highcharts","Chart"]}
118
118
  var highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_ = __webpack_require__(960);
119
+ 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_);
119
120
  ;// ./code/es-modules/Core/Chart/ChartNavigationComposition.js
120
121
  /**
121
122
  *
@@ -208,6 +209,169 @@ var ChartNavigationComposition;
208
209
  * */
209
210
  /* harmony default export */ const Chart_ChartNavigationComposition = (ChartNavigationComposition);
210
211
 
212
+ ;// ./code/es-modules/Extensions/DownloadURL.js
213
+ /* *
214
+ *
215
+ * (c) 2015-2025 Oystein Moseng
216
+ *
217
+ * License: www.highcharts.com/license
218
+ *
219
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
220
+ *
221
+ * Mixin for downloading content in the browser
222
+ *
223
+ * */
224
+
225
+ /* *
226
+ *
227
+ * Imports
228
+ *
229
+ * */
230
+
231
+ const { isSafari, win, win: { document: doc } } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
232
+
233
+ const { error } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
234
+ /* *
235
+ *
236
+ * Constants
237
+ *
238
+ * */
239
+ const domurl = win.URL || win.webkitURL || win;
240
+ /* *
241
+ *
242
+ * Functions
243
+ *
244
+ * */
245
+ /**
246
+ * Convert base64 dataURL to Blob if supported, otherwise returns undefined.
247
+ *
248
+ * @private
249
+ * @function Highcharts.dataURLtoBlob
250
+ *
251
+ * @param {string} dataURL
252
+ * URL to convert.
253
+ *
254
+ * @return {string | undefined}
255
+ * Blob.
256
+ */
257
+ function dataURLtoBlob(dataURL) {
258
+ const parts = dataURL
259
+ .replace(/filename=.*;/, '')
260
+ .match(/data:([^;]*)(;base64)?,([A-Z+\d\/]+)/i);
261
+ if (parts &&
262
+ parts.length > 3 &&
263
+ (win.atob) &&
264
+ win.ArrayBuffer &&
265
+ win.Uint8Array &&
266
+ win.Blob &&
267
+ (domurl.createObjectURL)) {
268
+ // Try to convert data URL to Blob
269
+ const binStr = win.atob(parts[3]), buf = new win.ArrayBuffer(binStr.length), binary = new win.Uint8Array(buf);
270
+ for (let i = 0; i < binary.length; ++i) {
271
+ binary[i] = binStr.charCodeAt(i);
272
+ }
273
+ return domurl
274
+ .createObjectURL(new win.Blob([binary], { 'type': parts[1] }));
275
+ }
276
+ }
277
+ /**
278
+ * Download a data URL in the browser. Can also take a blob as first param.
279
+ *
280
+ * @private
281
+ * @function Highcharts.downloadURL
282
+ *
283
+ * @param {string | global.URL} dataURL
284
+ * The dataURL/Blob to download.
285
+ * @param {string} filename
286
+ * The name of the resulting file (w/extension).
287
+ */
288
+ function downloadURL(dataURL, filename) {
289
+ const nav = win.navigator, a = doc.createElement('a');
290
+ // IE specific blob implementation
291
+ // Don't use for normal dataURLs
292
+ if (typeof dataURL !== 'string' &&
293
+ !(dataURL instanceof String) &&
294
+ nav.msSaveOrOpenBlob) {
295
+ nav.msSaveOrOpenBlob(dataURL, filename);
296
+ return;
297
+ }
298
+ dataURL = '' + dataURL;
299
+ if (nav.userAgent.length > 1000 /* RegexLimits.shortLimit */) {
300
+ throw new Error('Input too long');
301
+ }
302
+ const // Some browsers have limitations for data URL lengths. Try to convert
303
+ // to Blob or fall back. Edge always needs that blob.
304
+ isOldEdgeBrowser = /Edge\/\d+/.test(nav.userAgent),
305
+ // Safari on iOS needs Blob in order to download PDF
306
+ safariBlob = (isSafari &&
307
+ typeof dataURL === 'string' &&
308
+ dataURL.indexOf('data:application/pdf') === 0);
309
+ if (safariBlob || isOldEdgeBrowser || dataURL.length > 2000000) {
310
+ dataURL = dataURLtoBlob(dataURL) || '';
311
+ if (!dataURL) {
312
+ throw new Error('Failed to convert to blob');
313
+ }
314
+ }
315
+ // Try HTML5 download attr if supported
316
+ if (typeof a.download !== 'undefined') {
317
+ a.href = dataURL;
318
+ a.download = filename; // HTML5 download attribute
319
+ doc.body.appendChild(a);
320
+ a.click();
321
+ doc.body.removeChild(a);
322
+ }
323
+ else {
324
+ // No download attr, just opening data URI
325
+ try {
326
+ if (!win.open(dataURL, 'chart')) {
327
+ throw new Error('Failed to open window');
328
+ }
329
+ }
330
+ catch {
331
+ // If window.open failed, try location.href
332
+ win.location.href = dataURL;
333
+ }
334
+ }
335
+ }
336
+ /**
337
+ * Asynchronously downloads a script from a provided location.
338
+ *
339
+ * @private
340
+ * @function Highcharts.getScript
341
+ *
342
+ * @param {string} scriptLocation
343
+ * The location for the script to fetch.
344
+ */
345
+ function getScript(scriptLocation) {
346
+ return new Promise((resolve, reject) => {
347
+ const head = doc.getElementsByTagName('head')[0], script = doc.createElement('script');
348
+ // Set type and location for the script
349
+ script.type = 'text/javascript';
350
+ script.src = scriptLocation;
351
+ // Resolve in case of a succesful script fetching
352
+ script.onload = () => {
353
+ resolve();
354
+ };
355
+ // Reject in case of fail
356
+ script.onerror = () => {
357
+ reject(error(`Error loading script ${scriptLocation}`));
358
+ };
359
+ // Append the newly created script
360
+ head.appendChild(script);
361
+ });
362
+ }
363
+ /* *
364
+ *
365
+ * Default Export
366
+ *
367
+ * */
368
+ const DownloadURL = {
369
+ dataURLtoBlob,
370
+ downloadURL,
371
+ getScript
372
+ };
373
+ /* harmony default export */ const Extensions_DownloadURL = (DownloadURL);
374
+
211
375
  ;// ./code/es-modules/Extensions/Exporting/ExportingDefaults.js
212
376
  /* *
213
377
  *
@@ -256,7 +420,7 @@ const exporting = {
256
420
  /**
257
421
  * Allows the end user to sort the data table by clicking on column headers.
258
422
  *
259
- * @since 10.3.3
423
+ * @since 10.3.3
260
424
  * @apioption exporting.allowTableSorting
261
425
  */
262
426
  allowTableSorting: true,
@@ -271,7 +435,7 @@ const exporting = {
271
435
  *
272
436
  * @type {boolean}
273
437
  * @default false
274
- * @since 12.0.0
438
+ * @since 12.0.0
275
439
  * @apioption exporting.applyStyleSheets
276
440
  */
277
441
  /**
@@ -374,8 +538,8 @@ const exporting = {
374
538
  * See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/fetch)
375
539
  * for more information
376
540
  *
377
- * @type {Object}
378
- * @since 11.3.0
541
+ * @type {Object}
542
+ * @since 11.3.0
379
543
  * @apioption exporting.fetchOptions
380
544
  */
381
545
  /**
@@ -391,6 +555,27 @@ const exporting = {
391
555
  * @since 5.0.0
392
556
  * @apioption exporting.libURL
393
557
  */
558
+ libURL: 'https://code.highcharts.com/12.3.0/lib/',
559
+ /**
560
+ * Whether the chart should be exported using the browser's built-in
561
+ * capabilities, allowing offline exports without requiring access to the
562
+ * Highcharts export server, or sent directly to the export server for
563
+ * processing and downloading.
564
+ *
565
+ * This option is different from `exporting.fallbackToExportServer`, which
566
+ * controls whether the export server should be used as a fallback only if
567
+ * the local export fails. In contrast, `exporting.local` explicitly defines
568
+ * which export method to use.
569
+ *
570
+ * @see [fallbackToExportServer](#exporting.fallbackToExportServer)
571
+ *
572
+ * @type {boolean}
573
+ * @default true
574
+ * @since 12.3.0
575
+ * @requires modules/exporting
576
+ * @apioption exporting.local
577
+ */
578
+ local: true,
394
579
  /**
395
580
  * Analogous to [sourceWidth](#exporting.sourceWidth).
396
581
  *
@@ -463,7 +648,7 @@ const exporting = {
463
648
  * @sample {highcharts} highcharts/exporting/offline-download-pdffont/
464
649
  * Download PDF in a language containing non-Latin characters.
465
650
  *
466
- * @since 10.0.0
651
+ * @since 10.0.0
467
652
  * @requires modules/offline-exporting
468
653
  */
469
654
  pdfFont: {
@@ -472,25 +657,25 @@ const exporting = {
472
657
  * `bold` or `italic` are not defined, the `normal` font will be used
473
658
  * for those too.
474
659
  *
475
- * @type string|undefined
660
+ * @type string | undefined
476
661
  */
477
662
  normal: void 0,
478
663
  /**
479
664
  * The TTF font file for bold text.
480
665
  *
481
- * @type string|undefined
666
+ * @type string | undefined
482
667
  */
483
668
  bold: void 0,
484
669
  /**
485
670
  * The TTF font file for bold and italic text.
486
671
  *
487
- * @type string|undefined
672
+ * @type string | undefined
488
673
  */
489
674
  bolditalic: void 0,
490
675
  /**
491
676
  * The TTF font file for italic text.
492
677
  *
493
- * @type string|undefined
678
+ * @type string | undefined
494
679
  */
495
680
  italic: void 0
496
681
  },
@@ -593,7 +778,7 @@ const exporting = {
593
778
  * @sample highcharts/exporting/buttons-contextbutton-symbol-custom/
594
779
  * Custom shape as symbol
595
780
  *
596
- * @type {Highcharts.SymbolKeyValue|"menu"|"menuball"|string}
781
+ * @type {Highcharts.SymbolKeyValue | "menu" | "menuball" | string}
597
782
  * @since 2.0
598
783
  */
599
784
  symbol: 'menu',
@@ -614,12 +799,10 @@ const exporting = {
614
799
  * By default, there is the "View in full screen" and "Print" menu
615
800
  * items, plus one menu item for each of the available export types.
616
801
  *
617
- * @sample {highcharts} highcharts/exporting/menuitemdefinitions/
618
- * Menu item definitions
619
- * @sample {highstock} highcharts/exporting/menuitemdefinitions/
620
- * Menu item definitions
621
- * @sample {highmaps} highcharts/exporting/menuitemdefinitions/
802
+ * @sample highcharts/exporting/menuitemdefinitions/
622
803
  * Menu item definitions
804
+ * @sample highcharts/exporting/menuitemdefinitions-webp/
805
+ * Adding a custom menu item for WebP export
623
806
  *
624
807
  * @type {Array<string>}
625
808
  * @default ["viewFullscreen", "printChart", "separator", "downloadPNG", "downloadJPEG", "downloadSVG"]
@@ -651,12 +834,10 @@ const exporting = {
651
834
  * Custom text for the "exitFullScreen" can be set only in lang options
652
835
  * (it is not a separate button).
653
836
  *
654
- * @sample {highcharts} highcharts/exporting/menuitemdefinitions/
655
- * Menu item definitions
656
- * @sample {highstock} highcharts/exporting/menuitemdefinitions/
657
- * Menu item definitions
658
- * @sample {highmaps} highcharts/exporting/menuitemdefinitions/
837
+ * @sample highcharts/exporting/menuitemdefinitions/
659
838
  * Menu item definitions
839
+ * @sample highcharts/exporting/menuitemdefinitions-webp/
840
+ * Adding a custom menu item for WebP export
660
841
  *
661
842
  *
662
843
  * @type {Highcharts.Dictionary<Highcharts.ExportingMenuObject>}
@@ -670,9 +851,7 @@ const exporting = {
670
851
  viewFullscreen: {
671
852
  textKey: 'viewFullscreen',
672
853
  onclick: function () {
673
- if (this.fullscreen) {
674
- this.fullscreen.toggle();
675
- }
854
+ this.fullscreen?.toggle();
676
855
  }
677
856
  },
678
857
  /**
@@ -681,7 +860,7 @@ const exporting = {
681
860
  printChart: {
682
861
  textKey: 'printChart',
683
862
  onclick: function () {
684
- this.print();
863
+ this.exporting?.print();
685
864
  }
686
865
  },
687
866
  /**
@@ -695,8 +874,8 @@ const exporting = {
695
874
  */
696
875
  downloadPNG: {
697
876
  textKey: 'downloadPNG',
698
- onclick: function () {
699
- this.exportChart();
877
+ onclick: async function () {
878
+ await this.exporting?.exportChart();
700
879
  }
701
880
  },
702
881
  /**
@@ -704,8 +883,8 @@ const exporting = {
704
883
  */
705
884
  downloadJPEG: {
706
885
  textKey: 'downloadJPEG',
707
- onclick: function () {
708
- this.exportChart({
886
+ onclick: async function () {
887
+ await this.exporting?.exportChart({
709
888
  type: 'image/jpeg'
710
889
  });
711
890
  }
@@ -715,8 +894,8 @@ const exporting = {
715
894
  */
716
895
  downloadPDF: {
717
896
  textKey: 'downloadPDF',
718
- onclick: function () {
719
- this.exportChart({
897
+ onclick: async function () {
898
+ await this.exporting?.exportChart({
720
899
  type: 'application/pdf'
721
900
  });
722
901
  }
@@ -726,8 +905,8 @@ const exporting = {
726
905
  */
727
906
  downloadSVG: {
728
907
  textKey: 'downloadSVG',
729
- onclick: function () {
730
- this.exportChart({
908
+ onclick: async function () {
909
+ await this.exporting?.exportChart({
731
910
  type: 'image/svg+xml'
732
911
  });
733
912
  }
@@ -869,6 +1048,7 @@ const navigation = {
869
1048
  *
870
1049
  * @sample highcharts/title/widthadjust
871
1050
  * Adjust the spacing when using text button
1051
+ *
872
1052
  * @since 2.0
873
1053
  */
874
1054
  buttonSpacing: 5,
@@ -905,7 +1085,7 @@ const navigation = {
905
1085
  *
906
1086
  * @type boolean
907
1087
  * @default false
908
- * @since 10.3.0
1088
+ * @since 10.3.0
909
1089
  * @apioption navigation.buttonOptions.useHTML
910
1090
  */
911
1091
  /**
@@ -945,7 +1125,7 @@ const navigation = {
945
1125
  * @sample highcharts/navigation/buttonoptions-symbolfill/
946
1126
  * Blue symbol stroke for one of the buttons
947
1127
  *
948
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
1128
+ * @type {Highcharts.ColorString | Highcharts.GradientColorObject | Highcharts.PatternObject}
949
1129
  * @since 2.0
950
1130
  */
951
1131
  symbolFill: "#666666" /* Palette.neutralColor60 */,
@@ -985,7 +1165,7 @@ const navigation = {
985
1165
  /**
986
1166
  * The default fill exists only to capture hover events.
987
1167
  *
988
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
1168
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
989
1169
  */
990
1170
  fill: "#ffffff" /* Palette.backgroundColor */,
991
1171
  /**
@@ -995,7 +1175,7 @@ const navigation = {
995
1175
  /**
996
1176
  * Default stroke for the buttons.
997
1177
  *
998
- * @type {Highcharts.ColorString}
1178
+ * @type {Highcharts.ColorString}
999
1179
  */
1000
1180
  stroke: 'none',
1001
1181
  /**
@@ -1254,7 +1434,7 @@ class Fullscreen {
1254
1434
  * the fullscreen mode.
1255
1435
  *
1256
1436
  * @name Highcharts.Fullscreen#isOpen
1257
- * @type {boolean|undefined}
1437
+ * @type {boolean | undefined}
1258
1438
  * @since 8.0.1
1259
1439
  */
1260
1440
  this.isOpen = false;
@@ -1396,7 +1576,7 @@ class Fullscreen {
1396
1576
  * @requires modules/full-screen
1397
1577
  */
1398
1578
  setButtonText() {
1399
- const chart = this.chart, exportDivElements = chart.exportDivElements, exportingOptions = chart.options.exporting, menuItems = (exportingOptions &&
1579
+ const chart = this.chart, exportDivElements = chart.exporting?.divElements, exportingOptions = chart.options.exporting, menuItems = (exportingOptions &&
1400
1580
  exportingOptions.buttons &&
1401
1581
  exportingOptions.buttons.contextButton.menuItems), lang = chart.options.lang;
1402
1582
  if (exportingOptions &&
@@ -1519,7 +1699,7 @@ class Fullscreen {
1519
1699
  * */
1520
1700
 
1521
1701
 
1522
- const { win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1702
+ const { win: HttpUtilities_win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1523
1703
 
1524
1704
  const { discardElement, objectEach } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1525
1705
  /* *
@@ -1533,10 +1713,10 @@ const { discardElement, objectEach } = (highcharts_commonjs_highcharts_commonjs2
1533
1713
  * @function Highcharts.ajax
1534
1714
  *
1535
1715
  * @param {Highcharts.AjaxSettingsObject} settings
1536
- * The Ajax settings to use.
1716
+ * The Ajax settings to use.
1537
1717
  *
1538
- * @return {false|undefined}
1539
- * Returns false, if error occurred.
1718
+ * @return {false | undefined}
1719
+ * Returns false, if error occurred.
1540
1720
  */
1541
1721
  function ajax(settings) {
1542
1722
  const headers = {
@@ -1547,10 +1727,12 @@ function ajax(settings) {
1547
1727
  }, r = new XMLHttpRequest();
1548
1728
  /**
1549
1729
  * Private error handler.
1730
+ *
1550
1731
  * @private
1732
+ *
1551
1733
  * @param {XMLHttpRequest} xhr
1552
1734
  * Internal request object.
1553
- * @param {string|Error} err
1735
+ * @param {string | Error} err
1554
1736
  * Occurred error.
1555
1737
  */
1556
1738
  function handleError(xhr, err) {
@@ -1606,11 +1788,12 @@ function ajax(settings) {
1606
1788
  * Get a JSON resource over XHR, also supporting CORS without preflight.
1607
1789
  *
1608
1790
  * @function Highcharts.getJSON
1791
+ *
1609
1792
  * @param {string} url
1610
- * The URL to load.
1793
+ * The URL to load.
1611
1794
  * @param {Function} success
1612
- * The success callback. For error handling, use the `Highcharts.ajax`
1613
- * function instead.
1795
+ * The success callback. For error handling, use the `Highcharts.ajax` function
1796
+ * instead.
1614
1797
  */
1615
1798
  function getJSON(url, success) {
1616
1799
  HttpUtilities.ajax({
@@ -1625,46 +1808,44 @@ function getJSON(url, success) {
1625
1808
  });
1626
1809
  }
1627
1810
  /**
1628
- * The post utility
1811
+ * The post utility.
1629
1812
  *
1630
1813
  * @private
1631
1814
  * @function Highcharts.post
1632
1815
  *
1633
1816
  * @param {string} url
1634
- * Post URL
1635
- *
1817
+ * Post URL.
1636
1818
  * @param {Object} data
1637
- * Post data
1638
- *
1819
+ * Post data.
1639
1820
  * @param {RequestInit} [fetchOptions]
1640
- * Additional attributes for the post request
1641
- */
1642
- /**
1643
- *
1821
+ * Additional attributes for the post request.
1644
1822
  */
1645
- function post(url, data, fetchOptions) {
1646
- const formData = new win.FormData();
1647
- // Add the data
1648
- objectEach(data, function (val, name) {
1649
- formData.append(name, val);
1823
+ async function post(url, data, fetchOptions) {
1824
+ // Prepare a form to send the data
1825
+ const formData = new HttpUtilities_win.FormData();
1826
+ // Add the data to the form
1827
+ objectEach(data, function (value, name) {
1828
+ formData.append(name, value);
1650
1829
  });
1651
1830
  formData.append('b64', 'true');
1652
- const { filename, type } = data;
1653
- return win.fetch(url, {
1831
+ // Send the POST
1832
+ const response = await HttpUtilities_win.fetch(url, {
1654
1833
  method: 'POST',
1655
1834
  body: formData,
1656
1835
  ...fetchOptions
1657
- }).then((res) => {
1658
- if (res.ok) {
1659
- res.text().then((text) => {
1660
- const link = document.createElement('a');
1661
- link.href = `data:${type};base64,${text}`;
1662
- link.download = filename;
1663
- link.click();
1664
- discardElement(link);
1665
- });
1666
- }
1667
1836
  });
1837
+ // Check the response
1838
+ if (response.ok) {
1839
+ // Get the text from the response
1840
+ const text = await response.text();
1841
+ // Prepare self-click link with the Base64 representation
1842
+ const link = document.createElement('a');
1843
+ link.href = `data:${data.type};base64,${text}`;
1844
+ link.download = data.filename;
1845
+ link.click();
1846
+ // Remove the link
1847
+ discardElement(link);
1848
+ }
1668
1849
  }
1669
1850
  /* *
1670
1851
  *
@@ -1688,29 +1869,35 @@ const HttpUtilities = {
1688
1869
  * The payload to send.
1689
1870
  *
1690
1871
  * @name Highcharts.AjaxSettingsObject#data
1691
- * @type {string|Highcharts.Dictionary<any>|undefined}
1872
+ * @type {string | Highcharts.Dictionary<any> | undefined}
1692
1873
  */ /**
1693
1874
  * The data type expected.
1875
+ *
1694
1876
  * @name Highcharts.AjaxSettingsObject#dataType
1695
- * @type {"json"|"xml"|"text"|"octet"|undefined}
1877
+ * @type {"json" | "xml" | "text" | "octet" | undefined}
1696
1878
  */ /**
1697
1879
  * Function to call on error.
1880
+ *
1698
1881
  * @name Highcharts.AjaxSettingsObject#error
1699
- * @type {Function|undefined}
1882
+ * @type {Function | undefined}
1700
1883
  */ /**
1701
1884
  * The headers; keyed on header name.
1885
+ *
1702
1886
  * @name Highcharts.AjaxSettingsObject#headers
1703
- * @type {Highcharts.Dictionary<string>|undefined}
1887
+ * @type {Highcharts.Dictionary<string> | undefined}
1704
1888
  */ /**
1705
1889
  * Function to call on success.
1890
+ *
1706
1891
  * @name Highcharts.AjaxSettingsObject#success
1707
- * @type {Function|undefined}
1892
+ * @type {Function | undefined}
1708
1893
  */ /**
1709
1894
  * The HTTP method to use. For example GET or POST.
1895
+ *
1710
1896
  * @name Highcharts.AjaxSettingsObject#type
1711
- * @type {string|undefined}
1897
+ * @type {string | undefined}
1712
1898
  */ /**
1713
1899
  * The URL to call.
1900
+ *
1714
1901
  * @name Highcharts.AjaxSettingsObject#url
1715
1902
  * @type {string}
1716
1903
  */
@@ -1733,69 +1920,267 @@ const HttpUtilities = {
1733
1920
 
1734
1921
 
1735
1922
 
1736
- const { defaultOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1923
+ const { defaultOptions, setOptions } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1737
1924
 
1925
+ const { downloadURL: Exporting_downloadURL, getScript: Exporting_getScript } = Extensions_DownloadURL;
1738
1926
 
1739
1927
 
1740
1928
 
1741
- const { doc, SVG_NS, win: Exporting_win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1742
1929
 
1930
+ const { composed: Exporting_composed, doc: Exporting_doc, isFirefox, isMS, isSafari: Exporting_isSafari, SVG_NS, win: Exporting_win } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1743
1931
 
1744
- const { addEvent: Exporting_addEvent, css, createElement, discardElement: Exporting_discardElement, extend, find, fireEvent: Exporting_fireEvent, isObject, merge, objectEach: Exporting_objectEach, pick, removeEvent, splat, uniqueKey } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1932
+
1933
+ const { addEvent: Exporting_addEvent, clearTimeout: Exporting_clearTimeout, createElement, css, discardElement: Exporting_discardElement, error: Exporting_error, extend, find, fireEvent: Exporting_fireEvent, isObject, merge, objectEach: Exporting_objectEach, pick, pushUnique: Exporting_pushUnique, removeEvent, splat, uniqueKey } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
1934
+ highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().allowedAttributes.push('data-z-index', 'fill-opacity', 'filter', 'preserveAspectRatio', 'rx', 'ry', 'stroke-dasharray', 'stroke-linejoin', 'stroke-opacity', 'text-anchor', 'transform', 'transform-origin', 'version', 'viewBox', 'visibility', 'xmlns', 'xmlns:xlink');
1935
+ highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().allowedTags.push('desc', 'clippath', 'fedropshadow', 'femorphology', 'g', 'image');
1745
1936
  /* *
1746
1937
  *
1747
- * Composition
1938
+ * Constants
1748
1939
  *
1749
1940
  * */
1750
- var Exporting;
1751
- (function (Exporting) {
1941
+ const Exporting_domurl = Exporting_win.URL || Exporting_win.webkitURL || Exporting_win;
1942
+ /* *
1943
+ *
1944
+ * Class
1945
+ *
1946
+ * */
1947
+ /**
1948
+ * The Exporting class provides methods for exporting charts to images. If the
1949
+ * exporting module is loaded, this class is instantiated on the chart and
1950
+ * available through the `chart.exporting` property. Read more about the
1951
+ * [exporting module](https://www.highcharts.com/docs/export-module-overview).
1952
+ *
1953
+ * @class
1954
+ * @name Highcharts.Exporting
1955
+ *
1956
+ * @param {Highcharts.Chart} chart
1957
+ * The chart instance.
1958
+ *
1959
+ */
1960
+ class Exporting {
1752
1961
  /* *
1753
1962
  *
1754
- * Declarations
1963
+ * Constructor
1755
1964
  *
1756
1965
  * */
1966
+ constructor(chart, options) {
1967
+ this.options = {};
1968
+ this.chart = chart;
1969
+ this.options = options;
1970
+ this.btnCount = 0;
1971
+ this.buttonOffset = 0;
1972
+ this.divElements = [];
1973
+ this.svgElements = [];
1974
+ }
1757
1975
  /* *
1758
1976
  *
1759
- * Constants
1977
+ * Static Functions
1760
1978
  *
1761
1979
  * */
1762
- // These CSS properties are not inlined. Remember camelCase.
1763
- const inlineDenylist = [
1764
- /-/, // In Firefox, both hyphened and camelCased names are listed
1765
- /^(clipPath|cssText|d|height|width)$/, // Full words
1766
- /^font$/, // More specific props are set
1767
- /[lL]ogical(Width|Height)$/,
1768
- /^parentRule$/,
1769
- /^(cssRules|ownerRules)$/, // #19516 read-only properties
1770
- /perspective/,
1771
- /TapHighlightColor/,
1772
- /^transition/,
1773
- /^length$/, // #7700
1774
- /^\d+$/ // #17538
1775
- ];
1776
- // These ones are translated to attributes rather than styles
1777
- const inlineToAttributes = [
1778
- 'fill',
1779
- 'stroke',
1780
- 'strokeLinecap',
1781
- 'strokeLinejoin',
1782
- 'strokeWidth',
1783
- 'textAnchor',
1784
- 'x',
1785
- 'y'
1786
- ];
1787
- Exporting.inlineAllowlist = [];
1788
- const unstyledElements = [
1789
- 'clipPath',
1790
- 'defs',
1791
- 'desc'
1792
- ];
1793
- /* *
1980
+ /**
1981
+ * Make hyphenated property names out of camelCase.
1794
1982
  *
1795
- * Variables
1983
+ * @private
1984
+ * @static
1985
+ * @function Highcharts.Exporting#hyphenate
1796
1986
  *
1797
- * */
1798
- let printingChart;
1987
+ * @param {string} property
1988
+ * Property name in camelCase.
1989
+ *
1990
+ * @return {string}
1991
+ * Hyphenated property name.
1992
+ *
1993
+ * @requires modules/exporting
1994
+ */
1995
+ static hyphenate(property) {
1996
+ return property.replace(/[A-Z]/g, function (match) {
1997
+ return '-' + match.toLowerCase();
1998
+ });
1999
+ }
2000
+ /**
2001
+ * Get data:URL from image URL.
2002
+ *
2003
+ * @private
2004
+ * @static
2005
+ * @async
2006
+ * @function Highcharts.Exporting#imageToDataURL
2007
+ *
2008
+ * @param {string} imageURL
2009
+ * The address or URL of the image.
2010
+ * @param {number} scale
2011
+ * The scale of the image.
2012
+ * @param {string} imageType
2013
+ * The export type of the image.
2014
+ *
2015
+ * @requires modules/exporting
2016
+ */
2017
+ static async imageToDataURL(imageURL, scale, imageType) {
2018
+ // First, wait for the image to be loaded
2019
+ const img = await Exporting.loadImage(imageURL), canvas = Exporting_doc.createElement('canvas'), ctx = canvas?.getContext('2d');
2020
+ if (!ctx) {
2021
+ throw new Error('No canvas found!');
2022
+ }
2023
+ else {
2024
+ canvas.height = img.height * scale;
2025
+ canvas.width = img.width * scale;
2026
+ ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
2027
+ // Now we try to get the contents of the canvas
2028
+ return canvas.toDataURL(imageType);
2029
+ }
2030
+ }
2031
+ /**
2032
+ * Loads an image from the provided URL.
2033
+ *
2034
+ * @private
2035
+ * @static
2036
+ * @function Highcharts.Exporting#loadImage
2037
+ *
2038
+ * @param {string} imageURL
2039
+ * The address or URL of the image.
2040
+ *
2041
+ * @return {Promise<HTMLImageElement>}
2042
+ * Returns a Promise that resolves with the loaded HTMLImageElement.
2043
+ *
2044
+ * @requires modules/exporting
2045
+ */
2046
+ static loadImage(imageURL) {
2047
+ return new Promise((resolve, reject) => {
2048
+ // Create an image
2049
+ const image = new Exporting_win.Image();
2050
+ // Must be set prior to loading image source
2051
+ image.crossOrigin = 'Anonymous';
2052
+ // Return the image in case of success
2053
+ image.onload = () => {
2054
+ // IE bug where image is not always ready despite load event
2055
+ setTimeout(() => {
2056
+ resolve(image);
2057
+ }, Exporting.loadEventDeferDelay);
2058
+ };
2059
+ // Reject in case of fail
2060
+ image.onerror = (error) => {
2061
+ reject(error);
2062
+ };
2063
+ // Provide the image URL
2064
+ image.src = imageURL;
2065
+ });
2066
+ }
2067
+ /**
2068
+ * Prepares and returns the image export options with default values where
2069
+ * necessary.
2070
+ *
2071
+ * @private
2072
+ * @static
2073
+ * @function Highcharts.Exporting#prepareImageOptions
2074
+ *
2075
+ * @param {Highcharts.ExportingOptions} exportingOptions
2076
+ * The exporting options.
2077
+ *
2078
+ * @return {Exporting.ImageOptions}
2079
+ * The finalized image export options with ensured values.
2080
+ *
2081
+ * @requires modules/exporting
2082
+ */
2083
+ static prepareImageOptions(exportingOptions) {
2084
+ const type = exportingOptions?.type || 'image/png', libURL = (exportingOptions?.libURL ||
2085
+ defaultOptions.exporting?.libURL);
2086
+ return {
2087
+ type,
2088
+ filename: ((exportingOptions?.filename || 'chart') +
2089
+ '.' +
2090
+ (type === 'image/svg+xml' ? 'svg' : type.split('/')[1])),
2091
+ scale: exportingOptions?.scale || 1,
2092
+ // Allow libURL to end with or without fordward slash
2093
+ libURL: libURL?.slice(-1) !== '/' ? libURL + '/' : libURL
2094
+ };
2095
+ }
2096
+ /**
2097
+ * A collection of fixes on the produced SVG to account for expand
2098
+ * properties and browser bugs. Returns a cleaned SVG.
2099
+ *
2100
+ * @private
2101
+ * @static
2102
+ * @function Highcharts.Exporting#sanitizeSVG
2103
+ *
2104
+ * @param {string} svg
2105
+ * SVG code to sanitize.
2106
+ * @param {Highcharts.Options} options
2107
+ * Chart options to apply.
2108
+ *
2109
+ * @return {string}
2110
+ * Sanitized SVG code.
2111
+ *
2112
+ * @requires modules/exporting
2113
+ */
2114
+ static sanitizeSVG(svg, options) {
2115
+ const split = svg.indexOf('</svg>') + 6, useForeignObject = svg.indexOf('<foreignObject') > -1;
2116
+ let html = svg.substr(split);
2117
+ // Remove any HTML added to the container after the SVG (#894, #9087)
2118
+ svg = svg.substr(0, split);
2119
+ if (useForeignObject) {
2120
+ // Some tags needs to be closed in xhtml (#13726)
2121
+ svg = svg.replace(/(<(?:img|br).*?(?=\>))>/g, '$1 />');
2122
+ // Move HTML into a foreignObject
2123
+ }
2124
+ else if (html && options?.exporting?.allowHTML) {
2125
+ html = '<foreignObject x="0" y="0" ' +
2126
+ 'width="' + options.chart.width + '" ' +
2127
+ 'height="' + options.chart.height + '">' +
2128
+ '<body xmlns="http://www.w3.org/1999/xhtml">' +
2129
+ // Some tags needs to be closed in xhtml (#13726)
2130
+ html.replace(/(<(?:img|br).*?(?=\>))>/g, '$1 />') +
2131
+ '</body>' +
2132
+ '</foreignObject>';
2133
+ svg = svg.replace('</svg>', html + '</svg>');
2134
+ }
2135
+ svg = svg
2136
+ .replace(/zIndex="[^"]+"/g, '')
2137
+ .replace(/symbolName="[^"]+"/g, '')
2138
+ .replace(/jQuery\d+="[^"]+"/g, '')
2139
+ .replace(/url\(("|&quot;)(.*?)("|&quot;)\;?\)/g, 'url($2)')
2140
+ .replace(/url\([^#]+#/g, 'url(#')
2141
+ .replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
2142
+ .replace(/ (NS\d+\:)?href=/g, ' xlink:href=') // #3567
2143
+ .replace(/\n+/g, ' ')
2144
+ // Replace HTML entities, issue #347
2145
+ .replace(/&nbsp;/g, '\u00A0') // No-break space
2146
+ .replace(/&shy;/g, '\u00AD'); // Soft hyphen
2147
+ return svg;
2148
+ }
2149
+ /**
2150
+ * Get blob URL from SVG code. Falls back to normal data URI.
2151
+ *
2152
+ * @private
2153
+ * @static
2154
+ * @function Highcharts.Exporting#svgToDataURL
2155
+ *
2156
+ * @param {string} svg
2157
+ * SVG to get the URL from.
2158
+ *
2159
+ * @return {string}
2160
+ * The data URL.
2161
+ *
2162
+ * @requires modules/exporting
2163
+ */
2164
+ static svgToDataURL(svg) {
2165
+ // Webkit and not chrome
2166
+ const userAgent = Exporting_win.navigator.userAgent;
2167
+ const webKit = (userAgent.indexOf('WebKit') > -1 &&
2168
+ userAgent.indexOf('Chrome') < 0);
2169
+ try {
2170
+ // Safari requires data URI since it doesn't allow navigation to
2171
+ // blob URLs. ForeignObjects also don't work well in Blobs in Chrome
2172
+ // (#14780).
2173
+ if (!webKit && svg.indexOf('<foreignObject') === -1) {
2174
+ return Exporting_domurl.createObjectURL(new Exporting_win.Blob([svg], {
2175
+ type: 'image/svg+xml;charset-utf-16'
2176
+ }));
2177
+ }
2178
+ }
2179
+ catch {
2180
+ // Ignore
2181
+ }
2182
+ return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);
2183
+ }
1799
2184
  /* *
1800
2185
  *
1801
2186
  * Functions
@@ -1805,26 +2190,21 @@ var Exporting;
1805
2190
  * Add the export button to the chart, with options.
1806
2191
  *
1807
2192
  * @private
1808
- * @function Highcharts.Chart#addButton
1809
- * @param {Highcharts.NavigationButtonOptions} options
2193
+ * @function Highcharts.Exporting#addButton
2194
+ *
2195
+ * @param {Highcharts.ExportingButtonOptions} options
2196
+ * The exporting button options object.
2197
+ *
1810
2198
  * @requires modules/exporting
1811
2199
  */
1812
- function addButton(options) {
1813
- const chart = this, renderer = chart.renderer, btnOptions = merge(chart.options.navigation.buttonOptions, options), onclick = btnOptions.onclick, menuItems = btnOptions.menuItems, symbolSize = btnOptions.symbolSize || 12;
2200
+ addButton(options) {
2201
+ const exporting = this, chart = exporting.chart, renderer = chart.renderer, btnOptions = merge(chart.options.navigation?.buttonOptions, options), onclick = btnOptions.onclick, menuItems = btnOptions.menuItems, symbolSize = btnOptions.symbolSize || 12;
1814
2202
  let symbol;
1815
- if (!chart.btnCount) {
1816
- chart.btnCount = 0;
1817
- }
1818
- // Keeps references to the button elements
1819
- if (!chart.exportDivElements) {
1820
- chart.exportDivElements = [];
1821
- chart.exportSVGElements = [];
1822
- }
1823
2203
  if (btnOptions.enabled === false || !btnOptions.theme) {
1824
2204
  return;
1825
2205
  }
1826
2206
  const theme = chart.styledMode ? {} : btnOptions.theme;
1827
- let callback;
2207
+ let callback = (() => { });
1828
2208
  if (onclick) {
1829
2209
  callback = function (e) {
1830
2210
  if (e) {
@@ -1839,7 +2219,7 @@ var Exporting;
1839
2219
  if (e) {
1840
2220
  e.stopPropagation();
1841
2221
  }
1842
- chart.contextMenu(button.menuClassName, menuItems, button.translateX || 0, button.translateY || 0, button.width || 0, button.height || 0, button);
2222
+ exporting.contextMenu(button.menuClassName, menuItems, button.translateX || 0, button.translateY || 0, button.width || 0, button.height || 0, button);
1843
2223
  button.setState(2);
1844
2224
  };
1845
2225
  }
@@ -1854,18 +2234,19 @@ var Exporting;
1854
2234
  });
1855
2235
  }
1856
2236
  const button = renderer
1857
- .button(btnOptions.text, 0, 0, callback, theme, void 0, void 0, void 0, void 0, btnOptions.useHTML)
1858
- .addClass(options.className)
2237
+ .button(btnOptions.text || '', 0, 0, callback, theme, void 0, void 0, void 0, void 0, btnOptions.useHTML)
2238
+ .addClass(options.className || '')
1859
2239
  .attr({
1860
- title: pick(chart.options.lang[btnOptions._titleKey || btnOptions.titleKey], '')
2240
+ title: pick(chart.options.lang[(btnOptions._titleKey ||
2241
+ btnOptions.titleKey)], '')
1861
2242
  });
1862
2243
  button.menuClassName = (options.menuClassName ||
1863
- 'highcharts-menu-' + chart.btnCount++);
2244
+ 'highcharts-menu-' + exporting.btnCount++);
1864
2245
  if (btnOptions.symbol) {
1865
2246
  symbol = renderer
1866
- .symbol(btnOptions.symbol, Math.round((btnOptions.symbolX || 0) - (symbolSize / 2)), Math.round((btnOptions.symbolY || 0) - (symbolSize / 2)), symbolSize, symbolSize
2247
+ .symbol(btnOptions.symbol, Math.round((btnOptions.symbolX || 0) - (symbolSize / 2)), Math.round((btnOptions.symbolY || 0) - (symbolSize / 2)), symbolSize, symbolSize,
1867
2248
  // If symbol is an image, scale it (#7957)
1868
- , {
2249
+ {
1869
2250
  width: symbolSize,
1870
2251
  height: symbolSize
1871
2252
  })
@@ -1883,73 +2264,69 @@ var Exporting;
1883
2264
  }
1884
2265
  }
1885
2266
  button
1886
- .add(chart.exportingGroup)
2267
+ .add(exporting.group)
1887
2268
  .align(extend(btnOptions, {
1888
2269
  width: button.width,
1889
- x: pick(btnOptions.x, chart.buttonOffset) // #1654
2270
+ x: pick(btnOptions.x, exporting.buttonOffset) // #1654
1890
2271
  }), true, 'spacingBox');
1891
- chart.buttonOffset += (((button.width || 0) + btnOptions.buttonSpacing) *
2272
+ exporting.buttonOffset += (((button.width || 0) + (btnOptions.buttonSpacing || 0)) *
1892
2273
  (btnOptions.align === 'right' ? -1 : 1));
1893
- chart.exportSVGElements.push(button, symbol);
2274
+ exporting.svgElements.push(button, symbol);
1894
2275
  }
1895
2276
  /**
1896
2277
  * Clean up after printing a chart.
1897
2278
  *
1898
- * @function Highcharts#afterPrint
1899
- *
1900
2279
  * @private
1901
- *
1902
- * @param {Highcharts.Chart} chart
1903
- * Chart that was (or suppose to be) printed
2280
+ * @function Highcharts.Exporting#afterPrint
1904
2281
  *
1905
2282
  * @emits Highcharts.Chart#event:afterPrint
2283
+ *
2284
+ * @requires modules/exporting
1906
2285
  */
1907
- function afterPrint() {
1908
- const chart = this;
1909
- if (!chart.printReverseInfo) {
2286
+ afterPrint() {
2287
+ const chart = this.chart;
2288
+ if (!this.printReverseInfo) {
1910
2289
  return void 0;
1911
2290
  }
1912
- const { childNodes, origDisplay, resetParams } = chart.printReverseInfo;
2291
+ const { childNodes, origDisplay, resetParams } = this.printReverseInfo;
1913
2292
  // Put the chart back in
1914
- chart.moveContainers(chart.renderTo);
2293
+ this.moveContainers(chart.renderTo);
1915
2294
  // Restore all body content
1916
2295
  [].forEach.call(childNodes, function (node, i) {
1917
2296
  if (node.nodeType === 1) {
1918
2297
  node.style.display = (origDisplay[i] || '');
1919
2298
  }
1920
2299
  });
1921
- chart.isPrinting = false;
2300
+ this.isPrinting = false;
1922
2301
  // Reset printMaxWidth
1923
2302
  if (resetParams) {
1924
2303
  chart.setSize.apply(chart, resetParams);
1925
2304
  }
1926
- delete chart.printReverseInfo;
1927
- printingChart = void 0;
2305
+ delete this.printReverseInfo;
2306
+ Exporting.printingChart = void 0;
1928
2307
  Exporting_fireEvent(chart, 'afterPrint');
1929
2308
  }
1930
2309
  /**
1931
2310
  * Prepare chart and document before printing a chart.
1932
2311
  *
1933
- * @function Highcharts#beforePrint
1934
- *
1935
2312
  * @private
1936
- *
2313
+ * @function Highcharts.Exporting#beforePrint
1937
2314
  *
1938
2315
  * @emits Highcharts.Chart#event:beforePrint
2316
+ *
2317
+ * @requires modules/exporting
1939
2318
  */
1940
- function beforePrint() {
1941
- const chart = this, body = doc.body, printMaxWidth = chart.options.exporting.printMaxWidth, printReverseInfo = {
2319
+ beforePrint() {
2320
+ const chart = this.chart, body = Exporting_doc.body, printMaxWidth = this.options.printMaxWidth, printReverseInfo = {
1942
2321
  childNodes: body.childNodes,
1943
2322
  origDisplay: [],
1944
2323
  resetParams: void 0
1945
2324
  };
1946
- chart.isPrinting = true;
2325
+ this.isPrinting = true;
1947
2326
  chart.pointer?.reset(void 0, 0);
1948
2327
  Exporting_fireEvent(chart, 'beforePrint');
1949
2328
  // Handle printMaxWidth
1950
- const handleMaxWidth = printMaxWidth &&
1951
- chart.chartWidth > printMaxWidth;
1952
- if (handleMaxWidth) {
2329
+ if (printMaxWidth && chart.chartWidth > printMaxWidth) {
1953
2330
  printReverseInfo.resetParams = [
1954
2331
  chart.options.chart.width,
1955
2332
  void 0,
@@ -1965,131 +2342,45 @@ var Exporting;
1965
2342
  }
1966
2343
  });
1967
2344
  // Pull out the chart
1968
- chart.moveContainers(body);
2345
+ this.moveContainers(body);
1969
2346
  // Storage details for undo action after printing
1970
- chart.printReverseInfo = printReverseInfo;
2347
+ this.printReverseInfo = printReverseInfo;
1971
2348
  }
1972
2349
  /**
2350
+ * Display a popup menu for choosing the export type.
2351
+ *
1973
2352
  * @private
2353
+ * @function Highcharts.Exporting#contextMenu
2354
+ *
2355
+ * @param {string} className
2356
+ * An identifier for the menu.
2357
+ * @param {Array<(string | Highcharts.ExportingMenuObject)>} items
2358
+ * A collection with text and onclicks for the items.
2359
+ * @param {number} x
2360
+ * The x position of the opener button.
2361
+ * @param {number} y
2362
+ * The y position of the opener button.
2363
+ * @param {number} width
2364
+ * The width of the opener button.
2365
+ * @param {number} height
2366
+ * The height of the opener button.
2367
+ * @param {SVGElement} button
2368
+ * The SVG button element.
2369
+ *
2370
+ * @emits Highcharts.Chart#event:exportMenuHidden
2371
+ * @emits Highcharts.Chart#event:exportMenuShown
2372
+ *
2373
+ * @requires modules/exporting
1974
2374
  */
1975
- function chartCallback(chart) {
1976
- const composition = chart;
1977
- composition.renderExporting();
1978
- Exporting_addEvent(chart, 'redraw', composition.renderExporting);
1979
- // Destroy the export elements at chart destroy
1980
- Exporting_addEvent(chart, 'destroy', composition.destroyExport);
1981
- // Uncomment this to see a button directly below the chart, for quick
1982
- // testing of export
1983
- /*
1984
- let button, viewImage, viewSource;
1985
- if (!chart.renderer.forExport) {
1986
- viewImage = function () {
1987
- let div = doc.createElement('div');
1988
- div.innerHTML = chart.getSVGForExport();
1989
- chart.renderTo.parentNode.appendChild(div);
1990
- };
1991
-
1992
- viewSource = function () {
1993
- let pre = doc.createElement('pre');
1994
- pre.innerHTML = chart.getSVGForExport()
1995
- .replace(/</g, '\n&lt;')
1996
- .replace(/>/g, '&gt;');
1997
- chart.renderTo.parentNode.appendChild(pre);
1998
- };
1999
-
2000
- viewImage();
2001
-
2002
- // View SVG Image
2003
- button = doc.createElement('button');
2004
- button.innerHTML = 'View SVG Image';
2005
- chart.renderTo.parentNode.appendChild(button);
2006
- button.onclick = viewImage;
2007
-
2008
- // View SVG Source
2009
- button = doc.createElement('button');
2010
- button.innerHTML = 'View SVG Source';
2011
- chart.renderTo.parentNode.appendChild(button);
2012
- button.onclick = viewSource;
2013
- }
2014
- //*/
2015
- }
2016
- /**
2017
- * @private
2018
- */
2019
- function compose(ChartClass, SVGRendererClass) {
2020
- Exporting_ExportingSymbols.compose(SVGRendererClass);
2021
- Exporting_Fullscreen.compose(ChartClass);
2022
- const chartProto = ChartClass.prototype;
2023
- if (!chartProto.exportChart) {
2024
- chartProto.afterPrint = afterPrint;
2025
- chartProto.exportChart = exportChart;
2026
- chartProto.inlineStyles = inlineStyles;
2027
- chartProto.print = print;
2028
- chartProto.sanitizeSVG = sanitizeSVG;
2029
- chartProto.getChartHTML = getChartHTML;
2030
- chartProto.getSVG = getSVG;
2031
- chartProto.getSVGForExport = getSVGForExport;
2032
- chartProto.getFilename = getFilename;
2033
- chartProto.moveContainers = moveContainers;
2034
- chartProto.beforePrint = beforePrint;
2035
- chartProto.contextMenu = contextMenu;
2036
- chartProto.addButton = addButton;
2037
- chartProto.destroyExport = destroyExport;
2038
- chartProto.renderExporting = renderExporting;
2039
- chartProto.resolveCSSVariables = resolveCSSVariables;
2040
- chartProto.callbacks.push(chartCallback);
2041
- Exporting_addEvent(ChartClass, 'init', onChartInit);
2042
- Exporting_addEvent(ChartClass, 'layOutTitle', onChartLayOutTitle);
2043
- if ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari) {
2044
- Exporting_win.matchMedia('print').addListener(function (mqlEvent) {
2045
- if (!printingChart) {
2046
- return void 0;
2047
- }
2048
- if (mqlEvent.matches) {
2049
- printingChart.beforePrint();
2050
- }
2051
- else {
2052
- printingChart.afterPrint();
2053
- }
2054
- });
2055
- }
2056
- defaultOptions.exporting = merge(Exporting_ExportingDefaults.exporting, defaultOptions.exporting);
2057
- defaultOptions.lang = merge(Exporting_ExportingDefaults.lang, defaultOptions.lang);
2058
- // Buttons and menus are collected in a separate config option set
2059
- // called 'navigation'. This can be extended later to add control
2060
- // buttons like zoom and pan right click menus.
2061
- defaultOptions.navigation = merge(Exporting_ExportingDefaults.navigation, defaultOptions.navigation);
2062
- }
2063
- }
2064
- Exporting.compose = compose;
2065
- /**
2066
- * Display a popup menu for choosing the export type.
2067
- *
2068
- * @private
2069
- * @function Highcharts.Chart#contextMenu
2070
- * @param {string} className
2071
- * An identifier for the menu.
2072
- * @param {Array<string|Highcharts.ExportingMenuObject>} items
2073
- * A collection with text and onclicks for the items.
2074
- * @param {number} x
2075
- * The x position of the opener button
2076
- * @param {number} y
2077
- * The y position of the opener button
2078
- * @param {number} width
2079
- * The width of the opener button
2080
- * @param {number} height
2081
- * The height of the opener button
2082
- * @requires modules/exporting
2083
- */
2084
- function contextMenu(className, items, x, y, width, height, button) {
2085
- const chart = this, navOptions = chart.options.navigation, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, cacheName = 'cache-' + className,
2375
+ contextMenu(className, items, x, y, width, height, button) {
2376
+ const exporting = this, chart = exporting.chart, navOptions = chart.options.navigation, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, cacheName = 'cache-' + className,
2086
2377
  // For mouse leave detection
2087
2378
  menuPadding = Math.max(width, height);
2088
2379
  let innerMenu, menu = chart[cacheName];
2089
2380
  // Create the menu only the first time
2090
2381
  if (!menu) {
2091
2382
  // Create a HTML element above the SVG
2092
- chart.exportContextMenu = chart[cacheName] = menu =
2383
+ exporting.contextMenuEl = chart[cacheName] = menu =
2093
2384
  createElement('div', {
2094
2385
  className: className
2095
2386
  }, {
@@ -2107,10 +2398,10 @@ var Exporting;
2107
2398
  // Presentational CSS
2108
2399
  if (!chart.styledMode) {
2109
2400
  css(innerMenu, extend({
2110
- MozBoxShadow: '3px 3px 10px #888',
2111
- WebkitBoxShadow: '3px 3px 10px #888',
2112
- boxShadow: '3px 3px 10px #888'
2113
- }, navOptions.menuStyle));
2401
+ MozBoxShadow: '3px 3px 10px #0008',
2402
+ WebkitBoxShadow: '3px 3px 10px #0008',
2403
+ boxShadow: '3px 3px 10px #0008'
2404
+ }, navOptions?.menuStyle || {}));
2114
2405
  }
2115
2406
  // Hide on mouse out
2116
2407
  menu.hideMenu = function () {
@@ -2118,35 +2409,38 @@ var Exporting;
2118
2409
  if (button) {
2119
2410
  button.setState(0);
2120
2411
  }
2121
- chart.openMenu = false;
2412
+ if (chart.exporting) {
2413
+ chart.exporting.openMenu = false;
2414
+ }
2122
2415
  // #10361, #9998
2123
2416
  css(chart.renderTo, { overflow: 'hidden' });
2124
2417
  css(chart.container, { overflow: 'hidden' });
2125
- highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clearTimeout(menu.hideTimer);
2418
+ Exporting_clearTimeout(menu.hideTimer);
2126
2419
  Exporting_fireEvent(chart, 'exportMenuHidden');
2127
2420
  };
2128
2421
  // Hide the menu some time after mouse leave (#1357)
2129
- chart.exportEvents.push(Exporting_addEvent(menu, 'mouseleave', function () {
2422
+ exporting.events?.push(Exporting_addEvent(menu, 'mouseleave', function () {
2130
2423
  menu.hideTimer = Exporting_win.setTimeout(menu.hideMenu, 500);
2131
2424
  }), Exporting_addEvent(menu, 'mouseenter', function () {
2132
- highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clearTimeout(menu.hideTimer);
2425
+ Exporting_clearTimeout(menu.hideTimer);
2133
2426
  }),
2134
2427
  // Hide it on clicking or touching outside the menu (#2258,
2135
2428
  // #2335, #2407)
2136
- Exporting_addEvent(doc, 'mouseup', function (e) {
2429
+ Exporting_addEvent(Exporting_doc, 'mouseup', function (e) {
2137
2430
  if (!chart.pointer?.inClass(e.target, className)) {
2138
2431
  menu.hideMenu();
2139
2432
  }
2140
2433
  }), Exporting_addEvent(menu, 'click', function () {
2141
- if (chart.openMenu) {
2434
+ if (chart.exporting?.openMenu) {
2142
2435
  menu.hideMenu();
2143
2436
  }
2144
2437
  }));
2145
2438
  // Create the items
2146
2439
  items.forEach(function (item) {
2147
2440
  if (typeof item === 'string') {
2148
- item = chart.options.exporting
2149
- .menuItemDefinitions[item];
2441
+ if (exporting.options.menuItemDefinitions?.[item]) {
2442
+ item = exporting.options.menuItemDefinitions[item];
2443
+ }
2150
2444
  }
2151
2445
  if (isObject(item, true)) {
2152
2446
  let element;
@@ -2157,7 +2451,7 @@ var Exporting;
2157
2451
  // When chart initialized with the table, wrong button
2158
2452
  // text displayed, #14352.
2159
2453
  if (item.textKey === 'viewData' &&
2160
- chart.isDataTableVisible) {
2454
+ exporting.isDataTableVisible) {
2161
2455
  item.textKey = 'hideData';
2162
2456
  }
2163
2457
  element = createElement('li', {
@@ -2168,44 +2462,45 @@ var Exporting;
2168
2462
  }
2169
2463
  menu.hideMenu();
2170
2464
  if (typeof item !== 'string' && item.onclick) {
2465
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
2171
2466
  item.onclick.apply(chart, arguments);
2172
2467
  }
2173
2468
  }
2174
2469
  }, void 0, innerMenu);
2175
- highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(element, item.text ||
2176
- chart.options.lang[item.textKey]);
2470
+ highcharts_AST_commonjs_highcharts_AST_commonjs2_highcharts_AST_root_Highcharts_AST_default().setElementHTML(element, item.text || chart.options.lang[item.textKey]);
2177
2471
  if (!chart.styledMode) {
2178
2472
  element.onmouseover = function () {
2179
- css(this, navOptions.menuItemHoverStyle);
2473
+ css(this, navOptions?.menuItemHoverStyle || {});
2180
2474
  };
2181
2475
  element.onmouseout = function () {
2182
- css(this, navOptions.menuItemStyle);
2476
+ css(this, navOptions?.menuItemStyle || {});
2183
2477
  };
2184
2478
  css(element, extend({
2185
2479
  cursor: 'pointer'
2186
- }, navOptions.menuItemStyle || {}));
2480
+ }, navOptions?.menuItemStyle || {}));
2187
2481
  }
2188
2482
  }
2189
2483
  // Keep references to menu divs to be able to destroy them
2190
- chart.exportDivElements.push(element);
2484
+ exporting.divElements.push(element);
2191
2485
  }
2192
2486
  });
2193
2487
  // Keep references to menu and innerMenu div to be able to destroy
2194
2488
  // them
2195
- chart.exportDivElements.push(innerMenu, menu);
2196
- chart.exportMenuWidth = menu.offsetWidth;
2197
- chart.exportMenuHeight = menu.offsetHeight;
2489
+ exporting.divElements.push(innerMenu, menu);
2490
+ exporting.menuHeight = menu.offsetHeight;
2491
+ exporting.menuWidth = menu.offsetWidth;
2198
2492
  }
2199
2493
  const menuStyle = { display: 'block' };
2200
2494
  // If outside right, right align it
2201
- if (x + (chart.exportMenuWidth || 0) > chartWidth) {
2495
+ if (x + (exporting.menuWidth || 0) > chartWidth) {
2202
2496
  menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';
2203
2497
  }
2204
2498
  else {
2205
2499
  menuStyle.left = (x - menuPadding) + 'px';
2206
2500
  }
2207
2501
  // If outside bottom, bottom align it
2208
- if (y + height + (chart.exportMenuHeight || 0) > chartHeight &&
2502
+ if (y + height + (exporting.menuHeight || 0) >
2503
+ chartHeight &&
2209
2504
  button.alignOptions?.verticalAlign !== 'top') {
2210
2505
  menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';
2211
2506
  }
@@ -2216,106 +2511,272 @@ var Exporting;
2216
2511
  // #10361, #9998
2217
2512
  css(chart.renderTo, { overflow: '' });
2218
2513
  css(chart.container, { overflow: '' });
2219
- chart.openMenu = true;
2514
+ if (chart.exporting) {
2515
+ chart.exporting.openMenu = true;
2516
+ }
2220
2517
  Exporting_fireEvent(chart, 'exportMenuShown');
2221
2518
  }
2222
2519
  /**
2223
2520
  * Destroy the export buttons.
2521
+ *
2224
2522
  * @private
2225
- * @function Highcharts.Chart#destroyExport
2523
+ * @function Highcharts.Exporting#destroy
2524
+ *
2226
2525
  * @param {global.Event} [e]
2526
+ * Event object.
2527
+ *
2227
2528
  * @requires modules/exporting
2228
2529
  */
2229
- function destroyExport(e) {
2230
- const chart = e ? e.target : this, exportSVGElements = chart.exportSVGElements, exportDivElements = chart.exportDivElements, exportEvents = chart.exportEvents;
2530
+ destroy(e) {
2531
+ const exporting = this, chart = e ? e.target : exporting.chart, { divElements, events, svgElements } = exporting;
2231
2532
  let cacheName;
2232
2533
  // Destroy the extra buttons added
2233
- if (exportSVGElements) {
2234
- exportSVGElements.forEach((elem, i) => {
2235
- // Destroy and null the svg elements
2236
- if (elem) { // #1822
2237
- elem.onclick = elem.ontouchstart = null;
2238
- cacheName = 'cache-' + elem.menuClassName;
2239
- if (chart[cacheName]) {
2240
- delete chart[cacheName];
2241
- }
2242
- exportSVGElements[i] = elem.destroy();
2534
+ svgElements.forEach((elem, i) => {
2535
+ // Destroy and null the svg elements
2536
+ if (elem) { // #1822
2537
+ elem.onclick = elem.ontouchstart = null;
2538
+ cacheName = 'cache-' + elem.menuClassName;
2539
+ if (chart[cacheName]) {
2540
+ delete chart[cacheName];
2243
2541
  }
2244
- });
2245
- exportSVGElements.length = 0;
2246
- }
2542
+ svgElements[i] = elem.destroy();
2543
+ }
2544
+ });
2545
+ svgElements.length = 0;
2247
2546
  // Destroy the exporting group
2248
- if (chart.exportingGroup) {
2249
- chart.exportingGroup.destroy();
2250
- delete chart.exportingGroup;
2547
+ if (exporting.group) {
2548
+ exporting.group.destroy();
2549
+ delete exporting.group;
2251
2550
  }
2252
2551
  // Destroy the divs for the menu
2253
- if (exportDivElements) {
2254
- exportDivElements.forEach(function (elem, i) {
2255
- if (elem) {
2256
- // Remove the event handler
2257
- highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().clearTimeout(elem.hideTimer); // #5427
2258
- removeEvent(elem, 'mouseleave');
2259
- // Remove inline events
2260
- // (chart.exportDivElements as any)[i] =
2261
- exportDivElements[i] =
2262
- elem.onmouseout =
2263
- elem.onmouseover =
2264
- elem.ontouchstart =
2265
- elem.onclick = null;
2266
- // Destroy the div by moving to garbage bin
2267
- Exporting_discardElement(elem);
2268
- }
2269
- });
2270
- exportDivElements.length = 0;
2271
- }
2272
- if (exportEvents) {
2273
- exportEvents.forEach(function (unbind) {
2552
+ divElements.forEach(function (elem, i) {
2553
+ if (elem) {
2554
+ // Remove the event handler
2555
+ Exporting_clearTimeout(elem.hideTimer); // #5427
2556
+ removeEvent(elem, 'mouseleave');
2557
+ // Remove inline events
2558
+ divElements[i] =
2559
+ elem.onmouseout =
2560
+ elem.onmouseover =
2561
+ elem.ontouchstart =
2562
+ elem.onclick = null;
2563
+ // Destroy the div by moving to garbage bin
2564
+ Exporting_discardElement(elem);
2565
+ }
2566
+ });
2567
+ divElements.length = 0;
2568
+ if (events) {
2569
+ events.forEach(function (unbind) {
2274
2570
  unbind();
2275
2571
  });
2276
- exportEvents.length = 0;
2572
+ events.length = 0;
2573
+ }
2574
+ }
2575
+ /**
2576
+ * Get data URL to an image of an SVG and call download on its options
2577
+ * object:
2578
+ *
2579
+ * - **filename:** Name of resulting downloaded file without extension.
2580
+ * Default is based on the chart title.
2581
+ * - **type:** File type of resulting download. Default is `image/png`.
2582
+ * - **scale:** Scaling factor of downloaded image compared to source.
2583
+ * Default is `2`.
2584
+ * - **libURL:** URL pointing to location of dependency scripts to download
2585
+ * on demand. Default is the exporting.libURL option of the global
2586
+ * Highcharts options pointing to our server.
2587
+ *
2588
+ * @async
2589
+ * @private
2590
+ * @function Highcharts.Exporting#downloadSVG
2591
+ *
2592
+ * @param {string} svg
2593
+ * The generated SVG.
2594
+ * @param {Highcharts.ExportingOptions} exportingOptions
2595
+ * The exporting options.
2596
+ *
2597
+ * @requires modules/exporting
2598
+ */
2599
+ // eslint-disable-next-line @typescript-eslint/require-await
2600
+ async downloadSVG(svg, exportingOptions) {
2601
+ const eventArgs = {
2602
+ svg,
2603
+ exportingOptions,
2604
+ exporting: this
2605
+ };
2606
+ // Fire a custom event before the export starts
2607
+ Exporting_fireEvent(Exporting.prototype, 'downloadSVG', eventArgs);
2608
+ // If the event was prevented, do not proceed with the export
2609
+ if (eventArgs.defaultPrevented) {
2610
+ return;
2611
+ }
2612
+ // Get the final image options
2613
+ const { type, filename, scale, libURL } = Exporting.prepareImageOptions(exportingOptions);
2614
+ let svgURL;
2615
+ // Initiate download depending on file type
2616
+ if (type === 'application/pdf') {
2617
+ // Error in case of offline-exporting module is not loaded
2618
+ throw new Error('Offline exporting logic for PDF type is not found.');
2619
+ }
2620
+ else if (type === 'image/svg+xml') {
2621
+ // SVG download. In this case, we want to use Microsoft specific
2622
+ // Blob if available
2623
+ if (typeof Exporting_win.MSBlobBuilder !== 'undefined') {
2624
+ const blob = new Exporting_win.MSBlobBuilder();
2625
+ blob.append(svg);
2626
+ svgURL = blob.getBlob('image/svg+xml');
2627
+ }
2628
+ else {
2629
+ svgURL = Exporting.svgToDataURL(svg);
2630
+ }
2631
+ // Download the chart
2632
+ Exporting_downloadURL(svgURL, filename);
2633
+ }
2634
+ else {
2635
+ // PNG/JPEG download - create bitmap from SVG
2636
+ svgURL = Exporting.svgToDataURL(svg);
2637
+ try {
2638
+ Exporting.objectURLRevoke = true;
2639
+ // First, try to get PNG by rendering on canvas
2640
+ const dataURL = await Exporting.imageToDataURL(svgURL, scale, type);
2641
+ Exporting_downloadURL(dataURL, filename);
2642
+ }
2643
+ catch (error) {
2644
+ // No need for the below logic to run in case no canvas is
2645
+ // found
2646
+ if (error.message === 'No canvas found!') {
2647
+ throw error;
2648
+ }
2649
+ // Or in case of exceeding the input length
2650
+ if (svg.length > 100000000 /* RegexLimits.svgLimit */) {
2651
+ throw new Error('Input too long');
2652
+ }
2653
+ // Failed due to tainted canvas
2654
+ // Create new and untainted canvas
2655
+ const canvas = Exporting_doc.createElement('canvas'), ctx = canvas.getContext('2d'), matchedImageWidth = svg.match(
2656
+ // eslint-disable-next-line max-len
2657
+ /^<svg[^>]*\s{,1000}width\s{,1000}=\s{,1000}\"?(\d+)\"?[^>]*>/), matchedImageHeight = svg.match(
2658
+ // eslint-disable-next-line max-len
2659
+ /^<svg[^>]*\s{0,1000}height\s{,1000}=\s{,1000}\"?(\d+)\"?[^>]*>/);
2660
+ if (ctx &&
2661
+ matchedImageWidth &&
2662
+ matchedImageHeight) {
2663
+ const imageWidth = +matchedImageWidth[1] * scale, imageHeight = +matchedImageHeight[1] * scale, downloadWithCanVG = () => {
2664
+ const v = Exporting_win.canvg.Canvg.fromString(ctx, svg);
2665
+ v.start();
2666
+ Exporting_downloadURL(Exporting_win.navigator.msSaveOrOpenBlob ?
2667
+ canvas.msToBlob() :
2668
+ canvas.toDataURL(type), filename);
2669
+ };
2670
+ canvas.width = imageWidth;
2671
+ canvas.height = imageHeight;
2672
+ // Must load canVG first if not found. Don't destroy the
2673
+ // object URL yet since we are doing things
2674
+ // asynchronously
2675
+ if (!Exporting_win.canvg) {
2676
+ Exporting.objectURLRevoke = true;
2677
+ await Exporting_getScript(libURL + 'canvg.js');
2678
+ }
2679
+ // Use loaded canvg
2680
+ downloadWithCanVG();
2681
+ }
2682
+ }
2683
+ finally {
2684
+ if (Exporting.objectURLRevoke) {
2685
+ try {
2686
+ Exporting_domurl.revokeObjectURL(svgURL);
2687
+ }
2688
+ catch {
2689
+ // Ignore
2690
+ }
2691
+ }
2692
+ }
2277
2693
  }
2278
2694
  }
2279
2695
  /**
2280
- * Exporting module required. Submit an SVG version of the chart to a server
2281
- * along with some parameters for conversion.
2696
+ * Submit an SVG version of the chart along with some parameters for local
2697
+ * conversion (PNG, JPEG, and SVG) or conversion on a server (PDF).
2282
2698
  *
2283
2699
  * @sample highcharts/members/chart-exportchart/
2284
- * Export with no options
2700
+ * Export with no options
2285
2701
  * @sample highcharts/members/chart-exportchart-filename/
2286
- * PDF type and custom filename
2702
+ * PDF type and custom filename
2703
+ * @sample highcharts/exporting/menuitemdefinitions-webp/
2704
+ * Export to WebP
2287
2705
  * @sample highcharts/members/chart-exportchart-custom-background/
2288
- * Different chart background in export
2706
+ * Different chart background in export
2289
2707
  * @sample stock/members/chart-exportchart/
2290
- * Export with Highcharts Stock
2708
+ * Export with Highcharts Stock
2709
+ *
2710
+ * @async
2711
+ * @function Highcharts.Exporting#exportChart
2712
+ *
2713
+ * @param {Highcharts.ExportingOptions} [exportingOptions]
2714
+ * Exporting options in addition to those defined in
2715
+ * [exporting](https://api.highcharts.com/highcharts/exporting).
2716
+ * @param {Highcharts.Options} [chartOptions]
2717
+ * Additional chart options for the exported chart. For example a different
2718
+ * background color can be added here, or `dataLabels` for export only.
2719
+ *
2720
+ * @requires modules/exporting
2721
+ */
2722
+ async exportChart(exportingOptions, chartOptions) {
2723
+ // Merge the options
2724
+ exportingOptions = merge(this.options, exportingOptions);
2725
+ // If local if expected
2726
+ if (exportingOptions.local) {
2727
+ // Trigger the local export logic
2728
+ await this.localExport(exportingOptions, chartOptions || {});
2729
+ }
2730
+ else {
2731
+ // Get the SVG representation
2732
+ const svg = this.getSVGForExport(exportingOptions, chartOptions);
2733
+ // Do the post
2734
+ if (exportingOptions.url) {
2735
+ await Core_HttpUtilities.post(exportingOptions.url, {
2736
+ filename: exportingOptions.filename ?
2737
+ exportingOptions.filename.replace(/\//g, '-') :
2738
+ this.getFilename(),
2739
+ type: exportingOptions.type,
2740
+ width: exportingOptions.width,
2741
+ scale: exportingOptions.scale,
2742
+ svg
2743
+ }, exportingOptions.fetchOptions);
2744
+ }
2745
+ }
2746
+ }
2747
+ /**
2748
+ * Handles the fallback to the export server when a local export fails.
2291
2749
  *
2292
- * @function Highcharts.Chart#exportChart
2750
+ * @private
2751
+ * @async
2752
+ * @function Highcharts.Exporting#fallbackToServer
2293
2753
  *
2294
2754
  * @param {Highcharts.ExportingOptions} exportingOptions
2295
- * Exporting options in addition to those defined in
2296
- * [exporting](https://api.highcharts.com/highcharts/exporting).
2755
+ * The exporting options.
2756
+ * @param {Error} err
2757
+ * The error that caused the local export to fail.
2297
2758
  *
2298
- * @param {Highcharts.Options} chartOptions
2299
- * Additional chart options for the exported chart. For example a
2300
- * different background color can be added here, or `dataLabels` for
2301
- * export only.
2759
+ * @return {Promise<void>}
2760
+ * A promise that resolves when the fallback process is complete.
2302
2761
  *
2303
2762
  * @requires modules/exporting
2304
2763
  */
2305
- function exportChart(exportingOptions, chartOptions) {
2306
- const svg = this.getSVGForExport(exportingOptions, chartOptions);
2307
- // Merge the options
2308
- exportingOptions = merge(this.options.exporting, exportingOptions);
2309
- // Do the post
2310
- Core_HttpUtilities.post(exportingOptions.url, {
2311
- filename: exportingOptions.filename ?
2312
- exportingOptions.filename.replace(/\//g, '-') :
2313
- this.getFilename(),
2314
- type: exportingOptions.type,
2315
- width: exportingOptions.width,
2316
- scale: exportingOptions.scale,
2317
- svg: svg
2318
- }, exportingOptions.fetchOptions);
2764
+ async fallbackToServer(exportingOptions, err) {
2765
+ if (exportingOptions.fallbackToExportServer === false) {
2766
+ if (exportingOptions.error) {
2767
+ exportingOptions.error(exportingOptions, err);
2768
+ }
2769
+ else {
2770
+ // Fallback disabled
2771
+ Exporting_error(28, true);
2772
+ }
2773
+ }
2774
+ else if (exportingOptions.type === 'application/pdf') {
2775
+ // The local must be false to fallback to server for PDF export
2776
+ exportingOptions.local = false;
2777
+ // Allow fallbacking to server only for PDFs that failed locally
2778
+ await this.exportChart(exportingOptions);
2779
+ }
2319
2780
  }
2320
2781
  /**
2321
2782
  * Return the unfiltered innerHTML of the chart container. Used as hook for
@@ -2323,38 +2784,43 @@ var Exporting;
2323
2784
  *
2324
2785
  * @see Chart#getSVG
2325
2786
  *
2326
- * @function Highcharts.Chart#getChartHTML
2787
+ * @function Highcharts.Exporting#getChartHTML
2788
+ *
2789
+ * @param {boolean} [applyStyleSheets]
2790
+ * whether or not to apply the style sheets.
2327
2791
  *
2328
2792
  * @return {string}
2329
2793
  * The unfiltered SVG of the chart.
2330
2794
  *
2331
2795
  * @requires modules/exporting
2332
2796
  */
2333
- function getChartHTML(applyStyleSheets) {
2797
+ getChartHTML(applyStyleSheets) {
2798
+ const chart = this.chart;
2334
2799
  if (applyStyleSheets) {
2335
2800
  this.inlineStyles();
2336
2801
  }
2337
2802
  this.resolveCSSVariables();
2338
- return this.container.innerHTML;
2803
+ return chart.container.innerHTML;
2339
2804
  }
2340
2805
  /**
2341
2806
  * Get the default file name used for exported charts. By default it creates
2342
2807
  * a file name based on the chart title.
2343
2808
  *
2344
- * @function Highcharts.Chart#getFilename
2809
+ * @function Highcharts.Exporting#getFilename
2345
2810
  *
2346
- * @return {string} A file name without extension.
2811
+ * @return {string}
2812
+ * A file name without extension.
2347
2813
  *
2348
2814
  * @requires modules/exporting
2349
2815
  */
2350
- function getFilename() {
2351
- const s = this.userOptions.title && this.userOptions.title.text;
2352
- let filename = this.options.exporting.filename;
2816
+ getFilename() {
2817
+ const titleText = this.chart.userOptions.title?.text;
2818
+ let filename = this.options.filename;
2353
2819
  if (filename) {
2354
2820
  return filename.replace(/\//g, '-');
2355
2821
  }
2356
- if (typeof s === 'string') {
2357
- filename = s
2822
+ if (typeof titleText === 'string') {
2823
+ filename = titleText
2358
2824
  .toLowerCase()
2359
2825
  .replace(/<\/?[^>]+(>|$)/g, '') // Strip HTML tags
2360
2826
  .replace(/[\s_]+/g, '-')
@@ -2373,45 +2839,45 @@ var Exporting;
2373
2839
  * Return an SVG representation of the chart.
2374
2840
  *
2375
2841
  * @sample highcharts/members/chart-getsvg/
2376
- * View the SVG from a button
2842
+ * View the SVG from a button
2377
2843
  *
2378
- * @function Highcharts.Chart#getSVG
2844
+ * @function Highcharts.Exporting#getSVG
2379
2845
  *
2380
2846
  * @param {Highcharts.Options} [chartOptions]
2381
- * Additional chart options for the generated SVG representation. For
2382
- * collections like `xAxis`, `yAxis` or `series`, the additional
2383
- * options is either merged in to the original item of the same
2384
- * `id`, or to the first item if a common id is not found.
2847
+ * Additional chart options for the generated SVG representation. For
2848
+ * collections like `xAxis`, `yAxis` or `series`, the additional options is
2849
+ * either merged in to the original item of the same `id`, or to the first
2850
+ * item if a common id is not found.
2385
2851
  *
2386
2852
  * @return {string}
2387
- * The SVG representation of the rendered chart.
2853
+ * The SVG representation of the rendered chart.
2388
2854
  *
2389
2855
  * @emits Highcharts.Chart#event:getSVG
2390
2856
  *
2391
2857
  * @requires modules/exporting
2392
2858
  */
2393
- function getSVG(chartOptions) {
2394
- const chart = this;
2859
+ getSVG(chartOptions) {
2860
+ const chart = this.chart;
2395
2861
  let svg, seriesOptions,
2396
2862
  // Copy the options and add extra options
2397
2863
  options = merge(chart.options, chartOptions);
2398
2864
  // Use userOptions to make the options chain in series right (#3881)
2399
- options.plotOptions = merge(chart.userOptions.plotOptions, chartOptions && chartOptions.plotOptions);
2865
+ options.plotOptions = merge(chart.userOptions.plotOptions, chartOptions?.plotOptions);
2400
2866
  // ... and likewise with time, avoid that undefined time properties are
2401
2867
  // merged over legacy global time options
2402
- options.time = merge(chart.userOptions.time, chartOptions && chartOptions.time);
2868
+ options.time = merge(chart.userOptions.time, chartOptions?.time);
2403
2869
  // Create a sandbox where a new chart will be generated
2404
- const sandbox = createElement('div', null, {
2870
+ const sandbox = createElement('div', void 0, {
2405
2871
  position: 'absolute',
2406
2872
  top: '-9999em',
2407
2873
  width: chart.chartWidth + 'px',
2408
2874
  height: chart.chartHeight + 'px'
2409
- }, doc.body);
2875
+ }, Exporting_doc.body);
2410
2876
  // Get the source size
2411
- const cssWidth = chart.renderTo.style.width, cssHeight = chart.renderTo.style.height, sourceWidth = options.exporting.sourceWidth ||
2877
+ const cssWidth = chart.renderTo.style.width, cssHeight = chart.renderTo.style.height, sourceWidth = options.exporting?.sourceWidth ||
2412
2878
  options.chart.width ||
2413
2879
  (/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||
2414
- (options.isGantt ? 800 : 600), sourceHeight = options.exporting.sourceHeight ||
2880
+ (options.isGantt ? 800 : 600), sourceHeight = options.exporting?.sourceHeight ||
2415
2881
  options.chart.height ||
2416
2882
  (/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||
2417
2883
  400;
@@ -2424,9 +2890,11 @@ var Exporting;
2424
2890
  width: sourceWidth,
2425
2891
  height: sourceHeight
2426
2892
  });
2427
- options.exporting.enabled = false; // Hide buttons in print
2893
+ if (options.exporting) {
2894
+ options.exporting.enabled = false; // Hide buttons in print
2895
+ }
2428
2896
  delete options.data; // #3004
2429
- // prepare for replicating the chart
2897
+ // Prepare for replicating the chart
2430
2898
  options.series = [];
2431
2899
  chart.series.forEach(function (serie) {
2432
2900
  seriesOptions = merge(serie.userOptions, {
@@ -2437,7 +2905,7 @@ var Exporting;
2437
2905
  });
2438
2906
  // Used for the navigator series that has its own option set
2439
2907
  if (!seriesOptions.isInternal) {
2440
- options.series.push(seriesOptions);
2908
+ options?.series?.push(seriesOptions);
2441
2909
  }
2442
2910
  });
2443
2911
  const colls = {};
@@ -2446,7 +2914,7 @@ var Exporting;
2446
2914
  if (!axis.userOptions.internalKey) { // #6444
2447
2915
  axis.userOptions.internalKey = uniqueKey();
2448
2916
  }
2449
- if (!axis.options.isInternal) {
2917
+ if (options && !axis.options.isInternal) {
2450
2918
  if (!colls[axis.coll]) {
2451
2919
  colls[axis.coll] = true;
2452
2920
  options[axis.coll] = [];
@@ -2469,10 +2937,10 @@ var Exporting;
2469
2937
  // Axis options and series options (#2022, #3900, #5982)
2470
2938
  if (chartOptions) {
2471
2939
  ['xAxis', 'yAxis', 'series'].forEach(function (coll) {
2472
- const collOptions = {};
2473
2940
  if (chartOptions[coll]) {
2474
- collOptions[coll] = chartOptions[coll];
2475
- chartCopy.update(collOptions);
2941
+ chartCopy.update({
2942
+ [coll]: chartOptions[coll]
2943
+ });
2476
2944
  }
2477
2945
  });
2478
2946
  }
@@ -2498,92 +2966,96 @@ var Exporting;
2498
2966
  }
2499
2967
  });
2500
2968
  // Get the SVG from the container's innerHTML
2501
- svg = chartCopy.getChartHTML(chart.styledMode ||
2502
- options.exporting?.applyStyleSheets);
2503
- Exporting_fireEvent(this, 'getSVG', { chartCopy: chartCopy });
2504
- svg = chart.sanitizeSVG(svg, options);
2969
+ svg = chartCopy.exporting?.getChartHTML(chart.styledMode ||
2970
+ options.exporting?.applyStyleSheets) || '';
2971
+ Exporting_fireEvent(chart, 'getSVG', { chartCopy: chartCopy });
2972
+ svg = Exporting.sanitizeSVG(svg, options);
2505
2973
  // Free up memory
2506
- options = null;
2974
+ options = void 0;
2507
2975
  chartCopy.destroy();
2508
2976
  Exporting_discardElement(sandbox);
2509
2977
  return svg;
2510
2978
  }
2511
2979
  /**
2980
+ * Gets the SVG for export using the getSVG function with additional
2981
+ * options.
2982
+ *
2512
2983
  * @private
2513
- * @function Highcharts.Chart#getSVGForExport
2984
+ * @function Highcharts.Exporting#getSVGForExport
2985
+ *
2986
+ * @param {Highcharts.ExportingOptions} [exportingOptions]
2987
+ * The exporting options.
2988
+ * @param {Highcharts.Options} [chartOptions]
2989
+ * Additional chart options for the exported chart.
2990
+ *
2991
+ * @return {string}
2992
+ * The SVG representation of the rendered chart.
2993
+ *
2994
+ * @requires modules/exporting
2514
2995
  */
2515
- function getSVGForExport(options, chartOptions) {
2516
- const chartExportingOptions = this.options.exporting;
2517
- return this.getSVG(merge({ chart: { borderRadius: 0 } }, chartExportingOptions.chartOptions, chartOptions, {
2996
+ getSVGForExport(exportingOptions, chartOptions) {
2997
+ const currentExportingOptions = this.options;
2998
+ return this.getSVG(merge({ chart: { borderRadius: 0 } }, currentExportingOptions.chartOptions, chartOptions, {
2518
2999
  exporting: {
2519
- sourceWidth: ((options && options.sourceWidth) ||
2520
- chartExportingOptions.sourceWidth),
2521
- sourceHeight: ((options && options.sourceHeight) ||
2522
- chartExportingOptions.sourceHeight)
3000
+ sourceWidth: (exportingOptions?.sourceWidth ||
3001
+ currentExportingOptions.sourceWidth),
3002
+ sourceHeight: (exportingOptions?.sourceHeight ||
3003
+ currentExportingOptions.sourceHeight)
2523
3004
  }
2524
3005
  }));
2525
3006
  }
2526
3007
  /**
2527
- * Make hyphenated property names out of camelCase
2528
- * @private
2529
- * @param {string} prop
2530
- * Property name in camelCase
2531
- * @return {string}
2532
- * Hyphenated property name
2533
- */
2534
- function hyphenate(prop) {
2535
- return prop.replace(/[A-Z]/g, function (match) {
2536
- return '-' + match.toLowerCase();
2537
- });
2538
- }
2539
- /**
2540
- * Analyze inherited styles from stylesheets and add them inline
3008
+ * Analyze inherited styles from stylesheets and add them inline.
2541
3009
  *
2542
3010
  * @private
2543
- * @function Highcharts.Chart#inlineStyles
3011
+ * @function Highcharts.Exporting#inlineStyles
2544
3012
  *
2545
3013
  * @todo What are the border styles for text about? In general, text has a
2546
- * lot of properties.
3014
+ * lot of properties.
2547
3015
  *
2548
3016
  * @todo Make it work with IE9 and IE10.
2549
3017
  *
2550
3018
  * @requires modules/exporting
2551
3019
  */
2552
- function inlineStyles() {
2553
- const denylist = inlineDenylist, allowlist = Exporting.inlineAllowlist, // For IE
3020
+ inlineStyles() {
3021
+ const denylist = Exporting.inlineDenylist, allowlist = Exporting.inlineAllowlist, // For IE
2554
3022
  defaultStyles = {};
2555
3023
  let dummySVG;
2556
3024
  // Create an iframe where we read default styles without pollution from
2557
3025
  // this body
2558
- const iframe = doc.createElement('iframe');
2559
- css(iframe, {
3026
+ const iframe = createElement('iframe', void 0, {
2560
3027
  width: '1px',
2561
3028
  height: '1px',
2562
3029
  visibility: 'hidden'
2563
- });
2564
- doc.body.appendChild(iframe);
2565
- const iframeDoc = (iframe.contentWindow && iframe.contentWindow.document);
3030
+ }, Exporting_doc.body);
3031
+ const iframeDoc = iframe.contentWindow?.document;
2566
3032
  if (iframeDoc) {
2567
3033
  iframeDoc.body.appendChild(iframeDoc.createElementNS(SVG_NS, 'svg'));
2568
3034
  }
2569
3035
  /**
2570
- * Call this on all elements and recurse to children
3036
+ * Call this on all elements and recurse to children.
3037
+ *
2571
3038
  * @private
2572
- * @param {Highcharts.HTMLDOMElement} node
2573
- * Element child
2574
- */
3039
+ * @function recurse
3040
+ *
3041
+ * @param {Highcharts.HTMLDOMElement | Highcharts.SVGSVGElement} node
3042
+ * Element child.
3043
+ */
2575
3044
  function recurse(node) {
2576
3045
  const filteredStyles = {};
2577
3046
  let styles, parentStyles, dummy, denylisted, allowlisted, i;
2578
3047
  /**
2579
3048
  * Check computed styles and whether they are in the allow/denylist
2580
3049
  * for styles or attributes.
3050
+ *
2581
3051
  * @private
2582
- * @param {string} val
2583
- * Style value
3052
+ * @function filterStyles
3053
+ *
3054
+ * @param {string | number | Highcharts.GradientColor | Highcharts.PatternObject | undefined} val
3055
+ * Style value.
2584
3056
  * @param {string} prop
2585
- * Style property name
2586
- */
3057
+ * Style property name.
3058
+ */
2587
3059
  function filterStyles(val, prop) {
2588
3060
  // Check against allowlist & denylist
2589
3061
  denylisted = allowlisted = false;
@@ -2614,12 +3086,12 @@ var Exporting;
2614
3086
  // against parent (#7687).
2615
3087
  if ((parentStyles[prop] !== val ||
2616
3088
  node.nodeName === 'svg') &&
2617
- defaultStyles[node.nodeName][prop] !== val) {
3089
+ (defaultStyles[node.nodeName])[prop] !== val) {
2618
3090
  // Attributes
2619
- if (!inlineToAttributes ||
2620
- inlineToAttributes.indexOf(prop) !== -1) {
3091
+ if (!Exporting.inlineToAttributes ||
3092
+ Exporting.inlineToAttributes.indexOf(prop) !== -1) {
2621
3093
  if (val) {
2622
- node.setAttribute(hyphenate(prop), val);
3094
+ node.setAttribute(Exporting.hyphenate(prop), val);
2623
3095
  }
2624
3096
  // Styles
2625
3097
  }
@@ -2631,8 +3103,9 @@ var Exporting;
2631
3103
  }
2632
3104
  if (iframeDoc &&
2633
3105
  node.nodeType === 1 &&
2634
- unstyledElements.indexOf(node.nodeName) === -1) {
2635
- styles = Exporting_win.getComputedStyle(node, null);
3106
+ Exporting.unstyledElements.indexOf(node.nodeName) === -1) {
3107
+ styles =
3108
+ Exporting_win.getComputedStyle(node, null);
2636
3109
  parentStyles = node.nodeName === 'svg' ?
2637
3110
  {} :
2638
3111
  Exporting_win.getComputedStyle(node.parentNode, null);
@@ -2646,7 +3119,8 @@ var Exporting;
2646
3119
  doc.body.appendChild(dummySVG);
2647
3120
  }
2648
3121
  */
2649
- dummySVG = iframeDoc.getElementsByTagName('svg')[0];
3122
+ dummySVG =
3123
+ iframeDoc.getElementsByTagName('svg')[0];
2650
3124
  dummy = iframeDoc.createElementNS(node.namespaceURI, node.nodeName);
2651
3125
  dummySVG.appendChild(dummy);
2652
3126
  // Get the defaults into a standard object (simple merge
@@ -2671,9 +3145,9 @@ var Exporting;
2671
3145
  for (const p in styles) {
2672
3146
  if (
2673
3147
  // Some browsers put lots of styles on the prototype...
2674
- (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isFirefox ||
2675
- (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS ||
2676
- (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari || // #16902
3148
+ isFirefox ||
3149
+ isMS ||
3150
+ Exporting_isSafari || // #16902
2677
3151
  // ... Chrome puts them on the instance
2678
3152
  Object.hasOwnProperty.call(styles, p)) {
2679
3153
  filterStyles(styles[p], p);
@@ -2693,43 +3167,140 @@ var Exporting;
2693
3167
  }
2694
3168
  }
2695
3169
  /**
2696
- * Remove the dummy objects used to get defaults
3170
+ * Remove the dummy objects used to get defaults.
3171
+ *
2697
3172
  * @private
3173
+ * @function tearDown
2698
3174
  */
2699
3175
  function tearDown() {
2700
3176
  dummySVG.parentNode.removeChild(dummySVG);
2701
3177
  // Remove trash from DOM that stayed after each exporting
2702
3178
  iframe.parentNode.removeChild(iframe);
2703
3179
  }
2704
- recurse(this.container.querySelector('svg'));
3180
+ recurse(this.chart.container.querySelector('svg'));
2705
3181
  tearDown();
2706
3182
  }
2707
3183
  /**
2708
- * Resolve CSS variables into hex colors
3184
+ * Get SVG of chart prepared for client side export. This converts embedded
3185
+ * images in the SVG to data URIs. It requires the regular exporting module.
3186
+ * The options and chartOptions arguments are passed to the getSVGForExport
3187
+ * function.
3188
+ *
3189
+ * @private
3190
+ * @async
3191
+ * @function Highcharts.Exporting#localExport
3192
+ *
3193
+ * @param {Highcharts.ExportingOptions} exportingOptions
3194
+ * The exporting options.
3195
+ * @param {Highcharts.Options} chartOptions
3196
+ * Additional chart options for the exported chart.
3197
+ *
3198
+ * @return {Promise<string>}
3199
+ * The sanitized SVG.
3200
+ *
3201
+ * @requires modules/exporting
2709
3202
  */
2710
- function resolveCSSVariables() {
2711
- const svgElements = this.container.querySelectorAll('*'), colorAttributes = ['color', 'fill', 'stop-color', 'stroke'];
2712
- Array.from(svgElements).forEach((element) => {
2713
- colorAttributes.forEach((attr) => {
2714
- const attrValue = element.getAttribute(attr);
2715
- if (attrValue?.includes('var(')) {
2716
- element.setAttribute(attr, getComputedStyle(element).getPropertyValue(attr));
2717
- }
3203
+ async localExport(exportingOptions, chartOptions) {
3204
+ const chart = this.chart, exporting = this,
3205
+ // After grabbing the SVG of the chart's copy container we need
3206
+ // to do sanitation on the SVG
3207
+ sanitize = (svg) => Exporting.sanitizeSVG(svg || '', chartCopyOptions),
3208
+ // Return true if the SVG contains images with external data.
3209
+ // With the boost module there are `image` elements with encoded
3210
+ // PNGs, these are supported by svg2pdf and should pass (#10243)
3211
+ hasExternalImages = function () {
3212
+ return [].some.call(chart.container.getElementsByTagName('image'), function (image) {
3213
+ const href = image.getAttribute('href');
3214
+ return (href !== '' &&
3215
+ typeof href === 'string' &&
3216
+ href.indexOf('data:') !== 0);
2718
3217
  });
3218
+ };
3219
+ let chartCopyContainer, chartCopyOptions, href = null, images;
3220
+ // If we are on IE and in styled mode, add an allowlist to the
3221
+ // renderer for inline styles that we want to pass through. There
3222
+ // are so many styles by default in IE that we don't want to
3223
+ // denylist them all
3224
+ if (isMS && chart.styledMode && !Exporting.inlineAllowlist.length) {
3225
+ Exporting.inlineAllowlist.push(/^blockSize/, /^border/, /^caretColor/, /^color/, /^columnRule/, /^columnRuleColor/, /^cssFloat/, /^cursor/, /^fill$/, /^fillOpacity/, /^font/, /^inlineSize/, /^length/, /^lineHeight/, /^opacity/, /^outline/, /^parentRule/, /^rx$/, /^ry$/, /^stroke/, /^textAlign/, /^textAnchor/, /^textDecoration/, /^transform/, /^vectorEffect/, /^visibility/, /^x$/, /^y$/);
3226
+ }
3227
+ // Always fall back on:
3228
+ // - MS browsers: Embedded images JPEG/PNG, or any PDF
3229
+ // - Embedded images and PDF
3230
+ if ((isMS &&
3231
+ (exportingOptions.type === 'application/pdf' ||
3232
+ chart.container.getElementsByTagName('image').length &&
3233
+ exportingOptions.type !== 'image/svg+xml')) || (exportingOptions.type === 'application/pdf' &&
3234
+ hasExternalImages())) {
3235
+ await this.fallbackToServer(exportingOptions, new Error('Image type not supported for this chart/browser.'));
3236
+ return;
3237
+ }
3238
+ // Hook into getSVG to get a copy of the chart copy's container (#8273)
3239
+ const unbindGetSVG = Exporting_addEvent(chart, 'getSVG', (e) => {
3240
+ chartCopyOptions = e.chartCopy.options;
3241
+ chartCopyContainer =
3242
+ e.chartCopy.container.cloneNode(true);
3243
+ images = chartCopyContainer && chartCopyContainer
3244
+ .getElementsByTagName('image') || [];
2719
3245
  });
3246
+ try {
3247
+ // Trigger hook to get chart copy
3248
+ this.getSVGForExport(exportingOptions, chartOptions);
3249
+ // Get the static array
3250
+ const imagesArray = images ? Array.from(images) : [];
3251
+ // Go through the images we want to embed
3252
+ for (const image of imagesArray) {
3253
+ href = image.getAttributeNS('http://www.w3.org/1999/xlink', 'href');
3254
+ if (href) {
3255
+ Exporting.objectURLRevoke = false;
3256
+ const dataURL = await Exporting.imageToDataURL(href, exportingOptions?.scale || 1, exportingOptions?.type || 'image/png');
3257
+ // Change image href in chart copy
3258
+ image.setAttributeNS('http://www.w3.org/1999/xlink', 'href', dataURL);
3259
+ // Hidden, boosted series have blank href (#10243)
3260
+ }
3261
+ else {
3262
+ image.parentNode.removeChild(image);
3263
+ }
3264
+ }
3265
+ // Sanitize the SVG
3266
+ const sanitizedSVG = sanitize(chartCopyContainer?.innerHTML);
3267
+ // Use SVG of chart copy. If SVG contains foreignObjects PDF fails
3268
+ // in all browsers and all exports except SVG will fail in IE, as
3269
+ // both CanVG and svg2pdf choke on this. Gracefully fall back.
3270
+ if (sanitizedSVG.indexOf('<foreignObject') > -1 &&
3271
+ exportingOptions.type !== 'image/svg+xml' &&
3272
+ (isMS ||
3273
+ exportingOptions.type === 'application/pdf')) {
3274
+ throw new Error('Image type not supported for charts with embedded HTML');
3275
+ }
3276
+ else {
3277
+ // Trigger SVG download
3278
+ await exporting.downloadSVG(sanitizedSVG, extend({ filename: exporting.getFilename() }, exportingOptions));
3279
+ }
3280
+ // Return the sanitized SVG
3281
+ return sanitizedSVG;
3282
+ }
3283
+ catch (error) {
3284
+ await this.fallbackToServer(exportingOptions, error);
3285
+ }
3286
+ finally {
3287
+ // Clean up
3288
+ unbindGetSVG();
3289
+ }
2720
3290
  }
2721
3291
  /**
2722
3292
  * Move the chart container(s) to another div.
2723
3293
  *
2724
- * @function Highcharts#moveContainers
2725
- *
2726
3294
  * @private
3295
+ * @function Highcharts.Exporting#moveContainers
2727
3296
  *
2728
3297
  * @param {Highcharts.HTMLDOMElement} moveTo
2729
- * Move target
3298
+ * Move target.
3299
+ *
3300
+ * @requires modules/exporting
2730
3301
  */
2731
- function moveContainers(moveTo) {
2732
- const { scrollablePlotArea } = this;
3302
+ moveContainers(moveTo) {
3303
+ const chart = this.chart, { scrollablePlotArea } = chart;
2733
3304
  (
2734
3305
  // When scrollablePlotArea is active (#9533)
2735
3306
  scrollablePlotArea ?
@@ -2737,95 +3308,35 @@ var Exporting;
2737
3308
  scrollablePlotArea.fixedDiv,
2738
3309
  scrollablePlotArea.scrollingContainer
2739
3310
  ] :
2740
- [this.container]).forEach(function (div) {
3311
+ [chart.container]).forEach(function (div) {
2741
3312
  moveTo.appendChild(div);
2742
3313
  });
2743
3314
  }
2744
3315
  /**
2745
- * Add update methods to handle chart.update and chart.exporting.update and
2746
- * chart.navigation.update. These must be added to the chart instance rather
2747
- * than the Chart prototype in order to use the chart instance inside the
2748
- * update function.
2749
- * @private
2750
- */
2751
- function onChartInit() {
2752
- const chart = this,
2753
- /**
2754
- * @private
2755
- * @param {"exporting"|"navigation"} prop
2756
- * Property name in option root
2757
- * @param {Highcharts.ExportingOptions|Highcharts.NavigationOptions} options
2758
- * Options to update
2759
- * @param {boolean} [redraw=true]
2760
- * Whether to redraw
2761
- */
2762
- update = (prop, options, redraw) => {
2763
- chart.isDirtyExporting = true;
2764
- merge(true, chart.options[prop], options);
2765
- if (pick(redraw, true)) {
2766
- chart.redraw();
2767
- }
2768
- };
2769
- chart.exporting = {
2770
- update: function (options, redraw) {
2771
- update('exporting', options, redraw);
2772
- }
2773
- };
2774
- // Register update() method for navigation. Cannot be set the same way
2775
- // as for exporting, because navigation options are shared with bindings
2776
- // which has separate update() logic.
2777
- Chart_ChartNavigationComposition
2778
- .compose(chart).navigation
2779
- .addUpdate((options, redraw) => {
2780
- update('navigation', options, redraw);
2781
- });
2782
- }
2783
- /**
2784
- * On layout of titles (title, subtitle and caption), adjust the `alignTo``
2785
- * box to avoid the context menu button.
2786
- * @private
2787
- */
2788
- function onChartLayOutTitle({ alignTo, key, textPxLength }) {
2789
- const exportingOptions = this.options.exporting, { align, buttonSpacing = 0, verticalAlign, width = 0 } = merge(this.options.navigation?.buttonOptions, exportingOptions?.buttons?.contextButton), space = alignTo.width - textPxLength, widthAdjust = width + buttonSpacing;
2790
- if ((exportingOptions?.enabled ?? true) &&
2791
- key === 'title' &&
2792
- align === 'right' &&
2793
- verticalAlign === 'top') {
2794
- if (space < 2 * widthAdjust) {
2795
- if (space < widthAdjust) {
2796
- alignTo.width -= widthAdjust;
2797
- }
2798
- else if (this.title?.alignValue !== 'left') {
2799
- alignTo.x -= widthAdjust - space / 2;
2800
- }
2801
- }
2802
- }
2803
- }
2804
- /**
2805
- * Exporting module required. Clears away other elements in the page and
2806
- * prints the chart as it is displayed. By default, when the exporting
2807
- * module is enabled, a context button with a drop down menu in the upper
2808
- * right corner accesses this function.
3316
+ * Clears away other elements in the page and prints the chart as it is
3317
+ * displayed. By default, when the exporting module is enabled, a context
3318
+ * button with a drop down menu in the upper right corner accesses this
3319
+ * function.
2809
3320
  *
2810
3321
  * @sample highcharts/members/chart-print/
2811
- * Print from a HTML button
2812
- *
2813
- * @function Highcharts.Chart#print
3322
+ * Print from a HTML button
2814
3323
  *
3324
+ * @function Highcharts.Exporting#print
2815
3325
  *
2816
3326
  * @emits Highcharts.Chart#event:beforePrint
2817
3327
  * @emits Highcharts.Chart#event:afterPrint
2818
3328
  *
2819
3329
  * @requires modules/exporting
2820
3330
  */
2821
- function print() {
2822
- const chart = this;
2823
- if (chart.isPrinting) { // Block the button while in printing mode
3331
+ print() {
3332
+ const chart = this.chart;
3333
+ // Block the button while in printing mode
3334
+ if (this.isPrinting) {
2824
3335
  return;
2825
3336
  }
2826
- printingChart = chart;
2827
- if (!(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari) {
2828
- chart.beforePrint();
3337
+ Exporting.printingChart = chart;
3338
+ if (!Exporting_isSafari) {
3339
+ this.beforePrint();
2829
3340
  }
2830
3341
  // Give the browser time to draw WebGL content, an issue that randomly
2831
3342
  // appears (at least) in Chrome ~67 on the Mac (#8708).
@@ -2833,86 +3344,310 @@ var Exporting;
2833
3344
  Exporting_win.focus(); // #1510
2834
3345
  Exporting_win.print();
2835
3346
  // Allow the browser to prepare before reverting
2836
- if (!(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isSafari) {
3347
+ if (!Exporting_isSafari) {
2837
3348
  setTimeout(() => {
2838
- chart.afterPrint();
3349
+ chart.exporting?.afterPrint();
2839
3350
  }, 1000);
2840
3351
  }
2841
3352
  }, 1);
2842
3353
  }
2843
3354
  /**
2844
- * Add the buttons on chart load
3355
+ * Add the buttons on chart load.
3356
+ *
2845
3357
  * @private
2846
- * @function Highcharts.Chart#renderExporting
3358
+ * @function Highcharts.Exporting#render
3359
+ *
2847
3360
  * @requires modules/exporting
2848
3361
  */
2849
- function renderExporting() {
2850
- const chart = this, exportingOptions = chart.options.exporting, buttons = exportingOptions.buttons, isDirty = chart.isDirtyExporting || !chart.exportSVGElements;
2851
- chart.buttonOffset = 0;
2852
- if (chart.isDirtyExporting) {
2853
- chart.destroyExport();
2854
- }
2855
- if (isDirty && exportingOptions.enabled !== false) {
2856
- chart.exportEvents = [];
2857
- chart.exportingGroup = chart.exportingGroup ||
2858
- chart.renderer.g('exporting-group').attr({
2859
- zIndex: 3 // #4955, // #8392
2860
- }).add();
2861
- Exporting_objectEach(buttons, function (button) {
2862
- chart.addButton(button);
3362
+ render() {
3363
+ const exporting = this, { chart, options } = exporting, isDirty = exporting?.isDirty || !exporting?.svgElements.length;
3364
+ exporting.buttonOffset = 0;
3365
+ if (exporting.isDirty) {
3366
+ exporting.destroy();
3367
+ }
3368
+ if (isDirty && options.enabled !== false) {
3369
+ exporting.events = [];
3370
+ exporting.group || (exporting.group = chart.renderer.g('exporting-group').attr({
3371
+ zIndex: 3 // #4955, // #8392
3372
+ }).add());
3373
+ Exporting_objectEach(options?.buttons, function (button) {
3374
+ exporting.addButton(button);
2863
3375
  });
2864
- chart.isDirtyExporting = false;
3376
+ exporting.isDirty = false;
2865
3377
  }
2866
3378
  }
2867
3379
  /**
2868
- * Exporting module only. A collection of fixes on the produced SVG to
2869
- * account for expand properties, browser bugs.
2870
- * Returns a cleaned SVG.
3380
+ * Resolve CSS variables into hex colors.
2871
3381
  *
2872
3382
  * @private
2873
- * @function Highcharts.Chart#sanitizeSVG
2874
- * @param {string} svg
2875
- * SVG code to sanitize
2876
- * @param {Highcharts.Options} options
2877
- * Chart options to apply
2878
- * @return {string}
2879
- * Sanitized SVG code
3383
+ * @function Highcharts.Exporting#resolveCSSVariables
3384
+ *
2880
3385
  * @requires modules/exporting
2881
3386
  */
2882
- function sanitizeSVG(svg, options) {
2883
- const split = svg.indexOf('</svg>') + 6, useForeignObject = svg.indexOf('<foreignObject') > -1;
2884
- let html = svg.substr(split);
2885
- // Remove any HTML added to the container after the SVG (#894, #9087)
2886
- svg = svg.substr(0, split);
2887
- if (useForeignObject) {
2888
- // Some tags needs to be closed in xhtml (#13726)
2889
- svg = svg.replace(/(<(?:img|br).*?(?=\>))>/g, '$1 />');
2890
- // Move HTML into a foreignObject
3387
+ resolveCSSVariables() {
3388
+ Array.from(this.chart.container.querySelectorAll('*')).forEach((element) => {
3389
+ ['color', 'fill', 'stop-color', 'stroke'].forEach((prop) => {
3390
+ const attrValue = element.getAttribute(prop);
3391
+ if (attrValue?.includes('var(')) {
3392
+ element.setAttribute(prop, getComputedStyle(element).getPropertyValue(prop));
3393
+ }
3394
+ const styleValue = element.style?.[prop];
3395
+ if (styleValue?.includes('var(')) {
3396
+ element.style[prop] =
3397
+ getComputedStyle(element).getPropertyValue(prop);
3398
+ }
3399
+ });
3400
+ });
3401
+ }
3402
+ /**
3403
+ * Updates the exporting object with the provided exporting options.
3404
+ *
3405
+ * @private
3406
+ * @function Highcharts.Exporting#update
3407
+ *
3408
+ * @param {Highcharts.ExportingOptions} exportingOptions
3409
+ * The exporting options to update with.
3410
+ * @param {boolean} [redraw=true]
3411
+ * Whether to redraw or not.
3412
+ *
3413
+ * @requires modules/exporting
3414
+ */
3415
+ update(exportingOptions, redraw) {
3416
+ this.isDirty = true;
3417
+ merge(true, this.options, exportingOptions);
3418
+ if (pick(redraw, true)) {
3419
+ this.chart.redraw();
2891
3420
  }
2892
- else if (html && options?.exporting?.allowHTML) {
2893
- html = '<foreignObject x="0" y="0" ' +
2894
- 'width="' + options.chart.width + '" ' +
2895
- 'height="' + options.chart.height + '">' +
2896
- '<body xmlns="http://www.w3.org/1999/xhtml">' +
2897
- // Some tags needs to be closed in xhtml (#13726)
2898
- html.replace(/(<(?:img|br).*?(?=\>))>/g, '$1 />') +
2899
- '</body>' +
2900
- '</foreignObject>';
2901
- svg = svg.replace('</svg>', html + '</svg>');
3421
+ }
3422
+ }
3423
+ /* *
3424
+ *
3425
+ * Static Properties
3426
+ *
3427
+ * */
3428
+ Exporting.inlineAllowlist = [];
3429
+ // These CSS properties are not inlined. Remember camelCase.
3430
+ Exporting.inlineDenylist = [
3431
+ /-/, // In Firefox, both hyphened and camelCased names are listed
3432
+ /^(clipPath|cssText|d|height|width)$/, // Full words
3433
+ /^font$/, // More specific props are set
3434
+ /[lL]ogical(Width|Height)$/,
3435
+ /^parentRule$/,
3436
+ /^(cssRules|ownerRules)$/, // #19516 read-only properties
3437
+ /perspective/,
3438
+ /TapHighlightColor/,
3439
+ /^transition/,
3440
+ /^length$/, // #7700
3441
+ /^\d+$/ // #17538
3442
+ ];
3443
+ // These ones are translated to attributes rather than styles
3444
+ Exporting.inlineToAttributes = [
3445
+ 'fill',
3446
+ 'stroke',
3447
+ 'strokeLinecap',
3448
+ 'strokeLinejoin',
3449
+ 'strokeWidth',
3450
+ 'textAnchor',
3451
+ 'x',
3452
+ 'y'
3453
+ ];
3454
+ // Milliseconds to defer image load event handlers to offset IE bug
3455
+ Exporting.loadEventDeferDelay = isMS ? 150 : 0;
3456
+ Exporting.unstyledElements = [
3457
+ 'clipPath',
3458
+ 'defs',
3459
+ 'desc'
3460
+ ];
3461
+ /* *
3462
+ *
3463
+ * Class Namespace
3464
+ *
3465
+ * */
3466
+ (function (Exporting) {
3467
+ /* *
3468
+ *
3469
+ * Declarations
3470
+ *
3471
+ * */
3472
+ /* *
3473
+ *
3474
+ * Functions
3475
+ *
3476
+ * */
3477
+ /**
3478
+ * Composition function.
3479
+ *
3480
+ * @private
3481
+ * @function Highcharts.Exporting#compose
3482
+ *
3483
+ * @param {ChartClass} ChartClass
3484
+ * Chart class.
3485
+ * @param {SVGRendererClass} SVGRendererClass
3486
+ * SVGRenderer class.
3487
+ *
3488
+ * @requires modules/exporting
3489
+ */
3490
+ function compose(ChartClass, SVGRendererClass) {
3491
+ Exporting_ExportingSymbols.compose(SVGRendererClass);
3492
+ Exporting_Fullscreen.compose(ChartClass);
3493
+ // Check the composition registry for the Exporting
3494
+ if (!Exporting_pushUnique(Exporting_composed, 'Exporting')) {
3495
+ return;
3496
+ }
3497
+ // Adding wrappers for the deprecated functions
3498
+ extend((highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default()).prototype, {
3499
+ exportChart: async function (exportingOptions, chartOptions) {
3500
+ await this.exporting?.exportChart(exportingOptions, chartOptions);
3501
+ return;
3502
+ },
3503
+ getChartHTML: function (applyStyleSheets) {
3504
+ return this.exporting?.getChartHTML(applyStyleSheets);
3505
+ },
3506
+ getFilename: function () {
3507
+ return this.exporting?.getFilename();
3508
+ },
3509
+ getSVG: function (chartOptions) {
3510
+ return this.exporting?.getSVG(chartOptions);
3511
+ },
3512
+ print: function () {
3513
+ return this.exporting?.print();
3514
+ }
3515
+ });
3516
+ ChartClass.prototype.callbacks.push(chartCallback);
3517
+ Exporting_addEvent(ChartClass, 'afterInit', onChartAfterInit);
3518
+ Exporting_addEvent(ChartClass, 'layOutTitle', onChartLayOutTitle);
3519
+ if (Exporting_isSafari) {
3520
+ Exporting_win.matchMedia('print').addListener(function (mqlEvent) {
3521
+ if (!Exporting.printingChart) {
3522
+ return void 0;
3523
+ }
3524
+ if (mqlEvent.matches) {
3525
+ Exporting.printingChart.exporting?.beforePrint();
3526
+ }
3527
+ else {
3528
+ Exporting.printingChart.exporting?.afterPrint();
3529
+ }
3530
+ });
3531
+ }
3532
+ // Update with defaults of the exporting module
3533
+ setOptions(Exporting_ExportingDefaults);
3534
+ }
3535
+ Exporting.compose = compose;
3536
+ /**
3537
+ * Function that is added to the callbacks array that runs on chart load.
3538
+ *
3539
+ * @private
3540
+ * @function Highcharts#chartCallback
3541
+ *
3542
+ * @param {Highcharts.Chart} chart
3543
+ * The chart instance.
3544
+ *
3545
+ * @requires modules/exporting
3546
+ */
3547
+ function chartCallback(chart) {
3548
+ const exporting = chart.exporting;
3549
+ if (exporting) {
3550
+ exporting.render();
3551
+ // Add the exporting buttons on each chart redraw
3552
+ Exporting_addEvent(chart, 'redraw', function () {
3553
+ this.exporting?.render();
3554
+ });
3555
+ // Destroy the export elements at chart destroy
3556
+ Exporting_addEvent(chart, 'destroy', function () {
3557
+ this.exporting?.destroy();
3558
+ });
3559
+ }
3560
+ // Uncomment this to see a button directly below the chart, for quick
3561
+ // testing of export
3562
+ // let button, viewImage, viewSource;
3563
+ // if (!chart.renderer.forExport) {
3564
+ // viewImage = function (): void {
3565
+ // const div = doc.createElement('div');
3566
+ // div.innerHTML = chart.exporting?.getSVGForExport() || '';
3567
+ // chart.renderTo.parentNode.appendChild(div);
3568
+ // };
3569
+ // viewSource = function (): void {
3570
+ // const pre = doc.createElement('pre');
3571
+ // pre.innerHTML = chart.exporting?.getSVGForExport()
3572
+ // .replace(/</g, '\n&lt;')
3573
+ // .replace(/>/g, '&gt;') || '';
3574
+ // chart.renderTo.parentNode.appendChild(pre);
3575
+ // };
3576
+ // viewImage();
3577
+ // // View SVG Image
3578
+ // button = doc.createElement('button');
3579
+ // button.innerHTML = 'View SVG Image';
3580
+ // chart.renderTo.parentNode.appendChild(button);
3581
+ // button.onclick = viewImage;
3582
+ // // View SVG Source
3583
+ // button = doc.createElement('button');
3584
+ // button.innerHTML = 'View SVG Source';
3585
+ // chart.renderTo.parentNode.appendChild(button);
3586
+ // button.onclick = viewSource;
3587
+ // }
3588
+ }
3589
+ /**
3590
+ * Add update methods to handle chart.update and chart.exporting.update and
3591
+ * chart.navigation.update. These must be added to the chart instance rather
3592
+ * than the Chart prototype in order to use the chart instance inside the
3593
+ * update function.
3594
+ *
3595
+ * @private
3596
+ * @function Highcharts#onChartAfterInit
3597
+ *
3598
+ * @requires modules/exporting
3599
+ */
3600
+ function onChartAfterInit() {
3601
+ const chart = this;
3602
+ // Create the exporting instance
3603
+ if (chart.options.exporting) {
3604
+ /**
3605
+ * Exporting object.
3606
+ *
3607
+ * @name Highcharts.Chart#exporting
3608
+ * @type {Highcharts.Exporting}
3609
+ */
3610
+ chart.exporting = new Exporting(chart, chart.options.exporting);
3611
+ // Register update() method for navigation. Cannot be set the same
3612
+ // way as for exporting, because navigation options are shared with
3613
+ // bindings which has separate update() logic.
3614
+ Chart_ChartNavigationComposition
3615
+ .compose(chart).navigation
3616
+ .addUpdate((options, redraw) => {
3617
+ if (chart.exporting) {
3618
+ chart.exporting.isDirty = true;
3619
+ merge(true, chart.options.navigation, options);
3620
+ if (pick(redraw, true)) {
3621
+ chart.redraw();
3622
+ }
3623
+ }
3624
+ });
3625
+ }
3626
+ }
3627
+ /**
3628
+ * On layout of titles (title, subtitle and caption), adjust the `alignTo`
3629
+ * box to avoid the context menu button.
3630
+ *
3631
+ * @private
3632
+ * @function Highcharts#onChartLayOutTitle
3633
+ *
3634
+ * @requires modules/exporting
3635
+ */
3636
+ function onChartLayOutTitle({ alignTo, key, textPxLength }) {
3637
+ const exportingOptions = this.options.exporting, { align, buttonSpacing = 0, verticalAlign, width = 0 } = merge(this.options.navigation?.buttonOptions, exportingOptions?.buttons?.contextButton), space = alignTo.width - textPxLength, widthAdjust = width + buttonSpacing;
3638
+ if ((exportingOptions?.enabled ?? true) &&
3639
+ key === 'title' &&
3640
+ align === 'right' &&
3641
+ verticalAlign === 'top') {
3642
+ if (space < 2 * widthAdjust) {
3643
+ if (space < widthAdjust) {
3644
+ alignTo.width -= widthAdjust;
3645
+ }
3646
+ else if (this.title?.alignValue !== 'left') {
3647
+ alignTo.x -= widthAdjust - space / 2;
3648
+ }
3649
+ }
2902
3650
  }
2903
- svg = svg
2904
- .replace(/zIndex="[^"]+"/g, '')
2905
- .replace(/symbolName="[^"]+"/g, '')
2906
- .replace(/jQuery\d+="[^"]+"/g, '')
2907
- .replace(/url\(("|&quot;)(.*?)("|&quot;)\;?\)/g, 'url($2)')
2908
- .replace(/url\([^#]+#/g, 'url(#')
2909
- .replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
2910
- .replace(/ (NS\d+\:)?href=/g, ' xlink:href=') // #3567
2911
- .replace(/\n+/g, ' ')
2912
- // Replace HTML entities, issue #347
2913
- .replace(/&nbsp;/g, '\u00A0') // No-break space
2914
- .replace(/&shy;/g, '\u00AD'); // Soft hyphen
2915
- return svg;
2916
3651
  }
2917
3652
  })(Exporting || (Exporting = {}));
2918
3653
  /* *
@@ -2933,10 +3668,9 @@ var Exporting;
2933
3668
  * @callback Highcharts.ExportingAfterPrintCallbackFunction
2934
3669
  *
2935
3670
  * @param {Highcharts.Chart} this
2936
- * The chart on which the event occurred.
2937
- *
3671
+ * The chart on which the event occurred.
2938
3672
  * @param {global.Event} event
2939
- * The event that occurred.
3673
+ * The event that occurred.
2940
3674
  */
2941
3675
  /**
2942
3676
  * Gets fired before a chart is printed through the context menu item or the
@@ -2945,10 +3679,9 @@ var Exporting;
2945
3679
  * @callback Highcharts.ExportingBeforePrintCallbackFunction
2946
3680
  *
2947
3681
  * @param {Highcharts.Chart} this
2948
- * The chart on which the event occurred.
2949
- *
3682
+ * The chart on which the event occurred.
2950
3683
  * @param {global.Event} event
2951
- * The event that occurred.
3684
+ * The event that occurred.
2952
3685
  */
2953
3686
  /**
2954
3687
  * Function to call if the offline-exporting module fails to export a chart on
@@ -2957,10 +3690,9 @@ var Exporting;
2957
3690
  * @callback Highcharts.ExportingErrorCallbackFunction
2958
3691
  *
2959
3692
  * @param {Highcharts.ExportingOptions} options
2960
- * The exporting options.
2961
- *
3693
+ * The exporting options.
2962
3694
  * @param {global.Error} err
2963
- * The error from the module.
3695
+ * The error from the module.
2964
3696
  */
2965
3697
  /**
2966
3698
  * Definition for a menu item in the context menu.
@@ -2970,27 +3702,27 @@ var Exporting;
2970
3702
  * The text for the menu item.
2971
3703
  *
2972
3704
  * @name Highcharts.ExportingMenuObject#text
2973
- * @type {string|undefined}
3705
+ * @type {string | undefined}
2974
3706
  */ /**
2975
3707
  * If internationalization is required, the key to a language string.
2976
3708
  *
2977
3709
  * @name Highcharts.ExportingMenuObject#textKey
2978
- * @type {string|undefined}
3710
+ * @type {string | undefined}
2979
3711
  */ /**
2980
3712
  * The click handler for the menu item.
2981
3713
  *
2982
3714
  * @name Highcharts.ExportingMenuObject#onclick
2983
- * @type {Highcharts.EventCallbackFunction<Highcharts.Chart>|undefined}
3715
+ * @type {Highcharts.EventCallbackFunction<Highcharts.Chart> | undefined}
2984
3716
  */ /**
2985
3717
  * Indicates a separator line instead of an item.
2986
3718
  *
2987
3719
  * @name Highcharts.ExportingMenuObject#separator
2988
- * @type {boolean|undefined}
3720
+ * @type {boolean | undefined}
2989
3721
  */
2990
3722
  /**
2991
3723
  * Possible MIME types for exporting.
2992
3724
  *
2993
- * @typedef {"image/png"|"image/jpeg"|"application/pdf"|"image/svg+xml"} Highcharts.ExportingMimeTypeValue
3725
+ * @typedef {"image/png" | "image/jpeg" | "application/pdf" | "image/svg+xml"} Highcharts.ExportingMimeTypeValue
2994
3726
  */
2995
3727
  (''); // Keeps doclets above in transpiled file
2996
3728
  /* *
@@ -3003,12 +3735,12 @@ var Exporting;
3003
3735
  * `Chart.print` method.
3004
3736
  *
3005
3737
  * @sample highcharts/chart/events-beforeprint-afterprint/
3006
- * Rescale the chart to print
3738
+ * Rescale the chart to print
3007
3739
  *
3008
- * @type {Highcharts.ExportingAfterPrintCallbackFunction}
3009
- * @since 4.1.0
3010
- * @context Highcharts.Chart
3011
- * @requires modules/exporting
3740
+ * @type {Highcharts.ExportingAfterPrintCallbackFunction}
3741
+ * @since 4.1.0
3742
+ * @context Highcharts.Chart
3743
+ * @requires modules/exporting
3012
3744
  * @apioption chart.events.afterPrint
3013
3745
  */
3014
3746
  /**
@@ -3016,12 +3748,12 @@ var Exporting;
3016
3748
  * the `Chart.print` method.
3017
3749
  *
3018
3750
  * @sample highcharts/chart/events-beforeprint-afterprint/
3019
- * Rescale the chart to print
3751
+ * Rescale the chart to print
3020
3752
  *
3021
- * @type {Highcharts.ExportingBeforePrintCallbackFunction}
3022
- * @since 4.1.0
3023
- * @context Highcharts.Chart
3024
- * @requires modules/exporting
3753
+ * @type {Highcharts.ExportingBeforePrintCallbackFunction}
3754
+ * @since 4.1.0
3755
+ * @context Highcharts.Chart
3756
+ * @requires modules/exporting
3025
3757
  * @apioption chart.events.beforePrint
3026
3758
  */
3027
3759
  (''); // Keeps doclets above in transpiled file
@@ -3033,10 +3765,14 @@ var Exporting;
3033
3765
 
3034
3766
 
3035
3767
  const G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());
3768
+ // Class
3769
+ G.Exporting = Exporting_Exporting;
3770
+ // Compatibility
3036
3771
  G.HttpUtilities = G.HttpUtilities || Core_HttpUtilities;
3037
3772
  G.ajax = G.HttpUtilities.ajax;
3038
3773
  G.getJSON = G.HttpUtilities.getJSON;
3039
3774
  G.post = G.HttpUtilities.post;
3775
+ // Compose
3040
3776
  Exporting_Exporting.compose(G.Chart, G.Renderer);
3041
3777
  /* harmony default export */ const exporting_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));
3042
3778