highcharts 9.1.1 → 9.2.2
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/bower.json +1 -1
- package/css/annotations/popup.css +29 -28
- package/css/annotations/popup.scss +29 -27
- package/css/highcharts.css +15 -0
- package/css/highcharts.scss +12 -0
- package/css/stocktools/gui.css +1 -0
- package/css/stocktools/gui.scss +1 -0
- package/css/themes/dark-unica.css +15 -0
- package/css/themes/grid-light.css +15 -0
- package/css/themes/sand-signika.css +15 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +8 -2
- package/es-modules/Accessibility/Components/LegendComponent.js +19 -8
- package/es-modules/Accessibility/Components/MenuComponent.js +19 -13
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +4 -8
- package/es-modules/Accessibility/FocusBorder.js +1 -3
- package/es-modules/Accessibility/Options/LangOptions.js +3 -3
- package/es-modules/Accessibility/Utils/Announcer.js +22 -5
- package/es-modules/Accessibility/Utils/ChartUtilities.js +6 -1
- package/es-modules/Core/Animation/AnimationUtilities.js +12 -4
- package/es-modules/Core/Animation/Fx.js +15 -12
- package/es-modules/Core/Axis/Axis.js +25 -13
- package/es-modules/Core/Axis/AxisDefaults.js +0 -1
- package/es-modules/Core/Axis/BrokenAxis.js +32 -15
- package/es-modules/Core/Axis/Color/ColorAxis.js +665 -0
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +237 -0
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +434 -0
- package/es-modules/Core/Axis/DateTimeAxis.js +163 -133
- package/es-modules/Core/Axis/GridAxis.js +8 -3
- package/es-modules/Core/Axis/LogarithmicAxis.js +159 -117
- package/es-modules/Core/Axis/OrdinalAxis.js +666 -460
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +874 -0
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +292 -0
- package/es-modules/Core/Axis/RadialAxis.js +858 -745
- package/es-modules/Core/Axis/ScrollbarAxis.js +7 -0
- package/es-modules/Core/Axis/StackingAxis.js +159 -140
- package/es-modules/Core/Axis/Tick.js +17 -27
- package/es-modules/Core/Chart/Chart.js +24 -38
- package/es-modules/Core/Chart/ChartDefaults.js +1 -1
- package/es-modules/Core/Chart/StockChart.js +12 -0
- package/es-modules/Core/Color/Color.js +96 -104
- package/es-modules/Core/DefaultOptions.js +269 -248
- package/es-modules/Core/Foundation.js +9 -8
- package/es-modules/Core/Geometry/CircleUtilities.js +385 -0
- package/es-modules/Core/Geometry/GeometryUtilities.js +83 -0
- package/es-modules/Core/Globals.js +23 -1
- package/es-modules/{Extensions/Ajax.js → Core/HttpUtilities.js} +86 -42
- package/es-modules/Core/{Legend.js → Legend/Legend.js} +142 -116
- package/es-modules/{Mixins → Core/Legend}/LegendSymbol.js +54 -38
- package/es-modules/Core/Navigator.js +3 -0
- package/es-modules/Core/Pointer.js +9 -0
- package/es-modules/Core/Renderer/HTML/AST.js +100 -82
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +17 -7
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +26 -9
- package/es-modules/Core/Renderer/RendererRegistry.js +9 -4
- package/es-modules/Core/Renderer/RendererUtilities.js +159 -0
- package/es-modules/Core/Renderer/SVG/SVGElement.js +13 -7
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +9 -29
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +2 -2
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +18 -16
- package/es-modules/Core/Responsive.js +166 -148
- package/es-modules/Core/Series/DataLabel.js +564 -0
- package/es-modules/Core/Series/Point.js +233 -209
- package/es-modules/Core/Series/Series.js +174 -2339
- package/es-modules/Core/Series/SeriesDefaults.js +2293 -0
- package/es-modules/Core/Series/SeriesRegistry.js +3 -9
- package/es-modules/Core/Time.js +78 -2
- package/es-modules/Core/Tooltip.js +178 -236
- package/es-modules/Core/Utilities.js +409 -394
- package/es-modules/Extensions/Annotations/Annotations.js +102 -49
- package/es-modules/Extensions/Annotations/Mixins/EventEmitterMixin.js +9 -1
- package/es-modules/Extensions/Annotations/NavigationBindings.js +30 -25
- package/es-modules/Extensions/Annotations/Popup.js +16 -7
- package/es-modules/Extensions/Boost/BoostOverrides.js +5 -1
- package/es-modules/Extensions/Boost/WGLRenderer.js +5 -4
- package/es-modules/Extensions/Boost/WGLVBuffer.js +3 -0
- package/es-modules/Extensions/BoostCanvas.js +1 -1
- package/es-modules/Extensions/CurrentDateIndication.js +1 -1
- package/es-modules/Extensions/Data.js +82 -76
- package/es-modules/Extensions/DataGrouping.js +225 -184
- package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
- package/es-modules/Extensions/DraggablePoints.js +13 -5
- package/es-modules/Extensions/Drilldown.js +41 -14
- package/es-modules/Extensions/ExportData.js +7 -4
- package/es-modules/Extensions/Exporting/Exporting.js +1273 -0
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +803 -0
- package/es-modules/Extensions/Exporting/ExportingSymbols.js +73 -0
- package/es-modules/Extensions/FullScreen.js +7 -5
- package/es-modules/Extensions/NoDataToDisplay.js +1 -1
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +617 -0
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +58 -0
- package/es-modules/Extensions/Oldie/Oldie.js +1 -1
- package/es-modules/Extensions/Pane.js +0 -1
- package/es-modules/Extensions/PatternFill.js +23 -10
- package/es-modules/Extensions/Polar.js +2 -1
- package/es-modules/Extensions/RangeSelector.js +1 -1
- package/es-modules/Extensions/Themes/Avocado.js +49 -20
- package/es-modules/Extensions/Themes/DarkBlue.js +226 -203
- package/es-modules/Extensions/Themes/DarkGreen.js +231 -203
- package/es-modules/Extensions/Themes/DarkUnica.js +201 -172
- package/es-modules/Extensions/Themes/Gray.js +228 -205
- package/es-modules/Extensions/Themes/Grid.js +109 -81
- package/es-modules/Extensions/Themes/GridLight.js +83 -55
- package/es-modules/Extensions/Themes/HighContrastDark.js +192 -164
- package/es-modules/Extensions/Themes/HighContrastLight.js +49 -21
- package/es-modules/Extensions/Themes/SandSignika.js +115 -86
- package/es-modules/Extensions/Themes/Skies.js +102 -74
- package/es-modules/Extensions/Themes/Sunset.js +47 -19
- package/es-modules/Mixins/ColorSeries.js +0 -1
- package/es-modules/Mixins/MultipleLines.js +6 -0
- package/es-modules/Mixins/TreeSeries.js +1 -1
- package/es-modules/Series/Area/AreaSeries.js +2 -2
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +2 -2
- package/es-modules/Series/Bubble/BubbleLegendComposition.js +279 -0
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +267 -0
- package/es-modules/Series/Bubble/BubbleLegendItem.js +472 -0
- package/es-modules/Series/Bubble/BubbleSeries.js +6 -2
- package/es-modules/Series/Column/ColumnDataLabel.js +109 -0
- package/es-modules/Series/Column/ColumnSeries.js +39 -26
- package/es-modules/Series/Column3D/Column3DComposition.js +5 -2
- package/es-modules/Series/Flags/FlagsSeries.js +8 -1
- package/es-modules/Series/Gantt/GanttSeries.js +3 -3
- package/es-modules/Series/Heatmap/HeatmapSeries.js +9 -5
- package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +60 -0
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +277 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +83 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +370 -0
- package/es-modules/Series/Line/LineSeries.js +12 -8
- package/es-modules/Series/Map/MapSeries.js +5 -3
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +6 -5
- package/es-modules/Series/OHLC/OHLCPoint.js +11 -0
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
- package/es-modules/Series/Pie/PieDataLabel.js +448 -0
- package/es-modules/Series/Pie/PiePoint.js +35 -34
- package/es-modules/Series/Pie/PieSeries.js +19 -16
- package/es-modules/Series/Polygon/PolygonSeries.js +3 -3
- package/es-modules/Series/Sankey/SankeySeries.js +9 -7
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
- package/es-modules/Series/Sunburst/SunburstSeries.js +1 -14
- package/es-modules/Series/Timeline/TimelinePoint.js +6 -0
- package/es-modules/Series/Timeline/TimelineSeries.js +14 -17
- package/es-modules/Series/Treemap/TreemapSeries.js +3 -3
- package/es-modules/Series/Venn/VennSeries.js +4 -4
- package/es-modules/Series/Venn/VennUtils.js +10 -16
- package/es-modules/Series/Waterfall/WaterfallSeries.js +40 -35
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +1 -0
- package/es-modules/Series/XRange/XRangeSeries.js +4 -2
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +92 -75
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +20 -8
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +17 -4
- package/es-modules/Stock/StockToolsBindings.js +77 -38
- package/es-modules/Stock/StockToolsGui.js +28 -3
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +11 -7
- package/es-modules/masters/highcharts.src.js +25 -9
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ema.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/es-modules/masters/modules/annotations.src.js +1 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +6 -2
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +8 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +1 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +10 -2
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +9 -4
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +6 -2
- package/es-modules/masters/modules/heikinashi.src.js +14 -0
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +14 -0
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +10 -6
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +8 -2
- package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/masters/modules/oldie.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +3 -2
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +1 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +5 -2
- package/es-modules/masters/themes/dark-blue.src.js +5 -2
- package/es-modules/masters/themes/dark-green.src.js +5 -2
- package/es-modules/masters/themes/dark-unica.src.js +5 -2
- package/es-modules/masters/themes/gray.src.js +5 -2
- package/es-modules/masters/themes/grid-light.src.js +5 -2
- package/es-modules/masters/themes/grid.src.js +5 -2
- package/es-modules/masters/themes/high-contrast-dark.src.js +5 -2
- package/es-modules/masters/themes/high-contrast-light.src.js +5 -2
- package/es-modules/masters/themes/sand-signika.src.js +5 -2
- package/es-modules/masters/themes/skies.src.js +5 -2
- package/es-modules/masters/themes/sunset.src.js +5 -2
- package/gfx/stock-icons/annotations-hidden.svg +1 -1
- package/gfx/stock-icons/annotations-visible.svg +2 -2
- package/gfx/stock-icons/arrow-bottom.svg +1 -1
- package/gfx/stock-icons/arrow-left.svg +1 -1
- package/gfx/stock-icons/arrow-line.svg +1 -1
- package/gfx/stock-icons/arrow-ray.svg +1 -1
- package/gfx/stock-icons/arrow-right.svg +1 -1
- package/gfx/stock-icons/arrow-segment.svg +1 -2
- package/gfx/stock-icons/circle.svg +1 -1
- package/gfx/stock-icons/close.svg +2 -2
- package/gfx/stock-icons/crooked-3.svg +1 -1
- package/gfx/stock-icons/crooked-5.svg +1 -1
- package/gfx/stock-icons/current-price-hide.svg +3 -3
- package/gfx/stock-icons/current-price-show.svg +2 -2
- package/gfx/stock-icons/destroy.svg +1 -1
- package/gfx/stock-icons/drawing.svg +18 -0
- package/gfx/stock-icons/edit.svg +1 -1
- package/gfx/stock-icons/elliott-3.svg +1 -1
- package/gfx/stock-icons/elliott-5.svg +1 -1
- package/gfx/stock-icons/ellipse.svg +11 -0
- package/gfx/stock-icons/fibonacci-timezone.svg +16 -0
- package/gfx/stock-icons/fibonacci.svg +1 -1
- package/gfx/stock-icons/flag-basic.svg +1 -1
- package/gfx/stock-icons/flag-diamond.svg +2 -2
- package/gfx/stock-icons/flag-elipse.svg +1 -1
- package/gfx/stock-icons/flag-trapeze.svg +2 -2
- package/gfx/stock-icons/fullscreen.svg +4 -4
- package/gfx/stock-icons/horizontal-line.svg +1 -1
- package/gfx/stock-icons/indicators.svg +3 -3
- package/gfx/stock-icons/label.svg +4 -4
- package/gfx/stock-icons/line.svg +1 -1
- package/gfx/stock-icons/linear.svg +11 -0
- package/gfx/stock-icons/logarithmic.svg +1 -0
- package/gfx/stock-icons/measure-x.svg +2 -2
- package/gfx/stock-icons/measure-xy.svg +1 -1
- package/gfx/stock-icons/measure-y.svg +1 -1
- package/gfx/stock-icons/panning.svg +17 -0
- package/gfx/stock-icons/parallel-channel.svg +1 -1
- package/gfx/stock-icons/pitchfork.svg +1 -1
- package/gfx/stock-icons/ray.svg +1 -1
- package/gfx/stock-icons/rectangle.svg +1 -1
- package/gfx/stock-icons/remove-annotations.svg +2 -2
- package/gfx/stock-icons/save-chart.svg +3 -3
- package/gfx/stock-icons/segment.svg +1 -1
- package/gfx/stock-icons/separator.svg +1 -1
- package/gfx/stock-icons/series-candlestick.svg +1 -1
- package/gfx/stock-icons/series-heikin-ashi.svg +1 -0
- package/gfx/stock-icons/series-hlc.svg +1 -0
- package/gfx/stock-icons/series-hollow-candlestick.svg +1 -0
- package/gfx/stock-icons/series-line.svg +1 -1
- package/gfx/stock-icons/series-ohlc.svg +4 -4
- package/gfx/stock-icons/time-cycles.svg +35 -0
- package/gfx/stock-icons/vertical-arrow.svg +1 -1
- package/gfx/stock-icons/vertical-counter.svg +1 -1
- package/gfx/stock-icons/vertical-double-arrow.svg +1 -1
- package/gfx/stock-icons/vertical-label.svg +3 -3
- package/gfx/stock-icons/vertical-line.svg +1 -1
- package/gfx/stock-icons/zoom-x.svg +2 -2
- package/gfx/stock-icons/zoom-xy.svg +2 -2
- package/gfx/stock-icons/zoom-y.svg +2 -2
- package/highcharts-3d.js +24 -24
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +6 -3
- package/highcharts-gantt.js +800 -792
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +16535 -15918
- package/highcharts-more.d.ts +73 -1
- package/highcharts-more.js +193 -192
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.d.ts +73 -1
- package/highcharts-more.src.js +8044 -7839
- package/highcharts.d.ts +3850 -177
- package/highcharts.js +589 -581
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +3850 -177
- package/highcharts.src.js +16635 -16060
- package/highmaps.js +708 -698
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +17419 -16521
- package/highstock.js +782 -769
- package/highstock.js.map +1 -1
- package/highstock.src.js +28867 -27975
- package/indicators/acceleration-bands.js +9 -9
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.js +7 -1
- package/indicators/accumulation-distribution.js +1 -1
- package/indicators/accumulation-distribution.src.js +1 -1
- package/indicators/ao.js +1 -1
- package/indicators/ao.src.js +1 -1
- package/indicators/apo.js +1 -1
- package/indicators/apo.src.js +1 -1
- package/indicators/aroon-oscillator.js +9 -9
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.js +7 -1
- package/indicators/aroon.js +9 -9
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.js +7 -1
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.js +9 -9
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.js +7 -1
- package/indicators/cci.js +1 -1
- package/indicators/cci.src.js +1 -1
- package/indicators/chaikin.js +1 -1
- package/indicators/chaikin.src.js +1 -1
- package/indicators/cmf.js +1 -1
- package/indicators/cmf.src.js +1 -1
- package/indicators/cmo.js +1 -1
- package/indicators/cmo.src.js +1 -1
- package/indicators/dema.js +1 -1
- package/indicators/dema.src.js +1 -1
- package/indicators/disparity-index.js +1 -1
- package/indicators/disparity-index.src.js +1 -1
- package/indicators/dmi.js +11 -11
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +7 -1
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.src.js +1 -1
- package/indicators/ema.js +1 -1
- package/indicators/ema.src.js +1 -1
- package/indicators/ichimoku-kinko-hyo.js +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/indicators/indicators-all.js +203 -200
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +206 -104
- package/indicators/indicators.js +12 -11
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +108 -90
- package/indicators/keltner-channels.js +9 -9
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.js +7 -1
- package/indicators/klinger.js +13 -13
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +7 -1
- package/indicators/macd.js +1 -1
- package/indicators/macd.src.js +1 -1
- package/indicators/mfi.js +1 -1
- package/indicators/mfi.src.js +1 -1
- package/indicators/momentum.js +1 -1
- package/indicators/momentum.src.js +1 -1
- package/indicators/natr.js +1 -1
- package/indicators/natr.src.js +1 -1
- package/indicators/obv.js +1 -1
- package/indicators/obv.src.js +1 -1
- package/indicators/pivot-points.js +1 -1
- package/indicators/pivot-points.src.js +1 -1
- package/indicators/ppo.js +1 -1
- package/indicators/ppo.src.js +1 -1
- package/indicators/price-channel.js +9 -9
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.js +7 -1
- package/indicators/price-envelopes.js +1 -1
- package/indicators/price-envelopes.src.js +1 -1
- package/indicators/psar.js +1 -1
- package/indicators/psar.src.js +1 -1
- package/indicators/regressions.js +1 -1
- package/indicators/regressions.src.js +1 -1
- package/indicators/roc.js +1 -1
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.src.js +1 -1
- package/indicators/slow-stochastic.js +1 -1
- package/indicators/slow-stochastic.src.js +1 -1
- package/indicators/stochastic.js +10 -10
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.js +7 -1
- package/indicators/supertrend.js +10 -10
- package/indicators/supertrend.js.map +1 -1
- package/indicators/supertrend.src.js +23 -10
- package/indicators/tema.js +1 -1
- package/indicators/tema.src.js +1 -1
- package/indicators/trendline.js +1 -1
- package/indicators/trendline.src.js +1 -1
- package/indicators/trix.js +1 -1
- package/indicators/trix.src.js +1 -1
- package/indicators/volume-by-price.js +17 -15
- package/indicators/volume-by-price.js.map +1 -1
- package/indicators/volume-by-price.src.js +71 -6
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.src.js +1 -1
- package/indicators/williams-r.js +1 -1
- package/indicators/williams-r.src.js +1 -1
- package/indicators/wma.js +1 -1
- package/indicators/wma.src.js +1 -1
- package/indicators/zigzag.js +1 -1
- package/indicators/zigzag.src.js +1 -1
- package/modules/accessibility.js +203 -202
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +89 -49
- package/modules/annotations-advanced.js +164 -163
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +162 -87
- package/modules/annotations.js +111 -111
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +162 -87
- package/modules/arrow-symbols.js +1 -1
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.js +2 -2
- package/modules/boost.js +52 -52
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +15 -7
- package/modules/broken-axis.js +13 -13
- package/modules/broken-axis.js.map +1 -1
- package/modules/broken-axis.src.js +34 -15
- package/modules/bullet.js +1 -1
- package/modules/bullet.src.js +1 -1
- package/modules/coloraxis.js +24 -22
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +954 -774
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.js.map +1 -1
- package/modules/current-date-indicator.src.js +2 -2
- package/modules/cylinder.js +1 -1
- package/modules/cylinder.src.js +1 -1
- package/modules/data.js +33 -32
- package/modules/data.js.map +1 -1
- package/modules/data.src.js +182 -134
- package/modules/datagrouping.d.ts +5 -0
- package/modules/datagrouping.js +20 -20
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.d.ts +5 -0
- package/modules/datagrouping.src.js +270 -228
- package/modules/debugger.js +3 -3
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +3 -3
- package/modules/dependency-wheel.js +1 -1
- package/modules/dependency-wheel.src.js +1 -1
- package/modules/dotplot.js +1 -1
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +1 -1
- package/modules/drag-panes.src.js +1 -1
- package/modules/draggable-points.js +34 -34
- package/modules/draggable-points.js.map +1 -1
- package/modules/draggable-points.src.js +14 -5
- package/modules/drilldown.d.ts +27 -0
- package/modules/drilldown.js +18 -18
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.d.ts +27 -0
- package/modules/drilldown.src.js +42 -16
- package/modules/dumbbell.js +1 -1
- package/modules/dumbbell.src.js +1 -1
- package/modules/export-data.js +20 -20
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +8 -5
- package/modules/exporting.d.ts +29 -0
- package/modules/exporting.js +38 -35
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.d.ts +29 -0
- package/modules/exporting.src.js +1937 -1614
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.js.map +1 -1
- package/modules/full-screen.src.js +8 -6
- package/modules/funnel.js +1 -1
- package/modules/funnel.src.js +1 -1
- package/modules/funnel3d.js +1 -1
- package/modules/funnel3d.src.js +1 -1
- package/modules/gantt.js +218 -217
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +74 -32
- package/modules/grid-axis.js +23 -22
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +9 -4
- package/modules/heatmap.js +39 -37
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +963 -779
- package/modules/heikinashi.js +17 -0
- package/modules/heikinashi.js.map +1 -0
- package/modules/heikinashi.src.js +394 -0
- package/modules/histogram-bellcurve.js +1 -1
- package/modules/histogram-bellcurve.src.js +1 -1
- package/modules/hollowcandlestick.js +18 -0
- package/modules/hollowcandlestick.js.map +1 -0
- package/modules/hollowcandlestick.src.js +504 -0
- package/modules/item-series.js +1 -1
- package/modules/item-series.src.js +1 -1
- package/modules/lollipop.js +1 -1
- package/modules/lollipop.src.js +1 -1
- package/modules/map.d.ts +9 -0
- package/modules/map.js +122 -119
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +9 -0
- package/modules/map.src.js +1655 -1332
- package/modules/marker-clusters.js +1 -1
- package/modules/marker-clusters.src.js +1 -1
- package/modules/networkgraph.js +1 -1
- package/modules/networkgraph.src.js +1 -1
- package/modules/no-data-to-display.js +3 -3
- package/modules/no-data-to-display.js.map +1 -1
- package/modules/no-data-to-display.src.js +2 -2
- package/modules/offline-exporting.js +18 -16
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +623 -562
- package/modules/oldie-polyfills.js +1 -1
- package/modules/oldie-polyfills.src.js +1 -1
- package/modules/oldie.js +2 -2
- package/modules/oldie.src.js +2 -2
- package/modules/organization.js +1 -1
- package/modules/organization.src.js +1 -1
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +1 -1
- package/modules/parallel-coordinates.src.js +1 -1
- package/modules/pareto.js +1 -1
- package/modules/pareto.src.js +1 -1
- package/modules/pathfinder.js +1 -1
- package/modules/pathfinder.src.js +1 -1
- package/modules/pattern-fill.js +14 -14
- package/modules/pattern-fill.js.map +1 -1
- package/modules/pattern-fill.src.js +24 -12
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.src.js +1 -1
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.src.js +1 -1
- package/modules/sankey.js +28 -28
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.js +11 -11
- package/modules/series-label.js +1 -1
- package/modules/series-label.src.js +1 -1
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +3 -3
- package/modules/sonification.js +1 -1
- package/modules/sonification.src.js +1 -1
- package/modules/static-scale.js +1 -1
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.js +159 -157
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +253 -123
- package/modules/stock.d.ts +5 -0
- package/modules/stock.js +196 -191
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.d.ts +5 -0
- package/modules/stock.src.js +7749 -7432
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +5 -5
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +6 -19
- package/modules/tilemap.js +1 -1
- package/modules/tilemap.src.js +1 -1
- package/modules/timeline.js +18 -17
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +21 -24
- package/modules/treegrid.js +57 -57
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +43 -19
- package/modules/treemap.js +5 -5
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.js +5 -5
- package/modules/variable-pie.js +1 -1
- package/modules/variable-pie.src.js +1 -1
- package/modules/variwide.js +1 -1
- package/modules/variwide.src.js +1 -1
- package/modules/vector.js +1 -1
- package/modules/vector.src.js +1 -1
- package/modules/venn.js +31 -30
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +508 -424
- package/modules/windbarb.js +1 -1
- package/modules/windbarb.src.js +1 -1
- package/modules/wordcloud.js +4 -4
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +2 -1
- package/modules/xrange.js +17 -17
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +7 -4
- package/package.json +1 -1
- package/themes/avocado.d.ts +6 -1
- package/themes/avocado.js +3 -3
- package/themes/avocado.js.map +1 -1
- package/themes/avocado.src.d.ts +6 -1
- package/themes/avocado.src.js +53 -22
- package/themes/dark-blue.d.ts +6 -1
- package/themes/dark-blue.js +3 -3
- package/themes/dark-blue.js.map +1 -1
- package/themes/dark-blue.src.d.ts +6 -1
- package/themes/dark-blue.src.js +231 -205
- package/themes/dark-green.d.ts +6 -1
- package/themes/dark-green.js +4 -4
- package/themes/dark-green.js.map +1 -1
- package/themes/dark-green.src.d.ts +6 -1
- package/themes/dark-green.src.js +236 -205
- package/themes/dark-unica.d.ts +6 -1
- package/themes/dark-unica.js +7 -7
- package/themes/dark-unica.js.map +1 -1
- package/themes/dark-unica.src.d.ts +6 -1
- package/themes/dark-unica.src.js +206 -174
- package/themes/gray.d.ts +6 -1
- package/themes/gray.js +3 -3
- package/themes/gray.js.map +1 -1
- package/themes/gray.src.d.ts +6 -1
- package/themes/gray.src.js +233 -207
- package/themes/grid-light.d.ts +6 -1
- package/themes/grid-light.js +4 -4
- package/themes/grid-light.js.map +1 -1
- package/themes/grid-light.src.d.ts +6 -1
- package/themes/grid-light.src.js +88 -57
- package/themes/grid.d.ts +6 -1
- package/themes/grid.js +3 -3
- package/themes/grid.js.map +1 -1
- package/themes/grid.src.d.ts +6 -1
- package/themes/grid.src.js +114 -83
- package/themes/high-contrast-dark.js +5 -4
- package/themes/high-contrast-dark.js.map +1 -1
- package/themes/high-contrast-dark.src.js +197 -166
- package/themes/high-contrast-light.js +3 -3
- package/themes/high-contrast-light.js.map +1 -1
- package/themes/high-contrast-light.src.js +54 -23
- package/themes/sand-signika.d.ts +6 -1
- package/themes/sand-signika.js +5 -5
- package/themes/sand-signika.js.map +1 -1
- package/themes/sand-signika.src.d.ts +6 -1
- package/themes/sand-signika.src.js +119 -88
- package/themes/skies.d.ts +6 -1
- package/themes/skies.js +5 -5
- package/themes/skies.js.map +1 -1
- package/themes/skies.src.d.ts +6 -1
- package/themes/skies.src.js +107 -76
- package/themes/sunset.d.ts +6 -1
- package/themes/sunset.js +3 -3
- package/themes/sunset.js.map +1 -1
- package/themes/sunset.src.d.ts +6 -1
- package/themes/sunset.src.js +52 -21
- package/es-modules/Core/Axis/ColorAxis.js +0 -1164
- package/es-modules/Core/Axis/HiddenAxis.js +0 -46
- package/es-modules/Core/Axis/PlotLineOrBand.js +0 -1051
- package/es-modules/Core/Series/DataLabels.js +0 -1173
- package/es-modules/Extensions/Exporting.js +0 -2024
- package/es-modules/Extensions/OfflineExporting.js +0 -621
- package/es-modules/Mixins/Geometry.js +0 -56
- package/es-modules/Mixins/GeometryCircles.js +0 -320
- package/es-modules/Series/Bubble/BubbleLegend.js +0 -893
|
@@ -1,621 +0,0 @@
|
|
|
1
|
-
/* *
|
|
2
|
-
*
|
|
3
|
-
* Client side exporting module
|
|
4
|
-
*
|
|
5
|
-
* (c) 2015 Torstein Honsi / Oystein Moseng
|
|
6
|
-
*
|
|
7
|
-
* License: www.highcharts.com/license
|
|
8
|
-
*
|
|
9
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
10
|
-
*
|
|
11
|
-
* */
|
|
12
|
-
import Chart from '../Core/Chart/Chart.js';
|
|
13
|
-
import H from '../Core/Globals.js';
|
|
14
|
-
var win = H.win, doc = H.doc;
|
|
15
|
-
import D from '../Core/DefaultOptions.js';
|
|
16
|
-
var getOptions = D.getOptions;
|
|
17
|
-
import SVGRenderer from '../Core/Renderer/SVG/SVGRenderer.js';
|
|
18
|
-
import U from '../Core/Utilities.js';
|
|
19
|
-
var addEvent = U.addEvent, error = U.error, extend = U.extend, fireEvent = U.fireEvent, merge = U.merge;
|
|
20
|
-
import DownloadURL from '../Extensions/DownloadURL.js';
|
|
21
|
-
var downloadURL = DownloadURL.downloadURL;
|
|
22
|
-
var domurl = win.URL || win.webkitURL || win,
|
|
23
|
-
// Milliseconds to defer image load event handlers to offset IE bug
|
|
24
|
-
loadEventDeferDelay = H.isMS ? 150 : 0;
|
|
25
|
-
// Dummy object so we can reuse our canvas-tools.js without errors
|
|
26
|
-
H.CanVGRenderer = {};
|
|
27
|
-
/* eslint-disable valid-jsdoc */
|
|
28
|
-
/**
|
|
29
|
-
* Downloads a script and executes a callback when done.
|
|
30
|
-
*
|
|
31
|
-
* @private
|
|
32
|
-
* @function getScript
|
|
33
|
-
* @param {string} scriptLocation
|
|
34
|
-
* @param {Function} callback
|
|
35
|
-
* @return {void}
|
|
36
|
-
*/
|
|
37
|
-
function getScript(scriptLocation, callback) {
|
|
38
|
-
var head = doc.getElementsByTagName('head')[0], script = doc.createElement('script');
|
|
39
|
-
script.type = 'text/javascript';
|
|
40
|
-
script.src = scriptLocation;
|
|
41
|
-
script.onload = callback;
|
|
42
|
-
script.onerror = function () {
|
|
43
|
-
error('Error loading script ' + scriptLocation);
|
|
44
|
-
};
|
|
45
|
-
head.appendChild(script);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get blob URL from SVG code. Falls back to normal data URI.
|
|
49
|
-
*
|
|
50
|
-
* @private
|
|
51
|
-
* @function Highcharts.svgToDataURL
|
|
52
|
-
* @param {string} svg
|
|
53
|
-
* @return {string}
|
|
54
|
-
*/
|
|
55
|
-
function svgToDataUrl(svg) {
|
|
56
|
-
// Webkit and not chrome
|
|
57
|
-
var userAgent = win.navigator.userAgent;
|
|
58
|
-
var webKit = (userAgent.indexOf('WebKit') > -1 &&
|
|
59
|
-
userAgent.indexOf('Chrome') < 0);
|
|
60
|
-
try {
|
|
61
|
-
// Safari requires data URI since it doesn't allow navigation to blob
|
|
62
|
-
// URLs. Firefox has an issue with Blobs and internal references,
|
|
63
|
-
// leading to gradients not working using Blobs (#4550).
|
|
64
|
-
// foreignObjects also dont work well in Blobs in Chrome (#14780).
|
|
65
|
-
if (!webKit && !H.isFirefox && svg.indexOf('<foreignObject') === -1) {
|
|
66
|
-
return domurl.createObjectURL(new win.Blob([svg], {
|
|
67
|
-
type: 'image/svg+xml;charset-utf-16'
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch (e) {
|
|
72
|
-
// Ignore
|
|
73
|
-
}
|
|
74
|
-
return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Get data:URL from image URL. Pass in callbacks to handle results.
|
|
78
|
-
*
|
|
79
|
-
* @private
|
|
80
|
-
* @function Highcharts.imageToDataUrl
|
|
81
|
-
*
|
|
82
|
-
* @param {string} imageURL
|
|
83
|
-
*
|
|
84
|
-
* @param {string} imageType
|
|
85
|
-
*
|
|
86
|
-
* @param {*} callbackArgs
|
|
87
|
-
* callbackArgs is used only by callbacks.
|
|
88
|
-
*
|
|
89
|
-
* @param {number} scale
|
|
90
|
-
*
|
|
91
|
-
* @param {Function} successCallback
|
|
92
|
-
* Receives four arguments: imageURL, imageType, callbackArgs, and scale.
|
|
93
|
-
*
|
|
94
|
-
* @param {Function} taintedCallback
|
|
95
|
-
* Receives four arguments: imageURL, imageType, callbackArgs, and scale.
|
|
96
|
-
*
|
|
97
|
-
* @param {Function} noCanvasSupportCallback
|
|
98
|
-
* Receives four arguments: imageURL, imageType, callbackArgs, and scale.
|
|
99
|
-
*
|
|
100
|
-
* @param {Function} failedLoadCallback
|
|
101
|
-
* Receives four arguments: imageURL, imageType, callbackArgs, and scale.
|
|
102
|
-
*
|
|
103
|
-
* @param {Function} [finallyCallback]
|
|
104
|
-
* finallyCallback is always called at the end of the process. All
|
|
105
|
-
* callbacks receive four arguments: imageURL, imageType, callbackArgs,
|
|
106
|
-
* and scale.
|
|
107
|
-
*
|
|
108
|
-
* @return {void}
|
|
109
|
-
*/
|
|
110
|
-
function imageToDataUrl(imageURL, imageType, callbackArgs, scale, successCallback, taintedCallback, noCanvasSupportCallback, failedLoadCallback, finallyCallback) {
|
|
111
|
-
var img = new win.Image(), taintedHandler, loadHandler = function () {
|
|
112
|
-
setTimeout(function () {
|
|
113
|
-
var canvas = doc.createElement('canvas'), ctx = canvas.getContext && canvas.getContext('2d'), dataURL;
|
|
114
|
-
try {
|
|
115
|
-
if (!ctx) {
|
|
116
|
-
noCanvasSupportCallback(imageURL, imageType, callbackArgs, scale);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
canvas.height = img.height * scale;
|
|
120
|
-
canvas.width = img.width * scale;
|
|
121
|
-
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
122
|
-
// Now we try to get the contents of the canvas.
|
|
123
|
-
try {
|
|
124
|
-
dataURL = canvas.toDataURL(imageType);
|
|
125
|
-
successCallback(dataURL, imageType, callbackArgs, scale);
|
|
126
|
-
}
|
|
127
|
-
catch (e) {
|
|
128
|
-
taintedHandler(imageURL, imageType, callbackArgs, scale);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
finally {
|
|
133
|
-
if (finallyCallback) {
|
|
134
|
-
finallyCallback(imageURL, imageType, callbackArgs, scale);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
// IE bug where image is not always ready despite calling load
|
|
138
|
-
// event.
|
|
139
|
-
}, loadEventDeferDelay);
|
|
140
|
-
},
|
|
141
|
-
// Image load failed (e.g. invalid URL)
|
|
142
|
-
errorHandler = function () {
|
|
143
|
-
failedLoadCallback(imageURL, imageType, callbackArgs, scale);
|
|
144
|
-
if (finallyCallback) {
|
|
145
|
-
finallyCallback(imageURL, imageType, callbackArgs, scale);
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
// This is called on load if the image drawing to canvas failed with a
|
|
149
|
-
// security error. We retry the drawing with crossOrigin set to Anonymous.
|
|
150
|
-
taintedHandler = function () {
|
|
151
|
-
img = new win.Image();
|
|
152
|
-
taintedHandler = taintedCallback;
|
|
153
|
-
// Must be set prior to loading image source
|
|
154
|
-
img.crossOrigin = 'Anonymous';
|
|
155
|
-
img.onload = loadHandler;
|
|
156
|
-
img.onerror = errorHandler;
|
|
157
|
-
img.src = imageURL;
|
|
158
|
-
};
|
|
159
|
-
img.onload = loadHandler;
|
|
160
|
-
img.onerror = errorHandler;
|
|
161
|
-
img.src = imageURL;
|
|
162
|
-
}
|
|
163
|
-
/* eslint-enable valid-jsdoc */
|
|
164
|
-
/**
|
|
165
|
-
* Get data URL to an image of an SVG and call download on it options object:
|
|
166
|
-
*
|
|
167
|
-
* - **filename:** Name of resulting downloaded file without extension. Default
|
|
168
|
-
* is `chart`.
|
|
169
|
-
*
|
|
170
|
-
* - **type:** File type of resulting download. Default is `image/png`.
|
|
171
|
-
*
|
|
172
|
-
* - **scale:** Scaling factor of downloaded image compared to source. Default
|
|
173
|
-
* is `1`.
|
|
174
|
-
*
|
|
175
|
-
* - **libURL:** URL pointing to location of dependency scripts to download on
|
|
176
|
-
* demand. Default is the exporting.libURL option of the global Highcharts
|
|
177
|
-
* options pointing to our server.
|
|
178
|
-
*
|
|
179
|
-
* @function Highcharts.downloadSVGLocal
|
|
180
|
-
*
|
|
181
|
-
* @param {string} svg
|
|
182
|
-
* The generated SVG
|
|
183
|
-
*
|
|
184
|
-
* @param {Highcharts.ExportingOptions} options
|
|
185
|
-
* The exporting options
|
|
186
|
-
*
|
|
187
|
-
* @param {Function} failCallback
|
|
188
|
-
* The callback function in case of errors
|
|
189
|
-
*
|
|
190
|
-
* @param {Function} [successCallback]
|
|
191
|
-
* The callback function in case of success
|
|
192
|
-
*
|
|
193
|
-
* @return {void}
|
|
194
|
-
*/
|
|
195
|
-
function downloadSVGLocal(svg, options, failCallback, successCallback) {
|
|
196
|
-
var svgurl, blob, objectURLRevoke = true, finallyHandler, libURL = (options.libURL || getOptions().exporting.libURL), dummySVGContainer = doc.createElement('div'), imageType = options.type || 'image/png', filename = ((options.filename || 'chart') +
|
|
197
|
-
'.' +
|
|
198
|
-
(imageType === 'image/svg+xml' ? 'svg' : imageType.split('/')[1])), scale = options.scale || 1;
|
|
199
|
-
// Allow libURL to end with or without fordward slash
|
|
200
|
-
libURL = libURL.slice(-1) !== '/' ? libURL + '/' : libURL;
|
|
201
|
-
/* eslint-disable valid-jsdoc */
|
|
202
|
-
/**
|
|
203
|
-
* @private
|
|
204
|
-
*/
|
|
205
|
-
function svgToPdf(svgElement, margin) {
|
|
206
|
-
var width = svgElement.width.baseVal.value + 2 * margin, height = svgElement.height.baseVal.value + 2 * margin, pdf = new win.jsPDF(// eslint-disable-line new-cap
|
|
207
|
-
height > width ? 'p' : 'l', // setting orientation to portrait if height exceeds width
|
|
208
|
-
'pt', [width, height]);
|
|
209
|
-
// Workaround for #7090, hidden elements were drawn anyway. It comes
|
|
210
|
-
// down to https://github.com/yWorks/svg2pdf.js/issues/28. Check this
|
|
211
|
-
// later.
|
|
212
|
-
[].forEach.call(svgElement.querySelectorAll('*[visibility="hidden"]'), function (node) {
|
|
213
|
-
node.parentNode.removeChild(node);
|
|
214
|
-
});
|
|
215
|
-
// Workaround for #13948, multiple stops in linear gradient set to 0
|
|
216
|
-
// causing error in Acrobat
|
|
217
|
-
var gradients = svgElement.querySelectorAll('linearGradient');
|
|
218
|
-
for (var index = 0; index < gradients.length; index++) {
|
|
219
|
-
var gradient = gradients[index];
|
|
220
|
-
var stops = gradient.querySelectorAll('stop');
|
|
221
|
-
var i = 0;
|
|
222
|
-
while (i < stops.length &&
|
|
223
|
-
stops[i].getAttribute('offset') === '0' &&
|
|
224
|
-
stops[i + 1].getAttribute('offset') === '0') {
|
|
225
|
-
stops[i].remove();
|
|
226
|
-
i++;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Workaround for #15135, zero width spaces, which Highcharts uses to
|
|
230
|
-
// break lines, are not correctly rendered in PDF. Replace it with a
|
|
231
|
-
// regular space and offset by some pixels to compensate.
|
|
232
|
-
[].forEach.call(svgElement.querySelectorAll('tspan'), function (tspan) {
|
|
233
|
-
if (tspan.textContent === '\u200B') {
|
|
234
|
-
tspan.textContent = ' ';
|
|
235
|
-
tspan.setAttribute('dx', -5);
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
win.svg2pdf(svgElement, pdf, { removeInvalid: true });
|
|
239
|
-
return pdf.output('datauristring');
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* @private
|
|
243
|
-
* @return {void}
|
|
244
|
-
*/
|
|
245
|
-
function downloadPDF() {
|
|
246
|
-
dummySVGContainer.innerHTML = svg;
|
|
247
|
-
var textElements = dummySVGContainer.getElementsByTagName('text'), titleElements, svgData,
|
|
248
|
-
// Copy style property to element from parents if it's not there.
|
|
249
|
-
// Searches up hierarchy until it finds prop, or hits the chart
|
|
250
|
-
// container.
|
|
251
|
-
setStylePropertyFromParents = function (el, propName) {
|
|
252
|
-
var curParent = el;
|
|
253
|
-
while (curParent && curParent !== dummySVGContainer) {
|
|
254
|
-
if (curParent.style[propName]) {
|
|
255
|
-
el.style[propName] =
|
|
256
|
-
curParent.style[propName];
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
curParent = curParent.parentNode;
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
// Workaround for the text styling. Making sure it does pick up settings
|
|
263
|
-
// for parent elements.
|
|
264
|
-
[].forEach.call(textElements, function (el) {
|
|
265
|
-
// Workaround for the text styling. making sure it does pick up the
|
|
266
|
-
// root element
|
|
267
|
-
['font-family', 'font-size'].forEach(function (property) {
|
|
268
|
-
setStylePropertyFromParents(el, property);
|
|
269
|
-
});
|
|
270
|
-
el.style['font-family'] = (el.style['font-family'] &&
|
|
271
|
-
el.style['font-family'].split(' ').splice(-1));
|
|
272
|
-
// Workaround for plotband with width, removing title from text
|
|
273
|
-
// nodes
|
|
274
|
-
titleElements = el.getElementsByTagName('title');
|
|
275
|
-
[].forEach.call(titleElements, function (titleElement) {
|
|
276
|
-
el.removeChild(titleElement);
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
svgData = svgToPdf(dummySVGContainer.firstChild, 0);
|
|
280
|
-
try {
|
|
281
|
-
downloadURL(svgData, filename);
|
|
282
|
-
if (successCallback) {
|
|
283
|
-
successCallback();
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
catch (e) {
|
|
287
|
-
failCallback(e);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
/* eslint-enable valid-jsdoc */
|
|
291
|
-
// Initiate download depending on file type
|
|
292
|
-
if (imageType === 'image/svg+xml') {
|
|
293
|
-
// SVG download. In this case, we want to use Microsoft specific Blob if
|
|
294
|
-
// available
|
|
295
|
-
try {
|
|
296
|
-
if (typeof win.navigator.msSaveOrOpenBlob !== 'undefined') {
|
|
297
|
-
blob = new MSBlobBuilder();
|
|
298
|
-
blob.append(svg);
|
|
299
|
-
svgurl = blob.getBlob('image/svg+xml');
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
svgurl = svgToDataUrl(svg);
|
|
303
|
-
}
|
|
304
|
-
downloadURL(svgurl, filename);
|
|
305
|
-
if (successCallback) {
|
|
306
|
-
successCallback();
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
catch (e) {
|
|
310
|
-
failCallback(e);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
else if (imageType === 'application/pdf') {
|
|
314
|
-
if (win.jsPDF && win.svg2pdf) {
|
|
315
|
-
downloadPDF();
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
// Must load pdf libraries first. // Don't destroy the object URL
|
|
319
|
-
// yet since we are doing things asynchronously. A cleaner solution
|
|
320
|
-
// would be nice, but this will do for now.
|
|
321
|
-
objectURLRevoke = true;
|
|
322
|
-
getScript(libURL + 'jspdf.js', function () {
|
|
323
|
-
getScript(libURL + 'svg2pdf.js', function () {
|
|
324
|
-
downloadPDF();
|
|
325
|
-
});
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
else {
|
|
330
|
-
// PNG/JPEG download - create bitmap from SVG
|
|
331
|
-
svgurl = svgToDataUrl(svg);
|
|
332
|
-
finallyHandler = function () {
|
|
333
|
-
try {
|
|
334
|
-
domurl.revokeObjectURL(svgurl);
|
|
335
|
-
}
|
|
336
|
-
catch (e) {
|
|
337
|
-
// Ignore
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
// First, try to get PNG by rendering on canvas
|
|
341
|
-
imageToDataUrl(svgurl, imageType, {}, scale, function (imageURL) {
|
|
342
|
-
// Success
|
|
343
|
-
try {
|
|
344
|
-
downloadURL(imageURL, filename);
|
|
345
|
-
if (successCallback) {
|
|
346
|
-
successCallback();
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
catch (e) {
|
|
350
|
-
failCallback(e);
|
|
351
|
-
}
|
|
352
|
-
}, function () {
|
|
353
|
-
// Failed due to tainted canvas
|
|
354
|
-
// Create new and untainted canvas
|
|
355
|
-
var canvas = doc.createElement('canvas'), ctx = canvas.getContext('2d'), imageWidth = svg.match(/^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale, imageHeight = svg.match(/^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale, downloadWithCanVG = function () {
|
|
356
|
-
var v = win.canvg.Canvg.fromString(ctx, svg);
|
|
357
|
-
v.start();
|
|
358
|
-
try {
|
|
359
|
-
downloadURL(win.navigator.msSaveOrOpenBlob ?
|
|
360
|
-
canvas.msToBlob() :
|
|
361
|
-
canvas.toDataURL(imageType), filename);
|
|
362
|
-
if (successCallback) {
|
|
363
|
-
successCallback();
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
catch (e) {
|
|
367
|
-
failCallback(e);
|
|
368
|
-
}
|
|
369
|
-
finally {
|
|
370
|
-
finallyHandler();
|
|
371
|
-
}
|
|
372
|
-
};
|
|
373
|
-
canvas.width = imageWidth;
|
|
374
|
-
canvas.height = imageHeight;
|
|
375
|
-
if (win.canvg) {
|
|
376
|
-
// Use preloaded canvg
|
|
377
|
-
downloadWithCanVG();
|
|
378
|
-
}
|
|
379
|
-
else {
|
|
380
|
-
// Must load canVG first. // Don't destroy the object URL
|
|
381
|
-
// yet since we are doing things asynchronously. A cleaner
|
|
382
|
-
// solution would be nice, but this will do for now.
|
|
383
|
-
objectURLRevoke = true;
|
|
384
|
-
getScript(libURL + 'canvg.js', function () {
|
|
385
|
-
downloadWithCanVG();
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
},
|
|
389
|
-
// No canvas support
|
|
390
|
-
failCallback,
|
|
391
|
-
// Failed to load image
|
|
392
|
-
failCallback,
|
|
393
|
-
// Finally
|
|
394
|
-
function () {
|
|
395
|
-
if (objectURLRevoke) {
|
|
396
|
-
finallyHandler();
|
|
397
|
-
}
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
/* eslint-disable valid-jsdoc */
|
|
402
|
-
/**
|
|
403
|
-
* Get SVG of chart prepared for client side export. This converts embedded
|
|
404
|
-
* images in the SVG to data URIs. It requires the regular exporting module. The
|
|
405
|
-
* options and chartOptions arguments are passed to the getSVGForExport
|
|
406
|
-
* function.
|
|
407
|
-
*
|
|
408
|
-
* @private
|
|
409
|
-
* @function Highcharts.Chart#getSVGForLocalExport
|
|
410
|
-
* @param {Highcharts.ExportingOptions} options
|
|
411
|
-
* @param {Highcharts.Options} chartOptions
|
|
412
|
-
* @param {Function} failCallback
|
|
413
|
-
* @param {Function} successCallback
|
|
414
|
-
* @return {void}
|
|
415
|
-
*/
|
|
416
|
-
Chart.prototype.getSVGForLocalExport = function (options, chartOptions, failCallback, successCallback) {
|
|
417
|
-
var chart = this, images, imagesEmbedded = 0, chartCopyContainer, chartCopyOptions, el, i, l, href,
|
|
418
|
-
// After grabbing the SVG of the chart's copy container we need to do
|
|
419
|
-
// sanitation on the SVG
|
|
420
|
-
sanitize = function (svg) {
|
|
421
|
-
return chart.sanitizeSVG(svg, chartCopyOptions);
|
|
422
|
-
},
|
|
423
|
-
// When done with last image we have our SVG
|
|
424
|
-
checkDone = function () {
|
|
425
|
-
if (imagesEmbedded === images.length) {
|
|
426
|
-
successCallback(sanitize(chartCopyContainer.innerHTML));
|
|
427
|
-
}
|
|
428
|
-
},
|
|
429
|
-
// Success handler, we converted image to base64!
|
|
430
|
-
embeddedSuccess = function (imageURL, imageType, callbackArgs) {
|
|
431
|
-
++imagesEmbedded;
|
|
432
|
-
// Change image href in chart copy
|
|
433
|
-
callbackArgs.imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', imageURL);
|
|
434
|
-
checkDone();
|
|
435
|
-
};
|
|
436
|
-
// Hook into getSVG to get a copy of the chart copy's container (#8273)
|
|
437
|
-
chart.unbindGetSVG = addEvent(chart, 'getSVG', function (e) {
|
|
438
|
-
chartCopyOptions = e.chartCopy.options;
|
|
439
|
-
chartCopyContainer = e.chartCopy.container.cloneNode(true);
|
|
440
|
-
});
|
|
441
|
-
// Trigger hook to get chart copy
|
|
442
|
-
chart.getSVGForExport(options, chartOptions);
|
|
443
|
-
images = chartCopyContainer.getElementsByTagName('image');
|
|
444
|
-
try {
|
|
445
|
-
// If there are no images to embed, the SVG is okay now.
|
|
446
|
-
if (!images.length) {
|
|
447
|
-
// Use SVG of chart copy
|
|
448
|
-
successCallback(sanitize(chartCopyContainer.innerHTML));
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
// Go through the images we want to embed
|
|
452
|
-
for (i = 0, l = images.length; i < l; ++i) {
|
|
453
|
-
el = images[i];
|
|
454
|
-
href = el.getAttributeNS('http://www.w3.org/1999/xlink', 'href');
|
|
455
|
-
if (href) {
|
|
456
|
-
imageToDataUrl(href, 'image/png', { imageElement: el }, options.scale, embeddedSuccess,
|
|
457
|
-
// Tainted canvas
|
|
458
|
-
failCallback,
|
|
459
|
-
// No canvas support
|
|
460
|
-
failCallback,
|
|
461
|
-
// Failed to load source
|
|
462
|
-
failCallback);
|
|
463
|
-
// Hidden, boosted series have blank href (#10243)
|
|
464
|
-
}
|
|
465
|
-
else {
|
|
466
|
-
++imagesEmbedded;
|
|
467
|
-
el.parentNode.removeChild(el);
|
|
468
|
-
checkDone();
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
catch (e) {
|
|
473
|
-
failCallback(e);
|
|
474
|
-
}
|
|
475
|
-
// Clean up
|
|
476
|
-
chart.unbindGetSVG();
|
|
477
|
-
};
|
|
478
|
-
/* eslint-enable valid-jsdoc */
|
|
479
|
-
/**
|
|
480
|
-
* Exporting and offline-exporting modules required. Export a chart to an image
|
|
481
|
-
* locally in the user's browser.
|
|
482
|
-
*
|
|
483
|
-
* @function Highcharts.Chart#exportChartLocal
|
|
484
|
-
*
|
|
485
|
-
* @param {Highcharts.ExportingOptions} [exportingOptions]
|
|
486
|
-
* Exporting options, the same as in
|
|
487
|
-
* {@link Highcharts.Chart#exportChart}.
|
|
488
|
-
*
|
|
489
|
-
* @param {Highcharts.Options} [chartOptions]
|
|
490
|
-
* Additional chart options for the exported chart. For example a
|
|
491
|
-
* different background color can be added here, or `dataLabels`
|
|
492
|
-
* for export only.
|
|
493
|
-
*
|
|
494
|
-
* @return {void}
|
|
495
|
-
*
|
|
496
|
-
* @requires modules/exporting
|
|
497
|
-
*/
|
|
498
|
-
Chart.prototype.exportChartLocal = function (exportingOptions, chartOptions) {
|
|
499
|
-
var chart = this, options = merge(chart.options.exporting, exportingOptions), fallbackToExportServer = function (err) {
|
|
500
|
-
if (options.fallbackToExportServer === false) {
|
|
501
|
-
if (options.error) {
|
|
502
|
-
options.error(options, err);
|
|
503
|
-
}
|
|
504
|
-
else {
|
|
505
|
-
error(28, true); // Fallback disabled
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
else {
|
|
509
|
-
chart.exportChart(options);
|
|
510
|
-
}
|
|
511
|
-
}, svgSuccess = function (svg) {
|
|
512
|
-
// If SVG contains foreignObjects PDF fails in all browsers and all
|
|
513
|
-
// exports except SVG will fail in IE, as both CanVG and svg2pdf
|
|
514
|
-
// choke on this. Gracefully fall back.
|
|
515
|
-
if (svg.indexOf('<foreignObject') > -1 &&
|
|
516
|
-
options.type !== 'image/svg+xml' &&
|
|
517
|
-
(H.isMS || options.type === 'application/pdf')) {
|
|
518
|
-
fallbackToExportServer('Image type not supported' +
|
|
519
|
-
'for charts with embedded HTML');
|
|
520
|
-
}
|
|
521
|
-
else {
|
|
522
|
-
downloadSVGLocal(svg, extend({ filename: chart.getFilename() }, options), fallbackToExportServer, function () { return fireEvent(chart, 'exportChartLocalSuccess'); });
|
|
523
|
-
}
|
|
524
|
-
},
|
|
525
|
-
// Return true if the SVG contains images with external data. With the
|
|
526
|
-
// boost module there are `image` elements with encoded PNGs, these are
|
|
527
|
-
// supported by svg2pdf and should pass (#10243).
|
|
528
|
-
hasExternalImages = function () {
|
|
529
|
-
return [].some.call(chart.container.getElementsByTagName('image'), function (image) {
|
|
530
|
-
var href = image.getAttribute('href');
|
|
531
|
-
return href !== '' && href.indexOf('data:') !== 0;
|
|
532
|
-
});
|
|
533
|
-
};
|
|
534
|
-
// If we are on IE and in styled mode, add a whitelist to the renderer for
|
|
535
|
-
// inline styles that we want to pass through. There are so many styles by
|
|
536
|
-
// default in IE that we don't want to blacklist them all.
|
|
537
|
-
if (H.isMS && chart.styledMode) {
|
|
538
|
-
SVGRenderer.prototype.inlineWhitelist = [
|
|
539
|
-
/^blockSize/,
|
|
540
|
-
/^border/,
|
|
541
|
-
/^caretColor/,
|
|
542
|
-
/^color/,
|
|
543
|
-
/^columnRule/,
|
|
544
|
-
/^columnRuleColor/,
|
|
545
|
-
/^cssFloat/,
|
|
546
|
-
/^cursor/,
|
|
547
|
-
/^fill$/,
|
|
548
|
-
/^fillOpacity/,
|
|
549
|
-
/^font/,
|
|
550
|
-
/^inlineSize/,
|
|
551
|
-
/^length/,
|
|
552
|
-
/^lineHeight/,
|
|
553
|
-
/^opacity/,
|
|
554
|
-
/^outline/,
|
|
555
|
-
/^parentRule/,
|
|
556
|
-
/^rx$/,
|
|
557
|
-
/^ry$/,
|
|
558
|
-
/^stroke/,
|
|
559
|
-
/^textAlign/,
|
|
560
|
-
/^textAnchor/,
|
|
561
|
-
/^textDecoration/,
|
|
562
|
-
/^transform/,
|
|
563
|
-
/^vectorEffect/,
|
|
564
|
-
/^visibility/,
|
|
565
|
-
/^x$/,
|
|
566
|
-
/^y$/
|
|
567
|
-
];
|
|
568
|
-
}
|
|
569
|
-
// Always fall back on:
|
|
570
|
-
// - MS browsers: Embedded images JPEG/PNG, or any PDF
|
|
571
|
-
// - Embedded images and PDF
|
|
572
|
-
if ((H.isMS &&
|
|
573
|
-
(options.type === 'application/pdf' ||
|
|
574
|
-
chart.container.getElementsByTagName('image').length &&
|
|
575
|
-
options.type !== 'image/svg+xml')) || (options.type === 'application/pdf' &&
|
|
576
|
-
hasExternalImages())) {
|
|
577
|
-
fallbackToExportServer('Image type not supported for this chart/browser.');
|
|
578
|
-
return;
|
|
579
|
-
}
|
|
580
|
-
chart.getSVGForLocalExport(options, chartOptions || {}, fallbackToExportServer, svgSuccess);
|
|
581
|
-
};
|
|
582
|
-
// Extend the default options to use the local exporter logic
|
|
583
|
-
merge(true, getOptions().exporting, {
|
|
584
|
-
libURL: 'https://code.highcharts.com/9.1.1/lib/',
|
|
585
|
-
// When offline-exporting is loaded, redefine the menu item definitions
|
|
586
|
-
// related to download.
|
|
587
|
-
menuItemDefinitions: {
|
|
588
|
-
downloadPNG: {
|
|
589
|
-
textKey: 'downloadPNG',
|
|
590
|
-
onclick: function () {
|
|
591
|
-
this.exportChartLocal();
|
|
592
|
-
}
|
|
593
|
-
},
|
|
594
|
-
downloadJPEG: {
|
|
595
|
-
textKey: 'downloadJPEG',
|
|
596
|
-
onclick: function () {
|
|
597
|
-
this.exportChartLocal({
|
|
598
|
-
type: 'image/jpeg'
|
|
599
|
-
});
|
|
600
|
-
}
|
|
601
|
-
},
|
|
602
|
-
downloadSVG: {
|
|
603
|
-
textKey: 'downloadSVG',
|
|
604
|
-
onclick: function () {
|
|
605
|
-
this.exportChartLocal({
|
|
606
|
-
type: 'image/svg+xml'
|
|
607
|
-
});
|
|
608
|
-
}
|
|
609
|
-
},
|
|
610
|
-
downloadPDF: {
|
|
611
|
-
textKey: 'downloadPDF',
|
|
612
|
-
onclick: function () {
|
|
613
|
-
this.exportChartLocal({
|
|
614
|
-
type: 'application/pdf'
|
|
615
|
-
});
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
});
|
|
620
|
-
// Compatibility
|
|
621
|
-
H.downloadSVGLocal = downloadSVGLocal;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/* *
|
|
2
|
-
*
|
|
3
|
-
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
4
|
-
*
|
|
5
|
-
* */
|
|
6
|
-
'use strict';
|
|
7
|
-
/**
|
|
8
|
-
* Calculates the center between a list of points.
|
|
9
|
-
* @private
|
|
10
|
-
* @param {Array<Highcharts.PositionObject>} points
|
|
11
|
-
* A list of points to calculate the center of.
|
|
12
|
-
* @return {Highcharts.PositionObject}
|
|
13
|
-
* Calculated center
|
|
14
|
-
*/
|
|
15
|
-
var getCenterOfPoints = function getCenterOfPoints(points) {
|
|
16
|
-
var sum = points.reduce(function (sum, point) {
|
|
17
|
-
sum.x += point.x;
|
|
18
|
-
sum.y += point.y;
|
|
19
|
-
return sum;
|
|
20
|
-
}, { x: 0, y: 0 });
|
|
21
|
-
return {
|
|
22
|
-
x: sum.x / points.length,
|
|
23
|
-
y: sum.y / points.length
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Calculates the distance between two points based on their x and y
|
|
28
|
-
* coordinates.
|
|
29
|
-
* @private
|
|
30
|
-
* @param {Highcharts.PositionObject} p1
|
|
31
|
-
* The x and y coordinates of the first point.
|
|
32
|
-
* @param {Highcharts.PositionObject} p2
|
|
33
|
-
* The x and y coordinates of the second point.
|
|
34
|
-
* @return {number}
|
|
35
|
-
* Returns the distance between the points.
|
|
36
|
-
*/
|
|
37
|
-
var getDistanceBetweenPoints = function getDistanceBetweenPoints(p1, p2) {
|
|
38
|
-
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Calculates the angle between two points.
|
|
42
|
-
* @todo add unit tests.
|
|
43
|
-
* @private
|
|
44
|
-
* @param {Highcharts.PositionObject} p1 The first point.
|
|
45
|
-
* @param {Highcharts.PositionObject} p2 The second point.
|
|
46
|
-
* @return {number} Returns the angle in radians.
|
|
47
|
-
*/
|
|
48
|
-
var getAngleBetweenPoints = function getAngleBetweenPoints(p1, p2) {
|
|
49
|
-
return Math.atan2(p2.x - p1.x, p2.y - p1.y);
|
|
50
|
-
};
|
|
51
|
-
var geometry = {
|
|
52
|
-
getAngleBetweenPoints: getAngleBetweenPoints,
|
|
53
|
-
getCenterOfPoints: getCenterOfPoints,
|
|
54
|
-
getDistanceBetweenPoints: getDistanceBetweenPoints
|
|
55
|
-
};
|
|
56
|
-
export default geometry;
|