@ntlab/ntjs-assets 2.0.21 → 2.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/js/cdn.json +1 -1
- package/assets/js/highcharts/css/highcharts.css +74 -0
- package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +1 -1
- package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +1 -1
- package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +9 -2
- package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +25 -15
- package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +3 -2
- package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxis.js +1 -1
- package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisDefaults.js +2 -2
- package/assets/js/highcharts/es-modules/Core/Axis/GridAxis.js +1 -1
- package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +1 -1
- package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +10 -0
- package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +19 -113
- package/assets/js/highcharts/es-modules/Core/Axis/RadialAxisDefaults.js +128 -0
- package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +9 -13
- package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +21 -17
- package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +4 -2
- package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +5 -9
- package/assets/js/highcharts/es-modules/Core/Defaults.js +180 -91
- package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGElement.js +50 -28
- package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGLabel.js +6 -3
- package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +38 -80
- package/assets/js/highcharts/es-modules/Core/Renderer/SVG/Symbols.js +9 -5
- package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +17 -10
- package/assets/js/highcharts/es-modules/Core/Series/Point.js +4 -3
- package/assets/js/highcharts/es-modules/Core/Series/Series.js +24 -15
- package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +15 -0
- package/assets/js/highcharts/es-modules/Core/Templating.js +4 -1
- package/assets/js/highcharts/es-modules/Core/Tooltip.js +17 -55
- package/assets/js/highcharts/es-modules/Core/Utilities.js +16 -0
- package/assets/js/highcharts/es-modules/Data/Converters/CSVConverter.js +1 -1
- package/assets/js/highcharts/es-modules/Data/DataCursor.js +34 -16
- package/assets/js/highcharts/es-modules/Data/DataPool.js +1 -1
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/Controllable.js +3 -0
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +0 -3
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +0 -3
- package/assets/js/highcharts/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +2 -0
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/CrookedLine.js +1 -0
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Fibonacci.js +4 -2
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +2 -1
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/InfinityLine.js +2 -1
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +4 -3
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Pitchfork.js +11 -5
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/TimeCycles.js +2 -1
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Tunnel.js +4 -2
- package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/VerticalLine.js +2 -1
- package/assets/js/highcharts/es-modules/Extensions/Boost/BoostChart.js +11 -3
- package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +7 -4
- package/assets/js/highcharts/es-modules/Extensions/Boost/WGLRenderer.js +11 -2
- package/assets/js/highcharts/es-modules/Extensions/Data.js +3 -3
- package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +1 -0
- package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +3 -0
- package/assets/js/highcharts/es-modules/Extensions/DragPanes/AxisResizer.js +1 -2
- package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropProps.js +17 -0
- package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DraggablePoints.js +1 -0
- package/assets/js/highcharts/es-modules/Extensions/Drilldown/Drilldown.js +14 -14
- package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +13 -18
- package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -6
- package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +38 -30
- package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +11 -0
- package/assets/js/highcharts/es-modules/Extensions/RegexLimits.js +1 -0
- package/assets/js/highcharts/es-modules/Extensions/ScrollablePlotArea.js +19 -17
- package/assets/js/highcharts/es-modules/Extensions/Themes/BrandDark.js +13 -1
- package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +5 -3
- package/assets/js/highcharts/es-modules/Maps/MapView.js +5 -5
- package/assets/js/highcharts/es-modules/Maps/Projection.js +39 -20
- package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +10 -231
- package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeriesDefaults.js +245 -0
- package/assets/js/highcharts/es-modules/Series/Area/AreaSeries.js +2 -222
- package/assets/js/highcharts/es-modules/Series/Area/AreaSeriesDefaults.js +239 -0
- package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeries.js +0 -133
- package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +273 -0
- package/assets/js/highcharts/es-modules/Series/BoxPlot/BoxPlotSeries.js +36 -38
- package/assets/js/highcharts/es-modules/Series/Bubble/BubbleSeries.js +17 -6
- package/assets/js/highcharts/es-modules/Series/Candlestick/CandlestickSeries.js +9 -11
- package/assets/js/highcharts/es-modules/Series/ColorMapComposition.js +28 -4
- package/assets/js/highcharts/es-modules/Series/Column/ColumnDataLabel.js +1 -1
- package/assets/js/highcharts/es-modules/Series/Column/ColumnSeries.js +25 -30
- package/assets/js/highcharts/es-modules/Series/DataModifyComposition.js +26 -2
- package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeries.js +37 -27
- package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeriesDefaults.js +3 -2
- package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeries.js +1 -39
- package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +29 -0
- package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeries.js +2 -1
- package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +3 -10
- package/assets/js/highcharts/es-modules/Series/HLC/HLCSeries.js +4 -5
- package/assets/js/highcharts/es-modules/Series/MapLine/MapLineSeriesDefaults.js +7 -6
- package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointSeriesDefaults.js +17 -11
- package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +1 -1
- package/assets/js/highcharts/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +1 -1
- package/assets/js/highcharts/es-modules/Series/OHLC/OHLCSeries.js +3 -5
- package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeries.js +17 -19
- package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeriesDefaults.js +1 -1
- package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
- package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -3
- package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +0 -1
- package/assets/js/highcharts/es-modules/Series/Pyramid/PyramidSeriesDefaults.js +3 -3
- package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeries.js +5 -6
- package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeriesDefaults.js +1 -1
- package/assets/js/highcharts/es-modules/Series/SeriesOnPointComposition.js +2 -2
- package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +1 -1
- package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphLink.js +12 -7
- package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +8 -9
- package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeries.js +8 -8
- package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeriesDefaults.js +1 -1
- package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +4 -4
- package/assets/js/highcharts/es-modules/Series/Venn/VennSeriesDefaults.js +2 -2
- package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +11 -12
- package/assets/js/highcharts/es-modules/Series/XRange/XRangeSeries.js +4 -4
- package/assets/js/highcharts/es-modules/Stock/Navigator/Navigator.js +2 -5
- package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorDefaults.js +11 -0
- package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorSymbols.js +9 -10
- package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelector.js +162 -187
- package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +32 -74
- package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +6 -7
- package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +2 -0
- package/assets/js/highcharts/highcharts-3d.js +1 -1
- package/assets/js/highcharts/highcharts-3d.src.js +1 -1
- package/assets/js/highcharts/highcharts-gantt.js +3 -3
- package/assets/js/highcharts/highcharts-gantt.src.js +2008 -906
- package/assets/js/highcharts/highcharts-more.js +2 -2
- package/assets/js/highcharts/highcharts-more.src.js +234 -313
- package/assets/js/highcharts/highcharts.js +3 -3
- package/assets/js/highcharts/highcharts.src.js +743 -616
- package/assets/js/highcharts/highmaps.js +3 -3
- package/assets/js/highcharts/highmaps.src.js +862 -673
- package/assets/js/highcharts/highstock.js +3 -3
- package/assets/js/highcharts/highstock.src.js +1016 -935
- package/assets/js/highcharts/indicators/acceleration-bands.js +1 -1
- package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
- package/assets/js/highcharts/indicators/accumulation-distribution.js +1 -1
- package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
- package/assets/js/highcharts/indicators/ao.js +1 -1
- package/assets/js/highcharts/indicators/ao.src.js +1 -1
- package/assets/js/highcharts/indicators/apo.js +1 -1
- package/assets/js/highcharts/indicators/apo.src.js +1 -1
- package/assets/js/highcharts/indicators/aroon-oscillator.js +1 -1
- package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
- package/assets/js/highcharts/indicators/aroon.js +1 -1
- package/assets/js/highcharts/indicators/aroon.src.js +1 -1
- package/assets/js/highcharts/indicators/atr.js +1 -1
- package/assets/js/highcharts/indicators/atr.src.js +1 -1
- package/assets/js/highcharts/indicators/bollinger-bands.js +1 -1
- package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
- package/assets/js/highcharts/indicators/cci.js +1 -1
- package/assets/js/highcharts/indicators/cci.src.js +1 -1
- package/assets/js/highcharts/indicators/chaikin.js +1 -1
- package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
- package/assets/js/highcharts/indicators/cmf.js +1 -1
- package/assets/js/highcharts/indicators/cmf.src.js +1 -1
- package/assets/js/highcharts/indicators/cmo.js +1 -1
- package/assets/js/highcharts/indicators/cmo.src.js +1 -1
- package/assets/js/highcharts/indicators/dema.js +1 -1
- package/assets/js/highcharts/indicators/dema.src.js +1 -1
- package/assets/js/highcharts/indicators/disparity-index.js +1 -1
- package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
- package/assets/js/highcharts/indicators/dmi.js +1 -1
- package/assets/js/highcharts/indicators/dmi.src.js +1 -1
- package/assets/js/highcharts/indicators/dpo.js +1 -1
- package/assets/js/highcharts/indicators/dpo.src.js +1 -1
- package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +1 -1
- package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/assets/js/highcharts/indicators/indicators-all.js +1 -1
- package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
- package/assets/js/highcharts/indicators/indicators.js +1 -1
- package/assets/js/highcharts/indicators/indicators.src.js +1 -1
- package/assets/js/highcharts/indicators/keltner-channels.js +1 -1
- package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
- package/assets/js/highcharts/indicators/klinger.js +1 -1
- package/assets/js/highcharts/indicators/klinger.src.js +1 -1
- package/assets/js/highcharts/indicators/macd.js +1 -1
- package/assets/js/highcharts/indicators/macd.src.js +1 -1
- package/assets/js/highcharts/indicators/mfi.js +1 -1
- package/assets/js/highcharts/indicators/mfi.src.js +1 -1
- package/assets/js/highcharts/indicators/momentum.js +1 -1
- package/assets/js/highcharts/indicators/momentum.src.js +1 -1
- package/assets/js/highcharts/indicators/natr.js +1 -1
- package/assets/js/highcharts/indicators/natr.src.js +1 -1
- package/assets/js/highcharts/indicators/obv.js +1 -1
- package/assets/js/highcharts/indicators/obv.src.js +1 -1
- package/assets/js/highcharts/indicators/pivot-points.js +1 -1
- package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
- package/assets/js/highcharts/indicators/ppo.js +1 -1
- package/assets/js/highcharts/indicators/ppo.src.js +1 -1
- package/assets/js/highcharts/indicators/price-channel.js +1 -1
- package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
- package/assets/js/highcharts/indicators/price-envelopes.js +1 -1
- package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
- package/assets/js/highcharts/indicators/psar.js +1 -1
- package/assets/js/highcharts/indicators/psar.src.js +1 -1
- package/assets/js/highcharts/indicators/regressions.js +1 -1
- package/assets/js/highcharts/indicators/regressions.src.js +1 -1
- package/assets/js/highcharts/indicators/roc.js +1 -1
- package/assets/js/highcharts/indicators/roc.src.js +1 -1
- package/assets/js/highcharts/indicators/rsi.js +1 -1
- package/assets/js/highcharts/indicators/rsi.src.js +1 -1
- package/assets/js/highcharts/indicators/slow-stochastic.js +1 -1
- package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
- package/assets/js/highcharts/indicators/stochastic.js +1 -1
- package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
- package/assets/js/highcharts/indicators/supertrend.js +1 -1
- package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
- package/assets/js/highcharts/indicators/tema.js +1 -1
- package/assets/js/highcharts/indicators/tema.src.js +1 -1
- package/assets/js/highcharts/indicators/trendline.js +1 -1
- package/assets/js/highcharts/indicators/trendline.src.js +1 -1
- package/assets/js/highcharts/indicators/trix.js +1 -1
- package/assets/js/highcharts/indicators/trix.src.js +1 -1
- package/assets/js/highcharts/indicators/volume-by-price.js +1 -1
- package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
- package/assets/js/highcharts/indicators/vwap.js +1 -1
- package/assets/js/highcharts/indicators/vwap.src.js +1 -1
- package/assets/js/highcharts/indicators/williams-r.js +1 -1
- package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
- package/assets/js/highcharts/indicators/wma.js +1 -1
- package/assets/js/highcharts/indicators/wma.src.js +1 -1
- package/assets/js/highcharts/indicators/zigzag.js +1 -1
- package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
- package/assets/js/highcharts/modules/accessibility.js +2 -2
- package/assets/js/highcharts/modules/accessibility.src.js +39 -28
- package/assets/js/highcharts/modules/annotations-advanced.js +2 -2
- package/assets/js/highcharts/modules/annotations-advanced.src.js +46 -31
- package/assets/js/highcharts/modules/annotations.js +2 -2
- package/assets/js/highcharts/modules/annotations.src.js +12 -15
- package/assets/js/highcharts/modules/arc-diagram.js +2 -2
- package/assets/js/highcharts/modules/arc-diagram.src.js +258 -233
- package/assets/js/highcharts/modules/arrow-symbols.js +1 -1
- package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
- package/assets/js/highcharts/modules/boost-canvas.js +2 -2
- package/assets/js/highcharts/modules/boost-canvas.src.js +30 -10
- package/assets/js/highcharts/modules/boost.js +2 -2
- package/assets/js/highcharts/modules/boost.src.js +30 -10
- package/assets/js/highcharts/modules/broken-axis.js +1 -1
- package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
- package/assets/js/highcharts/modules/bullet.js +1 -1
- package/assets/js/highcharts/modules/bullet.src.js +1 -1
- package/assets/js/highcharts/modules/coloraxis.js +2 -2
- package/assets/js/highcharts/modules/coloraxis.src.js +4 -4
- package/assets/js/highcharts/modules/current-date-indicator.js +1 -1
- package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
- package/assets/js/highcharts/modules/cylinder.js +1 -1
- package/assets/js/highcharts/modules/cylinder.src.js +1 -1
- package/assets/js/highcharts/modules/data-tools.js +2 -2
- package/assets/js/highcharts/modules/data-tools.src.js +37 -19
- package/assets/js/highcharts/modules/data.js +1 -1
- package/assets/js/highcharts/modules/data.src.js +4 -4
- package/assets/js/highcharts/modules/datagrouping.js +2 -2
- package/assets/js/highcharts/modules/datagrouping.src.js +2 -1
- package/assets/js/highcharts/modules/debugger.js +1 -1
- package/assets/js/highcharts/modules/debugger.src.js +1 -1
- package/assets/js/highcharts/modules/dependency-wheel.js +1 -1
- package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
- package/assets/js/highcharts/modules/dotplot.js +2 -2
- package/assets/js/highcharts/modules/dotplot.src.js +41 -30
- package/assets/js/highcharts/modules/drag-panes.js +2 -2
- package/assets/js/highcharts/modules/drag-panes.src.js +2 -3
- package/assets/js/highcharts/modules/draggable-points.js +2 -2
- package/assets/js/highcharts/modules/draggable-points.src.js +19 -1
- package/assets/js/highcharts/modules/drilldown.js +2 -2
- package/assets/js/highcharts/modules/drilldown.src.js +15 -15
- package/assets/js/highcharts/modules/dumbbell.js +2 -2
- package/assets/js/highcharts/modules/dumbbell.src.js +31 -40
- package/assets/js/highcharts/modules/export-data.js +2 -2
- package/assets/js/highcharts/modules/export-data.src.js +4 -1
- package/assets/js/highcharts/modules/exporting.js +2 -2
- package/assets/js/highcharts/modules/exporting.src.js +22 -25
- package/assets/js/highcharts/modules/flowmap.js +1 -1
- package/assets/js/highcharts/modules/flowmap.src.js +1 -1
- package/assets/js/highcharts/modules/full-screen.js +1 -1
- package/assets/js/highcharts/modules/full-screen.src.js +1 -1
- package/assets/js/highcharts/modules/funnel.js +2 -2
- package/assets/js/highcharts/modules/funnel.src.js +4 -4
- package/assets/js/highcharts/modules/funnel3d.js +1 -1
- package/assets/js/highcharts/modules/funnel3d.src.js +1 -1
- package/assets/js/highcharts/modules/gantt.js +2 -2
- package/assets/js/highcharts/modules/gantt.src.js +1266 -291
- package/assets/js/highcharts/modules/geoheatmap.js +1 -1
- package/assets/js/highcharts/modules/geoheatmap.src.js +4 -11
- package/assets/js/highcharts/modules/grid-axis.js +2 -2
- package/assets/js/highcharts/modules/grid-axis.src.js +2 -2
- package/assets/js/highcharts/modules/heatmap.js +2 -2
- package/assets/js/highcharts/modules/heatmap.src.js +32 -9
- package/assets/js/highcharts/modules/heikinashi.js +1 -1
- package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
- package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -1
- package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
- package/assets/js/highcharts/modules/hollowcandlestick.js +1 -1
- package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
- package/assets/js/highcharts/modules/item-series.js +1 -1
- package/assets/js/highcharts/modules/item-series.src.js +1 -1
- package/assets/js/highcharts/modules/lollipop.js +1 -1
- package/assets/js/highcharts/modules/lollipop.src.js +1 -1
- package/assets/js/highcharts/modules/map.js +2 -2
- package/assets/js/highcharts/modules/map.src.js +120 -58
- package/assets/js/highcharts/modules/marker-clusters.js +1 -1
- package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
- package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -1
- package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
- package/assets/js/highcharts/modules/navigator.js +2 -2
- package/assets/js/highcharts/modules/navigator.src.js +28 -24
- package/assets/js/highcharts/modules/networkgraph.js +2 -2
- package/assets/js/highcharts/modules/networkgraph.src.js +3 -3
- package/assets/js/highcharts/modules/no-data-to-display.js +1 -1
- package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
- package/assets/js/highcharts/modules/offline-exporting.js +2 -2
- package/assets/js/highcharts/modules/offline-exporting.src.js +43 -32
- package/assets/js/highcharts/modules/organization.js +2 -2
- package/assets/js/highcharts/modules/organization.src.js +19 -21
- package/assets/js/highcharts/modules/overlapping-datalabels.js +1 -1
- package/assets/js/highcharts/modules/overlapping-datalabels.src.js +1 -1
- package/assets/js/highcharts/modules/parallel-coordinates.js +1 -1
- package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
- package/assets/js/highcharts/modules/pareto.js +1 -1
- package/assets/js/highcharts/modules/pareto.src.js +1 -1
- package/assets/js/highcharts/modules/pathfinder.js +1 -1
- package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
- package/assets/js/highcharts/modules/pattern-fill.js +1 -1
- package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
- package/assets/js/highcharts/modules/pictorial.js +1 -1
- package/assets/js/highcharts/modules/pictorial.src.js +1 -1
- package/assets/js/highcharts/modules/price-indicator.js +1 -1
- package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
- package/assets/js/highcharts/modules/pyramid3d.js +1 -1
- package/assets/js/highcharts/modules/pyramid3d.src.js +1 -1
- package/assets/js/highcharts/modules/sankey.js +2 -2
- package/assets/js/highcharts/modules/sankey.src.js +7 -8
- package/assets/js/highcharts/modules/series-label.js +1 -1
- package/assets/js/highcharts/modules/series-label.src.js +1 -1
- package/assets/js/highcharts/modules/series-on-point.js +2 -2
- package/assets/js/highcharts/modules/series-on-point.src.js +3 -3
- package/assets/js/highcharts/modules/solid-gauge.js +1 -1
- package/assets/js/highcharts/modules/solid-gauge.src.js +1 -1
- package/assets/js/highcharts/modules/sonification.js +2 -2
- package/assets/js/highcharts/modules/sonification.src.js +4 -1
- package/assets/js/highcharts/modules/static-scale.js +1 -1
- package/assets/js/highcharts/modules/static-scale.src.js +1 -1
- package/assets/js/highcharts/modules/stock-tools.js +2 -2
- package/assets/js/highcharts/modules/stock-tools.src.js +3 -3
- package/assets/js/highcharts/modules/stock.js +2 -2
- package/assets/js/highcharts/modules/stock.src.js +274 -320
- package/assets/js/highcharts/modules/streamgraph.js +1 -1
- package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
- package/assets/js/highcharts/modules/sunburst.js +2 -2
- package/assets/js/highcharts/modules/sunburst.src.js +39 -16
- package/assets/js/highcharts/modules/tiledwebmap.js +1 -1
- package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
- package/assets/js/highcharts/modules/tilemap.js +1 -1
- package/assets/js/highcharts/modules/tilemap.src.js +1 -1
- package/assets/js/highcharts/modules/timeline.js +1 -1
- package/assets/js/highcharts/modules/timeline.src.js +1 -1
- package/assets/js/highcharts/modules/treegraph.js +2 -2
- package/assets/js/highcharts/modules/treegraph.src.js +21 -17
- package/assets/js/highcharts/modules/treegrid.js +2 -2
- package/assets/js/highcharts/modules/treegrid.src.js +2 -2
- package/assets/js/highcharts/modules/treemap.js +2 -2
- package/assets/js/highcharts/modules/treemap.src.js +38 -15
- package/assets/js/highcharts/modules/variable-pie.js +1 -1
- package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
- package/assets/js/highcharts/modules/variwide.js +2 -2
- package/assets/js/highcharts/modules/variwide.src.js +5 -5
- package/assets/js/highcharts/modules/vector.js +1 -1
- package/assets/js/highcharts/modules/vector.src.js +1 -1
- package/assets/js/highcharts/modules/venn.js +1 -1
- package/assets/js/highcharts/modules/venn.src.js +3 -3
- package/assets/js/highcharts/modules/windbarb.js +1 -1
- package/assets/js/highcharts/modules/windbarb.src.js +1 -1
- package/assets/js/highcharts/modules/wordcloud.js +1 -1
- package/assets/js/highcharts/modules/wordcloud.src.js +1 -1
- package/assets/js/highcharts/modules/xrange.js +2 -2
- package/assets/js/highcharts/modules/xrange.src.js +5 -5
- package/assets/js/highcharts/standalone-navigator.js +2 -2
- package/assets/js/highcharts/standalone-navigator.src.js +769 -638
- package/assets/js/highcharts/themes/avocado.js +1 -1
- package/assets/js/highcharts/themes/avocado.src.js +1 -1
- package/assets/js/highcharts/themes/brand-dark.js +2 -2
- package/assets/js/highcharts/themes/brand-dark.src.js +14 -2
- package/assets/js/highcharts/themes/brand-light.js +1 -1
- package/assets/js/highcharts/themes/brand-light.src.js +1 -1
- package/assets/js/highcharts/themes/dark-blue.js +1 -1
- package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
- package/assets/js/highcharts/themes/dark-green.js +1 -1
- package/assets/js/highcharts/themes/dark-green.src.js +1 -1
- package/assets/js/highcharts/themes/dark-unica.js +1 -1
- package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
- package/assets/js/highcharts/themes/gray.js +1 -1
- package/assets/js/highcharts/themes/gray.src.js +1 -1
- package/assets/js/highcharts/themes/grid-light.js +1 -1
- package/assets/js/highcharts/themes/grid-light.src.js +1 -1
- package/assets/js/highcharts/themes/grid.js +1 -1
- package/assets/js/highcharts/themes/grid.src.js +1 -1
- package/assets/js/highcharts/themes/high-contrast-dark.js +1 -1
- package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
- package/assets/js/highcharts/themes/high-contrast-light.js +1 -1
- package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
- package/assets/js/highcharts/themes/sand-signika.js +1 -1
- package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
- package/assets/js/highcharts/themes/skies.js +1 -1
- package/assets/js/highcharts/themes/skies.src.js +1 -1
- package/assets/js/highcharts/themes/sunset.js +1 -1
- package/assets/js/highcharts/themes/sunset.src.js +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highmaps JS v11.4.
|
|
2
|
+
* @license Highmaps JS v11.4.3 (2024-05-22)
|
|
3
3
|
*
|
|
4
4
|
* (c) 2011-2024 Torstein Honsi
|
|
5
5
|
*
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
* Constants
|
|
63
63
|
*
|
|
64
64
|
* */
|
|
65
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '11.4.
|
|
65
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '11.4.3', Globals.win = (typeof window !== 'undefined' ?
|
|
66
66
|
window :
|
|
67
67
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
68
68
|
Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&
|
|
@@ -339,6 +339,21 @@
|
|
|
339
339
|
function clamp(value, min, max) {
|
|
340
340
|
return value > min ? value < max ? value : max : min;
|
|
341
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Utility for crisping a line position to the nearest full pixel depening on
|
|
344
|
+
* the line width
|
|
345
|
+
* @param {number} value The raw pixel position
|
|
346
|
+
* @param {number} lineWidth The line width
|
|
347
|
+
* @param {boolean} [inverted] Whether the containing group is inverted.
|
|
348
|
+
* Crisping round numbers on the y-scale need to go
|
|
349
|
+
* to the other side because the coordinate system
|
|
350
|
+
* is flipped (scaleY is -1)
|
|
351
|
+
* @return {number} The pixel position to use for a crisp display
|
|
352
|
+
*/
|
|
353
|
+
const crisp = (value, lineWidth = 0, inverted) => {
|
|
354
|
+
const mod = lineWidth % 2 / 2, inverter = inverted ? -1 : 1;
|
|
355
|
+
return (Math.round(value * inverter - mod) + mod) * inverter;
|
|
356
|
+
};
|
|
342
357
|
// eslint-disable-next-line valid-jsdoc
|
|
343
358
|
/**
|
|
344
359
|
* Return the deep difference between two objects. It can either return the new
|
|
@@ -1904,6 +1919,7 @@
|
|
|
1904
1919
|
clearTimeout: internalClearTimeout,
|
|
1905
1920
|
correctFloat,
|
|
1906
1921
|
createElement,
|
|
1922
|
+
crisp,
|
|
1907
1923
|
css,
|
|
1908
1924
|
defined,
|
|
1909
1925
|
destroyObjectProperties,
|
|
@@ -2692,7 +2708,7 @@
|
|
|
2692
2708
|
*
|
|
2693
2709
|
* @type {number}
|
|
2694
2710
|
* @default 2
|
|
2695
|
-
* @since
|
|
2711
|
+
* @since 11.3.0
|
|
2696
2712
|
* @apioption chart.axisLayoutRuns
|
|
2697
2713
|
*/
|
|
2698
2714
|
/**
|
|
@@ -3434,13 +3450,15 @@
|
|
|
3434
3450
|
* element's height is 0.
|
|
3435
3451
|
*
|
|
3436
3452
|
* @sample {highcharts} highcharts/chart/height/
|
|
3437
|
-
*
|
|
3453
|
+
* Forced 200px height
|
|
3438
3454
|
* @sample {highstock} stock/chart/height/
|
|
3439
3455
|
* 300px height
|
|
3440
3456
|
* @sample {highmaps} maps/chart/size/
|
|
3441
3457
|
* Chart with explicit size
|
|
3442
3458
|
* @sample highcharts/chart/height-percent/
|
|
3443
3459
|
* Highcharts with percentage height
|
|
3460
|
+
* @sample highcharts/chart/height-inherited/
|
|
3461
|
+
* Chart with inherited height
|
|
3444
3462
|
*
|
|
3445
3463
|
* @type {null|number|string}
|
|
3446
3464
|
*/
|
|
@@ -4339,8 +4357,8 @@
|
|
|
4339
4357
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
4340
4358
|
*
|
|
4341
4359
|
* */
|
|
4342
|
-
const { isTouchDevice
|
|
4343
|
-
const { merge } = U;
|
|
4360
|
+
const { isTouchDevice } = H;
|
|
4361
|
+
const { fireEvent, merge } = U;
|
|
4344
4362
|
/* *
|
|
4345
4363
|
*
|
|
4346
4364
|
* API Options
|
|
@@ -4571,84 +4589,163 @@
|
|
|
4571
4589
|
* ```js
|
|
4572
4590
|
* Highcharts.setOptions({
|
|
4573
4591
|
* global: {
|
|
4574
|
-
*
|
|
4592
|
+
* buttonTheme: {
|
|
4593
|
+
* fill: '#d0d0d0'
|
|
4594
|
+
* }
|
|
4575
4595
|
* }
|
|
4576
4596
|
* });
|
|
4577
4597
|
* ```
|
|
4578
4598
|
*/
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4612
|
-
|
|
4613
|
-
|
|
4614
|
-
|
|
4615
|
-
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4620
|
-
|
|
4621
|
-
|
|
4622
|
-
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
|
|
4644
|
-
|
|
4645
|
-
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
|
|
4651
|
-
|
|
4599
|
+
global: {
|
|
4600
|
+
/**
|
|
4601
|
+
* _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\.
|
|
4602
|
+
* Use the [libURL](#exporting.libURL) option to configure exporting._
|
|
4603
|
+
*
|
|
4604
|
+
* The URL to the additional file to lazy load for Android 2.x devices.
|
|
4605
|
+
* These devices don't support SVG, so we download a helper file that
|
|
4606
|
+
* contains [canvg](https://github.com/canvg/canvg), its dependency
|
|
4607
|
+
* rbcolor, and our own CanVG Renderer class. To avoid hotlinking to
|
|
4608
|
+
* our site, you can install canvas-tools.js on your own server and
|
|
4609
|
+
* change this option accordingly.
|
|
4610
|
+
*
|
|
4611
|
+
* @deprecated
|
|
4612
|
+
*
|
|
4613
|
+
* @type {string}
|
|
4614
|
+
* @default https://code.highcharts.com/{version}/modules/canvas-tools.js
|
|
4615
|
+
* @product highcharts highmaps
|
|
4616
|
+
* @apioption global.canvasToolsURL
|
|
4617
|
+
*/
|
|
4618
|
+
/**
|
|
4619
|
+
* This option is deprecated since v6.0.5. Instead, use
|
|
4620
|
+
* [time.useUTC](#time.useUTC) that supports individual time settings
|
|
4621
|
+
* per chart.
|
|
4622
|
+
*
|
|
4623
|
+
* @deprecated
|
|
4624
|
+
*
|
|
4625
|
+
* @type {boolean}
|
|
4626
|
+
* @apioption global.useUTC
|
|
4627
|
+
*/
|
|
4628
|
+
/**
|
|
4629
|
+
* This option is deprecated since v6.0.5. Instead, use
|
|
4630
|
+
* [time.Date](#time.Date) that supports individual time settings
|
|
4631
|
+
* per chart.
|
|
4632
|
+
*
|
|
4633
|
+
* @deprecated
|
|
4634
|
+
*
|
|
4635
|
+
* @type {Function}
|
|
4636
|
+
* @product highcharts highstock
|
|
4637
|
+
* @apioption global.Date
|
|
4638
|
+
*/
|
|
4639
|
+
/**
|
|
4640
|
+
* This option is deprecated since v6.0.5. Instead, use
|
|
4641
|
+
* [time.getTimezoneOffset](#time.getTimezoneOffset) that supports
|
|
4642
|
+
* individual time settings per chart.
|
|
4643
|
+
*
|
|
4644
|
+
* @deprecated
|
|
4645
|
+
*
|
|
4646
|
+
* @type {Function}
|
|
4647
|
+
* @product highcharts highstock
|
|
4648
|
+
* @apioption global.getTimezoneOffset
|
|
4649
|
+
*/
|
|
4650
|
+
/**
|
|
4651
|
+
* This option is deprecated since v6.0.5. Instead, use
|
|
4652
|
+
* [time.timezone](#time.timezone) that supports individual time
|
|
4653
|
+
* settings per chart.
|
|
4654
|
+
*
|
|
4655
|
+
* @deprecated
|
|
4656
|
+
*
|
|
4657
|
+
* @type {string}
|
|
4658
|
+
* @product highcharts highstock
|
|
4659
|
+
* @apioption global.timezone
|
|
4660
|
+
*/
|
|
4661
|
+
/**
|
|
4662
|
+
* This option is deprecated since v6.0.5. Instead, use
|
|
4663
|
+
* [time.timezoneOffset](#time.timezoneOffset) that supports individual
|
|
4664
|
+
* time settings per chart.
|
|
4665
|
+
*
|
|
4666
|
+
* @deprecated
|
|
4667
|
+
*
|
|
4668
|
+
* @type {number}
|
|
4669
|
+
* @product highcharts highstock
|
|
4670
|
+
* @apioption global.timezoneOffset
|
|
4671
|
+
*/
|
|
4672
|
+
/**
|
|
4673
|
+
* General theme for buttons. This applies to the zoom button, exporting
|
|
4674
|
+
* context menu, map navigation, range selector buttons and custom
|
|
4675
|
+
* buttons generated using the `SVGRenderer.button` function. However,
|
|
4676
|
+
* each of these may be overridden with more specific options.
|
|
4677
|
+
*
|
|
4678
|
+
* @sample highcharts/global/buttontheme
|
|
4679
|
+
* General button theme
|
|
4680
|
+
* @since 11.4.2
|
|
4681
|
+
*/
|
|
4682
|
+
buttonTheme: {
|
|
4683
|
+
/**
|
|
4684
|
+
* The fill color for buttons
|
|
4685
|
+
*/
|
|
4686
|
+
fill: "#f7f7f7" /* Palette.neutralColor3 */,
|
|
4687
|
+
/**
|
|
4688
|
+
* The padding of buttons
|
|
4689
|
+
*/
|
|
4690
|
+
padding: 8,
|
|
4691
|
+
/**
|
|
4692
|
+
* The border radius for buttons
|
|
4693
|
+
*/
|
|
4694
|
+
r: 2,
|
|
4695
|
+
/**
|
|
4696
|
+
* The stroke color for buttons
|
|
4697
|
+
*/
|
|
4698
|
+
stroke: "#cccccc" /* Palette.neutralColor20 */,
|
|
4699
|
+
/**
|
|
4700
|
+
* The stroke width for buttons
|
|
4701
|
+
*/
|
|
4702
|
+
'stroke-width': 1,
|
|
4703
|
+
/**
|
|
4704
|
+
* CSS styling for the buttons' text
|
|
4705
|
+
*/
|
|
4706
|
+
style: {
|
|
4707
|
+
color: "#333333" /* Palette.neutralColor80 */,
|
|
4708
|
+
cursor: 'pointer',
|
|
4709
|
+
fontSize: '0.8em',
|
|
4710
|
+
fontWeight: 'normal'
|
|
4711
|
+
},
|
|
4712
|
+
/**
|
|
4713
|
+
* State overrides for the buttons
|
|
4714
|
+
*/
|
|
4715
|
+
states: {
|
|
4716
|
+
/**
|
|
4717
|
+
* Hover state overrides for the buttons are applied in addition
|
|
4718
|
+
* to the normal state options
|
|
4719
|
+
*/
|
|
4720
|
+
hover: {
|
|
4721
|
+
fill: "#e6e6e6" /* Palette.neutralColor10 */
|
|
4722
|
+
},
|
|
4723
|
+
/**
|
|
4724
|
+
* Select state overrides for the buttons are applied in
|
|
4725
|
+
* addition to the normal state options
|
|
4726
|
+
*/
|
|
4727
|
+
select: {
|
|
4728
|
+
fill: "#e6e9ff" /* Palette.highlightColor10 */,
|
|
4729
|
+
style: {
|
|
4730
|
+
color: "#000000" /* Palette.neutralColor100 */,
|
|
4731
|
+
fontWeight: 'bold'
|
|
4732
|
+
}
|
|
4733
|
+
},
|
|
4734
|
+
/**
|
|
4735
|
+
* Disabled state overrides for the buttons are applied in
|
|
4736
|
+
* addition to the normal state options
|
|
4737
|
+
*/
|
|
4738
|
+
disabled: {
|
|
4739
|
+
/**
|
|
4740
|
+
* Disabled state CSS style overrides for the buttons' text
|
|
4741
|
+
*/
|
|
4742
|
+
style: {
|
|
4743
|
+
color: "#cccccc" /* Palette.neutralColor20 */
|
|
4744
|
+
}
|
|
4745
|
+
}
|
|
4746
|
+
}
|
|
4747
|
+
}
|
|
4748
|
+
},
|
|
4652
4749
|
/**
|
|
4653
4750
|
* Time options that can apply globally or to individual charts. These
|
|
4654
4751
|
* settings affect how `datetime` axes are laid out, how tooltips are
|
|
@@ -4718,13 +4815,16 @@
|
|
|
4718
4815
|
* for drawing time based charts in specific time zones using their
|
|
4719
4816
|
* local DST crossover dates, with the help of external libraries.
|
|
4720
4817
|
*
|
|
4721
|
-
*
|
|
4818
|
+
* This option is deprecated as of v11.4.1 and will be removed in a
|
|
4819
|
+
* future release. Use the [time.timezone](#time.timezone) option
|
|
4820
|
+
* instead.
|
|
4722
4821
|
*
|
|
4723
4822
|
* @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/
|
|
4724
4823
|
* Use moment.js to draw Oslo time regardless of browser locale
|
|
4725
4824
|
*
|
|
4726
4825
|
* @type {Highcharts.TimezoneOffsetCallbackFunction}
|
|
4727
4826
|
* @since 4.1.0
|
|
4827
|
+
* @deprecated 11.4.2
|
|
4728
4828
|
* @product highcharts highstock gantt
|
|
4729
4829
|
*/
|
|
4730
4830
|
getTimezoneOffset: void 0,
|
|
@@ -4734,12 +4834,10 @@
|
|
|
4734
4834
|
* docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#timezone).
|
|
4735
4835
|
* If the given time zone is not recognized by the browser, Highcharts
|
|
4736
4836
|
* provides a warning and falls back to returning a 0 offset,
|
|
4737
|
-
* corresponding to the
|
|
4837
|
+
* corresponding to the UTC time zone.
|
|
4738
4838
|
*
|
|
4739
4839
|
* Until v11.2.0, this option depended on moment.js.
|
|
4740
4840
|
*
|
|
4741
|
-
* @see [getTimezoneOffset](#time.getTimezoneOffset)
|
|
4742
|
-
*
|
|
4743
4841
|
* @sample {highcharts|highstock} highcharts/time/timezone/ Europe/Oslo
|
|
4744
4842
|
*
|
|
4745
4843
|
* @type {string}
|
|
@@ -4753,12 +4851,17 @@
|
|
|
4753
4851
|
* [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)
|
|
4754
4852
|
* method. Use this to display UTC based data in a predefined time zone.
|
|
4755
4853
|
*
|
|
4854
|
+
* This option is deprecated as of v11.4.1 and will be removed in a
|
|
4855
|
+
* future release. Use the [time.timezone](#time.timezone) option
|
|
4856
|
+
* instead.
|
|
4857
|
+
*
|
|
4756
4858
|
* @see [time.getTimezoneOffset](#time.getTimezoneOffset)
|
|
4757
4859
|
*
|
|
4758
4860
|
* @sample {highcharts|highstock} highcharts/time/timezoneoffset/
|
|
4759
4861
|
* Timezone offset
|
|
4760
4862
|
*
|
|
4761
4863
|
* @since 3.0.8
|
|
4864
|
+
* @deprecated 11.4.2
|
|
4762
4865
|
* @product highcharts highstock gantt
|
|
4763
4866
|
*/
|
|
4764
4867
|
timezoneOffset: 0,
|
|
@@ -5644,7 +5747,7 @@
|
|
|
5644
5747
|
* Item text styles
|
|
5645
5748
|
*
|
|
5646
5749
|
* @type {Highcharts.CSSObject}
|
|
5647
|
-
* @default {"color": "#333333", "cursor": "pointer", "fontSize": "0.
|
|
5750
|
+
* @default {"color": "#333333", "cursor": "pointer", "fontSize": "0.8em", "fontWeight": "bold", "textOverflow": "ellipsis"}
|
|
5648
5751
|
*/
|
|
5649
5752
|
itemStyle: {
|
|
5650
5753
|
/**
|
|
@@ -5956,7 +6059,7 @@
|
|
|
5956
6059
|
* `.highcharts-legend-title` class.
|
|
5957
6060
|
*
|
|
5958
6061
|
* @type {Highcharts.CSSObject}
|
|
5959
|
-
* @default {"fontSize": "0.
|
|
6062
|
+
* @default {"fontSize": "0.8em", "fontWeight": "bold"}
|
|
5960
6063
|
* @since 3.0
|
|
5961
6064
|
*/
|
|
5962
6065
|
style: {
|
|
@@ -6163,20 +6266,20 @@
|
|
|
6163
6266
|
*/
|
|
6164
6267
|
/**
|
|
6165
6268
|
* A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)
|
|
6166
|
-
* for the whole tooltip. When format strings are a requirement,
|
|
6167
|
-
* usually more convenient to use `headerFormat`, `pointFormat`
|
|
6168
|
-
* `footerFormat`, but the `format` option allows combining them
|
|
6169
|
-
* one setting.
|
|
6269
|
+
* for the whole shared tooltip. When format strings are a requirement,
|
|
6270
|
+
* it is usually more convenient to use `headerFormat`, `pointFormat`
|
|
6271
|
+
* and `footerFormat`, but the `format` option allows combining them
|
|
6272
|
+
* into one setting.
|
|
6170
6273
|
*
|
|
6171
6274
|
* The context of the format string is the same as that of the
|
|
6172
|
-
* `formatter` callback.
|
|
6275
|
+
* `tooltip.formatter` callback.
|
|
6173
6276
|
*
|
|
6174
6277
|
* @sample {highcharts} highcharts/tooltip/format-shared/
|
|
6175
6278
|
* Format for shared tooltip
|
|
6176
6279
|
*
|
|
6177
6280
|
* @type {string}
|
|
6178
6281
|
* @default undefined
|
|
6179
|
-
* @since
|
|
6282
|
+
* @since 11.1.0
|
|
6180
6283
|
* @apioption tooltip.format
|
|
6181
6284
|
*/
|
|
6182
6285
|
/**
|
|
@@ -6449,11 +6552,14 @@
|
|
|
6449
6552
|
/**
|
|
6450
6553
|
* Enable or disable animation of the tooltip.
|
|
6451
6554
|
*
|
|
6452
|
-
* @type {boolean}
|
|
6453
|
-
* @default true
|
|
6555
|
+
* @type {boolean|Partial<Highcharts.AnimationOptionsObject>}
|
|
6454
6556
|
* @since 2.3.0
|
|
6455
6557
|
*/
|
|
6456
|
-
animation:
|
|
6558
|
+
animation: {
|
|
6559
|
+
duration: 300,
|
|
6560
|
+
// EaseOutCirc
|
|
6561
|
+
easing: (x) => Math.sqrt(1 - Math.pow(x - 1, 2))
|
|
6562
|
+
},
|
|
6457
6563
|
/**
|
|
6458
6564
|
* The radius of the rounded border corners.
|
|
6459
6565
|
*
|
|
@@ -6908,6 +7014,7 @@
|
|
|
6908
7014
|
* Updated options.
|
|
6909
7015
|
*/
|
|
6910
7016
|
function setOptions(options) {
|
|
7017
|
+
fireEvent(H, 'setOptions', { options });
|
|
6911
7018
|
// Copy in the default options
|
|
6912
7019
|
merge(true, defaultOptions, options);
|
|
6913
7020
|
// Update the time object
|
|
@@ -8857,7 +8964,7 @@
|
|
|
8857
8964
|
// Block helpers may return true or false. They may also return a
|
|
8858
8965
|
// string, like the `each` helper.
|
|
8859
8966
|
if (match.isBlock && typeof replacement === 'boolean') {
|
|
8860
|
-
replacement = format(replacement ? body : elseBody, ctx);
|
|
8967
|
+
replacement = format(replacement ? body : elseBody, ctx, chart);
|
|
8861
8968
|
}
|
|
8862
8969
|
// Simple variable replacement
|
|
8863
8970
|
}
|
|
@@ -8974,6 +9081,9 @@
|
|
|
8974
9081
|
// Get the decimal component
|
|
8975
9082
|
ret += decimalPoint + roundedNumber.slice(-decimals);
|
|
8976
9083
|
}
|
|
9084
|
+
else if (+ret === 0) { // Remove signed minus #20564
|
|
9085
|
+
ret = '0';
|
|
9086
|
+
}
|
|
8977
9087
|
if (exponent[1] && +ret !== 0) {
|
|
8978
9088
|
ret += 'e' + exponent[1];
|
|
8979
9089
|
}
|
|
@@ -9255,7 +9365,7 @@
|
|
|
9255
9365
|
* */
|
|
9256
9366
|
const { animate, animObject, stop } = A;
|
|
9257
9367
|
const { deg2rad, doc, svg, SVG_NS, win } = H;
|
|
9258
|
-
const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, replaceNested, syncTimeout, uniqueKey } = U;
|
|
9368
|
+
const { addEvent, attr, createElement, crisp, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, pushUnique, replaceNested, syncTimeout, uniqueKey } = U;
|
|
9259
9369
|
/* *
|
|
9260
9370
|
*
|
|
9261
9371
|
* Class
|
|
@@ -9441,7 +9551,7 @@
|
|
|
9441
9551
|
* @param {boolean} [alignByTranslate]
|
|
9442
9552
|
* Align element by translation.
|
|
9443
9553
|
*
|
|
9444
|
-
* @param {string|Highcharts.BBoxObject} [
|
|
9554
|
+
* @param {string|Highcharts.BBoxObject} [alignTo]
|
|
9445
9555
|
* The box to align to, needs a width and height. When the box is a
|
|
9446
9556
|
* string, it refers to an object in the Renderer. For example, when
|
|
9447
9557
|
* box is `spacingBox`, it refers to `Renderer.spacingBox` which
|
|
@@ -9453,34 +9563,39 @@
|
|
|
9453
9563
|
*
|
|
9454
9564
|
* @return {Highcharts.SVGElement} Returns the SVGElement for chaining.
|
|
9455
9565
|
*/
|
|
9456
|
-
align(alignOptions, alignByTranslate,
|
|
9457
|
-
const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects;
|
|
9458
|
-
let x, y,
|
|
9566
|
+
align(alignOptions, alignByTranslate, alignTo, redraw = true) {
|
|
9567
|
+
const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects, initialAlignment = Boolean(alignOptions);
|
|
9568
|
+
let x, y, alignFactor, vAlignFactor;
|
|
9459
9569
|
// First call on instanciate
|
|
9460
9570
|
if (alignOptions) {
|
|
9461
9571
|
this.alignOptions = alignOptions;
|
|
9462
9572
|
this.alignByTranslate = alignByTranslate;
|
|
9463
|
-
|
|
9464
|
-
this.alignTo = alignTo = box || 'renderer';
|
|
9465
|
-
// Prevent duplicates, like legendGroup after resize
|
|
9466
|
-
erase(alignedObjects, this);
|
|
9467
|
-
alignedObjects.push(this);
|
|
9468
|
-
box = void 0; // Reassign it below
|
|
9469
|
-
}
|
|
9573
|
+
this.alignTo = alignTo;
|
|
9470
9574
|
// When called on resize, no arguments are supplied
|
|
9471
9575
|
}
|
|
9472
9576
|
else {
|
|
9473
|
-
alignOptions = this.alignOptions;
|
|
9577
|
+
alignOptions = this.alignOptions || {};
|
|
9474
9578
|
alignByTranslate = this.alignByTranslate;
|
|
9475
9579
|
alignTo = this.alignTo;
|
|
9476
9580
|
}
|
|
9477
|
-
|
|
9581
|
+
const alignToKey = !alignTo || isString(alignTo) ?
|
|
9582
|
+
alignTo || 'renderer' :
|
|
9583
|
+
void 0;
|
|
9584
|
+
// When aligned to a key, automatically re-align on redraws
|
|
9585
|
+
if (alignToKey) {
|
|
9586
|
+
// Prevent duplicates, like legendGroup after resize
|
|
9587
|
+
if (initialAlignment) {
|
|
9588
|
+
pushUnique(alignedObjects, this);
|
|
9589
|
+
}
|
|
9590
|
+
alignTo = void 0; // Do not use the box
|
|
9591
|
+
}
|
|
9592
|
+
const alignToBox = pick(alignTo, renderer[alignToKey], renderer);
|
|
9478
9593
|
// Assign variables
|
|
9479
9594
|
const align = alignOptions.align, vAlign = alignOptions.verticalAlign;
|
|
9480
9595
|
// Default: left align
|
|
9481
|
-
x = (
|
|
9596
|
+
x = (alignToBox.x || 0) + (alignOptions.x || 0);
|
|
9482
9597
|
// Default: top align
|
|
9483
|
-
y = (
|
|
9598
|
+
y = (alignToBox.y || 0) + (alignOptions.y || 0);
|
|
9484
9599
|
// Align
|
|
9485
9600
|
if (align === 'right') {
|
|
9486
9601
|
alignFactor = 1;
|
|
@@ -9489,7 +9604,7 @@
|
|
|
9489
9604
|
alignFactor = 2;
|
|
9490
9605
|
}
|
|
9491
9606
|
if (alignFactor) {
|
|
9492
|
-
x += (
|
|
9607
|
+
x += ((alignToBox.width || 0) - (alignOptions.width || 0)) /
|
|
9493
9608
|
alignFactor;
|
|
9494
9609
|
}
|
|
9495
9610
|
attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);
|
|
@@ -9501,7 +9616,7 @@
|
|
|
9501
9616
|
vAlignFactor = 2;
|
|
9502
9617
|
}
|
|
9503
9618
|
if (vAlignFactor) {
|
|
9504
|
-
y += (
|
|
9619
|
+
y += ((alignToBox.height || 0) - (alignOptions.height || 0)) /
|
|
9505
9620
|
vAlignFactor;
|
|
9506
9621
|
}
|
|
9507
9622
|
attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);
|
|
@@ -9721,7 +9836,7 @@
|
|
|
9721
9836
|
* used as a getter, the current value of the attribute is returned.
|
|
9722
9837
|
*/
|
|
9723
9838
|
attr(hash, val, complete, continueAnimation) {
|
|
9724
|
-
const element = this
|
|
9839
|
+
const { element } = this, symbolCustomAttribs = SVGElement.symbolCustomAttribs;
|
|
9725
9840
|
let key, hasSetSymbolSize, ret = this, skipAttr, setter;
|
|
9726
9841
|
// Single key-value pair
|
|
9727
9842
|
if (typeof hash === 'string' && typeof val !== 'undefined') {
|
|
@@ -9811,15 +9926,17 @@
|
|
|
9811
9926
|
* The modified rectangle arguments.
|
|
9812
9927
|
*/
|
|
9813
9928
|
crisp(rect, strokeWidth) {
|
|
9814
|
-
const wrapper = this;
|
|
9815
|
-
strokeWidth = strokeWidth || rect.strokeWidth || 0;
|
|
9816
9929
|
// Math.round because strokeWidth can sometimes have roundoff errors
|
|
9817
|
-
|
|
9818
|
-
|
|
9819
|
-
|
|
9820
|
-
|
|
9821
|
-
|
|
9822
|
-
|
|
9930
|
+
strokeWidth = Math.round(strokeWidth || rect.strokeWidth || 0);
|
|
9931
|
+
const x1 = rect.x || this.x || 0, y1 = rect.y || this.y || 0, x2 = (rect.width || this.width || 0) + x1, y2 = (rect.height || this.height || 0) + y1,
|
|
9932
|
+
// Find all the rounded coordinates for corners
|
|
9933
|
+
x = crisp(x1, strokeWidth), y = crisp(y1, strokeWidth), x2Crisp = crisp(x2, strokeWidth), y2Crisp = crisp(y2, strokeWidth);
|
|
9934
|
+
extend(rect, {
|
|
9935
|
+
x,
|
|
9936
|
+
y,
|
|
9937
|
+
width: x2Crisp - x,
|
|
9938
|
+
height: y2Crisp - y
|
|
9939
|
+
});
|
|
9823
9940
|
if (defined(rect.strokeWidth)) {
|
|
9824
9941
|
rect.strokeWidth = strokeWidth;
|
|
9825
9942
|
}
|
|
@@ -10094,7 +10211,7 @@
|
|
|
10094
10211
|
parentToClean = grandParent;
|
|
10095
10212
|
}
|
|
10096
10213
|
// Remove from alignObjects
|
|
10097
|
-
if (wrapper.
|
|
10214
|
+
if (wrapper.alignOptions) {
|
|
10098
10215
|
erase(renderer.alignedObjects, wrapper);
|
|
10099
10216
|
}
|
|
10100
10217
|
objectEach(wrapper, function (val, key) {
|
|
@@ -10469,6 +10586,20 @@
|
|
|
10469
10586
|
this.opacity = opacity;
|
|
10470
10587
|
element.setAttribute(key, opacity);
|
|
10471
10588
|
}
|
|
10589
|
+
/**
|
|
10590
|
+
* Re-align an aligned text or label after setting the text.
|
|
10591
|
+
*
|
|
10592
|
+
* @private
|
|
10593
|
+
* @function Highcharts.SVGElement#reAlign
|
|
10594
|
+
*
|
|
10595
|
+
*/
|
|
10596
|
+
reAlign() {
|
|
10597
|
+
if (this.alignOptions?.width && this.alignOptions.align !== 'left') {
|
|
10598
|
+
this.alignOptions.width = this.getBBox().width;
|
|
10599
|
+
this.placed = false; // Block animation
|
|
10600
|
+
this.align();
|
|
10601
|
+
}
|
|
10602
|
+
}
|
|
10472
10603
|
/**
|
|
10473
10604
|
* Remove a class name from the element.
|
|
10474
10605
|
*
|
|
@@ -10768,6 +10899,7 @@
|
|
|
10768
10899
|
if (this.added) {
|
|
10769
10900
|
this.renderer.buildText(this);
|
|
10770
10901
|
}
|
|
10902
|
+
this.reAlign();
|
|
10771
10903
|
}
|
|
10772
10904
|
}
|
|
10773
10905
|
/**
|
|
@@ -11360,9 +11492,11 @@
|
|
|
11360
11492
|
return bBox;
|
|
11361
11493
|
}
|
|
11362
11494
|
getCrispAdjust() {
|
|
11363
|
-
return this.renderer.styledMode && this.box ?
|
|
11364
|
-
this.box.strokeWidth()
|
|
11365
|
-
(this['stroke-width'] ?
|
|
11495
|
+
return (this.renderer.styledMode && this.box ?
|
|
11496
|
+
this.box.strokeWidth() :
|
|
11497
|
+
(this['stroke-width'] ?
|
|
11498
|
+
parseInt(this['stroke-width'], 10) :
|
|
11499
|
+
0)) % 2 / 2;
|
|
11366
11500
|
}
|
|
11367
11501
|
heightSetter(value) {
|
|
11368
11502
|
this.heightSetting = value;
|
|
@@ -11420,6 +11554,7 @@
|
|
|
11420
11554
|
this.text.attr({ text });
|
|
11421
11555
|
}
|
|
11422
11556
|
this.updateTextPadding();
|
|
11557
|
+
this.reAlign();
|
|
11423
11558
|
}
|
|
11424
11559
|
/*
|
|
11425
11560
|
* This function runs after the label is added to the DOM (when the bounding
|
|
@@ -11591,11 +11726,15 @@
|
|
|
11591
11726
|
function arc(cx, cy, w, h, options) {
|
|
11592
11727
|
const arc = [];
|
|
11593
11728
|
if (options) {
|
|
11594
|
-
const start = options.start || 0, rx = pick(options.r, w), ry = pick(options.r, h || w),
|
|
11595
|
-
|
|
11596
|
-
//
|
|
11597
|
-
//
|
|
11598
|
-
|
|
11729
|
+
const start = options.start || 0, rx = pick(options.r, w), ry = pick(options.r, h || w),
|
|
11730
|
+
// Subtract a small number to prevent cos and sin of start and end
|
|
11731
|
+
// from becoming equal on 360 arcs (#1561). The size of the circle
|
|
11732
|
+
// affects the constant, therefore the division by `rx`. If the
|
|
11733
|
+
// proximity is too small, the arc disappears. If it is too great, a
|
|
11734
|
+
// gap appears. This can be seen in the animation of the official
|
|
11735
|
+
// bubble demo (#20586).
|
|
11736
|
+
proximity = 0.0002 / Math.max(rx, 1), fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <
|
|
11737
|
+
proximity), end = (options.end || 0) - proximity, innerRadius = options.innerR, open = pick(options.open, fullCircle), cosStart = Math.cos(start), sinStart = Math.sin(start), cosEnd = Math.cos(end), sinEnd = Math.sin(end),
|
|
11599
11738
|
// Proximity takes care of rounding errors around PI (#6971)
|
|
11600
11739
|
longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
|
|
11601
11740
|
let arcSegment = [
|
|
@@ -12243,7 +12382,7 @@
|
|
|
12243
12382
|
|
|
12244
12383
|
return TextBuilder;
|
|
12245
12384
|
});
|
|
12246
|
-
_registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {
|
|
12385
|
+
_registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Defaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, D, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {
|
|
12247
12386
|
/* *
|
|
12248
12387
|
*
|
|
12249
12388
|
* (c) 2010-2024 Torstein Honsi
|
|
@@ -12253,8 +12392,9 @@
|
|
|
12253
12392
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
12254
12393
|
*
|
|
12255
12394
|
* */
|
|
12395
|
+
const { defaultOptions } = D;
|
|
12256
12396
|
const { charts, deg2rad, doc, isFirefox, isMS, isWebKit, noop, SVG_NS, symbolSizes, win } = H;
|
|
12257
|
-
const { addEvent, attr, createElement, css, defined, destroyObjectProperties, extend, isArray, isNumber, isObject, isString, merge, pick, pInt, replaceNested, uniqueKey } = U;
|
|
12397
|
+
const { addEvent, attr, createElement, crisp, css, defined, destroyObjectProperties, extend, isArray, isNumber, isObject, isString, merge, pick, pInt, replaceNested, uniqueKey } = U;
|
|
12258
12398
|
/* *
|
|
12259
12399
|
*
|
|
12260
12400
|
* Variables
|
|
@@ -12403,7 +12543,7 @@
|
|
|
12403
12543
|
this.url = this.getReferenceURL();
|
|
12404
12544
|
// Add description
|
|
12405
12545
|
const desc = this.createElement('desc').add();
|
|
12406
|
-
desc.element.appendChild(doc.createTextNode('Created with Highcharts 11.4.
|
|
12546
|
+
desc.element.appendChild(doc.createTextNode('Created with Highcharts 11.4.3'));
|
|
12407
12547
|
this.defs = this.createElement('defs').add();
|
|
12408
12548
|
this.allowHTML = allowHTML;
|
|
12409
12549
|
this.forExport = forExport;
|
|
@@ -12736,7 +12876,9 @@
|
|
|
12736
12876
|
return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';
|
|
12737
12877
|
}
|
|
12738
12878
|
/**
|
|
12739
|
-
* Create a button with preset states.
|
|
12879
|
+
* Create a button with preset states. Styles for the button can either be
|
|
12880
|
+
* set as arguments, or a general theme for all buttons can be set by the
|
|
12881
|
+
* `global.buttonTheme` option.
|
|
12740
12882
|
*
|
|
12741
12883
|
* @function Highcharts.SVGRenderer#button
|
|
12742
12884
|
*
|
|
@@ -12774,56 +12916,31 @@
|
|
|
12774
12916
|
* The button element.
|
|
12775
12917
|
*/
|
|
12776
12918
|
button(text, x, y, callback, theme = {}, hoverState, selectState, disabledState, shape, useHTML) {
|
|
12777
|
-
const label = this.label(text, x, y, shape, void 0, void 0, useHTML, void 0, 'button'), styledMode = this.styledMode,
|
|
12919
|
+
const label = this.label(text, x, y, shape, void 0, void 0, useHTML, void 0, 'button'), styledMode = this.styledMode, args = arguments;
|
|
12778
12920
|
let curState = 0;
|
|
12779
|
-
theme = merge(theme);
|
|
12921
|
+
theme = merge(defaultOptions.global.buttonTheme, theme);
|
|
12922
|
+
// @todo Consider moving this to a lower level, like .attr
|
|
12923
|
+
if (styledMode) {
|
|
12924
|
+
delete theme.fill;
|
|
12925
|
+
delete theme.stroke;
|
|
12926
|
+
delete theme['stroke-width'];
|
|
12927
|
+
}
|
|
12928
|
+
const states = theme.states || {}, normalStyle = theme.style || {};
|
|
12780
12929
|
delete theme.states;
|
|
12781
|
-
const normalStyle = merge({
|
|
12782
|
-
color: "#333333" /* Palette.neutralColor80 */,
|
|
12783
|
-
cursor: 'pointer',
|
|
12784
|
-
fontSize: '0.8em',
|
|
12785
|
-
fontWeight: 'normal'
|
|
12786
|
-
}, theme.style);
|
|
12787
12930
|
delete theme.style;
|
|
12788
|
-
//
|
|
12789
|
-
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
//
|
|
12794
|
-
|
|
12795
|
-
let hoverStyle, selectStyle, disabledStyle;
|
|
12931
|
+
// Presentational
|
|
12932
|
+
const stateAttribs = [
|
|
12933
|
+
AST.filterUserAttributes(theme)
|
|
12934
|
+
],
|
|
12935
|
+
// The string type is a mistake, it is just for compliance with
|
|
12936
|
+
// SVGAttribute and is not used in button theme.
|
|
12937
|
+
stateStyles = [normalStyle];
|
|
12796
12938
|
if (!styledMode) {
|
|
12797
|
-
|
|
12798
|
-
|
|
12799
|
-
|
|
12800
|
-
|
|
12801
|
-
|
|
12802
|
-
}, normalState);
|
|
12803
|
-
// Hover state
|
|
12804
|
-
hoverState = merge(normalState, {
|
|
12805
|
-
fill: "#e6e6e6" /* Palette.neutralColor10 */
|
|
12806
|
-
}, AST.filterUserAttributes(hoverState || states.hover || {}));
|
|
12807
|
-
hoverStyle = hoverState.style;
|
|
12808
|
-
delete hoverState.style;
|
|
12809
|
-
// Pressed state
|
|
12810
|
-
selectState = merge(normalState, {
|
|
12811
|
-
fill: "#e6e9ff" /* Palette.highlightColor10 */,
|
|
12812
|
-
style: {
|
|
12813
|
-
color: "#000000" /* Palette.neutralColor100 */,
|
|
12814
|
-
fontWeight: 'bold'
|
|
12815
|
-
}
|
|
12816
|
-
}, AST.filterUserAttributes(selectState || states.select || {}));
|
|
12817
|
-
selectStyle = selectState.style;
|
|
12818
|
-
delete selectState.style;
|
|
12819
|
-
// Disabled state
|
|
12820
|
-
disabledState = merge(normalState, {
|
|
12821
|
-
style: {
|
|
12822
|
-
color: "#cccccc" /* Palette.neutralColor20 */
|
|
12823
|
-
}
|
|
12824
|
-
}, AST.filterUserAttributes(disabledState || states.disabled || {}));
|
|
12825
|
-
disabledStyle = disabledState.style;
|
|
12826
|
-
delete disabledState.style;
|
|
12939
|
+
['hover', 'select', 'disabled'].forEach((stateName, i) => {
|
|
12940
|
+
stateAttribs.push(merge(stateAttribs[0], AST.filterUserAttributes(args[i + 5] || states[stateName] || {})));
|
|
12941
|
+
stateStyles.push(stateAttribs[i + 1].style);
|
|
12942
|
+
delete stateAttribs[i + 1].style;
|
|
12943
|
+
});
|
|
12827
12944
|
}
|
|
12828
12945
|
// Add the events. IE9 and IE10 need mouseover and mouseout to function
|
|
12829
12946
|
// (#667).
|
|
@@ -12837,7 +12954,7 @@
|
|
|
12837
12954
|
label.setState(curState);
|
|
12838
12955
|
}
|
|
12839
12956
|
});
|
|
12840
|
-
label.setState =
|
|
12957
|
+
label.setState = (state = 0) => {
|
|
12841
12958
|
// Hover state is temporary, don't record it
|
|
12842
12959
|
if (state !== 1) {
|
|
12843
12960
|
label.state = curState = state;
|
|
@@ -12846,31 +12963,19 @@
|
|
|
12846
12963
|
label
|
|
12847
12964
|
.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)
|
|
12848
12965
|
.addClass('highcharts-button-' +
|
|
12849
|
-
['normal', 'hover', 'pressed', 'disabled'][state
|
|
12966
|
+
['normal', 'hover', 'pressed', 'disabled'][state]);
|
|
12850
12967
|
if (!styledMode) {
|
|
12851
|
-
label
|
|
12852
|
-
|
|
12853
|
-
normalState,
|
|
12854
|
-
hoverState,
|
|
12855
|
-
selectState,
|
|
12856
|
-
disabledState
|
|
12857
|
-
][state || 0]);
|
|
12858
|
-
const css = [
|
|
12859
|
-
normalStyle,
|
|
12860
|
-
hoverStyle,
|
|
12861
|
-
selectStyle,
|
|
12862
|
-
disabledStyle
|
|
12863
|
-
][state || 0];
|
|
12968
|
+
label.attr(stateAttribs[state]);
|
|
12969
|
+
const css = stateStyles[state];
|
|
12864
12970
|
if (isObject(css)) {
|
|
12865
12971
|
label.css(css);
|
|
12866
12972
|
}
|
|
12867
12973
|
}
|
|
12868
12974
|
};
|
|
12975
|
+
label.attr(stateAttribs[0]);
|
|
12869
12976
|
// Presentational attributes
|
|
12870
12977
|
if (!styledMode) {
|
|
12871
|
-
label
|
|
12872
|
-
.attr(normalState)
|
|
12873
|
-
.css(extend({ cursor: 'default' }, normalStyle));
|
|
12978
|
+
label.css(extend({ cursor: 'default' }, normalStyle));
|
|
12874
12979
|
// HTML labels don't need to handle pointer events because click and
|
|
12875
12980
|
// mouseenter/mouseleave is bound to the underlying <g> element.
|
|
12876
12981
|
// Should this be reconsidered, we need more complex logic to share
|
|
@@ -12900,26 +13005,17 @@
|
|
|
12900
13005
|
* @param {number} width
|
|
12901
13006
|
* The width of the line.
|
|
12902
13007
|
*
|
|
12903
|
-
* @param {string} [roundingFunction=round]
|
|
12904
|
-
* The rounding function name on the `Math` object, can be one of
|
|
12905
|
-
* `round`, `floor` or `ceil`.
|
|
12906
|
-
*
|
|
12907
13008
|
* @return {Highcharts.SVGPathArray}
|
|
12908
13009
|
* The original points array, but modified to render crisply.
|
|
12909
13010
|
*/
|
|
12910
|
-
crispLine(points, width
|
|
12911
|
-
const start = points
|
|
12912
|
-
const end = points[1];
|
|
13011
|
+
crispLine(points, width) {
|
|
13012
|
+
const [start, end] = points;
|
|
12913
13013
|
// Normalize to a crisp line
|
|
12914
13014
|
if (defined(start[1]) && start[1] === end[1]) {
|
|
12915
|
-
|
|
12916
|
-
// the same.
|
|
12917
|
-
start[1] = end[1] =
|
|
12918
|
-
Math[roundingFunction](start[1]) - (width % 2 / 2);
|
|
13015
|
+
start[1] = end[1] = crisp(start[1], width);
|
|
12919
13016
|
}
|
|
12920
13017
|
if (defined(start[2]) && start[2] === end[2]) {
|
|
12921
|
-
start[2] = end[2] =
|
|
12922
|
-
Math[roundingFunction](start[2]) + (width % 2 / 2);
|
|
13018
|
+
start[2] = end[2] = crisp(start[2], width);
|
|
12923
13019
|
}
|
|
12924
13020
|
return points;
|
|
12925
13021
|
}
|
|
@@ -13318,7 +13414,7 @@
|
|
|
13318
13414
|
if (symbolFn) {
|
|
13319
13415
|
// Check if there's a path defined for this symbol
|
|
13320
13416
|
if (typeof x === 'number') {
|
|
13321
|
-
path = symbolFn.call(this.symbols,
|
|
13417
|
+
path = symbolFn.call(this.symbols, x || 0, y || 0, width || 0, height || 0, options);
|
|
13322
13418
|
}
|
|
13323
13419
|
obj = this.path(path);
|
|
13324
13420
|
if (!ren.styledMode) {
|
|
@@ -15477,11 +15573,12 @@
|
|
|
15477
15573
|
overflow: 'justify',
|
|
15478
15574
|
/**
|
|
15479
15575
|
* The pixel padding for axis labels, to ensure white space between
|
|
15480
|
-
* them.
|
|
15576
|
+
* them. Defaults to 4 for horizontal axes, 1 for vertical.
|
|
15481
15577
|
*
|
|
15578
|
+
* @default undefined
|
|
15482
15579
|
* @product highcharts gantt
|
|
15580
|
+
* @apioption xAxis.labels.padding
|
|
15483
15581
|
*/
|
|
15484
|
-
padding: 5,
|
|
15485
15582
|
/**
|
|
15486
15583
|
* Whether to reserve space for the labels. By default, space is
|
|
15487
15584
|
* reserved for the labels in these cases:
|
|
@@ -17792,7 +17889,7 @@
|
|
|
17792
17889
|
});
|
|
17793
17890
|
if (label.getBBox().width <
|
|
17794
17891
|
axis.getSlotWidth(tick) - 2 *
|
|
17795
|
-
labelOptions.padding) {
|
|
17892
|
+
(labelOptions.padding || 0)) {
|
|
17796
17893
|
return;
|
|
17797
17894
|
}
|
|
17798
17895
|
}
|
|
@@ -17981,7 +18078,7 @@
|
|
|
17981
18078
|
* Extendible method to return the path of the marker
|
|
17982
18079
|
* @private
|
|
17983
18080
|
*/
|
|
17984
|
-
getMarkPath(x, y, tickLength, tickWidth, horiz, renderer) {
|
|
18081
|
+
getMarkPath(x, y, tickLength, tickWidth, horiz = false, renderer) {
|
|
17985
18082
|
return renderer.crispLine([[
|
|
17986
18083
|
'M',
|
|
17987
18084
|
x,
|
|
@@ -18109,9 +18206,7 @@
|
|
|
18109
18206
|
* @param {number} [opacity]
|
|
18110
18207
|
*/
|
|
18111
18208
|
render(index, old, opacity) {
|
|
18112
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, axisStart = axis.pos, axisEnd = axisStart + axis.len,
|
|
18113
|
-
(!horiz && y === axisStart)) ? -1 : 1, // #1480, #1687
|
|
18114
|
-
pxPos = horiz ? x : y;
|
|
18209
|
+
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, axisStart = axis.pos, axisEnd = axisStart + axis.len, pxPos = horiz ? x : y;
|
|
18115
18210
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
18116
18211
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
18117
18212
|
// axes in Safari.
|
|
@@ -18125,9 +18220,9 @@
|
|
|
18125
18220
|
opacity = pick(opacity, 1);
|
|
18126
18221
|
this.isActive = true;
|
|
18127
18222
|
// Create the grid line
|
|
18128
|
-
this.renderGridLine(old, opacity
|
|
18223
|
+
this.renderGridLine(old, opacity);
|
|
18129
18224
|
// Create the tick mark
|
|
18130
|
-
this.renderMark(xy, opacity
|
|
18225
|
+
this.renderMark(xy, opacity);
|
|
18131
18226
|
// The label is created on init - now move it into place
|
|
18132
18227
|
this.renderLabel(xy, old, labelOpacity, index);
|
|
18133
18228
|
tick.isNew = false;
|
|
@@ -18140,9 +18235,8 @@
|
|
|
18140
18235
|
* @function Highcharts.Tick#renderGridLine
|
|
18141
18236
|
* @param {boolean} old Whether or not the tick is old
|
|
18142
18237
|
* @param {number} opacity The opacity of the grid line
|
|
18143
|
-
* @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1
|
|
18144
18238
|
*/
|
|
18145
|
-
renderGridLine(old, opacity
|
|
18239
|
+
renderGridLine(old, opacity) {
|
|
18146
18240
|
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), renderer = axis.chart.renderer;
|
|
18147
18241
|
let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
18148
18242
|
if (tick.type === 'minor') {
|
|
@@ -18175,7 +18269,7 @@
|
|
|
18175
18269
|
if (gridLine) {
|
|
18176
18270
|
gridLinePath = axis.getPlotLinePath({
|
|
18177
18271
|
value: pos + tickmarkOffset,
|
|
18178
|
-
lineWidth: gridLine.strokeWidth()
|
|
18272
|
+
lineWidth: gridLine.strokeWidth(),
|
|
18179
18273
|
force: 'pass',
|
|
18180
18274
|
old: old,
|
|
18181
18275
|
acrossPanes: false // #18025
|
|
@@ -18197,9 +18291,8 @@
|
|
|
18197
18291
|
* @function Highcharts.Tick#renderMark
|
|
18198
18292
|
* @param {Highcharts.PositionObject} xy The position vector of the mark
|
|
18199
18293
|
* @param {number} opacity The opacity of the mark
|
|
18200
|
-
* @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1
|
|
18201
18294
|
*/
|
|
18202
|
-
renderMark(xy, opacity
|
|
18295
|
+
renderMark(xy, opacity) {
|
|
18203
18296
|
const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
|
|
18204
18297
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
18205
18298
|
let mark = tick.mark;
|
|
@@ -18227,7 +18320,7 @@
|
|
|
18227
18320
|
}
|
|
18228
18321
|
}
|
|
18229
18322
|
mark[isNewMark ? 'attr' : 'animate']({
|
|
18230
|
-
d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth()
|
|
18323
|
+
d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth(), axis.horiz, renderer),
|
|
18231
18324
|
opacity: opacity
|
|
18232
18325
|
});
|
|
18233
18326
|
}
|
|
@@ -18567,7 +18660,7 @@
|
|
|
18567
18660
|
* @name Highcharts.Axis#len
|
|
18568
18661
|
* @type {number}
|
|
18569
18662
|
*/
|
|
18570
|
-
axis.len = 0;
|
|
18663
|
+
axis.len ?? (axis.len = 0);
|
|
18571
18664
|
axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;
|
|
18572
18665
|
axis.range = options.range;
|
|
18573
18666
|
axis.offset = options.offset || 0;
|
|
@@ -18645,13 +18738,17 @@
|
|
|
18645
18738
|
// Top and bottom axis defaults
|
|
18646
18739
|
{
|
|
18647
18740
|
labels: {
|
|
18648
|
-
autoRotation: [-45]
|
|
18741
|
+
autoRotation: [-45],
|
|
18742
|
+
padding: 4
|
|
18649
18743
|
},
|
|
18650
18744
|
margin: 15
|
|
18651
18745
|
} :
|
|
18652
18746
|
// Left and right axis, title rotated 90 or 270 degrees
|
|
18653
18747
|
// respectively
|
|
18654
18748
|
{
|
|
18749
|
+
labels: {
|
|
18750
|
+
padding: 1
|
|
18751
|
+
},
|
|
18655
18752
|
title: {
|
|
18656
18753
|
rotation: 90 * this.side
|
|
18657
18754
|
}
|
|
@@ -18861,10 +18958,13 @@
|
|
|
18861
18958
|
val = axis.val2lin(val);
|
|
18862
18959
|
}
|
|
18863
18960
|
const value = sign * (val - localMin) * localA;
|
|
18864
|
-
returnValue =
|
|
18961
|
+
returnValue = value +
|
|
18865
18962
|
cvsOffset +
|
|
18866
18963
|
(sign * minPixelPadding) +
|
|
18867
18964
|
(isNumber(pointPlacement) ? localA * pointPlacement : 0);
|
|
18965
|
+
if (!axis.isRadial) {
|
|
18966
|
+
returnValue = correctFloat(returnValue);
|
|
18967
|
+
}
|
|
18868
18968
|
}
|
|
18869
18969
|
return returnValue;
|
|
18870
18970
|
}
|
|
@@ -18952,8 +19052,8 @@
|
|
|
18952
19052
|
// Keep the translated value within sane bounds, and avoid Infinity
|
|
18953
19053
|
// to fail the isNumber test (#7709).
|
|
18954
19054
|
translatedValue = clamp(translatedValue, -1e5, 1e5);
|
|
18955
|
-
x1 = x2 =
|
|
18956
|
-
y1 = y2 =
|
|
19055
|
+
x1 = x2 = translatedValue + transB;
|
|
19056
|
+
y1 = y2 = cHeight - translatedValue - transB;
|
|
18957
19057
|
if (!isNumber(translatedValue)) { // No min or max
|
|
18958
19058
|
skip = true;
|
|
18959
19059
|
force = false; // #7175, don't force it when path is invalid
|
|
@@ -20284,17 +20384,17 @@
|
|
|
20284
20384
|
* @function Highcharts.Axis#unsquish
|
|
20285
20385
|
*/
|
|
20286
20386
|
unsquish() {
|
|
20287
|
-
const labelOptions = this.options.labels, horiz = this.horiz, tickInterval = this.tickInterval, slotSize = this.len / (((this.categories ? 1 : 0) +
|
|
20387
|
+
const labelOptions = this.options.labels, padding = labelOptions.padding || 0, horiz = this.horiz, tickInterval = this.tickInterval, slotSize = this.len / (((this.categories ? 1 : 0) +
|
|
20288
20388
|
this.max -
|
|
20289
20389
|
this.min) /
|
|
20290
20390
|
tickInterval), rotationOption = labelOptions.rotation,
|
|
20291
20391
|
// We don't know the actual rendered line height at this point, but
|
|
20292
|
-
// it defaults to 0.
|
|
20293
|
-
lineHeight = this.labelMetrics().h, range = Math.max(this.max - this.min, 0),
|
|
20392
|
+
// it defaults to 0.8em
|
|
20393
|
+
lineHeight = correctFloat(this.labelMetrics().h * 0.8), range = Math.max(this.max - this.min, 0),
|
|
20294
20394
|
// Return the multiple of tickInterval that is needed to avoid
|
|
20295
20395
|
// collision
|
|
20296
20396
|
getStep = function (spaceNeeded) {
|
|
20297
|
-
let step = spaceNeeded / (slotSize || 1);
|
|
20397
|
+
let step = (spaceNeeded + 2 * padding) / (slotSize || 1);
|
|
20298
20398
|
step = step > 1 ? Math.ceil(step) : 1;
|
|
20299
20399
|
// Guard for very small or negative angles (#9835)
|
|
20300
20400
|
if (step * tickInterval > range &&
|
|
@@ -20390,7 +20490,10 @@
|
|
|
20390
20490
|
* @function Highcharts.Axis#renderUnsquish
|
|
20391
20491
|
*/
|
|
20392
20492
|
renderUnsquish() {
|
|
20393
|
-
const chart = this.chart, renderer = chart.renderer, tickPositions = this.tickPositions, ticks = this.ticks, labelOptions = this.options.labels, labelStyleOptions = labelOptions.style, horiz = this.horiz, slotWidth = this.getSlotWidth(), innerWidth = Math.max(1, Math.round(slotWidth -
|
|
20493
|
+
const chart = this.chart, renderer = chart.renderer, tickPositions = this.tickPositions, ticks = this.ticks, labelOptions = this.options.labels, labelStyleOptions = labelOptions.style, horiz = this.horiz, slotWidth = this.getSlotWidth(), innerWidth = Math.max(1, Math.round(slotWidth - (horiz ?
|
|
20494
|
+
2 * (labelOptions.padding || 0) :
|
|
20495
|
+
labelOptions.distance || 0 // #21172
|
|
20496
|
+
))), attr = {}, labelMetrics = this.labelMetrics(), textOverflowOption = labelStyleOptions.textOverflow;
|
|
20394
20497
|
let commonWidth, commonTextOverflow, maxLabelLength = 0, label, i, pos;
|
|
20395
20498
|
// Set rotation option unless it is "auto", like in gauges
|
|
20396
20499
|
if (!isString(labelOptions.rotation)) {
|
|
@@ -20707,7 +20810,7 @@
|
|
|
20707
20810
|
}
|
|
20708
20811
|
// Due to GridAxis.tickSize, tickSize should be calculated after ticks
|
|
20709
20812
|
// has rendered.
|
|
20710
|
-
if (coll !== 'colorAxis') {
|
|
20813
|
+
if (coll !== 'colorAxis' && clipOffset) {
|
|
20711
20814
|
const tickSize = this.tickSize('tick');
|
|
20712
20815
|
axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +
|
|
20713
20816
|
directionFactor * axis.offset, labelOffsetPadded, // #3027
|
|
@@ -20719,10 +20822,9 @@
|
|
|
20719
20822
|
// the plot area and axis lines
|
|
20720
20823
|
const clip = !axis.axisLine || options.offset ?
|
|
20721
20824
|
0 :
|
|
20722
|
-
// #4308, #4371
|
|
20723
|
-
|
|
20724
|
-
clipOffset[invertedSide] =
|
|
20725
|
-
Math.max(clipOffset[invertedSide], clip);
|
|
20825
|
+
// #4308, #4371
|
|
20826
|
+
axis.axisLine.strokeWidth() / 2;
|
|
20827
|
+
clipOffset[invertedSide] = Math.max(clipOffset[invertedSide], clip);
|
|
20726
20828
|
}
|
|
20727
20829
|
fireEvent(this, 'afterGetOffset');
|
|
20728
20830
|
}
|
|
@@ -21357,6 +21459,7 @@
|
|
|
21357
21459
|
'coll',
|
|
21358
21460
|
'extKey',
|
|
21359
21461
|
'hcEvents',
|
|
21462
|
+
'len',
|
|
21360
21463
|
'names',
|
|
21361
21464
|
'series',
|
|
21362
21465
|
'userMax',
|
|
@@ -22577,6 +22680,16 @@
|
|
|
22577
22680
|
* @type {Highcharts.ColorString}
|
|
22578
22681
|
* @apioption xAxis.plotBands.borderColor
|
|
22579
22682
|
*/
|
|
22683
|
+
/**
|
|
22684
|
+
* Border radius for the plot band. Applies only to gauges. Can be a pixel
|
|
22685
|
+
* value or a percentage, for example `50%`.
|
|
22686
|
+
*
|
|
22687
|
+
* @type {number|string}
|
|
22688
|
+
* @since 11.4.2
|
|
22689
|
+
* @sample {highcharts} highcharts/xaxis/plotbands-gauge-borderradius
|
|
22690
|
+
* Angular gauge with rounded plot bands
|
|
22691
|
+
* @apioption xAxis.plotBands.borderRadius
|
|
22692
|
+
*/
|
|
22580
22693
|
/**
|
|
22581
22694
|
* Border width for the plot band. Also requires `borderColor` to be set.
|
|
22582
22695
|
*
|
|
@@ -23134,7 +23247,7 @@
|
|
|
23134
23247
|
|
|
23135
23248
|
return PlotLineOrBand;
|
|
23136
23249
|
});
|
|
23137
|
-
_registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/Templating.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {
|
|
23250
|
+
_registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Templating.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, F, H, R, RendererRegistry, U) {
|
|
23138
23251
|
/* *
|
|
23139
23252
|
*
|
|
23140
23253
|
* (c) 2010-2024 Torstein Honsi
|
|
@@ -23144,6 +23257,7 @@
|
|
|
23144
23257
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
23145
23258
|
*
|
|
23146
23259
|
* */
|
|
23260
|
+
const { animObject } = A;
|
|
23147
23261
|
const { format } = F;
|
|
23148
23262
|
const { composed, doc, isSafari } = H;
|
|
23149
23263
|
const { distribute } = R;
|
|
@@ -23183,7 +23297,6 @@
|
|
|
23183
23297
|
this.distance = 0;
|
|
23184
23298
|
this.isHidden = true;
|
|
23185
23299
|
this.isSticky = false;
|
|
23186
|
-
this.now = {};
|
|
23187
23300
|
this.options = {};
|
|
23188
23301
|
this.outside = false;
|
|
23189
23302
|
this.chart = chart;
|
|
@@ -23277,7 +23390,6 @@
|
|
|
23277
23390
|
discardElement(this.container);
|
|
23278
23391
|
}
|
|
23279
23392
|
U.clearTimeout(this.hideTimer);
|
|
23280
|
-
U.clearTimeout(this.tooltipTimeout);
|
|
23281
23393
|
}
|
|
23282
23394
|
/**
|
|
23283
23395
|
* Extendable method to get the anchor position of the tooltip
|
|
@@ -23438,19 +23550,15 @@
|
|
|
23438
23550
|
// container.
|
|
23439
23551
|
if (tooltip.outside) {
|
|
23440
23552
|
const label = this.label;
|
|
23441
|
-
|
|
23442
|
-
|
|
23443
|
-
|
|
23444
|
-
|
|
23445
|
-
container
|
|
23446
|
-
|
|
23447
|
-
|
|
23448
|
-
|
|
23449
|
-
|
|
23450
|
-
if (container) {
|
|
23451
|
-
container.style.top = value + 'px';
|
|
23452
|
-
}
|
|
23453
|
-
};
|
|
23553
|
+
[label.xSetter, label.ySetter].forEach((setter, i) => {
|
|
23554
|
+
label[i ? 'ySetter' : 'xSetter'] = (value) => {
|
|
23555
|
+
setter.call(label, tooltip.distance);
|
|
23556
|
+
label[i ? 'y' : 'x'] = value;
|
|
23557
|
+
if (container) {
|
|
23558
|
+
container.style[i ? 'top' : 'left'] = `${value}px`;
|
|
23559
|
+
}
|
|
23560
|
+
};
|
|
23561
|
+
});
|
|
23454
23562
|
}
|
|
23455
23563
|
this.label
|
|
23456
23564
|
.attr({ zIndex: 8 })
|
|
@@ -23701,15 +23809,6 @@
|
|
|
23701
23809
|
* @type {Array<null>}
|
|
23702
23810
|
*/
|
|
23703
23811
|
this.crosshairs = [];
|
|
23704
|
-
/**
|
|
23705
|
-
* Current values of x and y when animating.
|
|
23706
|
-
*
|
|
23707
|
-
* @private
|
|
23708
|
-
* @readonly
|
|
23709
|
-
* @name Highcharts.Tooltip#now
|
|
23710
|
-
* @type {Highcharts.PositionObject}
|
|
23711
|
-
*/
|
|
23712
|
-
this.now = { x: 0, y: 0 };
|
|
23713
23812
|
/**
|
|
23714
23813
|
* Tooltips are initially hidden.
|
|
23715
23814
|
*
|
|
@@ -23773,38 +23872,13 @@
|
|
|
23773
23872
|
* @param {number} anchorY
|
|
23774
23873
|
*/
|
|
23775
23874
|
move(x, y, anchorX, anchorY) {
|
|
23776
|
-
const tooltip = this,
|
|
23777
|
-
|
|
23778
|
-
|
|
23779
|
-
|
|
23780
|
-
(Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1), skipAnchor = tooltip.followPointer || tooltip.len > 1;
|
|
23781
|
-
// Get intermediate values for animation
|
|
23782
|
-
extend(now, {
|
|
23783
|
-
x: animate ? (2 * now.x + x) / 3 : x,
|
|
23784
|
-
y: animate ? (now.y + y) / 2 : y,
|
|
23785
|
-
anchorX: skipAnchor ?
|
|
23786
|
-
void 0 :
|
|
23787
|
-
animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,
|
|
23788
|
-
anchorY: skipAnchor ?
|
|
23789
|
-
void 0 :
|
|
23790
|
-
animate ? (now.anchorY + anchorY) / 2 : anchorY
|
|
23791
|
-
});
|
|
23792
|
-
// Move to the intermediate value
|
|
23793
|
-
tooltip.getLabel().attr(now);
|
|
23794
|
-
tooltip.drawTracker();
|
|
23795
|
-
// Run on next tick of the mouse tracker
|
|
23796
|
-
if (animate) {
|
|
23797
|
-
// Never allow two timeouts
|
|
23798
|
-
U.clearTimeout(this.tooltipTimeout);
|
|
23799
|
-
// Set the fixed interval ticking for the smooth tooltip
|
|
23800
|
-
this.tooltipTimeout = setTimeout(function () {
|
|
23801
|
-
// The interval function may still be running during destroy,
|
|
23802
|
-
// so check that the chart is really there before calling.
|
|
23803
|
-
if (tooltip) {
|
|
23804
|
-
tooltip.move(x, y, anchorX, anchorY);
|
|
23805
|
-
}
|
|
23806
|
-
}, 32);
|
|
23875
|
+
const tooltip = this, animation = animObject(!tooltip.isHidden && tooltip.options.animation), skipAnchor = tooltip.followPointer || (tooltip.len || 0) > 1, attr = { x, y };
|
|
23876
|
+
if (!skipAnchor) {
|
|
23877
|
+
attr.anchorX = anchorX;
|
|
23878
|
+
attr.anchorY = anchorY;
|
|
23807
23879
|
}
|
|
23880
|
+
animation.step = () => tooltip.drawTracker();
|
|
23881
|
+
tooltip.getLabel().animate(attr, animation);
|
|
23808
23882
|
}
|
|
23809
23883
|
/**
|
|
23810
23884
|
* Refresh the tooltip's text and position.
|
|
@@ -24527,7 +24601,7 @@
|
|
|
24527
24601
|
const { animObject } = A;
|
|
24528
24602
|
const { defaultOptions } = D;
|
|
24529
24603
|
const { format } = F;
|
|
24530
|
-
const { addEvent, erase, extend, fireEvent, getNestedProperty, isArray, isFunction, isNumber, isObject, merge, pick, syncTimeout, removeEvent, uniqueKey } = U;
|
|
24604
|
+
const { addEvent, crisp, erase, extend, fireEvent, getNestedProperty, isArray, isFunction, isNumber, isObject, merge, pick, syncTimeout, removeEvent, uniqueKey } = U;
|
|
24531
24605
|
/* eslint-disable no-invalid-this, valid-jsdoc */
|
|
24532
24606
|
/* *
|
|
24533
24607
|
*
|
|
@@ -25635,7 +25709,8 @@
|
|
|
25635
25709
|
}, AST.filterUserAttributes(haloOptions.attributes || {})));
|
|
25636
25710
|
}
|
|
25637
25711
|
}
|
|
25638
|
-
else if (halo
|
|
25712
|
+
else if (halo?.point?.haloPath &&
|
|
25713
|
+
!halo.point.destroyed) {
|
|
25639
25714
|
// Animate back to 0 on the current halo point (#6055)
|
|
25640
25715
|
halo.animate({ d: halo.point.haloPath(0) }, null,
|
|
25641
25716
|
// Hide after unhovering. The `complete` callback runs in the
|
|
@@ -25658,7 +25733,7 @@
|
|
|
25658
25733
|
*/
|
|
25659
25734
|
haloPath(size) {
|
|
25660
25735
|
const pos = this.pos();
|
|
25661
|
-
return pos ? this.series.chart.renderer.symbols.circle(
|
|
25736
|
+
return pos ? this.series.chart.renderer.symbols.circle(crisp(pos[0], 1) - size, pos[1] - size, size * 2, size * 2) : [];
|
|
25662
25737
|
}
|
|
25663
25738
|
}
|
|
25664
25739
|
/* *
|
|
@@ -30357,6 +30432,21 @@
|
|
|
30357
30432
|
* @type {Highcharts.AlignValue|null}
|
|
30358
30433
|
*/
|
|
30359
30434
|
align: 'center',
|
|
30435
|
+
/**
|
|
30436
|
+
* Alignment method for data labels. If set to `plotEdges`, the labels
|
|
30437
|
+
* are aligned within the plot area in the direction of the y-axis. So
|
|
30438
|
+
* in a regular column chart, the labels are aligned vertically
|
|
30439
|
+
* according to the `verticalAlign` setting. In a bar chart, which is
|
|
30440
|
+
* inverted, the labels are aligned horizontally according to the
|
|
30441
|
+
* `align` setting. Applies to cartesian series only.
|
|
30442
|
+
*
|
|
30443
|
+
* @sample {highcharts} highcharts/series-bar/datalabels-alignto/
|
|
30444
|
+
* Align to plot edges
|
|
30445
|
+
*
|
|
30446
|
+
* @type {string}
|
|
30447
|
+
* @since 11.4.2
|
|
30448
|
+
* @apioption plotOptions.series.dataLabels.alignTo
|
|
30449
|
+
*/
|
|
30360
30450
|
/**
|
|
30361
30451
|
* Whether to allow data labels to overlap. To make the labels less
|
|
30362
30452
|
* sensitive for overlapping, the
|
|
@@ -31414,7 +31504,7 @@
|
|
|
31414
31504
|
const { registerEventOptions } = F;
|
|
31415
31505
|
const { svg, win } = H;
|
|
31416
31506
|
const { seriesTypes } = SeriesRegistry;
|
|
31417
|
-
const { arrayMax, arrayMin, clamp, correctFloat, defined, destroyObjectProperties, diffObjects, erase, error, extend, find, fireEvent, getClosestDistance, getNestedProperty, insertItem, isArray, isNumber, isString, merge, objectEach, pick, removeEvent, splat, syncTimeout } = U;
|
|
31507
|
+
const { arrayMax, arrayMin, clamp, correctFloat, crisp, defined, destroyObjectProperties, diffObjects, erase, error, extend, find, fireEvent, getClosestDistance, getNestedProperty, insertItem, isArray, isNumber, isString, merge, objectEach, pick, removeEvent, splat, syncTimeout } = U;
|
|
31418
31508
|
/* *
|
|
31419
31509
|
*
|
|
31420
31510
|
* Class
|
|
@@ -32378,10 +32468,7 @@
|
|
|
32378
32468
|
* Force getting extremes of a total series data range.
|
|
32379
32469
|
*/
|
|
32380
32470
|
getProcessedData(forceExtremesFromAll) {
|
|
32381
|
-
const series = this, xAxis = series.xAxis, options = series.options, cropThreshold = options.cropThreshold,
|
|
32382
|
-
series.getExtremesFromAll ||
|
|
32383
|
-
options.getExtremesFromAll, // #4599
|
|
32384
|
-
logarithmic = xAxis?.logarithmic, isCartesian = series.isCartesian;
|
|
32471
|
+
const series = this, xAxis = series.xAxis, options = series.options, cropThreshold = options.cropThreshold, logarithmic = xAxis?.logarithmic, isCartesian = series.isCartesian;
|
|
32385
32472
|
let croppedData, cropped, cropStart = 0, xExtremes, min, max,
|
|
32386
32473
|
// Copied during slice operation:
|
|
32387
32474
|
processedXData = series.xData, processedYData = series.yData, updatingNames = false;
|
|
@@ -32396,7 +32483,7 @@
|
|
|
32396
32483
|
// Optionally filter out points outside the plot area
|
|
32397
32484
|
if (isCartesian &&
|
|
32398
32485
|
series.sorted &&
|
|
32399
|
-
!
|
|
32486
|
+
!forceExtremesFromAll &&
|
|
32400
32487
|
(!cropThreshold ||
|
|
32401
32488
|
dataLength > cropThreshold ||
|
|
32402
32489
|
series.forceCrop)) {
|
|
@@ -32637,16 +32724,24 @@
|
|
|
32637
32724
|
* Force getting extremes of a total series data range.
|
|
32638
32725
|
*/
|
|
32639
32726
|
getExtremes(yData, forceExtremesFromAll) {
|
|
32640
|
-
const xAxis = this.xAxis, yAxis = this.yAxis,
|
|
32727
|
+
const xAxis = this.xAxis, yAxis = this.yAxis, activeYData = [],
|
|
32641
32728
|
// Handle X outside the viewed area. This does not work with
|
|
32642
32729
|
// non-sorted data like scatter (#7639).
|
|
32643
32730
|
shoulder = this.requireSorting && !this.is('column') ?
|
|
32644
32731
|
1 : 0,
|
|
32645
32732
|
// #2117, need to compensate for log X axis
|
|
32646
|
-
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false
|
|
32647
|
-
|
|
32648
|
-
|
|
32649
|
-
|
|
32733
|
+
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, getExtremesFromAll = forceExtremesFromAll ||
|
|
32734
|
+
this.getExtremesFromAll ||
|
|
32735
|
+
this.options.getExtremesFromAll; // #4599
|
|
32736
|
+
let { processedXData, processedYData } = this, xExtremes, validValue, withinRange, x, y, i, j, xMin = 0, xMax = 0, activeCounter = 0;
|
|
32737
|
+
// Get the processed data from the full range (#21003)
|
|
32738
|
+
if (this.cropped && getExtremesFromAll) {
|
|
32739
|
+
const processedData = this.getProcessedData(true);
|
|
32740
|
+
processedXData = processedData.xData;
|
|
32741
|
+
processedYData = processedData.yData;
|
|
32742
|
+
}
|
|
32743
|
+
yData = yData || this.stackedYData || processedYData || [];
|
|
32744
|
+
const yDataLength = yData.length, xData = processedXData || this.xData;
|
|
32650
32745
|
if (xAxis) {
|
|
32651
32746
|
xExtremes = xAxis.getExtremes();
|
|
32652
32747
|
xMin = xExtremes.min;
|
|
@@ -33216,12 +33311,16 @@
|
|
|
33216
33311
|
}
|
|
33217
33312
|
const pos = point.pos();
|
|
33218
33313
|
if (isNumber(radius) && pos) {
|
|
33219
|
-
attribs.x = pos[0] - radius;
|
|
33220
|
-
attribs.y = pos[1] - radius;
|
|
33221
33314
|
if (seriesOptions.crisp) {
|
|
33222
|
-
|
|
33223
|
-
|
|
33315
|
+
pos[0] = crisp(pos[0], point.hasImage ?
|
|
33316
|
+
0 :
|
|
33317
|
+
symbol === 'rect' ?
|
|
33318
|
+
// Rectangle symbols need crisp edges, others don't
|
|
33319
|
+
seriesMarkerOptions?.lineWidth || 0 :
|
|
33320
|
+
1);
|
|
33224
33321
|
}
|
|
33322
|
+
attribs.x = pos[0] - radius;
|
|
33323
|
+
attribs.y = pos[1] - radius;
|
|
33225
33324
|
}
|
|
33226
33325
|
if (radius) {
|
|
33227
33326
|
attribs.width = attribs.height = 2 * radius;
|
|
@@ -36393,7 +36492,7 @@
|
|
|
36393
36492
|
* @emits Highcharts.Chart#event:afterSetChartSize
|
|
36394
36493
|
*/
|
|
36395
36494
|
setChartSize(skipAxes) {
|
|
36396
|
-
const chart = this,
|
|
36495
|
+
const chart = this, { chartHeight, chartWidth, inverted, spacing, renderer } = chart, clipOffset = chart.clipOffset, clipRoundFunc = Math[inverted ? 'floor' : 'round'];
|
|
36397
36496
|
let plotLeft, plotTop, plotWidth, plotHeight;
|
|
36398
36497
|
/**
|
|
36399
36498
|
* The current left position of the plot area in pixels.
|
|
@@ -36425,7 +36524,6 @@
|
|
|
36425
36524
|
chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));
|
|
36426
36525
|
chart.plotSizeX = inverted ? plotHeight : plotWidth;
|
|
36427
36526
|
chart.plotSizeY = inverted ? plotWidth : plotHeight;
|
|
36428
|
-
chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;
|
|
36429
36527
|
// Set boxes used for alignment
|
|
36430
36528
|
chart.spacingBox = renderer.spacingBox = {
|
|
36431
36529
|
x: spacing[3],
|
|
@@ -36439,17 +36537,15 @@
|
|
|
36439
36537
|
width: plotWidth,
|
|
36440
36538
|
height: plotHeight
|
|
36441
36539
|
};
|
|
36442
|
-
|
|
36443
|
-
|
|
36444
|
-
|
|
36445
|
-
|
|
36446
|
-
|
|
36447
|
-
|
|
36448
|
-
|
|
36449
|
-
|
|
36450
|
-
|
|
36451
|
-
clipY))
|
|
36452
|
-
};
|
|
36540
|
+
// Compute the clipping box
|
|
36541
|
+
if (clipOffset) {
|
|
36542
|
+
chart.clipBox = {
|
|
36543
|
+
x: clipRoundFunc(clipOffset[3]),
|
|
36544
|
+
y: clipRoundFunc(clipOffset[0]),
|
|
36545
|
+
width: clipRoundFunc(chart.plotSizeX - clipOffset[1] - clipOffset[3]),
|
|
36546
|
+
height: clipRoundFunc(chart.plotSizeY - clipOffset[0] - clipOffset[2])
|
|
36547
|
+
};
|
|
36548
|
+
}
|
|
36453
36549
|
if (!skipAxes) {
|
|
36454
36550
|
chart.axes.forEach(function (axis) {
|
|
36455
36551
|
axis.setAxisSize();
|
|
@@ -36467,7 +36563,7 @@
|
|
|
36467
36563
|
*/
|
|
36468
36564
|
resetMargins() {
|
|
36469
36565
|
fireEvent(this, 'resetMargins');
|
|
36470
|
-
const chart = this, chartOptions = chart.options.chart;
|
|
36566
|
+
const chart = this, chartOptions = chart.options.chart, plotBorderWidth = chartOptions.plotBorderWidth || 0, halfWidth = plotBorderWidth / 2;
|
|
36471
36567
|
// Create margin and spacing array
|
|
36472
36568
|
['margin', 'spacing'].forEach(function splashArrays(target) {
|
|
36473
36569
|
const value = chartOptions[target], values = isObject(value) ? value : [value, value, value, value];
|
|
@@ -36486,7 +36582,13 @@
|
|
|
36486
36582
|
chart[m] = pick(chart.margin[side], chart.spacing[side]);
|
|
36487
36583
|
});
|
|
36488
36584
|
chart.axisOffset = [0, 0, 0, 0]; // Top, right, bottom, left
|
|
36489
|
-
chart.clipOffset = [
|
|
36585
|
+
chart.clipOffset = [
|
|
36586
|
+
halfWidth,
|
|
36587
|
+
halfWidth,
|
|
36588
|
+
halfWidth,
|
|
36589
|
+
halfWidth
|
|
36590
|
+
];
|
|
36591
|
+
chart.plotBorderWidth = plotBorderWidth;
|
|
36490
36592
|
}
|
|
36491
36593
|
/**
|
|
36492
36594
|
* Internal function to draw or redraw the borders and backgrounds for chart
|
|
@@ -36729,7 +36831,8 @@
|
|
|
36729
36831
|
chart.setChartSize();
|
|
36730
36832
|
for (const axis of axes) {
|
|
36731
36833
|
const { options } = axis, { labels } = options;
|
|
36732
|
-
if (
|
|
36834
|
+
if (chart.hasCartesianSeries && // #20948
|
|
36835
|
+
axis.horiz &&
|
|
36733
36836
|
axis.visible &&
|
|
36734
36837
|
labels.enabled &&
|
|
36735
36838
|
axis.series.length &&
|
|
@@ -37651,7 +37754,7 @@
|
|
|
37651
37754
|
// Remove active points for shared tooltip
|
|
37652
37755
|
this.hoverPoints?.forEach((point) => point.setState());
|
|
37653
37756
|
for (const axis of axes) {
|
|
37654
|
-
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength = to[wh]
|
|
37757
|
+
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength = pick(to[wh], axis.len), fromLength = pick(from[wh], axis.len),
|
|
37655
37758
|
// If fingers pinched very close on this axis, treat as pan
|
|
37656
37759
|
scale = Math.abs(toLength) < 10 ?
|
|
37657
37760
|
1 :
|
|
@@ -38217,23 +38320,7 @@
|
|
|
38217
38320
|
* @private
|
|
38218
38321
|
*/
|
|
38219
38322
|
moveFixedElements() {
|
|
38220
|
-
const { container, inverted, scrollablePixelsX, scrollablePixelsY } = this.chart, fixedRenderer = this.fixedRenderer, fixedSelectors =
|
|
38221
|
-
'.highcharts-breadcrumbs-group',
|
|
38222
|
-
'.highcharts-contextbutton',
|
|
38223
|
-
'.highcharts-caption',
|
|
38224
|
-
'.highcharts-credits',
|
|
38225
|
-
'.highcharts-legend',
|
|
38226
|
-
'.highcharts-legend-checkbox',
|
|
38227
|
-
'.highcharts-navigator-series',
|
|
38228
|
-
'.highcharts-navigator-xaxis',
|
|
38229
|
-
'.highcharts-navigator-yaxis',
|
|
38230
|
-
'.highcharts-navigator',
|
|
38231
|
-
'.highcharts-reset-zoom',
|
|
38232
|
-
'.highcharts-drillup-button',
|
|
38233
|
-
'.highcharts-scrollbar',
|
|
38234
|
-
'.highcharts-subtitle',
|
|
38235
|
-
'.highcharts-title'
|
|
38236
|
-
];
|
|
38323
|
+
const { container, inverted, scrollablePixelsX, scrollablePixelsY } = this.chart, fixedRenderer = this.fixedRenderer, fixedSelectors = ScrollablePlotArea.fixedSelectors;
|
|
38237
38324
|
let axisClass;
|
|
38238
38325
|
if (scrollablePixelsX && !inverted) {
|
|
38239
38326
|
axisClass = '.highcharts-yaxis';
|
|
@@ -38260,6 +38347,24 @@
|
|
|
38260
38347
|
}
|
|
38261
38348
|
}
|
|
38262
38349
|
}
|
|
38350
|
+
ScrollablePlotArea.fixedSelectors = [
|
|
38351
|
+
'.highcharts-breadcrumbs-group',
|
|
38352
|
+
'.highcharts-contextbutton',
|
|
38353
|
+
'.highcharts-caption',
|
|
38354
|
+
'.highcharts-credits',
|
|
38355
|
+
'.highcharts-drillup-button',
|
|
38356
|
+
'.highcharts-legend',
|
|
38357
|
+
'.highcharts-legend-checkbox',
|
|
38358
|
+
'.highcharts-navigator-series',
|
|
38359
|
+
'.highcharts-navigator-xaxis',
|
|
38360
|
+
'.highcharts-navigator-yaxis',
|
|
38361
|
+
'.highcharts-navigator',
|
|
38362
|
+
'.highcharts-range-selector-group',
|
|
38363
|
+
'.highcharts-reset-zoom',
|
|
38364
|
+
'.highcharts-scrollbar',
|
|
38365
|
+
'.highcharts-subtitle',
|
|
38366
|
+
'.highcharts-title'
|
|
38367
|
+
];
|
|
38263
38368
|
/* *
|
|
38264
38369
|
*
|
|
38265
38370
|
* Default Export
|
|
@@ -39553,7 +39658,248 @@
|
|
|
39553
39658
|
|
|
39554
39659
|
return LineSeries;
|
|
39555
39660
|
});
|
|
39556
|
-
_registerModule(_modules, 'Series/Area/
|
|
39661
|
+
_registerModule(_modules, 'Series/Area/AreaSeriesDefaults.js', [], function () {
|
|
39662
|
+
/* *
|
|
39663
|
+
*
|
|
39664
|
+
* (c) 2010-2024 Torstein Honsi
|
|
39665
|
+
*
|
|
39666
|
+
* License: www.highcharts.com/license
|
|
39667
|
+
*
|
|
39668
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
39669
|
+
*
|
|
39670
|
+
* */
|
|
39671
|
+
/* *
|
|
39672
|
+
*
|
|
39673
|
+
* API Options
|
|
39674
|
+
*
|
|
39675
|
+
* */
|
|
39676
|
+
/**
|
|
39677
|
+
* The area series type.
|
|
39678
|
+
*
|
|
39679
|
+
* @sample {highcharts} highcharts/demo/area-basic/
|
|
39680
|
+
* Area chart
|
|
39681
|
+
* @sample {highstock} stock/demo/area/
|
|
39682
|
+
* Area chart
|
|
39683
|
+
*
|
|
39684
|
+
* @extends plotOptions.line
|
|
39685
|
+
* @excluding useOhlcData
|
|
39686
|
+
* @product highcharts highstock
|
|
39687
|
+
* @optionparent plotOptions.area
|
|
39688
|
+
*/
|
|
39689
|
+
const AreaSeriesDefaults = {
|
|
39690
|
+
/**
|
|
39691
|
+
* @see [fillColor](#plotOptions.area.fillColor)
|
|
39692
|
+
* @see [fillOpacity](#plotOptions.area.fillOpacity)
|
|
39693
|
+
*
|
|
39694
|
+
* @apioption plotOptions.area.color
|
|
39695
|
+
*/
|
|
39696
|
+
/**
|
|
39697
|
+
* Fill color or gradient for the area. When `undefined`, the series'
|
|
39698
|
+
* `color` is used with the series' `fillOpacity`.
|
|
39699
|
+
*
|
|
39700
|
+
* In styled mode, the fill color can be set with the `.highcharts-area`
|
|
39701
|
+
* class name.
|
|
39702
|
+
*
|
|
39703
|
+
* @see [color](#plotOptions.area.color)
|
|
39704
|
+
* @see [fillOpacity](#plotOptions.area.fillOpacity)
|
|
39705
|
+
*
|
|
39706
|
+
* @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/
|
|
39707
|
+
* Undefined by default
|
|
39708
|
+
* @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/
|
|
39709
|
+
* Gradient
|
|
39710
|
+
*
|
|
39711
|
+
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
39712
|
+
* @product highcharts highstock
|
|
39713
|
+
* @apioption plotOptions.area.fillColor
|
|
39714
|
+
*/
|
|
39715
|
+
/**
|
|
39716
|
+
* Fill opacity for the area. When you set an explicit `fillColor`,
|
|
39717
|
+
* the `fillOpacity` is not applied. Instead, you should define the
|
|
39718
|
+
* opacity in the `fillColor` with an rgba color definition. The
|
|
39719
|
+
* `fillOpacity` setting, also the default setting, overrides the alpha
|
|
39720
|
+
* component of the `color` setting.
|
|
39721
|
+
*
|
|
39722
|
+
* In styled mode, the fill opacity can be set with the
|
|
39723
|
+
* `.highcharts-area` class name.
|
|
39724
|
+
*
|
|
39725
|
+
* @see [color](#plotOptions.area.color)
|
|
39726
|
+
* @see [fillColor](#plotOptions.area.fillColor)
|
|
39727
|
+
*
|
|
39728
|
+
* @sample {highcharts} highcharts/plotoptions/area-fillopacity/
|
|
39729
|
+
* Automatic fill color and fill opacity of 0.1
|
|
39730
|
+
*
|
|
39731
|
+
* @type {number}
|
|
39732
|
+
* @default {highcharts} 0.75
|
|
39733
|
+
* @default {highstock} 0.75
|
|
39734
|
+
* @product highcharts highstock
|
|
39735
|
+
* @apioption plotOptions.area.fillOpacity
|
|
39736
|
+
*/
|
|
39737
|
+
/**
|
|
39738
|
+
* A separate color for the graph line. By default the line takes the
|
|
39739
|
+
* `color` of the series, but the lineColor setting allows setting a
|
|
39740
|
+
* separate color for the line without altering the `fillColor`.
|
|
39741
|
+
*
|
|
39742
|
+
* In styled mode, the line stroke can be set with the
|
|
39743
|
+
* `.highcharts-graph` class name.
|
|
39744
|
+
*
|
|
39745
|
+
* @sample {highcharts} highcharts/plotoptions/area-linecolor/
|
|
39746
|
+
* Dark gray line
|
|
39747
|
+
*
|
|
39748
|
+
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
39749
|
+
* @product highcharts highstock
|
|
39750
|
+
* @apioption plotOptions.area.lineColor
|
|
39751
|
+
*/
|
|
39752
|
+
/**
|
|
39753
|
+
* A separate color for the negative part of the area. Note that `zones`
|
|
39754
|
+
* takes precedence over the negative fill color.
|
|
39755
|
+
*
|
|
39756
|
+
* In styled mode, a negative color is set with the
|
|
39757
|
+
* `.highcharts-negative` class name.
|
|
39758
|
+
*
|
|
39759
|
+
* @see [negativeColor](#plotOptions.area.negativeColor)
|
|
39760
|
+
*
|
|
39761
|
+
* @sample {highcharts} highcharts/css/series-negative-color/
|
|
39762
|
+
* Negative color in styled mode
|
|
39763
|
+
*
|
|
39764
|
+
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
39765
|
+
* @since 3.0
|
|
39766
|
+
* @product highcharts
|
|
39767
|
+
* @apioption plotOptions.area.negativeFillColor
|
|
39768
|
+
*/
|
|
39769
|
+
/**
|
|
39770
|
+
* Whether the whole area or just the line should respond to mouseover
|
|
39771
|
+
* tooltips and other mouse or touch events.
|
|
39772
|
+
*
|
|
39773
|
+
* @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/
|
|
39774
|
+
* Display the tooltip when the area is hovered
|
|
39775
|
+
*
|
|
39776
|
+
* @type {boolean}
|
|
39777
|
+
* @default false
|
|
39778
|
+
* @since 1.1.6
|
|
39779
|
+
* @product highcharts highstock
|
|
39780
|
+
* @apioption plotOptions.area.trackByArea
|
|
39781
|
+
*/
|
|
39782
|
+
/**
|
|
39783
|
+
* The Y axis value to serve as the base for the area, for
|
|
39784
|
+
* distinguishing between values above and below a threshold. The area
|
|
39785
|
+
* between the graph and the threshold is filled.
|
|
39786
|
+
*
|
|
39787
|
+
* * If a number is given, the Y axis will scale to the threshold.
|
|
39788
|
+
* * If `null`, the scaling behaves like a line series with fill between
|
|
39789
|
+
* the graph and the Y axis minimum.
|
|
39790
|
+
* * If `Infinity` or `-Infinity`, the area between the graph and the
|
|
39791
|
+
* corresponding Y axis extreme is filled (since v6.1.0).
|
|
39792
|
+
*
|
|
39793
|
+
* @sample {highcharts} highcharts/plotoptions/area-threshold/
|
|
39794
|
+
* A threshold of 100
|
|
39795
|
+
* @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/
|
|
39796
|
+
* A threshold of Infinity
|
|
39797
|
+
*
|
|
39798
|
+
* @type {number|null}
|
|
39799
|
+
* @since 2.0
|
|
39800
|
+
* @product highcharts highstock
|
|
39801
|
+
*/
|
|
39802
|
+
threshold: 0,
|
|
39803
|
+
legendSymbol: 'areaMarker'
|
|
39804
|
+
};
|
|
39805
|
+
/**
|
|
39806
|
+
* A `area` series. If the [type](#series.area.type) option is not
|
|
39807
|
+
* specified, it is inherited from [chart.type](#chart.type).
|
|
39808
|
+
*
|
|
39809
|
+
* @extends series,plotOptions.area
|
|
39810
|
+
* @excluding dataParser, dataURL, useOhlcData
|
|
39811
|
+
* @product highcharts highstock
|
|
39812
|
+
* @apioption series.area
|
|
39813
|
+
*/
|
|
39814
|
+
/**
|
|
39815
|
+
* @see [fillColor](#series.area.fillColor)
|
|
39816
|
+
* @see [fillOpacity](#series.area.fillOpacity)
|
|
39817
|
+
*
|
|
39818
|
+
* @apioption series.area.color
|
|
39819
|
+
*/
|
|
39820
|
+
/**
|
|
39821
|
+
* An array of data points for the series. For the `area` series type,
|
|
39822
|
+
* points can be given in the following ways:
|
|
39823
|
+
*
|
|
39824
|
+
* 1. An array of numerical values. In this case, the numerical values will be
|
|
39825
|
+
* interpreted as `y` options. The `x` values will be automatically
|
|
39826
|
+
* calculated, either starting at 0 and incremented by 1, or from
|
|
39827
|
+
* `pointStart` * and `pointInterval` given in the series options. If the
|
|
39828
|
+
* axis has categories, these will be used. Example:
|
|
39829
|
+
* ```js
|
|
39830
|
+
* data: [0, 5, 3, 5]
|
|
39831
|
+
* ```
|
|
39832
|
+
*
|
|
39833
|
+
* 2. An array of arrays with 2 values. In this case, the values correspond to
|
|
39834
|
+
* `x,y`. If the first value is a string, it is applied as the name of the
|
|
39835
|
+
* point, and the `x` value is inferred.
|
|
39836
|
+
* ```js
|
|
39837
|
+
* data: [
|
|
39838
|
+
* [0, 9],
|
|
39839
|
+
* [1, 7],
|
|
39840
|
+
* [2, 6]
|
|
39841
|
+
* ]
|
|
39842
|
+
* ```
|
|
39843
|
+
*
|
|
39844
|
+
* 3. An array of objects with named values. The following snippet shows only a
|
|
39845
|
+
* few settings, see the complete options set below. If the total number of
|
|
39846
|
+
* data points exceeds the series'
|
|
39847
|
+
* [turboThreshold](#series.area.turboThreshold), this option is not
|
|
39848
|
+
* available.
|
|
39849
|
+
* ```js
|
|
39850
|
+
* data: [{
|
|
39851
|
+
* x: 1,
|
|
39852
|
+
* y: 9,
|
|
39853
|
+
* name: "Point2",
|
|
39854
|
+
* color: "#00FF00"
|
|
39855
|
+
* }, {
|
|
39856
|
+
* x: 1,
|
|
39857
|
+
* y: 6,
|
|
39858
|
+
* name: "Point1",
|
|
39859
|
+
* color: "#FF00FF"
|
|
39860
|
+
* }]
|
|
39861
|
+
* ```
|
|
39862
|
+
*
|
|
39863
|
+
* @sample {highcharts} highcharts/chart/reflow-true/
|
|
39864
|
+
* Numerical values
|
|
39865
|
+
* @sample {highcharts} highcharts/series/data-array-of-arrays/
|
|
39866
|
+
* Arrays of numeric x and y
|
|
39867
|
+
* @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/
|
|
39868
|
+
* Arrays of datetime x and y
|
|
39869
|
+
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
39870
|
+
* Arrays of point.name and y
|
|
39871
|
+
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
39872
|
+
* Config objects
|
|
39873
|
+
*
|
|
39874
|
+
* @type {Array<number|Array<(number|string),(number|null)>|null|*>}
|
|
39875
|
+
* @extends series.line.data
|
|
39876
|
+
* @product highcharts highstock
|
|
39877
|
+
* @apioption series.area.data
|
|
39878
|
+
*/
|
|
39879
|
+
/**
|
|
39880
|
+
* @see [color](#series.area.color)
|
|
39881
|
+
* @see [fillOpacity](#series.area.fillOpacity)
|
|
39882
|
+
*
|
|
39883
|
+
* @apioption series.area.fillColor
|
|
39884
|
+
*/
|
|
39885
|
+
/**
|
|
39886
|
+
* @see [color](#series.area.color)
|
|
39887
|
+
* @see [fillColor](#series.area.fillColor)
|
|
39888
|
+
*
|
|
39889
|
+
* @default {highcharts} 0.75
|
|
39890
|
+
* @default {highstock} 0.75
|
|
39891
|
+
* @apioption series.area.fillOpacity
|
|
39892
|
+
*/
|
|
39893
|
+
''; // Adds doclets above to transpiled
|
|
39894
|
+
/* *
|
|
39895
|
+
*
|
|
39896
|
+
* Default Export
|
|
39897
|
+
*
|
|
39898
|
+
* */
|
|
39899
|
+
|
|
39900
|
+
return AreaSeriesDefaults;
|
|
39901
|
+
});
|
|
39902
|
+
_registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Series/Area/AreaSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (AreaSeriesDefaults, SeriesRegistry, U) {
|
|
39557
39903
|
/* *
|
|
39558
39904
|
*
|
|
39559
39905
|
* (c) 2010-2024 Torstein Honsi
|
|
@@ -39866,134 +40212,7 @@
|
|
|
39866
40212
|
* Static Properties
|
|
39867
40213
|
*
|
|
39868
40214
|
* */
|
|
39869
|
-
|
|
39870
|
-
* The area series type.
|
|
39871
|
-
*
|
|
39872
|
-
* @sample {highcharts} highcharts/demo/area-basic/
|
|
39873
|
-
* Area chart
|
|
39874
|
-
* @sample {highstock} stock/demo/area/
|
|
39875
|
-
* Area chart
|
|
39876
|
-
*
|
|
39877
|
-
* @extends plotOptions.line
|
|
39878
|
-
* @excluding useOhlcData
|
|
39879
|
-
* @product highcharts highstock
|
|
39880
|
-
* @optionparent plotOptions.area
|
|
39881
|
-
*/
|
|
39882
|
-
AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {
|
|
39883
|
-
/**
|
|
39884
|
-
* @see [fillColor](#plotOptions.area.fillColor)
|
|
39885
|
-
* @see [fillOpacity](#plotOptions.area.fillOpacity)
|
|
39886
|
-
*
|
|
39887
|
-
* @apioption plotOptions.area.color
|
|
39888
|
-
*/
|
|
39889
|
-
/**
|
|
39890
|
-
* Fill color or gradient for the area. When `undefined`, the series'
|
|
39891
|
-
* `color` is used with the series' `fillOpacity`.
|
|
39892
|
-
*
|
|
39893
|
-
* In styled mode, the fill color can be set with the `.highcharts-area`
|
|
39894
|
-
* class name.
|
|
39895
|
-
*
|
|
39896
|
-
* @see [color](#plotOptions.area.color)
|
|
39897
|
-
* @see [fillOpacity](#plotOptions.area.fillOpacity)
|
|
39898
|
-
*
|
|
39899
|
-
* @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/
|
|
39900
|
-
* Undefined by default
|
|
39901
|
-
* @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/
|
|
39902
|
-
* Gradient
|
|
39903
|
-
*
|
|
39904
|
-
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
39905
|
-
* @product highcharts highstock
|
|
39906
|
-
* @apioption plotOptions.area.fillColor
|
|
39907
|
-
*/
|
|
39908
|
-
/**
|
|
39909
|
-
* Fill opacity for the area. When you set an explicit `fillColor`,
|
|
39910
|
-
* the `fillOpacity` is not applied. Instead, you should define the
|
|
39911
|
-
* opacity in the `fillColor` with an rgba color definition. The
|
|
39912
|
-
* `fillOpacity` setting, also the default setting, overrides the alpha
|
|
39913
|
-
* component of the `color` setting.
|
|
39914
|
-
*
|
|
39915
|
-
* In styled mode, the fill opacity can be set with the
|
|
39916
|
-
* `.highcharts-area` class name.
|
|
39917
|
-
*
|
|
39918
|
-
* @see [color](#plotOptions.area.color)
|
|
39919
|
-
* @see [fillColor](#plotOptions.area.fillColor)
|
|
39920
|
-
*
|
|
39921
|
-
* @sample {highcharts} highcharts/plotoptions/area-fillopacity/
|
|
39922
|
-
* Automatic fill color and fill opacity of 0.1
|
|
39923
|
-
*
|
|
39924
|
-
* @type {number}
|
|
39925
|
-
* @default {highcharts} 0.75
|
|
39926
|
-
* @default {highstock} 0.75
|
|
39927
|
-
* @product highcharts highstock
|
|
39928
|
-
* @apioption plotOptions.area.fillOpacity
|
|
39929
|
-
*/
|
|
39930
|
-
/**
|
|
39931
|
-
* A separate color for the graph line. By default the line takes the
|
|
39932
|
-
* `color` of the series, but the lineColor setting allows setting a
|
|
39933
|
-
* separate color for the line without altering the `fillColor`.
|
|
39934
|
-
*
|
|
39935
|
-
* In styled mode, the line stroke can be set with the
|
|
39936
|
-
* `.highcharts-graph` class name.
|
|
39937
|
-
*
|
|
39938
|
-
* @sample {highcharts} highcharts/plotoptions/area-linecolor/
|
|
39939
|
-
* Dark gray line
|
|
39940
|
-
*
|
|
39941
|
-
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
39942
|
-
* @product highcharts highstock
|
|
39943
|
-
* @apioption plotOptions.area.lineColor
|
|
39944
|
-
*/
|
|
39945
|
-
/**
|
|
39946
|
-
* A separate color for the negative part of the area.
|
|
39947
|
-
*
|
|
39948
|
-
* In styled mode, a negative color is set with the
|
|
39949
|
-
* `.highcharts-negative` class name.
|
|
39950
|
-
*
|
|
39951
|
-
* @see [negativeColor](#plotOptions.area.negativeColor)
|
|
39952
|
-
*
|
|
39953
|
-
* @sample {highcharts} highcharts/css/series-negative-color/
|
|
39954
|
-
* Negative color in styled mode
|
|
39955
|
-
*
|
|
39956
|
-
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
39957
|
-
* @since 3.0
|
|
39958
|
-
* @product highcharts
|
|
39959
|
-
* @apioption plotOptions.area.negativeFillColor
|
|
39960
|
-
*/
|
|
39961
|
-
/**
|
|
39962
|
-
* Whether the whole area or just the line should respond to mouseover
|
|
39963
|
-
* tooltips and other mouse or touch events.
|
|
39964
|
-
*
|
|
39965
|
-
* @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/
|
|
39966
|
-
* Display the tooltip when the area is hovered
|
|
39967
|
-
*
|
|
39968
|
-
* @type {boolean}
|
|
39969
|
-
* @default false
|
|
39970
|
-
* @since 1.1.6
|
|
39971
|
-
* @product highcharts highstock
|
|
39972
|
-
* @apioption plotOptions.area.trackByArea
|
|
39973
|
-
*/
|
|
39974
|
-
/**
|
|
39975
|
-
* The Y axis value to serve as the base for the area, for
|
|
39976
|
-
* distinguishing between values above and below a threshold. The area
|
|
39977
|
-
* between the graph and the threshold is filled.
|
|
39978
|
-
*
|
|
39979
|
-
* * If a number is given, the Y axis will scale to the threshold.
|
|
39980
|
-
* * If `null`, the scaling behaves like a line series with fill between
|
|
39981
|
-
* the graph and the Y axis minimum.
|
|
39982
|
-
* * If `Infinity` or `-Infinity`, the area between the graph and the
|
|
39983
|
-
* corresponding Y axis extreme is filled (since v6.1.0).
|
|
39984
|
-
*
|
|
39985
|
-
* @sample {highcharts} highcharts/plotoptions/area-threshold/
|
|
39986
|
-
* A threshold of 100
|
|
39987
|
-
* @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/
|
|
39988
|
-
* A threshold of Infinity
|
|
39989
|
-
*
|
|
39990
|
-
* @type {number|null}
|
|
39991
|
-
* @since 2.0
|
|
39992
|
-
* @product highcharts highstock
|
|
39993
|
-
*/
|
|
39994
|
-
threshold: 0,
|
|
39995
|
-
legendSymbol: 'areaMarker'
|
|
39996
|
-
});
|
|
40215
|
+
AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, AreaSeriesDefaults);
|
|
39997
40216
|
extend(AreaSeries.prototype, {
|
|
39998
40217
|
singleStacks: false
|
|
39999
40218
|
});
|
|
@@ -40003,100 +40222,6 @@
|
|
|
40003
40222
|
* Default Export
|
|
40004
40223
|
*
|
|
40005
40224
|
* */
|
|
40006
|
-
/* *
|
|
40007
|
-
*
|
|
40008
|
-
* API Options
|
|
40009
|
-
*
|
|
40010
|
-
* */
|
|
40011
|
-
/**
|
|
40012
|
-
* A `area` series. If the [type](#series.area.type) option is not
|
|
40013
|
-
* specified, it is inherited from [chart.type](#chart.type).
|
|
40014
|
-
*
|
|
40015
|
-
* @extends series,plotOptions.area
|
|
40016
|
-
* @excluding dataParser, dataURL, useOhlcData
|
|
40017
|
-
* @product highcharts highstock
|
|
40018
|
-
* @apioption series.area
|
|
40019
|
-
*/
|
|
40020
|
-
/**
|
|
40021
|
-
* @see [fillColor](#series.area.fillColor)
|
|
40022
|
-
* @see [fillOpacity](#series.area.fillOpacity)
|
|
40023
|
-
*
|
|
40024
|
-
* @apioption series.area.color
|
|
40025
|
-
*/
|
|
40026
|
-
/**
|
|
40027
|
-
* An array of data points for the series. For the `area` series type,
|
|
40028
|
-
* points can be given in the following ways:
|
|
40029
|
-
*
|
|
40030
|
-
* 1. An array of numerical values. In this case, the numerical values will be
|
|
40031
|
-
* interpreted as `y` options. The `x` values will be automatically
|
|
40032
|
-
* calculated, either starting at 0 and incremented by 1, or from
|
|
40033
|
-
* `pointStart` * and `pointInterval` given in the series options. If the
|
|
40034
|
-
* axis has categories, these will be used. Example:
|
|
40035
|
-
* ```js
|
|
40036
|
-
* data: [0, 5, 3, 5]
|
|
40037
|
-
* ```
|
|
40038
|
-
*
|
|
40039
|
-
* 2. An array of arrays with 2 values. In this case, the values correspond to
|
|
40040
|
-
* `x,y`. If the first value is a string, it is applied as the name of the
|
|
40041
|
-
* point, and the `x` value is inferred.
|
|
40042
|
-
* ```js
|
|
40043
|
-
* data: [
|
|
40044
|
-
* [0, 9],
|
|
40045
|
-
* [1, 7],
|
|
40046
|
-
* [2, 6]
|
|
40047
|
-
* ]
|
|
40048
|
-
* ```
|
|
40049
|
-
*
|
|
40050
|
-
* 3. An array of objects with named values. The following snippet shows only a
|
|
40051
|
-
* few settings, see the complete options set below. If the total number of
|
|
40052
|
-
* data points exceeds the series'
|
|
40053
|
-
* [turboThreshold](#series.area.turboThreshold), this option is not
|
|
40054
|
-
* available.
|
|
40055
|
-
* ```js
|
|
40056
|
-
* data: [{
|
|
40057
|
-
* x: 1,
|
|
40058
|
-
* y: 9,
|
|
40059
|
-
* name: "Point2",
|
|
40060
|
-
* color: "#00FF00"
|
|
40061
|
-
* }, {
|
|
40062
|
-
* x: 1,
|
|
40063
|
-
* y: 6,
|
|
40064
|
-
* name: "Point1",
|
|
40065
|
-
* color: "#FF00FF"
|
|
40066
|
-
* }]
|
|
40067
|
-
* ```
|
|
40068
|
-
*
|
|
40069
|
-
* @sample {highcharts} highcharts/chart/reflow-true/
|
|
40070
|
-
* Numerical values
|
|
40071
|
-
* @sample {highcharts} highcharts/series/data-array-of-arrays/
|
|
40072
|
-
* Arrays of numeric x and y
|
|
40073
|
-
* @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/
|
|
40074
|
-
* Arrays of datetime x and y
|
|
40075
|
-
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
40076
|
-
* Arrays of point.name and y
|
|
40077
|
-
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
40078
|
-
* Config objects
|
|
40079
|
-
*
|
|
40080
|
-
* @type {Array<number|Array<(number|string),(number|null)>|null|*>}
|
|
40081
|
-
* @extends series.line.data
|
|
40082
|
-
* @product highcharts highstock
|
|
40083
|
-
* @apioption series.area.data
|
|
40084
|
-
*/
|
|
40085
|
-
/**
|
|
40086
|
-
* @see [color](#series.area.color)
|
|
40087
|
-
* @see [fillOpacity](#series.area.fillOpacity)
|
|
40088
|
-
*
|
|
40089
|
-
* @apioption series.area.fillColor
|
|
40090
|
-
*/
|
|
40091
|
-
/**
|
|
40092
|
-
* @see [color](#series.area.color)
|
|
40093
|
-
* @see [fillColor](#series.area.fillColor)
|
|
40094
|
-
*
|
|
40095
|
-
* @default {highcharts} 0.75
|
|
40096
|
-
* @default {highstock} 0.75
|
|
40097
|
-
* @apioption series.area.fillOpacity
|
|
40098
|
-
*/
|
|
40099
|
-
''; // Adds doclets above to transpiled
|
|
40100
40225
|
|
|
40101
40226
|
return AreaSeries;
|
|
40102
40227
|
});
|
|
@@ -41055,7 +41180,7 @@
|
|
|
41055
41180
|
const { animObject } = A;
|
|
41056
41181
|
const { parse: color } = Color;
|
|
41057
41182
|
const { noop } = H;
|
|
41058
|
-
const { clamp, defined, extend, fireEvent, isArray, isNumber, merge, pick, objectEach } = U;
|
|
41183
|
+
const { clamp, crisp, defined, extend, fireEvent, isArray, isNumber, merge, pick, objectEach } = U;
|
|
41059
41184
|
/* *
|
|
41060
41185
|
*
|
|
41061
41186
|
* Class
|
|
@@ -41087,17 +41212,27 @@
|
|
|
41087
41212
|
* Whether to initialize the animation or run it
|
|
41088
41213
|
*/
|
|
41089
41214
|
animate(init) {
|
|
41090
|
-
const series = this, yAxis = this.yAxis, yAxisPos = yAxis.pos, options = series.options, inverted = this.chart
|
|
41215
|
+
const series = this, yAxis = this.yAxis, yAxisPos = yAxis.pos, reversed = yAxis.reversed, options = series.options, { clipOffset, inverted } = this.chart, attr = {}, translateProp = inverted ?
|
|
41091
41216
|
'translateX' :
|
|
41092
41217
|
'translateY';
|
|
41093
41218
|
let translateStart, translatedThreshold;
|
|
41094
|
-
if (init) {
|
|
41219
|
+
if (init && clipOffset) {
|
|
41095
41220
|
attr.scaleY = 0.001;
|
|
41096
41221
|
translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxisPos, yAxisPos + yAxis.len);
|
|
41097
41222
|
if (inverted) {
|
|
41223
|
+
// Make sure the columns don't cover the axis line during
|
|
41224
|
+
// entrance animation
|
|
41225
|
+
translatedThreshold += reversed ?
|
|
41226
|
+
-Math.floor(clipOffset[0]) :
|
|
41227
|
+
Math.ceil(clipOffset[2]);
|
|
41098
41228
|
attr.translateX = translatedThreshold - yAxis.len;
|
|
41099
41229
|
}
|
|
41100
41230
|
else {
|
|
41231
|
+
// Make sure the columns don't cover the axis line during
|
|
41232
|
+
// entrance animation
|
|
41233
|
+
translatedThreshold += reversed ?
|
|
41234
|
+
Math.ceil(clipOffset[0]) :
|
|
41235
|
+
-Math.floor(clipOffset[2]);
|
|
41101
41236
|
attr.translateY = translatedThreshold;
|
|
41102
41237
|
}
|
|
41103
41238
|
// Apply final clipping (used in Highcharts Stock) (#7083)
|
|
@@ -41217,31 +41352,19 @@
|
|
|
41217
41352
|
* @private
|
|
41218
41353
|
* @function Highcharts.seriesTypes.column#crispCol
|
|
41219
41354
|
*/
|
|
41220
|
-
crispCol(x, y,
|
|
41221
|
-
const borderWidth = this.borderWidth,
|
|
41222
|
-
|
|
41355
|
+
crispCol(x, y, width, height) {
|
|
41356
|
+
const borderWidth = this.borderWidth, inverted = this.chart.inverted, bottom = crisp(y + height, borderWidth, inverted);
|
|
41357
|
+
// Vertical
|
|
41358
|
+
y = crisp(y, borderWidth, inverted);
|
|
41359
|
+
height = bottom - y;
|
|
41223
41360
|
// Horizontal. We need to first compute the exact right edge, then
|
|
41224
41361
|
// round it and compute the width from there.
|
|
41225
41362
|
if (this.options.crisp) {
|
|
41226
|
-
right =
|
|
41227
|
-
x =
|
|
41228
|
-
|
|
41363
|
+
const right = crisp(x + width, borderWidth);
|
|
41364
|
+
x = crisp(x, borderWidth);
|
|
41365
|
+
width = right - x;
|
|
41229
41366
|
}
|
|
41230
|
-
|
|
41231
|
-
const bottom = Math.round(y + h) + yCrisp, fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656
|
|
41232
|
-
y = Math.round(y) + yCrisp;
|
|
41233
|
-
h = bottom - y;
|
|
41234
|
-
// Top edges are exceptions
|
|
41235
|
-
if (fromTop && h) { // #5146
|
|
41236
|
-
y -= 1;
|
|
41237
|
-
h += 1;
|
|
41238
|
-
}
|
|
41239
|
-
return {
|
|
41240
|
-
x: x,
|
|
41241
|
-
y: y,
|
|
41242
|
-
width: w,
|
|
41243
|
-
height: h
|
|
41244
|
-
};
|
|
41367
|
+
return { x, y, width, height };
|
|
41245
41368
|
}
|
|
41246
41369
|
/**
|
|
41247
41370
|
* Adjust for missing columns, according to the `centerInCategory`
|
|
@@ -41323,14 +41446,11 @@
|
|
|
41323
41446
|
translate() {
|
|
41324
41447
|
const series = this, chart = series.chart, options = series.options, dense = series.dense =
|
|
41325
41448
|
series.closestPointRange * series.xAxis.transA < 2, borderWidth = series.borderWidth = pick(options.borderWidth, dense ? 0 : 1 // #3635
|
|
41326
|
-
), xAxis = series.xAxis, yAxis = series.yAxis, threshold = options.threshold, minPointLength = pick(options.minPointLength, 5), metrics = series.getColumnMetrics(), seriesPointWidth = metrics.width, seriesXOffset = series.pointXOffset = metrics.offset, dataMin = series.dataMin, dataMax = series.dataMax
|
|
41449
|
+
), xAxis = series.xAxis, yAxis = series.yAxis, threshold = options.threshold, minPointLength = pick(options.minPointLength, 5), metrics = series.getColumnMetrics(), seriesPointWidth = metrics.width, seriesXOffset = series.pointXOffset = metrics.offset, dataMin = series.dataMin, dataMax = series.dataMax, translatedThreshold = series.translatedThreshold =
|
|
41450
|
+
yAxis.getThreshold(threshold);
|
|
41327
41451
|
// Postprocessed for border width
|
|
41328
41452
|
let seriesBarW = series.barW =
|
|
41329
|
-
Math.max(seriesPointWidth, 1 + 2 * borderWidth)
|
|
41330
|
-
yAxis.getThreshold(threshold);
|
|
41331
|
-
if (chart.inverted) {
|
|
41332
|
-
translatedThreshold -= 0.5; // #3355
|
|
41333
|
-
}
|
|
41453
|
+
Math.max(seriesPointWidth, 1 + 2 * borderWidth);
|
|
41334
41454
|
// When the pointPadding is 0, we want the columns to be packed
|
|
41335
41455
|
// tightly, so we allow individual columns to have individual sizes.
|
|
41336
41456
|
// When pointPadding is greater, we strive for equal-width columns
|
|
@@ -41710,7 +41830,7 @@
|
|
|
41710
41830
|
* @private
|
|
41711
41831
|
*/
|
|
41712
41832
|
function alignDataLabel(point, dataLabel, options, alignTo, isNew) {
|
|
41713
|
-
const series = this, chart = this
|
|
41833
|
+
const series = this, { chart, enabledDataSorting } = this, inverted = this.isCartesian && chart.inverted, plotX = point.plotX, plotY = point.plotY, rotation = options.rotation || 0, isInsidePlot = defined(plotX) &&
|
|
41714
41834
|
defined(plotY) &&
|
|
41715
41835
|
chart.isInsidePlot(plotX, Math.round(plotY), {
|
|
41716
41836
|
inverted,
|
|
@@ -41730,10 +41850,10 @@
|
|
|
41730
41850
|
(enabledDataSorting && !justify) ||
|
|
41731
41851
|
isInsidePlot ||
|
|
41732
41852
|
(
|
|
41733
|
-
// If the data label is inside the align box, it is
|
|
41734
|
-
//
|
|
41735
|
-
//
|
|
41736
|
-
//
|
|
41853
|
+
// If the data label is inside the align box, it is enough
|
|
41854
|
+
// that parts of the align box is inside the plot area
|
|
41855
|
+
// (#12370). When stacking, it is always inside regardless
|
|
41856
|
+
// of the option (#15148).
|
|
41737
41857
|
pick(options.inside, !!this.options.stacking) &&
|
|
41738
41858
|
alignTo &&
|
|
41739
41859
|
chart.isInsidePlot(plotX, inverted ?
|
|
@@ -41759,6 +41879,11 @@
|
|
|
41759
41879
|
width: 0,
|
|
41760
41880
|
height: 0
|
|
41761
41881
|
}, alignTo || {});
|
|
41882
|
+
// Align to plot edges
|
|
41883
|
+
if (options.alignTo === 'plotEdges' && series.isCartesian) {
|
|
41884
|
+
alignTo[inverted ? 'x' : 'y'] = 0;
|
|
41885
|
+
alignTo[inverted ? 'width' : 'height'] = this.yAxis?.len || 0;
|
|
41886
|
+
}
|
|
41762
41887
|
// Add the text size for alignment calculation
|
|
41763
41888
|
extend(options, {
|
|
41764
41889
|
width: bBox.width,
|
|
@@ -42096,10 +42221,12 @@
|
|
|
42096
42221
|
* @private
|
|
42097
42222
|
*/
|
|
42098
42223
|
function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {
|
|
42099
|
-
const chart = this.chart, align = options.align, verticalAlign = options.verticalAlign, padding = dataLabel.box ? 0 : (dataLabel.padding || 0)
|
|
42224
|
+
const chart = this.chart, align = options.align, verticalAlign = options.verticalAlign, padding = dataLabel.box ? 0 : (dataLabel.padding || 0), horizontalAxis = chart.inverted ? this.yAxis : this.xAxis, horizontalAxisShift = horizontalAxis ?
|
|
42225
|
+
horizontalAxis.left - chart.plotLeft : 0, verticalAxis = chart.inverted ? this.xAxis : this.yAxis, verticalAxisShift = verticalAxis ?
|
|
42226
|
+
verticalAxis.top - chart.plotTop : 0;
|
|
42100
42227
|
let { x = 0, y = 0 } = options, off, justified;
|
|
42101
42228
|
// Off left
|
|
42102
|
-
off = (alignAttr.x || 0) + padding;
|
|
42229
|
+
off = (alignAttr.x || 0) + padding + horizontalAxisShift;
|
|
42103
42230
|
if (off < 0) {
|
|
42104
42231
|
if (align === 'right' && x >= 0) {
|
|
42105
42232
|
options.align = 'left';
|
|
@@ -42111,7 +42238,7 @@
|
|
|
42111
42238
|
justified = true;
|
|
42112
42239
|
}
|
|
42113
42240
|
// Off right
|
|
42114
|
-
off = (alignAttr.x || 0) + bBox.width - padding;
|
|
42241
|
+
off = (alignAttr.x || 0) + bBox.width - padding + horizontalAxisShift;
|
|
42115
42242
|
if (off > chart.plotWidth) {
|
|
42116
42243
|
if (align === 'left' && x <= 0) {
|
|
42117
42244
|
options.align = 'right';
|
|
@@ -42123,7 +42250,7 @@
|
|
|
42123
42250
|
justified = true;
|
|
42124
42251
|
}
|
|
42125
42252
|
// Off top
|
|
42126
|
-
off = alignAttr.y + padding;
|
|
42253
|
+
off = alignAttr.y + padding + verticalAxisShift;
|
|
42127
42254
|
if (off < 0) {
|
|
42128
42255
|
if (verticalAlign === 'bottom' && y >= 0) {
|
|
42129
42256
|
options.verticalAlign = 'top';
|
|
@@ -42135,7 +42262,7 @@
|
|
|
42135
42262
|
justified = true;
|
|
42136
42263
|
}
|
|
42137
42264
|
// Off bottom
|
|
42138
|
-
off = (alignAttr.y || 0) + bBox.height - padding;
|
|
42265
|
+
off = (alignAttr.y || 0) + bBox.height - padding + verticalAxisShift;
|
|
42139
42266
|
if (off > chart.plotHeight) {
|
|
42140
42267
|
if (verticalAlign === 'top' && y <= 0) {
|
|
42141
42268
|
options.verticalAlign = 'bottom';
|
|
@@ -42315,7 +42442,7 @@
|
|
|
42315
42442
|
// If parts of the box overshoots outside the plot area, modify
|
|
42316
42443
|
// the box to center the label inside
|
|
42317
42444
|
const overshoot = alignTo.y + alignTo.height - yLen;
|
|
42318
|
-
if (overshoot > 0 && overshoot < alignTo.height) {
|
|
42445
|
+
if (overshoot > 0 && overshoot < alignTo.height - 1) {
|
|
42319
42446
|
alignTo.height -= overshoot;
|
|
42320
42447
|
}
|
|
42321
42448
|
}
|
|
@@ -46275,7 +46402,7 @@
|
|
|
46275
46402
|
* Percentage width and pixel height for color axis
|
|
46276
46403
|
*
|
|
46277
46404
|
* @type {number|string}
|
|
46278
|
-
* @since
|
|
46405
|
+
* @since 11.3.0
|
|
46279
46406
|
* @product highcharts highstock highmaps
|
|
46280
46407
|
* @apioption colorAxis.width
|
|
46281
46408
|
*/
|
|
@@ -46290,7 +46417,7 @@
|
|
|
46290
46417
|
* Percentage width and pixel height for color axis
|
|
46291
46418
|
*
|
|
46292
46419
|
* @type {number|string}
|
|
46293
|
-
* @since
|
|
46420
|
+
* @since 11.3.0
|
|
46294
46421
|
* @product highcharts highstock highmaps
|
|
46295
46422
|
* @apioption colorAxis.height
|
|
46296
46423
|
*/
|
|
@@ -46983,7 +47110,7 @@
|
|
|
46983
47110
|
* @private
|
|
46984
47111
|
*/
|
|
46985
47112
|
getSize() {
|
|
46986
|
-
const axis = this, { chart, horiz } = axis, {
|
|
47113
|
+
const axis = this, { chart, horiz } = axis, { height: colorAxisHeight, width: colorAxisWidth } = axis.options, { legend: legendOptions } = chart.options, width = pick(defined(colorAxisWidth) ?
|
|
46987
47114
|
relativeLength(colorAxisWidth, chart.chartWidth) : void 0, legendOptions?.symbolWidth, horiz ? ColorAxis.defaultLegendLength : 12), height = pick(defined(colorAxisHeight) ?
|
|
46988
47115
|
relativeLength(colorAxisHeight, chart.chartHeight) : void 0, legendOptions?.symbolHeight, horiz ? 12 : ColorAxis.defaultLegendLength);
|
|
46989
47116
|
return {
|
|
@@ -47598,7 +47725,7 @@
|
|
|
47598
47725
|
this.handler.call(chart, e);
|
|
47599
47726
|
stopEvent(e); // Stop default click event (#4444)
|
|
47600
47727
|
};
|
|
47601
|
-
let navOptions = chart.options.mapNavigation
|
|
47728
|
+
let navOptions = chart.options.mapNavigation;
|
|
47602
47729
|
// Merge in new options in case of update, and register back to chart
|
|
47603
47730
|
// options.
|
|
47604
47731
|
if (options) {
|
|
@@ -47620,9 +47747,12 @@
|
|
|
47620
47747
|
}
|
|
47621
47748
|
objectEach(navOptions.buttons, (buttonOptions, n) => {
|
|
47622
47749
|
buttonOptions = merge(navOptions.buttonOptions, buttonOptions);
|
|
47750
|
+
const attr = {
|
|
47751
|
+
padding: buttonOptions.padding
|
|
47752
|
+
};
|
|
47623
47753
|
// Presentational
|
|
47624
47754
|
if (!chart.styledMode && buttonOptions.theme) {
|
|
47625
|
-
attr
|
|
47755
|
+
extend(attr, buttonOptions.theme);
|
|
47626
47756
|
attr.style = merge(buttonOptions.theme.style, buttonOptions.style // #3203
|
|
47627
47757
|
);
|
|
47628
47758
|
}
|
|
@@ -47640,7 +47770,6 @@
|
|
|
47640
47770
|
width,
|
|
47641
47771
|
height,
|
|
47642
47772
|
title: chart.options.lang[n],
|
|
47643
|
-
padding: buttonOptions.padding,
|
|
47644
47773
|
zIndex: 5
|
|
47645
47774
|
})
|
|
47646
47775
|
.add(mapNav.navButtonsGroup);
|
|
@@ -47777,7 +47906,7 @@
|
|
|
47777
47906
|
|
|
47778
47907
|
return MapNavigation;
|
|
47779
47908
|
});
|
|
47780
|
-
_registerModule(_modules, 'Series/ColorMapComposition.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {
|
|
47909
|
+
_registerModule(_modules, 'Series/ColorMapComposition.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, SVGElement, U) {
|
|
47781
47910
|
/* *
|
|
47782
47911
|
*
|
|
47783
47912
|
* (c) 2010-2024 Torstein Honsi
|
|
@@ -47834,11 +47963,34 @@
|
|
|
47834
47963
|
* @private
|
|
47835
47964
|
*/
|
|
47836
47965
|
function onPointAfterSetState(e) {
|
|
47837
|
-
const point = this;
|
|
47966
|
+
const point = this, series = point.series, renderer = series.chart.renderer;
|
|
47838
47967
|
if (point.moveToTopOnHover && point.graphic) {
|
|
47839
|
-
|
|
47840
|
-
|
|
47841
|
-
|
|
47968
|
+
if (!series.stateMarkerGraphic) {
|
|
47969
|
+
// Create a `use` element and add it to the end of the group,
|
|
47970
|
+
// which would make it appear on top of the other elements. This
|
|
47971
|
+
// deals with z-index without reordering DOM elements (#13049).
|
|
47972
|
+
series.stateMarkerGraphic = new SVGElement(renderer, 'use')
|
|
47973
|
+
.css({
|
|
47974
|
+
pointerEvents: 'none'
|
|
47975
|
+
})
|
|
47976
|
+
.add(point.graphic.parentGroup);
|
|
47977
|
+
}
|
|
47978
|
+
if (e?.state === 'hover') {
|
|
47979
|
+
// Give the graphic DOM element the same id as the Point
|
|
47980
|
+
// instance
|
|
47981
|
+
point.graphic.attr({
|
|
47982
|
+
id: this.id
|
|
47983
|
+
});
|
|
47984
|
+
series.stateMarkerGraphic.attr({
|
|
47985
|
+
href: `${renderer.url}#${this.id}`,
|
|
47986
|
+
visibility: 'visible'
|
|
47987
|
+
});
|
|
47988
|
+
}
|
|
47989
|
+
else {
|
|
47990
|
+
series.stateMarkerGraphic.attr({
|
|
47991
|
+
href: ''
|
|
47992
|
+
});
|
|
47993
|
+
}
|
|
47842
47994
|
}
|
|
47843
47995
|
}
|
|
47844
47996
|
/**
|
|
@@ -50233,7 +50385,7 @@
|
|
|
50233
50385
|
* operator, and preserves the distinction between -180 and 180.
|
|
50234
50386
|
* @private
|
|
50235
50387
|
*/
|
|
50236
|
-
|
|
50388
|
+
const wrapLon = (lon) => {
|
|
50237
50389
|
// Replacing the if's with while would increase the range, but make it prone
|
|
50238
50390
|
// to crashes on bad data
|
|
50239
50391
|
if (lon < -180) {
|
|
@@ -50243,7 +50395,20 @@
|
|
|
50243
50395
|
lon -= 360;
|
|
50244
50396
|
}
|
|
50245
50397
|
return lon;
|
|
50246
|
-
}
|
|
50398
|
+
};
|
|
50399
|
+
/**
|
|
50400
|
+
* Calculate the haversine of an angle.
|
|
50401
|
+
* @private
|
|
50402
|
+
*/
|
|
50403
|
+
const hav = (radians) => (1 - Math.cos(radians)) / 2;
|
|
50404
|
+
/**
|
|
50405
|
+
* Calculate the haversine of an angle from two coordinates.
|
|
50406
|
+
* @private
|
|
50407
|
+
*/
|
|
50408
|
+
const havFromCoords = (point1, point2) => {
|
|
50409
|
+
const cos = Math.cos, lat1 = point1[1] * deg2rad, lon1 = point1[0] * deg2rad, lat2 = point2[1] * deg2rad, lon2 = point2[0] * deg2rad, deltaLat = lat2 - lat1, deltaLon = lon2 - lon1, havFromCoords = hav(deltaLat) + cos(lat1) * cos(lat2) * hav(deltaLon);
|
|
50410
|
+
return havFromCoords;
|
|
50411
|
+
};
|
|
50247
50412
|
/* *
|
|
50248
50413
|
*
|
|
50249
50414
|
* Class
|
|
@@ -50263,14 +50428,19 @@
|
|
|
50263
50428
|
Projection.registry[name] = definition;
|
|
50264
50429
|
}
|
|
50265
50430
|
/**
|
|
50266
|
-
* Calculate the
|
|
50431
|
+
* Calculate the distance in meters between two given coordinates.
|
|
50267
50432
|
* @private
|
|
50268
50433
|
*/
|
|
50269
|
-
static
|
|
50270
|
-
const { atan2,
|
|
50271
|
-
|
|
50272
|
-
|
|
50273
|
-
|
|
50434
|
+
static distance(point1, point2) {
|
|
50435
|
+
const { atan2, sqrt } = Math, hav = havFromCoords(point1, point2), angularDistance = 2 * atan2(sqrt(hav), sqrt(1 - hav)), distance = angularDistance * 6371e3;
|
|
50436
|
+
return distance;
|
|
50437
|
+
}
|
|
50438
|
+
/**
|
|
50439
|
+
* Calculate the geodesic line string between two given coordinates.
|
|
50440
|
+
* @private
|
|
50441
|
+
*/
|
|
50442
|
+
static geodesic(point1, point2, inclusive, stepDistance = 500000) {
|
|
50443
|
+
const { atan2, cos, sin, sqrt } = Math, distance = Projection.distance, lat1 = point1[1] * deg2rad, lon1 = point1[0] * deg2rad, lat2 = point2[1] * deg2rad, lon2 = point2[0] * deg2rad, cosLat1CosLon1 = cos(lat1) * cos(lon1), cosLat2CosLon2 = cos(lat2) * cos(lon2), cosLat1SinLon1 = cos(lat1) * sin(lon1), cosLat2SinLon2 = cos(lat2) * sin(lon2), sinLat1 = sin(lat1), sinLat2 = sin(lat2), pointDistance = distance(point1, point2), angDistance = pointDistance / 6371e3, sinAng = sin(angDistance), jumps = Math.round(pointDistance / stepDistance), lineString = [];
|
|
50274
50444
|
if (inclusive) {
|
|
50275
50445
|
lineString.push(point1);
|
|
50276
50446
|
}
|
|
@@ -50278,7 +50448,8 @@
|
|
|
50278
50448
|
const step = 1 / jumps;
|
|
50279
50449
|
for (let fraction = step; fraction < 0.999; // Account for float errors
|
|
50280
50450
|
fraction += step) {
|
|
50281
|
-
|
|
50451
|
+
// Add intermediate point to lineString
|
|
50452
|
+
const A = sin((1 - fraction) * angDistance) / sinAng, B = sin(fraction * angDistance) / sinAng, x = A * cosLat1CosLon1 + B * cosLat2CosLon2, y = A * cosLat1SinLon1 + B * cosLat2SinLon2, z = A * sinLat1 + B * sinLat2, lat3 = atan2(z, sqrt(x * x + y * y)), lon3 = atan2(y, x);
|
|
50282
50453
|
lineString.push([lon3 / deg2rad, lat3 / deg2rad]);
|
|
50283
50454
|
}
|
|
50284
50455
|
}
|
|
@@ -50287,16 +50458,16 @@
|
|
|
50287
50458
|
}
|
|
50288
50459
|
return lineString;
|
|
50289
50460
|
}
|
|
50290
|
-
static
|
|
50461
|
+
static insertGeodesics(poly) {
|
|
50291
50462
|
let i = poly.length - 1;
|
|
50292
50463
|
while (i--) {
|
|
50293
50464
|
// Distance in degrees, either in lon or lat. Avoid heavy
|
|
50294
50465
|
// calculation of true distance.
|
|
50295
50466
|
const roughDistance = Math.max(Math.abs(poly[i][0] - poly[i + 1][0]), Math.abs(poly[i][1] - poly[i + 1][1]));
|
|
50296
50467
|
if (roughDistance > 10) {
|
|
50297
|
-
const
|
|
50298
|
-
if (
|
|
50299
|
-
poly.splice(i + 1, 0, ...
|
|
50468
|
+
const geodesic = Projection.geodesic(poly[i], poly[i + 1]);
|
|
50469
|
+
if (geodesic.length) {
|
|
50470
|
+
poly.splice(i + 1, 0, ...geodesic);
|
|
50300
50471
|
}
|
|
50301
50472
|
}
|
|
50302
50473
|
}
|
|
@@ -50491,9 +50662,9 @@
|
|
|
50491
50662
|
intersections[i].direction * floatCorrection);
|
|
50492
50663
|
const slice = poly.splice(index, intersections[i + 1].i - index,
|
|
50493
50664
|
// Add interpolated points close to the cut
|
|
50494
|
-
...Projection.
|
|
50665
|
+
...Projection.geodesic([lonPlus, intersections[i].lat], [lonPlus, intersections[i + 1].lat], true));
|
|
50495
50666
|
// Add interpolated points close to the cut
|
|
50496
|
-
slice.push(...Projection.
|
|
50667
|
+
slice.push(...Projection.geodesic([lonMinus, intersections[i + 1].lat], [lonMinus, intersections[i].lat], true));
|
|
50497
50668
|
polygons.push(slice);
|
|
50498
50669
|
i -= 2;
|
|
50499
50670
|
}
|
|
@@ -50508,7 +50679,7 @@
|
|
|
50508
50679
|
direction * floatCorrection);
|
|
50509
50680
|
const lon2 = wrapLon(antimeridian -
|
|
50510
50681
|
direction * floatCorrection);
|
|
50511
|
-
const polarSegment = Projection.
|
|
50682
|
+
const polarSegment = Projection.geodesic([lon1, lat], [lon1, polarLatitude], true);
|
|
50512
50683
|
// Circle around the pole point in order to make
|
|
50513
50684
|
// polygon clipping right. Without this, Antarctica
|
|
50514
50685
|
// would wrap the wrong way in an LLC projection
|
|
@@ -50516,7 +50687,7 @@
|
|
|
50516
50687
|
for (let lon = lon1 + 120 * direction; lon > -180 && lon < 180; lon += 120 * direction) {
|
|
50517
50688
|
polarSegment.push([lon, polarLatitude]);
|
|
50518
50689
|
}
|
|
50519
|
-
polarSegment.push(...Projection.
|
|
50690
|
+
polarSegment.push(...Projection.geodesic([lon2, polarLatitude], [lon2, polarIntersection.lat], true));
|
|
50520
50691
|
poly.splice(indexOf, 0, ...polarSegment);
|
|
50521
50692
|
break;
|
|
50522
50693
|
}
|
|
@@ -50605,7 +50776,7 @@
|
|
|
50605
50776
|
let polygons = [poly];
|
|
50606
50777
|
if (hasGeoProjection) {
|
|
50607
50778
|
// Insert great circles into long straight lines
|
|
50608
|
-
Projection.
|
|
50779
|
+
Projection.insertGeodesics(poly);
|
|
50609
50780
|
if (projectingToPlane) {
|
|
50610
50781
|
polygons = this.cutOnAntimeridian(poly, isPolygon);
|
|
50611
50782
|
}
|
|
@@ -50702,8 +50873,8 @@
|
|
|
50702
50873
|
// we may have to rewrite this to use the small
|
|
50703
50874
|
// circle related to the current lon0 and lat0.
|
|
50704
50875
|
if (isPolygon && hasGeoProjection) {
|
|
50705
|
-
const
|
|
50706
|
-
|
|
50876
|
+
const geodesic = Projection.geodesic(lastValidLonLat, lonLat);
|
|
50877
|
+
geodesic.forEach((lonLat) => pushToPath(postclip.forward(lonLat)));
|
|
50707
50878
|
// For lines, just jump over the gap
|
|
50708
50879
|
}
|
|
50709
50880
|
else {
|
|
@@ -50771,7 +50942,7 @@
|
|
|
50771
50942
|
const { composed } = H;
|
|
50772
50943
|
const { topo2geo } = GeoJSONComposition;
|
|
50773
50944
|
const { boundsFromPath, pointInPolygon } = MU;
|
|
50774
|
-
const { addEvent, clamp, fireEvent, isArray, isNumber, isObject, isString, merge, pick, pushUnique, relativeLength } = U;
|
|
50945
|
+
const { addEvent, clamp, crisp, fireEvent, isArray, isNumber, isObject, isString, merge, pick, pushUnique, relativeLength } = U;
|
|
50775
50946
|
/* *
|
|
50776
50947
|
*
|
|
50777
50948
|
* Constants
|
|
@@ -51248,7 +51419,7 @@
|
|
|
51248
51419
|
*
|
|
51249
51420
|
* @function Highcharts.MapView#recommendMapView
|
|
51250
51421
|
*
|
|
51251
|
-
* @since
|
|
51422
|
+
* @since 11.4.0
|
|
51252
51423
|
*
|
|
51253
51424
|
* @param {Highcharts.Chart} chart
|
|
51254
51425
|
* Chart object
|
|
@@ -51821,7 +51992,7 @@
|
|
|
51821
51992
|
'stroke-width': options.borderWidth
|
|
51822
51993
|
});
|
|
51823
51994
|
}
|
|
51824
|
-
const
|
|
51995
|
+
const strokeWidth = this.border.strokeWidth(), field = (options.relativeTo === 'mapBoundingBox' &&
|
|
51825
51996
|
mapView.getMapBBox()) || mapView.playingField;
|
|
51826
51997
|
const d = (borderPath.coordinates || []).reduce((d, lineString) => lineString.reduce((d, point, i) => {
|
|
51827
51998
|
let [x, y] = point;
|
|
@@ -51829,8 +52000,8 @@
|
|
|
51829
52000
|
x = chart.plotLeft + relativeLength(`${x}%`, field.width, field.x);
|
|
51830
52001
|
y = chart.plotTop + relativeLength(`${y}%`, field.height, field.y);
|
|
51831
52002
|
}
|
|
51832
|
-
x =
|
|
51833
|
-
y =
|
|
52003
|
+
x = crisp(x, strokeWidth);
|
|
52004
|
+
y = crisp(y, strokeWidth);
|
|
51834
52005
|
d.push(i === 0 ? ['M', x, y] : ['L', x, y]);
|
|
51835
52006
|
return d;
|
|
51836
52007
|
}, d), []);
|
|
@@ -52614,6 +52785,11 @@
|
|
|
52614
52785
|
fillColor: 'none',
|
|
52615
52786
|
legendSymbol: 'lineMarker'
|
|
52616
52787
|
};
|
|
52788
|
+
/* *
|
|
52789
|
+
*
|
|
52790
|
+
* Default Export
|
|
52791
|
+
*
|
|
52792
|
+
* */
|
|
52617
52793
|
/**
|
|
52618
52794
|
* A `mapline` series. If the [type](#series.mapline.type) option is
|
|
52619
52795
|
* not specified, it is inherited from [chart.type](#chart.type).
|
|
@@ -52692,11 +52868,7 @@
|
|
|
52692
52868
|
* @excluding borderWidth
|
|
52693
52869
|
* @apioption plotOptions.mapline.states.hover
|
|
52694
52870
|
*/
|
|
52695
|
-
|
|
52696
|
-
*
|
|
52697
|
-
* Default Export
|
|
52698
|
-
*
|
|
52699
|
-
* */
|
|
52871
|
+
(''); // Keeps doclets above in JS file
|
|
52700
52872
|
|
|
52701
52873
|
return MapLineSeriesDefaults;
|
|
52702
52874
|
});
|
|
@@ -52848,6 +53020,16 @@
|
|
|
52848
53020
|
},
|
|
52849
53021
|
legendSymbol: 'lineMarker'
|
|
52850
53022
|
};
|
|
53023
|
+
/* *
|
|
53024
|
+
*
|
|
53025
|
+
* Default Export
|
|
53026
|
+
*
|
|
53027
|
+
* */
|
|
53028
|
+
/* *
|
|
53029
|
+
*
|
|
53030
|
+
* API Options
|
|
53031
|
+
*
|
|
53032
|
+
* */
|
|
52851
53033
|
/**
|
|
52852
53034
|
* A `mappoint` series. If the [type](#series.mappoint.type) option
|
|
52853
53035
|
* is not specified, it is inherited from [chart.type](#chart.type).
|
|
@@ -52989,16 +53171,12 @@
|
|
|
52989
53171
|
* @apioption series.mappoint.data.y
|
|
52990
53172
|
*/
|
|
52991
53173
|
/**
|
|
52992
|
-
|
|
52993
|
-
|
|
52994
|
-
|
|
52995
|
-
|
|
52996
|
-
|
|
52997
|
-
|
|
52998
|
-
*
|
|
52999
|
-
* Default Export
|
|
53000
|
-
*
|
|
53001
|
-
* */
|
|
53174
|
+
* @type {number}
|
|
53175
|
+
* @product highmaps
|
|
53176
|
+
* @excluding borderColor, borderWidth
|
|
53177
|
+
* @apioption plotOptions.mappoint
|
|
53178
|
+
*/
|
|
53179
|
+
(''); // Keeps doclets above in JS file
|
|
53002
53180
|
|
|
53003
53181
|
return MapPointSeriesDefaults;
|
|
53004
53182
|
});
|
|
@@ -54326,18 +54504,17 @@
|
|
|
54326
54504
|
this.points.length < this.options.animationLimit // #8099
|
|
54327
54505
|
) {
|
|
54328
54506
|
this.points.forEach(function (point) {
|
|
54329
|
-
const { graphic } = point;
|
|
54507
|
+
const { graphic, plotX = 0, plotY = 0 } = point;
|
|
54330
54508
|
if (graphic && graphic.width) { // URL symbols don't have width
|
|
54331
54509
|
// Start values
|
|
54332
54510
|
if (!this.hasRendered) {
|
|
54333
54511
|
graphic.attr({
|
|
54334
|
-
x:
|
|
54335
|
-
y:
|
|
54512
|
+
x: plotX,
|
|
54513
|
+
y: plotY,
|
|
54336
54514
|
width: 1,
|
|
54337
54515
|
height: 1
|
|
54338
54516
|
});
|
|
54339
54517
|
}
|
|
54340
|
-
// Run animation
|
|
54341
54518
|
graphic.animate(this.markerAttribs(point), this.options.animation);
|
|
54342
54519
|
}
|
|
54343
54520
|
}, this);
|
|
@@ -54430,6 +54607,19 @@
|
|
|
54430
54607
|
hasData() {
|
|
54431
54608
|
return !!this.processedXData.length; // != 0
|
|
54432
54609
|
}
|
|
54610
|
+
/**
|
|
54611
|
+
* @private
|
|
54612
|
+
*/
|
|
54613
|
+
markerAttribs(point, state) {
|
|
54614
|
+
const attr = super.markerAttribs(point, state), { height = 0, width = 0 } = attr;
|
|
54615
|
+
// Bubble needs a specific `markerAttribs` override because the markers
|
|
54616
|
+
// are rendered into the potentially inverted `series.group`. Unlike
|
|
54617
|
+
// regular markers, which are rendered into the `markerGroup` (#21125).
|
|
54618
|
+
return this.chart.inverted ? extend(attr, {
|
|
54619
|
+
x: (point.plotX || 0) - width / 2,
|
|
54620
|
+
y: (point.plotY || 0) - height / 2
|
|
54621
|
+
}) : attr;
|
|
54622
|
+
}
|
|
54433
54623
|
/**
|
|
54434
54624
|
* @private
|
|
54435
54625
|
*/
|
|
@@ -54457,8 +54647,7 @@
|
|
|
54457
54647
|
// Set the shape type and arguments to be picked up in drawPoints
|
|
54458
54648
|
let i = data.length;
|
|
54459
54649
|
while (i--) {
|
|
54460
|
-
const point = data[i];
|
|
54461
|
-
const radius = radii ? radii[i] : 0; // #1737
|
|
54650
|
+
const point = data[i], radius = radii ? radii[i] : 0; // #1737
|
|
54462
54651
|
// Negative points means negative z values (#9728)
|
|
54463
54652
|
if (this.zoneAxis === 'z') {
|
|
54464
54653
|
point.negative = (point.z || 0) < (options.zThreshold || 0);
|