@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.
- package/assets/js/cdn.json +1 -1
- package/assets/js/exif-js/exif.min.js +1 -8
- package/assets/js/highcharts/css/annotations/popup.css +86 -45
- package/assets/js/highcharts/css/highcharts.css +40 -30
- package/assets/js/highcharts/css/stocktools/gui.css +28 -11
- package/assets/js/highcharts/es-modules/Accessibility/Components/InfoRegionsComponent.js +3 -3
- package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +10 -1
- package/assets/js/highcharts/es-modules/Accessibility/Components/MenuComponent.js +23 -22
- package/assets/js/highcharts/es-modules/Accessibility/HighContrastMode.js +0 -5
- package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +5 -0
- package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +19 -11
- package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +14 -1
- package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +3 -4
- package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +1 -1
- package/assets/js/highcharts/es-modules/Core/Axis/WaterfallAxis.js +4 -4
- package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +31 -25
- package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +13 -0
- package/assets/js/highcharts/es-modules/Core/Chart/GanttChart.js +4 -2
- package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +1 -1
- package/assets/js/highcharts/es-modules/Core/Color/Color.js +4 -8
- package/assets/js/highcharts/es-modules/Core/Defaults.js +4 -0
- package/assets/js/highcharts/es-modules/Core/Globals.js +1 -1
- package/assets/js/highcharts/es-modules/Core/HttpUtilities.js +45 -38
- package/assets/js/highcharts/es-modules/Core/Pointer.js +3 -4
- package/assets/js/highcharts/es-modules/Core/Renderer/HTML/AST.js +14 -14
- package/assets/js/highcharts/es-modules/Core/Renderer/HTML/HTMLElement.js +6 -2
- package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +4 -1
- package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +4 -2
- package/assets/js/highcharts/es-modules/Core/Series/Series.js +16 -6
- package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +1 -3
- package/assets/js/highcharts/es-modules/Core/Templating.js +6 -5
- package/assets/js/highcharts/es-modules/Core/Tooltip.js +3 -1
- package/assets/js/highcharts/es-modules/Data/Connectors/CSVConnector.js +32 -15
- package/assets/js/highcharts/es-modules/Data/Connectors/DataConnector.js +107 -12
- package/assets/js/highcharts/es-modules/Data/Connectors/GoogleSheetsConnector.js +29 -17
- package/assets/js/highcharts/es-modules/Data/Connectors/HTMLTableConnector.js +3 -3
- package/assets/js/highcharts/es-modules/Data/Connectors/JSONConnector.js +37 -16
- package/assets/js/highcharts/es-modules/Data/Converters/HTMLTableConverter.js +1 -1
- package/assets/js/highcharts/es-modules/Data/DataPool.js +15 -4
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Annotation.js +10 -7
- package/assets/js/highcharts/es-modules/Extensions/Annotations/AnnotationChart.js +7 -3
- package/assets/js/highcharts/es-modules/Extensions/Annotations/AnnotationDefaults.js +38 -12
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +10 -3
- package/assets/js/highcharts/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +1 -1
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +10 -4
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupComposition.js +1 -1
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +0 -3
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/CrookedLine.js +97 -94
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/ElliottWave.js +43 -36
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Fibonacci.js +86 -82
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +74 -71
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/InfinityLine.js +17 -3
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +229 -226
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Pitchfork.js +39 -40
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/TimeCycles.js +56 -52
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Tunnel.js +80 -76
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/VerticalLine.js +57 -53
- package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +22 -3
- package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +41 -8
- package/assets/js/highcharts/es-modules/Extensions/ExportData/ExportData.js +876 -780
- package/assets/js/highcharts/es-modules/Extensions/ExportData/ExportDataDefaults.js +67 -13
- package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +1091 -546
- package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +52 -36
- package/assets/js/highcharts/es-modules/Extensions/Exporting/Fullscreen.js +2 -2
- package/assets/js/highcharts/es-modules/Extensions/NonCartesianSeriesZoom/NonCartesianSeriesZoom.js +311 -0
- package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +254 -575
- package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +9 -38
- package/assets/js/highcharts/es-modules/Extensions/Pane/Pane.js +1 -1
- package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +9 -1
- package/assets/js/highcharts/es-modules/Extensions/Themes/Adaptive.js +1009 -0
- package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +1 -1
- package/assets/js/highcharts/es-modules/Series/Bubble/BubblePoint.js +2 -2
- package/assets/js/highcharts/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -2
- package/assets/js/highcharts/es-modules/Series/DragNodesComposition.js +4 -0
- package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeriesDefaults.js +2 -0
- package/assets/js/highcharts/es-modules/Series/GraphLayoutComposition.js +2 -1
- package/assets/js/highcharts/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -2
- package/assets/js/highcharts/es-modules/Series/Item/ItemSeries.js +1 -1
- package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubblePoint.js +5 -0
- package/assets/js/highcharts/es-modules/Series/Pie/PieSeriesDefaults.js +1 -2
- package/assets/js/highcharts/es-modules/Series/PolarComposition.js +1 -1
- package/assets/js/highcharts/es-modules/Series/SolidGauge/SolidGaugeSeries.js +7 -2
- package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +3 -1
- package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +8 -1
- package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +6 -8
- package/assets/js/highcharts/es-modules/Series/Wordcloud/WordcloudSeries.js +87 -10
- package/assets/js/highcharts/es-modules/Shared/BaseForm.js +6 -3
- package/assets/js/highcharts/es-modules/Shared/TimeBase.js +5 -1
- package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorComposition.js +2 -2
- package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +5 -7
- package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolbar.js +1 -1
- package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolsBindings.js +34 -113
- package/assets/js/highcharts/es-modules/masters/highcharts-3d.src.js +3 -1
- package/assets/js/highcharts/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/highcharts.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/highmaps.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/highstock.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/i18n/fr-FR.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/i18n/nb-NO.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/i18n/zh-CN.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/ao.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/apo.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/aroon.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/atr.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/cci.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/cmf.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/cmo.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/dema.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/dmi.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/dpo.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/indicators.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/klinger.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/macd.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/mfi.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/momentum.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/natr.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/obv.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/ppo.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/psar.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/regressions.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/roc.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/rsi.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/tema.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/trendline.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/trix.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/vwap.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/wma.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/accessibility.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/annotations.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/arc-diagram.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/boost.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/bullet.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/coloraxis.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/cylinder.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/data-tools.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/data.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/debugger.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/dotplot.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/drilldown.src.js +3 -1
- package/assets/js/highcharts/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/export-data.src.js +3 -3
- package/assets/js/highcharts/es-modules/masters/modules/exporting.src.js +5 -1
- package/assets/js/highcharts/es-modules/masters/modules/flowmap.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/full-screen.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/funnel.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/gantt.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/geoheatmap.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/heatmap.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/heikinashi.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/item-series.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/lollipop.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/map.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/navigator.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/non-cartesian-zoom.src.js +18 -0
- package/assets/js/highcharts/es-modules/masters/modules/offline-exporting.src.js +2 -2
- package/assets/js/highcharts/es-modules/masters/modules/organization.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/pareto.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/pictorial.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/pointandfigure.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/renko.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/sankey.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/series-label.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/series-on-point.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/sonification.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/static-scale.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/stock.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/sunburst.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/textpath.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/tiledwebmap.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/tilemap.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/timeline.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/treegraph.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/treegrid.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/treemap.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/variwide.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/vector.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/venn.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/windbarb.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/modules/xrange.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/adaptive.src.js +15 -0
- package/assets/js/highcharts/es-modules/masters/themes/avocado.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/brand-dark.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/brand-light.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/dark-blue.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/dark-green.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/gray.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/grid-light.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/grid.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/high-contrast-light.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/skies.src.js +1 -1
- package/assets/js/highcharts/es-modules/masters/themes/sunset.src.js +1 -1
- package/assets/js/highcharts/esm/highcharts-3d.js +11 -1
- package/assets/js/highcharts/esm/highcharts-3d.src.js +3 -1
- package/assets/js/highcharts/esm/highcharts-gantt.js +8 -1
- package/assets/js/highcharts/esm/highcharts-gantt.src.js +1 -1
- package/assets/js/highcharts/esm/highcharts-more.js +9 -1
- package/assets/js/highcharts/esm/highcharts-more.src.js +44 -29
- package/assets/js/highcharts/esm/highcharts.js +9 -2
- package/assets/js/highcharts/esm/highcharts.src.js +138 -80
- package/assets/js/highcharts/esm/highmaps.js +8 -1
- package/assets/js/highcharts/esm/highmaps.src.js +1 -1
- package/assets/js/highcharts/esm/highstock.js +8 -1
- package/assets/js/highcharts/esm/highstock.src.js +1 -1
- package/assets/js/highcharts/esm/i18n/fr-FR.js +13 -1
- package/assets/js/highcharts/esm/i18n/fr-FR.src.js +1 -1
- package/assets/js/highcharts/esm/i18n/nb-NO.js +13 -1
- package/assets/js/highcharts/esm/i18n/nb-NO.src.js +1 -1
- package/assets/js/highcharts/esm/i18n/zh-CN.js +13 -1
- package/assets/js/highcharts/esm/i18n/zh-CN.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/acceleration-bands.js +12 -1
- package/assets/js/highcharts/esm/indicators/acceleration-bands.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/accumulation-distribution.js +12 -1
- package/assets/js/highcharts/esm/indicators/accumulation-distribution.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/ao.js +12 -1
- package/assets/js/highcharts/esm/indicators/ao.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/apo.js +12 -1
- package/assets/js/highcharts/esm/indicators/apo.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/aroon-oscillator.js +12 -1
- package/assets/js/highcharts/esm/indicators/aroon-oscillator.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/aroon.js +12 -1
- package/assets/js/highcharts/esm/indicators/aroon.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/atr.js +12 -1
- package/assets/js/highcharts/esm/indicators/atr.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/bollinger-bands.js +12 -1
- package/assets/js/highcharts/esm/indicators/bollinger-bands.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/cci.js +12 -1
- package/assets/js/highcharts/esm/indicators/cci.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/chaikin.js +12 -1
- package/assets/js/highcharts/esm/indicators/chaikin.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/cmf.js +11 -1
- package/assets/js/highcharts/esm/indicators/cmf.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/cmo.js +12 -1
- package/assets/js/highcharts/esm/indicators/cmo.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/dema.js +12 -1
- package/assets/js/highcharts/esm/indicators/dema.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/disparity-index.js +12 -1
- package/assets/js/highcharts/esm/indicators/disparity-index.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/dmi.js +12 -1
- package/assets/js/highcharts/esm/indicators/dmi.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/dpo.js +12 -1
- package/assets/js/highcharts/esm/indicators/dpo.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/ichimoku-kinko-hyo.js +12 -1
- package/assets/js/highcharts/esm/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/indicators-all.js +12 -1
- package/assets/js/highcharts/esm/indicators/indicators-all.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/indicators.js +12 -1
- package/assets/js/highcharts/esm/indicators/indicators.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/keltner-channels.js +12 -1
- package/assets/js/highcharts/esm/indicators/keltner-channels.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/klinger.js +12 -1
- package/assets/js/highcharts/esm/indicators/klinger.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/macd.js +12 -1
- package/assets/js/highcharts/esm/indicators/macd.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/mfi.js +12 -1
- package/assets/js/highcharts/esm/indicators/mfi.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/momentum.js +12 -1
- package/assets/js/highcharts/esm/indicators/momentum.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/natr.js +12 -1
- package/assets/js/highcharts/esm/indicators/natr.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/obv.js +12 -1
- package/assets/js/highcharts/esm/indicators/obv.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/pivot-points.js +12 -1
- package/assets/js/highcharts/esm/indicators/pivot-points.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/ppo.js +12 -1
- package/assets/js/highcharts/esm/indicators/ppo.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/price-channel.js +12 -1
- package/assets/js/highcharts/esm/indicators/price-channel.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/price-envelopes.js +12 -1
- package/assets/js/highcharts/esm/indicators/price-envelopes.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/psar.js +12 -1
- package/assets/js/highcharts/esm/indicators/psar.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/regressions.js +12 -1
- package/assets/js/highcharts/esm/indicators/regressions.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/roc.js +12 -1
- package/assets/js/highcharts/esm/indicators/roc.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/rsi.js +12 -1
- package/assets/js/highcharts/esm/indicators/rsi.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/slow-stochastic.js +12 -1
- package/assets/js/highcharts/esm/indicators/slow-stochastic.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/stochastic.js +12 -1
- package/assets/js/highcharts/esm/indicators/stochastic.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/supertrend.js +12 -1
- package/assets/js/highcharts/esm/indicators/supertrend.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/tema.js +12 -1
- package/assets/js/highcharts/esm/indicators/tema.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/trendline.js +12 -1
- package/assets/js/highcharts/esm/indicators/trendline.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/trix.js +12 -1
- package/assets/js/highcharts/esm/indicators/trix.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/volume-by-price.js +12 -1
- package/assets/js/highcharts/esm/indicators/volume-by-price.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/vwap.js +12 -1
- package/assets/js/highcharts/esm/indicators/vwap.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/williams-r.js +12 -1
- package/assets/js/highcharts/esm/indicators/williams-r.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/wma.js +12 -1
- package/assets/js/highcharts/esm/indicators/wma.src.js +1 -1
- package/assets/js/highcharts/esm/indicators/zigzag.js +12 -1
- package/assets/js/highcharts/esm/indicators/zigzag.src.js +1 -1
- package/assets/js/highcharts/esm/modules/accessibility.js +12 -1
- package/assets/js/highcharts/esm/modules/accessibility.src.js +46 -43
- package/assets/js/highcharts/esm/modules/annotations-advanced.js +11 -1
- package/assets/js/highcharts/esm/modules/annotations-advanced.src.js +866 -775
- package/assets/js/highcharts/esm/modules/annotations.js +11 -1
- package/assets/js/highcharts/esm/modules/annotations.src.js +89 -40
- package/assets/js/highcharts/esm/modules/arc-diagram.js +11 -1
- package/assets/js/highcharts/esm/modules/arc-diagram.src.js +1 -1
- package/assets/js/highcharts/esm/modules/arrow-symbols.js +11 -1
- package/assets/js/highcharts/esm/modules/arrow-symbols.src.js +1 -1
- package/assets/js/highcharts/esm/modules/boost-canvas.js +12 -1
- package/assets/js/highcharts/esm/modules/boost-canvas.src.js +23 -4
- package/assets/js/highcharts/esm/modules/boost.js +13 -1
- package/assets/js/highcharts/esm/modules/boost.src.js +23 -4
- package/assets/js/highcharts/esm/modules/broken-axis.js +9 -1
- package/assets/js/highcharts/esm/modules/broken-axis.src.js +1 -1
- package/assets/js/highcharts/esm/modules/bullet.js +11 -1
- package/assets/js/highcharts/esm/modules/bullet.src.js +1 -1
- package/assets/js/highcharts/esm/modules/coloraxis.js +11 -1
- package/assets/js/highcharts/esm/modules/coloraxis.src.js +1 -1
- package/assets/js/highcharts/esm/modules/current-date-indicator.js +11 -1
- package/assets/js/highcharts/esm/modules/current-date-indicator.src.js +1 -1
- package/assets/js/highcharts/esm/modules/cylinder.js +12 -1
- package/assets/js/highcharts/esm/modules/cylinder.src.js +1 -1
- package/assets/js/highcharts/esm/modules/data-tools.js +11 -1
- package/assets/js/highcharts/esm/modules/data-tools.src.js +225 -69
- package/assets/js/highcharts/esm/modules/data.js +11 -1
- package/assets/js/highcharts/esm/modules/data.src.js +46 -39
- package/assets/js/highcharts/esm/modules/datagrouping.js +11 -1
- package/assets/js/highcharts/esm/modules/datagrouping.src.js +1 -1
- package/assets/js/highcharts/esm/modules/debugger.js +11 -1
- package/assets/js/highcharts/esm/modules/debugger.src.js +1 -1
- package/assets/js/highcharts/esm/modules/dependency-wheel.js +12 -1
- package/assets/js/highcharts/esm/modules/dependency-wheel.src.js +1 -1
- package/assets/js/highcharts/esm/modules/dotplot.js +11 -1
- package/assets/js/highcharts/esm/modules/dotplot.src.js +1 -1
- package/assets/js/highcharts/esm/modules/drag-panes.js +13 -1
- package/assets/js/highcharts/esm/modules/drag-panes.src.js +1 -1
- package/assets/js/highcharts/esm/modules/draggable-points.js +9 -1
- package/assets/js/highcharts/esm/modules/draggable-points.src.js +1 -1
- package/assets/js/highcharts/esm/modules/drilldown.js +13 -1
- package/assets/js/highcharts/esm/modules/drilldown.src.js +3 -1
- package/assets/js/highcharts/esm/modules/dumbbell.js +9 -1
- package/assets/js/highcharts/esm/modules/dumbbell.src.js +1 -1
- package/assets/js/highcharts/esm/modules/export-data.js +12 -1
- package/assets/js/highcharts/esm/modules/export-data.src.js +984 -798
- package/assets/js/highcharts/esm/modules/exporting.js +11 -1
- package/assets/js/highcharts/esm/modules/exporting.src.js +1373 -642
- package/assets/js/highcharts/esm/modules/flowmap.js +9 -1
- package/assets/js/highcharts/esm/modules/flowmap.src.js +1 -1
- package/assets/js/highcharts/esm/modules/full-screen.js +12 -1
- package/assets/js/highcharts/esm/modules/full-screen.src.js +3 -3
- package/assets/js/highcharts/esm/modules/funnel.js +11 -1
- package/assets/js/highcharts/esm/modules/funnel.src.js +1 -1
- package/assets/js/highcharts/esm/modules/funnel3d.js +13 -1
- package/assets/js/highcharts/esm/modules/funnel3d.src.js +1 -1
- package/assets/js/highcharts/esm/modules/gantt.js +11 -1
- package/assets/js/highcharts/esm/modules/gantt.src.js +33 -25
- package/assets/js/highcharts/esm/modules/geoheatmap.js +9 -1
- package/assets/js/highcharts/esm/modules/geoheatmap.src.js +1 -1
- package/assets/js/highcharts/esm/modules/grid-axis.js +11 -1
- package/assets/js/highcharts/esm/modules/grid-axis.src.js +1 -1
- package/assets/js/highcharts/esm/modules/heatmap.js +9 -1
- package/assets/js/highcharts/esm/modules/heatmap.src.js +2 -3
- package/assets/js/highcharts/esm/modules/heikinashi.js +12 -1
- package/assets/js/highcharts/esm/modules/heikinashi.src.js +1 -1
- package/assets/js/highcharts/esm/modules/histogram-bellcurve.js +10 -1
- package/assets/js/highcharts/esm/modules/histogram-bellcurve.src.js +1 -1
- package/assets/js/highcharts/esm/modules/hollowcandlestick.js +12 -1
- package/assets/js/highcharts/esm/modules/hollowcandlestick.src.js +1 -1
- package/assets/js/highcharts/esm/modules/item-series.js +11 -1
- package/assets/js/highcharts/esm/modules/item-series.src.js +3 -5
- package/assets/js/highcharts/esm/modules/lollipop.js +9 -1
- package/assets/js/highcharts/esm/modules/lollipop.src.js +1 -1
- package/assets/js/highcharts/esm/modules/map.js +11 -1
- package/assets/js/highcharts/esm/modules/map.src.js +5 -6
- package/assets/js/highcharts/esm/modules/marker-clusters.js +11 -1
- package/assets/js/highcharts/esm/modules/marker-clusters.src.js +1 -1
- package/assets/js/highcharts/esm/modules/mouse-wheel-zoom.js +11 -1
- package/assets/js/highcharts/esm/modules/mouse-wheel-zoom.src.js +1 -1
- package/assets/js/highcharts/esm/modules/navigator.js +11 -1
- package/assets/js/highcharts/esm/modules/navigator.src.js +10 -12
- package/assets/js/highcharts/esm/modules/networkgraph.js +11 -1
- package/assets/js/highcharts/esm/modules/networkgraph.src.js +7 -2
- package/assets/js/highcharts/esm/modules/no-data-to-display.js +12 -1
- package/assets/js/highcharts/esm/modules/no-data-to-display.src.js +1 -1
- package/assets/js/highcharts/esm/modules/non-cartesian-zoom.js +11 -0
- package/assets/js/highcharts/esm/modules/non-cartesian-zoom.src.js +374 -0
- package/assets/js/highcharts/esm/modules/offline-exporting.js +12 -1
- package/assets/js/highcharts/esm/modules/offline-exporting.src.js +334 -3360
- package/assets/js/highcharts/esm/modules/organization.js +11 -1
- package/assets/js/highcharts/esm/modules/organization.src.js +1 -1
- package/assets/js/highcharts/esm/modules/parallel-coordinates.js +11 -1
- package/assets/js/highcharts/esm/modules/parallel-coordinates.src.js +1 -1
- package/assets/js/highcharts/esm/modules/pareto.js +11 -1
- package/assets/js/highcharts/esm/modules/pareto.src.js +1 -1
- package/assets/js/highcharts/esm/modules/pathfinder.js +11 -1
- package/assets/js/highcharts/esm/modules/pathfinder.src.js +1 -1
- package/assets/js/highcharts/esm/modules/pattern-fill.js +12 -1
- package/assets/js/highcharts/esm/modules/pattern-fill.src.js +1 -1
- package/assets/js/highcharts/esm/modules/pictorial.js +11 -1
- package/assets/js/highcharts/esm/modules/pictorial.src.js +1 -1
- package/assets/js/highcharts/esm/modules/pointandfigure.js +12 -1
- package/assets/js/highcharts/esm/modules/pointandfigure.src.js +1 -1
- package/assets/js/highcharts/esm/modules/price-indicator.js +13 -1
- package/assets/js/highcharts/esm/modules/price-indicator.src.js +1 -1
- package/assets/js/highcharts/esm/modules/pyramid3d.js +14 -1
- package/assets/js/highcharts/esm/modules/pyramid3d.src.js +1 -1
- package/assets/js/highcharts/esm/modules/renko.js +12 -1
- package/assets/js/highcharts/esm/modules/renko.src.js +1 -1
- package/assets/js/highcharts/esm/modules/sankey.js +11 -1
- package/assets/js/highcharts/esm/modules/sankey.src.js +1 -1
- package/assets/js/highcharts/esm/modules/series-label.js +9 -1
- package/assets/js/highcharts/esm/modules/series-label.src.js +1 -1
- package/assets/js/highcharts/esm/modules/series-on-point.js +12 -1
- package/assets/js/highcharts/esm/modules/series-on-point.src.js +1 -1
- package/assets/js/highcharts/esm/modules/solid-gauge.js +12 -1
- package/assets/js/highcharts/esm/modules/solid-gauge.src.js +8 -3
- package/assets/js/highcharts/esm/modules/sonification.js +12 -1
- package/assets/js/highcharts/esm/modules/sonification.src.js +42 -9
- package/assets/js/highcharts/esm/modules/static-scale.js +11 -1
- package/assets/js/highcharts/esm/modules/static-scale.src.js +1 -1
- package/assets/js/highcharts/esm/modules/stock-tools.js +13 -1
- package/assets/js/highcharts/esm/modules/stock-tools.src.js +37 -116
- package/assets/js/highcharts/esm/modules/stock.js +11 -1
- package/assets/js/highcharts/esm/modules/stock.src.js +32 -24
- package/assets/js/highcharts/esm/modules/streamgraph.js +11 -1
- package/assets/js/highcharts/esm/modules/streamgraph.src.js +1 -1
- package/assets/js/highcharts/esm/modules/sunburst.js +10 -1
- package/assets/js/highcharts/esm/modules/sunburst.src.js +1 -1
- package/assets/js/highcharts/esm/modules/textpath.js +9 -1
- package/assets/js/highcharts/esm/modules/textpath.src.js +1 -1
- package/assets/js/highcharts/esm/modules/tiledwebmap.js +10 -2
- package/assets/js/highcharts/esm/modules/tiledwebmap.src.js +1 -1
- package/assets/js/highcharts/esm/modules/tilemap.js +12 -1
- package/assets/js/highcharts/esm/modules/tilemap.src.js +1 -1
- package/assets/js/highcharts/esm/modules/timeline.js +12 -1
- package/assets/js/highcharts/esm/modules/timeline.src.js +1 -1
- package/assets/js/highcharts/esm/modules/treegraph.js +11 -1
- package/assets/js/highcharts/esm/modules/treegraph.src.js +4 -2
- package/assets/js/highcharts/esm/modules/treegrid.js +11 -1
- package/assets/js/highcharts/esm/modules/treegrid.src.js +1 -1
- package/assets/js/highcharts/esm/modules/treemap.js +10 -1
- package/assets/js/highcharts/esm/modules/treemap.src.js +1 -1
- package/assets/js/highcharts/esm/modules/variable-pie.js +11 -1
- package/assets/js/highcharts/esm/modules/variable-pie.src.js +1 -1
- package/assets/js/highcharts/esm/modules/variwide.js +11 -1
- package/assets/js/highcharts/esm/modules/variwide.src.js +9 -2
- package/assets/js/highcharts/esm/modules/vector.js +11 -1
- package/assets/js/highcharts/esm/modules/vector.src.js +1 -1
- package/assets/js/highcharts/esm/modules/venn.js +10 -1
- package/assets/js/highcharts/esm/modules/venn.src.js +1 -1
- package/assets/js/highcharts/esm/modules/windbarb.js +11 -1
- package/assets/js/highcharts/esm/modules/windbarb.src.js +1 -1
- package/assets/js/highcharts/esm/modules/wordcloud.js +10 -1
- package/assets/js/highcharts/esm/modules/wordcloud.src.js +88 -11
- package/assets/js/highcharts/esm/modules/xrange.js +11 -1
- package/assets/js/highcharts/esm/modules/xrange.src.js +1 -1
- package/assets/js/highcharts/esm/standalone-navigator.js +9 -2
- package/assets/js/highcharts/esm/standalone-navigator.src.js +146 -90
- package/assets/js/highcharts/esm/themes/adaptive.js +130 -0
- package/assets/js/highcharts/esm/themes/adaptive.src.js +1069 -0
- package/assets/js/highcharts/esm/themes/avocado.js +9 -1
- package/assets/js/highcharts/esm/themes/avocado.src.js +1 -1
- package/assets/js/highcharts/esm/themes/brand-dark.js +9 -1
- package/assets/js/highcharts/esm/themes/brand-dark.src.js +1 -1
- package/assets/js/highcharts/esm/themes/brand-light.js +9 -1
- package/assets/js/highcharts/esm/themes/brand-light.src.js +1 -1
- package/assets/js/highcharts/esm/themes/dark-blue.js +9 -1
- package/assets/js/highcharts/esm/themes/dark-blue.src.js +1 -1
- package/assets/js/highcharts/esm/themes/dark-green.js +9 -1
- package/assets/js/highcharts/esm/themes/dark-green.src.js +1 -1
- package/assets/js/highcharts/esm/themes/dark-unica.js +9 -1
- package/assets/js/highcharts/esm/themes/dark-unica.src.js +1 -1
- package/assets/js/highcharts/esm/themes/gray.js +9 -1
- package/assets/js/highcharts/esm/themes/gray.src.js +1 -1
- package/assets/js/highcharts/esm/themes/grid-light.js +9 -1
- package/assets/js/highcharts/esm/themes/grid-light.src.js +1 -1
- package/assets/js/highcharts/esm/themes/grid.js +9 -1
- package/assets/js/highcharts/esm/themes/grid.src.js +1 -1
- package/assets/js/highcharts/esm/themes/high-contrast-dark.js +9 -1
- package/assets/js/highcharts/esm/themes/high-contrast-dark.src.js +1 -1
- package/assets/js/highcharts/esm/themes/high-contrast-light.js +9 -1
- package/assets/js/highcharts/esm/themes/high-contrast-light.src.js +1 -1
- package/assets/js/highcharts/esm/themes/sand-signika.js +9 -1
- package/assets/js/highcharts/esm/themes/sand-signika.src.js +1 -1
- package/assets/js/highcharts/esm/themes/skies.js +9 -1
- package/assets/js/highcharts/esm/themes/skies.src.js +1 -1
- package/assets/js/highcharts/esm/themes/sunset.js +9 -1
- package/assets/js/highcharts/esm/themes/sunset.src.js +1 -1
- package/assets/js/highcharts/highcharts-3d.js +11 -1
- package/assets/js/highcharts/highcharts-3d.src.js +3 -1
- package/assets/js/highcharts/highcharts-gantt.js +16 -2
- package/assets/js/highcharts/highcharts-gantt.src.js +173 -107
- package/assets/js/highcharts/highcharts-more.js +9 -1
- package/assets/js/highcharts/highcharts-more.src.js +44 -29
- package/assets/js/highcharts/highcharts.js +9 -2
- package/assets/js/highcharts/highcharts.src.js +138 -80
- package/assets/js/highcharts/highmaps.js +16 -2
- package/assets/js/highcharts/highmaps.src.js +145 -88
- package/assets/js/highcharts/highstock.js +16 -2
- package/assets/js/highcharts/highstock.src.js +172 -106
- package/assets/js/highcharts/i18n/fr-FR.js +13 -1
- package/assets/js/highcharts/i18n/fr-FR.src.js +8 -8
- package/assets/js/highcharts/i18n/nb-NO.js +13 -1
- package/assets/js/highcharts/i18n/nb-NO.src.js +8 -8
- package/assets/js/highcharts/i18n/zh-CN.js +13 -1
- package/assets/js/highcharts/i18n/zh-CN.src.js +8 -8
- package/assets/js/highcharts/indicators/acceleration-bands.js +12 -1
- package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
- package/assets/js/highcharts/indicators/accumulation-distribution.js +12 -1
- package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
- package/assets/js/highcharts/indicators/ao.js +12 -1
- package/assets/js/highcharts/indicators/ao.src.js +1 -1
- package/assets/js/highcharts/indicators/apo.js +12 -1
- package/assets/js/highcharts/indicators/apo.src.js +1 -1
- package/assets/js/highcharts/indicators/aroon-oscillator.js +12 -1
- package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
- package/assets/js/highcharts/indicators/aroon.js +12 -1
- package/assets/js/highcharts/indicators/aroon.src.js +1 -1
- package/assets/js/highcharts/indicators/atr.js +12 -1
- package/assets/js/highcharts/indicators/atr.src.js +1 -1
- package/assets/js/highcharts/indicators/bollinger-bands.js +12 -1
- package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
- package/assets/js/highcharts/indicators/cci.js +12 -1
- package/assets/js/highcharts/indicators/cci.src.js +1 -1
- package/assets/js/highcharts/indicators/chaikin.js +12 -1
- package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
- package/assets/js/highcharts/indicators/cmf.js +11 -1
- package/assets/js/highcharts/indicators/cmf.src.js +1 -1
- package/assets/js/highcharts/indicators/cmo.js +12 -1
- package/assets/js/highcharts/indicators/cmo.src.js +1 -1
- package/assets/js/highcharts/indicators/dema.js +12 -1
- package/assets/js/highcharts/indicators/dema.src.js +1 -1
- package/assets/js/highcharts/indicators/disparity-index.js +12 -1
- package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
- package/assets/js/highcharts/indicators/dmi.js +12 -1
- package/assets/js/highcharts/indicators/dmi.src.js +1 -1
- package/assets/js/highcharts/indicators/dpo.js +12 -1
- package/assets/js/highcharts/indicators/dpo.src.js +1 -1
- package/assets/js/highcharts/indicators/ema.src.js +3 -3
- package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +12 -1
- package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/assets/js/highcharts/indicators/indicators-all.js +12 -1
- package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
- package/assets/js/highcharts/indicators/indicators.js +12 -1
- package/assets/js/highcharts/indicators/indicators.src.js +1 -1
- package/assets/js/highcharts/indicators/keltner-channels.js +12 -1
- package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
- package/assets/js/highcharts/indicators/klinger.js +12 -1
- package/assets/js/highcharts/indicators/klinger.src.js +1 -1
- package/assets/js/highcharts/indicators/macd.js +12 -1
- package/assets/js/highcharts/indicators/macd.src.js +1 -1
- package/assets/js/highcharts/indicators/mfi.js +12 -1
- package/assets/js/highcharts/indicators/mfi.src.js +1 -1
- package/assets/js/highcharts/indicators/momentum.js +12 -1
- package/assets/js/highcharts/indicators/momentum.src.js +1 -1
- package/assets/js/highcharts/indicators/natr.js +12 -1
- package/assets/js/highcharts/indicators/natr.src.js +1 -1
- package/assets/js/highcharts/indicators/obv.js +12 -1
- package/assets/js/highcharts/indicators/obv.src.js +1 -1
- package/assets/js/highcharts/indicators/pivot-points.js +12 -1
- package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
- package/assets/js/highcharts/indicators/ppo.js +12 -1
- package/assets/js/highcharts/indicators/ppo.src.js +1 -1
- package/assets/js/highcharts/indicators/price-channel.js +12 -1
- package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
- package/assets/js/highcharts/indicators/price-envelopes.js +12 -1
- package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
- package/assets/js/highcharts/indicators/psar.js +12 -1
- package/assets/js/highcharts/indicators/psar.src.js +1 -1
- package/assets/js/highcharts/indicators/regressions.js +12 -1
- package/assets/js/highcharts/indicators/regressions.src.js +1 -1
- package/assets/js/highcharts/indicators/roc.js +12 -1
- package/assets/js/highcharts/indicators/roc.src.js +1 -1
- package/assets/js/highcharts/indicators/rsi.js +12 -1
- package/assets/js/highcharts/indicators/rsi.src.js +1 -1
- package/assets/js/highcharts/indicators/slow-stochastic.js +12 -1
- package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
- package/assets/js/highcharts/indicators/stochastic.js +12 -1
- package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
- package/assets/js/highcharts/indicators/supertrend.js +12 -1
- package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
- package/assets/js/highcharts/indicators/tema.js +12 -1
- package/assets/js/highcharts/indicators/tema.src.js +1 -1
- package/assets/js/highcharts/indicators/trendline.js +12 -1
- package/assets/js/highcharts/indicators/trendline.src.js +1 -1
- package/assets/js/highcharts/indicators/trix.js +12 -1
- package/assets/js/highcharts/indicators/trix.src.js +1 -1
- package/assets/js/highcharts/indicators/volume-by-price.js +12 -1
- package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
- package/assets/js/highcharts/indicators/vwap.js +12 -1
- package/assets/js/highcharts/indicators/vwap.src.js +1 -1
- package/assets/js/highcharts/indicators/williams-r.js +12 -1
- package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
- package/assets/js/highcharts/indicators/wma.js +12 -1
- package/assets/js/highcharts/indicators/wma.src.js +1 -1
- package/assets/js/highcharts/indicators/zigzag.js +12 -1
- package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
- package/assets/js/highcharts/modules/accessibility.js +12 -1
- package/assets/js/highcharts/modules/accessibility.src.js +46 -43
- package/assets/js/highcharts/modules/annotations-advanced.js +21 -1
- package/assets/js/highcharts/modules/annotations-advanced.src.js +879 -788
- package/assets/js/highcharts/modules/annotations.js +11 -1
- package/assets/js/highcharts/modules/annotations.src.js +89 -40
- package/assets/js/highcharts/modules/arc-diagram.js +11 -1
- package/assets/js/highcharts/modules/arc-diagram.src.js +1 -1
- package/assets/js/highcharts/modules/arrow-symbols.js +11 -1
- package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
- package/assets/js/highcharts/modules/boost-canvas.js +12 -1
- package/assets/js/highcharts/modules/boost-canvas.src.js +23 -4
- package/assets/js/highcharts/modules/boost.js +13 -1
- package/assets/js/highcharts/modules/boost.src.js +23 -4
- package/assets/js/highcharts/modules/broken-axis.js +9 -1
- package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
- package/assets/js/highcharts/modules/bullet.js +11 -1
- package/assets/js/highcharts/modules/bullet.src.js +1 -1
- package/assets/js/highcharts/modules/coloraxis.js +11 -1
- package/assets/js/highcharts/modules/coloraxis.src.js +1 -1
- package/assets/js/highcharts/modules/current-date-indicator.js +11 -1
- package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
- package/assets/js/highcharts/modules/cylinder.js +12 -1
- package/assets/js/highcharts/modules/cylinder.src.js +1 -1
- package/assets/js/highcharts/modules/data-tools.js +11 -1
- package/assets/js/highcharts/modules/data-tools.src.js +225 -69
- package/assets/js/highcharts/modules/data.js +11 -1
- package/assets/js/highcharts/modules/data.src.js +46 -39
- package/assets/js/highcharts/modules/datagrouping.js +11 -1
- package/assets/js/highcharts/modules/datagrouping.src.js +1 -1
- package/assets/js/highcharts/modules/debugger.js +11 -1
- package/assets/js/highcharts/modules/debugger.src.js +1 -1
- package/assets/js/highcharts/modules/dependency-wheel.js +12 -1
- package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
- package/assets/js/highcharts/modules/dotplot.js +11 -1
- package/assets/js/highcharts/modules/dotplot.src.js +1 -1
- package/assets/js/highcharts/modules/drag-panes.js +13 -1
- package/assets/js/highcharts/modules/drag-panes.src.js +1 -1
- package/assets/js/highcharts/modules/draggable-points.js +9 -1
- package/assets/js/highcharts/modules/draggable-points.src.js +1 -1
- package/assets/js/highcharts/modules/drilldown.js +13 -1
- package/assets/js/highcharts/modules/drilldown.src.js +3 -1
- package/assets/js/highcharts/modules/dumbbell.js +9 -1
- package/assets/js/highcharts/modules/dumbbell.src.js +1 -1
- package/assets/js/highcharts/modules/export-data.js +12 -1
- package/assets/js/highcharts/modules/export-data.src.js +996 -803
- package/assets/js/highcharts/modules/exporting.js +11 -1
- package/assets/js/highcharts/modules/exporting.src.js +1372 -636
- package/assets/js/highcharts/modules/flowmap.js +9 -1
- package/assets/js/highcharts/modules/flowmap.src.js +1 -1
- package/assets/js/highcharts/modules/full-screen.js +12 -1
- package/assets/js/highcharts/modules/full-screen.src.js +3 -3
- package/assets/js/highcharts/modules/funnel.js +11 -1
- package/assets/js/highcharts/modules/funnel.src.js +1 -1
- package/assets/js/highcharts/modules/funnel3d.js +13 -1
- package/assets/js/highcharts/modules/funnel3d.src.js +1 -1
- package/assets/js/highcharts/modules/gantt.js +31 -1
- package/assets/js/highcharts/modules/gantt.src.js +36 -28
- package/assets/js/highcharts/modules/geoheatmap.js +9 -1
- package/assets/js/highcharts/modules/geoheatmap.src.js +1 -1
- package/assets/js/highcharts/modules/grid-axis.js +11 -1
- package/assets/js/highcharts/modules/grid-axis.src.js +1 -1
- package/assets/js/highcharts/modules/heatmap.js +19 -1
- package/assets/js/highcharts/modules/heatmap.src.js +3 -4
- package/assets/js/highcharts/modules/heikinashi.js +12 -1
- package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
- package/assets/js/highcharts/modules/histogram-bellcurve.js +10 -1
- package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
- package/assets/js/highcharts/modules/hollowcandlestick.js +12 -1
- package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
- package/assets/js/highcharts/modules/item-series.js +11 -1
- package/assets/js/highcharts/modules/item-series.src.js +3 -5
- package/assets/js/highcharts/modules/lollipop.js +9 -1
- package/assets/js/highcharts/modules/lollipop.src.js +1 -1
- package/assets/js/highcharts/modules/map.js +21 -1
- package/assets/js/highcharts/modules/map.src.js +6 -7
- package/assets/js/highcharts/modules/marker-clusters.js +11 -1
- package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
- package/assets/js/highcharts/modules/mouse-wheel-zoom.js +11 -1
- package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
- package/assets/js/highcharts/modules/navigator.js +11 -1
- package/assets/js/highcharts/modules/navigator.src.js +10 -12
- package/assets/js/highcharts/modules/networkgraph.js +11 -1
- package/assets/js/highcharts/modules/networkgraph.src.js +7 -2
- package/assets/js/highcharts/modules/no-data-to-display.js +12 -1
- package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
- package/assets/js/highcharts/modules/non-cartesian-zoom.js +11 -0
- package/assets/js/highcharts/modules/non-cartesian-zoom.src.js +427 -0
- package/assets/js/highcharts/modules/offline-exporting.js +12 -1
- package/assets/js/highcharts/modules/offline-exporting.src.js +353 -3380
- package/assets/js/highcharts/modules/organization.js +11 -1
- package/assets/js/highcharts/modules/organization.src.js +1 -1
- package/assets/js/highcharts/modules/parallel-coordinates.js +11 -1
- package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
- package/assets/js/highcharts/modules/pareto.js +11 -1
- package/assets/js/highcharts/modules/pareto.src.js +1 -1
- package/assets/js/highcharts/modules/pathfinder.js +11 -1
- package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
- package/assets/js/highcharts/modules/pattern-fill.js +12 -1
- package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
- package/assets/js/highcharts/modules/pictorial.js +11 -1
- package/assets/js/highcharts/modules/pictorial.src.js +1 -1
- package/assets/js/highcharts/modules/pointandfigure.js +12 -1
- package/assets/js/highcharts/modules/pointandfigure.src.js +1 -1
- package/assets/js/highcharts/modules/price-indicator.js +13 -1
- package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
- package/assets/js/highcharts/modules/pyramid3d.js +14 -1
- package/assets/js/highcharts/modules/pyramid3d.src.js +1 -1
- package/assets/js/highcharts/modules/renko.js +12 -1
- package/assets/js/highcharts/modules/renko.src.js +1 -1
- package/assets/js/highcharts/modules/sankey.js +11 -1
- package/assets/js/highcharts/modules/sankey.src.js +1 -1
- package/assets/js/highcharts/modules/series-label.js +9 -1
- package/assets/js/highcharts/modules/series-label.src.js +1 -1
- package/assets/js/highcharts/modules/series-on-point.js +12 -1
- package/assets/js/highcharts/modules/series-on-point.src.js +1 -1
- package/assets/js/highcharts/modules/solid-gauge.js +12 -1
- package/assets/js/highcharts/modules/solid-gauge.src.js +8 -3
- package/assets/js/highcharts/modules/sonification.js +12 -1
- package/assets/js/highcharts/modules/sonification.src.js +42 -9
- package/assets/js/highcharts/modules/static-scale.js +11 -1
- package/assets/js/highcharts/modules/static-scale.src.js +1 -1
- package/assets/js/highcharts/modules/stock-tools.js +13 -1
- package/assets/js/highcharts/modules/stock-tools.src.js +37 -116
- package/assets/js/highcharts/modules/stock.js +29 -1
- package/assets/js/highcharts/modules/stock.src.js +35 -27
- package/assets/js/highcharts/modules/streamgraph.js +11 -1
- package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
- package/assets/js/highcharts/modules/sunburst.js +10 -1
- package/assets/js/highcharts/modules/sunburst.src.js +1 -1
- package/assets/js/highcharts/modules/textpath.js +9 -1
- package/assets/js/highcharts/modules/textpath.src.js +1 -1
- package/assets/js/highcharts/modules/tiledwebmap.js +10 -2
- package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
- package/assets/js/highcharts/modules/tilemap.js +12 -1
- package/assets/js/highcharts/modules/tilemap.src.js +1 -1
- package/assets/js/highcharts/modules/timeline.js +12 -1
- package/assets/js/highcharts/modules/timeline.src.js +1 -1
- package/assets/js/highcharts/modules/treegraph.js +11 -1
- package/assets/js/highcharts/modules/treegraph.src.js +4 -2
- package/assets/js/highcharts/modules/treegrid.js +11 -1
- package/assets/js/highcharts/modules/treegrid.src.js +1 -1
- package/assets/js/highcharts/modules/treemap.js +10 -1
- package/assets/js/highcharts/modules/treemap.src.js +1 -1
- package/assets/js/highcharts/modules/variable-pie.js +11 -1
- package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
- package/assets/js/highcharts/modules/variwide.js +11 -1
- package/assets/js/highcharts/modules/variwide.src.js +9 -2
- package/assets/js/highcharts/modules/vector.js +11 -1
- package/assets/js/highcharts/modules/vector.src.js +1 -1
- package/assets/js/highcharts/modules/venn.js +10 -1
- package/assets/js/highcharts/modules/venn.src.js +1 -1
- package/assets/js/highcharts/modules/windbarb.js +11 -1
- package/assets/js/highcharts/modules/windbarb.src.js +1 -1
- package/assets/js/highcharts/modules/wordcloud.js +10 -1
- package/assets/js/highcharts/modules/wordcloud.src.js +88 -11
- package/assets/js/highcharts/modules/xrange.js +11 -1
- package/assets/js/highcharts/modules/xrange.src.js +1 -1
- package/assets/js/highcharts/standalone-navigator.js +9 -2
- package/assets/js/highcharts/standalone-navigator.src.js +146 -90
- package/assets/js/highcharts/themes/adaptive.js +130 -0
- package/assets/js/highcharts/themes/adaptive.src.js +1122 -0
- package/assets/js/highcharts/themes/avocado.js +9 -1
- package/assets/js/highcharts/themes/avocado.src.js +1 -1
- package/assets/js/highcharts/themes/brand-dark.js +9 -1
- package/assets/js/highcharts/themes/brand-dark.src.js +1 -1
- package/assets/js/highcharts/themes/brand-light.js +9 -1
- package/assets/js/highcharts/themes/brand-light.src.js +1 -1
- package/assets/js/highcharts/themes/dark-blue.js +9 -1
- package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
- package/assets/js/highcharts/themes/dark-green.js +9 -1
- package/assets/js/highcharts/themes/dark-green.src.js +1 -1
- package/assets/js/highcharts/themes/dark-unica.js +9 -1
- package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
- package/assets/js/highcharts/themes/gray.js +9 -1
- package/assets/js/highcharts/themes/gray.src.js +1 -1
- package/assets/js/highcharts/themes/grid-light.js +9 -1
- package/assets/js/highcharts/themes/grid-light.src.js +1 -1
- package/assets/js/highcharts/themes/grid.js +9 -1
- package/assets/js/highcharts/themes/grid.src.js +1 -1
- package/assets/js/highcharts/themes/high-contrast-dark.js +9 -1
- package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
- package/assets/js/highcharts/themes/high-contrast-light.js +9 -1
- package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
- package/assets/js/highcharts/themes/sand-signika.js +9 -1
- package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
- package/assets/js/highcharts/themes/skies.js +9 -1
- package/assets/js/highcharts/themes/skies.src.js +1 -1
- package/assets/js/highcharts/themes/sunset.js +9 -1
- package/assets/js/highcharts/themes/sunset.src.js +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS v12.
|
|
2
|
+
* @license Highcharts JS v12.3.0 (2025-06-21)
|
|
3
3
|
* @module highcharts/modules/exporting
|
|
4
4
|
* @requires highcharts
|
|
5
5
|
*
|
|
@@ -52,12 +52,8 @@ var external_highcharts_src_js_default_default = /*#__PURE__*/__webpack_require_
|
|
|
52
52
|
const external_highcharts_src_js_default_AST_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"].AST;
|
|
53
53
|
var external_highcharts_src_js_default_AST_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_AST_namespaceObject);
|
|
54
54
|
;// external ["../highcharts.src.js","default","Chart"]
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
y); return x
|
|
58
|
-
}
|
|
59
|
-
var y = (x) => (() => (x))
|
|
60
|
-
const external_highcharts_src_js_default_Chart_namespaceObject = x({ });
|
|
55
|
+
const external_highcharts_src_js_default_Chart_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"].Chart;
|
|
56
|
+
var external_highcharts_src_js_default_Chart_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_Chart_namespaceObject);
|
|
61
57
|
;// ./code/es-modules/Core/Chart/ChartNavigationComposition.js
|
|
62
58
|
/**
|
|
63
59
|
*
|
|
@@ -150,6 +146,169 @@ var ChartNavigationComposition;
|
|
|
150
146
|
* */
|
|
151
147
|
/* harmony default export */ const Chart_ChartNavigationComposition = (ChartNavigationComposition);
|
|
152
148
|
|
|
149
|
+
;// ./code/es-modules/Extensions/DownloadURL.js
|
|
150
|
+
/* *
|
|
151
|
+
*
|
|
152
|
+
* (c) 2015-2025 Oystein Moseng
|
|
153
|
+
*
|
|
154
|
+
* License: www.highcharts.com/license
|
|
155
|
+
*
|
|
156
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
157
|
+
*
|
|
158
|
+
* Mixin for downloading content in the browser
|
|
159
|
+
*
|
|
160
|
+
* */
|
|
161
|
+
|
|
162
|
+
/* *
|
|
163
|
+
*
|
|
164
|
+
* Imports
|
|
165
|
+
*
|
|
166
|
+
* */
|
|
167
|
+
|
|
168
|
+
const { isSafari, win, win: { document: doc } } = (external_highcharts_src_js_default_default());
|
|
169
|
+
|
|
170
|
+
const { error } = (external_highcharts_src_js_default_default());
|
|
171
|
+
/* *
|
|
172
|
+
*
|
|
173
|
+
* Constants
|
|
174
|
+
*
|
|
175
|
+
* */
|
|
176
|
+
const domurl = win.URL || win.webkitURL || win;
|
|
177
|
+
/* *
|
|
178
|
+
*
|
|
179
|
+
* Functions
|
|
180
|
+
*
|
|
181
|
+
* */
|
|
182
|
+
/**
|
|
183
|
+
* Convert base64 dataURL to Blob if supported, otherwise returns undefined.
|
|
184
|
+
*
|
|
185
|
+
* @private
|
|
186
|
+
* @function Highcharts.dataURLtoBlob
|
|
187
|
+
*
|
|
188
|
+
* @param {string} dataURL
|
|
189
|
+
* URL to convert.
|
|
190
|
+
*
|
|
191
|
+
* @return {string | undefined}
|
|
192
|
+
* Blob.
|
|
193
|
+
*/
|
|
194
|
+
function dataURLtoBlob(dataURL) {
|
|
195
|
+
const parts = dataURL
|
|
196
|
+
.replace(/filename=.*;/, '')
|
|
197
|
+
.match(/data:([^;]*)(;base64)?,([A-Z+\d\/]+)/i);
|
|
198
|
+
if (parts &&
|
|
199
|
+
parts.length > 3 &&
|
|
200
|
+
(win.atob) &&
|
|
201
|
+
win.ArrayBuffer &&
|
|
202
|
+
win.Uint8Array &&
|
|
203
|
+
win.Blob &&
|
|
204
|
+
(domurl.createObjectURL)) {
|
|
205
|
+
// Try to convert data URL to Blob
|
|
206
|
+
const binStr = win.atob(parts[3]), buf = new win.ArrayBuffer(binStr.length), binary = new win.Uint8Array(buf);
|
|
207
|
+
for (let i = 0; i < binary.length; ++i) {
|
|
208
|
+
binary[i] = binStr.charCodeAt(i);
|
|
209
|
+
}
|
|
210
|
+
return domurl
|
|
211
|
+
.createObjectURL(new win.Blob([binary], { 'type': parts[1] }));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Download a data URL in the browser. Can also take a blob as first param.
|
|
216
|
+
*
|
|
217
|
+
* @private
|
|
218
|
+
* @function Highcharts.downloadURL
|
|
219
|
+
*
|
|
220
|
+
* @param {string | global.URL} dataURL
|
|
221
|
+
* The dataURL/Blob to download.
|
|
222
|
+
* @param {string} filename
|
|
223
|
+
* The name of the resulting file (w/extension).
|
|
224
|
+
*/
|
|
225
|
+
function downloadURL(dataURL, filename) {
|
|
226
|
+
const nav = win.navigator, a = doc.createElement('a');
|
|
227
|
+
// IE specific blob implementation
|
|
228
|
+
// Don't use for normal dataURLs
|
|
229
|
+
if (typeof dataURL !== 'string' &&
|
|
230
|
+
!(dataURL instanceof String) &&
|
|
231
|
+
nav.msSaveOrOpenBlob) {
|
|
232
|
+
nav.msSaveOrOpenBlob(dataURL, filename);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
dataURL = '' + dataURL;
|
|
236
|
+
if (nav.userAgent.length > 1000 /* RegexLimits.shortLimit */) {
|
|
237
|
+
throw new Error('Input too long');
|
|
238
|
+
}
|
|
239
|
+
const // Some browsers have limitations for data URL lengths. Try to convert
|
|
240
|
+
// to Blob or fall back. Edge always needs that blob.
|
|
241
|
+
isOldEdgeBrowser = /Edge\/\d+/.test(nav.userAgent),
|
|
242
|
+
// Safari on iOS needs Blob in order to download PDF
|
|
243
|
+
safariBlob = (isSafari &&
|
|
244
|
+
typeof dataURL === 'string' &&
|
|
245
|
+
dataURL.indexOf('data:application/pdf') === 0);
|
|
246
|
+
if (safariBlob || isOldEdgeBrowser || dataURL.length > 2000000) {
|
|
247
|
+
dataURL = dataURLtoBlob(dataURL) || '';
|
|
248
|
+
if (!dataURL) {
|
|
249
|
+
throw new Error('Failed to convert to blob');
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// Try HTML5 download attr if supported
|
|
253
|
+
if (typeof a.download !== 'undefined') {
|
|
254
|
+
a.href = dataURL;
|
|
255
|
+
a.download = filename; // HTML5 download attribute
|
|
256
|
+
doc.body.appendChild(a);
|
|
257
|
+
a.click();
|
|
258
|
+
doc.body.removeChild(a);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
// No download attr, just opening data URI
|
|
262
|
+
try {
|
|
263
|
+
if (!win.open(dataURL, 'chart')) {
|
|
264
|
+
throw new Error('Failed to open window');
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
// If window.open failed, try location.href
|
|
269
|
+
win.location.href = dataURL;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Asynchronously downloads a script from a provided location.
|
|
275
|
+
*
|
|
276
|
+
* @private
|
|
277
|
+
* @function Highcharts.getScript
|
|
278
|
+
*
|
|
279
|
+
* @param {string} scriptLocation
|
|
280
|
+
* The location for the script to fetch.
|
|
281
|
+
*/
|
|
282
|
+
function getScript(scriptLocation) {
|
|
283
|
+
return new Promise((resolve, reject) => {
|
|
284
|
+
const head = doc.getElementsByTagName('head')[0], script = doc.createElement('script');
|
|
285
|
+
// Set type and location for the script
|
|
286
|
+
script.type = 'text/javascript';
|
|
287
|
+
script.src = scriptLocation;
|
|
288
|
+
// Resolve in case of a succesful script fetching
|
|
289
|
+
script.onload = () => {
|
|
290
|
+
resolve();
|
|
291
|
+
};
|
|
292
|
+
// Reject in case of fail
|
|
293
|
+
script.onerror = () => {
|
|
294
|
+
reject(error(`Error loading script ${scriptLocation}`));
|
|
295
|
+
};
|
|
296
|
+
// Append the newly created script
|
|
297
|
+
head.appendChild(script);
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/* *
|
|
301
|
+
*
|
|
302
|
+
* Default Export
|
|
303
|
+
*
|
|
304
|
+
* */
|
|
305
|
+
const DownloadURL = {
|
|
306
|
+
dataURLtoBlob,
|
|
307
|
+
downloadURL,
|
|
308
|
+
getScript
|
|
309
|
+
};
|
|
310
|
+
/* harmony default export */ const Extensions_DownloadURL = (DownloadURL);
|
|
311
|
+
|
|
153
312
|
;// ./code/es-modules/Extensions/Exporting/ExportingDefaults.js
|
|
154
313
|
/* *
|
|
155
314
|
*
|
|
@@ -198,7 +357,7 @@ const exporting = {
|
|
|
198
357
|
/**
|
|
199
358
|
* Allows the end user to sort the data table by clicking on column headers.
|
|
200
359
|
*
|
|
201
|
-
* @since
|
|
360
|
+
* @since 10.3.3
|
|
202
361
|
* @apioption exporting.allowTableSorting
|
|
203
362
|
*/
|
|
204
363
|
allowTableSorting: true,
|
|
@@ -213,7 +372,7 @@ const exporting = {
|
|
|
213
372
|
*
|
|
214
373
|
* @type {boolean}
|
|
215
374
|
* @default false
|
|
216
|
-
* @since
|
|
375
|
+
* @since 12.0.0
|
|
217
376
|
* @apioption exporting.applyStyleSheets
|
|
218
377
|
*/
|
|
219
378
|
/**
|
|
@@ -316,8 +475,8 @@ const exporting = {
|
|
|
316
475
|
* See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/fetch)
|
|
317
476
|
* for more information
|
|
318
477
|
*
|
|
319
|
-
* @type
|
|
320
|
-
* @since
|
|
478
|
+
* @type {Object}
|
|
479
|
+
* @since 11.3.0
|
|
321
480
|
* @apioption exporting.fetchOptions
|
|
322
481
|
*/
|
|
323
482
|
/**
|
|
@@ -333,6 +492,27 @@ const exporting = {
|
|
|
333
492
|
* @since 5.0.0
|
|
334
493
|
* @apioption exporting.libURL
|
|
335
494
|
*/
|
|
495
|
+
libURL: 'https://code.highcharts.com/12.3.0/lib/',
|
|
496
|
+
/**
|
|
497
|
+
* Whether the chart should be exported using the browser's built-in
|
|
498
|
+
* capabilities, allowing offline exports without requiring access to the
|
|
499
|
+
* Highcharts export server, or sent directly to the export server for
|
|
500
|
+
* processing and downloading.
|
|
501
|
+
*
|
|
502
|
+
* This option is different from `exporting.fallbackToExportServer`, which
|
|
503
|
+
* controls whether the export server should be used as a fallback only if
|
|
504
|
+
* the local export fails. In contrast, `exporting.local` explicitly defines
|
|
505
|
+
* which export method to use.
|
|
506
|
+
*
|
|
507
|
+
* @see [fallbackToExportServer](#exporting.fallbackToExportServer)
|
|
508
|
+
*
|
|
509
|
+
* @type {boolean}
|
|
510
|
+
* @default true
|
|
511
|
+
* @since 12.3.0
|
|
512
|
+
* @requires modules/exporting
|
|
513
|
+
* @apioption exporting.local
|
|
514
|
+
*/
|
|
515
|
+
local: true,
|
|
336
516
|
/**
|
|
337
517
|
* Analogous to [sourceWidth](#exporting.sourceWidth).
|
|
338
518
|
*
|
|
@@ -405,7 +585,7 @@ const exporting = {
|
|
|
405
585
|
* @sample {highcharts} highcharts/exporting/offline-download-pdffont/
|
|
406
586
|
* Download PDF in a language containing non-Latin characters.
|
|
407
587
|
*
|
|
408
|
-
* @since
|
|
588
|
+
* @since 10.0.0
|
|
409
589
|
* @requires modules/offline-exporting
|
|
410
590
|
*/
|
|
411
591
|
pdfFont: {
|
|
@@ -414,25 +594,25 @@ const exporting = {
|
|
|
414
594
|
* `bold` or `italic` are not defined, the `normal` font will be used
|
|
415
595
|
* for those too.
|
|
416
596
|
*
|
|
417
|
-
* @type string|undefined
|
|
597
|
+
* @type string | undefined
|
|
418
598
|
*/
|
|
419
599
|
normal: void 0,
|
|
420
600
|
/**
|
|
421
601
|
* The TTF font file for bold text.
|
|
422
602
|
*
|
|
423
|
-
* @type string|undefined
|
|
603
|
+
* @type string | undefined
|
|
424
604
|
*/
|
|
425
605
|
bold: void 0,
|
|
426
606
|
/**
|
|
427
607
|
* The TTF font file for bold and italic text.
|
|
428
608
|
*
|
|
429
|
-
* @type string|undefined
|
|
609
|
+
* @type string | undefined
|
|
430
610
|
*/
|
|
431
611
|
bolditalic: void 0,
|
|
432
612
|
/**
|
|
433
613
|
* The TTF font file for italic text.
|
|
434
614
|
*
|
|
435
|
-
* @type string|undefined
|
|
615
|
+
* @type string | undefined
|
|
436
616
|
*/
|
|
437
617
|
italic: void 0
|
|
438
618
|
},
|
|
@@ -535,7 +715,7 @@ const exporting = {
|
|
|
535
715
|
* @sample highcharts/exporting/buttons-contextbutton-symbol-custom/
|
|
536
716
|
* Custom shape as symbol
|
|
537
717
|
*
|
|
538
|
-
* @type {Highcharts.SymbolKeyValue|"menu"|"menuball"|string}
|
|
718
|
+
* @type {Highcharts.SymbolKeyValue | "menu" | "menuball" | string}
|
|
539
719
|
* @since 2.0
|
|
540
720
|
*/
|
|
541
721
|
symbol: 'menu',
|
|
@@ -556,12 +736,10 @@ const exporting = {
|
|
|
556
736
|
* By default, there is the "View in full screen" and "Print" menu
|
|
557
737
|
* items, plus one menu item for each of the available export types.
|
|
558
738
|
*
|
|
559
|
-
* @sample
|
|
560
|
-
* Menu item definitions
|
|
561
|
-
* @sample {highstock} highcharts/exporting/menuitemdefinitions/
|
|
562
|
-
* Menu item definitions
|
|
563
|
-
* @sample {highmaps} highcharts/exporting/menuitemdefinitions/
|
|
739
|
+
* @sample highcharts/exporting/menuitemdefinitions/
|
|
564
740
|
* Menu item definitions
|
|
741
|
+
* @sample highcharts/exporting/menuitemdefinitions-webp/
|
|
742
|
+
* Adding a custom menu item for WebP export
|
|
565
743
|
*
|
|
566
744
|
* @type {Array<string>}
|
|
567
745
|
* @default ["viewFullscreen", "printChart", "separator", "downloadPNG", "downloadJPEG", "downloadSVG"]
|
|
@@ -593,12 +771,10 @@ const exporting = {
|
|
|
593
771
|
* Custom text for the "exitFullScreen" can be set only in lang options
|
|
594
772
|
* (it is not a separate button).
|
|
595
773
|
*
|
|
596
|
-
* @sample
|
|
597
|
-
* Menu item definitions
|
|
598
|
-
* @sample {highstock} highcharts/exporting/menuitemdefinitions/
|
|
599
|
-
* Menu item definitions
|
|
600
|
-
* @sample {highmaps} highcharts/exporting/menuitemdefinitions/
|
|
774
|
+
* @sample highcharts/exporting/menuitemdefinitions/
|
|
601
775
|
* Menu item definitions
|
|
776
|
+
* @sample highcharts/exporting/menuitemdefinitions-webp/
|
|
777
|
+
* Adding a custom menu item for WebP export
|
|
602
778
|
*
|
|
603
779
|
*
|
|
604
780
|
* @type {Highcharts.Dictionary<Highcharts.ExportingMenuObject>}
|
|
@@ -612,9 +788,7 @@ const exporting = {
|
|
|
612
788
|
viewFullscreen: {
|
|
613
789
|
textKey: 'viewFullscreen',
|
|
614
790
|
onclick: function () {
|
|
615
|
-
|
|
616
|
-
this.fullscreen.toggle();
|
|
617
|
-
}
|
|
791
|
+
this.fullscreen?.toggle();
|
|
618
792
|
}
|
|
619
793
|
},
|
|
620
794
|
/**
|
|
@@ -623,7 +797,7 @@ const exporting = {
|
|
|
623
797
|
printChart: {
|
|
624
798
|
textKey: 'printChart',
|
|
625
799
|
onclick: function () {
|
|
626
|
-
this.print();
|
|
800
|
+
this.exporting?.print();
|
|
627
801
|
}
|
|
628
802
|
},
|
|
629
803
|
/**
|
|
@@ -637,8 +811,8 @@ const exporting = {
|
|
|
637
811
|
*/
|
|
638
812
|
downloadPNG: {
|
|
639
813
|
textKey: 'downloadPNG',
|
|
640
|
-
onclick: function () {
|
|
641
|
-
this.exportChart();
|
|
814
|
+
onclick: async function () {
|
|
815
|
+
await this.exporting?.exportChart();
|
|
642
816
|
}
|
|
643
817
|
},
|
|
644
818
|
/**
|
|
@@ -646,8 +820,8 @@ const exporting = {
|
|
|
646
820
|
*/
|
|
647
821
|
downloadJPEG: {
|
|
648
822
|
textKey: 'downloadJPEG',
|
|
649
|
-
onclick: function () {
|
|
650
|
-
this.exportChart({
|
|
823
|
+
onclick: async function () {
|
|
824
|
+
await this.exporting?.exportChart({
|
|
651
825
|
type: 'image/jpeg'
|
|
652
826
|
});
|
|
653
827
|
}
|
|
@@ -657,8 +831,8 @@ const exporting = {
|
|
|
657
831
|
*/
|
|
658
832
|
downloadPDF: {
|
|
659
833
|
textKey: 'downloadPDF',
|
|
660
|
-
onclick: function () {
|
|
661
|
-
this.exportChart({
|
|
834
|
+
onclick: async function () {
|
|
835
|
+
await this.exporting?.exportChart({
|
|
662
836
|
type: 'application/pdf'
|
|
663
837
|
});
|
|
664
838
|
}
|
|
@@ -668,8 +842,8 @@ const exporting = {
|
|
|
668
842
|
*/
|
|
669
843
|
downloadSVG: {
|
|
670
844
|
textKey: 'downloadSVG',
|
|
671
|
-
onclick: function () {
|
|
672
|
-
this.exportChart({
|
|
845
|
+
onclick: async function () {
|
|
846
|
+
await this.exporting?.exportChart({
|
|
673
847
|
type: 'image/svg+xml'
|
|
674
848
|
});
|
|
675
849
|
}
|
|
@@ -811,6 +985,7 @@ const navigation = {
|
|
|
811
985
|
*
|
|
812
986
|
* @sample highcharts/title/widthadjust
|
|
813
987
|
* Adjust the spacing when using text button
|
|
988
|
+
*
|
|
814
989
|
* @since 2.0
|
|
815
990
|
*/
|
|
816
991
|
buttonSpacing: 5,
|
|
@@ -847,7 +1022,7 @@ const navigation = {
|
|
|
847
1022
|
*
|
|
848
1023
|
* @type boolean
|
|
849
1024
|
* @default false
|
|
850
|
-
* @since
|
|
1025
|
+
* @since 10.3.0
|
|
851
1026
|
* @apioption navigation.buttonOptions.useHTML
|
|
852
1027
|
*/
|
|
853
1028
|
/**
|
|
@@ -887,7 +1062,7 @@ const navigation = {
|
|
|
887
1062
|
* @sample highcharts/navigation/buttonoptions-symbolfill/
|
|
888
1063
|
* Blue symbol stroke for one of the buttons
|
|
889
1064
|
*
|
|
890
|
-
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
1065
|
+
* @type {Highcharts.ColorString | Highcharts.GradientColorObject | Highcharts.PatternObject}
|
|
891
1066
|
* @since 2.0
|
|
892
1067
|
*/
|
|
893
1068
|
symbolFill: "#666666" /* Palette.neutralColor60 */,
|
|
@@ -927,7 +1102,7 @@ const navigation = {
|
|
|
927
1102
|
/**
|
|
928
1103
|
* The default fill exists only to capture hover events.
|
|
929
1104
|
*
|
|
930
|
-
* @type
|
|
1105
|
+
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
931
1106
|
*/
|
|
932
1107
|
fill: "#ffffff" /* Palette.backgroundColor */,
|
|
933
1108
|
/**
|
|
@@ -937,7 +1112,7 @@ const navigation = {
|
|
|
937
1112
|
/**
|
|
938
1113
|
* Default stroke for the buttons.
|
|
939
1114
|
*
|
|
940
|
-
* @type
|
|
1115
|
+
* @type {Highcharts.ColorString}
|
|
941
1116
|
*/
|
|
942
1117
|
stroke: 'none',
|
|
943
1118
|
/**
|
|
@@ -1196,7 +1371,7 @@ class Fullscreen {
|
|
|
1196
1371
|
* the fullscreen mode.
|
|
1197
1372
|
*
|
|
1198
1373
|
* @name Highcharts.Fullscreen#isOpen
|
|
1199
|
-
* @type {boolean|undefined}
|
|
1374
|
+
* @type {boolean | undefined}
|
|
1200
1375
|
* @since 8.0.1
|
|
1201
1376
|
*/
|
|
1202
1377
|
this.isOpen = false;
|
|
@@ -1338,7 +1513,7 @@ class Fullscreen {
|
|
|
1338
1513
|
* @requires modules/full-screen
|
|
1339
1514
|
*/
|
|
1340
1515
|
setButtonText() {
|
|
1341
|
-
const chart = this.chart, exportDivElements = chart.
|
|
1516
|
+
const chart = this.chart, exportDivElements = chart.exporting?.divElements, exportingOptions = chart.options.exporting, menuItems = (exportingOptions &&
|
|
1342
1517
|
exportingOptions.buttons &&
|
|
1343
1518
|
exportingOptions.buttons.contextButton.menuItems), lang = chart.options.lang;
|
|
1344
1519
|
if (exportingOptions &&
|
|
@@ -1461,7 +1636,7 @@ class Fullscreen {
|
|
|
1461
1636
|
* */
|
|
1462
1637
|
|
|
1463
1638
|
|
|
1464
|
-
const { win } = (external_highcharts_src_js_default_default());
|
|
1639
|
+
const { win: HttpUtilities_win } = (external_highcharts_src_js_default_default());
|
|
1465
1640
|
|
|
1466
1641
|
const { discardElement, objectEach } = (external_highcharts_src_js_default_default());
|
|
1467
1642
|
/* *
|
|
@@ -1475,10 +1650,10 @@ const { discardElement, objectEach } = (external_highcharts_src_js_default_defau
|
|
|
1475
1650
|
* @function Highcharts.ajax
|
|
1476
1651
|
*
|
|
1477
1652
|
* @param {Highcharts.AjaxSettingsObject} settings
|
|
1478
|
-
*
|
|
1653
|
+
* The Ajax settings to use.
|
|
1479
1654
|
*
|
|
1480
|
-
* @return {false|undefined}
|
|
1481
|
-
*
|
|
1655
|
+
* @return {false | undefined}
|
|
1656
|
+
* Returns false, if error occurred.
|
|
1482
1657
|
*/
|
|
1483
1658
|
function ajax(settings) {
|
|
1484
1659
|
const headers = {
|
|
@@ -1489,10 +1664,12 @@ function ajax(settings) {
|
|
|
1489
1664
|
}, r = new XMLHttpRequest();
|
|
1490
1665
|
/**
|
|
1491
1666
|
* Private error handler.
|
|
1667
|
+
*
|
|
1492
1668
|
* @private
|
|
1669
|
+
*
|
|
1493
1670
|
* @param {XMLHttpRequest} xhr
|
|
1494
1671
|
* Internal request object.
|
|
1495
|
-
* @param {string|Error} err
|
|
1672
|
+
* @param {string | Error} err
|
|
1496
1673
|
* Occurred error.
|
|
1497
1674
|
*/
|
|
1498
1675
|
function handleError(xhr, err) {
|
|
@@ -1548,11 +1725,12 @@ function ajax(settings) {
|
|
|
1548
1725
|
* Get a JSON resource over XHR, also supporting CORS without preflight.
|
|
1549
1726
|
*
|
|
1550
1727
|
* @function Highcharts.getJSON
|
|
1728
|
+
*
|
|
1551
1729
|
* @param {string} url
|
|
1552
|
-
*
|
|
1730
|
+
* The URL to load.
|
|
1553
1731
|
* @param {Function} success
|
|
1554
|
-
*
|
|
1555
|
-
*
|
|
1732
|
+
* The success callback. For error handling, use the `Highcharts.ajax` function
|
|
1733
|
+
* instead.
|
|
1556
1734
|
*/
|
|
1557
1735
|
function getJSON(url, success) {
|
|
1558
1736
|
HttpUtilities.ajax({
|
|
@@ -1567,46 +1745,44 @@ function getJSON(url, success) {
|
|
|
1567
1745
|
});
|
|
1568
1746
|
}
|
|
1569
1747
|
/**
|
|
1570
|
-
* The post utility
|
|
1748
|
+
* The post utility.
|
|
1571
1749
|
*
|
|
1572
1750
|
* @private
|
|
1573
1751
|
* @function Highcharts.post
|
|
1574
1752
|
*
|
|
1575
1753
|
* @param {string} url
|
|
1576
|
-
* Post URL
|
|
1577
|
-
*
|
|
1754
|
+
* Post URL.
|
|
1578
1755
|
* @param {Object} data
|
|
1579
|
-
* Post data
|
|
1580
|
-
*
|
|
1756
|
+
* Post data.
|
|
1581
1757
|
* @param {RequestInit} [fetchOptions]
|
|
1582
|
-
* Additional attributes for the post request
|
|
1583
|
-
*/
|
|
1584
|
-
/**
|
|
1585
|
-
*
|
|
1758
|
+
* Additional attributes for the post request.
|
|
1586
1759
|
*/
|
|
1587
|
-
function post(url, data, fetchOptions) {
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1760
|
+
async function post(url, data, fetchOptions) {
|
|
1761
|
+
// Prepare a form to send the data
|
|
1762
|
+
const formData = new HttpUtilities_win.FormData();
|
|
1763
|
+
// Add the data to the form
|
|
1764
|
+
objectEach(data, function (value, name) {
|
|
1765
|
+
formData.append(name, value);
|
|
1592
1766
|
});
|
|
1593
1767
|
formData.append('b64', 'true');
|
|
1594
|
-
|
|
1595
|
-
|
|
1768
|
+
// Send the POST
|
|
1769
|
+
const response = await HttpUtilities_win.fetch(url, {
|
|
1596
1770
|
method: 'POST',
|
|
1597
1771
|
body: formData,
|
|
1598
1772
|
...fetchOptions
|
|
1599
|
-
}).then((res) => {
|
|
1600
|
-
if (res.ok) {
|
|
1601
|
-
res.text().then((text) => {
|
|
1602
|
-
const link = document.createElement('a');
|
|
1603
|
-
link.href = `data:${type};base64,${text}`;
|
|
1604
|
-
link.download = filename;
|
|
1605
|
-
link.click();
|
|
1606
|
-
discardElement(link);
|
|
1607
|
-
});
|
|
1608
|
-
}
|
|
1609
1773
|
});
|
|
1774
|
+
// Check the response
|
|
1775
|
+
if (response.ok) {
|
|
1776
|
+
// Get the text from the response
|
|
1777
|
+
const text = await response.text();
|
|
1778
|
+
// Prepare self-click link with the Base64 representation
|
|
1779
|
+
const link = document.createElement('a');
|
|
1780
|
+
link.href = `data:${data.type};base64,${text}`;
|
|
1781
|
+
link.download = data.filename;
|
|
1782
|
+
link.click();
|
|
1783
|
+
// Remove the link
|
|
1784
|
+
discardElement(link);
|
|
1785
|
+
}
|
|
1610
1786
|
}
|
|
1611
1787
|
/* *
|
|
1612
1788
|
*
|
|
@@ -1630,29 +1806,35 @@ const HttpUtilities = {
|
|
|
1630
1806
|
* The payload to send.
|
|
1631
1807
|
*
|
|
1632
1808
|
* @name Highcharts.AjaxSettingsObject#data
|
|
1633
|
-
* @type {string|Highcharts.Dictionary<any
|
|
1809
|
+
* @type {string | Highcharts.Dictionary<any> | undefined}
|
|
1634
1810
|
*/ /**
|
|
1635
1811
|
* The data type expected.
|
|
1812
|
+
*
|
|
1636
1813
|
* @name Highcharts.AjaxSettingsObject#dataType
|
|
1637
|
-
* @type {"json"|"xml"|"text"|"octet"|undefined}
|
|
1814
|
+
* @type {"json" | "xml" | "text" | "octet" | undefined}
|
|
1638
1815
|
*/ /**
|
|
1639
1816
|
* Function to call on error.
|
|
1817
|
+
*
|
|
1640
1818
|
* @name Highcharts.AjaxSettingsObject#error
|
|
1641
|
-
* @type {Function|undefined}
|
|
1819
|
+
* @type {Function | undefined}
|
|
1642
1820
|
*/ /**
|
|
1643
1821
|
* The headers; keyed on header name.
|
|
1822
|
+
*
|
|
1644
1823
|
* @name Highcharts.AjaxSettingsObject#headers
|
|
1645
|
-
* @type {Highcharts.Dictionary<string
|
|
1824
|
+
* @type {Highcharts.Dictionary<string> | undefined}
|
|
1646
1825
|
*/ /**
|
|
1647
1826
|
* Function to call on success.
|
|
1827
|
+
*
|
|
1648
1828
|
* @name Highcharts.AjaxSettingsObject#success
|
|
1649
|
-
* @type {Function|undefined}
|
|
1829
|
+
* @type {Function | undefined}
|
|
1650
1830
|
*/ /**
|
|
1651
1831
|
* The HTTP method to use. For example GET or POST.
|
|
1832
|
+
*
|
|
1652
1833
|
* @name Highcharts.AjaxSettingsObject#type
|
|
1653
|
-
* @type {string|undefined}
|
|
1834
|
+
* @type {string | undefined}
|
|
1654
1835
|
*/ /**
|
|
1655
1836
|
* The URL to call.
|
|
1837
|
+
*
|
|
1656
1838
|
* @name Highcharts.AjaxSettingsObject#url
|
|
1657
1839
|
* @type {string}
|
|
1658
1840
|
*/
|
|
@@ -1675,69 +1857,267 @@ const HttpUtilities = {
|
|
|
1675
1857
|
|
|
1676
1858
|
|
|
1677
1859
|
|
|
1678
|
-
const { defaultOptions } = (external_highcharts_src_js_default_default());
|
|
1860
|
+
const { defaultOptions, setOptions } = (external_highcharts_src_js_default_default());
|
|
1679
1861
|
|
|
1862
|
+
const { downloadURL: Exporting_downloadURL, getScript: Exporting_getScript } = Extensions_DownloadURL;
|
|
1680
1863
|
|
|
1681
1864
|
|
|
1682
1865
|
|
|
1683
|
-
const { doc, SVG_NS, win: Exporting_win } = (external_highcharts_src_js_default_default());
|
|
1684
1866
|
|
|
1867
|
+
const { composed: Exporting_composed, doc: Exporting_doc, isFirefox, isMS, isSafari: Exporting_isSafari, SVG_NS, win: Exporting_win } = (external_highcharts_src_js_default_default());
|
|
1685
1868
|
|
|
1686
|
-
|
|
1869
|
+
|
|
1870
|
+
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 } = (external_highcharts_src_js_default_default());
|
|
1871
|
+
external_highcharts_src_js_default_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');
|
|
1872
|
+
external_highcharts_src_js_default_AST_default().allowedTags.push('desc', 'clippath', 'fedropshadow', 'femorphology', 'g', 'image');
|
|
1687
1873
|
/* *
|
|
1688
1874
|
*
|
|
1689
|
-
*
|
|
1875
|
+
* Constants
|
|
1690
1876
|
*
|
|
1691
1877
|
* */
|
|
1692
|
-
|
|
1693
|
-
|
|
1878
|
+
const Exporting_domurl = Exporting_win.URL || Exporting_win.webkitURL || Exporting_win;
|
|
1879
|
+
/* *
|
|
1880
|
+
*
|
|
1881
|
+
* Class
|
|
1882
|
+
*
|
|
1883
|
+
* */
|
|
1884
|
+
/**
|
|
1885
|
+
* The Exporting class provides methods for exporting charts to images. If the
|
|
1886
|
+
* exporting module is loaded, this class is instantiated on the chart and
|
|
1887
|
+
* available through the `chart.exporting` property. Read more about the
|
|
1888
|
+
* [exporting module](https://www.highcharts.com/docs/export-module-overview).
|
|
1889
|
+
*
|
|
1890
|
+
* @class
|
|
1891
|
+
* @name Highcharts.Exporting
|
|
1892
|
+
*
|
|
1893
|
+
* @param {Highcharts.Chart} chart
|
|
1894
|
+
* The chart instance.
|
|
1895
|
+
*
|
|
1896
|
+
*/
|
|
1897
|
+
class Exporting {
|
|
1694
1898
|
/* *
|
|
1695
1899
|
*
|
|
1696
|
-
*
|
|
1900
|
+
* Constructor
|
|
1697
1901
|
*
|
|
1698
1902
|
* */
|
|
1903
|
+
constructor(chart, options) {
|
|
1904
|
+
this.options = {};
|
|
1905
|
+
this.chart = chart;
|
|
1906
|
+
this.options = options;
|
|
1907
|
+
this.btnCount = 0;
|
|
1908
|
+
this.buttonOffset = 0;
|
|
1909
|
+
this.divElements = [];
|
|
1910
|
+
this.svgElements = [];
|
|
1911
|
+
}
|
|
1699
1912
|
/* *
|
|
1700
1913
|
*
|
|
1701
|
-
*
|
|
1914
|
+
* Static Functions
|
|
1702
1915
|
*
|
|
1703
1916
|
* */
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
/-/, // In Firefox, both hyphened and camelCased names are listed
|
|
1707
|
-
/^(clipPath|cssText|d|height|width)$/, // Full words
|
|
1708
|
-
/^font$/, // More specific props are set
|
|
1709
|
-
/[lL]ogical(Width|Height)$/,
|
|
1710
|
-
/^parentRule$/,
|
|
1711
|
-
/^(cssRules|ownerRules)$/, // #19516 read-only properties
|
|
1712
|
-
/perspective/,
|
|
1713
|
-
/TapHighlightColor/,
|
|
1714
|
-
/^transition/,
|
|
1715
|
-
/^length$/, // #7700
|
|
1716
|
-
/^\d+$/ // #17538
|
|
1717
|
-
];
|
|
1718
|
-
// These ones are translated to attributes rather than styles
|
|
1719
|
-
const inlineToAttributes = [
|
|
1720
|
-
'fill',
|
|
1721
|
-
'stroke',
|
|
1722
|
-
'strokeLinecap',
|
|
1723
|
-
'strokeLinejoin',
|
|
1724
|
-
'strokeWidth',
|
|
1725
|
-
'textAnchor',
|
|
1726
|
-
'x',
|
|
1727
|
-
'y'
|
|
1728
|
-
];
|
|
1729
|
-
Exporting.inlineAllowlist = [];
|
|
1730
|
-
const unstyledElements = [
|
|
1731
|
-
'clipPath',
|
|
1732
|
-
'defs',
|
|
1733
|
-
'desc'
|
|
1734
|
-
];
|
|
1735
|
-
/* *
|
|
1917
|
+
/**
|
|
1918
|
+
* Make hyphenated property names out of camelCase.
|
|
1736
1919
|
*
|
|
1737
|
-
*
|
|
1920
|
+
* @private
|
|
1921
|
+
* @static
|
|
1922
|
+
* @function Highcharts.Exporting#hyphenate
|
|
1738
1923
|
*
|
|
1739
|
-
*
|
|
1740
|
-
|
|
1924
|
+
* @param {string} property
|
|
1925
|
+
* Property name in camelCase.
|
|
1926
|
+
*
|
|
1927
|
+
* @return {string}
|
|
1928
|
+
* Hyphenated property name.
|
|
1929
|
+
*
|
|
1930
|
+
* @requires modules/exporting
|
|
1931
|
+
*/
|
|
1932
|
+
static hyphenate(property) {
|
|
1933
|
+
return property.replace(/[A-Z]/g, function (match) {
|
|
1934
|
+
return '-' + match.toLowerCase();
|
|
1935
|
+
});
|
|
1936
|
+
}
|
|
1937
|
+
/**
|
|
1938
|
+
* Get data:URL from image URL.
|
|
1939
|
+
*
|
|
1940
|
+
* @private
|
|
1941
|
+
* @static
|
|
1942
|
+
* @async
|
|
1943
|
+
* @function Highcharts.Exporting#imageToDataURL
|
|
1944
|
+
*
|
|
1945
|
+
* @param {string} imageURL
|
|
1946
|
+
* The address or URL of the image.
|
|
1947
|
+
* @param {number} scale
|
|
1948
|
+
* The scale of the image.
|
|
1949
|
+
* @param {string} imageType
|
|
1950
|
+
* The export type of the image.
|
|
1951
|
+
*
|
|
1952
|
+
* @requires modules/exporting
|
|
1953
|
+
*/
|
|
1954
|
+
static async imageToDataURL(imageURL, scale, imageType) {
|
|
1955
|
+
// First, wait for the image to be loaded
|
|
1956
|
+
const img = await Exporting.loadImage(imageURL), canvas = Exporting_doc.createElement('canvas'), ctx = canvas?.getContext('2d');
|
|
1957
|
+
if (!ctx) {
|
|
1958
|
+
throw new Error('No canvas found!');
|
|
1959
|
+
}
|
|
1960
|
+
else {
|
|
1961
|
+
canvas.height = img.height * scale;
|
|
1962
|
+
canvas.width = img.width * scale;
|
|
1963
|
+
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
1964
|
+
// Now we try to get the contents of the canvas
|
|
1965
|
+
return canvas.toDataURL(imageType);
|
|
1966
|
+
}
|
|
1967
|
+
}
|
|
1968
|
+
/**
|
|
1969
|
+
* Loads an image from the provided URL.
|
|
1970
|
+
*
|
|
1971
|
+
* @private
|
|
1972
|
+
* @static
|
|
1973
|
+
* @function Highcharts.Exporting#loadImage
|
|
1974
|
+
*
|
|
1975
|
+
* @param {string} imageURL
|
|
1976
|
+
* The address or URL of the image.
|
|
1977
|
+
*
|
|
1978
|
+
* @return {Promise<HTMLImageElement>}
|
|
1979
|
+
* Returns a Promise that resolves with the loaded HTMLImageElement.
|
|
1980
|
+
*
|
|
1981
|
+
* @requires modules/exporting
|
|
1982
|
+
*/
|
|
1983
|
+
static loadImage(imageURL) {
|
|
1984
|
+
return new Promise((resolve, reject) => {
|
|
1985
|
+
// Create an image
|
|
1986
|
+
const image = new Exporting_win.Image();
|
|
1987
|
+
// Must be set prior to loading image source
|
|
1988
|
+
image.crossOrigin = 'Anonymous';
|
|
1989
|
+
// Return the image in case of success
|
|
1990
|
+
image.onload = () => {
|
|
1991
|
+
// IE bug where image is not always ready despite load event
|
|
1992
|
+
setTimeout(() => {
|
|
1993
|
+
resolve(image);
|
|
1994
|
+
}, Exporting.loadEventDeferDelay);
|
|
1995
|
+
};
|
|
1996
|
+
// Reject in case of fail
|
|
1997
|
+
image.onerror = (error) => {
|
|
1998
|
+
reject(error);
|
|
1999
|
+
};
|
|
2000
|
+
// Provide the image URL
|
|
2001
|
+
image.src = imageURL;
|
|
2002
|
+
});
|
|
2003
|
+
}
|
|
2004
|
+
/**
|
|
2005
|
+
* Prepares and returns the image export options with default values where
|
|
2006
|
+
* necessary.
|
|
2007
|
+
*
|
|
2008
|
+
* @private
|
|
2009
|
+
* @static
|
|
2010
|
+
* @function Highcharts.Exporting#prepareImageOptions
|
|
2011
|
+
*
|
|
2012
|
+
* @param {Highcharts.ExportingOptions} exportingOptions
|
|
2013
|
+
* The exporting options.
|
|
2014
|
+
*
|
|
2015
|
+
* @return {Exporting.ImageOptions}
|
|
2016
|
+
* The finalized image export options with ensured values.
|
|
2017
|
+
*
|
|
2018
|
+
* @requires modules/exporting
|
|
2019
|
+
*/
|
|
2020
|
+
static prepareImageOptions(exportingOptions) {
|
|
2021
|
+
const type = exportingOptions?.type || 'image/png', libURL = (exportingOptions?.libURL ||
|
|
2022
|
+
defaultOptions.exporting?.libURL);
|
|
2023
|
+
return {
|
|
2024
|
+
type,
|
|
2025
|
+
filename: ((exportingOptions?.filename || 'chart') +
|
|
2026
|
+
'.' +
|
|
2027
|
+
(type === 'image/svg+xml' ? 'svg' : type.split('/')[1])),
|
|
2028
|
+
scale: exportingOptions?.scale || 1,
|
|
2029
|
+
// Allow libURL to end with or without fordward slash
|
|
2030
|
+
libURL: libURL?.slice(-1) !== '/' ? libURL + '/' : libURL
|
|
2031
|
+
};
|
|
2032
|
+
}
|
|
2033
|
+
/**
|
|
2034
|
+
* A collection of fixes on the produced SVG to account for expand
|
|
2035
|
+
* properties and browser bugs. Returns a cleaned SVG.
|
|
2036
|
+
*
|
|
2037
|
+
* @private
|
|
2038
|
+
* @static
|
|
2039
|
+
* @function Highcharts.Exporting#sanitizeSVG
|
|
2040
|
+
*
|
|
2041
|
+
* @param {string} svg
|
|
2042
|
+
* SVG code to sanitize.
|
|
2043
|
+
* @param {Highcharts.Options} options
|
|
2044
|
+
* Chart options to apply.
|
|
2045
|
+
*
|
|
2046
|
+
* @return {string}
|
|
2047
|
+
* Sanitized SVG code.
|
|
2048
|
+
*
|
|
2049
|
+
* @requires modules/exporting
|
|
2050
|
+
*/
|
|
2051
|
+
static sanitizeSVG(svg, options) {
|
|
2052
|
+
const split = svg.indexOf('</svg>') + 6, useForeignObject = svg.indexOf('<foreignObject') > -1;
|
|
2053
|
+
let html = svg.substr(split);
|
|
2054
|
+
// Remove any HTML added to the container after the SVG (#894, #9087)
|
|
2055
|
+
svg = svg.substr(0, split);
|
|
2056
|
+
if (useForeignObject) {
|
|
2057
|
+
// Some tags needs to be closed in xhtml (#13726)
|
|
2058
|
+
svg = svg.replace(/(<(?:img|br).*?(?=\>))>/g, '$1 />');
|
|
2059
|
+
// Move HTML into a foreignObject
|
|
2060
|
+
}
|
|
2061
|
+
else if (html && options?.exporting?.allowHTML) {
|
|
2062
|
+
html = '<foreignObject x="0" y="0" ' +
|
|
2063
|
+
'width="' + options.chart.width + '" ' +
|
|
2064
|
+
'height="' + options.chart.height + '">' +
|
|
2065
|
+
'<body xmlns="http://www.w3.org/1999/xhtml">' +
|
|
2066
|
+
// Some tags needs to be closed in xhtml (#13726)
|
|
2067
|
+
html.replace(/(<(?:img|br).*?(?=\>))>/g, '$1 />') +
|
|
2068
|
+
'</body>' +
|
|
2069
|
+
'</foreignObject>';
|
|
2070
|
+
svg = svg.replace('</svg>', html + '</svg>');
|
|
2071
|
+
}
|
|
2072
|
+
svg = svg
|
|
2073
|
+
.replace(/zIndex="[^"]+"/g, '')
|
|
2074
|
+
.replace(/symbolName="[^"]+"/g, '')
|
|
2075
|
+
.replace(/jQuery\d+="[^"]+"/g, '')
|
|
2076
|
+
.replace(/url\(("|")(.*?)("|")\;?\)/g, 'url($2)')
|
|
2077
|
+
.replace(/url\([^#]+#/g, 'url(#')
|
|
2078
|
+
.replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
|
|
2079
|
+
.replace(/ (NS\d+\:)?href=/g, ' xlink:href=') // #3567
|
|
2080
|
+
.replace(/\n+/g, ' ')
|
|
2081
|
+
// Replace HTML entities, issue #347
|
|
2082
|
+
.replace(/ /g, '\u00A0') // No-break space
|
|
2083
|
+
.replace(/­/g, '\u00AD'); // Soft hyphen
|
|
2084
|
+
return svg;
|
|
2085
|
+
}
|
|
2086
|
+
/**
|
|
2087
|
+
* Get blob URL from SVG code. Falls back to normal data URI.
|
|
2088
|
+
*
|
|
2089
|
+
* @private
|
|
2090
|
+
* @static
|
|
2091
|
+
* @function Highcharts.Exporting#svgToDataURL
|
|
2092
|
+
*
|
|
2093
|
+
* @param {string} svg
|
|
2094
|
+
* SVG to get the URL from.
|
|
2095
|
+
*
|
|
2096
|
+
* @return {string}
|
|
2097
|
+
* The data URL.
|
|
2098
|
+
*
|
|
2099
|
+
* @requires modules/exporting
|
|
2100
|
+
*/
|
|
2101
|
+
static svgToDataURL(svg) {
|
|
2102
|
+
// Webkit and not chrome
|
|
2103
|
+
const userAgent = Exporting_win.navigator.userAgent;
|
|
2104
|
+
const webKit = (userAgent.indexOf('WebKit') > -1 &&
|
|
2105
|
+
userAgent.indexOf('Chrome') < 0);
|
|
2106
|
+
try {
|
|
2107
|
+
// Safari requires data URI since it doesn't allow navigation to
|
|
2108
|
+
// blob URLs. ForeignObjects also don't work well in Blobs in Chrome
|
|
2109
|
+
// (#14780).
|
|
2110
|
+
if (!webKit && svg.indexOf('<foreignObject') === -1) {
|
|
2111
|
+
return Exporting_domurl.createObjectURL(new Exporting_win.Blob([svg], {
|
|
2112
|
+
type: 'image/svg+xml;charset-utf-16'
|
|
2113
|
+
}));
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
2116
|
+
catch {
|
|
2117
|
+
// Ignore
|
|
2118
|
+
}
|
|
2119
|
+
return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);
|
|
2120
|
+
}
|
|
1741
2121
|
/* *
|
|
1742
2122
|
*
|
|
1743
2123
|
* Functions
|
|
@@ -1747,26 +2127,21 @@ var Exporting;
|
|
|
1747
2127
|
* Add the export button to the chart, with options.
|
|
1748
2128
|
*
|
|
1749
2129
|
* @private
|
|
1750
|
-
* @function Highcharts.
|
|
1751
|
-
*
|
|
2130
|
+
* @function Highcharts.Exporting#addButton
|
|
2131
|
+
*
|
|
2132
|
+
* @param {Highcharts.ExportingButtonOptions} options
|
|
2133
|
+
* The exporting button options object.
|
|
2134
|
+
*
|
|
1752
2135
|
* @requires modules/exporting
|
|
1753
2136
|
*/
|
|
1754
|
-
|
|
1755
|
-
const
|
|
2137
|
+
addButton(options) {
|
|
2138
|
+
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;
|
|
1756
2139
|
let symbol;
|
|
1757
|
-
if (!chart.btnCount) {
|
|
1758
|
-
chart.btnCount = 0;
|
|
1759
|
-
}
|
|
1760
|
-
// Keeps references to the button elements
|
|
1761
|
-
if (!chart.exportDivElements) {
|
|
1762
|
-
chart.exportDivElements = [];
|
|
1763
|
-
chart.exportSVGElements = [];
|
|
1764
|
-
}
|
|
1765
2140
|
if (btnOptions.enabled === false || !btnOptions.theme) {
|
|
1766
2141
|
return;
|
|
1767
2142
|
}
|
|
1768
2143
|
const theme = chart.styledMode ? {} : btnOptions.theme;
|
|
1769
|
-
let callback;
|
|
2144
|
+
let callback = (() => { });
|
|
1770
2145
|
if (onclick) {
|
|
1771
2146
|
callback = function (e) {
|
|
1772
2147
|
if (e) {
|
|
@@ -1781,7 +2156,7 @@ var Exporting;
|
|
|
1781
2156
|
if (e) {
|
|
1782
2157
|
e.stopPropagation();
|
|
1783
2158
|
}
|
|
1784
|
-
|
|
2159
|
+
exporting.contextMenu(button.menuClassName, menuItems, button.translateX || 0, button.translateY || 0, button.width || 0, button.height || 0, button);
|
|
1785
2160
|
button.setState(2);
|
|
1786
2161
|
};
|
|
1787
2162
|
}
|
|
@@ -1796,18 +2171,19 @@ var Exporting;
|
|
|
1796
2171
|
});
|
|
1797
2172
|
}
|
|
1798
2173
|
const button = renderer
|
|
1799
|
-
.button(btnOptions.text, 0, 0, callback, theme, void 0, void 0, void 0, void 0, btnOptions.useHTML)
|
|
1800
|
-
.addClass(options.className)
|
|
2174
|
+
.button(btnOptions.text || '', 0, 0, callback, theme, void 0, void 0, void 0, void 0, btnOptions.useHTML)
|
|
2175
|
+
.addClass(options.className || '')
|
|
1801
2176
|
.attr({
|
|
1802
|
-
title: pick(chart.options.lang[btnOptions._titleKey ||
|
|
2177
|
+
title: pick(chart.options.lang[(btnOptions._titleKey ||
|
|
2178
|
+
btnOptions.titleKey)], '')
|
|
1803
2179
|
});
|
|
1804
2180
|
button.menuClassName = (options.menuClassName ||
|
|
1805
|
-
'highcharts-menu-' +
|
|
2181
|
+
'highcharts-menu-' + exporting.btnCount++);
|
|
1806
2182
|
if (btnOptions.symbol) {
|
|
1807
2183
|
symbol = renderer
|
|
1808
|
-
.symbol(btnOptions.symbol, Math.round((btnOptions.symbolX || 0) - (symbolSize / 2)), Math.round((btnOptions.symbolY || 0) - (symbolSize / 2)), symbolSize, symbolSize
|
|
2184
|
+
.symbol(btnOptions.symbol, Math.round((btnOptions.symbolX || 0) - (symbolSize / 2)), Math.round((btnOptions.symbolY || 0) - (symbolSize / 2)), symbolSize, symbolSize,
|
|
1809
2185
|
// If symbol is an image, scale it (#7957)
|
|
1810
|
-
|
|
2186
|
+
{
|
|
1811
2187
|
width: symbolSize,
|
|
1812
2188
|
height: symbolSize
|
|
1813
2189
|
})
|
|
@@ -1825,73 +2201,69 @@ var Exporting;
|
|
|
1825
2201
|
}
|
|
1826
2202
|
}
|
|
1827
2203
|
button
|
|
1828
|
-
.add(
|
|
2204
|
+
.add(exporting.group)
|
|
1829
2205
|
.align(extend(btnOptions, {
|
|
1830
2206
|
width: button.width,
|
|
1831
|
-
x: pick(btnOptions.x,
|
|
2207
|
+
x: pick(btnOptions.x, exporting.buttonOffset) // #1654
|
|
1832
2208
|
}), true, 'spacingBox');
|
|
1833
|
-
|
|
2209
|
+
exporting.buttonOffset += (((button.width || 0) + (btnOptions.buttonSpacing || 0)) *
|
|
1834
2210
|
(btnOptions.align === 'right' ? -1 : 1));
|
|
1835
|
-
|
|
2211
|
+
exporting.svgElements.push(button, symbol);
|
|
1836
2212
|
}
|
|
1837
2213
|
/**
|
|
1838
2214
|
* Clean up after printing a chart.
|
|
1839
2215
|
*
|
|
1840
|
-
* @function Highcharts#afterPrint
|
|
1841
|
-
*
|
|
1842
2216
|
* @private
|
|
1843
|
-
*
|
|
1844
|
-
* @param {Highcharts.Chart} chart
|
|
1845
|
-
* Chart that was (or suppose to be) printed
|
|
2217
|
+
* @function Highcharts.Exporting#afterPrint
|
|
1846
2218
|
*
|
|
1847
2219
|
* @emits Highcharts.Chart#event:afterPrint
|
|
2220
|
+
*
|
|
2221
|
+
* @requires modules/exporting
|
|
1848
2222
|
*/
|
|
1849
|
-
|
|
1850
|
-
const chart = this;
|
|
1851
|
-
if (!
|
|
2223
|
+
afterPrint() {
|
|
2224
|
+
const chart = this.chart;
|
|
2225
|
+
if (!this.printReverseInfo) {
|
|
1852
2226
|
return void 0;
|
|
1853
2227
|
}
|
|
1854
|
-
const { childNodes, origDisplay, resetParams } =
|
|
2228
|
+
const { childNodes, origDisplay, resetParams } = this.printReverseInfo;
|
|
1855
2229
|
// Put the chart back in
|
|
1856
|
-
|
|
2230
|
+
this.moveContainers(chart.renderTo);
|
|
1857
2231
|
// Restore all body content
|
|
1858
2232
|
[].forEach.call(childNodes, function (node, i) {
|
|
1859
2233
|
if (node.nodeType === 1) {
|
|
1860
2234
|
node.style.display = (origDisplay[i] || '');
|
|
1861
2235
|
}
|
|
1862
2236
|
});
|
|
1863
|
-
|
|
2237
|
+
this.isPrinting = false;
|
|
1864
2238
|
// Reset printMaxWidth
|
|
1865
2239
|
if (resetParams) {
|
|
1866
2240
|
chart.setSize.apply(chart, resetParams);
|
|
1867
2241
|
}
|
|
1868
|
-
delete
|
|
1869
|
-
printingChart = void 0;
|
|
2242
|
+
delete this.printReverseInfo;
|
|
2243
|
+
Exporting.printingChart = void 0;
|
|
1870
2244
|
Exporting_fireEvent(chart, 'afterPrint');
|
|
1871
2245
|
}
|
|
1872
2246
|
/**
|
|
1873
2247
|
* Prepare chart and document before printing a chart.
|
|
1874
2248
|
*
|
|
1875
|
-
* @function Highcharts#beforePrint
|
|
1876
|
-
*
|
|
1877
2249
|
* @private
|
|
1878
|
-
*
|
|
2250
|
+
* @function Highcharts.Exporting#beforePrint
|
|
1879
2251
|
*
|
|
1880
2252
|
* @emits Highcharts.Chart#event:beforePrint
|
|
2253
|
+
*
|
|
2254
|
+
* @requires modules/exporting
|
|
1881
2255
|
*/
|
|
1882
|
-
|
|
1883
|
-
const chart = this, body =
|
|
2256
|
+
beforePrint() {
|
|
2257
|
+
const chart = this.chart, body = Exporting_doc.body, printMaxWidth = this.options.printMaxWidth, printReverseInfo = {
|
|
1884
2258
|
childNodes: body.childNodes,
|
|
1885
2259
|
origDisplay: [],
|
|
1886
2260
|
resetParams: void 0
|
|
1887
2261
|
};
|
|
1888
|
-
|
|
2262
|
+
this.isPrinting = true;
|
|
1889
2263
|
chart.pointer?.reset(void 0, 0);
|
|
1890
2264
|
Exporting_fireEvent(chart, 'beforePrint');
|
|
1891
2265
|
// Handle printMaxWidth
|
|
1892
|
-
|
|
1893
|
-
chart.chartWidth > printMaxWidth;
|
|
1894
|
-
if (handleMaxWidth) {
|
|
2266
|
+
if (printMaxWidth && chart.chartWidth > printMaxWidth) {
|
|
1895
2267
|
printReverseInfo.resetParams = [
|
|
1896
2268
|
chart.options.chart.width,
|
|
1897
2269
|
void 0,
|
|
@@ -1907,131 +2279,45 @@ var Exporting;
|
|
|
1907
2279
|
}
|
|
1908
2280
|
});
|
|
1909
2281
|
// Pull out the chart
|
|
1910
|
-
|
|
2282
|
+
this.moveContainers(body);
|
|
1911
2283
|
// Storage details for undo action after printing
|
|
1912
|
-
|
|
2284
|
+
this.printReverseInfo = printReverseInfo;
|
|
1913
2285
|
}
|
|
1914
2286
|
/**
|
|
2287
|
+
* Display a popup menu for choosing the export type.
|
|
2288
|
+
*
|
|
1915
2289
|
* @private
|
|
2290
|
+
* @function Highcharts.Exporting#contextMenu
|
|
2291
|
+
*
|
|
2292
|
+
* @param {string} className
|
|
2293
|
+
* An identifier for the menu.
|
|
2294
|
+
* @param {Array<(string | Highcharts.ExportingMenuObject)>} items
|
|
2295
|
+
* A collection with text and onclicks for the items.
|
|
2296
|
+
* @param {number} x
|
|
2297
|
+
* The x position of the opener button.
|
|
2298
|
+
* @param {number} y
|
|
2299
|
+
* The y position of the opener button.
|
|
2300
|
+
* @param {number} width
|
|
2301
|
+
* The width of the opener button.
|
|
2302
|
+
* @param {number} height
|
|
2303
|
+
* The height of the opener button.
|
|
2304
|
+
* @param {SVGElement} button
|
|
2305
|
+
* The SVG button element.
|
|
2306
|
+
*
|
|
2307
|
+
* @emits Highcharts.Chart#event:exportMenuHidden
|
|
2308
|
+
* @emits Highcharts.Chart#event:exportMenuShown
|
|
2309
|
+
*
|
|
2310
|
+
* @requires modules/exporting
|
|
1916
2311
|
*/
|
|
1917
|
-
|
|
1918
|
-
const
|
|
1919
|
-
composition.renderExporting();
|
|
1920
|
-
Exporting_addEvent(chart, 'redraw', composition.renderExporting);
|
|
1921
|
-
// Destroy the export elements at chart destroy
|
|
1922
|
-
Exporting_addEvent(chart, 'destroy', composition.destroyExport);
|
|
1923
|
-
// Uncomment this to see a button directly below the chart, for quick
|
|
1924
|
-
// testing of export
|
|
1925
|
-
/*
|
|
1926
|
-
let button, viewImage, viewSource;
|
|
1927
|
-
if (!chart.renderer.forExport) {
|
|
1928
|
-
viewImage = function () {
|
|
1929
|
-
let div = doc.createElement('div');
|
|
1930
|
-
div.innerHTML = chart.getSVGForExport();
|
|
1931
|
-
chart.renderTo.parentNode.appendChild(div);
|
|
1932
|
-
};
|
|
1933
|
-
|
|
1934
|
-
viewSource = function () {
|
|
1935
|
-
let pre = doc.createElement('pre');
|
|
1936
|
-
pre.innerHTML = chart.getSVGForExport()
|
|
1937
|
-
.replace(/</g, '\n<')
|
|
1938
|
-
.replace(/>/g, '>');
|
|
1939
|
-
chart.renderTo.parentNode.appendChild(pre);
|
|
1940
|
-
};
|
|
1941
|
-
|
|
1942
|
-
viewImage();
|
|
1943
|
-
|
|
1944
|
-
// View SVG Image
|
|
1945
|
-
button = doc.createElement('button');
|
|
1946
|
-
button.innerHTML = 'View SVG Image';
|
|
1947
|
-
chart.renderTo.parentNode.appendChild(button);
|
|
1948
|
-
button.onclick = viewImage;
|
|
1949
|
-
|
|
1950
|
-
// View SVG Source
|
|
1951
|
-
button = doc.createElement('button');
|
|
1952
|
-
button.innerHTML = 'View SVG Source';
|
|
1953
|
-
chart.renderTo.parentNode.appendChild(button);
|
|
1954
|
-
button.onclick = viewSource;
|
|
1955
|
-
}
|
|
1956
|
-
//*/
|
|
1957
|
-
}
|
|
1958
|
-
/**
|
|
1959
|
-
* @private
|
|
1960
|
-
*/
|
|
1961
|
-
function compose(ChartClass, SVGRendererClass) {
|
|
1962
|
-
Exporting_ExportingSymbols.compose(SVGRendererClass);
|
|
1963
|
-
Exporting_Fullscreen.compose(ChartClass);
|
|
1964
|
-
const chartProto = ChartClass.prototype;
|
|
1965
|
-
if (!chartProto.exportChart) {
|
|
1966
|
-
chartProto.afterPrint = afterPrint;
|
|
1967
|
-
chartProto.exportChart = exportChart;
|
|
1968
|
-
chartProto.inlineStyles = inlineStyles;
|
|
1969
|
-
chartProto.print = print;
|
|
1970
|
-
chartProto.sanitizeSVG = sanitizeSVG;
|
|
1971
|
-
chartProto.getChartHTML = getChartHTML;
|
|
1972
|
-
chartProto.getSVG = getSVG;
|
|
1973
|
-
chartProto.getSVGForExport = getSVGForExport;
|
|
1974
|
-
chartProto.getFilename = getFilename;
|
|
1975
|
-
chartProto.moveContainers = moveContainers;
|
|
1976
|
-
chartProto.beforePrint = beforePrint;
|
|
1977
|
-
chartProto.contextMenu = contextMenu;
|
|
1978
|
-
chartProto.addButton = addButton;
|
|
1979
|
-
chartProto.destroyExport = destroyExport;
|
|
1980
|
-
chartProto.renderExporting = renderExporting;
|
|
1981
|
-
chartProto.resolveCSSVariables = resolveCSSVariables;
|
|
1982
|
-
chartProto.callbacks.push(chartCallback);
|
|
1983
|
-
Exporting_addEvent(ChartClass, 'init', onChartInit);
|
|
1984
|
-
Exporting_addEvent(ChartClass, 'layOutTitle', onChartLayOutTitle);
|
|
1985
|
-
if ((external_highcharts_src_js_default_default()).isSafari) {
|
|
1986
|
-
Exporting_win.matchMedia('print').addListener(function (mqlEvent) {
|
|
1987
|
-
if (!printingChart) {
|
|
1988
|
-
return void 0;
|
|
1989
|
-
}
|
|
1990
|
-
if (mqlEvent.matches) {
|
|
1991
|
-
printingChart.beforePrint();
|
|
1992
|
-
}
|
|
1993
|
-
else {
|
|
1994
|
-
printingChart.afterPrint();
|
|
1995
|
-
}
|
|
1996
|
-
});
|
|
1997
|
-
}
|
|
1998
|
-
defaultOptions.exporting = merge(Exporting_ExportingDefaults.exporting, defaultOptions.exporting);
|
|
1999
|
-
defaultOptions.lang = merge(Exporting_ExportingDefaults.lang, defaultOptions.lang);
|
|
2000
|
-
// Buttons and menus are collected in a separate config option set
|
|
2001
|
-
// called 'navigation'. This can be extended later to add control
|
|
2002
|
-
// buttons like zoom and pan right click menus.
|
|
2003
|
-
defaultOptions.navigation = merge(Exporting_ExportingDefaults.navigation, defaultOptions.navigation);
|
|
2004
|
-
}
|
|
2005
|
-
}
|
|
2006
|
-
Exporting.compose = compose;
|
|
2007
|
-
/**
|
|
2008
|
-
* Display a popup menu for choosing the export type.
|
|
2009
|
-
*
|
|
2010
|
-
* @private
|
|
2011
|
-
* @function Highcharts.Chart#contextMenu
|
|
2012
|
-
* @param {string} className
|
|
2013
|
-
* An identifier for the menu.
|
|
2014
|
-
* @param {Array<string|Highcharts.ExportingMenuObject>} items
|
|
2015
|
-
* A collection with text and onclicks for the items.
|
|
2016
|
-
* @param {number} x
|
|
2017
|
-
* The x position of the opener button
|
|
2018
|
-
* @param {number} y
|
|
2019
|
-
* The y position of the opener button
|
|
2020
|
-
* @param {number} width
|
|
2021
|
-
* The width of the opener button
|
|
2022
|
-
* @param {number} height
|
|
2023
|
-
* The height of the opener button
|
|
2024
|
-
* @requires modules/exporting
|
|
2025
|
-
*/
|
|
2026
|
-
function contextMenu(className, items, x, y, width, height, button) {
|
|
2027
|
-
const chart = this, navOptions = chart.options.navigation, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, cacheName = 'cache-' + className,
|
|
2312
|
+
contextMenu(className, items, x, y, width, height, button) {
|
|
2313
|
+
const exporting = this, chart = exporting.chart, navOptions = chart.options.navigation, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, cacheName = 'cache-' + className,
|
|
2028
2314
|
// For mouse leave detection
|
|
2029
2315
|
menuPadding = Math.max(width, height);
|
|
2030
2316
|
let innerMenu, menu = chart[cacheName];
|
|
2031
2317
|
// Create the menu only the first time
|
|
2032
2318
|
if (!menu) {
|
|
2033
2319
|
// Create a HTML element above the SVG
|
|
2034
|
-
|
|
2320
|
+
exporting.contextMenuEl = chart[cacheName] = menu =
|
|
2035
2321
|
createElement('div', {
|
|
2036
2322
|
className: className
|
|
2037
2323
|
}, {
|
|
@@ -2049,10 +2335,10 @@ var Exporting;
|
|
|
2049
2335
|
// Presentational CSS
|
|
2050
2336
|
if (!chart.styledMode) {
|
|
2051
2337
|
css(innerMenu, extend({
|
|
2052
|
-
MozBoxShadow: '3px 3px 10px #
|
|
2053
|
-
WebkitBoxShadow: '3px 3px 10px #
|
|
2054
|
-
boxShadow: '3px 3px 10px #
|
|
2055
|
-
}, navOptions
|
|
2338
|
+
MozBoxShadow: '3px 3px 10px #0008',
|
|
2339
|
+
WebkitBoxShadow: '3px 3px 10px #0008',
|
|
2340
|
+
boxShadow: '3px 3px 10px #0008'
|
|
2341
|
+
}, navOptions?.menuStyle || {}));
|
|
2056
2342
|
}
|
|
2057
2343
|
// Hide on mouse out
|
|
2058
2344
|
menu.hideMenu = function () {
|
|
@@ -2060,35 +2346,38 @@ var Exporting;
|
|
|
2060
2346
|
if (button) {
|
|
2061
2347
|
button.setState(0);
|
|
2062
2348
|
}
|
|
2063
|
-
chart.
|
|
2349
|
+
if (chart.exporting) {
|
|
2350
|
+
chart.exporting.openMenu = false;
|
|
2351
|
+
}
|
|
2064
2352
|
// #10361, #9998
|
|
2065
2353
|
css(chart.renderTo, { overflow: 'hidden' });
|
|
2066
2354
|
css(chart.container, { overflow: 'hidden' });
|
|
2067
|
-
|
|
2355
|
+
Exporting_clearTimeout(menu.hideTimer);
|
|
2068
2356
|
Exporting_fireEvent(chart, 'exportMenuHidden');
|
|
2069
2357
|
};
|
|
2070
2358
|
// Hide the menu some time after mouse leave (#1357)
|
|
2071
|
-
|
|
2359
|
+
exporting.events?.push(Exporting_addEvent(menu, 'mouseleave', function () {
|
|
2072
2360
|
menu.hideTimer = Exporting_win.setTimeout(menu.hideMenu, 500);
|
|
2073
2361
|
}), Exporting_addEvent(menu, 'mouseenter', function () {
|
|
2074
|
-
|
|
2362
|
+
Exporting_clearTimeout(menu.hideTimer);
|
|
2075
2363
|
}),
|
|
2076
2364
|
// Hide it on clicking or touching outside the menu (#2258,
|
|
2077
2365
|
// #2335, #2407)
|
|
2078
|
-
Exporting_addEvent(
|
|
2366
|
+
Exporting_addEvent(Exporting_doc, 'mouseup', function (e) {
|
|
2079
2367
|
if (!chart.pointer?.inClass(e.target, className)) {
|
|
2080
2368
|
menu.hideMenu();
|
|
2081
2369
|
}
|
|
2082
2370
|
}), Exporting_addEvent(menu, 'click', function () {
|
|
2083
|
-
if (chart.openMenu) {
|
|
2371
|
+
if (chart.exporting?.openMenu) {
|
|
2084
2372
|
menu.hideMenu();
|
|
2085
2373
|
}
|
|
2086
2374
|
}));
|
|
2087
2375
|
// Create the items
|
|
2088
2376
|
items.forEach(function (item) {
|
|
2089
2377
|
if (typeof item === 'string') {
|
|
2090
|
-
|
|
2091
|
-
.menuItemDefinitions[item];
|
|
2378
|
+
if (exporting.options.menuItemDefinitions?.[item]) {
|
|
2379
|
+
item = exporting.options.menuItemDefinitions[item];
|
|
2380
|
+
}
|
|
2092
2381
|
}
|
|
2093
2382
|
if (isObject(item, true)) {
|
|
2094
2383
|
let element;
|
|
@@ -2099,7 +2388,7 @@ var Exporting;
|
|
|
2099
2388
|
// When chart initialized with the table, wrong button
|
|
2100
2389
|
// text displayed, #14352.
|
|
2101
2390
|
if (item.textKey === 'viewData' &&
|
|
2102
|
-
|
|
2391
|
+
exporting.isDataTableVisible) {
|
|
2103
2392
|
item.textKey = 'hideData';
|
|
2104
2393
|
}
|
|
2105
2394
|
element = createElement('li', {
|
|
@@ -2110,44 +2399,45 @@ var Exporting;
|
|
|
2110
2399
|
}
|
|
2111
2400
|
menu.hideMenu();
|
|
2112
2401
|
if (typeof item !== 'string' && item.onclick) {
|
|
2402
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
2113
2403
|
item.onclick.apply(chart, arguments);
|
|
2114
2404
|
}
|
|
2115
2405
|
}
|
|
2116
2406
|
}, void 0, innerMenu);
|
|
2117
|
-
external_highcharts_src_js_default_AST_default().setElementHTML(element, item.text ||
|
|
2118
|
-
chart.options.lang[item.textKey]);
|
|
2407
|
+
external_highcharts_src_js_default_AST_default().setElementHTML(element, item.text || chart.options.lang[item.textKey]);
|
|
2119
2408
|
if (!chart.styledMode) {
|
|
2120
2409
|
element.onmouseover = function () {
|
|
2121
|
-
css(this, navOptions
|
|
2410
|
+
css(this, navOptions?.menuItemHoverStyle || {});
|
|
2122
2411
|
};
|
|
2123
2412
|
element.onmouseout = function () {
|
|
2124
|
-
css(this, navOptions
|
|
2413
|
+
css(this, navOptions?.menuItemStyle || {});
|
|
2125
2414
|
};
|
|
2126
2415
|
css(element, extend({
|
|
2127
2416
|
cursor: 'pointer'
|
|
2128
|
-
}, navOptions
|
|
2417
|
+
}, navOptions?.menuItemStyle || {}));
|
|
2129
2418
|
}
|
|
2130
2419
|
}
|
|
2131
2420
|
// Keep references to menu divs to be able to destroy them
|
|
2132
|
-
|
|
2421
|
+
exporting.divElements.push(element);
|
|
2133
2422
|
}
|
|
2134
2423
|
});
|
|
2135
2424
|
// Keep references to menu and innerMenu div to be able to destroy
|
|
2136
2425
|
// them
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2426
|
+
exporting.divElements.push(innerMenu, menu);
|
|
2427
|
+
exporting.menuHeight = menu.offsetHeight;
|
|
2428
|
+
exporting.menuWidth = menu.offsetWidth;
|
|
2140
2429
|
}
|
|
2141
2430
|
const menuStyle = { display: 'block' };
|
|
2142
2431
|
// If outside right, right align it
|
|
2143
|
-
if (x + (
|
|
2432
|
+
if (x + (exporting.menuWidth || 0) > chartWidth) {
|
|
2144
2433
|
menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';
|
|
2145
2434
|
}
|
|
2146
2435
|
else {
|
|
2147
2436
|
menuStyle.left = (x - menuPadding) + 'px';
|
|
2148
2437
|
}
|
|
2149
2438
|
// If outside bottom, bottom align it
|
|
2150
|
-
if (y + height + (
|
|
2439
|
+
if (y + height + (exporting.menuHeight || 0) >
|
|
2440
|
+
chartHeight &&
|
|
2151
2441
|
button.alignOptions?.verticalAlign !== 'top') {
|
|
2152
2442
|
menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';
|
|
2153
2443
|
}
|
|
@@ -2158,106 +2448,272 @@ var Exporting;
|
|
|
2158
2448
|
// #10361, #9998
|
|
2159
2449
|
css(chart.renderTo, { overflow: '' });
|
|
2160
2450
|
css(chart.container, { overflow: '' });
|
|
2161
|
-
chart.
|
|
2451
|
+
if (chart.exporting) {
|
|
2452
|
+
chart.exporting.openMenu = true;
|
|
2453
|
+
}
|
|
2162
2454
|
Exporting_fireEvent(chart, 'exportMenuShown');
|
|
2163
2455
|
}
|
|
2164
2456
|
/**
|
|
2165
2457
|
* Destroy the export buttons.
|
|
2458
|
+
*
|
|
2166
2459
|
* @private
|
|
2167
|
-
* @function Highcharts.
|
|
2460
|
+
* @function Highcharts.Exporting#destroy
|
|
2461
|
+
*
|
|
2168
2462
|
* @param {global.Event} [e]
|
|
2463
|
+
* Event object.
|
|
2464
|
+
*
|
|
2169
2465
|
* @requires modules/exporting
|
|
2170
2466
|
*/
|
|
2171
|
-
|
|
2172
|
-
const chart = e ? e.target :
|
|
2467
|
+
destroy(e) {
|
|
2468
|
+
const exporting = this, chart = e ? e.target : exporting.chart, { divElements, events, svgElements } = exporting;
|
|
2173
2469
|
let cacheName;
|
|
2174
2470
|
// Destroy the extra buttons added
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
delete chart[cacheName];
|
|
2183
|
-
}
|
|
2184
|
-
exportSVGElements[i] = elem.destroy();
|
|
2471
|
+
svgElements.forEach((elem, i) => {
|
|
2472
|
+
// Destroy and null the svg elements
|
|
2473
|
+
if (elem) { // #1822
|
|
2474
|
+
elem.onclick = elem.ontouchstart = null;
|
|
2475
|
+
cacheName = 'cache-' + elem.menuClassName;
|
|
2476
|
+
if (chart[cacheName]) {
|
|
2477
|
+
delete chart[cacheName];
|
|
2185
2478
|
}
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
}
|
|
2479
|
+
svgElements[i] = elem.destroy();
|
|
2480
|
+
}
|
|
2481
|
+
});
|
|
2482
|
+
svgElements.length = 0;
|
|
2189
2483
|
// Destroy the exporting group
|
|
2190
|
-
if (
|
|
2191
|
-
|
|
2192
|
-
delete
|
|
2484
|
+
if (exporting.group) {
|
|
2485
|
+
exporting.group.destroy();
|
|
2486
|
+
delete exporting.group;
|
|
2193
2487
|
}
|
|
2194
2488
|
// Destroy the divs for the menu
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
}
|
|
2214
|
-
if (exportEvents) {
|
|
2215
|
-
exportEvents.forEach(function (unbind) {
|
|
2489
|
+
divElements.forEach(function (elem, i) {
|
|
2490
|
+
if (elem) {
|
|
2491
|
+
// Remove the event handler
|
|
2492
|
+
Exporting_clearTimeout(elem.hideTimer); // #5427
|
|
2493
|
+
removeEvent(elem, 'mouseleave');
|
|
2494
|
+
// Remove inline events
|
|
2495
|
+
divElements[i] =
|
|
2496
|
+
elem.onmouseout =
|
|
2497
|
+
elem.onmouseover =
|
|
2498
|
+
elem.ontouchstart =
|
|
2499
|
+
elem.onclick = null;
|
|
2500
|
+
// Destroy the div by moving to garbage bin
|
|
2501
|
+
Exporting_discardElement(elem);
|
|
2502
|
+
}
|
|
2503
|
+
});
|
|
2504
|
+
divElements.length = 0;
|
|
2505
|
+
if (events) {
|
|
2506
|
+
events.forEach(function (unbind) {
|
|
2216
2507
|
unbind();
|
|
2217
2508
|
});
|
|
2218
|
-
|
|
2509
|
+
events.length = 0;
|
|
2510
|
+
}
|
|
2511
|
+
}
|
|
2512
|
+
/**
|
|
2513
|
+
* Get data URL to an image of an SVG and call download on its options
|
|
2514
|
+
* object:
|
|
2515
|
+
*
|
|
2516
|
+
* - **filename:** Name of resulting downloaded file without extension.
|
|
2517
|
+
* Default is based on the chart title.
|
|
2518
|
+
* - **type:** File type of resulting download. Default is `image/png`.
|
|
2519
|
+
* - **scale:** Scaling factor of downloaded image compared to source.
|
|
2520
|
+
* Default is `2`.
|
|
2521
|
+
* - **libURL:** URL pointing to location of dependency scripts to download
|
|
2522
|
+
* on demand. Default is the exporting.libURL option of the global
|
|
2523
|
+
* Highcharts options pointing to our server.
|
|
2524
|
+
*
|
|
2525
|
+
* @async
|
|
2526
|
+
* @private
|
|
2527
|
+
* @function Highcharts.Exporting#downloadSVG
|
|
2528
|
+
*
|
|
2529
|
+
* @param {string} svg
|
|
2530
|
+
* The generated SVG.
|
|
2531
|
+
* @param {Highcharts.ExportingOptions} exportingOptions
|
|
2532
|
+
* The exporting options.
|
|
2533
|
+
*
|
|
2534
|
+
* @requires modules/exporting
|
|
2535
|
+
*/
|
|
2536
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
2537
|
+
async downloadSVG(svg, exportingOptions) {
|
|
2538
|
+
const eventArgs = {
|
|
2539
|
+
svg,
|
|
2540
|
+
exportingOptions,
|
|
2541
|
+
exporting: this
|
|
2542
|
+
};
|
|
2543
|
+
// Fire a custom event before the export starts
|
|
2544
|
+
Exporting_fireEvent(Exporting.prototype, 'downloadSVG', eventArgs);
|
|
2545
|
+
// If the event was prevented, do not proceed with the export
|
|
2546
|
+
if (eventArgs.defaultPrevented) {
|
|
2547
|
+
return;
|
|
2548
|
+
}
|
|
2549
|
+
// Get the final image options
|
|
2550
|
+
const { type, filename, scale, libURL } = Exporting.prepareImageOptions(exportingOptions);
|
|
2551
|
+
let svgURL;
|
|
2552
|
+
// Initiate download depending on file type
|
|
2553
|
+
if (type === 'application/pdf') {
|
|
2554
|
+
// Error in case of offline-exporting module is not loaded
|
|
2555
|
+
throw new Error('Offline exporting logic for PDF type is not found.');
|
|
2556
|
+
}
|
|
2557
|
+
else if (type === 'image/svg+xml') {
|
|
2558
|
+
// SVG download. In this case, we want to use Microsoft specific
|
|
2559
|
+
// Blob if available
|
|
2560
|
+
if (typeof Exporting_win.MSBlobBuilder !== 'undefined') {
|
|
2561
|
+
const blob = new Exporting_win.MSBlobBuilder();
|
|
2562
|
+
blob.append(svg);
|
|
2563
|
+
svgURL = blob.getBlob('image/svg+xml');
|
|
2564
|
+
}
|
|
2565
|
+
else {
|
|
2566
|
+
svgURL = Exporting.svgToDataURL(svg);
|
|
2567
|
+
}
|
|
2568
|
+
// Download the chart
|
|
2569
|
+
Exporting_downloadURL(svgURL, filename);
|
|
2570
|
+
}
|
|
2571
|
+
else {
|
|
2572
|
+
// PNG/JPEG download - create bitmap from SVG
|
|
2573
|
+
svgURL = Exporting.svgToDataURL(svg);
|
|
2574
|
+
try {
|
|
2575
|
+
Exporting.objectURLRevoke = true;
|
|
2576
|
+
// First, try to get PNG by rendering on canvas
|
|
2577
|
+
const dataURL = await Exporting.imageToDataURL(svgURL, scale, type);
|
|
2578
|
+
Exporting_downloadURL(dataURL, filename);
|
|
2579
|
+
}
|
|
2580
|
+
catch (error) {
|
|
2581
|
+
// No need for the below logic to run in case no canvas is
|
|
2582
|
+
// found
|
|
2583
|
+
if (error.message === 'No canvas found!') {
|
|
2584
|
+
throw error;
|
|
2585
|
+
}
|
|
2586
|
+
// Or in case of exceeding the input length
|
|
2587
|
+
if (svg.length > 100000000 /* RegexLimits.svgLimit */) {
|
|
2588
|
+
throw new Error('Input too long');
|
|
2589
|
+
}
|
|
2590
|
+
// Failed due to tainted canvas
|
|
2591
|
+
// Create new and untainted canvas
|
|
2592
|
+
const canvas = Exporting_doc.createElement('canvas'), ctx = canvas.getContext('2d'), matchedImageWidth = svg.match(
|
|
2593
|
+
// eslint-disable-next-line max-len
|
|
2594
|
+
/^<svg[^>]*\s{,1000}width\s{,1000}=\s{,1000}\"?(\d+)\"?[^>]*>/), matchedImageHeight = svg.match(
|
|
2595
|
+
// eslint-disable-next-line max-len
|
|
2596
|
+
/^<svg[^>]*\s{0,1000}height\s{,1000}=\s{,1000}\"?(\d+)\"?[^>]*>/);
|
|
2597
|
+
if (ctx &&
|
|
2598
|
+
matchedImageWidth &&
|
|
2599
|
+
matchedImageHeight) {
|
|
2600
|
+
const imageWidth = +matchedImageWidth[1] * scale, imageHeight = +matchedImageHeight[1] * scale, downloadWithCanVG = () => {
|
|
2601
|
+
const v = Exporting_win.canvg.Canvg.fromString(ctx, svg);
|
|
2602
|
+
v.start();
|
|
2603
|
+
Exporting_downloadURL(Exporting_win.navigator.msSaveOrOpenBlob ?
|
|
2604
|
+
canvas.msToBlob() :
|
|
2605
|
+
canvas.toDataURL(type), filename);
|
|
2606
|
+
};
|
|
2607
|
+
canvas.width = imageWidth;
|
|
2608
|
+
canvas.height = imageHeight;
|
|
2609
|
+
// Must load canVG first if not found. Don't destroy the
|
|
2610
|
+
// object URL yet since we are doing things
|
|
2611
|
+
// asynchronously
|
|
2612
|
+
if (!Exporting_win.canvg) {
|
|
2613
|
+
Exporting.objectURLRevoke = true;
|
|
2614
|
+
await Exporting_getScript(libURL + 'canvg.js');
|
|
2615
|
+
}
|
|
2616
|
+
// Use loaded canvg
|
|
2617
|
+
downloadWithCanVG();
|
|
2618
|
+
}
|
|
2619
|
+
}
|
|
2620
|
+
finally {
|
|
2621
|
+
if (Exporting.objectURLRevoke) {
|
|
2622
|
+
try {
|
|
2623
|
+
Exporting_domurl.revokeObjectURL(svgURL);
|
|
2624
|
+
}
|
|
2625
|
+
catch {
|
|
2626
|
+
// Ignore
|
|
2627
|
+
}
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2219
2630
|
}
|
|
2220
2631
|
}
|
|
2221
2632
|
/**
|
|
2222
|
-
*
|
|
2223
|
-
*
|
|
2633
|
+
* Submit an SVG version of the chart along with some parameters for local
|
|
2634
|
+
* conversion (PNG, JPEG, and SVG) or conversion on a server (PDF).
|
|
2224
2635
|
*
|
|
2225
2636
|
* @sample highcharts/members/chart-exportchart/
|
|
2226
|
-
*
|
|
2637
|
+
* Export with no options
|
|
2227
2638
|
* @sample highcharts/members/chart-exportchart-filename/
|
|
2228
|
-
*
|
|
2639
|
+
* PDF type and custom filename
|
|
2640
|
+
* @sample highcharts/exporting/menuitemdefinitions-webp/
|
|
2641
|
+
* Export to WebP
|
|
2229
2642
|
* @sample highcharts/members/chart-exportchart-custom-background/
|
|
2230
|
-
*
|
|
2643
|
+
* Different chart background in export
|
|
2231
2644
|
* @sample stock/members/chart-exportchart/
|
|
2232
|
-
*
|
|
2645
|
+
* Export with Highcharts Stock
|
|
2646
|
+
*
|
|
2647
|
+
* @async
|
|
2648
|
+
* @function Highcharts.Exporting#exportChart
|
|
2649
|
+
*
|
|
2650
|
+
* @param {Highcharts.ExportingOptions} [exportingOptions]
|
|
2651
|
+
* Exporting options in addition to those defined in
|
|
2652
|
+
* [exporting](https://api.highcharts.com/highcharts/exporting).
|
|
2653
|
+
* @param {Highcharts.Options} [chartOptions]
|
|
2654
|
+
* Additional chart options for the exported chart. For example a different
|
|
2655
|
+
* background color can be added here, or `dataLabels` for export only.
|
|
2656
|
+
*
|
|
2657
|
+
* @requires modules/exporting
|
|
2658
|
+
*/
|
|
2659
|
+
async exportChart(exportingOptions, chartOptions) {
|
|
2660
|
+
// Merge the options
|
|
2661
|
+
exportingOptions = merge(this.options, exportingOptions);
|
|
2662
|
+
// If local if expected
|
|
2663
|
+
if (exportingOptions.local) {
|
|
2664
|
+
// Trigger the local export logic
|
|
2665
|
+
await this.localExport(exportingOptions, chartOptions || {});
|
|
2666
|
+
}
|
|
2667
|
+
else {
|
|
2668
|
+
// Get the SVG representation
|
|
2669
|
+
const svg = this.getSVGForExport(exportingOptions, chartOptions);
|
|
2670
|
+
// Do the post
|
|
2671
|
+
if (exportingOptions.url) {
|
|
2672
|
+
await Core_HttpUtilities.post(exportingOptions.url, {
|
|
2673
|
+
filename: exportingOptions.filename ?
|
|
2674
|
+
exportingOptions.filename.replace(/\//g, '-') :
|
|
2675
|
+
this.getFilename(),
|
|
2676
|
+
type: exportingOptions.type,
|
|
2677
|
+
width: exportingOptions.width,
|
|
2678
|
+
scale: exportingOptions.scale,
|
|
2679
|
+
svg
|
|
2680
|
+
}, exportingOptions.fetchOptions);
|
|
2681
|
+
}
|
|
2682
|
+
}
|
|
2683
|
+
}
|
|
2684
|
+
/**
|
|
2685
|
+
* Handles the fallback to the export server when a local export fails.
|
|
2233
2686
|
*
|
|
2234
|
-
* @
|
|
2687
|
+
* @private
|
|
2688
|
+
* @async
|
|
2689
|
+
* @function Highcharts.Exporting#fallbackToServer
|
|
2235
2690
|
*
|
|
2236
2691
|
* @param {Highcharts.ExportingOptions} exportingOptions
|
|
2237
|
-
*
|
|
2238
|
-
*
|
|
2692
|
+
* The exporting options.
|
|
2693
|
+
* @param {Error} err
|
|
2694
|
+
* The error that caused the local export to fail.
|
|
2239
2695
|
*
|
|
2240
|
-
* @
|
|
2241
|
-
*
|
|
2242
|
-
* different background color can be added here, or `dataLabels` for
|
|
2243
|
-
* export only.
|
|
2696
|
+
* @return {Promise<void>}
|
|
2697
|
+
* A promise that resolves when the fallback process is complete.
|
|
2244
2698
|
*
|
|
2245
2699
|
* @requires modules/exporting
|
|
2246
2700
|
*/
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2701
|
+
async fallbackToServer(exportingOptions, err) {
|
|
2702
|
+
if (exportingOptions.fallbackToExportServer === false) {
|
|
2703
|
+
if (exportingOptions.error) {
|
|
2704
|
+
exportingOptions.error(exportingOptions, err);
|
|
2705
|
+
}
|
|
2706
|
+
else {
|
|
2707
|
+
// Fallback disabled
|
|
2708
|
+
Exporting_error(28, true);
|
|
2709
|
+
}
|
|
2710
|
+
}
|
|
2711
|
+
else if (exportingOptions.type === 'application/pdf') {
|
|
2712
|
+
// The local must be false to fallback to server for PDF export
|
|
2713
|
+
exportingOptions.local = false;
|
|
2714
|
+
// Allow fallbacking to server only for PDFs that failed locally
|
|
2715
|
+
await this.exportChart(exportingOptions);
|
|
2716
|
+
}
|
|
2261
2717
|
}
|
|
2262
2718
|
/**
|
|
2263
2719
|
* Return the unfiltered innerHTML of the chart container. Used as hook for
|
|
@@ -2265,38 +2721,43 @@ var Exporting;
|
|
|
2265
2721
|
*
|
|
2266
2722
|
* @see Chart#getSVG
|
|
2267
2723
|
*
|
|
2268
|
-
* @function Highcharts.
|
|
2724
|
+
* @function Highcharts.Exporting#getChartHTML
|
|
2725
|
+
*
|
|
2726
|
+
* @param {boolean} [applyStyleSheets]
|
|
2727
|
+
* whether or not to apply the style sheets.
|
|
2269
2728
|
*
|
|
2270
2729
|
* @return {string}
|
|
2271
2730
|
* The unfiltered SVG of the chart.
|
|
2272
2731
|
*
|
|
2273
2732
|
* @requires modules/exporting
|
|
2274
2733
|
*/
|
|
2275
|
-
|
|
2734
|
+
getChartHTML(applyStyleSheets) {
|
|
2735
|
+
const chart = this.chart;
|
|
2276
2736
|
if (applyStyleSheets) {
|
|
2277
2737
|
this.inlineStyles();
|
|
2278
2738
|
}
|
|
2279
2739
|
this.resolveCSSVariables();
|
|
2280
|
-
return
|
|
2740
|
+
return chart.container.innerHTML;
|
|
2281
2741
|
}
|
|
2282
2742
|
/**
|
|
2283
2743
|
* Get the default file name used for exported charts. By default it creates
|
|
2284
2744
|
* a file name based on the chart title.
|
|
2285
2745
|
*
|
|
2286
|
-
* @function Highcharts.
|
|
2746
|
+
* @function Highcharts.Exporting#getFilename
|
|
2287
2747
|
*
|
|
2288
|
-
* @return {string}
|
|
2748
|
+
* @return {string}
|
|
2749
|
+
* A file name without extension.
|
|
2289
2750
|
*
|
|
2290
2751
|
* @requires modules/exporting
|
|
2291
2752
|
*/
|
|
2292
|
-
|
|
2293
|
-
const
|
|
2294
|
-
let filename = this.options.
|
|
2753
|
+
getFilename() {
|
|
2754
|
+
const titleText = this.chart.userOptions.title?.text;
|
|
2755
|
+
let filename = this.options.filename;
|
|
2295
2756
|
if (filename) {
|
|
2296
2757
|
return filename.replace(/\//g, '-');
|
|
2297
2758
|
}
|
|
2298
|
-
if (typeof
|
|
2299
|
-
filename =
|
|
2759
|
+
if (typeof titleText === 'string') {
|
|
2760
|
+
filename = titleText
|
|
2300
2761
|
.toLowerCase()
|
|
2301
2762
|
.replace(/<\/?[^>]+(>|$)/g, '') // Strip HTML tags
|
|
2302
2763
|
.replace(/[\s_]+/g, '-')
|
|
@@ -2315,45 +2776,45 @@ var Exporting;
|
|
|
2315
2776
|
* Return an SVG representation of the chart.
|
|
2316
2777
|
*
|
|
2317
2778
|
* @sample highcharts/members/chart-getsvg/
|
|
2318
|
-
*
|
|
2779
|
+
* View the SVG from a button
|
|
2319
2780
|
*
|
|
2320
|
-
* @function Highcharts.
|
|
2781
|
+
* @function Highcharts.Exporting#getSVG
|
|
2321
2782
|
*
|
|
2322
2783
|
* @param {Highcharts.Options} [chartOptions]
|
|
2323
|
-
*
|
|
2324
|
-
*
|
|
2325
|
-
*
|
|
2326
|
-
*
|
|
2784
|
+
* Additional chart options for the generated SVG representation. For
|
|
2785
|
+
* collections like `xAxis`, `yAxis` or `series`, the additional options is
|
|
2786
|
+
* either merged in to the original item of the same `id`, or to the first
|
|
2787
|
+
* item if a common id is not found.
|
|
2327
2788
|
*
|
|
2328
2789
|
* @return {string}
|
|
2329
|
-
*
|
|
2790
|
+
* The SVG representation of the rendered chart.
|
|
2330
2791
|
*
|
|
2331
2792
|
* @emits Highcharts.Chart#event:getSVG
|
|
2332
2793
|
*
|
|
2333
2794
|
* @requires modules/exporting
|
|
2334
2795
|
*/
|
|
2335
|
-
|
|
2336
|
-
const chart = this;
|
|
2796
|
+
getSVG(chartOptions) {
|
|
2797
|
+
const chart = this.chart;
|
|
2337
2798
|
let svg, seriesOptions,
|
|
2338
2799
|
// Copy the options and add extra options
|
|
2339
2800
|
options = merge(chart.options, chartOptions);
|
|
2340
2801
|
// Use userOptions to make the options chain in series right (#3881)
|
|
2341
|
-
options.plotOptions = merge(chart.userOptions.plotOptions, chartOptions
|
|
2802
|
+
options.plotOptions = merge(chart.userOptions.plotOptions, chartOptions?.plotOptions);
|
|
2342
2803
|
// ... and likewise with time, avoid that undefined time properties are
|
|
2343
2804
|
// merged over legacy global time options
|
|
2344
|
-
options.time = merge(chart.userOptions.time, chartOptions
|
|
2805
|
+
options.time = merge(chart.userOptions.time, chartOptions?.time);
|
|
2345
2806
|
// Create a sandbox where a new chart will be generated
|
|
2346
|
-
const sandbox = createElement('div',
|
|
2807
|
+
const sandbox = createElement('div', void 0, {
|
|
2347
2808
|
position: 'absolute',
|
|
2348
2809
|
top: '-9999em',
|
|
2349
2810
|
width: chart.chartWidth + 'px',
|
|
2350
2811
|
height: chart.chartHeight + 'px'
|
|
2351
|
-
},
|
|
2812
|
+
}, Exporting_doc.body);
|
|
2352
2813
|
// Get the source size
|
|
2353
|
-
const cssWidth = chart.renderTo.style.width, cssHeight = chart.renderTo.style.height, sourceWidth = options.exporting
|
|
2814
|
+
const cssWidth = chart.renderTo.style.width, cssHeight = chart.renderTo.style.height, sourceWidth = options.exporting?.sourceWidth ||
|
|
2354
2815
|
options.chart.width ||
|
|
2355
2816
|
(/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||
|
|
2356
|
-
(options.isGantt ? 800 : 600), sourceHeight = options.exporting
|
|
2817
|
+
(options.isGantt ? 800 : 600), sourceHeight = options.exporting?.sourceHeight ||
|
|
2357
2818
|
options.chart.height ||
|
|
2358
2819
|
(/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||
|
|
2359
2820
|
400;
|
|
@@ -2366,9 +2827,11 @@ var Exporting;
|
|
|
2366
2827
|
width: sourceWidth,
|
|
2367
2828
|
height: sourceHeight
|
|
2368
2829
|
});
|
|
2369
|
-
options.exporting
|
|
2830
|
+
if (options.exporting) {
|
|
2831
|
+
options.exporting.enabled = false; // Hide buttons in print
|
|
2832
|
+
}
|
|
2370
2833
|
delete options.data; // #3004
|
|
2371
|
-
//
|
|
2834
|
+
// Prepare for replicating the chart
|
|
2372
2835
|
options.series = [];
|
|
2373
2836
|
chart.series.forEach(function (serie) {
|
|
2374
2837
|
seriesOptions = merge(serie.userOptions, {
|
|
@@ -2379,7 +2842,7 @@ var Exporting;
|
|
|
2379
2842
|
});
|
|
2380
2843
|
// Used for the navigator series that has its own option set
|
|
2381
2844
|
if (!seriesOptions.isInternal) {
|
|
2382
|
-
options
|
|
2845
|
+
options?.series?.push(seriesOptions);
|
|
2383
2846
|
}
|
|
2384
2847
|
});
|
|
2385
2848
|
const colls = {};
|
|
@@ -2388,7 +2851,7 @@ var Exporting;
|
|
|
2388
2851
|
if (!axis.userOptions.internalKey) { // #6444
|
|
2389
2852
|
axis.userOptions.internalKey = uniqueKey();
|
|
2390
2853
|
}
|
|
2391
|
-
if (!axis.options.isInternal) {
|
|
2854
|
+
if (options && !axis.options.isInternal) {
|
|
2392
2855
|
if (!colls[axis.coll]) {
|
|
2393
2856
|
colls[axis.coll] = true;
|
|
2394
2857
|
options[axis.coll] = [];
|
|
@@ -2411,10 +2874,10 @@ var Exporting;
|
|
|
2411
2874
|
// Axis options and series options (#2022, #3900, #5982)
|
|
2412
2875
|
if (chartOptions) {
|
|
2413
2876
|
['xAxis', 'yAxis', 'series'].forEach(function (coll) {
|
|
2414
|
-
const collOptions = {};
|
|
2415
2877
|
if (chartOptions[coll]) {
|
|
2416
|
-
|
|
2417
|
-
|
|
2878
|
+
chartCopy.update({
|
|
2879
|
+
[coll]: chartOptions[coll]
|
|
2880
|
+
});
|
|
2418
2881
|
}
|
|
2419
2882
|
});
|
|
2420
2883
|
}
|
|
@@ -2440,92 +2903,96 @@ var Exporting;
|
|
|
2440
2903
|
}
|
|
2441
2904
|
});
|
|
2442
2905
|
// Get the SVG from the container's innerHTML
|
|
2443
|
-
svg = chartCopy.getChartHTML(chart.styledMode ||
|
|
2444
|
-
options.exporting?.applyStyleSheets);
|
|
2445
|
-
Exporting_fireEvent(
|
|
2446
|
-
svg =
|
|
2906
|
+
svg = chartCopy.exporting?.getChartHTML(chart.styledMode ||
|
|
2907
|
+
options.exporting?.applyStyleSheets) || '';
|
|
2908
|
+
Exporting_fireEvent(chart, 'getSVG', { chartCopy: chartCopy });
|
|
2909
|
+
svg = Exporting.sanitizeSVG(svg, options);
|
|
2447
2910
|
// Free up memory
|
|
2448
|
-
options =
|
|
2911
|
+
options = void 0;
|
|
2449
2912
|
chartCopy.destroy();
|
|
2450
2913
|
Exporting_discardElement(sandbox);
|
|
2451
2914
|
return svg;
|
|
2452
2915
|
}
|
|
2453
2916
|
/**
|
|
2917
|
+
* Gets the SVG for export using the getSVG function with additional
|
|
2918
|
+
* options.
|
|
2919
|
+
*
|
|
2454
2920
|
* @private
|
|
2455
|
-
* @function Highcharts.
|
|
2921
|
+
* @function Highcharts.Exporting#getSVGForExport
|
|
2922
|
+
*
|
|
2923
|
+
* @param {Highcharts.ExportingOptions} [exportingOptions]
|
|
2924
|
+
* The exporting options.
|
|
2925
|
+
* @param {Highcharts.Options} [chartOptions]
|
|
2926
|
+
* Additional chart options for the exported chart.
|
|
2927
|
+
*
|
|
2928
|
+
* @return {string}
|
|
2929
|
+
* The SVG representation of the rendered chart.
|
|
2930
|
+
*
|
|
2931
|
+
* @requires modules/exporting
|
|
2456
2932
|
*/
|
|
2457
|
-
|
|
2458
|
-
const
|
|
2459
|
-
return this.getSVG(merge({ chart: { borderRadius: 0 } },
|
|
2933
|
+
getSVGForExport(exportingOptions, chartOptions) {
|
|
2934
|
+
const currentExportingOptions = this.options;
|
|
2935
|
+
return this.getSVG(merge({ chart: { borderRadius: 0 } }, currentExportingOptions.chartOptions, chartOptions, {
|
|
2460
2936
|
exporting: {
|
|
2461
|
-
sourceWidth: (
|
|
2462
|
-
|
|
2463
|
-
sourceHeight: (
|
|
2464
|
-
|
|
2937
|
+
sourceWidth: (exportingOptions?.sourceWidth ||
|
|
2938
|
+
currentExportingOptions.sourceWidth),
|
|
2939
|
+
sourceHeight: (exportingOptions?.sourceHeight ||
|
|
2940
|
+
currentExportingOptions.sourceHeight)
|
|
2465
2941
|
}
|
|
2466
2942
|
}));
|
|
2467
2943
|
}
|
|
2468
2944
|
/**
|
|
2469
|
-
*
|
|
2470
|
-
* @private
|
|
2471
|
-
* @param {string} prop
|
|
2472
|
-
* Property name in camelCase
|
|
2473
|
-
* @return {string}
|
|
2474
|
-
* Hyphenated property name
|
|
2475
|
-
*/
|
|
2476
|
-
function hyphenate(prop) {
|
|
2477
|
-
return prop.replace(/[A-Z]/g, function (match) {
|
|
2478
|
-
return '-' + match.toLowerCase();
|
|
2479
|
-
});
|
|
2480
|
-
}
|
|
2481
|
-
/**
|
|
2482
|
-
* Analyze inherited styles from stylesheets and add them inline
|
|
2945
|
+
* Analyze inherited styles from stylesheets and add them inline.
|
|
2483
2946
|
*
|
|
2484
2947
|
* @private
|
|
2485
|
-
* @function Highcharts.
|
|
2948
|
+
* @function Highcharts.Exporting#inlineStyles
|
|
2486
2949
|
*
|
|
2487
2950
|
* @todo What are the border styles for text about? In general, text has a
|
|
2488
|
-
*
|
|
2951
|
+
* lot of properties.
|
|
2489
2952
|
*
|
|
2490
2953
|
* @todo Make it work with IE9 and IE10.
|
|
2491
2954
|
*
|
|
2492
2955
|
* @requires modules/exporting
|
|
2493
2956
|
*/
|
|
2494
|
-
|
|
2495
|
-
const denylist = inlineDenylist, allowlist = Exporting.inlineAllowlist, // For IE
|
|
2957
|
+
inlineStyles() {
|
|
2958
|
+
const denylist = Exporting.inlineDenylist, allowlist = Exporting.inlineAllowlist, // For IE
|
|
2496
2959
|
defaultStyles = {};
|
|
2497
2960
|
let dummySVG;
|
|
2498
2961
|
// Create an iframe where we read default styles without pollution from
|
|
2499
2962
|
// this body
|
|
2500
|
-
const iframe =
|
|
2501
|
-
css(iframe, {
|
|
2963
|
+
const iframe = createElement('iframe', void 0, {
|
|
2502
2964
|
width: '1px',
|
|
2503
2965
|
height: '1px',
|
|
2504
2966
|
visibility: 'hidden'
|
|
2505
|
-
});
|
|
2506
|
-
|
|
2507
|
-
const iframeDoc = (iframe.contentWindow && iframe.contentWindow.document);
|
|
2967
|
+
}, Exporting_doc.body);
|
|
2968
|
+
const iframeDoc = iframe.contentWindow?.document;
|
|
2508
2969
|
if (iframeDoc) {
|
|
2509
2970
|
iframeDoc.body.appendChild(iframeDoc.createElementNS(SVG_NS, 'svg'));
|
|
2510
2971
|
}
|
|
2511
2972
|
/**
|
|
2512
|
-
* Call this on all elements and recurse to children
|
|
2973
|
+
* Call this on all elements and recurse to children.
|
|
2974
|
+
*
|
|
2513
2975
|
* @private
|
|
2514
|
-
* @
|
|
2515
|
-
*
|
|
2516
|
-
|
|
2976
|
+
* @function recurse
|
|
2977
|
+
*
|
|
2978
|
+
* @param {Highcharts.HTMLDOMElement | Highcharts.SVGSVGElement} node
|
|
2979
|
+
* Element child.
|
|
2980
|
+
*/
|
|
2517
2981
|
function recurse(node) {
|
|
2518
2982
|
const filteredStyles = {};
|
|
2519
2983
|
let styles, parentStyles, dummy, denylisted, allowlisted, i;
|
|
2520
2984
|
/**
|
|
2521
2985
|
* Check computed styles and whether they are in the allow/denylist
|
|
2522
2986
|
* for styles or attributes.
|
|
2987
|
+
*
|
|
2523
2988
|
* @private
|
|
2524
|
-
* @
|
|
2525
|
-
*
|
|
2989
|
+
* @function filterStyles
|
|
2990
|
+
*
|
|
2991
|
+
* @param {string | number | Highcharts.GradientColor | Highcharts.PatternObject | undefined} val
|
|
2992
|
+
* Style value.
|
|
2526
2993
|
* @param {string} prop
|
|
2527
|
-
*
|
|
2528
|
-
|
|
2994
|
+
* Style property name.
|
|
2995
|
+
*/
|
|
2529
2996
|
function filterStyles(val, prop) {
|
|
2530
2997
|
// Check against allowlist & denylist
|
|
2531
2998
|
denylisted = allowlisted = false;
|
|
@@ -2556,12 +3023,12 @@ var Exporting;
|
|
|
2556
3023
|
// against parent (#7687).
|
|
2557
3024
|
if ((parentStyles[prop] !== val ||
|
|
2558
3025
|
node.nodeName === 'svg') &&
|
|
2559
|
-
defaultStyles[node.nodeName][prop] !== val) {
|
|
3026
|
+
(defaultStyles[node.nodeName])[prop] !== val) {
|
|
2560
3027
|
// Attributes
|
|
2561
|
-
if (!inlineToAttributes ||
|
|
2562
|
-
inlineToAttributes.indexOf(prop) !== -1) {
|
|
3028
|
+
if (!Exporting.inlineToAttributes ||
|
|
3029
|
+
Exporting.inlineToAttributes.indexOf(prop) !== -1) {
|
|
2563
3030
|
if (val) {
|
|
2564
|
-
node.setAttribute(hyphenate(prop), val);
|
|
3031
|
+
node.setAttribute(Exporting.hyphenate(prop), val);
|
|
2565
3032
|
}
|
|
2566
3033
|
// Styles
|
|
2567
3034
|
}
|
|
@@ -2573,8 +3040,9 @@ var Exporting;
|
|
|
2573
3040
|
}
|
|
2574
3041
|
if (iframeDoc &&
|
|
2575
3042
|
node.nodeType === 1 &&
|
|
2576
|
-
unstyledElements.indexOf(node.nodeName) === -1) {
|
|
2577
|
-
styles =
|
|
3043
|
+
Exporting.unstyledElements.indexOf(node.nodeName) === -1) {
|
|
3044
|
+
styles =
|
|
3045
|
+
Exporting_win.getComputedStyle(node, null);
|
|
2578
3046
|
parentStyles = node.nodeName === 'svg' ?
|
|
2579
3047
|
{} :
|
|
2580
3048
|
Exporting_win.getComputedStyle(node.parentNode, null);
|
|
@@ -2588,7 +3056,8 @@ var Exporting;
|
|
|
2588
3056
|
doc.body.appendChild(dummySVG);
|
|
2589
3057
|
}
|
|
2590
3058
|
*/
|
|
2591
|
-
dummySVG =
|
|
3059
|
+
dummySVG =
|
|
3060
|
+
iframeDoc.getElementsByTagName('svg')[0];
|
|
2592
3061
|
dummy = iframeDoc.createElementNS(node.namespaceURI, node.nodeName);
|
|
2593
3062
|
dummySVG.appendChild(dummy);
|
|
2594
3063
|
// Get the defaults into a standard object (simple merge
|
|
@@ -2613,9 +3082,9 @@ var Exporting;
|
|
|
2613
3082
|
for (const p in styles) {
|
|
2614
3083
|
if (
|
|
2615
3084
|
// Some browsers put lots of styles on the prototype...
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
3085
|
+
isFirefox ||
|
|
3086
|
+
isMS ||
|
|
3087
|
+
Exporting_isSafari || // #16902
|
|
2619
3088
|
// ... Chrome puts them on the instance
|
|
2620
3089
|
Object.hasOwnProperty.call(styles, p)) {
|
|
2621
3090
|
filterStyles(styles[p], p);
|
|
@@ -2635,43 +3104,140 @@ var Exporting;
|
|
|
2635
3104
|
}
|
|
2636
3105
|
}
|
|
2637
3106
|
/**
|
|
2638
|
-
* Remove the dummy objects used to get defaults
|
|
3107
|
+
* Remove the dummy objects used to get defaults.
|
|
3108
|
+
*
|
|
2639
3109
|
* @private
|
|
3110
|
+
* @function tearDown
|
|
2640
3111
|
*/
|
|
2641
3112
|
function tearDown() {
|
|
2642
3113
|
dummySVG.parentNode.removeChild(dummySVG);
|
|
2643
3114
|
// Remove trash from DOM that stayed after each exporting
|
|
2644
3115
|
iframe.parentNode.removeChild(iframe);
|
|
2645
3116
|
}
|
|
2646
|
-
recurse(this.container.querySelector('svg'));
|
|
3117
|
+
recurse(this.chart.container.querySelector('svg'));
|
|
2647
3118
|
tearDown();
|
|
2648
3119
|
}
|
|
2649
3120
|
/**
|
|
2650
|
-
*
|
|
3121
|
+
* Get SVG of chart prepared for client side export. This converts embedded
|
|
3122
|
+
* images in the SVG to data URIs. It requires the regular exporting module.
|
|
3123
|
+
* The options and chartOptions arguments are passed to the getSVGForExport
|
|
3124
|
+
* function.
|
|
3125
|
+
*
|
|
3126
|
+
* @private
|
|
3127
|
+
* @async
|
|
3128
|
+
* @function Highcharts.Exporting#localExport
|
|
3129
|
+
*
|
|
3130
|
+
* @param {Highcharts.ExportingOptions} exportingOptions
|
|
3131
|
+
* The exporting options.
|
|
3132
|
+
* @param {Highcharts.Options} chartOptions
|
|
3133
|
+
* Additional chart options for the exported chart.
|
|
3134
|
+
*
|
|
3135
|
+
* @return {Promise<string>}
|
|
3136
|
+
* The sanitized SVG.
|
|
3137
|
+
*
|
|
3138
|
+
* @requires modules/exporting
|
|
2651
3139
|
*/
|
|
2652
|
-
|
|
2653
|
-
const
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
3140
|
+
async localExport(exportingOptions, chartOptions) {
|
|
3141
|
+
const chart = this.chart, exporting = this,
|
|
3142
|
+
// After grabbing the SVG of the chart's copy container we need
|
|
3143
|
+
// to do sanitation on the SVG
|
|
3144
|
+
sanitize = (svg) => Exporting.sanitizeSVG(svg || '', chartCopyOptions),
|
|
3145
|
+
// Return true if the SVG contains images with external data.
|
|
3146
|
+
// With the boost module there are `image` elements with encoded
|
|
3147
|
+
// PNGs, these are supported by svg2pdf and should pass (#10243)
|
|
3148
|
+
hasExternalImages = function () {
|
|
3149
|
+
return [].some.call(chart.container.getElementsByTagName('image'), function (image) {
|
|
3150
|
+
const href = image.getAttribute('href');
|
|
3151
|
+
return (href !== '' &&
|
|
3152
|
+
typeof href === 'string' &&
|
|
3153
|
+
href.indexOf('data:') !== 0);
|
|
2660
3154
|
});
|
|
3155
|
+
};
|
|
3156
|
+
let chartCopyContainer, chartCopyOptions, href = null, images;
|
|
3157
|
+
// If we are on IE and in styled mode, add an allowlist to the
|
|
3158
|
+
// renderer for inline styles that we want to pass through. There
|
|
3159
|
+
// are so many styles by default in IE that we don't want to
|
|
3160
|
+
// denylist them all
|
|
3161
|
+
if (isMS && chart.styledMode && !Exporting.inlineAllowlist.length) {
|
|
3162
|
+
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$/);
|
|
3163
|
+
}
|
|
3164
|
+
// Always fall back on:
|
|
3165
|
+
// - MS browsers: Embedded images JPEG/PNG, or any PDF
|
|
3166
|
+
// - Embedded images and PDF
|
|
3167
|
+
if ((isMS &&
|
|
3168
|
+
(exportingOptions.type === 'application/pdf' ||
|
|
3169
|
+
chart.container.getElementsByTagName('image').length &&
|
|
3170
|
+
exportingOptions.type !== 'image/svg+xml')) || (exportingOptions.type === 'application/pdf' &&
|
|
3171
|
+
hasExternalImages())) {
|
|
3172
|
+
await this.fallbackToServer(exportingOptions, new Error('Image type not supported for this chart/browser.'));
|
|
3173
|
+
return;
|
|
3174
|
+
}
|
|
3175
|
+
// Hook into getSVG to get a copy of the chart copy's container (#8273)
|
|
3176
|
+
const unbindGetSVG = Exporting_addEvent(chart, 'getSVG', (e) => {
|
|
3177
|
+
chartCopyOptions = e.chartCopy.options;
|
|
3178
|
+
chartCopyContainer =
|
|
3179
|
+
e.chartCopy.container.cloneNode(true);
|
|
3180
|
+
images = chartCopyContainer && chartCopyContainer
|
|
3181
|
+
.getElementsByTagName('image') || [];
|
|
2661
3182
|
});
|
|
3183
|
+
try {
|
|
3184
|
+
// Trigger hook to get chart copy
|
|
3185
|
+
this.getSVGForExport(exportingOptions, chartOptions);
|
|
3186
|
+
// Get the static array
|
|
3187
|
+
const imagesArray = images ? Array.from(images) : [];
|
|
3188
|
+
// Go through the images we want to embed
|
|
3189
|
+
for (const image of imagesArray) {
|
|
3190
|
+
href = image.getAttributeNS('http://www.w3.org/1999/xlink', 'href');
|
|
3191
|
+
if (href) {
|
|
3192
|
+
Exporting.objectURLRevoke = false;
|
|
3193
|
+
const dataURL = await Exporting.imageToDataURL(href, exportingOptions?.scale || 1, exportingOptions?.type || 'image/png');
|
|
3194
|
+
// Change image href in chart copy
|
|
3195
|
+
image.setAttributeNS('http://www.w3.org/1999/xlink', 'href', dataURL);
|
|
3196
|
+
// Hidden, boosted series have blank href (#10243)
|
|
3197
|
+
}
|
|
3198
|
+
else {
|
|
3199
|
+
image.parentNode.removeChild(image);
|
|
3200
|
+
}
|
|
3201
|
+
}
|
|
3202
|
+
// Sanitize the SVG
|
|
3203
|
+
const sanitizedSVG = sanitize(chartCopyContainer?.innerHTML);
|
|
3204
|
+
// Use SVG of chart copy. If SVG contains foreignObjects PDF fails
|
|
3205
|
+
// in all browsers and all exports except SVG will fail in IE, as
|
|
3206
|
+
// both CanVG and svg2pdf choke on this. Gracefully fall back.
|
|
3207
|
+
if (sanitizedSVG.indexOf('<foreignObject') > -1 &&
|
|
3208
|
+
exportingOptions.type !== 'image/svg+xml' &&
|
|
3209
|
+
(isMS ||
|
|
3210
|
+
exportingOptions.type === 'application/pdf')) {
|
|
3211
|
+
throw new Error('Image type not supported for charts with embedded HTML');
|
|
3212
|
+
}
|
|
3213
|
+
else {
|
|
3214
|
+
// Trigger SVG download
|
|
3215
|
+
await exporting.downloadSVG(sanitizedSVG, extend({ filename: exporting.getFilename() }, exportingOptions));
|
|
3216
|
+
}
|
|
3217
|
+
// Return the sanitized SVG
|
|
3218
|
+
return sanitizedSVG;
|
|
3219
|
+
}
|
|
3220
|
+
catch (error) {
|
|
3221
|
+
await this.fallbackToServer(exportingOptions, error);
|
|
3222
|
+
}
|
|
3223
|
+
finally {
|
|
3224
|
+
// Clean up
|
|
3225
|
+
unbindGetSVG();
|
|
3226
|
+
}
|
|
2662
3227
|
}
|
|
2663
3228
|
/**
|
|
2664
3229
|
* Move the chart container(s) to another div.
|
|
2665
3230
|
*
|
|
2666
|
-
* @function Highcharts#moveContainers
|
|
2667
|
-
*
|
|
2668
3231
|
* @private
|
|
3232
|
+
* @function Highcharts.Exporting#moveContainers
|
|
2669
3233
|
*
|
|
2670
3234
|
* @param {Highcharts.HTMLDOMElement} moveTo
|
|
2671
|
-
*
|
|
3235
|
+
* Move target.
|
|
3236
|
+
*
|
|
3237
|
+
* @requires modules/exporting
|
|
2672
3238
|
*/
|
|
2673
|
-
|
|
2674
|
-
const { scrollablePlotArea } =
|
|
3239
|
+
moveContainers(moveTo) {
|
|
3240
|
+
const chart = this.chart, { scrollablePlotArea } = chart;
|
|
2675
3241
|
(
|
|
2676
3242
|
// When scrollablePlotArea is active (#9533)
|
|
2677
3243
|
scrollablePlotArea ?
|
|
@@ -2679,95 +3245,35 @@ var Exporting;
|
|
|
2679
3245
|
scrollablePlotArea.fixedDiv,
|
|
2680
3246
|
scrollablePlotArea.scrollingContainer
|
|
2681
3247
|
] :
|
|
2682
|
-
[
|
|
3248
|
+
[chart.container]).forEach(function (div) {
|
|
2683
3249
|
moveTo.appendChild(div);
|
|
2684
3250
|
});
|
|
2685
3251
|
}
|
|
2686
3252
|
/**
|
|
2687
|
-
*
|
|
2688
|
-
*
|
|
2689
|
-
*
|
|
2690
|
-
*
|
|
2691
|
-
* @private
|
|
2692
|
-
*/
|
|
2693
|
-
function onChartInit() {
|
|
2694
|
-
const chart = this,
|
|
2695
|
-
/**
|
|
2696
|
-
* @private
|
|
2697
|
-
* @param {"exporting"|"navigation"} prop
|
|
2698
|
-
* Property name in option root
|
|
2699
|
-
* @param {Highcharts.ExportingOptions|Highcharts.NavigationOptions} options
|
|
2700
|
-
* Options to update
|
|
2701
|
-
* @param {boolean} [redraw=true]
|
|
2702
|
-
* Whether to redraw
|
|
2703
|
-
*/
|
|
2704
|
-
update = (prop, options, redraw) => {
|
|
2705
|
-
chart.isDirtyExporting = true;
|
|
2706
|
-
merge(true, chart.options[prop], options);
|
|
2707
|
-
if (pick(redraw, true)) {
|
|
2708
|
-
chart.redraw();
|
|
2709
|
-
}
|
|
2710
|
-
};
|
|
2711
|
-
chart.exporting = {
|
|
2712
|
-
update: function (options, redraw) {
|
|
2713
|
-
update('exporting', options, redraw);
|
|
2714
|
-
}
|
|
2715
|
-
};
|
|
2716
|
-
// Register update() method for navigation. Cannot be set the same way
|
|
2717
|
-
// as for exporting, because navigation options are shared with bindings
|
|
2718
|
-
// which has separate update() logic.
|
|
2719
|
-
Chart_ChartNavigationComposition
|
|
2720
|
-
.compose(chart).navigation
|
|
2721
|
-
.addUpdate((options, redraw) => {
|
|
2722
|
-
update('navigation', options, redraw);
|
|
2723
|
-
});
|
|
2724
|
-
}
|
|
2725
|
-
/**
|
|
2726
|
-
* On layout of titles (title, subtitle and caption), adjust the `alignTo``
|
|
2727
|
-
* box to avoid the context menu button.
|
|
2728
|
-
* @private
|
|
2729
|
-
*/
|
|
2730
|
-
function onChartLayOutTitle({ alignTo, key, textPxLength }) {
|
|
2731
|
-
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;
|
|
2732
|
-
if ((exportingOptions?.enabled ?? true) &&
|
|
2733
|
-
key === 'title' &&
|
|
2734
|
-
align === 'right' &&
|
|
2735
|
-
verticalAlign === 'top') {
|
|
2736
|
-
if (space < 2 * widthAdjust) {
|
|
2737
|
-
if (space < widthAdjust) {
|
|
2738
|
-
alignTo.width -= widthAdjust;
|
|
2739
|
-
}
|
|
2740
|
-
else if (this.title?.alignValue !== 'left') {
|
|
2741
|
-
alignTo.x -= widthAdjust - space / 2;
|
|
2742
|
-
}
|
|
2743
|
-
}
|
|
2744
|
-
}
|
|
2745
|
-
}
|
|
2746
|
-
/**
|
|
2747
|
-
* Exporting module required. Clears away other elements in the page and
|
|
2748
|
-
* prints the chart as it is displayed. By default, when the exporting
|
|
2749
|
-
* module is enabled, a context button with a drop down menu in the upper
|
|
2750
|
-
* right corner accesses this function.
|
|
3253
|
+
* Clears away other elements in the page and prints the chart as it is
|
|
3254
|
+
* displayed. By default, when the exporting module is enabled, a context
|
|
3255
|
+
* button with a drop down menu in the upper right corner accesses this
|
|
3256
|
+
* function.
|
|
2751
3257
|
*
|
|
2752
3258
|
* @sample highcharts/members/chart-print/
|
|
2753
|
-
*
|
|
2754
|
-
*
|
|
2755
|
-
* @function Highcharts.Chart#print
|
|
3259
|
+
* Print from a HTML button
|
|
2756
3260
|
*
|
|
3261
|
+
* @function Highcharts.Exporting#print
|
|
2757
3262
|
*
|
|
2758
3263
|
* @emits Highcharts.Chart#event:beforePrint
|
|
2759
3264
|
* @emits Highcharts.Chart#event:afterPrint
|
|
2760
3265
|
*
|
|
2761
3266
|
* @requires modules/exporting
|
|
2762
3267
|
*/
|
|
2763
|
-
|
|
2764
|
-
const chart = this;
|
|
2765
|
-
|
|
3268
|
+
print() {
|
|
3269
|
+
const chart = this.chart;
|
|
3270
|
+
// Block the button while in printing mode
|
|
3271
|
+
if (this.isPrinting) {
|
|
2766
3272
|
return;
|
|
2767
3273
|
}
|
|
2768
|
-
printingChart = chart;
|
|
2769
|
-
if (!
|
|
2770
|
-
|
|
3274
|
+
Exporting.printingChart = chart;
|
|
3275
|
+
if (!Exporting_isSafari) {
|
|
3276
|
+
this.beforePrint();
|
|
2771
3277
|
}
|
|
2772
3278
|
// Give the browser time to draw WebGL content, an issue that randomly
|
|
2773
3279
|
// appears (at least) in Chrome ~67 on the Mac (#8708).
|
|
@@ -2775,86 +3281,310 @@ var Exporting;
|
|
|
2775
3281
|
Exporting_win.focus(); // #1510
|
|
2776
3282
|
Exporting_win.print();
|
|
2777
3283
|
// Allow the browser to prepare before reverting
|
|
2778
|
-
if (!
|
|
3284
|
+
if (!Exporting_isSafari) {
|
|
2779
3285
|
setTimeout(() => {
|
|
2780
|
-
chart.afterPrint();
|
|
3286
|
+
chart.exporting?.afterPrint();
|
|
2781
3287
|
}, 1000);
|
|
2782
3288
|
}
|
|
2783
3289
|
}, 1);
|
|
2784
3290
|
}
|
|
2785
3291
|
/**
|
|
2786
|
-
* Add the buttons on chart load
|
|
3292
|
+
* Add the buttons on chart load.
|
|
3293
|
+
*
|
|
2787
3294
|
* @private
|
|
2788
|
-
* @function Highcharts.
|
|
3295
|
+
* @function Highcharts.Exporting#render
|
|
3296
|
+
*
|
|
2789
3297
|
* @requires modules/exporting
|
|
2790
3298
|
*/
|
|
2791
|
-
|
|
2792
|
-
const
|
|
2793
|
-
|
|
2794
|
-
if (
|
|
2795
|
-
|
|
2796
|
-
}
|
|
2797
|
-
if (isDirty &&
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
chart.addButton(button);
|
|
3299
|
+
render() {
|
|
3300
|
+
const exporting = this, { chart, options } = exporting, isDirty = exporting?.isDirty || !exporting?.svgElements.length;
|
|
3301
|
+
exporting.buttonOffset = 0;
|
|
3302
|
+
if (exporting.isDirty) {
|
|
3303
|
+
exporting.destroy();
|
|
3304
|
+
}
|
|
3305
|
+
if (isDirty && options.enabled !== false) {
|
|
3306
|
+
exporting.events = [];
|
|
3307
|
+
exporting.group || (exporting.group = chart.renderer.g('exporting-group').attr({
|
|
3308
|
+
zIndex: 3 // #4955, // #8392
|
|
3309
|
+
}).add());
|
|
3310
|
+
Exporting_objectEach(options?.buttons, function (button) {
|
|
3311
|
+
exporting.addButton(button);
|
|
2805
3312
|
});
|
|
2806
|
-
|
|
3313
|
+
exporting.isDirty = false;
|
|
2807
3314
|
}
|
|
2808
3315
|
}
|
|
2809
3316
|
/**
|
|
2810
|
-
*
|
|
2811
|
-
* account for expand properties, browser bugs.
|
|
2812
|
-
* Returns a cleaned SVG.
|
|
3317
|
+
* Resolve CSS variables into hex colors.
|
|
2813
3318
|
*
|
|
2814
3319
|
* @private
|
|
2815
|
-
* @function Highcharts.
|
|
2816
|
-
*
|
|
2817
|
-
* SVG code to sanitize
|
|
2818
|
-
* @param {Highcharts.Options} options
|
|
2819
|
-
* Chart options to apply
|
|
2820
|
-
* @return {string}
|
|
2821
|
-
* Sanitized SVG code
|
|
3320
|
+
* @function Highcharts.Exporting#resolveCSSVariables
|
|
3321
|
+
*
|
|
2822
3322
|
* @requires modules/exporting
|
|
2823
3323
|
*/
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
3324
|
+
resolveCSSVariables() {
|
|
3325
|
+
Array.from(this.chart.container.querySelectorAll('*')).forEach((element) => {
|
|
3326
|
+
['color', 'fill', 'stop-color', 'stroke'].forEach((prop) => {
|
|
3327
|
+
const attrValue = element.getAttribute(prop);
|
|
3328
|
+
if (attrValue?.includes('var(')) {
|
|
3329
|
+
element.setAttribute(prop, getComputedStyle(element).getPropertyValue(prop));
|
|
3330
|
+
}
|
|
3331
|
+
const styleValue = element.style?.[prop];
|
|
3332
|
+
if (styleValue?.includes('var(')) {
|
|
3333
|
+
element.style[prop] =
|
|
3334
|
+
getComputedStyle(element).getPropertyValue(prop);
|
|
3335
|
+
}
|
|
3336
|
+
});
|
|
3337
|
+
});
|
|
3338
|
+
}
|
|
3339
|
+
/**
|
|
3340
|
+
* Updates the exporting object with the provided exporting options.
|
|
3341
|
+
*
|
|
3342
|
+
* @private
|
|
3343
|
+
* @function Highcharts.Exporting#update
|
|
3344
|
+
*
|
|
3345
|
+
* @param {Highcharts.ExportingOptions} exportingOptions
|
|
3346
|
+
* The exporting options to update with.
|
|
3347
|
+
* @param {boolean} [redraw=true]
|
|
3348
|
+
* Whether to redraw or not.
|
|
3349
|
+
*
|
|
3350
|
+
* @requires modules/exporting
|
|
3351
|
+
*/
|
|
3352
|
+
update(exportingOptions, redraw) {
|
|
3353
|
+
this.isDirty = true;
|
|
3354
|
+
merge(true, this.options, exportingOptions);
|
|
3355
|
+
if (pick(redraw, true)) {
|
|
3356
|
+
this.chart.redraw();
|
|
2833
3357
|
}
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
3358
|
+
}
|
|
3359
|
+
}
|
|
3360
|
+
/* *
|
|
3361
|
+
*
|
|
3362
|
+
* Static Properties
|
|
3363
|
+
*
|
|
3364
|
+
* */
|
|
3365
|
+
Exporting.inlineAllowlist = [];
|
|
3366
|
+
// These CSS properties are not inlined. Remember camelCase.
|
|
3367
|
+
Exporting.inlineDenylist = [
|
|
3368
|
+
/-/, // In Firefox, both hyphened and camelCased names are listed
|
|
3369
|
+
/^(clipPath|cssText|d|height|width)$/, // Full words
|
|
3370
|
+
/^font$/, // More specific props are set
|
|
3371
|
+
/[lL]ogical(Width|Height)$/,
|
|
3372
|
+
/^parentRule$/,
|
|
3373
|
+
/^(cssRules|ownerRules)$/, // #19516 read-only properties
|
|
3374
|
+
/perspective/,
|
|
3375
|
+
/TapHighlightColor/,
|
|
3376
|
+
/^transition/,
|
|
3377
|
+
/^length$/, // #7700
|
|
3378
|
+
/^\d+$/ // #17538
|
|
3379
|
+
];
|
|
3380
|
+
// These ones are translated to attributes rather than styles
|
|
3381
|
+
Exporting.inlineToAttributes = [
|
|
3382
|
+
'fill',
|
|
3383
|
+
'stroke',
|
|
3384
|
+
'strokeLinecap',
|
|
3385
|
+
'strokeLinejoin',
|
|
3386
|
+
'strokeWidth',
|
|
3387
|
+
'textAnchor',
|
|
3388
|
+
'x',
|
|
3389
|
+
'y'
|
|
3390
|
+
];
|
|
3391
|
+
// Milliseconds to defer image load event handlers to offset IE bug
|
|
3392
|
+
Exporting.loadEventDeferDelay = isMS ? 150 : 0;
|
|
3393
|
+
Exporting.unstyledElements = [
|
|
3394
|
+
'clipPath',
|
|
3395
|
+
'defs',
|
|
3396
|
+
'desc'
|
|
3397
|
+
];
|
|
3398
|
+
/* *
|
|
3399
|
+
*
|
|
3400
|
+
* Class Namespace
|
|
3401
|
+
*
|
|
3402
|
+
* */
|
|
3403
|
+
(function (Exporting) {
|
|
3404
|
+
/* *
|
|
3405
|
+
*
|
|
3406
|
+
* Declarations
|
|
3407
|
+
*
|
|
3408
|
+
* */
|
|
3409
|
+
/* *
|
|
3410
|
+
*
|
|
3411
|
+
* Functions
|
|
3412
|
+
*
|
|
3413
|
+
* */
|
|
3414
|
+
/**
|
|
3415
|
+
* Composition function.
|
|
3416
|
+
*
|
|
3417
|
+
* @private
|
|
3418
|
+
* @function Highcharts.Exporting#compose
|
|
3419
|
+
*
|
|
3420
|
+
* @param {ChartClass} ChartClass
|
|
3421
|
+
* Chart class.
|
|
3422
|
+
* @param {SVGRendererClass} SVGRendererClass
|
|
3423
|
+
* SVGRenderer class.
|
|
3424
|
+
*
|
|
3425
|
+
* @requires modules/exporting
|
|
3426
|
+
*/
|
|
3427
|
+
function compose(ChartClass, SVGRendererClass) {
|
|
3428
|
+
Exporting_ExportingSymbols.compose(SVGRendererClass);
|
|
3429
|
+
Exporting_Fullscreen.compose(ChartClass);
|
|
3430
|
+
// Check the composition registry for the Exporting
|
|
3431
|
+
if (!Exporting_pushUnique(Exporting_composed, 'Exporting')) {
|
|
3432
|
+
return;
|
|
3433
|
+
}
|
|
3434
|
+
// Adding wrappers for the deprecated functions
|
|
3435
|
+
extend((external_highcharts_src_js_default_Chart_default()).prototype, {
|
|
3436
|
+
exportChart: async function (exportingOptions, chartOptions) {
|
|
3437
|
+
await this.exporting?.exportChart(exportingOptions, chartOptions);
|
|
3438
|
+
return;
|
|
3439
|
+
},
|
|
3440
|
+
getChartHTML: function (applyStyleSheets) {
|
|
3441
|
+
return this.exporting?.getChartHTML(applyStyleSheets);
|
|
3442
|
+
},
|
|
3443
|
+
getFilename: function () {
|
|
3444
|
+
return this.exporting?.getFilename();
|
|
3445
|
+
},
|
|
3446
|
+
getSVG: function (chartOptions) {
|
|
3447
|
+
return this.exporting?.getSVG(chartOptions);
|
|
3448
|
+
},
|
|
3449
|
+
print: function () {
|
|
3450
|
+
return this.exporting?.print();
|
|
3451
|
+
}
|
|
3452
|
+
});
|
|
3453
|
+
ChartClass.prototype.callbacks.push(chartCallback);
|
|
3454
|
+
Exporting_addEvent(ChartClass, 'afterInit', onChartAfterInit);
|
|
3455
|
+
Exporting_addEvent(ChartClass, 'layOutTitle', onChartLayOutTitle);
|
|
3456
|
+
if (Exporting_isSafari) {
|
|
3457
|
+
Exporting_win.matchMedia('print').addListener(function (mqlEvent) {
|
|
3458
|
+
if (!Exporting.printingChart) {
|
|
3459
|
+
return void 0;
|
|
3460
|
+
}
|
|
3461
|
+
if (mqlEvent.matches) {
|
|
3462
|
+
Exporting.printingChart.exporting?.beforePrint();
|
|
3463
|
+
}
|
|
3464
|
+
else {
|
|
3465
|
+
Exporting.printingChart.exporting?.afterPrint();
|
|
3466
|
+
}
|
|
3467
|
+
});
|
|
3468
|
+
}
|
|
3469
|
+
// Update with defaults of the exporting module
|
|
3470
|
+
setOptions(Exporting_ExportingDefaults);
|
|
3471
|
+
}
|
|
3472
|
+
Exporting.compose = compose;
|
|
3473
|
+
/**
|
|
3474
|
+
* Function that is added to the callbacks array that runs on chart load.
|
|
3475
|
+
*
|
|
3476
|
+
* @private
|
|
3477
|
+
* @function Highcharts#chartCallback
|
|
3478
|
+
*
|
|
3479
|
+
* @param {Highcharts.Chart} chart
|
|
3480
|
+
* The chart instance.
|
|
3481
|
+
*
|
|
3482
|
+
* @requires modules/exporting
|
|
3483
|
+
*/
|
|
3484
|
+
function chartCallback(chart) {
|
|
3485
|
+
const exporting = chart.exporting;
|
|
3486
|
+
if (exporting) {
|
|
3487
|
+
exporting.render();
|
|
3488
|
+
// Add the exporting buttons on each chart redraw
|
|
3489
|
+
Exporting_addEvent(chart, 'redraw', function () {
|
|
3490
|
+
this.exporting?.render();
|
|
3491
|
+
});
|
|
3492
|
+
// Destroy the export elements at chart destroy
|
|
3493
|
+
Exporting_addEvent(chart, 'destroy', function () {
|
|
3494
|
+
this.exporting?.destroy();
|
|
3495
|
+
});
|
|
3496
|
+
}
|
|
3497
|
+
// Uncomment this to see a button directly below the chart, for quick
|
|
3498
|
+
// testing of export
|
|
3499
|
+
// let button, viewImage, viewSource;
|
|
3500
|
+
// if (!chart.renderer.forExport) {
|
|
3501
|
+
// viewImage = function (): void {
|
|
3502
|
+
// const div = doc.createElement('div');
|
|
3503
|
+
// div.innerHTML = chart.exporting?.getSVGForExport() || '';
|
|
3504
|
+
// chart.renderTo.parentNode.appendChild(div);
|
|
3505
|
+
// };
|
|
3506
|
+
// viewSource = function (): void {
|
|
3507
|
+
// const pre = doc.createElement('pre');
|
|
3508
|
+
// pre.innerHTML = chart.exporting?.getSVGForExport()
|
|
3509
|
+
// .replace(/</g, '\n<')
|
|
3510
|
+
// .replace(/>/g, '>') || '';
|
|
3511
|
+
// chart.renderTo.parentNode.appendChild(pre);
|
|
3512
|
+
// };
|
|
3513
|
+
// viewImage();
|
|
3514
|
+
// // View SVG Image
|
|
3515
|
+
// button = doc.createElement('button');
|
|
3516
|
+
// button.innerHTML = 'View SVG Image';
|
|
3517
|
+
// chart.renderTo.parentNode.appendChild(button);
|
|
3518
|
+
// button.onclick = viewImage;
|
|
3519
|
+
// // View SVG Source
|
|
3520
|
+
// button = doc.createElement('button');
|
|
3521
|
+
// button.innerHTML = 'View SVG Source';
|
|
3522
|
+
// chart.renderTo.parentNode.appendChild(button);
|
|
3523
|
+
// button.onclick = viewSource;
|
|
3524
|
+
// }
|
|
3525
|
+
}
|
|
3526
|
+
/**
|
|
3527
|
+
* Add update methods to handle chart.update and chart.exporting.update and
|
|
3528
|
+
* chart.navigation.update. These must be added to the chart instance rather
|
|
3529
|
+
* than the Chart prototype in order to use the chart instance inside the
|
|
3530
|
+
* update function.
|
|
3531
|
+
*
|
|
3532
|
+
* @private
|
|
3533
|
+
* @function Highcharts#onChartAfterInit
|
|
3534
|
+
*
|
|
3535
|
+
* @requires modules/exporting
|
|
3536
|
+
*/
|
|
3537
|
+
function onChartAfterInit() {
|
|
3538
|
+
const chart = this;
|
|
3539
|
+
// Create the exporting instance
|
|
3540
|
+
if (chart.options.exporting) {
|
|
3541
|
+
/**
|
|
3542
|
+
* Exporting object.
|
|
3543
|
+
*
|
|
3544
|
+
* @name Highcharts.Chart#exporting
|
|
3545
|
+
* @type {Highcharts.Exporting}
|
|
3546
|
+
*/
|
|
3547
|
+
chart.exporting = new Exporting(chart, chart.options.exporting);
|
|
3548
|
+
// Register update() method for navigation. Cannot be set the same
|
|
3549
|
+
// way as for exporting, because navigation options are shared with
|
|
3550
|
+
// bindings which has separate update() logic.
|
|
3551
|
+
Chart_ChartNavigationComposition
|
|
3552
|
+
.compose(chart).navigation
|
|
3553
|
+
.addUpdate((options, redraw) => {
|
|
3554
|
+
if (chart.exporting) {
|
|
3555
|
+
chart.exporting.isDirty = true;
|
|
3556
|
+
merge(true, chart.options.navigation, options);
|
|
3557
|
+
if (pick(redraw, true)) {
|
|
3558
|
+
chart.redraw();
|
|
3559
|
+
}
|
|
3560
|
+
}
|
|
3561
|
+
});
|
|
3562
|
+
}
|
|
3563
|
+
}
|
|
3564
|
+
/**
|
|
3565
|
+
* On layout of titles (title, subtitle and caption), adjust the `alignTo`
|
|
3566
|
+
* box to avoid the context menu button.
|
|
3567
|
+
*
|
|
3568
|
+
* @private
|
|
3569
|
+
* @function Highcharts#onChartLayOutTitle
|
|
3570
|
+
*
|
|
3571
|
+
* @requires modules/exporting
|
|
3572
|
+
*/
|
|
3573
|
+
function onChartLayOutTitle({ alignTo, key, textPxLength }) {
|
|
3574
|
+
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;
|
|
3575
|
+
if ((exportingOptions?.enabled ?? true) &&
|
|
3576
|
+
key === 'title' &&
|
|
3577
|
+
align === 'right' &&
|
|
3578
|
+
verticalAlign === 'top') {
|
|
3579
|
+
if (space < 2 * widthAdjust) {
|
|
3580
|
+
if (space < widthAdjust) {
|
|
3581
|
+
alignTo.width -= widthAdjust;
|
|
3582
|
+
}
|
|
3583
|
+
else if (this.title?.alignValue !== 'left') {
|
|
3584
|
+
alignTo.x -= widthAdjust - space / 2;
|
|
3585
|
+
}
|
|
3586
|
+
}
|
|
2844
3587
|
}
|
|
2845
|
-
svg = svg
|
|
2846
|
-
.replace(/zIndex="[^"]+"/g, '')
|
|
2847
|
-
.replace(/symbolName="[^"]+"/g, '')
|
|
2848
|
-
.replace(/jQuery\d+="[^"]+"/g, '')
|
|
2849
|
-
.replace(/url\(("|")(.*?)("|")\;?\)/g, 'url($2)')
|
|
2850
|
-
.replace(/url\([^#]+#/g, 'url(#')
|
|
2851
|
-
.replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
|
|
2852
|
-
.replace(/ (NS\d+\:)?href=/g, ' xlink:href=') // #3567
|
|
2853
|
-
.replace(/\n+/g, ' ')
|
|
2854
|
-
// Replace HTML entities, issue #347
|
|
2855
|
-
.replace(/ /g, '\u00A0') // No-break space
|
|
2856
|
-
.replace(/­/g, '\u00AD'); // Soft hyphen
|
|
2857
|
-
return svg;
|
|
2858
3588
|
}
|
|
2859
3589
|
})(Exporting || (Exporting = {}));
|
|
2860
3590
|
/* *
|
|
@@ -2875,10 +3605,9 @@ var Exporting;
|
|
|
2875
3605
|
* @callback Highcharts.ExportingAfterPrintCallbackFunction
|
|
2876
3606
|
*
|
|
2877
3607
|
* @param {Highcharts.Chart} this
|
|
2878
|
-
*
|
|
2879
|
-
*
|
|
3608
|
+
* The chart on which the event occurred.
|
|
2880
3609
|
* @param {global.Event} event
|
|
2881
|
-
*
|
|
3610
|
+
* The event that occurred.
|
|
2882
3611
|
*/
|
|
2883
3612
|
/**
|
|
2884
3613
|
* Gets fired before a chart is printed through the context menu item or the
|
|
@@ -2887,10 +3616,9 @@ var Exporting;
|
|
|
2887
3616
|
* @callback Highcharts.ExportingBeforePrintCallbackFunction
|
|
2888
3617
|
*
|
|
2889
3618
|
* @param {Highcharts.Chart} this
|
|
2890
|
-
*
|
|
2891
|
-
*
|
|
3619
|
+
* The chart on which the event occurred.
|
|
2892
3620
|
* @param {global.Event} event
|
|
2893
|
-
*
|
|
3621
|
+
* The event that occurred.
|
|
2894
3622
|
*/
|
|
2895
3623
|
/**
|
|
2896
3624
|
* Function to call if the offline-exporting module fails to export a chart on
|
|
@@ -2899,10 +3627,9 @@ var Exporting;
|
|
|
2899
3627
|
* @callback Highcharts.ExportingErrorCallbackFunction
|
|
2900
3628
|
*
|
|
2901
3629
|
* @param {Highcharts.ExportingOptions} options
|
|
2902
|
-
*
|
|
2903
|
-
*
|
|
3630
|
+
* The exporting options.
|
|
2904
3631
|
* @param {global.Error} err
|
|
2905
|
-
*
|
|
3632
|
+
* The error from the module.
|
|
2906
3633
|
*/
|
|
2907
3634
|
/**
|
|
2908
3635
|
* Definition for a menu item in the context menu.
|
|
@@ -2912,27 +3639,27 @@ var Exporting;
|
|
|
2912
3639
|
* The text for the menu item.
|
|
2913
3640
|
*
|
|
2914
3641
|
* @name Highcharts.ExportingMenuObject#text
|
|
2915
|
-
* @type {string|undefined}
|
|
3642
|
+
* @type {string | undefined}
|
|
2916
3643
|
*/ /**
|
|
2917
3644
|
* If internationalization is required, the key to a language string.
|
|
2918
3645
|
*
|
|
2919
3646
|
* @name Highcharts.ExportingMenuObject#textKey
|
|
2920
|
-
* @type {string|undefined}
|
|
3647
|
+
* @type {string | undefined}
|
|
2921
3648
|
*/ /**
|
|
2922
3649
|
* The click handler for the menu item.
|
|
2923
3650
|
*
|
|
2924
3651
|
* @name Highcharts.ExportingMenuObject#onclick
|
|
2925
|
-
* @type {Highcharts.EventCallbackFunction<Highcharts.Chart
|
|
3652
|
+
* @type {Highcharts.EventCallbackFunction<Highcharts.Chart> | undefined}
|
|
2926
3653
|
*/ /**
|
|
2927
3654
|
* Indicates a separator line instead of an item.
|
|
2928
3655
|
*
|
|
2929
3656
|
* @name Highcharts.ExportingMenuObject#separator
|
|
2930
|
-
* @type {boolean|undefined}
|
|
3657
|
+
* @type {boolean | undefined}
|
|
2931
3658
|
*/
|
|
2932
3659
|
/**
|
|
2933
3660
|
* Possible MIME types for exporting.
|
|
2934
3661
|
*
|
|
2935
|
-
* @typedef {"image/png"|"image/jpeg"|"application/pdf"|"image/svg+xml"} Highcharts.ExportingMimeTypeValue
|
|
3662
|
+
* @typedef {"image/png" | "image/jpeg" | "application/pdf" | "image/svg+xml"} Highcharts.ExportingMimeTypeValue
|
|
2936
3663
|
*/
|
|
2937
3664
|
(''); // Keeps doclets above in transpiled file
|
|
2938
3665
|
/* *
|
|
@@ -2945,12 +3672,12 @@ var Exporting;
|
|
|
2945
3672
|
* `Chart.print` method.
|
|
2946
3673
|
*
|
|
2947
3674
|
* @sample highcharts/chart/events-beforeprint-afterprint/
|
|
2948
|
-
*
|
|
3675
|
+
* Rescale the chart to print
|
|
2949
3676
|
*
|
|
2950
|
-
* @type
|
|
2951
|
-
* @since
|
|
2952
|
-
* @context
|
|
2953
|
-
* @requires
|
|
3677
|
+
* @type {Highcharts.ExportingAfterPrintCallbackFunction}
|
|
3678
|
+
* @since 4.1.0
|
|
3679
|
+
* @context Highcharts.Chart
|
|
3680
|
+
* @requires modules/exporting
|
|
2954
3681
|
* @apioption chart.events.afterPrint
|
|
2955
3682
|
*/
|
|
2956
3683
|
/**
|
|
@@ -2958,12 +3685,12 @@ var Exporting;
|
|
|
2958
3685
|
* the `Chart.print` method.
|
|
2959
3686
|
*
|
|
2960
3687
|
* @sample highcharts/chart/events-beforeprint-afterprint/
|
|
2961
|
-
*
|
|
3688
|
+
* Rescale the chart to print
|
|
2962
3689
|
*
|
|
2963
|
-
* @type
|
|
2964
|
-
* @since
|
|
2965
|
-
* @context
|
|
2966
|
-
* @requires
|
|
3690
|
+
* @type {Highcharts.ExportingBeforePrintCallbackFunction}
|
|
3691
|
+
* @since 4.1.0
|
|
3692
|
+
* @context Highcharts.Chart
|
|
3693
|
+
* @requires modules/exporting
|
|
2967
3694
|
* @apioption chart.events.beforePrint
|
|
2968
3695
|
*/
|
|
2969
3696
|
(''); // Keeps doclets above in transpiled file
|
|
@@ -2975,10 +3702,14 @@ var Exporting;
|
|
|
2975
3702
|
|
|
2976
3703
|
|
|
2977
3704
|
const G = (external_highcharts_src_js_default_default());
|
|
3705
|
+
// Class
|
|
3706
|
+
G.Exporting = Exporting_Exporting;
|
|
3707
|
+
// Compatibility
|
|
2978
3708
|
G.HttpUtilities = G.HttpUtilities || Core_HttpUtilities;
|
|
2979
3709
|
G.ajax = G.HttpUtilities.ajax;
|
|
2980
3710
|
G.getJSON = G.HttpUtilities.getJSON;
|
|
2981
3711
|
G.post = G.HttpUtilities.post;
|
|
3712
|
+
// Compose
|
|
2982
3713
|
Exporting_Exporting.compose(G.Chart, G.Renderer);
|
|
2983
3714
|
/* harmony default export */ const exporting_src = ((external_highcharts_src_js_default_default()));
|
|
2984
3715
|
|