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
|
@@ -0,0 +1,617 @@
|
|
|
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
|
+
/* global MSBlobBuilder */
|
|
13
|
+
'use strict';
|
|
14
|
+
import Chart from '../../Core/Chart/Chart.js';
|
|
15
|
+
import D from '../../Core/DefaultOptions.js';
|
|
16
|
+
var defaultOptions = D.defaultOptions;
|
|
17
|
+
import DownloadURL from '../DownloadURL.js';
|
|
18
|
+
var downloadURL = DownloadURL.downloadURL;
|
|
19
|
+
import Exporting from '../Exporting/Exporting.js';
|
|
20
|
+
import H from '../../Core/Globals.js';
|
|
21
|
+
var win = H.win, doc = H.doc;
|
|
22
|
+
import OfflineExportingDefaults from './OfflineExportingDefaults.js';
|
|
23
|
+
import U from '../../Core/Utilities.js';
|
|
24
|
+
var addEvent = U.addEvent, error = U.error, extend = U.extend, fireEvent = U.fireEvent, merge = U.merge;
|
|
25
|
+
/* *
|
|
26
|
+
*
|
|
27
|
+
* Constants
|
|
28
|
+
*
|
|
29
|
+
* */
|
|
30
|
+
var composedClasses = [];
|
|
31
|
+
/* *
|
|
32
|
+
*
|
|
33
|
+
* Composition
|
|
34
|
+
*
|
|
35
|
+
* */
|
|
36
|
+
var OfflineExporting;
|
|
37
|
+
(function (OfflineExporting) {
|
|
38
|
+
/* *
|
|
39
|
+
*
|
|
40
|
+
* Declarations
|
|
41
|
+
*
|
|
42
|
+
* */
|
|
43
|
+
/* *
|
|
44
|
+
*
|
|
45
|
+
* Constants
|
|
46
|
+
*
|
|
47
|
+
* */
|
|
48
|
+
// Dummy object so we can reuse our canvas-tools.js without errors
|
|
49
|
+
OfflineExporting.CanVGRenderer = {}, OfflineExporting.domurl = win.URL || win.webkitURL || win,
|
|
50
|
+
// Milliseconds to defer image load event handlers to offset IE bug
|
|
51
|
+
OfflineExporting.loadEventDeferDelay = H.isMS ? 150 : 0;
|
|
52
|
+
/* *
|
|
53
|
+
*
|
|
54
|
+
* Functions
|
|
55
|
+
*
|
|
56
|
+
* */
|
|
57
|
+
/* eslint-disable valid-jsdoc */
|
|
58
|
+
/**
|
|
59
|
+
* Extends OfflineExporting with Chart.
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
function compose(ChartClass) {
|
|
63
|
+
if (composedClasses.indexOf(ChartClass) === -1) {
|
|
64
|
+
composedClasses.push(ChartClass);
|
|
65
|
+
var chartProto = ChartClass.prototype;
|
|
66
|
+
chartProto.getSVGForLocalExport = getSVGForLocalExport;
|
|
67
|
+
chartProto.exportChartLocal = exportChartLocal;
|
|
68
|
+
// Extend the default options to use the local exporter logic
|
|
69
|
+
merge(true, defaultOptions.exporting, OfflineExportingDefaults);
|
|
70
|
+
}
|
|
71
|
+
return ChartClass;
|
|
72
|
+
}
|
|
73
|
+
OfflineExporting.compose = compose;
|
|
74
|
+
/* eslint-disable valid-jsdoc */
|
|
75
|
+
/**
|
|
76
|
+
* Get data URL to an image of an SVG and call download on it options
|
|
77
|
+
* object:
|
|
78
|
+
* - **filename:** Name of resulting downloaded file without extension.
|
|
79
|
+
* Default is `chart`.
|
|
80
|
+
*
|
|
81
|
+
* - **type:** File type of resulting download. Default is `image/png`.
|
|
82
|
+
*
|
|
83
|
+
* - **scale:** Scaling factor of downloaded image compared to source.
|
|
84
|
+
* Default is `1`.
|
|
85
|
+
*
|
|
86
|
+
* - **libURL:** URL pointing to location of dependency scripts to download
|
|
87
|
+
* on demand. Default is the exporting.libURL option of the global
|
|
88
|
+
* Highcharts options pointing to our server.
|
|
89
|
+
*
|
|
90
|
+
* @function Highcharts.downloadSVGLocal
|
|
91
|
+
*
|
|
92
|
+
* @param {string} svg
|
|
93
|
+
* The generated SVG
|
|
94
|
+
*
|
|
95
|
+
* @param {Highcharts.ExportingOptions} options
|
|
96
|
+
* The exporting options
|
|
97
|
+
*
|
|
98
|
+
* @param {Function} failCallback
|
|
99
|
+
* The callback function in case of errors
|
|
100
|
+
*
|
|
101
|
+
* @param {Function} [successCallback]
|
|
102
|
+
* The callback function in case of success
|
|
103
|
+
*
|
|
104
|
+
* @return {void}
|
|
105
|
+
*/
|
|
106
|
+
function downloadSVGLocal(svg, options, failCallback, successCallback) {
|
|
107
|
+
var dummySVGContainer = doc.createElement('div'), imageType = options.type || 'image/png', filename = ((options.filename || 'chart') +
|
|
108
|
+
'.' +
|
|
109
|
+
(imageType === 'image/svg+xml' ? 'svg' : imageType.split('/')[1])), scale = options.scale || 1;
|
|
110
|
+
var svgurl, blob, finallyHandler, libURL = (options.libURL || defaultOptions.exporting.libURL), objectURLRevoke = true;
|
|
111
|
+
// Allow libURL to end with or without fordward slash
|
|
112
|
+
libURL = libURL.slice(-1) !== '/' ? libURL + '/' : libURL;
|
|
113
|
+
/**
|
|
114
|
+
* @private
|
|
115
|
+
* @return {void}
|
|
116
|
+
*/
|
|
117
|
+
var downloadPDF = function () {
|
|
118
|
+
dummySVGContainer.innerHTML = svg;
|
|
119
|
+
var textElements = dummySVGContainer.getElementsByTagName('text'),
|
|
120
|
+
// Copy style property to element from parents if it's not
|
|
121
|
+
// there. Searches up hierarchy until it finds prop, or hits the
|
|
122
|
+
// chart container.
|
|
123
|
+
setStylePropertyFromParents = function (el, propName) {
|
|
124
|
+
var curParent = el;
|
|
125
|
+
while (curParent && curParent !== dummySVGContainer) {
|
|
126
|
+
if (curParent.style[propName]) {
|
|
127
|
+
el.style[propName] =
|
|
128
|
+
curParent.style[propName];
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
curParent = curParent.parentNode;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
var titleElements;
|
|
135
|
+
// Workaround for the text styling. Making sure it does pick up
|
|
136
|
+
// settings for parent elements.
|
|
137
|
+
[].forEach.call(textElements, function (el) {
|
|
138
|
+
// Workaround for the text styling. making sure it does pick up@
|
|
139
|
+
// the root element
|
|
140
|
+
['font-family', 'font-size'].forEach(function (property) {
|
|
141
|
+
setStylePropertyFromParents(el, property);
|
|
142
|
+
});
|
|
143
|
+
el.style['font-family'] = (el.style['font-family'] &&
|
|
144
|
+
el.style['font-family'].split(' ').splice(-1));
|
|
145
|
+
// Workaround for plotband with width, removing title from text
|
|
146
|
+
// nodes
|
|
147
|
+
titleElements = el.getElementsByTagName('title');
|
|
148
|
+
[].forEach.call(titleElements, function (titleElement) {
|
|
149
|
+
el.removeChild(titleElement);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
var svgData = svgToPdf(dummySVGContainer.firstChild, 0);
|
|
153
|
+
try {
|
|
154
|
+
downloadURL(svgData, filename);
|
|
155
|
+
if (successCallback) {
|
|
156
|
+
successCallback();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
failCallback(e);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
// Initiate download depending on file type
|
|
164
|
+
if (imageType === 'image/svg+xml') {
|
|
165
|
+
// SVG download. In this case, we want to use Microsoft specific
|
|
166
|
+
// Blob if available
|
|
167
|
+
try {
|
|
168
|
+
if (typeof win.navigator.msSaveOrOpenBlob !== 'undefined') {
|
|
169
|
+
blob = new MSBlobBuilder();
|
|
170
|
+
blob.append(svg);
|
|
171
|
+
svgurl = blob.getBlob('image/svg+xml');
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
svgurl = svgToDataUrl(svg);
|
|
175
|
+
}
|
|
176
|
+
downloadURL(svgurl, filename);
|
|
177
|
+
if (successCallback) {
|
|
178
|
+
successCallback();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (e) {
|
|
182
|
+
failCallback(e);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else if (imageType === 'application/pdf') {
|
|
186
|
+
if (win.jsPDF && win.svg2pdf) {
|
|
187
|
+
downloadPDF();
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
// Must load pdf libraries first. // Don't destroy the object
|
|
191
|
+
// URL yet since we are doing things asynchronously. A cleaner
|
|
192
|
+
// solution would be nice, but this will do for now.
|
|
193
|
+
objectURLRevoke = true;
|
|
194
|
+
getScript(libURL + 'jspdf.js', function () {
|
|
195
|
+
getScript(libURL + 'svg2pdf.js', function () {
|
|
196
|
+
downloadPDF();
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
// PNG/JPEG download - create bitmap from SVG
|
|
203
|
+
svgurl = svgToDataUrl(svg);
|
|
204
|
+
finallyHandler = function () {
|
|
205
|
+
try {
|
|
206
|
+
OfflineExporting.domurl.revokeObjectURL(svgurl);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
// Ignore
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
// First, try to get PNG by rendering on canvas
|
|
213
|
+
imageToDataUrl(svgurl, imageType, {}, scale, function (imageURL) {
|
|
214
|
+
// Success
|
|
215
|
+
try {
|
|
216
|
+
downloadURL(imageURL, filename);
|
|
217
|
+
if (successCallback) {
|
|
218
|
+
successCallback();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch (e) {
|
|
222
|
+
failCallback(e);
|
|
223
|
+
}
|
|
224
|
+
}, function () {
|
|
225
|
+
// Failed due to tainted canvas
|
|
226
|
+
// Create new and untainted canvas
|
|
227
|
+
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 () {
|
|
228
|
+
var v = win.canvg.Canvg.fromString(ctx, svg);
|
|
229
|
+
v.start();
|
|
230
|
+
try {
|
|
231
|
+
downloadURL(win.navigator.msSaveOrOpenBlob ?
|
|
232
|
+
canvas.msToBlob() :
|
|
233
|
+
canvas.toDataURL(imageType), filename);
|
|
234
|
+
if (successCallback) {
|
|
235
|
+
successCallback();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (e) {
|
|
239
|
+
failCallback(e);
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
finallyHandler();
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
canvas.width = imageWidth;
|
|
246
|
+
canvas.height = imageHeight;
|
|
247
|
+
if (win.canvg) {
|
|
248
|
+
// Use preloaded canvg
|
|
249
|
+
downloadWithCanVG();
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
// Must load canVG first. // Don't destroy the object
|
|
253
|
+
// URL yet since we are doing things asynchronously. A
|
|
254
|
+
// cleaner solution would be nice, but this will do for
|
|
255
|
+
// now.
|
|
256
|
+
objectURLRevoke = true;
|
|
257
|
+
getScript(libURL + 'canvg.js', function () {
|
|
258
|
+
downloadWithCanVG();
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
// No canvas support
|
|
263
|
+
failCallback,
|
|
264
|
+
// Failed to load image
|
|
265
|
+
failCallback,
|
|
266
|
+
// Finally
|
|
267
|
+
function () {
|
|
268
|
+
if (objectURLRevoke) {
|
|
269
|
+
finallyHandler();
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
OfflineExporting.downloadSVGLocal = downloadSVGLocal;
|
|
275
|
+
/* eslint-disable valid-jsdoc */
|
|
276
|
+
/**
|
|
277
|
+
* Exporting and offline-exporting modules required. Export a chart to
|
|
278
|
+
* an image locally in the user's browser.
|
|
279
|
+
*
|
|
280
|
+
* @function Highcharts.Chart#exportChartLocal
|
|
281
|
+
*
|
|
282
|
+
* @param {Highcharts.ExportingOptions} [exportingOptions]
|
|
283
|
+
* Exporting options, the same as in
|
|
284
|
+
* {@link Highcharts.Chart#exportChart}.
|
|
285
|
+
*
|
|
286
|
+
* @param {Highcharts.Options} [chartOptions]
|
|
287
|
+
* Additional chart options for the exported chart. For example
|
|
288
|
+
* a different background color can be added here, or
|
|
289
|
+
* `dataLabels` for export only.
|
|
290
|
+
*
|
|
291
|
+
* @return {void}
|
|
292
|
+
*
|
|
293
|
+
* @requires modules/exporting
|
|
294
|
+
*/
|
|
295
|
+
function exportChartLocal(exportingOptions, chartOptions) {
|
|
296
|
+
var chart = this, options = merge(chart.options.exporting, exportingOptions), fallbackToExportServer = function (err) {
|
|
297
|
+
if (options.fallbackToExportServer === false) {
|
|
298
|
+
if (options.error) {
|
|
299
|
+
options.error(options, err);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
error(28, true); // Fallback disabled
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
chart.exportChart(options);
|
|
307
|
+
}
|
|
308
|
+
}, svgSuccess = function (svg) {
|
|
309
|
+
// If SVG contains foreignObjects PDF fails in all browsers
|
|
310
|
+
// and all exports except SVG will fail in IE, as both CanVG
|
|
311
|
+
// and svg2pdf choke on this. Gracefully fall back.
|
|
312
|
+
if (svg.indexOf('<foreignObject') > -1 &&
|
|
313
|
+
options.type !== 'image/svg+xml' &&
|
|
314
|
+
(H.isMS || options.type === 'application/pdf')) {
|
|
315
|
+
fallbackToExportServer('Image type not supported' +
|
|
316
|
+
'for charts with embedded HTML');
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
OfflineExporting.downloadSVGLocal(svg, extend({ filename: chart.getFilename() }, options), fallbackToExportServer, function () { return fireEvent(chart, 'exportChartLocalSuccess'); });
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
// Return true if the SVG contains images with external data.
|
|
323
|
+
// With the boost module there are `image` elements with encoded
|
|
324
|
+
// PNGs, these are supported by svg2pdf and should
|
|
325
|
+
// pass (#10243).
|
|
326
|
+
hasExternalImages = function () {
|
|
327
|
+
return [].some.call(chart.container.getElementsByTagName('image'), function (image) {
|
|
328
|
+
var href = image.getAttribute('href');
|
|
329
|
+
return href !== '' && href.indexOf('data:') !== 0;
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
// If we are on IE and in styled mode, add a whitelist to the
|
|
333
|
+
// renderer for inline styles that we want to pass through. There
|
|
334
|
+
// are so many styles by default in IE that we don't want to
|
|
335
|
+
// blacklist them all.
|
|
336
|
+
if (H.isMS && chart.styledMode && !Exporting.inlineWhitelist.length) {
|
|
337
|
+
Exporting.inlineWhitelist.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$/);
|
|
338
|
+
}
|
|
339
|
+
// Always fall back on:
|
|
340
|
+
// - MS browsers: Embedded images JPEG/PNG, or any PDF
|
|
341
|
+
// - Embedded images and PDF
|
|
342
|
+
if ((H.isMS &&
|
|
343
|
+
(options.type === 'application/pdf' ||
|
|
344
|
+
chart.container.getElementsByTagName('image').length &&
|
|
345
|
+
options.type !== 'image/svg+xml')) || (options.type === 'application/pdf' &&
|
|
346
|
+
hasExternalImages())) {
|
|
347
|
+
fallbackToExportServer('Image type not supported for this chart/browser.');
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
chart.getSVGForLocalExport(options, chartOptions || {}, fallbackToExportServer, svgSuccess);
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Downloads a script and executes a callback when done.
|
|
354
|
+
*
|
|
355
|
+
* @private
|
|
356
|
+
* @function getScript
|
|
357
|
+
* @param {string} scriptLocation
|
|
358
|
+
* @param {Function} callback
|
|
359
|
+
*/
|
|
360
|
+
function getScript(scriptLocation, callback) {
|
|
361
|
+
var head = doc.getElementsByTagName('head')[0], script = doc.createElement('script');
|
|
362
|
+
script.type = 'text/javascript';
|
|
363
|
+
script.src = scriptLocation;
|
|
364
|
+
script.onload = callback;
|
|
365
|
+
script.onerror = function () {
|
|
366
|
+
error('Error loading script ' + scriptLocation);
|
|
367
|
+
};
|
|
368
|
+
head.appendChild(script);
|
|
369
|
+
}
|
|
370
|
+
OfflineExporting.getScript = getScript;
|
|
371
|
+
/**
|
|
372
|
+
* Get SVG of chart prepared for client side export. This converts
|
|
373
|
+
* embedded images in the SVG to data URIs. It requires the regular
|
|
374
|
+
* exporting module. The options and chartOptions arguments are passed
|
|
375
|
+
* to the getSVGForExport function.
|
|
376
|
+
*
|
|
377
|
+
* @private
|
|
378
|
+
* @function Highcharts.Chart#getSVGForLocalExport
|
|
379
|
+
* @param {Highcharts.ExportingOptions} options
|
|
380
|
+
* @param {Highcharts.Options} chartOptions
|
|
381
|
+
* @param {Function} failCallback
|
|
382
|
+
* @param {Function} successCallback
|
|
383
|
+
* @return {void}
|
|
384
|
+
*/
|
|
385
|
+
function getSVGForLocalExport(options, chartOptions, failCallback, successCallback) {
|
|
386
|
+
var chart = this,
|
|
387
|
+
// After grabbing the SVG of the chart's copy container we need
|
|
388
|
+
// to do sanitation on the SVG
|
|
389
|
+
sanitize = function (svg) { return chart.sanitizeSVG(svg, chartCopyOptions); },
|
|
390
|
+
// When done with last image we have our SVG
|
|
391
|
+
checkDone = function () {
|
|
392
|
+
if (images && imagesEmbedded === images.length) {
|
|
393
|
+
successCallback(sanitize(chartCopyContainer.innerHTML));
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
// Success handler, we converted image to base64!
|
|
397
|
+
embeddedSuccess = function (imageURL, imageType, callbackArgs) {
|
|
398
|
+
++imagesEmbedded;
|
|
399
|
+
// Change image href in chart copy
|
|
400
|
+
callbackArgs.imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', imageURL);
|
|
401
|
+
checkDone();
|
|
402
|
+
};
|
|
403
|
+
var el, i, l, chartCopyContainer, chartCopyOptions, href = null, images, imagesEmbedded = 0;
|
|
404
|
+
// Hook into getSVG to get a copy of the chart copy's
|
|
405
|
+
// container (#8273)
|
|
406
|
+
chart.unbindGetSVG = addEvent(chart, 'getSVG', function (e) {
|
|
407
|
+
chartCopyOptions = e.chartCopy.options;
|
|
408
|
+
chartCopyContainer = e.chartCopy.container.cloneNode(true);
|
|
409
|
+
images = chartCopyContainer && chartCopyContainer.getElementsByTagName('image') || [];
|
|
410
|
+
});
|
|
411
|
+
// Trigger hook to get chart copy
|
|
412
|
+
chart.getSVGForExport(options, chartOptions);
|
|
413
|
+
try {
|
|
414
|
+
// If there are no images to embed, the SVG is okay now.
|
|
415
|
+
if (!images || !images.length) {
|
|
416
|
+
// Use SVG of chart copy
|
|
417
|
+
successCallback(sanitize(chartCopyContainer.innerHTML));
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
// Go through the images we want to embed
|
|
421
|
+
for (i = 0, l = images.length; i < l; ++i) {
|
|
422
|
+
el = images[i];
|
|
423
|
+
href = el.getAttributeNS('http://www.w3.org/1999/xlink', 'href');
|
|
424
|
+
if (href) {
|
|
425
|
+
OfflineExporting.imageToDataUrl(href, 'image/png', { imageElement: el }, options.scale, embeddedSuccess,
|
|
426
|
+
// Tainted canvas
|
|
427
|
+
failCallback,
|
|
428
|
+
// No canvas support
|
|
429
|
+
failCallback,
|
|
430
|
+
// Failed to load source
|
|
431
|
+
failCallback);
|
|
432
|
+
// Hidden, boosted series have blank href (#10243)
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
++imagesEmbedded;
|
|
436
|
+
el.parentNode.removeChild(el);
|
|
437
|
+
checkDone();
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
catch (e) {
|
|
442
|
+
failCallback(e);
|
|
443
|
+
}
|
|
444
|
+
// Clean up
|
|
445
|
+
chart.unbindGetSVG();
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Get data:URL from image URL. Pass in callbacks to handle results.
|
|
449
|
+
*
|
|
450
|
+
* @private
|
|
451
|
+
* @function Highcharts.imageToDataUrl
|
|
452
|
+
*
|
|
453
|
+
* @param {string} imageURL
|
|
454
|
+
*
|
|
455
|
+
* @param {string} imageType
|
|
456
|
+
*
|
|
457
|
+
* @param {*} callbackArgs
|
|
458
|
+
* callbackArgs is used only by callbacks.
|
|
459
|
+
*
|
|
460
|
+
* @param {number} scale
|
|
461
|
+
*
|
|
462
|
+
* @param {Function} successCallback
|
|
463
|
+
* Receives four arguments: imageURL, imageType, callbackArgs,
|
|
464
|
+
* and scale.
|
|
465
|
+
*
|
|
466
|
+
* @param {Function} taintedCallback
|
|
467
|
+
* Receives four arguments: imageURL, imageType, callbackArgs,
|
|
468
|
+
* and scale.
|
|
469
|
+
*
|
|
470
|
+
* @param {Function} noCanvasSupportCallback
|
|
471
|
+
* Receives four arguments: imageURL, imageType, callbackArgs,
|
|
472
|
+
* and scale.
|
|
473
|
+
*
|
|
474
|
+
* @param {Function} failedLoadCallback
|
|
475
|
+
* Receives four arguments: imageURL, imageType, callbackArgs,
|
|
476
|
+
* and scale.
|
|
477
|
+
*
|
|
478
|
+
* @param {Function} [finallyCallback]
|
|
479
|
+
* finallyCallback is always called at the end of the process. All
|
|
480
|
+
* callbacks receive four arguments: imageURL, imageType,
|
|
481
|
+
* callbackArgs, and scale.
|
|
482
|
+
*/
|
|
483
|
+
function imageToDataUrl(imageURL, imageType, callbackArgs, scale, successCallback, taintedCallback, noCanvasSupportCallback, failedLoadCallback, finallyCallback) {
|
|
484
|
+
var img = new win.Image(), taintedHandler;
|
|
485
|
+
var loadHandler = function () {
|
|
486
|
+
setTimeout(function () {
|
|
487
|
+
var canvas = doc.createElement('canvas'), ctx = canvas.getContext && canvas.getContext('2d');
|
|
488
|
+
var dataURL;
|
|
489
|
+
try {
|
|
490
|
+
if (!ctx) {
|
|
491
|
+
noCanvasSupportCallback(imageURL, imageType, callbackArgs, scale);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
canvas.height = img.height * scale;
|
|
495
|
+
canvas.width = img.width * scale;
|
|
496
|
+
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
497
|
+
// Now we try to get the contents of the canvas.
|
|
498
|
+
try {
|
|
499
|
+
dataURL = canvas.toDataURL(imageType);
|
|
500
|
+
successCallback(dataURL, imageType, callbackArgs, scale);
|
|
501
|
+
}
|
|
502
|
+
catch (e) {
|
|
503
|
+
taintedHandler(imageURL, imageType, callbackArgs, scale);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
finally {
|
|
508
|
+
if (finallyCallback) {
|
|
509
|
+
finallyCallback(imageURL, imageType, callbackArgs, scale);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
// IE bug where image is not always ready despite calling load
|
|
513
|
+
// event.
|
|
514
|
+
}, OfflineExporting.loadEventDeferDelay);
|
|
515
|
+
},
|
|
516
|
+
// Image load failed (e.g. invalid URL)
|
|
517
|
+
errorHandler = function () {
|
|
518
|
+
failedLoadCallback(imageURL, imageType, callbackArgs, scale);
|
|
519
|
+
if (finallyCallback) {
|
|
520
|
+
finallyCallback(imageURL, imageType, callbackArgs, scale);
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
// This is called on load if the image drawing to canvas failed with a
|
|
524
|
+
// security error. We retry the drawing with crossOrigin set to
|
|
525
|
+
// Anonymous.
|
|
526
|
+
taintedHandler = function () {
|
|
527
|
+
img = new win.Image();
|
|
528
|
+
taintedHandler = taintedCallback;
|
|
529
|
+
// Must be set prior to loading image source
|
|
530
|
+
img.crossOrigin = 'Anonymous';
|
|
531
|
+
img.onload = loadHandler;
|
|
532
|
+
img.onerror = errorHandler;
|
|
533
|
+
img.src = imageURL;
|
|
534
|
+
};
|
|
535
|
+
img.onload = loadHandler;
|
|
536
|
+
img.onerror = errorHandler;
|
|
537
|
+
img.src = imageURL;
|
|
538
|
+
}
|
|
539
|
+
OfflineExporting.imageToDataUrl = imageToDataUrl;
|
|
540
|
+
/**
|
|
541
|
+
* Get blob URL from SVG code. Falls back to normal data URI.
|
|
542
|
+
*
|
|
543
|
+
* @private
|
|
544
|
+
* @function Highcharts.svgToDataURL
|
|
545
|
+
* @param {string} svg
|
|
546
|
+
* @return {string}
|
|
547
|
+
*/
|
|
548
|
+
function svgToDataUrl(svg) {
|
|
549
|
+
// Webkit and not chrome
|
|
550
|
+
var userAgent = win.navigator.userAgent;
|
|
551
|
+
var webKit = (userAgent.indexOf('WebKit') > -1 &&
|
|
552
|
+
userAgent.indexOf('Chrome') < 0);
|
|
553
|
+
try {
|
|
554
|
+
// Safari requires data URI since it doesn't allow navigation to
|
|
555
|
+
// blob URLs. Firefox has an issue with Blobs and internal
|
|
556
|
+
// references, leading to gradients not working using Blobs (#4550).
|
|
557
|
+
// foreignObjects also dont work well in Blobs in Chrome (#14780).
|
|
558
|
+
if (!webKit && !H.isFirefox && svg.indexOf('<foreignObject') === -1) {
|
|
559
|
+
return OfflineExporting.domurl.createObjectURL(new win.Blob([svg], {
|
|
560
|
+
type: 'image/svg+xml;charset-utf-16'
|
|
561
|
+
}));
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
catch (e) {
|
|
565
|
+
// Ignore
|
|
566
|
+
}
|
|
567
|
+
return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);
|
|
568
|
+
}
|
|
569
|
+
OfflineExporting.svgToDataUrl = svgToDataUrl;
|
|
570
|
+
/* eslint-disable valid-jsdoc */
|
|
571
|
+
/**
|
|
572
|
+
* @private
|
|
573
|
+
*/
|
|
574
|
+
function svgToPdf(svgElement, margin) {
|
|
575
|
+
var width = svgElement.width.baseVal.value + 2 * margin, height = svgElement.height.baseVal.value + 2 * margin, pdf = new win.jsPDF(// eslint-disable-line new-cap
|
|
576
|
+
height > width ? 'p' : 'l', // setting orientation to portrait if height exceeds width
|
|
577
|
+
'pt', [width, height]);
|
|
578
|
+
// Workaround for #7090, hidden elements were drawn anyway. It comes
|
|
579
|
+
// down to https://github.com/yWorks/svg2pdf.js/issues/28. Check this
|
|
580
|
+
// later.
|
|
581
|
+
[].forEach.call(svgElement.querySelectorAll('*[visibility="hidden"]'), function (node) {
|
|
582
|
+
node.parentNode.removeChild(node);
|
|
583
|
+
});
|
|
584
|
+
// Workaround for #13948, multiple stops in linear gradient set to 0
|
|
585
|
+
// causing error in Acrobat
|
|
586
|
+
var gradients = svgElement.querySelectorAll('linearGradient');
|
|
587
|
+
for (var index = 0; index < gradients.length; index++) {
|
|
588
|
+
var gradient = gradients[index];
|
|
589
|
+
var stops = gradient.querySelectorAll('stop');
|
|
590
|
+
var i = 0;
|
|
591
|
+
while (i < stops.length &&
|
|
592
|
+
stops[i].getAttribute('offset') === '0' &&
|
|
593
|
+
stops[i + 1].getAttribute('offset') === '0') {
|
|
594
|
+
stops[i].remove();
|
|
595
|
+
i++;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
// Workaround for #15135, zero width spaces, which Highcharts uses
|
|
599
|
+
// to break lines, are not correctly rendered in PDF. Replace it
|
|
600
|
+
// with a regular space and offset by some pixels to compensate.
|
|
601
|
+
[].forEach.call(svgElement.querySelectorAll('tspan'), function (tspan) {
|
|
602
|
+
if (tspan.textContent === '\u200B') {
|
|
603
|
+
tspan.textContent = ' ';
|
|
604
|
+
tspan.setAttribute('dx', -5);
|
|
605
|
+
}
|
|
606
|
+
});
|
|
607
|
+
win.svg2pdf(svgElement, pdf, { removeInvalid: true });
|
|
608
|
+
return pdf.output('datauristring');
|
|
609
|
+
}
|
|
610
|
+
OfflineExporting.svgToPdf = svgToPdf;
|
|
611
|
+
})(OfflineExporting || (OfflineExporting = {}));
|
|
612
|
+
/* *
|
|
613
|
+
*
|
|
614
|
+
* Default Export
|
|
615
|
+
*
|
|
616
|
+
* */
|
|
617
|
+
export default OfflineExporting;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2010-2021 Torstein Honsi
|
|
4
|
+
*
|
|
5
|
+
* License: www.highcharts.com/license
|
|
6
|
+
*
|
|
7
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8
|
+
*
|
|
9
|
+
* */
|
|
10
|
+
'use strict';
|
|
11
|
+
/* *
|
|
12
|
+
*
|
|
13
|
+
* Declarations
|
|
14
|
+
*
|
|
15
|
+
* */
|
|
16
|
+
var OfflineExportingDefaults = {
|
|
17
|
+
libURL: 'https://code.highcharts.com/9.2.2/lib/',
|
|
18
|
+
// When offline-exporting is loaded, redefine the menu item definitions
|
|
19
|
+
// related to download.
|
|
20
|
+
menuItemDefinitions: {
|
|
21
|
+
downloadPNG: {
|
|
22
|
+
textKey: 'downloadPNG',
|
|
23
|
+
onclick: function () {
|
|
24
|
+
this.exportChartLocal();
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
downloadJPEG: {
|
|
28
|
+
textKey: 'downloadJPEG',
|
|
29
|
+
onclick: function () {
|
|
30
|
+
this.exportChartLocal({
|
|
31
|
+
type: 'image/jpeg'
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
downloadSVG: {
|
|
36
|
+
textKey: 'downloadSVG',
|
|
37
|
+
onclick: function () {
|
|
38
|
+
this.exportChartLocal({
|
|
39
|
+
type: 'image/svg+xml'
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
downloadPDF: {
|
|
44
|
+
textKey: 'downloadPDF',
|
|
45
|
+
onclick: function () {
|
|
46
|
+
this.exportChartLocal({
|
|
47
|
+
type: 'application/pdf'
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
/* *
|
|
54
|
+
*
|
|
55
|
+
* Default Export
|
|
56
|
+
*
|
|
57
|
+
* */
|
|
58
|
+
export default OfflineExportingDefaults;
|
|
@@ -37,7 +37,7 @@ var VMLRenderer, VMLElement;
|
|
|
37
37
|
* @apioption global.VMLRadialGradientURL
|
|
38
38
|
*/
|
|
39
39
|
getOptions().global.VMLRadialGradientURL =
|
|
40
|
-
'http://code.highcharts.com/9.
|
|
40
|
+
'http://code.highcharts.com/9.2.2/gfx/vml-radial-gradient.png';
|
|
41
41
|
// Utilites
|
|
42
42
|
if (doc && !doc.defaultView) {
|
|
43
43
|
H.getStyle = U.getStyle = function getStyle(el, prop) {
|
|
@@ -333,7 +333,6 @@ var Pane = /** @class */ (function () {
|
|
|
333
333
|
*/
|
|
334
334
|
Pane.prototype.update = function (options, redraw) {
|
|
335
335
|
merge(true, this.options, options);
|
|
336
|
-
merge(true, this.chart.options.pane, options); // #9917
|
|
337
336
|
this.setOptions(this.options);
|
|
338
337
|
this.render();
|
|
339
338
|
this.chart.axes.forEach(function (axis) {
|