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