highcharts 13.0.2 → 13.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/css/highcharts.css +6 -2
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +10 -6
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +2 -1
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +25 -1
- package/es-modules/Accessibility/KeyboardNavigation.js +1 -1
- package/es-modules/Accessibility/Utils/HTMLUtilities.js +13 -3
- package/es-modules/Core/Animation/AnimationUtilities.js +7 -2
- package/es-modules/Core/Animation/Fx.js +1 -0
- package/es-modules/Core/Axis/Axis.js +181 -211
- package/es-modules/Core/Axis/Axis3DComposition.js +13 -15
- package/es-modules/Core/Axis/AxisDefaults.js +9 -8
- package/es-modules/Core/Axis/BrokenAxis.js +5 -4
- package/es-modules/Core/Axis/Color/ColorAxis.js +66 -54
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -0
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +6 -4
- package/es-modules/Core/Axis/DateTimeAxis.js +4 -3
- package/es-modules/Core/Axis/GridAxis.js +17 -13
- package/es-modules/Core/Axis/LogarithmicAxis.js +4 -3
- package/es-modules/Core/Axis/NavigatorAxisComposition.js +3 -4
- package/es-modules/Core/Axis/OrdinalAxis.js +0 -15
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +135 -72
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +72 -124
- package/es-modules/Core/Axis/RadialAxis.js +50 -7
- package/es-modules/Core/Axis/ScrollbarAxis.js +3 -0
- package/es-modules/Core/Axis/Stacking/StackItem.js +49 -75
- package/es-modules/Core/Axis/Stacking/StackingAxis.js +34 -22
- package/es-modules/Core/Axis/Tick.js +95 -92
- package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +9 -13
- package/es-modules/Core/Axis/WaterfallAxis.js +1 -1
- package/es-modules/Core/Chart/Chart.js +13 -4
- package/es-modules/Core/Chart/StockChart.js +20 -26
- package/es-modules/Core/Defaults.js +18 -0
- package/es-modules/Core/Globals.js +9 -7
- package/es-modules/Core/Pointer.js +7 -8
- package/es-modules/Core/Renderer/HTML/AST.js +18 -11
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +5 -1
- package/es-modules/Core/Renderer/SVG/SVGElement.js +1 -0
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +1 -1
- package/es-modules/Core/Renderer/SVG/Symbols.js +1 -1
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +6 -2
- package/es-modules/Core/Series/OverlappingDataLabels.js +41 -32
- package/es-modules/Core/Series/Point.js +14 -11
- package/es-modules/Core/Series/Series.js +21 -10
- package/es-modules/Core/Tooltip.js +35 -40
- package/es-modules/Data/DataCursor.js +3 -2
- package/es-modules/Data/DataTable.js +21 -2
- package/es-modules/Data/DataTableCore.js +28 -4
- package/es-modules/Data/Formula/FormulaParser.js +30 -10
- package/es-modules/Extensions/Annotations/Annotation.js +5 -7
- package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -1
- package/es-modules/Extensions/Boost/BoostSeries.js +4 -13
- package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +6 -4
- package/es-modules/Extensions/Breadcrumbs/BreadcrumbsDefaults.js +1 -1
- package/es-modules/Extensions/Data.js +4 -2
- package/es-modules/Extensions/DragPanes/DragPanes.js +6 -9
- package/es-modules/Extensions/Drilldown/Drilldown.js +9 -4
- package/es-modules/Extensions/ExportData/ExportData.js +24 -4
- package/es-modules/Extensions/Pane/Pane.js +1 -1
- package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +5 -4
- package/es-modules/Extensions/StaticScale.js +13 -11
- package/es-modules/Series/Area/AreaSeriesDefaults.js +1 -1
- package/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +1 -1
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +1 -1
- package/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +1 -1
- package/es-modules/Series/Bar/BarSeries.js +1 -1
- package/es-modules/Series/Bellcurve/BellcurveSeriesDefaults.js +1 -1
- package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +1 -1
- package/es-modules/Series/Bubble/BubbleSeries.js +1 -1
- package/es-modules/Series/Bullet/BulletSeriesDefaults.js +1 -1
- package/es-modules/Series/Candlestick/CandlestickSeriesDefaults.js +1 -1
- package/es-modules/Series/Column/ColumnSeriesDefaults.js +6 -3
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeriesDefaults.js +2 -3
- package/es-modules/Series/ColumnRange/ColumnRangeSeriesDefaults.js +1 -1
- package/es-modules/Series/Contour/ContourSeriesDefaults.js +12 -14
- package/es-modules/Series/ErrorBar/ErrorBarSeriesDefaults.js +1 -1
- package/es-modules/Series/Flags/FlagsPoint.js +4 -2
- package/es-modules/Series/Flags/FlagsPointOptions.js +12 -0
- package/es-modules/Series/Flags/FlagsSeries.js +8 -7
- package/es-modules/Series/Flags/FlagsSeriesDefaults.js +7 -7
- package/es-modules/Series/Flags/FlagsSeriesOptions.js +12 -0
- package/es-modules/Series/Flags/FlagsSymbols.js +5 -3
- package/es-modules/Series/Funnel/FunnelSeriesDefaults.js +1 -1
- package/es-modules/Series/Gauge/GaugeSeries.js +1 -1
- package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +1 -1
- package/es-modules/Series/HLC/HLCSeriesDefaults.js +1 -7
- package/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -1
- package/es-modules/Series/HeikinAshi/HeikinAshiSeriesDefaults.js +1 -1
- package/es-modules/Series/Histogram/HistogramSeriesDefaults.js +1 -1
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +1 -1
- package/es-modules/Series/Item/ItemSeriesDefaults.js +1 -1
- package/es-modules/Series/Line/LineSeries.js +0 -1
- package/es-modules/Series/Map/MapSeriesDefaults.js +1 -1
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +0 -1
- package/es-modules/Series/MapLine/MapLineSeriesDefaults.js +1 -1
- package/es-modules/Series/MapPoint/MapPointSeriesDefaults.js +0 -1
- package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +5 -5
- package/es-modules/Series/OHLC/OHLCSeriesDefaults.js +0 -1
- package/es-modules/Series/PackedBubble/PackedBubbleChart.js +18 -0
- package/es-modules/Series/PackedBubble/PackedBubbleDataLabelOptions.js +12 -0
- package/es-modules/Series/PackedBubble/PackedBubbleIntegration.js +3 -3
- package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +2 -2
- package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
- package/es-modules/Series/PackedBubble/PackedBubblePointOptions.js +12 -0
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +20 -20
- package/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +2 -2
- package/es-modules/Series/PackedBubble/PackedBubbleSeriesOptions.js +12 -0
- package/es-modules/Series/ParetoSeries/ParetoPoint.js +17 -0
- package/es-modules/Series/ParetoSeries/ParetoPointOptions.js +12 -0
- package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -3
- package/es-modules/Series/ParetoSeries/ParetoSeriesDefaults.js +1 -1
- package/es-modules/Series/ParetoSeries/ParetoSeriesOptions.js +12 -0
- package/es-modules/Series/PathUtilities.js +3 -1
- package/es-modules/Series/Pictorial/PictorialPointOptions.js +12 -0
- package/es-modules/Series/Pictorial/PictorialSeries.js +5 -25
- package/es-modules/Series/Pictorial/PictorialSeriesDefaults.js +45 -0
- package/es-modules/Series/Pictorial/PictorialSeriesOptions.js +12 -0
- package/es-modules/Series/Pie/PieSeriesDefaults.js +1 -1
- package/es-modules/Series/Pie3D/Pie3DPoint.js +1 -1
- package/es-modules/Series/Pie3D/Pie3DSeries.js +6 -6
- package/es-modules/Series/PolarComposition.js +22 -21
- package/es-modules/Series/Polygon/PolygonPoint.js +17 -0
- package/es-modules/Series/Polygon/PolygonPointOptions.js +12 -0
- package/es-modules/Series/Polygon/PolygonSeriesDefaults.js +1 -1
- package/es-modules/Series/Polygon/PolygonSeriesOptions.js +12 -0
- package/es-modules/Series/Pyramid/PyramidPoint.js +19 -0
- package/es-modules/Series/Pyramid/PyramidPointOptions.js +14 -0
- package/es-modules/Series/Pyramid/PyramidSeries.js +1 -1
- package/es-modules/Series/Pyramid/PyramidSeriesDefaults.js +1 -1
- package/es-modules/Series/Pyramid/PyramidSeriesOptions.js +14 -0
- package/es-modules/Series/Pyramid3D/Pyramid3DPoint.js +19 -0
- package/es-modules/Series/Pyramid3D/Pyramid3DPointOptions.js +14 -0
- package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +1 -1
- package/es-modules/Series/Pyramid3D/Pyramid3DSeriesOptions.js +14 -0
- package/es-modules/Series/Renko/RenkoSeriesDefaults.js +1 -2
- package/es-modules/Series/Sankey/SankeySeriesDefaults.js +6 -7
- package/es-modules/Series/Scatter/ScatterSeriesDefaults.js +1 -1
- package/es-modules/Series/SolidGauge/SolidGaugeSeriesDefaults.js +1 -1
- package/es-modules/Series/Spline/SplineSeries.js +1 -1
- package/es-modules/Series/Streamgraph/StreamgraphSeriesDefaults.js +1 -1
- package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +1 -1
- package/es-modules/Series/TiledWebMap/TiledWebMapSeriesDefaults.js +2 -2
- package/es-modules/Series/Tilemap/TilemapSeriesDefaults.js +1 -1
- package/es-modules/Series/Timeline/TimelineSeriesDefaults.js +1 -1
- package/es-modules/Series/Treemap/TreemapSeriesDefaults.js +1 -1
- package/es-modules/Series/VariablePie/VariablePieSeriesDefaults.js +1 -1
- package/es-modules/Series/Variwide/VariwideComposition.js +11 -8
- package/es-modules/Series/Vector/VectorSeriesDefaults.js +1 -1
- package/es-modules/Series/Venn/VennSeriesDefaults.js +1 -1
- package/es-modules/Series/Waterfall/WaterfallSeriesDefaults.js +1 -1
- package/es-modules/Series/Windbarb/WindbarbSeriesDefaults.js +1 -1
- package/es-modules/Shared/Utilities.js +7 -0
- package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +1 -1
- package/es-modules/Stock/Indicators/AD/ADIndicator.js +0 -1
- package/es-modules/Stock/Indicators/AO/AOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/APO/APOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +0 -1
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +1 -1
- package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +2 -2
- package/es-modules/Stock/Indicators/BB/BBIndicator.js +0 -1
- package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +0 -1
- package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +0 -1
- package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +0 -1
- package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +1 -1
- package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +1 -1
- package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +3 -3
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +3 -3
- package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +0 -1
- package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +0 -1
- package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +1 -1
- package/es-modules/Stock/Indicators/LinearRegression/LinearRegressionIndicator.js +0 -1
- package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngleIndicator.js +0 -1
- package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionInterceptIndicator.js +0 -1
- package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopesIndicator.js +0 -1
- package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +0 -1
- package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +0 -1
- package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +0 -1
- package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +0 -1
- package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +0 -1
- package/es-modules/Stock/Indicators/PC/PCIndicator.js +1 -1
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +0 -1
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +0 -1
- package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +0 -1
- package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +0 -1
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +0 -1
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +3 -3
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +1 -1
- package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +1 -1
- package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +1 -1
- package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +0 -1
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +1 -1
- package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +0 -1
- package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +0 -1
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +0 -1
- package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +5 -5
- package/es-modules/Stock/Navigator/Navigator.js +1 -5
- package/es-modules/Stock/Navigator/StandaloneNavigator.js +38 -8
- package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +2 -2
- package/es-modules/Stock/Scrollbar/ScrollbarDefaults.js +1 -3
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-autoload.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +1 -1
- package/es-modules/masters/highcharts.src.js +1 -1
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
- package/es-modules/masters/i18n/fr-FR.src.js +1 -1
- package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
- package/es-modules/masters/i18n/nb-NO.src.js +1 -1
- package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
- package/es-modules/masters/i18n/zh-CN.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/es-modules/masters/modules/annotations.src.js +1 -1
- package/es-modules/masters/modules/arc-diagram.src.js +1 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +1 -1
- package/es-modules/masters/modules/contour.src.js +1 -1
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data-sorting.src.js +1 -1
- package/es-modules/masters/modules/data-tools.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +1 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +1 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +1 -1
- package/es-modules/masters/modules/flowmap.src.js +1 -1
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +1 -1
- package/es-modules/masters/modules/geoheatmap.src.js +1 -1
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +1 -1
- package/es-modules/masters/modules/heikinashi.src.js +1 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +1 -1
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
- package/es-modules/masters/modules/navigator.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/pictorial.src.js +1 -1
- package/es-modules/masters/modules/pointandfigure.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/renko.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +1 -1
- package/es-modules/masters/modules/series-on-point.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +1 -1
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +1 -1
- package/es-modules/masters/modules/textpath.src.js +1 -1
- package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegraph.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +1 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/standalone-navigator.src.js +1 -1
- package/es-modules/masters/themes/adaptive.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +1 -1
- package/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/es-modules/masters/themes/grid-light.src.js +1 -1
- package/es-modules/masters/themes/high-contrast.src.js +1 -1
- package/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/es-modules/masters/themes/sunset.src.js +1 -1
- package/es-modules/tsconfig.tsbuildinfo +1 -1
- package/esm/highcharts-3d.js +2 -2
- package/esm/highcharts-3d.src.js +38 -61
- package/esm/highcharts-autoload.js +2 -2
- package/esm/highcharts-autoload.src.js +18 -39
- package/esm/highcharts-gantt.js +1 -1
- package/esm/highcharts-gantt.src.js +1 -1
- package/esm/highcharts-more.js +2 -2
- package/esm/highcharts-more.src.js +142 -120
- package/esm/highcharts.js +4 -4
- package/esm/highcharts.src.js +824 -750
- package/esm/highmaps.js +1 -1
- package/esm/highmaps.src.js +1 -1
- package/esm/highstock.js +1 -1
- package/esm/highstock.src.js +1 -1
- package/esm/i18n/fr-FR.js +2 -2
- package/esm/i18n/fr-FR.src.js +17 -38
- package/esm/i18n/nb-NO.js +2 -2
- package/esm/i18n/nb-NO.src.js +17 -38
- package/esm/i18n/zh-CN.js +2 -2
- package/esm/i18n/zh-CN.src.js +17 -38
- package/esm/indicators/acceleration-bands.js +2 -2
- package/esm/indicators/acceleration-bands.src.js +18 -39
- package/esm/indicators/accumulation-distribution.js +2 -2
- package/esm/indicators/accumulation-distribution.src.js +17 -39
- package/esm/indicators/ao.js +2 -2
- package/esm/indicators/ao.src.js +18 -39
- package/esm/indicators/apo.js +2 -2
- package/esm/indicators/apo.src.js +18 -39
- package/esm/indicators/aroon-oscillator.js +2 -2
- package/esm/indicators/aroon-oscillator.src.js +19 -40
- package/esm/indicators/aroon.js +2 -2
- package/esm/indicators/aroon.src.js +18 -39
- package/esm/indicators/atr.js +2 -2
- package/esm/indicators/atr.src.js +17 -39
- package/esm/indicators/bollinger-bands.js +2 -2
- package/esm/indicators/bollinger-bands.src.js +17 -39
- package/esm/indicators/cci.js +2 -2
- package/esm/indicators/cci.src.js +17 -39
- package/esm/indicators/chaikin.js +2 -2
- package/esm/indicators/chaikin.src.js +18 -40
- package/esm/indicators/cmf.js +2 -2
- package/esm/indicators/cmf.src.js +17 -39
- package/esm/indicators/cmo.js +2 -2
- package/esm/indicators/cmo.src.js +17 -39
- package/esm/indicators/dema.js +2 -2
- package/esm/indicators/dema.src.js +18 -39
- package/esm/indicators/disparity-index.js +2 -2
- package/esm/indicators/disparity-index.src.js +20 -41
- package/esm/indicators/dmi.js +2 -2
- package/esm/indicators/dmi.src.js +20 -41
- package/esm/indicators/dpo.js +2 -2
- package/esm/indicators/dpo.src.js +18 -39
- package/esm/indicators/ichimoku-kinko-hyo.js +2 -2
- package/esm/indicators/ichimoku-kinko-hyo.src.js +18 -40
- package/esm/indicators/indicators-all.js +2 -2
- package/esm/indicators/indicators-all.src.js +76 -99
- package/esm/indicators/indicators.js +2 -2
- package/esm/indicators/indicators.src.js +48 -46
- package/esm/indicators/keltner-channels.js +2 -2
- package/esm/indicators/keltner-channels.src.js +18 -39
- package/esm/indicators/klinger.js +2 -2
- package/esm/indicators/klinger.src.js +17 -38
- package/esm/indicators/macd.js +2 -2
- package/esm/indicators/macd.src.js +17 -39
- package/esm/indicators/mfi.js +2 -2
- package/esm/indicators/mfi.src.js +17 -39
- package/esm/indicators/momentum.js +2 -2
- package/esm/indicators/momentum.src.js +17 -39
- package/esm/indicators/natr.js +2 -2
- package/esm/indicators/natr.src.js +17 -39
- package/esm/indicators/obv.js +2 -2
- package/esm/indicators/obv.src.js +17 -39
- package/esm/indicators/pivot-points.js +2 -2
- package/esm/indicators/pivot-points.src.js +17 -39
- package/esm/indicators/ppo.js +2 -2
- package/esm/indicators/ppo.src.js +18 -39
- package/esm/indicators/price-channel.js +2 -2
- package/esm/indicators/price-channel.src.js +18 -39
- package/esm/indicators/price-envelopes.js +2 -2
- package/esm/indicators/price-envelopes.src.js +17 -39
- package/esm/indicators/psar.js +2 -2
- package/esm/indicators/psar.src.js +17 -39
- package/esm/indicators/regressions.js +2 -2
- package/esm/indicators/regressions.src.js +17 -42
- package/esm/indicators/roc.js +2 -2
- package/esm/indicators/roc.src.js +17 -39
- package/esm/indicators/rsi.js +2 -2
- package/esm/indicators/rsi.src.js +17 -39
- package/esm/indicators/slow-stochastic.js +2 -2
- package/esm/indicators/slow-stochastic.src.js +17 -38
- package/esm/indicators/stochastic.js +2 -2
- package/esm/indicators/stochastic.src.js +20 -41
- package/esm/indicators/supertrend.js +2 -2
- package/esm/indicators/supertrend.src.js +19 -40
- package/esm/indicators/tema.js +2 -2
- package/esm/indicators/tema.src.js +18 -39
- package/esm/indicators/trendline.js +2 -2
- package/esm/indicators/trendline.src.js +17 -39
- package/esm/indicators/trix.js +2 -2
- package/esm/indicators/trix.src.js +18 -39
- package/esm/indicators/volume-by-price.js +2 -2
- package/esm/indicators/volume-by-price.src.js +18 -39
- package/esm/indicators/vwap.js +2 -2
- package/esm/indicators/vwap.src.js +17 -39
- package/esm/indicators/williams-r.js +2 -2
- package/esm/indicators/williams-r.src.js +18 -39
- package/esm/indicators/wma.js +2 -2
- package/esm/indicators/wma.src.js +17 -39
- package/esm/indicators/zigzag.js +2 -2
- package/esm/indicators/zigzag.src.js +17 -39
- package/esm/modules/accessibility.js +2 -2
- package/esm/modules/accessibility.src.js +90 -76
- package/esm/modules/annotations-advanced.js +3 -3
- package/esm/modules/annotations-advanced.src.js +36 -58
- package/esm/modules/annotations.js +3 -3
- package/esm/modules/annotations.src.js +36 -58
- package/esm/modules/arc-diagram.js +2 -2
- package/esm/modules/arc-diagram.src.js +18 -39
- package/esm/modules/arrow-symbols.js +3 -3
- package/esm/modules/arrow-symbols.src.js +17 -38
- package/esm/modules/boost-canvas.js +2 -2
- package/esm/modules/boost-canvas.src.js +57 -63
- package/esm/modules/boost.js +2 -2
- package/esm/modules/boost.src.js +56 -62
- package/esm/modules/broken-axis.js +2 -2
- package/esm/modules/broken-axis.src.js +21 -41
- package/esm/modules/bullet.js +2 -2
- package/esm/modules/bullet.src.js +18 -39
- package/esm/modules/coloraxis.js +2 -2
- package/esm/modules/coloraxis.src.js +92 -96
- package/esm/modules/contour.js +3 -3
- package/esm/modules/contour.src.js +29 -52
- package/esm/modules/current-date-indicator.js +2 -2
- package/esm/modules/current-date-indicator.src.js +17 -38
- package/esm/modules/cylinder.js +2 -2
- package/esm/modules/cylinder.src.js +18 -39
- package/esm/modules/data-sorting.js +2 -2
- package/esm/modules/data-sorting.src.js +18 -39
- package/esm/modules/data-tools.js +2 -2
- package/esm/modules/data-tools.src.js +110 -67
- package/esm/modules/data.js +4 -4
- package/esm/modules/data.src.js +53 -48
- package/esm/modules/datagrouping.js +2 -2
- package/esm/modules/datagrouping.src.js +52 -48
- package/esm/modules/debugger.js +2 -2
- package/esm/modules/debugger.src.js +17 -38
- package/esm/modules/dependency-wheel.js +2 -2
- package/esm/modules/dependency-wheel.src.js +17 -38
- package/esm/modules/dotplot.js +2 -2
- package/esm/modules/dotplot.src.js +17 -38
- package/esm/modules/drag-panes.js +2 -2
- package/esm/modules/drag-panes.src.js +22 -46
- package/esm/modules/draggable-points.js +2 -2
- package/esm/modules/draggable-points.src.js +17 -38
- package/esm/modules/drilldown.js +2 -2
- package/esm/modules/drilldown.src.js +40 -54
- package/esm/modules/dumbbell.js +2 -2
- package/esm/modules/dumbbell.src.js +18 -39
- package/esm/modules/export-data.js +2 -2
- package/esm/modules/export-data.src.js +42 -43
- package/esm/modules/exporting.js +2 -2
- package/esm/modules/exporting.src.js +26 -47
- package/esm/modules/flowmap.js +2 -2
- package/esm/modules/flowmap.src.js +17 -38
- package/esm/modules/full-screen.js +2 -2
- package/esm/modules/full-screen.src.js +17 -38
- package/esm/modules/funnel.js +2 -2
- package/esm/modules/funnel.src.js +21 -42
- package/esm/modules/funnel3d.js +2 -2
- package/esm/modules/funnel3d.src.js +18 -39
- package/esm/modules/gantt.js +2 -2
- package/esm/modules/gantt.src.js +84 -104
- package/esm/modules/geoheatmap.js +2 -2
- package/esm/modules/geoheatmap.src.js +18 -39
- package/esm/modules/grid-axis.js +2 -2
- package/esm/modules/grid-axis.src.js +34 -51
- package/esm/modules/heatmap.js +2 -2
- package/esm/modules/heatmap.src.js +20 -41
- package/esm/modules/heikinashi.js +2 -2
- package/esm/modules/heikinashi.src.js +18 -39
- package/esm/modules/histogram-bellcurve.js +2 -2
- package/esm/modules/histogram-bellcurve.src.js +19 -40
- package/esm/modules/hollowcandlestick.js +2 -2
- package/esm/modules/hollowcandlestick.src.js +18 -39
- package/esm/modules/item-series.js +2 -2
- package/esm/modules/item-series.src.js +19 -40
- package/esm/modules/lollipop.js +2 -2
- package/esm/modules/lollipop.src.js +18 -39
- package/esm/modules/map.js +2 -2
- package/esm/modules/map.src.js +64 -63
- package/esm/modules/marker-clusters.js +2 -2
- package/esm/modules/marker-clusters.src.js +49 -46
- package/esm/modules/mouse-wheel-zoom.js +2 -2
- package/esm/modules/mouse-wheel-zoom.src.js +17 -38
- package/esm/modules/navigator.js +2 -2
- package/esm/modules/navigator.src.js +72 -67
- package/esm/modules/networkgraph.js +2 -2
- package/esm/modules/networkgraph.src.js +24 -45
- package/esm/modules/no-data-to-display.js +2 -2
- package/esm/modules/no-data-to-display.src.js +17 -38
- package/esm/modules/non-cartesian-zoom.js +2 -2
- package/esm/modules/non-cartesian-zoom.src.js +17 -38
- package/esm/modules/offline-exporting.js +2 -2
- package/esm/modules/offline-exporting.src.js +19 -40
- package/esm/modules/organization.js +2 -2
- package/esm/modules/organization.src.js +20 -39
- package/esm/modules/parallel-coordinates.js +2 -2
- package/esm/modules/parallel-coordinates.src.js +24 -44
- package/esm/modules/pareto.js +2 -2
- package/esm/modules/pareto.src.js +21 -42
- package/esm/modules/pathfinder.js +2 -2
- package/esm/modules/pathfinder.src.js +20 -39
- package/esm/modules/pattern-fill.js +2 -2
- package/esm/modules/pattern-fill.src.js +17 -38
- package/esm/modules/pictorial.js +2 -2
- package/esm/modules/pictorial.src.js +71 -65
- package/esm/modules/pointandfigure.js +2 -2
- package/esm/modules/pointandfigure.src.js +47 -44
- package/esm/modules/price-indicator.js +2 -2
- package/esm/modules/price-indicator.src.js +17 -38
- package/esm/modules/pyramid3d.js +2 -2
- package/esm/modules/pyramid3d.src.js +18 -39
- package/esm/modules/renko.js +2 -2
- package/esm/modules/renko.src.js +18 -40
- package/esm/modules/sankey.js +2 -2
- package/esm/modules/sankey.src.js +24 -46
- package/esm/modules/series-label.js +2 -2
- package/esm/modules/series-label.src.js +17 -38
- package/esm/modules/series-on-point.js +2 -2
- package/esm/modules/series-on-point.src.js +47 -44
- package/esm/modules/solid-gauge.js +2 -2
- package/esm/modules/solid-gauge.src.js +18 -39
- package/esm/modules/sonification.js +2 -2
- package/esm/modules/sonification.src.js +18 -39
- package/esm/modules/static-scale.js +2 -2
- package/esm/modules/static-scale.src.js +30 -49
- package/esm/modules/stock-tools.js +2 -2
- package/esm/modules/stock-tools.src.js +29 -50
- package/esm/modules/stock.js +2 -2
- package/esm/modules/stock.src.js +117 -141
- package/esm/modules/streamgraph.js +2 -2
- package/esm/modules/streamgraph.src.js +18 -39
- package/esm/modules/sunburst.js +2 -2
- package/esm/modules/sunburst.src.js +38 -57
- package/esm/modules/textpath.js +2 -2
- package/esm/modules/textpath.src.js +17 -38
- package/esm/modules/tiledwebmap.js +3 -3
- package/esm/modules/tiledwebmap.src.js +19 -40
- package/esm/modules/tilemap.js +2 -2
- package/esm/modules/tilemap.src.js +22 -40
- package/esm/modules/timeline.js +2 -2
- package/esm/modules/timeline.src.js +19 -40
- package/esm/modules/treegraph.js +2 -2
- package/esm/modules/treegraph.src.js +23 -42
- package/esm/modules/treegrid.js +2 -2
- package/esm/modules/treegrid.src.js +47 -67
- package/esm/modules/treemap.js +2 -2
- package/esm/modules/treemap.src.js +34 -53
- package/esm/modules/variable-pie.js +2 -2
- package/esm/modules/variable-pie.src.js +19 -40
- package/esm/modules/variwide.js +2 -2
- package/esm/modules/variwide.src.js +28 -46
- package/esm/modules/vector.js +2 -2
- package/esm/modules/vector.src.js +18 -39
- package/esm/modules/venn.js +2 -2
- package/esm/modules/venn.src.js +18 -39
- package/esm/modules/windbarb.js +2 -2
- package/esm/modules/windbarb.src.js +18 -39
- package/esm/modules/wordcloud.js +2 -2
- package/esm/modules/wordcloud.src.js +18 -39
- package/esm/modules/xrange.js +2 -2
- package/esm/modules/xrange.src.js +18 -39
- package/esm/standalone-navigator.js +4 -4
- package/esm/standalone-navigator.src.js +876 -776
- package/esm/themes/adaptive.js +2 -2
- package/esm/themes/adaptive.src.js +17 -38
- package/esm/themes/avocado.js +2 -2
- package/esm/themes/avocado.src.js +17 -38
- package/esm/themes/dark-unica.js +2 -2
- package/esm/themes/dark-unica.src.js +17 -38
- package/esm/themes/grid-light.js +2 -2
- package/esm/themes/grid-light.src.js +17 -38
- package/esm/themes/high-contrast.js +2 -2
- package/esm/themes/high-contrast.src.js +17 -38
- package/esm/themes/sand-signika.js +2 -2
- package/esm/themes/sand-signika.src.js +17 -38
- package/esm/themes/sunset.js +2 -2
- package/esm/themes/sunset.src.js +17 -38
- package/highcharts-3d.js +2 -2
- package/highcharts-3d.src.js +43 -66
- package/highcharts-autoload.d.ts +0 -1
- package/highcharts-autoload.js +4 -4
- package/highcharts-autoload.src.d.ts +0 -1
- package/highcharts-autoload.src.js +833 -778
- package/highcharts-gantt.js +4 -4
- package/highcharts-gantt.src.js +895 -839
- package/highcharts-more.d.ts +10 -0
- package/highcharts-more.js +2 -2
- package/highcharts-more.src.d.ts +10 -0
- package/highcharts-more.src.js +147 -125
- package/highcharts.d.ts +2785 -80144
- package/highcharts.js +4 -4
- package/highcharts.src.d.ts +2785 -80144
- package/highcharts.src.js +832 -777
- package/highmaps.js +4 -4
- package/highmaps.src.js +915 -845
- package/highstock.js +4 -4
- package/highstock.src.js +903 -874
- package/i18n/fr-FR.js +2 -2
- package/i18n/fr-FR.src.js +26 -37
- package/i18n/nb-NO.js +2 -2
- package/i18n/nb-NO.src.js +26 -37
- package/i18n/zh-CN.js +2 -2
- package/i18n/zh-CN.src.js +26 -37
- package/indicators/acceleration-bands.js +2 -2
- package/indicators/acceleration-bands.src.js +23 -44
- package/indicators/accumulation-distribution.js +2 -2
- package/indicators/accumulation-distribution.src.js +22 -44
- package/indicators/ao.js +2 -2
- package/indicators/ao.src.js +23 -44
- package/indicators/apo.js +2 -2
- package/indicators/apo.src.js +23 -44
- package/indicators/aroon-oscillator.js +2 -2
- package/indicators/aroon-oscillator.src.js +24 -45
- package/indicators/aroon.js +2 -2
- package/indicators/aroon.src.js +23 -44
- package/indicators/atr.js +2 -2
- package/indicators/atr.src.js +22 -44
- package/indicators/bollinger-bands.js +2 -2
- package/indicators/bollinger-bands.src.js +22 -44
- package/indicators/cci.js +2 -2
- package/indicators/cci.src.js +22 -44
- package/indicators/chaikin.js +2 -2
- package/indicators/chaikin.src.js +23 -45
- package/indicators/cmf.js +2 -2
- package/indicators/cmf.src.js +22 -44
- package/indicators/cmo.js +2 -2
- package/indicators/cmo.src.js +22 -44
- package/indicators/dema.js +2 -2
- package/indicators/dema.src.js +23 -44
- package/indicators/disparity-index.js +2 -2
- package/indicators/disparity-index.src.js +25 -46
- package/indicators/dmi.js +2 -2
- package/indicators/dmi.src.js +25 -46
- package/indicators/dpo.js +2 -2
- package/indicators/dpo.src.js +23 -44
- package/indicators/ichimoku-kinko-hyo.js +2 -2
- package/indicators/ichimoku-kinko-hyo.src.js +23 -45
- package/indicators/indicators-all.js +2 -2
- package/indicators/indicators-all.src.js +81 -104
- package/indicators/indicators.js +2 -2
- package/indicators/indicators.src.js +53 -51
- package/indicators/keltner-channels.js +2 -2
- package/indicators/keltner-channels.src.js +23 -44
- package/indicators/klinger.js +2 -2
- package/indicators/klinger.src.js +22 -43
- package/indicators/macd.js +2 -2
- package/indicators/macd.src.js +22 -44
- package/indicators/mfi.js +2 -2
- package/indicators/mfi.src.js +22 -44
- package/indicators/momentum.js +2 -2
- package/indicators/momentum.src.js +22 -44
- package/indicators/natr.js +2 -2
- package/indicators/natr.src.js +22 -44
- package/indicators/obv.js +2 -2
- package/indicators/obv.src.js +22 -44
- package/indicators/pivot-points.js +2 -2
- package/indicators/pivot-points.src.js +22 -44
- package/indicators/ppo.js +2 -2
- package/indicators/ppo.src.js +23 -44
- package/indicators/price-channel.js +2 -2
- package/indicators/price-channel.src.js +23 -44
- package/indicators/price-envelopes.js +2 -2
- package/indicators/price-envelopes.src.js +22 -44
- package/indicators/psar.js +2 -2
- package/indicators/psar.src.js +22 -44
- package/indicators/regressions.js +2 -2
- package/indicators/regressions.src.js +22 -47
- package/indicators/roc.js +2 -2
- package/indicators/roc.src.js +22 -44
- package/indicators/rsi.js +2 -2
- package/indicators/rsi.src.js +22 -44
- package/indicators/slow-stochastic.js +2 -2
- package/indicators/slow-stochastic.src.js +22 -43
- package/indicators/stochastic.js +2 -2
- package/indicators/stochastic.src.js +25 -46
- package/indicators/supertrend.js +2 -2
- package/indicators/supertrend.src.js +24 -45
- package/indicators/tema.js +2 -2
- package/indicators/tema.src.js +23 -44
- package/indicators/trendline.js +2 -2
- package/indicators/trendline.src.js +22 -44
- package/indicators/trix.js +2 -2
- package/indicators/trix.src.js +23 -44
- package/indicators/volume-by-price.js +2 -2
- package/indicators/volume-by-price.src.js +23 -44
- package/indicators/vwap.js +2 -2
- package/indicators/vwap.src.js +22 -44
- package/indicators/williams-r.js +2 -2
- package/indicators/williams-r.src.js +23 -44
- package/indicators/wma.js +2 -2
- package/indicators/wma.src.js +22 -44
- package/indicators/zigzag.js +2 -2
- package/indicators/zigzag.src.js +22 -44
- package/modules/accessibility.js +2 -2
- package/modules/accessibility.src.js +95 -81
- package/modules/annotations-advanced.js +9 -9
- package/modules/annotations-advanced.src.js +41 -63
- package/modules/annotations.js +3 -3
- package/modules/annotations.src.js +41 -63
- package/modules/arc-diagram.js +2 -2
- package/modules/arc-diagram.src.js +23 -44
- package/modules/arrow-symbols.js +2 -2
- package/modules/arrow-symbols.src.js +17 -38
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.src.js +62 -68
- package/modules/boost.js +2 -2
- package/modules/boost.src.js +61 -67
- package/modules/broken-axis.js +2 -2
- package/modules/broken-axis.src.js +26 -46
- package/modules/bullet.js +2 -2
- package/modules/bullet.src.js +23 -44
- package/modules/coloraxis.js +2 -2
- package/modules/coloraxis.src.js +97 -101
- package/modules/contour.js +5 -5
- package/modules/contour.src.js +111 -117
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.src.js +17 -38
- package/modules/cylinder.js +2 -2
- package/modules/cylinder.src.js +23 -44
- package/modules/data-sorting.js +2 -2
- package/modules/data-sorting.src.js +18 -39
- package/modules/data-tools.js +2 -2
- package/modules/data-tools.src.js +110 -67
- package/modules/data.js +4 -4
- package/modules/data.src.js +58 -53
- package/modules/datagrouping.js +2 -2
- package/modules/datagrouping.src.js +57 -53
- package/modules/debugger.js +2 -2
- package/modules/debugger.src.js +17 -38
- package/modules/dependency-wheel.js +2 -2
- package/modules/dependency-wheel.src.js +22 -43
- package/modules/dotplot.js +2 -2
- package/modules/dotplot.src.js +22 -43
- package/modules/drag-panes.js +2 -2
- package/modules/drag-panes.src.js +22 -46
- package/modules/draggable-points.js +2 -2
- package/modules/draggable-points.src.js +17 -38
- package/modules/drilldown.js +2 -2
- package/modules/drilldown.src.js +45 -59
- package/modules/dumbbell.js +2 -2
- package/modules/dumbbell.src.js +23 -44
- package/modules/export-data.js +2 -2
- package/modules/export-data.src.js +47 -48
- package/modules/exporting.js +2 -2
- package/modules/exporting.src.js +31 -52
- package/modules/flowmap.js +2 -2
- package/modules/flowmap.src.js +22 -43
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.src.js +22 -43
- package/modules/funnel.js +2 -2
- package/modules/funnel.src.js +26 -47
- package/modules/funnel3d.js +2 -2
- package/modules/funnel3d.src.js +23 -44
- package/modules/gantt.js +8 -8
- package/modules/gantt.src.js +93 -113
- package/modules/geoheatmap.js +2 -2
- package/modules/geoheatmap.src.js +23 -44
- package/modules/grid-axis.js +2 -2
- package/modules/grid-axis.src.js +39 -56
- package/modules/heatmap.js +4 -4
- package/modules/heatmap.src.js +101 -105
- package/modules/heikinashi.js +2 -2
- package/modules/heikinashi.src.js +23 -44
- package/modules/histogram-bellcurve.js +2 -2
- package/modules/histogram-bellcurve.src.js +24 -45
- package/modules/hollowcandlestick.js +2 -2
- package/modules/hollowcandlestick.src.js +23 -44
- package/modules/item-series.js +2 -2
- package/modules/item-series.src.js +24 -45
- package/modules/lollipop.js +2 -2
- package/modules/lollipop.src.js +23 -44
- package/modules/map.js +4 -4
- package/modules/map.src.js +146 -128
- package/modules/marker-clusters.js +2 -2
- package/modules/marker-clusters.src.js +49 -46
- package/modules/mouse-wheel-zoom.js +2 -2
- package/modules/mouse-wheel-zoom.src.js +17 -38
- package/modules/navigator.js +2 -2
- package/modules/navigator.src.js +77 -72
- package/modules/networkgraph.js +2 -2
- package/modules/networkgraph.src.js +29 -50
- package/modules/no-data-to-display.js +2 -2
- package/modules/no-data-to-display.src.js +22 -43
- package/modules/non-cartesian-zoom.js +2 -2
- package/modules/non-cartesian-zoom.src.js +17 -38
- package/modules/offline-exporting.js +2 -2
- package/modules/offline-exporting.src.js +24 -45
- package/modules/organization.js +3 -3
- package/modules/organization.src.js +25 -44
- package/modules/parallel-coordinates.js +2 -2
- package/modules/parallel-coordinates.src.js +29 -49
- package/modules/pareto.js +2 -2
- package/modules/pareto.src.js +26 -47
- package/modules/pathfinder.js +2 -2
- package/modules/pathfinder.src.js +25 -44
- package/modules/pattern-fill.js +2 -2
- package/modules/pattern-fill.src.js +17 -38
- package/modules/pictorial.js +2 -2
- package/modules/pictorial.src.js +76 -70
- package/modules/pointandfigure.js +2 -2
- package/modules/pointandfigure.src.js +52 -49
- package/modules/price-indicator.js +2 -2
- package/modules/price-indicator.src.js +17 -38
- package/modules/pyramid3d.js +2 -2
- package/modules/pyramid3d.src.js +23 -44
- package/modules/renko.js +2 -2
- package/modules/renko.src.js +23 -45
- package/modules/sankey.js +2 -2
- package/modules/sankey.src.js +29 -51
- package/modules/series-label.js +2 -2
- package/modules/series-label.src.js +22 -43
- package/modules/series-on-point.js +2 -2
- package/modules/series-on-point.src.js +52 -49
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.src.js +23 -44
- package/modules/sonification.js +2 -2
- package/modules/sonification.src.js +23 -44
- package/modules/static-scale.js +2 -2
- package/modules/static-scale.src.js +30 -49
- package/modules/stock-tools.js +2 -2
- package/modules/stock-tools.src.js +34 -55
- package/modules/stock.js +6 -6
- package/modules/stock.src.js +132 -154
- package/modules/streamgraph.js +2 -2
- package/modules/streamgraph.src.js +23 -44
- package/modules/sunburst.js +2 -2
- package/modules/sunburst.src.js +43 -62
- package/modules/textpath.js +2 -2
- package/modules/textpath.src.js +17 -38
- package/modules/tiledwebmap.js +3 -3
- package/modules/tiledwebmap.src.js +24 -45
- package/modules/tilemap.js +2 -2
- package/modules/tilemap.src.js +27 -45
- package/modules/timeline.js +2 -2
- package/modules/timeline.src.js +24 -45
- package/modules/treegraph.js +2 -2
- package/modules/treegraph.src.js +28 -47
- package/modules/treegrid.js +2 -2
- package/modules/treegrid.src.js +52 -72
- package/modules/treemap.js +2 -2
- package/modules/treemap.src.js +39 -58
- package/modules/variable-pie.js +2 -2
- package/modules/variable-pie.src.js +24 -45
- package/modules/variwide.js +2 -2
- package/modules/variwide.src.js +33 -51
- package/modules/vector.js +2 -2
- package/modules/vector.src.js +23 -44
- package/modules/venn.js +2 -2
- package/modules/venn.src.js +23 -44
- package/modules/windbarb.js +2 -2
- package/modules/windbarb.src.js +23 -44
- package/modules/wordcloud.js +2 -2
- package/modules/wordcloud.src.js +23 -44
- package/modules/xrange.js +2 -2
- package/modules/xrange.src.js +23 -44
- package/options/abands.d.ts +183 -8
- package/options/abands.src.d.ts +183 -8
- package/options/ad.d.ts +176 -5
- package/options/ad.src.d.ts +176 -5
- package/options/ao.d.ts +202 -0
- package/options/ao.src.d.ts +202 -0
- package/options/apo.d.ts +178 -8
- package/options/apo.src.d.ts +178 -8
- package/options/arcdiagram.d.ts +785 -0
- package/options/arcdiagram.src.d.ts +785 -0
- package/options/area.d.ts +226 -0
- package/options/area.src.d.ts +226 -0
- package/options/arearange.d.ts +229 -8
- package/options/arearange.src.d.ts +229 -8
- package/options/areaspline.d.ts +1344 -8
- package/options/areaspline.src.d.ts +1344 -8
- package/options/areasplinerange.d.ts +972 -8
- package/options/areasplinerange.src.d.ts +972 -8
- package/options/aroon.d.ts +219 -0
- package/options/aroon.src.d.ts +219 -0
- package/options/aroonoscillator.d.ts +1140 -8
- package/options/aroonoscillator.src.d.ts +1140 -8
- package/options/atr.d.ts +210 -0
- package/options/atr.src.d.ts +210 -0
- package/options/bar.d.ts +183 -10
- package/options/bar.src.d.ts +183 -10
- package/options/bb.d.ts +1232 -0
- package/options/bb.src.d.ts +1232 -0
- package/options/bellcurve.d.ts +1167 -8
- package/options/bellcurve.src.d.ts +1167 -8
- package/options/boxplot.d.ts +163 -10
- package/options/boxplot.src.d.ts +163 -10
- package/options/bubble.d.ts +1005 -8
- package/options/bubble.src.d.ts +1005 -8
- package/options/bullet.d.ts +953 -8
- package/options/bullet.src.d.ts +953 -8
- package/options/candlestick.d.ts +1309 -8
- package/options/candlestick.src.d.ts +1309 -8
- package/options/cci.d.ts +210 -0
- package/options/cci.src.d.ts +210 -0
- package/options/chaikin.d.ts +180 -8
- package/options/chaikin.src.d.ts +180 -8
- package/options/cmf.d.ts +211 -0
- package/options/cmf.src.d.ts +211 -0
- package/options/cmo.d.ts +175 -5
- package/options/cmo.src.d.ts +175 -5
- package/options/column.d.ts +252 -2
- package/options/column.src.d.ts +252 -2
- package/options/columnpyramid.d.ts +1296 -0
- package/options/columnpyramid.src.d.ts +1296 -0
- package/options/columnrange.d.ts +216 -2
- package/options/columnrange.src.d.ts +216 -2
- package/options/contour.d.ts +1148 -0
- package/options/contour.src.d.ts +1148 -0
- package/options/cylinder.d.ts +183 -2
- package/options/cylinder.src.d.ts +183 -2
- package/options/dema.d.ts +1181 -0
- package/options/dema.src.d.ts +1181 -0
- package/options/dependencywheel.d.ts +315 -0
- package/options/dependencywheel.src.d.ts +315 -0
- package/options/disparityindex.d.ts +1157 -8
- package/options/disparityindex.src.d.ts +1157 -8
- package/options/dmi.d.ts +1227 -0
- package/options/dmi.src.d.ts +1227 -0
- package/options/dpo.d.ts +1140 -8
- package/options/dpo.src.d.ts +1140 -8
- package/options/dumbbell.d.ts +286 -0
- package/options/dumbbell.src.d.ts +286 -0
- package/options/ema.d.ts +1156 -5
- package/options/ema.src.d.ts +1156 -5
- package/options/errorbar.d.ts +1286 -0
- package/options/errorbar.src.d.ts +1286 -0
- package/options/flags.d.ts +1269 -8
- package/options/flags.src.d.ts +1269 -8
- package/options/flowmap.d.ts +551 -0
- package/options/flowmap.src.d.ts +551 -0
- package/options/funnel.d.ts +728 -10
- package/options/funnel.src.d.ts +728 -10
- package/options/gantt.d.ts +1011 -0
- package/options/gantt.src.d.ts +1011 -0
- package/options/gauge.d.ts +675 -0
- package/options/gauge.src.d.ts +675 -0
- package/options/geoheatmap.d.ts +585 -8
- package/options/geoheatmap.src.d.ts +585 -8
- package/options/heatmap.d.ts +1054 -8
- package/options/heatmap.src.d.ts +1054 -8
- package/options/heikinashi.d.ts +178 -10
- package/options/heikinashi.src.d.ts +178 -10
- package/options/histogram.d.ts +1226 -0
- package/options/histogram.src.d.ts +1226 -0
- package/options/hlc.d.ts +223 -2
- package/options/hlc.src.d.ts +223 -2
- package/options/hollowcandlestick.d.ts +1335 -0
- package/options/hollowcandlestick.src.d.ts +1335 -0
- package/options/ikh.d.ts +228 -5
- package/options/ikh.src.d.ts +228 -5
- package/options/item.d.ts +217 -8
- package/options/item.src.d.ts +217 -8
- package/options/keltnerchannels.d.ts +1220 -0
- package/options/keltnerchannels.src.d.ts +1220 -0
- package/options/klinger.d.ts +1162 -0
- package/options/klinger.src.d.ts +1162 -0
- package/options/line.d.ts +1377 -8
- package/options/line.src.d.ts +1377 -8
- package/options/linearregression.d.ts +199 -5
- package/options/linearregression.src.d.ts +199 -5
- package/options/linearregressionangle.d.ts +1157 -5
- package/options/linearregressionangle.src.d.ts +1157 -5
- package/options/linearregressionintercept.d.ts +240 -0
- package/options/linearregressionintercept.src.d.ts +240 -0
- package/options/linearregressionslope.d.ts +240 -0
- package/options/linearregressionslope.src.d.ts +240 -0
- package/options/lollipop.d.ts +949 -0
- package/options/lollipop.src.d.ts +949 -0
- package/options/macd.d.ts +254 -0
- package/options/macd.src.d.ts +254 -0
- package/options/map.d.ts +150 -8
- package/options/map.src.d.ts +150 -8
- package/options/mapbubble.d.ts +1016 -8
- package/options/mapbubble.src.d.ts +1016 -8
- package/options/mapline.d.ts +994 -0
- package/options/mapline.src.d.ts +994 -0
- package/options/mappoint.d.ts +1105 -1
- package/options/mappoint.src.d.ts +1105 -1
- package/options/mfi.d.ts +181 -5
- package/options/mfi.src.d.ts +181 -5
- package/options/momentum.d.ts +215 -0
- package/options/momentum.src.d.ts +215 -0
- package/options/natr.d.ts +170 -5
- package/options/natr.src.d.ts +170 -5
- package/options/networkgraph.d.ts +365 -0
- package/options/networkgraph.src.d.ts +365 -0
- package/options/obv.d.ts +170 -5
- package/options/obv.src.d.ts +170 -5
- package/options/ohlc.d.ts +183 -7
- package/options/ohlc.src.d.ts +183 -7
- package/options/organization.d.ts +808 -0
- package/options/organization.src.d.ts +808 -0
- package/options/packedbubble.d.ts +877 -8
- package/options/packedbubble.src.d.ts +877 -8
- package/options/pareto.d.ts +1028 -0
- package/options/pareto.src.d.ts +1028 -0
- package/options/pc.d.ts +183 -8
- package/options/pc.src.d.ts +183 -8
- package/options/pictorial.d.ts +202 -2
- package/options/pictorial.src.d.ts +202 -2
- package/options/pie.d.ts +196 -8
- package/options/pie.src.d.ts +196 -8
- package/options/pivotpoints.d.ts +1199 -0
- package/options/pivotpoints.src.d.ts +1199 -0
- package/options/pointandfigure.d.ts +980 -0
- package/options/pointandfigure.src.d.ts +980 -0
- package/options/polygon.d.ts +234 -0
- package/options/polygon.src.d.ts +234 -0
- package/options/ppo.d.ts +1156 -8
- package/options/ppo.src.d.ts +1156 -8
- package/options/priceenvelopes.d.ts +1229 -0
- package/options/priceenvelopes.src.d.ts +1229 -0
- package/options/psar.d.ts +1156 -5
- package/options/psar.src.d.ts +1156 -5
- package/options/pyramid.d.ts +837 -2
- package/options/pyramid.src.d.ts +837 -2
- package/options/renko.d.ts +247 -10
- package/options/renko.src.d.ts +247 -10
- package/options/roc.d.ts +1215 -0
- package/options/roc.src.d.ts +1215 -0
- package/options/rsi.d.ts +1157 -5
- package/options/rsi.src.d.ts +1157 -5
- package/options/sankey.d.ts +276 -8
- package/options/sankey.src.d.ts +276 -8
- package/options/scatter.d.ts +3043 -1018
- package/options/scatter.src.d.ts +3043 -1018
- package/options/series.d.ts +175 -0
- package/options/series.src.d.ts +175 -0
- package/options/slowstochastic.d.ts +183 -0
- package/options/slowstochastic.src.d.ts +183 -0
- package/options/sma.d.ts +211 -0
- package/options/sma.src.d.ts +211 -0
- package/options/solidgauge.d.ts +218 -0
- package/options/solidgauge.src.d.ts +218 -0
- package/options/spline.d.ts +230 -0
- package/options/spline.src.d.ts +230 -0
- package/options/stochastic.d.ts +1170 -8
- package/options/stochastic.src.d.ts +1170 -8
- package/options/streamgraph.d.ts +1345 -8
- package/options/streamgraph.src.d.ts +1345 -8
- package/options/sunburst.d.ts +286 -9
- package/options/sunburst.src.d.ts +286 -9
- package/options/supertrend.d.ts +1208 -0
- package/options/supertrend.src.d.ts +1208 -0
- package/options/tema.d.ts +1140 -8
- package/options/tema.src.d.ts +1140 -8
- package/options/tiledwebmap.d.ts +164 -0
- package/options/tiledwebmap.src.d.ts +164 -0
- package/options/tilemap.d.ts +687 -0
- package/options/tilemap.src.d.ts +687 -0
- package/options/timeline.d.ts +282 -0
- package/options/timeline.src.d.ts +282 -0
- package/options/treegraph.d.ts +982 -0
- package/options/treegraph.src.d.ts +982 -0
- package/options/treemap.d.ts +1396 -22
- package/options/treemap.src.d.ts +1396 -22
- package/options/trendline.d.ts +211 -0
- package/options/trendline.src.d.ts +211 -0
- package/options/trix.d.ts +178 -8
- package/options/trix.src.d.ts +178 -8
- package/options/variablepie.d.ts +686 -8
- package/options/variablepie.src.d.ts +686 -8
- package/options/variwide.d.ts +178 -2
- package/options/variwide.src.d.ts +178 -2
- package/options/vbp.d.ts +576 -0
- package/options/vbp.src.d.ts +576 -0
- package/options/vector.d.ts +660 -0
- package/options/vector.src.d.ts +660 -0
- package/options/venn.d.ts +654 -0
- package/options/venn.src.d.ts +654 -0
- package/options/vwap.d.ts +1157 -5
- package/options/vwap.src.d.ts +1157 -5
- package/options/waterfall.d.ts +1254 -8
- package/options/waterfall.src.d.ts +1254 -8
- package/options/williamsr.d.ts +209 -0
- package/options/williamsr.src.d.ts +209 -0
- package/options/windbarb.d.ts +222 -2
- package/options/windbarb.src.d.ts +222 -2
- package/options/wma.d.ts +1156 -5
- package/options/wma.src.d.ts +1156 -5
- package/options/wordcloud.d.ts +682 -0
- package/options/wordcloud.src.d.ts +682 -0
- package/options/xrange.d.ts +1168 -0
- package/options/xrange.src.d.ts +1168 -0
- package/options/zigzag.d.ts +1197 -0
- package/options/zigzag.src.d.ts +1197 -0
- package/package.json +1 -1
- package/standalone-navigator.js +4 -4
- package/standalone-navigator.src.js +884 -803
- package/themes/adaptive.js +2 -2
- package/themes/adaptive.src.js +22 -43
- package/themes/avocado.js +2 -2
- package/themes/avocado.src.js +17 -38
- package/themes/dark-unica.js +2 -2
- package/themes/dark-unica.src.js +17 -38
- package/themes/grid-light.js +2 -2
- package/themes/grid-light.src.js +17 -38
- package/themes/high-contrast.js +2 -2
- package/themes/high-contrast.src.js +17 -38
- package/themes/sand-signika.js +2 -2
- package/themes/sand-signika.src.js +17 -38
- package/themes/sunset.js +2 -2
- package/themes/sunset.src.js +17 -38
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
2
2
|
/**
|
|
3
|
-
* @license Highcharts JS v13.0
|
|
3
|
+
* @license Highcharts JS v13.1.0 (2026-09-18)
|
|
4
4
|
* @module highcharts/standalone-navigator
|
|
5
5
|
*
|
|
6
6
|
* Standalone Navigator for Highcharts.
|
|
@@ -27,36 +27,17 @@ return /******/ (() => { // webpackBootstrap
|
|
|
27
27
|
/******/
|
|
28
28
|
/************************************************************************/
|
|
29
29
|
/******/ /* webpack/runtime/define property getters */
|
|
30
|
-
/******/
|
|
31
|
-
/******/
|
|
32
|
-
/******/
|
|
33
|
-
/******/ if(
|
|
34
|
-
/******/
|
|
35
|
-
/******/ while(i < definition.length) {
|
|
36
|
-
/******/ var key = definition[i++];
|
|
37
|
-
/******/ var binding = definition[i++];
|
|
38
|
-
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
39
|
-
/******/ if(binding === 0) {
|
|
40
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
41
|
-
/******/ } else {
|
|
42
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
43
|
-
/******/ }
|
|
44
|
-
/******/ } else if(binding === 0) { i++; }
|
|
45
|
-
/******/ }
|
|
46
|
-
/******/ } else {
|
|
47
|
-
/******/ for(var key in definition) {
|
|
48
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
49
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
50
|
-
/******/ }
|
|
51
|
-
/******/ }
|
|
30
|
+
/******/ // define getter/value functions for harmony exports
|
|
31
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
32
|
+
/******/ for(var key in definition) {
|
|
33
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
34
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
52
35
|
/******/ }
|
|
53
|
-
/******/ }
|
|
54
|
-
/******/ }
|
|
36
|
+
/******/ }
|
|
37
|
+
/******/ };
|
|
55
38
|
/******/
|
|
56
39
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
57
|
-
/******/ (
|
|
58
|
-
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
59
|
-
/******/ })();
|
|
40
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));
|
|
60
41
|
/******/
|
|
61
42
|
/************************************************************************/
|
|
62
43
|
let __webpack_exports__ = {};
|
|
@@ -95,7 +76,7 @@ var Globals;
|
|
|
95
76
|
* Constants
|
|
96
77
|
*
|
|
97
78
|
* */
|
|
98
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0
|
|
79
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.1.0', Globals.win = (typeof window !== 'undefined' ?
|
|
99
80
|
window :
|
|
100
81
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
101
82
|
Globals.doc = Globals.win.document, Globals.svg = !!Globals.doc?.createElementNS?.(Globals.SVG_NS, 'svg')?.createSVGRect, Globals.pageLang = Globals.doc?.documentElement?.closest('[lang]')?.lang, Globals.userAgent = Globals.win.navigator?.userAgent || '', Globals.isChrome = Globals.win.chrome, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.marginNames = [
|
|
@@ -106,14 +87,16 @@ var Globals;
|
|
|
106
87
|
], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {
|
|
107
88
|
// Checks whether the browser supports passive events, (#11353).
|
|
108
89
|
let supportsPassive = false;
|
|
109
|
-
//
|
|
110
|
-
//
|
|
90
|
+
// Accessors don't work on IE as well as passive events - instead
|
|
91
|
+
// of using polyfill, we can exclude IE totally. The getter has to
|
|
92
|
+
// be enumerable, or wrappers that shallow-copy the options never
|
|
93
|
+
// read it (#25092).
|
|
111
94
|
if (!Globals.isMS) {
|
|
112
|
-
const opts =
|
|
113
|
-
get
|
|
114
|
-
supportsPassive = true;
|
|
95
|
+
const opts = {
|
|
96
|
+
get passive() {
|
|
97
|
+
return (supportsPassive = true);
|
|
115
98
|
}
|
|
116
|
-
}
|
|
99
|
+
};
|
|
117
100
|
if (Globals.win.addEventListener && Globals.win.removeEventListener) {
|
|
118
101
|
Globals.win.addEventListener('testPassive', Globals.noop, opts);
|
|
119
102
|
Globals.win.removeEventListener('testPassive', Globals.noop, opts);
|
|
@@ -2189,6 +2172,13 @@ function extend(a, b) {
|
|
|
2189
2172
|
a = {};
|
|
2190
2173
|
}
|
|
2191
2174
|
for (n in b) { // eslint-disable-line guard-for-in
|
|
2175
|
+
// Prototype pollution (#14883). Keys like `__proto__` may arrive as
|
|
2176
|
+
// own, enumerable properties through `JSON.parse`, in which case
|
|
2177
|
+
// assigning them would mutate the prototype of the target instead of
|
|
2178
|
+
// adding a property.
|
|
2179
|
+
if (n === '__proto__' || n === 'constructor') {
|
|
2180
|
+
continue;
|
|
2181
|
+
}
|
|
2192
2182
|
a[n] = b[n];
|
|
2193
2183
|
}
|
|
2194
2184
|
return a;
|
|
@@ -5450,6 +5440,13 @@ const defaultOptions = {
|
|
|
5450
5440
|
* @since 2.0
|
|
5451
5441
|
* @apioption title.align
|
|
5452
5442
|
*/
|
|
5443
|
+
/**
|
|
5444
|
+
* A CSS class name to apply to the title's container div,
|
|
5445
|
+
* allowing unique CSS styling for each chart.
|
|
5446
|
+
*
|
|
5447
|
+
* @type {string}
|
|
5448
|
+
* @apioption title.className
|
|
5449
|
+
*/
|
|
5453
5450
|
/**
|
|
5454
5451
|
* The margin between the title and the plot area, or if a subtitle
|
|
5455
5452
|
* is present, the margin between the subtitle and the plot area.
|
|
@@ -5512,6 +5509,13 @@ const defaultOptions = {
|
|
|
5512
5509
|
* @since 2.0
|
|
5513
5510
|
* @apioption subtitle.align
|
|
5514
5511
|
*/
|
|
5512
|
+
/**
|
|
5513
|
+
* A CSS class name to apply to the subtitle's container div,
|
|
5514
|
+
* allowing unique CSS styling for each chart.
|
|
5515
|
+
*
|
|
5516
|
+
* @type {string}
|
|
5517
|
+
* @apioption subtitle.className
|
|
5518
|
+
*/
|
|
5515
5519
|
/**
|
|
5516
5520
|
* When the subtitle is floating, the plot area will not move to make
|
|
5517
5521
|
* space for it.
|
|
@@ -7644,6 +7648,10 @@ const defaultOptions = {
|
|
|
7644
7648
|
/**
|
|
7645
7649
|
* The URL for the credits label.
|
|
7646
7650
|
*
|
|
7651
|
+
* URLs that do not start with one of the
|
|
7652
|
+
* [AST.allowedReferences](https://api.highcharts.com/class-reference/Highcharts.AST#.allowedReferences),
|
|
7653
|
+
* for example `javascript:` URLs, are ignored.
|
|
7654
|
+
*
|
|
7647
7655
|
* @sample {highcharts} highcharts/credits/href/
|
|
7648
7656
|
* Custom URL and text
|
|
7649
7657
|
* @sample {highmaps} maps/credits/customized/
|
|
@@ -8617,6 +8625,7 @@ class Fx {
|
|
|
8617
8625
|
* Prepare start and end values so that the path can be animated one to one.
|
|
8618
8626
|
*
|
|
8619
8627
|
* @function Highcharts.Fx#initPath
|
|
8628
|
+
* @internal
|
|
8620
8629
|
*
|
|
8621
8630
|
* @param {Highcharts.SVGElement} elem
|
|
8622
8631
|
* The SVGElement item.
|
|
@@ -8916,7 +8925,9 @@ function animate(el, params = { pos: 1 }, opt) {
|
|
|
8916
8925
|
if (el) {
|
|
8917
8926
|
stop(el, prop);
|
|
8918
8927
|
}
|
|
8919
|
-
const fx = new Animation_Fx(el, opt, prop), d = params.d
|
|
8928
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d,
|
|
8929
|
+
// Discrete value that doesn't animate, apply at once
|
|
8930
|
+
applyImmediately = prop === 'dashstyle';
|
|
8920
8931
|
let start = 0, end = void 0, unit = '';
|
|
8921
8932
|
if (prop === 'd' && isArray(d)) {
|
|
8922
8933
|
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
@@ -8925,6 +8936,9 @@ function animate(el, params = { pos: 1 }, opt) {
|
|
|
8925
8936
|
}
|
|
8926
8937
|
else if (el?.attr) {
|
|
8927
8938
|
start = el.attr(prop);
|
|
8939
|
+
if (applyImmediately) {
|
|
8940
|
+
el.attr(prop, val);
|
|
8941
|
+
}
|
|
8928
8942
|
}
|
|
8929
8943
|
else if (el) {
|
|
8930
8944
|
start = +(getStyle(el, prop) || 0);
|
|
@@ -8939,7 +8953,7 @@ function animate(el, params = { pos: 1 }, opt) {
|
|
|
8939
8953
|
end = end.replace(/px/g, ''); // #4351
|
|
8940
8954
|
}
|
|
8941
8955
|
// Empty dashstyle animation crashes treemap on hover
|
|
8942
|
-
if (defined(end)) {
|
|
8956
|
+
if (defined(end) && !applyImmediately) {
|
|
8943
8957
|
fx.run(start, end, unit);
|
|
8944
8958
|
}
|
|
8945
8959
|
});
|
|
@@ -9261,17 +9275,25 @@ class AST {
|
|
|
9261
9275
|
markup, 'text/html');
|
|
9262
9276
|
}
|
|
9263
9277
|
catch {
|
|
9264
|
-
//
|
|
9265
|
-
//
|
|
9266
|
-
//
|
|
9267
|
-
//
|
|
9268
|
-
//
|
|
9269
|
-
//
|
|
9278
|
+
// Due to a Chromium issue where chart redraws are triggered by a
|
|
9279
|
+
// `beforeprint` event (#16931),
|
|
9280
|
+
// https://issues.chromium.org/issues/40222135, the Trusted
|
|
9281
|
+
// Types `createHTML` callback can throw "The provided callback
|
|
9282
|
+
// is no longer runnable" while the browser is mid-print. Retry
|
|
9283
|
+
// with the raw string - `DOMParser` itself is not a Trusted
|
|
9284
|
+
// Types sink, so parsing it directly is safe.
|
|
9285
|
+
try {
|
|
9286
|
+
doc = new DOMParser().parseFromString(markup, 'text/html');
|
|
9287
|
+
}
|
|
9288
|
+
catch {
|
|
9289
|
+
// Ignore, fall through to the inert-document fallback below.
|
|
9290
|
+
}
|
|
9270
9291
|
}
|
|
9271
9292
|
if (!doc) {
|
|
9272
|
-
|
|
9273
|
-
|
|
9274
|
-
doc =
|
|
9293
|
+
// Never assign untrusted markup to a live document's innerHTML.
|
|
9294
|
+
// Parse into a detached, inert document instead.
|
|
9295
|
+
doc = Core_Globals.doc.implementation.createHTMLDocument('');
|
|
9296
|
+
doc.body.innerHTML = markup;
|
|
9275
9297
|
}
|
|
9276
9298
|
const appendChildNodes = (node, addTo) => {
|
|
9277
9299
|
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
@@ -9508,7 +9530,6 @@ AST.allowedTags = [
|
|
|
9508
9530
|
'span',
|
|
9509
9531
|
'stop',
|
|
9510
9532
|
'strong',
|
|
9511
|
-
'style',
|
|
9512
9533
|
'sub',
|
|
9513
9534
|
'sup',
|
|
9514
9535
|
'svg',
|
|
@@ -10288,6 +10309,7 @@ class SVGElement {
|
|
|
10288
10309
|
let ret = (this[key + 'Value'] ??
|
|
10289
10310
|
this[key] ??
|
|
10290
10311
|
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10312
|
+
this.box?.[key] ?? // For labels, when animating border radius
|
|
10291
10313
|
0);
|
|
10292
10314
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10293
10315
|
ret = parseFloat(ret);
|
|
@@ -12882,7 +12904,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12882
12904
|
* Path
|
|
12883
12905
|
*/
|
|
12884
12906
|
function callout(x, y, w, h, options) {
|
|
12885
|
-
const arrowLength = 6, halfDistance = 6, r = Math.min((options?.r) || 0, w, h), safeDistance = r + halfDistance, anchorX = options?.anchorX, anchorY = options?.anchorY || 0;
|
|
12907
|
+
const arrowLength = options?.arrowLength ?? 6, halfDistance = 6, r = Math.min((options?.r) || 0, w, h), safeDistance = r + halfDistance, anchorX = options?.anchorX, anchorY = options?.anchorY || 0;
|
|
12886
12908
|
const path = roundedRect(x, y, w, h, { r });
|
|
12887
12909
|
if (!isNumber(anchorX)) {
|
|
12888
12910
|
return path;
|
|
@@ -13506,8 +13528,12 @@ class TextBuilder {
|
|
|
13506
13528
|
this.truncate(textNode, textNode.textContent || '', void 0, 0,
|
|
13507
13529
|
// Target width
|
|
13508
13530
|
width, ellipsisWidth, stringWithEllipsis);
|
|
13509
|
-
|
|
13510
|
-
|
|
13531
|
+
// If there is still text left, add an ellipsis to
|
|
13532
|
+
// the end of the line
|
|
13533
|
+
if (textNode.textContent) {
|
|
13534
|
+
textNode.textContent = textNode.textContent
|
|
13535
|
+
?.replace('\u2026', '') + '\u2026';
|
|
13536
|
+
}
|
|
13511
13537
|
}
|
|
13512
13538
|
break;
|
|
13513
13539
|
}
|
|
@@ -13933,7 +13959,7 @@ class SVGRenderer {
|
|
|
13933
13959
|
this.url = this.getReferenceURL();
|
|
13934
13960
|
// Add description
|
|
13935
13961
|
const desc = this.createElement('desc').add();
|
|
13936
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0
|
|
13962
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.1.0'));
|
|
13937
13963
|
this.defs = this.createElement('defs').add();
|
|
13938
13964
|
this.allowHTML = allowHTML;
|
|
13939
13965
|
this.forExport = forExport;
|
|
@@ -15772,7 +15798,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15772
15798
|
// Some properties require other properties to be set
|
|
15773
15799
|
if (styles?.textOverflow === 'ellipsis') {
|
|
15774
15800
|
styles.overflow = 'hidden';
|
|
15775
|
-
|
|
15801
|
+
// With a line clamp, the text should wrap and ellipsis at the
|
|
15802
|
+
// clamped line instead of staying on one line (#24724)
|
|
15803
|
+
if (!(styles.lineClamp ?? this.styles.lineClamp)) {
|
|
15804
|
+
styles.whiteSpace = 'nowrap';
|
|
15805
|
+
}
|
|
15776
15806
|
}
|
|
15777
15807
|
// Apply line clamp
|
|
15778
15808
|
if (styles?.lineClamp) {
|
|
@@ -16961,15 +16991,16 @@ var AxisDefaults;
|
|
|
16961
16991
|
/**
|
|
16962
16992
|
* The label's pixel distance from the perimeter of the plot area.
|
|
16963
16993
|
* On cartesian charts, this is overridden if the `labels.y` setting
|
|
16964
|
-
* is set.
|
|
16994
|
+
* is set. Defaults to 15 unless the labels are aligned inside the
|
|
16995
|
+
* plot area, in which case it defaults to 0.
|
|
16965
16996
|
*
|
|
16966
16997
|
* @sample {highcharts} highcharts/yaxis/labels-distance/
|
|
16967
16998
|
* Polar chart, labels centered under the arc
|
|
16968
16999
|
*
|
|
16969
17000
|
* @type {number}
|
|
16970
17001
|
* @product highcharts gantt
|
|
17002
|
+
* @apioption xAxis.labels.distance
|
|
16971
17003
|
*/
|
|
16972
|
-
distance: 15,
|
|
16973
17004
|
/**
|
|
16974
17005
|
* Enable or disable the axis labels.
|
|
16975
17006
|
*
|
|
@@ -17227,18 +17258,18 @@ var AxisDefaults;
|
|
|
17227
17258
|
* @apioption xAxis.top
|
|
17228
17259
|
*/
|
|
17229
17260
|
/**
|
|
17230
|
-
* Index of another axis that this axis is linked to.
|
|
17231
|
-
* linked to a master axis, it will take the same
|
|
17232
|
-
* the master, but as assigned by min or max or by
|
|
17233
|
-
* It can be used to show additional info, or to ease
|
|
17234
|
-
* chart by duplicating the scales.
|
|
17261
|
+
* Index or [id](#xAxis.id) of another axis that this axis is linked to.
|
|
17262
|
+
* When an axis is linked to a master axis, it will take the same
|
|
17263
|
+
* extremes as the master, but as assigned by min or max or by
|
|
17264
|
+
* `setExtremes`. It can be used to show additional info, or to ease
|
|
17265
|
+
* reading the chart by duplicating the scales.
|
|
17235
17266
|
*
|
|
17236
17267
|
* @sample {highcharts} highcharts/xaxis/linkedto/
|
|
17237
17268
|
* Different string formats of the same date
|
|
17238
17269
|
* @sample {highcharts} highcharts/yaxis/linkedto/
|
|
17239
17270
|
* Y values on both sides
|
|
17240
17271
|
*
|
|
17241
|
-
* @type {number}
|
|
17272
|
+
* @type {number|string}
|
|
17242
17273
|
* @since 2.0.2
|
|
17243
17274
|
* @product highcharts highstock gantt
|
|
17244
17275
|
* @apioption xAxis.linkedTo
|
|
@@ -19358,7 +19389,7 @@ class Tick {
|
|
|
19358
19389
|
*/
|
|
19359
19390
|
addLabel() {
|
|
19360
19391
|
const tick = this, axis = tick.axis, options = axis.options, chart = axis.chart, categories = axis.categories, log = axis.logarithmic, names = axis.names, pos = tick.pos, labelOptions = (tick.options?.labels ?? options.labels), tickPositions = axis.tickPositions, isFirst = pos === tickPositions[0], isLast = pos === tickPositions[tickPositions.length - 1], tickPositionInfo = tickPositions.info, boundary = tickPositionInfo?.boundaryTicks[pos], DTLFormats = options.dateTimeLabelFormats;
|
|
19361
|
-
let
|
|
19392
|
+
let dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19362
19393
|
// The context value
|
|
19363
19394
|
let value = this.parameters.category || (categories ?
|
|
19364
19395
|
(categories[pos] ?? names[pos] ?? pos) :
|
|
@@ -19444,10 +19475,15 @@ class Tick {
|
|
|
19444
19475
|
}
|
|
19445
19476
|
return axis.defaultLabelFormatter.call(ctx);
|
|
19446
19477
|
};
|
|
19447
|
-
|
|
19478
|
+
/**
|
|
19479
|
+
* The rendered text label of the tick.
|
|
19480
|
+
* @name Highcharts.Tick#label
|
|
19481
|
+
* @type {Highcharts.SVGElement|undefined}
|
|
19482
|
+
*/
|
|
19483
|
+
tick.label = tick.createLabel(labelFormatter.call(ctx, ctx), labelOptions);
|
|
19448
19484
|
// Set up conditional formatting based on the format list if existing.
|
|
19449
|
-
const list = dateTimeLabelFormats?.list;
|
|
19450
|
-
if (list) {
|
|
19485
|
+
const list = dateTimeLabelFormats?.list, label = tick.label;
|
|
19486
|
+
if (list && label) {
|
|
19451
19487
|
tick.shortenLabel = function () {
|
|
19452
19488
|
for (i = 0; i < list.length; i++) {
|
|
19453
19489
|
extend(ctx, { dateTimeLabelFormat: list[i] });
|
|
@@ -19455,43 +19491,17 @@ class Tick {
|
|
|
19455
19491
|
text: labelFormatter.call(ctx, ctx)
|
|
19456
19492
|
});
|
|
19457
19493
|
if (label.getBBox().width <
|
|
19458
|
-
axis.getSlotWidth(tick) - 2 *
|
|
19459
|
-
(labelOptions.padding || 0)) {
|
|
19494
|
+
axis.getSlotWidth(tick) - 2 * (labelOptions.padding || 0)) {
|
|
19460
19495
|
return;
|
|
19461
19496
|
}
|
|
19462
19497
|
}
|
|
19463
|
-
label.attr({
|
|
19464
|
-
text: ''
|
|
19465
|
-
});
|
|
19498
|
+
label.attr({ text: '' });
|
|
19466
19499
|
};
|
|
19467
19500
|
}
|
|
19468
19501
|
else {
|
|
19469
19502
|
// #15692
|
|
19470
19503
|
tick.shortenLabel = void 0;
|
|
19471
19504
|
}
|
|
19472
|
-
// First call
|
|
19473
|
-
if (!label) {
|
|
19474
|
-
/**
|
|
19475
|
-
* The rendered text label of the tick.
|
|
19476
|
-
* @name Highcharts.Tick#label
|
|
19477
|
-
* @type {Highcharts.SVGElement|undefined}
|
|
19478
|
-
*/
|
|
19479
|
-
tick.label = label = tick.createLabel(text, labelOptions);
|
|
19480
|
-
// Base value to detect change for new calls to getBBox
|
|
19481
|
-
tick.rotation = 0;
|
|
19482
|
-
// Update
|
|
19483
|
-
}
|
|
19484
|
-
else if (label.textStr !== text) {
|
|
19485
|
-
// When resetting text, also reset the width if dynamically set
|
|
19486
|
-
// (#8809)
|
|
19487
|
-
if (label.textWidth &&
|
|
19488
|
-
!labelOptions.style.width &&
|
|
19489
|
-
!label.styles.width) {
|
|
19490
|
-
label.css({ width: void 0 });
|
|
19491
|
-
}
|
|
19492
|
-
label.attr({ text });
|
|
19493
|
-
label.textPxLength = label.getBBox().width;
|
|
19494
|
-
}
|
|
19495
19505
|
}
|
|
19496
19506
|
/**
|
|
19497
19507
|
* Render and return the label of the tick.
|
|
@@ -19499,18 +19509,33 @@ class Tick {
|
|
|
19499
19509
|
* @internal
|
|
19500
19510
|
* @function Highcharts.Tick#createLabel
|
|
19501
19511
|
*/
|
|
19502
|
-
createLabel(
|
|
19503
|
-
const axis = this.axis, { renderer, styledMode } = axis.chart,
|
|
19504
|
-
|
|
19505
|
-
|
|
19506
|
-
|
|
19507
|
-
|
|
19512
|
+
createLabel(text, labelOptions, xy) {
|
|
19513
|
+
const axis = this.axis, { renderer, styledMode } = axis.chart, style = labelOptions.style, whiteSpace = style.whiteSpace;
|
|
19514
|
+
let label = this.label;
|
|
19515
|
+
if (defined(text) && labelOptions.enabled) {
|
|
19516
|
+
label || (label = renderer
|
|
19517
|
+
.text(text, xy?.x, xy?.y, labelOptions.useHTML)
|
|
19518
|
+
.add(axis.labelGroup));
|
|
19519
|
+
}
|
|
19520
|
+
else if (label) {
|
|
19521
|
+
label = label.destroy();
|
|
19522
|
+
// Reset so it doesn't animate when re-enabled
|
|
19523
|
+
this.isNewLabel = true;
|
|
19524
|
+
}
|
|
19508
19525
|
// Un-rotated length
|
|
19509
|
-
if (label) {
|
|
19526
|
+
if (label && (label.labelStyle !== style || text !== label.textStr)) {
|
|
19527
|
+
// Store a reference to the current style object to avoid running
|
|
19528
|
+
// this block on every render call unless something actually
|
|
19529
|
+
// changes.
|
|
19530
|
+
label.labelStyle = style;
|
|
19531
|
+
if (text !== label.textStr) {
|
|
19532
|
+
label.attr({ text });
|
|
19533
|
+
delete label.textPxLength;
|
|
19534
|
+
}
|
|
19510
19535
|
if (!styledMode) {
|
|
19511
|
-
label.css(merge(
|
|
19536
|
+
label.css(merge(style));
|
|
19512
19537
|
}
|
|
19513
|
-
label.textPxLength = label.getBBox().width;
|
|
19538
|
+
label.textPxLength ?? (label.textPxLength = label.getBBox().width);
|
|
19514
19539
|
// Apply the white-space setting after we read the full text width
|
|
19515
19540
|
if (!styledMode && whiteSpace) {
|
|
19516
19541
|
label.css({ whiteSpace });
|
|
@@ -19582,19 +19607,27 @@ class Tick {
|
|
|
19582
19607
|
* @internal
|
|
19583
19608
|
*/
|
|
19584
19609
|
getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {
|
|
19585
|
-
const axis = this.axis, transA = axis
|
|
19586
|
-
axis.
|
|
19610
|
+
const axis = this.axis, { labelAlign, side, staggerLines, transA } = axis, reversed = ( // #7911
|
|
19611
|
+
axis.linkedParent ?
|
|
19587
19612
|
axis.linkedParent.reversed :
|
|
19588
|
-
axis.reversed),
|
|
19613
|
+
axis.reversed), rotCorr = axis.tickRotCorr || { x: 0, y: 0 },
|
|
19589
19614
|
// Adjust for label alignment if we use reserveSpace: true (#5286)
|
|
19590
19615
|
labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?
|
|
19591
|
-
-axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :
|
|
19592
|
-
0), distance = labelOptions.distance
|
|
19616
|
+
-(axis.labelOffset || 0) * (axis.labelAlign === 'center' ? 0.5 : 1) :
|
|
19617
|
+
0), distance = labelOptions.distance ?? (
|
|
19618
|
+
// If the label is aligned inside the plot area, default to 0.
|
|
19619
|
+
// This is default behavior or Stock y-axis labels.
|
|
19620
|
+
(side === 1 &&
|
|
19621
|
+
labelAlign === 'right' &&
|
|
19622
|
+
!labelOptions.reserveSpace) ? 0 :
|
|
19623
|
+
(side === 3 &&
|
|
19624
|
+
labelAlign === 'left' &&
|
|
19625
|
+
!labelOptions.reserveSpace) ? 0 : 15), pos = {};
|
|
19593
19626
|
let yOffset, line;
|
|
19594
|
-
if (
|
|
19627
|
+
if (side === 0) {
|
|
19595
19628
|
yOffset = label.rotation ? -distance : -label.getBBox().height;
|
|
19596
19629
|
}
|
|
19597
|
-
else if (
|
|
19630
|
+
else if (side === 2) {
|
|
19598
19631
|
yOffset = rotCorr.y + distance;
|
|
19599
19632
|
}
|
|
19600
19633
|
else {
|
|
@@ -19603,12 +19636,12 @@ class Tick {
|
|
|
19603
19636
|
(rotCorr.y - label.getBBox(false, 0).height / 2);
|
|
19604
19637
|
}
|
|
19605
19638
|
if (defined(labelOptions.y)) {
|
|
19606
|
-
yOffset =
|
|
19639
|
+
yOffset = side === 0 && axis.horiz ?
|
|
19607
19640
|
labelOptions.y + yOffset :
|
|
19608
19641
|
labelOptions.y;
|
|
19609
19642
|
}
|
|
19610
19643
|
x = x +
|
|
19611
|
-
(labelOptions.x ?? [0, 1, 0, -1][
|
|
19644
|
+
(labelOptions.x ?? [0, 1, 0, -1][side] * distance) +
|
|
19612
19645
|
labelOffsetCorrection +
|
|
19613
19646
|
rotCorr.x -
|
|
19614
19647
|
(tickmarkOffset && horiz ?
|
|
@@ -19663,7 +19696,7 @@ class Tick {
|
|
|
19663
19696
|
* @function Highcharts.Tick#handleOverflow
|
|
19664
19697
|
*/
|
|
19665
19698
|
handleOverflow(xy) {
|
|
19666
|
-
const tick = this, axis = this
|
|
19699
|
+
const tick = this, { axis, label } = this, labelOptions = axis.options.labels, pxPos = xy.x, { chartWidth, spacing } = axis.chart, leftBound = axis.labelLeft ?? Math.min(axis.pos, spacing[3]), rightBound = (axis.labelRight ?? Math.max(!axis.isRadial ? axis.pos + axis.len : 0, chartWidth - spacing[1])), rotation = label?.rotation || 0, factor = getAlignFactor(axis.labelAlign || label?.attr('align')), labelWidth = label?.getBBox().width || 0, slotWidth = axis.getSlotWidth(tick), xCorrection = factor;
|
|
19667
19700
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19668
19701
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19669
19702
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19711,10 +19744,10 @@ class Tick {
|
|
|
19711
19744
|
tick.shortenLabel();
|
|
19712
19745
|
}
|
|
19713
19746
|
else {
|
|
19714
|
-
label.css(
|
|
19747
|
+
label.css({
|
|
19715
19748
|
width: Math.floor(textWidth) + 'px',
|
|
19716
19749
|
lineClamp: axis.isRadial ? 0 : 1
|
|
19717
|
-
})
|
|
19750
|
+
});
|
|
19718
19751
|
}
|
|
19719
19752
|
}
|
|
19720
19753
|
}
|
|
@@ -19730,8 +19763,11 @@ class Tick {
|
|
|
19730
19763
|
* @param {number} [opacity]
|
|
19731
19764
|
*/
|
|
19732
19765
|
render(index, old, opacity) {
|
|
19733
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = (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;
|
|
19734
|
-
|
|
19766
|
+
const tick = this, axis = tick.axis, horiz = (old ? axis.old?.horiz : void 0) ?? axis.horiz, pos = tick.pos, tickmarkOffset = (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;
|
|
19767
|
+
if (!axis.visible) {
|
|
19768
|
+
opacity = 0;
|
|
19769
|
+
}
|
|
19770
|
+
const labelOpacity = opacity ?? 1;
|
|
19735
19771
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19736
19772
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19737
19773
|
// axes in Safari.
|
|
@@ -19759,25 +19795,21 @@ class Tick {
|
|
|
19759
19795
|
* @param {number} opacity The opacity of the grid line
|
|
19760
19796
|
*/
|
|
19761
19797
|
renderGridLine(old, opacity) {
|
|
19762
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), renderer = axis.chart
|
|
19763
|
-
let gridLine = tick.gridLine,
|
|
19798
|
+
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), { renderer, styledMode } = axis.chart;
|
|
19799
|
+
let gridLine = tick.gridLine, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19764
19800
|
if (tick.type === 'minor') {
|
|
19765
19801
|
gridLineWidth = options.minorGridLineWidth;
|
|
19766
19802
|
gridLineColor = options.minorGridLineColor;
|
|
19767
19803
|
dashStyle = options.minorGridLineDashStyle;
|
|
19768
19804
|
}
|
|
19805
|
+
// Apply the stroke width initially so the crisping works
|
|
19806
|
+
if (!styledMode) {
|
|
19807
|
+
attribs['stroke-width'] = gridLineWidth || 0;
|
|
19808
|
+
}
|
|
19769
19809
|
if (!gridLine) {
|
|
19770
|
-
if (!axis.chart.styledMode) {
|
|
19771
|
-
attribs.stroke = gridLineColor;
|
|
19772
|
-
attribs['stroke-width'] = gridLineWidth || 0;
|
|
19773
|
-
attribs.dashstyle = dashStyle;
|
|
19774
|
-
}
|
|
19775
19810
|
if (!type) {
|
|
19776
19811
|
attribs.zIndex = 1;
|
|
19777
19812
|
}
|
|
19778
|
-
if (old) {
|
|
19779
|
-
opacity = 0;
|
|
19780
|
-
}
|
|
19781
19813
|
/**
|
|
19782
19814
|
* The rendered grid line of the tick.
|
|
19783
19815
|
* @name Highcharts.Tick#gridLine
|
|
@@ -19788,22 +19820,24 @@ class Tick {
|
|
|
19788
19820
|
.addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')
|
|
19789
19821
|
.add(axis.gridGroup);
|
|
19790
19822
|
}
|
|
19791
|
-
|
|
19792
|
-
|
|
19793
|
-
|
|
19794
|
-
|
|
19795
|
-
|
|
19796
|
-
|
|
19797
|
-
|
|
19798
|
-
|
|
19823
|
+
// Grid line path
|
|
19824
|
+
const d = axis.getPlotLinePath({
|
|
19825
|
+
value: pos + tickmarkOffset,
|
|
19826
|
+
lineWidth: gridLine.strokeWidth(),
|
|
19827
|
+
force: 'pass',
|
|
19828
|
+
old: old,
|
|
19829
|
+
acrossPanes: false // #18025
|
|
19830
|
+
});
|
|
19831
|
+
if (d) {
|
|
19832
|
+
attribs.d = d;
|
|
19833
|
+
attribs.opacity = old ? 0 : opacity;
|
|
19834
|
+
if (!styledMode) {
|
|
19835
|
+
attribs.stroke = gridLineColor;
|
|
19836
|
+
attribs.dashstyle = dashStyle;
|
|
19837
|
+
}
|
|
19799
19838
|
// If the parameter 'old' is set, the current call will be followed
|
|
19800
19839
|
// by another call, therefore do not do any animations this time
|
|
19801
|
-
|
|
19802
|
-
gridLine[old || tick.isNew ? 'attr' : 'animate']({
|
|
19803
|
-
d: gridLinePath,
|
|
19804
|
-
opacity: opacity
|
|
19805
|
-
});
|
|
19806
|
-
}
|
|
19840
|
+
gridLine[old || tick.isNew ? 'attr' : 'animate'](attribs);
|
|
19807
19841
|
}
|
|
19808
19842
|
}
|
|
19809
19843
|
/**
|
|
@@ -19815,13 +19849,13 @@ class Tick {
|
|
|
19815
19849
|
* @param {number} opacity The opacity of the mark
|
|
19816
19850
|
*/
|
|
19817
19851
|
renderMark(xy, opacity) {
|
|
19818
|
-
const tick = this, axis = tick.axis, options = axis
|
|
19852
|
+
const tick = this, axis = tick.axis, { chart, options } = axis, renderer = chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'] ?? (!type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
|
|
19819
19853
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19820
19854
|
let mark = tick.mark;
|
|
19821
|
-
const
|
|
19822
|
-
if (tickSize) {
|
|
19855
|
+
const verb = mark ? 'animate' : 'attr';
|
|
19856
|
+
if (tickSize || mark) {
|
|
19823
19857
|
// Negate the length
|
|
19824
|
-
if (axis.opposite) {
|
|
19858
|
+
if (axis.opposite && tickSize) {
|
|
19825
19859
|
tickSize[0] = -tickSize[0];
|
|
19826
19860
|
}
|
|
19827
19861
|
// First time, create it
|
|
@@ -19834,16 +19868,16 @@ class Tick {
|
|
|
19834
19868
|
tick.mark = mark = renderer.path()
|
|
19835
19869
|
.addClass('highcharts-' + (type ? type + '-' : '') + 'tick')
|
|
19836
19870
|
.add(axis.axisGroup);
|
|
19837
|
-
if (!axis.chart.styledMode) {
|
|
19838
|
-
mark.attr({
|
|
19839
|
-
stroke: tickColor,
|
|
19840
|
-
'stroke-width': tickWidth
|
|
19841
|
-
});
|
|
19842
|
-
}
|
|
19843
19871
|
}
|
|
19844
|
-
|
|
19845
|
-
|
|
19846
|
-
|
|
19872
|
+
if (!chart.styledMode) {
|
|
19873
|
+
mark[verb]({
|
|
19874
|
+
stroke: tickColor,
|
|
19875
|
+
'stroke-width': tickWidth
|
|
19876
|
+
});
|
|
19877
|
+
}
|
|
19878
|
+
mark[verb]({
|
|
19879
|
+
d: tick.getMarkPath(x, y, tickSize?.[0] || 0, mark.strokeWidth(), axis.horiz, renderer),
|
|
19880
|
+
opacity: tickSize ? opacity : 0
|
|
19847
19881
|
});
|
|
19848
19882
|
}
|
|
19849
19883
|
}
|
|
@@ -20005,6 +20039,11 @@ extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
|
20005
20039
|
* Axis options
|
|
20006
20040
|
*/
|
|
20007
20041
|
class Axis {
|
|
20042
|
+
/* *
|
|
20043
|
+
*
|
|
20044
|
+
* Static Properties
|
|
20045
|
+
*
|
|
20046
|
+
* */
|
|
20008
20047
|
/* *
|
|
20009
20048
|
*
|
|
20010
20049
|
* Constructors
|
|
@@ -20081,9 +20120,11 @@ class Axis {
|
|
|
20081
20120
|
* @name Highcharts.Axis#side
|
|
20082
20121
|
* @type {number}
|
|
20083
20122
|
*/
|
|
20084
|
-
axis.side =
|
|
20085
|
-
(
|
|
20086
|
-
|
|
20123
|
+
axis.side = userOptions.side ??
|
|
20124
|
+
(horiz ?
|
|
20125
|
+
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
20126
|
+
(axis.opposite ? 1 : 3) // Right : left
|
|
20127
|
+
);
|
|
20087
20128
|
/**
|
|
20088
20129
|
* Current options for the axis after merge of defaults and user's
|
|
20089
20130
|
* options.
|
|
@@ -20094,8 +20135,8 @@ class Axis {
|
|
|
20094
20135
|
axis.setOptions(userOptions);
|
|
20095
20136
|
const options = axis.options, labelsOptions = options.labels;
|
|
20096
20137
|
// Set the type and fire an event
|
|
20097
|
-
axis.type
|
|
20098
|
-
axis.uniqueNames
|
|
20138
|
+
axis.type = options.type || 'linear';
|
|
20139
|
+
axis.uniqueNames = options.uniqueNames ?? true;
|
|
20099
20140
|
fireEvent(axis, 'afterSetType');
|
|
20100
20141
|
/**
|
|
20101
20142
|
* User's options for this axis without defaults.
|
|
@@ -20112,7 +20153,7 @@ class Axis {
|
|
|
20112
20153
|
* @name Highcharts.Axis#reversed
|
|
20113
20154
|
* @type {boolean}
|
|
20114
20155
|
*/
|
|
20115
|
-
axis.reversed =
|
|
20156
|
+
axis.reversed = options.reversed;
|
|
20116
20157
|
axis.visible = options.visible;
|
|
20117
20158
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20118
20159
|
// Initial categories
|
|
@@ -20134,16 +20175,12 @@ class Axis {
|
|
|
20134
20175
|
*/
|
|
20135
20176
|
axis.categories = (isArray(options.categories) && options.categories) ||
|
|
20136
20177
|
(axis.hasNames ? [] : void 0);
|
|
20137
|
-
|
|
20138
|
-
// faster than array searching (#7725). Preserve on update (#3830)
|
|
20139
|
-
axis.names || (axis.names = []);
|
|
20178
|
+
axis.names || (axis.names = []); // Preserve on update (#3830)
|
|
20140
20179
|
axis.namesMap || (axis.namesMap = {});
|
|
20141
20180
|
// Placeholder for plotLines and plotBands groups
|
|
20142
|
-
axis.plotLinesAndBandsGroups = {};
|
|
20181
|
+
axis.plotLinesAndBandsGroups || (axis.plotLinesAndBandsGroups = {});
|
|
20143
20182
|
// Shorthand types
|
|
20144
20183
|
axis.positiveValuesOnly = !!axis.logarithmic;
|
|
20145
|
-
// Flag, if axis is linked to another axis
|
|
20146
|
-
axis.isLinked = defined(options.linkedTo);
|
|
20147
20184
|
/**
|
|
20148
20185
|
* List of major ticks mapped by position on axis.
|
|
20149
20186
|
*
|
|
@@ -20152,8 +20189,8 @@ class Axis {
|
|
|
20152
20189
|
* @name Highcharts.Axis#ticks
|
|
20153
20190
|
* @type {Highcharts.Dictionary<Highcharts.Tick>}
|
|
20154
20191
|
*/
|
|
20155
|
-
axis.ticks = {};
|
|
20156
|
-
axis.labelEdge = [];
|
|
20192
|
+
axis.ticks || (axis.ticks = {});
|
|
20193
|
+
axis.labelEdge || (axis.labelEdge = []);
|
|
20157
20194
|
/**
|
|
20158
20195
|
* List of minor ticks mapped by position on the axis.
|
|
20159
20196
|
*
|
|
@@ -20162,11 +20199,9 @@ class Axis {
|
|
|
20162
20199
|
* @name Highcharts.Axis#minorTicks
|
|
20163
20200
|
* @type {Highcharts.Dictionary<Highcharts.Tick>}
|
|
20164
20201
|
*/
|
|
20165
|
-
axis.minorTicks = {};
|
|
20166
|
-
// List of plotLines/Bands
|
|
20167
|
-
axis.plotLinesAndBands = [];
|
|
20202
|
+
axis.minorTicks || (axis.minorTicks = {});
|
|
20168
20203
|
// Alternate bands
|
|
20169
|
-
axis.alternateBands = {};
|
|
20204
|
+
axis.alternateBands || (axis.alternateBands = {});
|
|
20170
20205
|
/**
|
|
20171
20206
|
* The length of the axis in terms of pixels.
|
|
20172
20207
|
*
|
|
@@ -20200,7 +20235,7 @@ class Axis {
|
|
|
20200
20235
|
* @name Highcharts.Axis#crosshair
|
|
20201
20236
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20202
20237
|
*/
|
|
20203
|
-
const crosshair = options.crosshair ?? splat(chart.options.tooltip
|
|
20238
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip?.crosshairs)[isXAxis ? 0 : 1];
|
|
20204
20239
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20205
20240
|
// Register. Don't add it again on Axis.update().
|
|
20206
20241
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20255,14 +20290,14 @@ class Axis {
|
|
|
20255
20290
|
},
|
|
20256
20291
|
margin: 15
|
|
20257
20292
|
} :
|
|
20258
|
-
// Left and right axis, title rotated 90 or
|
|
20293
|
+
// Left and right axis, title rotated -90 or 90 degrees
|
|
20259
20294
|
// respectively
|
|
20260
20295
|
{
|
|
20261
20296
|
labels: {
|
|
20262
20297
|
padding: 1
|
|
20263
20298
|
},
|
|
20264
20299
|
title: {
|
|
20265
|
-
rotation: 90
|
|
20300
|
+
rotation: this.side === 1 ? 90 : -90
|
|
20266
20301
|
}
|
|
20267
20302
|
};
|
|
20268
20303
|
this.options = merge(sideSpecific,
|
|
@@ -20476,6 +20511,9 @@ class Axis {
|
|
|
20476
20511
|
if (!axis.isRadial) {
|
|
20477
20512
|
returnValue = correctFloat(returnValue);
|
|
20478
20513
|
}
|
|
20514
|
+
if (Math.abs(returnValue) < 1e-9) {
|
|
20515
|
+
returnValue = 0;
|
|
20516
|
+
}
|
|
20479
20517
|
}
|
|
20480
20518
|
return returnValue;
|
|
20481
20519
|
}
|
|
@@ -20531,7 +20569,7 @@ class Axis {
|
|
|
20531
20569
|
* The SVG path definition for the plot line.
|
|
20532
20570
|
*/
|
|
20533
20571
|
getPlotLinePath(options) {
|
|
20534
|
-
const axis = this,
|
|
20572
|
+
const axis = this, { chart, left, top, transB } = axis, { lineWidth, old, value } = options, horiz = (old ? axis.old?.horiz : void 0) ?? axis.horiz, cHeight = (old && chart.oldChartHeight) || chart.chartHeight, cWidth = (old && chart.oldChartWidth) || chart.chartWidth;
|
|
20535
20573
|
let translatedValue = options.translatedValue, force = options.force, x1, y1, x2, y2, skip;
|
|
20536
20574
|
// eslint-disable-next-line valid-jsdoc
|
|
20537
20575
|
/**
|
|
@@ -20569,17 +20607,17 @@ class Axis {
|
|
|
20569
20607
|
skip = true;
|
|
20570
20608
|
force = false; // #7175, don't force it when path is invalid
|
|
20571
20609
|
}
|
|
20572
|
-
else if (
|
|
20573
|
-
y1 =
|
|
20610
|
+
else if (horiz) {
|
|
20611
|
+
y1 = top;
|
|
20574
20612
|
y2 = cHeight - axis.bottom + (axis.options.isInternal ?
|
|
20575
20613
|
0 :
|
|
20576
20614
|
(chart.scrollablePixelsY || 0)); // #20354, scrollablePixelsY shouldn't be used for navigator
|
|
20577
|
-
x1 = x2 = between(x1,
|
|
20615
|
+
x1 = x2 = between(x1, left, left + axis.width);
|
|
20578
20616
|
}
|
|
20579
20617
|
else {
|
|
20580
|
-
x1 =
|
|
20618
|
+
x1 = left;
|
|
20581
20619
|
x2 = cWidth - axis.right + (chart.scrollablePixelsX || 0);
|
|
20582
|
-
y1 = y2 = between(y1,
|
|
20620
|
+
y1 = y2 = between(y1, top, top + axis.height);
|
|
20583
20621
|
}
|
|
20584
20622
|
e.path = skip && !force ?
|
|
20585
20623
|
void 0 :
|
|
@@ -21008,7 +21046,7 @@ class Axis {
|
|
|
21008
21046
|
* @emits Highcharts.Axis#event:foundExtremes
|
|
21009
21047
|
*/
|
|
21010
21048
|
setTickInterval(secondPass) {
|
|
21011
|
-
const axis = this, { categories, chart, dataMax, dataMin, dateTime, isXAxis, logarithmic, options, softThreshold } = axis, time = chart.time, threshold = isNumber(axis.threshold) ? axis.threshold : void 0, minRange = axis.minRange || 0, { ceiling, floor,
|
|
21049
|
+
const axis = this, { categories, chart, dataMax, dataMin, dateTime, isXAxis, logarithmic, options, softThreshold } = axis, time = chart.time, threshold = isNumber(axis.threshold) ? axis.threshold : void 0, minRange = axis.minRange || 0, { ceiling, floor, softMax, softMin } = options, linkedParent = axis.linkedParent, tickPixelIntervalOption = options.tickPixelInterval;
|
|
21012
21050
|
let maxPadding = options.maxPadding, minPadding = options.minPadding, range = 0, linkedParentExtremes,
|
|
21013
21051
|
// Only non-negative tickInterval is valid, #12961
|
|
21014
21052
|
tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?
|
|
@@ -21021,7 +21059,6 @@ class Axis {
|
|
|
21021
21059
|
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
21022
21060
|
// Linked axis gets the extremes from the parent axis
|
|
21023
21061
|
if (linkedParent) {
|
|
21024
|
-
axis.linkedParent = linkedParent;
|
|
21025
21062
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
21026
21063
|
axis.min =
|
|
21027
21064
|
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
@@ -21331,7 +21368,7 @@ class Axis {
|
|
|
21331
21368
|
// Reset min/max or remove extremes based on start/end on tick
|
|
21332
21369
|
this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor
|
|
21333
21370
|
this.trimTicks(tickPositions, startOnTick, endOnTick);
|
|
21334
|
-
if (!this.
|
|
21371
|
+
if (!this.linkedParent && isNumber(this.min) && isNumber(this.max)) {
|
|
21335
21372
|
// Subtract half a unit (#2619, #2846, #2515, #3390), but not in
|
|
21336
21373
|
// case of multiple ticks (#6897)
|
|
21337
21374
|
if (this.single &&
|
|
@@ -21366,7 +21403,7 @@ class Axis {
|
|
|
21366
21403
|
trimTicks(tickPositions, startOnTick, endOnTick) {
|
|
21367
21404
|
const roundedMin = tickPositions[0], roundedMax = tickPositions[tickPositions.length - 1], minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)
|
|
21368
21405
|
fireEvent(this, 'trimTicks');
|
|
21369
|
-
if (!this.
|
|
21406
|
+
if (!this.linkedParent ||
|
|
21370
21407
|
// Linked non-grid axes should trim ticks, #21743.
|
|
21371
21408
|
// Grid axis has custom handling of ticks.
|
|
21372
21409
|
!this.grid) {
|
|
@@ -21640,7 +21677,15 @@ class Axis {
|
|
|
21640
21677
|
* @emits Highcharts.Axis#event:afterSetScale
|
|
21641
21678
|
*/
|
|
21642
21679
|
setScale() {
|
|
21643
|
-
const axis = this, { coll, stacking } = axis
|
|
21680
|
+
const axis = this, { chart, coll, options, stacking } = axis, { linkedTo } = options, axes = chart[coll] || [], index = axes.indexOf(axis), parent = isString(linkedTo) ?
|
|
21681
|
+
find(axes, (a) => a.options.id === linkedTo) :
|
|
21682
|
+
(isNumber(linkedTo) ? axes[linkedTo] : void 0), linkedParent = axis.linkedParent =
|
|
21683
|
+
parent === axis ? void 0 : parent;
|
|
21684
|
+
// Scale a later-ordered parent first so its extremes are ready. Skip
|
|
21685
|
+
// grid column axes, which live outside the collection (#24658).
|
|
21686
|
+
if (linkedParent && index > -1 && axes.indexOf(linkedParent) > index) {
|
|
21687
|
+
linkedParent.setScale();
|
|
21688
|
+
}
|
|
21644
21689
|
let isDirtyData = false, isXAxisDirty = false;
|
|
21645
21690
|
axis.series.forEach((series) => {
|
|
21646
21691
|
isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;
|
|
@@ -21657,7 +21702,7 @@ class Axis {
|
|
|
21657
21702
|
if (isDirtyAxisLength ||
|
|
21658
21703
|
isDirtyData ||
|
|
21659
21704
|
isXAxisDirty ||
|
|
21660
|
-
axis.
|
|
21705
|
+
axis.linkedParent ||
|
|
21661
21706
|
axis.forceRedraw ||
|
|
21662
21707
|
axis.userMin !== axis.old?.userMin ||
|
|
21663
21708
|
axis.userMax !== axis.old?.userMax ||
|
|
@@ -22019,7 +22064,7 @@ class Axis {
|
|
|
22019
22064
|
renderUnsquish() {
|
|
22020
22065
|
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 ?
|
|
22021
22066
|
2 * (labelOptions.padding || 0) :
|
|
22022
|
-
labelOptions.distance
|
|
22067
|
+
labelOptions.distance ?? 15 // #21172
|
|
22023
22068
|
))), attr = {}, labelMetrics = this.labelMetrics(), lineClampOption = labelStyleOptions.lineClamp;
|
|
22024
22069
|
let commonWidth, lineClamp = lineClampOption ?? (Math.floor(this.len / (tickPositions.length * labelMetrics.h)) || 1), maxLabelLength = 0;
|
|
22025
22070
|
// Set rotation option unless it is "auto", like in gauges
|
|
@@ -22099,7 +22144,6 @@ class Axis {
|
|
|
22099
22144
|
});
|
|
22100
22145
|
}
|
|
22101
22146
|
}
|
|
22102
|
-
tick.rotation = attr.rotation;
|
|
22103
22147
|
}
|
|
22104
22148
|
}, this);
|
|
22105
22149
|
// Note: Why is this not part of getLabelPosition?
|
|
@@ -22131,46 +22175,50 @@ class Axis {
|
|
|
22131
22175
|
* Whether or not to display the title.
|
|
22132
22176
|
*/
|
|
22133
22177
|
addTitle(display) {
|
|
22134
|
-
const axis = this, renderer = axis.chart.renderer, horiz = axis.horiz, opposite = axis.opposite, options = axis.options, axisTitleOptions = options.title, styledMode = axis.chart.styledMode
|
|
22135
|
-
|
|
22136
|
-
|
|
22137
|
-
|
|
22138
|
-
|
|
22139
|
-
|
|
22140
|
-
|
|
22141
|
-
|
|
22142
|
-
|
|
22143
|
-
|
|
22144
|
-
|
|
22145
|
-
|
|
22146
|
-
|
|
22147
|
-
|
|
22148
|
-
|
|
22149
|
-
|
|
22150
|
-
|
|
22151
|
-
|
|
22152
|
-
|
|
22153
|
-
|
|
22154
|
-
|
|
22155
|
-
})
|
|
22178
|
+
const axis = this, renderer = axis.chart.renderer, horiz = axis.horiz, opposite = axis.opposite, options = axis.options, axisTitleOptions = options.title, styledMode = axis.chart.styledMode, textAlign = axisTitleOptions.textAlign ||
|
|
22179
|
+
(horiz ? {
|
|
22180
|
+
low: 'left',
|
|
22181
|
+
middle: 'center',
|
|
22182
|
+
high: 'right'
|
|
22183
|
+
} : {
|
|
22184
|
+
low: opposite ? 'right' : 'left',
|
|
22185
|
+
middle: 'center',
|
|
22186
|
+
high: opposite ? 'left' : 'right'
|
|
22187
|
+
})[axisTitleOptions.align], attr = {
|
|
22188
|
+
text: axisTitleOptions.text || '',
|
|
22189
|
+
zIndex: 7,
|
|
22190
|
+
align: textAlign
|
|
22191
|
+
}, animatable = {
|
|
22192
|
+
rotation: axisTitleOptions.rotation || 0
|
|
22193
|
+
};
|
|
22194
|
+
let axisTitle = axis.axisTitle;
|
|
22195
|
+
if (!axisTitle) {
|
|
22196
|
+
axisTitle = renderer
|
|
22197
|
+
.text('', 0, 0, axisTitleOptions.useHTML)
|
|
22198
|
+
.attr(extend(attr, animatable))
|
|
22156
22199
|
.addClass('highcharts-axis-title');
|
|
22157
|
-
|
|
22158
|
-
|
|
22159
|
-
axis.axisTitle.css(merge(axisTitleOptions.style));
|
|
22160
|
-
}
|
|
22161
|
-
axis.axisTitle.add(axis.axisGroup);
|
|
22162
|
-
axis.axisTitle.isNew = true;
|
|
22200
|
+
axisTitle.add(axis.axisGroup);
|
|
22201
|
+
axisTitle.isNew = true;
|
|
22163
22202
|
}
|
|
22164
|
-
|
|
22165
|
-
|
|
22166
|
-
|
|
22167
|
-
|
|
22168
|
-
|
|
22169
|
-
|
|
22170
|
-
|
|
22203
|
+
else {
|
|
22204
|
+
axisTitle
|
|
22205
|
+
.attr(attr)
|
|
22206
|
+
.animate(animatable);
|
|
22207
|
+
}
|
|
22208
|
+
if (!styledMode) {
|
|
22209
|
+
// #7814, don't mutate the style option
|
|
22210
|
+
const css = merge(axisTitleOptions.style);
|
|
22211
|
+
// Max width defaults to the length of the axis
|
|
22212
|
+
if (!axisTitleOptions.style.width &&
|
|
22213
|
+
!axis.isRadial) {
|
|
22214
|
+
css.width = axis.len + 'px';
|
|
22215
|
+
}
|
|
22216
|
+
axisTitle.css(css);
|
|
22171
22217
|
}
|
|
22172
22218
|
// Hide or show the title depending on whether showEmpty is set
|
|
22173
|
-
|
|
22219
|
+
axisTitle[display ? 'show' : 'hide'](display);
|
|
22220
|
+
// Register
|
|
22221
|
+
axis.axisTitle = axisTitle;
|
|
22174
22222
|
}
|
|
22175
22223
|
/**
|
|
22176
22224
|
* Generates a tick for initial positioning.
|
|
@@ -22198,17 +22246,18 @@ class Axis {
|
|
|
22198
22246
|
createGroups() {
|
|
22199
22247
|
const { axisParent, // Used in color axis
|
|
22200
22248
|
chart, coll, options } = this, renderer = chart.renderer;
|
|
22201
|
-
const createGroup = (name, suffix
|
|
22202
|
-
.attr({ zIndex })
|
|
22249
|
+
const createGroup = (name, suffix) => renderer.g(name)
|
|
22203
22250
|
.addClass(`highcharts-${coll.toLowerCase()}${suffix} ` +
|
|
22204
22251
|
(this.isRadial ? `highcharts-radial-axis${suffix} ` : '') +
|
|
22205
22252
|
(options.className || ''))
|
|
22206
22253
|
.add(axisParent);
|
|
22207
|
-
|
|
22208
|
-
|
|
22209
|
-
|
|
22210
|
-
this.
|
|
22211
|
-
|
|
22254
|
+
(this.axisGroup || (this.axisGroup = createGroup('axis', '')))
|
|
22255
|
+
.attr({ zIndex: options.zIndex });
|
|
22256
|
+
(this.gridGroup || (this.gridGroup = createGroup('grid', '-grid')))
|
|
22257
|
+
.clip(this.clippable ? chart.plotClipInner : void 0)
|
|
22258
|
+
.attr({ zIndex: options.gridZIndex });
|
|
22259
|
+
(this.labelGroup || (this.labelGroup = createGroup('axis-labels', '-labels')))
|
|
22260
|
+
.attr({ zIndex: options.labels.zIndex });
|
|
22212
22261
|
}
|
|
22213
22262
|
/**
|
|
22214
22263
|
* Shuffle existing category ticks, like in bar race chart
|
|
@@ -22216,8 +22265,11 @@ class Axis {
|
|
|
22216
22265
|
* @internal
|
|
22217
22266
|
*/
|
|
22218
22267
|
shuffleTicks() {
|
|
22219
|
-
const ticks = this.ticks, oldNames = this.old?.names;
|
|
22220
|
-
if (this.type === 'category' &&
|
|
22268
|
+
const ticks = this.ticks, oldNames = this.old?.names, hasDuplicates = (arr) => new Set(arr).size !== arr.length;
|
|
22269
|
+
if (this.type === 'category' &&
|
|
22270
|
+
oldNames &&
|
|
22271
|
+
!hasDuplicates(oldNames) &&
|
|
22272
|
+
!hasDuplicates(this.names)) {
|
|
22221
22273
|
oldNames.forEach((name, oldPos) => {
|
|
22222
22274
|
const pos = this.namesMap[name];
|
|
22223
22275
|
if (defined(pos) && oldPos !== pos) {
|
|
@@ -22259,7 +22311,7 @@ class Axis {
|
|
|
22259
22311
|
* @emits Highcharts.Axis#event:afterGetOffset
|
|
22260
22312
|
*/
|
|
22261
22313
|
getOffset() {
|
|
22262
|
-
const axis = this, { chart, horiz, options, side, ticks, tickPositions, coll } = axis, hasData = axis.hasData(), axisTitleOptions = options.title, labelOptions = options.labels, hasCrossing = isNumber(options.crossing), axisOffset = chart.axisOffset, clipOffset = chart.clipOffset, directionFactor = [-1, 1, 1, -1][side];
|
|
22314
|
+
const axis = this, { chart, horiz, options, side, ticks, tickPositions, coll } = axis, hasData = axis.hasData(), axisTitleOptions = options.title, labelOptions = options.labels, hasCrossing = isNumber(options.crossing), axisOffset = chart.axisOffset, clipOffset = chart.clipOffset, directionFactor = [-1, 1, 1, -1][side], distance = labelOptions.distance ?? 15;
|
|
22263
22315
|
let tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }, absTickRotCorrX = 0, showAxis, titleOffset = 0, titleOffsetOption, titleMargin = 0, labelOffset = 0, // Reset
|
|
22264
22316
|
labelOffsetPadded, lineHeightCorrection, reserveSpaceDefault;
|
|
22265
22317
|
// For reuse in Axis.render
|
|
@@ -22267,7 +22319,7 @@ class Axis {
|
|
|
22267
22319
|
// Set/reset staggerLines
|
|
22268
22320
|
axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;
|
|
22269
22321
|
axis.createGroups();
|
|
22270
|
-
if (hasData || axis.
|
|
22322
|
+
if (hasData || axis.linkedParent) {
|
|
22271
22323
|
// Shuffle existing category ticks
|
|
22272
22324
|
axis.shuffleTicks();
|
|
22273
22325
|
// Generate new ticks
|
|
@@ -22319,6 +22371,9 @@ class Axis {
|
|
|
22319
22371
|
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22320
22372
|
}
|
|
22321
22373
|
}
|
|
22374
|
+
else {
|
|
22375
|
+
axis.axisTitle = axis.axisTitle?.destroy();
|
|
22376
|
+
}
|
|
22322
22377
|
// Render the axis line
|
|
22323
22378
|
axis.renderLine();
|
|
22324
22379
|
// Handle automatic or user set offset
|
|
@@ -22342,12 +22397,10 @@ class Axis {
|
|
|
22342
22397
|
labelOffsetPadded -= lineHeightCorrection;
|
|
22343
22398
|
labelOffsetPadded += directionFactor * (horiz ?
|
|
22344
22399
|
(labelOptions.y ??
|
|
22345
|
-
(tickRotCorr.y +
|
|
22346
|
-
directionFactor * labelOptions.distance)) :
|
|
22400
|
+
(tickRotCorr.y + directionFactor * distance)) :
|
|
22347
22401
|
(labelOptions.x ?? (reserveSpaceDefault ?
|
|
22348
|
-
directionFactor * (
|
|
22349
|
-
tickRotCorr.x +
|
|
22350
|
-
directionFactor * labelOptions.distance)));
|
|
22402
|
+
directionFactor * (distance - absTickRotCorrX) :
|
|
22403
|
+
tickRotCorr.x + directionFactor * distance)));
|
|
22351
22404
|
if (!horiz &&
|
|
22352
22405
|
!reserveSpaceDefault &&
|
|
22353
22406
|
axis.labelAlign === 'center' &&
|
|
@@ -22361,8 +22414,8 @@ class Axis {
|
|
|
22361
22414
|
// has rendered.
|
|
22362
22415
|
if (coll !== 'colorAxis' && clipOffset) {
|
|
22363
22416
|
const tickSize = this.tickSize('tick');
|
|
22364
|
-
axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +
|
|
22365
|
-
|
|
22417
|
+
axisOffset[side] = Math.max(axisOffset[side], Math.max((axis.axisTitleMargin || 0) + titleOffset, labelOffsetPadded) + directionFactor * axis.offset, // #6967
|
|
22418
|
+
labelOffsetPadded, // #3027
|
|
22366
22419
|
tickPositions?.length && tickSize ?
|
|
22367
22420
|
tickSize[0] + directionFactor * axis.offset :
|
|
22368
22421
|
0 // #4866
|
|
@@ -22424,18 +22477,20 @@ class Axis {
|
|
|
22424
22477
|
* @function Highcharts.Axis#renderLine
|
|
22425
22478
|
*/
|
|
22426
22479
|
renderLine() {
|
|
22427
|
-
const { chart, offset = 0, options } = this;
|
|
22480
|
+
const { chart, offset = 0, options } = this, verb = this.axisLine ? 'animate' : 'attr';
|
|
22428
22481
|
this.axisLine || (this.axisLine = chart.renderer.path()
|
|
22429
22482
|
.addClass('highcharts-axis-line')
|
|
22430
|
-
.attr(
|
|
22431
|
-
stroke: options.lineColor,
|
|
22432
|
-
'stroke-width': options.lineWidth,
|
|
22433
|
-
zIndex: 7
|
|
22434
|
-
})
|
|
22483
|
+
.attr({ zIndex: 7 })
|
|
22435
22484
|
.clip(this.clippable && offset <= 0 ?
|
|
22436
22485
|
chart.plotClipOuter :
|
|
22437
22486
|
void 0)
|
|
22438
22487
|
.add(this.axisGroup));
|
|
22488
|
+
if (!chart.styledMode) {
|
|
22489
|
+
this.axisLine[verb]({
|
|
22490
|
+
stroke: options.lineColor,
|
|
22491
|
+
'stroke-width': options.lineWidth
|
|
22492
|
+
});
|
|
22493
|
+
}
|
|
22439
22494
|
}
|
|
22440
22495
|
/**
|
|
22441
22496
|
* Position the axis title.
|
|
@@ -22520,9 +22575,9 @@ class Axis {
|
|
|
22520
22575
|
* Whether the tick should animate in from last computed position
|
|
22521
22576
|
*/
|
|
22522
22577
|
renderTick(pos, i, slideIn) {
|
|
22523
|
-
const axis = this,
|
|
22578
|
+
const axis = this, ticks = axis.ticks;
|
|
22524
22579
|
// Linked axes need an extra check to find out if
|
|
22525
|
-
if (!
|
|
22580
|
+
if (!axis.linkedParent ||
|
|
22526
22581
|
(pos >= axis.min && pos <= axis.max) ||
|
|
22527
22582
|
axis.grid?.isColumn) {
|
|
22528
22583
|
if (!ticks[pos]) {
|
|
@@ -22548,11 +22603,13 @@ class Axis {
|
|
|
22548
22603
|
* @emits Highcharts.Axis#event:afterRender
|
|
22549
22604
|
*/
|
|
22550
22605
|
render() {
|
|
22551
|
-
const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options,
|
|
22606
|
+
const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options, tickPositions = axis.tickPositions, axisTitle = axis.axisTitle, ticks = axis.ticks, minorTicks = axis.minorTicks, alternateBands = axis.alternateBands, alternateGridColor = options.alternateGridColor, crossing = options.crossing, tickmarkOffset = axis.tickmarkOffset, axisLine = axis.axisLine, showAxis = axis.showAxis, opacity = +axis.visible, animation = animObject(renderer.globalAnimation);
|
|
22552
22607
|
let from, to;
|
|
22553
22608
|
// Reset
|
|
22554
22609
|
axis.labelEdge.length = 0;
|
|
22555
22610
|
axis.overlap = false;
|
|
22611
|
+
// Update z-indices
|
|
22612
|
+
this.createGroups();
|
|
22556
22613
|
// Mark all elements inActive before we go over and mark the active ones
|
|
22557
22614
|
[ticks, minorTicks, alternateBands].forEach(function (coll) {
|
|
22558
22615
|
objectEach(coll, function (tick) {
|
|
@@ -22571,7 +22628,7 @@ class Axis {
|
|
|
22571
22628
|
}
|
|
22572
22629
|
}
|
|
22573
22630
|
// If the series has data draw the ticks. Else only the line and title
|
|
22574
|
-
if (axis.hasData() ||
|
|
22631
|
+
if (axis.hasData() || axis.linkedParent) {
|
|
22575
22632
|
const slideInTicks = axis.chart.hasRendered &&
|
|
22576
22633
|
axis.old && isNumber(axis.old.min);
|
|
22577
22634
|
// Minor ticks
|
|
@@ -22609,8 +22666,10 @@ class Axis {
|
|
|
22609
22666
|
tickmarkOffset)) { // #2248, #4660
|
|
22610
22667
|
if (!alternateBands[pos]) {
|
|
22611
22668
|
// Should be imported from PlotLineOrBand.js, but
|
|
22612
|
-
// the dependency cycle with axis is a problem
|
|
22613
|
-
|
|
22669
|
+
// the dependency cycle with axis is a problem. Try
|
|
22670
|
+
// moving it to the PlotLineOrBand axis composition
|
|
22671
|
+
// later.
|
|
22672
|
+
alternateBands[pos] = new Core_Globals.PlotLineOrBand(axis, {}, 'plotBands');
|
|
22614
22673
|
}
|
|
22615
22674
|
from = pos + tickmarkOffset; // #949
|
|
22616
22675
|
alternateBands[pos].options = {
|
|
@@ -22624,17 +22683,13 @@ class Axis {
|
|
|
22624
22683
|
}
|
|
22625
22684
|
});
|
|
22626
22685
|
}
|
|
22627
|
-
// Custom plot lines and bands
|
|
22628
|
-
if (!axis._addedPlotLB) { // Only first time
|
|
22629
|
-
axis._addedPlotLB = true;
|
|
22630
|
-
(options.plotLines || [])
|
|
22631
|
-
.concat(options.plotBands || [])
|
|
22632
|
-
.forEach(function (plotLineOptions) {
|
|
22633
|
-
axis
|
|
22634
|
-
.addPlotBandOrLine(plotLineOptions);
|
|
22635
|
-
});
|
|
22636
|
-
}
|
|
22637
22686
|
} // End if hasData
|
|
22687
|
+
// Render or update rendering of plot lines and bands
|
|
22688
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
22689
|
+
for (const plotItem of this[coll]) {
|
|
22690
|
+
plotItem.render();
|
|
22691
|
+
}
|
|
22692
|
+
}
|
|
22638
22693
|
// Remove inactive ticks
|
|
22639
22694
|
[ticks, minorTicks, alternateBands].forEach(function (coll) {
|
|
22640
22695
|
const forDestruction = [], delay = animation.duration, destroyInactiveItems = function () {
|
|
@@ -22668,20 +22723,22 @@ class Axis {
|
|
|
22668
22723
|
// Set the axis line path
|
|
22669
22724
|
if (axisLine) {
|
|
22670
22725
|
axisLine[axisLine.isPlaced ? 'animate' : 'attr']({
|
|
22671
|
-
d: this.getLinePath(axisLine.strokeWidth())
|
|
22726
|
+
d: this.getLinePath(axisLine.strokeWidth()),
|
|
22727
|
+
opacity
|
|
22672
22728
|
});
|
|
22673
22729
|
axisLine.isPlaced = true;
|
|
22674
22730
|
// Show or hide the line depending on options.showEmpty
|
|
22675
22731
|
axisLine[showAxis ? 'show' : 'hide'](showAxis);
|
|
22676
22732
|
}
|
|
22677
22733
|
if (axisTitle && showAxis) {
|
|
22678
|
-
axisTitle[axisTitle.isNew ? 'attr' : 'animate'](
|
|
22734
|
+
axisTitle[axisTitle.isNew ? 'attr' : 'animate']({
|
|
22735
|
+
opacity,
|
|
22736
|
+
...axis.getTitlePosition(axisTitle)
|
|
22737
|
+
});
|
|
22679
22738
|
axisTitle.isNew = false;
|
|
22680
22739
|
}
|
|
22681
22740
|
// Stacked totals
|
|
22682
|
-
|
|
22683
|
-
axis.stacking.renderStackTotals();
|
|
22684
|
-
}
|
|
22741
|
+
axis.stacking?.renderStackTotals();
|
|
22685
22742
|
// First time, save the existing state
|
|
22686
22743
|
if (!this.old) {
|
|
22687
22744
|
this.saveOld();
|
|
@@ -22697,13 +22754,11 @@ class Axis {
|
|
|
22697
22754
|
* @function Highcharts.Axis#redraw
|
|
22698
22755
|
*/
|
|
22699
22756
|
redraw() {
|
|
22700
|
-
|
|
22757
|
+
// If it was initially visible, but dynamically hidden, `this.axisGroup`
|
|
22758
|
+
// exists. Then render with opacity 0.
|
|
22759
|
+
if (this.visible || this.axisGroup) {
|
|
22701
22760
|
// Render the axis
|
|
22702
22761
|
this.render();
|
|
22703
|
-
// Move plot lines and bands
|
|
22704
|
-
this.plotLinesAndBands.forEach(function (plotLine) {
|
|
22705
|
-
plotLine.render();
|
|
22706
|
-
});
|
|
22707
22762
|
}
|
|
22708
22763
|
// Mark associated series as dirty and ready for redraw
|
|
22709
22764
|
this.series.forEach(function (series) {
|
|
@@ -22717,6 +22772,7 @@ class Axis {
|
|
|
22717
22772
|
*/
|
|
22718
22773
|
saveOld() {
|
|
22719
22774
|
this.old = isNumber(this.min) ? {
|
|
22775
|
+
horiz: this.horiz,
|
|
22720
22776
|
len: this.len,
|
|
22721
22777
|
max: this.max,
|
|
22722
22778
|
min: this.min,
|
|
@@ -22726,64 +22782,37 @@ class Axis {
|
|
|
22726
22782
|
userMin: this.userMin
|
|
22727
22783
|
} : void 0;
|
|
22728
22784
|
}
|
|
22729
|
-
/**
|
|
22730
|
-
* Returns an array of axis properties, that should be untouched during
|
|
22731
|
-
* reinitialization.
|
|
22732
|
-
*
|
|
22733
|
-
* @internal
|
|
22734
|
-
* @function Highcharts.Axis#getKeepProps
|
|
22735
|
-
*/
|
|
22736
|
-
getKeepProps() {
|
|
22737
|
-
return (this.keepProps || Axis.keepProps);
|
|
22738
|
-
}
|
|
22739
22785
|
/**
|
|
22740
22786
|
* Destroys an Axis instance. See {@link Axis#remove} for the API endpoint
|
|
22741
22787
|
* to fully remove the axis.
|
|
22742
22788
|
*
|
|
22743
22789
|
* @internal
|
|
22744
22790
|
* @function Highcharts.Axis#destroy
|
|
22745
|
-
*
|
|
22746
|
-
* @param {boolean} [keepEvents]
|
|
22747
|
-
* Whether to preserve events, used internally in Axis.update.
|
|
22748
22791
|
*/
|
|
22749
|
-
destroy(
|
|
22750
|
-
|
|
22751
|
-
fireEvent(this, 'destroy', { keepEvents: keepEvents });
|
|
22792
|
+
destroy() {
|
|
22793
|
+
fireEvent(this, 'destroy');
|
|
22752
22794
|
// Remove the events
|
|
22753
|
-
|
|
22754
|
-
removeEvent(axis);
|
|
22755
|
-
}
|
|
22795
|
+
removeEvent(this);
|
|
22756
22796
|
// Destroy collections
|
|
22757
|
-
[
|
|
22758
|
-
|
|
22759
|
-
|
|
22760
|
-
|
|
22761
|
-
|
|
22762
|
-
|
|
22763
|
-
|
|
22764
|
-
|
|
22765
|
-
|
|
22766
|
-
// Destroy elements
|
|
22797
|
+
[
|
|
22798
|
+
this.ticks,
|
|
22799
|
+
this.minorTicks,
|
|
22800
|
+
this.alternateBands,
|
|
22801
|
+
this.plotBands,
|
|
22802
|
+
this.plotLines,
|
|
22803
|
+
this.plotLinesAndBandsGroups
|
|
22804
|
+
].forEach(destroyObjectProperties);
|
|
22805
|
+
// Destroy elements and clear reference
|
|
22767
22806
|
[
|
|
22768
22807
|
'axisLine', 'axisTitle', 'axisGroup',
|
|
22769
22808
|
'gridGroup', 'labelGroup', 'cross', 'scrollbar'
|
|
22770
|
-
].forEach(
|
|
22771
|
-
|
|
22772
|
-
axis[prop] = axis[prop].destroy();
|
|
22773
|
-
}
|
|
22809
|
+
].forEach((prop) => {
|
|
22810
|
+
this[prop] = this[prop]?.destroy();
|
|
22774
22811
|
});
|
|
22775
|
-
// Destroy each generated group for plotLines and plotBands
|
|
22776
|
-
for (const plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in
|
|
22777
|
-
axis.plotLinesAndBandsGroups[plotGroup] =
|
|
22778
|
-
axis.plotLinesAndBandsGroups[plotGroup].destroy();
|
|
22779
|
-
}
|
|
22780
22812
|
// Delete all properties and fall back to the prototype.
|
|
22781
|
-
objectEach(
|
|
22782
|
-
|
|
22783
|
-
delete axis[key];
|
|
22784
|
-
}
|
|
22813
|
+
objectEach(this, (_val, key) => {
|
|
22814
|
+
delete this[key];
|
|
22785
22815
|
});
|
|
22786
|
-
this.eventOptions = eventOptions;
|
|
22787
22816
|
}
|
|
22788
22817
|
/**
|
|
22789
22818
|
* Internal function to draw a crosshair.
|
|
@@ -22877,25 +22906,21 @@ class Axis {
|
|
|
22877
22906
|
void 0 :
|
|
22878
22907
|
chart.plotClipInner)
|
|
22879
22908
|
.add();
|
|
22880
|
-
|
|
22881
|
-
|
|
22882
|
-
|
|
22883
|
-
|
|
22884
|
-
|
|
22885
|
-
|
|
22886
|
-
|
|
22887
|
-
|
|
22888
|
-
|
|
22889
|
-
|
|
22890
|
-
|
|
22891
|
-
|
|
22892
|
-
|
|
22893
|
-
|
|
22894
|
-
|
|
22895
|
-
dashstyle: options.dashStyle
|
|
22896
|
-
});
|
|
22897
|
-
}
|
|
22898
|
-
}
|
|
22909
|
+
}
|
|
22910
|
+
// Presentational attributes
|
|
22911
|
+
if (!chart.styledMode) {
|
|
22912
|
+
cross
|
|
22913
|
+
.attr({
|
|
22914
|
+
stroke: options.color || (categorized ?
|
|
22915
|
+
Axis_color('var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22916
|
+
'var(--highcharts-neutral-color-20)'),
|
|
22917
|
+
'stroke-width': options.width ?? 1,
|
|
22918
|
+
// Dash style must be after stroke-width
|
|
22919
|
+
dashstyle: options.dashStyle || 'Solid'
|
|
22920
|
+
})
|
|
22921
|
+
.css({
|
|
22922
|
+
'pointer-events': 'none'
|
|
22923
|
+
});
|
|
22899
22924
|
}
|
|
22900
22925
|
cross
|
|
22901
22926
|
.show()
|
|
@@ -22905,9 +22930,7 @@ class Axis {
|
|
|
22905
22930
|
'stroke-width': this.transA
|
|
22906
22931
|
});
|
|
22907
22932
|
}
|
|
22908
|
-
|
|
22909
|
-
this.cross.e = e;
|
|
22910
|
-
}
|
|
22933
|
+
cross.e = e;
|
|
22911
22934
|
},
|
|
22912
22935
|
// Only use delay if the crosshair is currently hidden
|
|
22913
22936
|
(!graphic || graphic.attr('visibility') === 'hidden') ?
|
|
@@ -22946,13 +22969,14 @@ class Axis {
|
|
|
22946
22969
|
* operations on the chart, it is a good idea to set redraw to false and
|
|
22947
22970
|
* call {@link Chart#redraw} after.
|
|
22948
22971
|
*/
|
|
22949
|
-
update(options, redraw) {
|
|
22972
|
+
update(options = {}, redraw = true) {
|
|
22950
22973
|
const chart = this.chart;
|
|
22974
|
+
fireEvent(this, 'update', { options });
|
|
22951
22975
|
options = merge(this.userOptions, options);
|
|
22952
|
-
this.
|
|
22976
|
+
this.isDirty = this.forceRedraw = true;
|
|
22953
22977
|
this.init(chart, options);
|
|
22954
22978
|
chart.isDirtyBox = true;
|
|
22955
|
-
if (redraw
|
|
22979
|
+
if (redraw) {
|
|
22956
22980
|
chart.redraw();
|
|
22957
22981
|
}
|
|
22958
22982
|
}
|
|
@@ -23021,26 +23045,6 @@ class Axis {
|
|
|
23021
23045
|
this.update({ categories: categories }, redraw);
|
|
23022
23046
|
}
|
|
23023
23047
|
}
|
|
23024
|
-
/* *
|
|
23025
|
-
*
|
|
23026
|
-
* Static Properties
|
|
23027
|
-
*
|
|
23028
|
-
* */
|
|
23029
|
-
/**
|
|
23030
|
-
* Properties to survive after destroy, needed for Axis.update (#4317,
|
|
23031
|
-
* #5773, #5881).
|
|
23032
|
-
* @internal
|
|
23033
|
-
*/
|
|
23034
|
-
Axis.keepProps = [
|
|
23035
|
-
'coll',
|
|
23036
|
-
'extKey',
|
|
23037
|
-
'hcEvents',
|
|
23038
|
-
'len',
|
|
23039
|
-
'names',
|
|
23040
|
-
'series',
|
|
23041
|
-
'userMax',
|
|
23042
|
-
'userMin'
|
|
23043
|
-
];
|
|
23044
23048
|
/* *
|
|
23045
23049
|
*
|
|
23046
23050
|
* Default Export
|
|
@@ -23311,6 +23315,8 @@ Axis.keepProps = [
|
|
|
23311
23315
|
* */
|
|
23312
23316
|
|
|
23313
23317
|
|
|
23318
|
+
const { composed: DateTimeAxis_composed } = Core_Globals;
|
|
23319
|
+
|
|
23314
23320
|
|
|
23315
23321
|
/* *
|
|
23316
23322
|
*
|
|
@@ -23334,8 +23340,7 @@ var DateTimeAxis;
|
|
|
23334
23340
|
* @internal
|
|
23335
23341
|
*/
|
|
23336
23342
|
function compose(AxisClass) {
|
|
23337
|
-
if (
|
|
23338
|
-
AxisClass.keepProps.push('dateTime');
|
|
23343
|
+
if (pushUnique(DateTimeAxis_composed, 'Axis.DateTime')) {
|
|
23339
23344
|
const axisProto = AxisClass.prototype;
|
|
23340
23345
|
axisProto.getTimeTicks = getTimeTicks;
|
|
23341
23346
|
addEvent(AxisClass, 'afterSetType', onAfterSetType);
|
|
@@ -23497,6 +23502,8 @@ var DateTimeAxis;
|
|
|
23497
23502
|
* */
|
|
23498
23503
|
|
|
23499
23504
|
|
|
23505
|
+
const { composed: LogarithmicAxis_composed } = Core_Globals;
|
|
23506
|
+
|
|
23500
23507
|
/* *
|
|
23501
23508
|
*
|
|
23502
23509
|
* Class
|
|
@@ -23520,8 +23527,7 @@ var LogarithmicAxis;
|
|
|
23520
23527
|
* @internal
|
|
23521
23528
|
*/
|
|
23522
23529
|
function compose(AxisClass) {
|
|
23523
|
-
if (
|
|
23524
|
-
AxisClass.keepProps.push('logarithmic');
|
|
23530
|
+
if (pushUnique(LogarithmicAxis_composed, 'Axis.Logarithmic')) {
|
|
23525
23531
|
addEvent(AxisClass, 'afterSetType', onAfterSetType);
|
|
23526
23532
|
addEvent(AxisClass, 'afterInit', onAfterInit);
|
|
23527
23533
|
}
|
|
@@ -23730,24 +23736,7 @@ var PlotLineOrBandAxis;
|
|
|
23730
23736
|
* Functions
|
|
23731
23737
|
*
|
|
23732
23738
|
* */
|
|
23733
|
-
|
|
23734
|
-
* Add a plot band after render time.
|
|
23735
|
-
*
|
|
23736
|
-
* @sample highcharts/members/axis-addplotband/
|
|
23737
|
-
* Toggle the plot band from a button
|
|
23738
|
-
*
|
|
23739
|
-
* @function Highcharts.Axis#addPlotBand
|
|
23740
|
-
*
|
|
23741
|
-
* @param {Highcharts.AxisPlotBandsOptions} options
|
|
23742
|
-
* A configuration object for the plot band, as defined in
|
|
23743
|
-
* [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).
|
|
23744
|
-
*
|
|
23745
|
-
* @return {Highcharts.PlotLineOrBand|undefined}
|
|
23746
|
-
* The added plot band, or `undefined` if the options are not valid.
|
|
23747
|
-
*/
|
|
23748
|
-
function addPlotBand(options) {
|
|
23749
|
-
return this.addPlotBandOrLine(options, 'plotBands');
|
|
23750
|
-
}
|
|
23739
|
+
const getAdderFunction = (coll) =>
|
|
23751
23740
|
/**
|
|
23752
23741
|
* Add a plot band or plot line after render time. Called from
|
|
23753
23742
|
* addPlotBand and addPlotLine internally.
|
|
@@ -23755,65 +23744,85 @@ var PlotLineOrBandAxis;
|
|
|
23755
23744
|
* @internal
|
|
23756
23745
|
* @function Highcharts.Axis#addPlotBandOrLine
|
|
23757
23746
|
* @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options
|
|
23758
|
-
*
|
|
23747
|
+
* The `plotBand` or `plotLine` configuration object.
|
|
23759
23748
|
*/
|
|
23760
|
-
function
|
|
23761
|
-
|
|
23762
|
-
|
|
23749
|
+
function addPlotLineOrBand(options) {
|
|
23750
|
+
var _a;
|
|
23751
|
+
const plotItem = new PlotLineOrBandClass(this, options, coll);
|
|
23763
23752
|
if (this.visible) {
|
|
23764
|
-
|
|
23765
|
-
}
|
|
23766
|
-
if (obj) { // #2189
|
|
23767
|
-
if (!this._addedPlotLB) {
|
|
23768
|
-
this._addedPlotLB = true;
|
|
23769
|
-
(userOptions.plotLines || [])
|
|
23770
|
-
.concat(userOptions.plotBands || [])
|
|
23771
|
-
.forEach((plotLineOptions) => {
|
|
23772
|
-
this.addPlotBandOrLine(plotLineOptions);
|
|
23773
|
-
});
|
|
23774
|
-
}
|
|
23775
|
-
// Add it to the user options for exporting and Axis.update
|
|
23776
|
-
if (coll) {
|
|
23777
|
-
// Workaround Microsoft/TypeScript issue #32693
|
|
23778
|
-
const updatedOptions = (userOptions[coll] || []);
|
|
23779
|
-
updatedOptions.push(options);
|
|
23780
|
-
userOptions[coll] = updatedOptions;
|
|
23781
|
-
}
|
|
23782
|
-
this.plotLinesAndBands.push(obj);
|
|
23753
|
+
plotItem.render();
|
|
23783
23754
|
}
|
|
23784
|
-
|
|
23785
|
-
|
|
23786
|
-
|
|
23787
|
-
|
|
23788
|
-
|
|
23789
|
-
* @sample highcharts/members/axis-addplotline/
|
|
23790
|
-
* Toggle the plot line from a button
|
|
23791
|
-
*
|
|
23792
|
-
* @function Highcharts.Axis#addPlotLine
|
|
23793
|
-
*
|
|
23794
|
-
* @param {Highcharts.AxisPlotLinesOptions} options
|
|
23795
|
-
* A configuration object for the plot line, as defined in
|
|
23796
|
-
* [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).
|
|
23797
|
-
*
|
|
23798
|
-
* @return {Highcharts.PlotLineOrBand|undefined}
|
|
23799
|
-
* The added plot line, or `undefined` if the options are not valid.
|
|
23800
|
-
*/
|
|
23801
|
-
function addPlotLine(options) {
|
|
23802
|
-
return this.addPlotBandOrLine(options, 'plotLines');
|
|
23803
|
-
}
|
|
23755
|
+
(_a = this.options)[coll] || (_a[coll] = this.userOptions[coll] = []);
|
|
23756
|
+
this.options[coll].push(options);
|
|
23757
|
+
this[coll].push(plotItem);
|
|
23758
|
+
return plotItem;
|
|
23759
|
+
};
|
|
23804
23760
|
/** @internal */
|
|
23805
23761
|
function compose(PlotLineOrBandType, AxisClass) {
|
|
23806
23762
|
const axisProto = AxisClass.prototype;
|
|
23807
23763
|
if (!axisProto.addPlotBand) {
|
|
23808
23764
|
PlotLineOrBandClass = PlotLineOrBandType;
|
|
23809
23765
|
extend(axisProto, {
|
|
23810
|
-
addPlotBand,
|
|
23811
|
-
addPlotLine,
|
|
23812
|
-
addPlotBandOrLine,
|
|
23766
|
+
addPlotBand: getAdderFunction('plotBands'),
|
|
23767
|
+
addPlotLine: getAdderFunction('plotLines'),
|
|
23813
23768
|
getPlotBandPath,
|
|
23814
|
-
removePlotBand,
|
|
23815
|
-
removePlotLine
|
|
23816
|
-
|
|
23769
|
+
removePlotBand: removePlotBandOrLine,
|
|
23770
|
+
removePlotLine: removePlotBandOrLine
|
|
23771
|
+
});
|
|
23772
|
+
addEvent(AxisClass, 'afterInit', function () {
|
|
23773
|
+
// First time only, not on Axis.update()
|
|
23774
|
+
if (!this.plotBands) {
|
|
23775
|
+
// Placeholder for plotlines and plotbands groups
|
|
23776
|
+
this.plotLinesAndBandsGroups = {};
|
|
23777
|
+
// Plot lines and bands from options
|
|
23778
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
23779
|
+
this[coll] = [];
|
|
23780
|
+
for (const pOptions of splat(this.options[coll] || [])) {
|
|
23781
|
+
this[coll].push(new PlotLineOrBandClass(this, pOptions, coll));
|
|
23782
|
+
}
|
|
23783
|
+
}
|
|
23784
|
+
}
|
|
23785
|
+
});
|
|
23786
|
+
// Update plot bands and lines one to one
|
|
23787
|
+
addEvent(AxisClass, 'update', function ({ options }) {
|
|
23788
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
23789
|
+
// Check if we have new options to process, otherwise do
|
|
23790
|
+
// nothing with existing plot lines and bands
|
|
23791
|
+
if (options[coll]) {
|
|
23792
|
+
const plotItems = this[coll];
|
|
23793
|
+
splat(options[coll]).forEach((pOptions = {}, i) => {
|
|
23794
|
+
// Match by id
|
|
23795
|
+
let pItem;
|
|
23796
|
+
if (pOptions?.id) {
|
|
23797
|
+
pItem = plotItems.find((p) => p.id === pOptions.id);
|
|
23798
|
+
}
|
|
23799
|
+
// Match by index
|
|
23800
|
+
pItem || (pItem = plotItems[i]);
|
|
23801
|
+
// Update
|
|
23802
|
+
if (pItem) {
|
|
23803
|
+
pItem.update(pOptions, false);
|
|
23804
|
+
options[coll][i] = pItem.options;
|
|
23805
|
+
// Add
|
|
23806
|
+
}
|
|
23807
|
+
else {
|
|
23808
|
+
pItem = this[coll === 'plotBands' ?
|
|
23809
|
+
'addPlotBand' :
|
|
23810
|
+
'addPlotLine'](pOptions);
|
|
23811
|
+
}
|
|
23812
|
+
pItem.isActive = true;
|
|
23813
|
+
});
|
|
23814
|
+
// Remove inactive items from end to start
|
|
23815
|
+
let i = plotItems.length;
|
|
23816
|
+
while (i--) {
|
|
23817
|
+
if (!plotItems[i].isActive) {
|
|
23818
|
+
plotItems[i].remove();
|
|
23819
|
+
}
|
|
23820
|
+
else {
|
|
23821
|
+
delete plotItems[i].isActive;
|
|
23822
|
+
}
|
|
23823
|
+
}
|
|
23824
|
+
}
|
|
23825
|
+
}
|
|
23817
23826
|
});
|
|
23818
23827
|
}
|
|
23819
23828
|
return AxisClass;
|
|
@@ -23884,23 +23893,6 @@ var PlotLineOrBandAxis;
|
|
|
23884
23893
|
}
|
|
23885
23894
|
return result;
|
|
23886
23895
|
}
|
|
23887
|
-
/**
|
|
23888
|
-
* Remove a plot band by its id.
|
|
23889
|
-
*
|
|
23890
|
-
* @sample highcharts/members/axis-removeplotband/
|
|
23891
|
-
* Remove plot band by id
|
|
23892
|
-
* @sample highcharts/members/axis-addplotband/
|
|
23893
|
-
* Toggle the plot band from a button
|
|
23894
|
-
*
|
|
23895
|
-
* @function Highcharts.Axis#removePlotBand
|
|
23896
|
-
*
|
|
23897
|
-
* @param {string} id
|
|
23898
|
-
* The plot band's `id` as given in the original configuration
|
|
23899
|
-
* object or in the `addPlotBand` option.
|
|
23900
|
-
*/
|
|
23901
|
-
function removePlotBand(id) {
|
|
23902
|
-
this.removePlotBandOrLine(id);
|
|
23903
|
-
}
|
|
23904
23896
|
/**
|
|
23905
23897
|
* Remove a plot band or plot line from the chart by id. Called
|
|
23906
23898
|
* internally from `removePlotBand` and `removePlotLine`.
|
|
@@ -23908,45 +23900,7 @@ var PlotLineOrBandAxis;
|
|
|
23908
23900
|
* @function Highcharts.Axis#removePlotBandOrLine
|
|
23909
23901
|
*/
|
|
23910
23902
|
function removePlotBandOrLine(id) {
|
|
23911
|
-
|
|
23912
|
-
if (plotLinesAndBands) { // #15639
|
|
23913
|
-
let i = plotLinesAndBands.length;
|
|
23914
|
-
while (i--) {
|
|
23915
|
-
if (plotLinesAndBands[i].id === id) {
|
|
23916
|
-
plotLinesAndBands[i].destroy();
|
|
23917
|
-
}
|
|
23918
|
-
}
|
|
23919
|
-
([
|
|
23920
|
-
options.plotLines || [],
|
|
23921
|
-
userOptions.plotLines || [],
|
|
23922
|
-
options.plotBands || [],
|
|
23923
|
-
userOptions.plotBands || []
|
|
23924
|
-
]).forEach(function (arr) {
|
|
23925
|
-
i = arr.length;
|
|
23926
|
-
while (i--) {
|
|
23927
|
-
if (arr[i]?.id === id) {
|
|
23928
|
-
erase(arr, arr[i]);
|
|
23929
|
-
}
|
|
23930
|
-
}
|
|
23931
|
-
});
|
|
23932
|
-
}
|
|
23933
|
-
}
|
|
23934
|
-
/**
|
|
23935
|
-
* Remove a plot line by its id.
|
|
23936
|
-
*
|
|
23937
|
-
* @sample highcharts/xaxis/plotlines-id/
|
|
23938
|
-
* Remove plot line by id
|
|
23939
|
-
* @sample highcharts/members/axis-addplotline/
|
|
23940
|
-
* Toggle the plot line from a button
|
|
23941
|
-
*
|
|
23942
|
-
* @function Highcharts.Axis#removePlotLine
|
|
23943
|
-
*
|
|
23944
|
-
* @param {string} id
|
|
23945
|
-
* The plot line's `id` as given in the original configuration
|
|
23946
|
-
* object or in the `addPlotLine` option.
|
|
23947
|
-
*/
|
|
23948
|
-
function removePlotLine(id) {
|
|
23949
|
-
this.removePlotBandOrLine(id);
|
|
23903
|
+
[...this.plotBands || [], ...this.plotLines || []].find((plotItem) => plotItem.id === id)?.remove();
|
|
23950
23904
|
}
|
|
23951
23905
|
})(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));
|
|
23952
23906
|
/* *
|
|
@@ -24010,9 +23964,11 @@ class PlotLineOrBand {
|
|
|
24010
23964
|
this.labelCollectors.push(() => {
|
|
24011
23965
|
const labels = [];
|
|
24012
23966
|
for (const axis of this.axes) {
|
|
24013
|
-
for (const
|
|
24014
|
-
|
|
24015
|
-
|
|
23967
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
23968
|
+
for (const { label, options } of axis[coll]) {
|
|
23969
|
+
if (label && !options?.label?.allowOverlap) {
|
|
23970
|
+
labels.push(label);
|
|
23971
|
+
}
|
|
24016
23972
|
}
|
|
24017
23973
|
}
|
|
24018
23974
|
}
|
|
@@ -24026,7 +23982,7 @@ class PlotLineOrBand {
|
|
|
24026
23982
|
* Constructor
|
|
24027
23983
|
*
|
|
24028
23984
|
* */
|
|
24029
|
-
constructor(axis, options) {
|
|
23985
|
+
constructor(axis, options, coll) {
|
|
24030
23986
|
/**
|
|
24031
23987
|
* Related axis.
|
|
24032
23988
|
*
|
|
@@ -24042,6 +23998,7 @@ class PlotLineOrBand {
|
|
|
24042
23998
|
*/
|
|
24043
23999
|
this.options = options;
|
|
24044
24000
|
this.id = options.id;
|
|
24001
|
+
this.coll = coll;
|
|
24045
24002
|
}
|
|
24046
24003
|
/* *
|
|
24047
24004
|
*
|
|
@@ -24057,43 +24014,28 @@ class PlotLineOrBand {
|
|
|
24057
24014
|
*/
|
|
24058
24015
|
render() {
|
|
24059
24016
|
fireEvent(this, 'render');
|
|
24060
|
-
const { axis, options } = this, { chart, horiz, logarithmic } = axis, { color, events, zIndex = 0 } = options, { renderer, time } = axis.chart,
|
|
24017
|
+
const { axis, options } = this, { chart, horiz, logarithmic } = axis, { color, events, zIndex = 0 } = options, { renderer, styledMode, time } = axis.chart,
|
|
24061
24018
|
// These properties only exist on either band or line
|
|
24062
24019
|
to = time.parse(options.to), from = time.parse(options.from), value = time.parse(options.value), borderWidth = options.borderWidth;
|
|
24063
|
-
let optionsLabel = options.label, { label, svgElem } = this,
|
|
24064
|
-
const isBand =
|
|
24065
|
-
'class':
|
|
24066
|
-
|
|
24067
|
-
|
|
24068
|
-
|
|
24069
|
-
// Set the
|
|
24070
|
-
if (!
|
|
24071
|
-
|
|
24072
|
-
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
24073
|
-
attribs['stroke-width'] =
|
|
24074
|
-
options.width ?? 1;
|
|
24075
|
-
if (options.dashStyle) {
|
|
24076
|
-
attribs.dashstyle = options.dashStyle;
|
|
24077
|
-
}
|
|
24078
|
-
}
|
|
24079
|
-
else if (isBand) { // Plot band
|
|
24080
|
-
attribs.fill = color || 'var(--highcharts-highlight-color-10)';
|
|
24081
|
-
if (borderWidth) {
|
|
24082
|
-
attribs.stroke = options.borderColor;
|
|
24083
|
-
attribs['stroke-width'] = borderWidth;
|
|
24084
|
-
}
|
|
24085
|
-
}
|
|
24020
|
+
let optionsLabel = options.label, { label, svgElem } = this, group;
|
|
24021
|
+
const isBand = this.coll === 'plotBands', shortKey = isBand ? 'band' : 'line', groupName = `${shortKey}s-${zIndex}`, isNew = !svgElem, attribs = {
|
|
24022
|
+
'class': `highcharts-plot-${shortKey} ${options.className || ''}`
|
|
24023
|
+
}, strokeWidth = isBand ?
|
|
24024
|
+
(borderWidth || 0) :
|
|
24025
|
+
(options.width ?? 1);
|
|
24026
|
+
// Set the stroke width before the path is calculated
|
|
24027
|
+
if (!styledMode) {
|
|
24028
|
+
attribs['stroke-width'] = strokeWidth;
|
|
24086
24029
|
}
|
|
24087
24030
|
// Grouping and zIndex
|
|
24088
|
-
groupAttribs.zIndex = zIndex;
|
|
24089
|
-
groupName += '-' + zIndex;
|
|
24090
24031
|
group = axis.plotLinesAndBandsGroups[groupName];
|
|
24091
24032
|
if (!group) {
|
|
24092
24033
|
axis.plotLinesAndBandsGroups[groupName] = group =
|
|
24093
24034
|
renderer.g('plot-' + groupName)
|
|
24094
24035
|
.clip(chart.plotClipOuter)
|
|
24095
|
-
.attr(
|
|
24036
|
+
.attr({ zIndex }).add();
|
|
24096
24037
|
}
|
|
24038
|
+
group[isNew ? 'attr' : 'animate']({ opacity: +axis.visible });
|
|
24097
24039
|
// Create the path
|
|
24098
24040
|
if (!svgElem) {
|
|
24099
24041
|
/**
|
|
@@ -24104,40 +24046,58 @@ class PlotLineOrBand {
|
|
|
24104
24046
|
*/
|
|
24105
24047
|
this.svgElem = svgElem = renderer
|
|
24106
24048
|
.path()
|
|
24107
|
-
.attr(attribs)
|
|
24108
|
-
|
|
24049
|
+
.attr(attribs);
|
|
24050
|
+
}
|
|
24051
|
+
// Add it to the correct index while allowing dynamic z-index update
|
|
24052
|
+
if (svgElem.parentGroup !== group) {
|
|
24053
|
+
svgElem.add(group);
|
|
24109
24054
|
}
|
|
24110
24055
|
// Set the path or return
|
|
24111
|
-
|
|
24056
|
+
let path;
|
|
24057
|
+
if (!isBand && defined(value)) { // Plot line
|
|
24112
24058
|
path = axis.getPlotLinePath({
|
|
24113
24059
|
value: logarithmic?.log2lin(value) ?? value,
|
|
24114
24060
|
lineWidth: svgElem.strokeWidth(),
|
|
24115
24061
|
acrossPanes: options.acrossPanes
|
|
24116
24062
|
});
|
|
24117
24063
|
}
|
|
24118
|
-
else if (defined(from) && defined(to)) { // Plot band
|
|
24064
|
+
else if (isBand && defined(from) && defined(to)) { // Plot band
|
|
24119
24065
|
path = axis.getPlotBandPath(logarithmic?.log2lin(from) ?? from, logarithmic?.log2lin(to) ?? to, options);
|
|
24120
24066
|
}
|
|
24121
|
-
|
|
24122
|
-
|
|
24067
|
+
if (path) {
|
|
24068
|
+
attribs.d = path;
|
|
24069
|
+
}
|
|
24070
|
+
// Apply the styling
|
|
24071
|
+
if (!styledMode) {
|
|
24072
|
+
if (isBand) { // Plot band
|
|
24073
|
+
attribs.fill = color || 'var(--highcharts-highlight-color-10)';
|
|
24074
|
+
if (borderWidth) {
|
|
24075
|
+
attribs.stroke = options.borderColor;
|
|
24076
|
+
}
|
|
24077
|
+
}
|
|
24078
|
+
else {
|
|
24079
|
+
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
24080
|
+
if (options.dashStyle) {
|
|
24081
|
+
attribs.dashstyle = options.dashStyle;
|
|
24082
|
+
}
|
|
24083
|
+
}
|
|
24123
24084
|
}
|
|
24124
24085
|
// Common for lines and bands. Add events only if they were not added
|
|
24125
24086
|
// before.
|
|
24126
|
-
if (
|
|
24087
|
+
if (isNew && events) {
|
|
24127
24088
|
objectEach(events, (_event, eventType) => {
|
|
24128
24089
|
svgElem?.on(eventType, (e) => {
|
|
24129
24090
|
events[eventType].apply(this, [e, this]);
|
|
24130
24091
|
});
|
|
24131
24092
|
});
|
|
24132
|
-
this.eventsAdded = true;
|
|
24133
24093
|
}
|
|
24134
24094
|
if ((isNew || !svgElem.d) && path?.length) {
|
|
24135
|
-
svgElem.attr(
|
|
24095
|
+
svgElem.attr(attribs);
|
|
24136
24096
|
}
|
|
24137
24097
|
else if (svgElem) {
|
|
24138
24098
|
if (path) {
|
|
24139
24099
|
svgElem.show();
|
|
24140
|
-
svgElem.animate(
|
|
24100
|
+
svgElem.animate(attribs);
|
|
24141
24101
|
}
|
|
24142
24102
|
else if (svgElem.d) {
|
|
24143
24103
|
svgElem.hide();
|
|
@@ -24177,7 +24137,7 @@ class PlotLineOrBand {
|
|
|
24177
24137
|
* @function Highcharts.PlotLineOrBand#renderLabel
|
|
24178
24138
|
*/
|
|
24179
24139
|
renderLabel(optionsLabel, path, isBand, zIndex) {
|
|
24180
|
-
const plotLine = this, axis = plotLine.axis,
|
|
24140
|
+
const plotLine = this, axis = plotLine.axis, chart = axis.chart, renderer = chart.renderer, inside = optionsLabel.inside;
|
|
24181
24141
|
let label = plotLine.label;
|
|
24182
24142
|
// Add the SVG element
|
|
24183
24143
|
if (!label) {
|
|
@@ -24188,25 +24148,31 @@ class PlotLineOrBand {
|
|
|
24188
24148
|
* @type {Highcharts.SVGElement}
|
|
24189
24149
|
*/
|
|
24190
24150
|
plotLine.label = label = renderer
|
|
24191
|
-
.text(
|
|
24192
|
-
.attr({
|
|
24193
|
-
|
|
24194
|
-
|
|
24195
|
-
|
|
24196
|
-
|
|
24197
|
-
|
|
24198
|
-
|
|
24199
|
-
|
|
24200
|
-
|
|
24201
|
-
|
|
24202
|
-
|
|
24203
|
-
|
|
24204
|
-
|
|
24205
|
-
|
|
24206
|
-
|
|
24207
|
-
|
|
24208
|
-
|
|
24209
|
-
|
|
24151
|
+
.text('', 0, 0, optionsLabel.useHTML)
|
|
24152
|
+
.attr({ zIndex });
|
|
24153
|
+
}
|
|
24154
|
+
label
|
|
24155
|
+
.attr({
|
|
24156
|
+
text: this.getLabelText(optionsLabel),
|
|
24157
|
+
align: optionsLabel.textAlign || optionsLabel.align,
|
|
24158
|
+
'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +
|
|
24159
|
+
'-label ' + (optionsLabel.className || '')
|
|
24160
|
+
})[label.placed ? 'animate' : 'attr']({
|
|
24161
|
+
opacity: 1,
|
|
24162
|
+
rotation: optionsLabel.rotation
|
|
24163
|
+
});
|
|
24164
|
+
if (!chart.styledMode) {
|
|
24165
|
+
label.css(merge({
|
|
24166
|
+
// To allow theming, and in lack of a general place to set
|
|
24167
|
+
// default options for plot lines and bands, default to the
|
|
24168
|
+
// title color. If we expose the palette, we should use that
|
|
24169
|
+
// instead.
|
|
24170
|
+
color: chart.options.title?.style?.color,
|
|
24171
|
+
fontSize: '0.8em',
|
|
24172
|
+
textOverflow: (isBand && !inside) ? '' : 'ellipsis'
|
|
24173
|
+
}, optionsLabel.style));
|
|
24174
|
+
}
|
|
24175
|
+
if (!label.added) {
|
|
24210
24176
|
label.add();
|
|
24211
24177
|
}
|
|
24212
24178
|
// Get the bounding box and align the label
|
|
@@ -24230,12 +24196,31 @@ class PlotLineOrBand {
|
|
|
24230
24196
|
axis.height - (label.alignAttr.y -
|
|
24231
24197
|
axis.top) : (optionsLabel.clip ?
|
|
24232
24198
|
(axis.width + axis.left) :
|
|
24233
|
-
|
|
24199
|
+
chart.chartWidth) - label.alignAttr.x) :
|
|
24234
24200
|
bBoxWidth)) + 'px'
|
|
24235
24201
|
});
|
|
24236
24202
|
}
|
|
24203
|
+
else if (label.textWidth) {
|
|
24204
|
+
label.css({ width: 'auto' });
|
|
24205
|
+
}
|
|
24237
24206
|
label.show(true);
|
|
24238
24207
|
}
|
|
24208
|
+
/**
|
|
24209
|
+
* Update the plot line or band with new options.
|
|
24210
|
+
*
|
|
24211
|
+
* @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} options
|
|
24212
|
+
* The new options to apply
|
|
24213
|
+
* @param {boolean} [redraw=true]
|
|
24214
|
+
* Whether to redraw the plot guide immediately
|
|
24215
|
+
*
|
|
24216
|
+
* @function Highcharts.PlotLineOrBand#update
|
|
24217
|
+
*/
|
|
24218
|
+
update(options, redraw = true) {
|
|
24219
|
+
merge(true, this.options, options);
|
|
24220
|
+
if (redraw) {
|
|
24221
|
+
this.render();
|
|
24222
|
+
}
|
|
24223
|
+
}
|
|
24239
24224
|
/**
|
|
24240
24225
|
* Get label's text content.
|
|
24241
24226
|
* @internal
|
|
@@ -24247,15 +24232,22 @@ class PlotLineOrBand {
|
|
|
24247
24232
|
optionsLabel.text;
|
|
24248
24233
|
}
|
|
24249
24234
|
/**
|
|
24250
|
-
*
|
|
24251
|
-
*
|
|
24252
|
-
* @function Highcharts.PlotLineOrBand#destroy
|
|
24235
|
+
* Destroy the item's elements
|
|
24253
24236
|
*/
|
|
24254
24237
|
destroy() {
|
|
24238
|
+
destroyObjectProperties(this, this.axis);
|
|
24239
|
+
}
|
|
24240
|
+
/**
|
|
24241
|
+
* Remove the plot line or band and destroy its elements.
|
|
24242
|
+
*
|
|
24243
|
+
* @function Highcharts.PlotLineOrBand#remove
|
|
24244
|
+
*/
|
|
24245
|
+
remove() {
|
|
24255
24246
|
// Remove it from the lookup
|
|
24256
|
-
erase(this.axis.
|
|
24257
|
-
|
|
24258
|
-
|
|
24247
|
+
erase(this.axis[this.coll], this);
|
|
24248
|
+
// Remove from options
|
|
24249
|
+
erase(this.axis.options[this.coll] || [], this.options);
|
|
24250
|
+
this.destroy();
|
|
24259
24251
|
}
|
|
24260
24252
|
}
|
|
24261
24253
|
/* *
|
|
@@ -24302,10 +24294,24 @@ class PlotLineOrBand {
|
|
|
24302
24294
|
* In styled mode, the plot bands are styled by the `.highcharts-plot-band`
|
|
24303
24295
|
* class in addition to the `className` option.
|
|
24304
24296
|
*
|
|
24297
|
+
* When doing `Chart.update()` or `Axis.update()`, the plot bands are updated
|
|
24298
|
+
* by index or id. The following merging rules apply:
|
|
24299
|
+
* - If `plotBands` are not defined in the new options, all existing plot bands
|
|
24300
|
+
* are kept.
|
|
24301
|
+
* - If `plotBands` are defined without ids, the existing plot bands are updated
|
|
24302
|
+
* by index. If the new array has fewer plot bands, the remaining existing
|
|
24303
|
+
* plot bands are removed. If the new array has more plot bands, the extra
|
|
24304
|
+
* ones are added. An empty array removes all existing plot bands.
|
|
24305
|
+
* - If `plotBands` are defined with ids, the existing plot bands are matched
|
|
24306
|
+
* by id, and remaining unmatched existing plot bands are removed.
|
|
24307
|
+
*
|
|
24305
24308
|
* @productdesc {highcharts}
|
|
24306
24309
|
* In a gauge, a plot band on the Y axis (value axis) will stretch along the
|
|
24307
24310
|
* perimeter of the gauge.
|
|
24308
24311
|
*
|
|
24312
|
+
* @sample {highcharts} highcharts/xaxis/plotbands-color/
|
|
24313
|
+
* Basic plot band
|
|
24314
|
+
*
|
|
24309
24315
|
* @type {Array<*>}
|
|
24310
24316
|
* @product highcharts highstock gantt
|
|
24311
24317
|
* @apioption xAxis.plotBands
|
|
@@ -24597,12 +24603,23 @@ class PlotLineOrBand {
|
|
|
24597
24603
|
* In styled mode, the plot lines are styled by the
|
|
24598
24604
|
* `.highcharts-plot-line` class in addition to the `className` option.
|
|
24599
24605
|
*
|
|
24606
|
+
* When doing `Chart.update()` or `Axis.update()`, the plot lines are updated
|
|
24607
|
+
* by index or id. The following merging rules apply:
|
|
24608
|
+
* - If `plotLines` are not defined in the new options, all existing plot lines
|
|
24609
|
+
* are kept.
|
|
24610
|
+
* - If `plotLines` are defined without ids, the existing plot lines are updated
|
|
24611
|
+
* by index. If the new array has fewer plot lines, the remaining existing
|
|
24612
|
+
* plot lines are removed. If the new array has more plot lines, the extra
|
|
24613
|
+
* ones are added. An empty array removes all existing plot lines.
|
|
24614
|
+
* - If `plotLines` are defined with ids, the existing plot lines are matched
|
|
24615
|
+
* by id, and remaining unmatched existing plot lines are removed.
|
|
24616
|
+
*
|
|
24600
24617
|
* @type {Array<*>}
|
|
24601
24618
|
* @product highcharts highstock gantt
|
|
24602
|
-
* @sample
|
|
24603
|
-
*
|
|
24604
|
-
* @sample
|
|
24605
|
-
*
|
|
24619
|
+
* @sample {highcharts} highcharts/xaxis/plotlines-color/
|
|
24620
|
+
* Basic plot line
|
|
24621
|
+
* @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/
|
|
24622
|
+
* Solid gauge plot line
|
|
24606
24623
|
* @apioption xAxis.plotLines
|
|
24607
24624
|
*/
|
|
24608
24625
|
/**
|
|
@@ -25111,14 +25128,11 @@ class Tooltip {
|
|
|
25111
25128
|
*/
|
|
25112
25129
|
destroy() {
|
|
25113
25130
|
// Destroy and clear local variables
|
|
25114
|
-
|
|
25115
|
-
|
|
25116
|
-
}
|
|
25131
|
+
this.tracker = this.tracker?.destroy();
|
|
25132
|
+
this.label = this.label?.destroy();
|
|
25117
25133
|
if (this.split) {
|
|
25118
25134
|
this.cleanSplit(true);
|
|
25119
|
-
|
|
25120
|
-
this.tt = this.tt.destroy();
|
|
25121
|
-
}
|
|
25135
|
+
this.tt = this.tt?.destroy();
|
|
25122
25136
|
}
|
|
25123
25137
|
if (this.renderer) {
|
|
25124
25138
|
this.renderer = this.renderer.destroy();
|
|
@@ -25648,6 +25662,8 @@ class Tooltip {
|
|
|
25648
25662
|
!this.isHidden &&
|
|
25649
25663
|
!options.fixed &&
|
|
25650
25664
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
25665
|
+
this.anchorX = anchorX;
|
|
25666
|
+
this.anchorY = anchorY;
|
|
25651
25667
|
if (!skipAnchor) {
|
|
25652
25668
|
attr.anchorX = anchorX;
|
|
25653
25669
|
attr.anchorY = anchorY;
|
|
@@ -26094,45 +26110,37 @@ class Tooltip {
|
|
|
26094
26110
|
*/
|
|
26095
26111
|
drawTracker() {
|
|
26096
26112
|
const tooltip = this;
|
|
26097
|
-
if (!
|
|
26098
|
-
|
|
26099
|
-
tooltip.tracker = tooltip.tracker.destroy();
|
|
26100
|
-
}
|
|
26113
|
+
if (!tooltip.shouldStickOnContact()) {
|
|
26114
|
+
tooltip.tracker = tooltip.tracker?.destroy();
|
|
26101
26115
|
return;
|
|
26102
26116
|
}
|
|
26103
|
-
const chart = tooltip.chart
|
|
26104
|
-
|
|
26105
|
-
|
|
26106
|
-
if (!
|
|
26117
|
+
const { chart, label } = tooltip, points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint,
|
|
26118
|
+
// Split tooltips render into a plain group, with no box to trace
|
|
26119
|
+
box = label?.box;
|
|
26120
|
+
if (!box || !points) {
|
|
26107
26121
|
return;
|
|
26108
26122
|
}
|
|
26109
|
-
const
|
|
26110
|
-
|
|
26111
|
-
|
|
26112
|
-
|
|
26113
|
-
|
|
26114
|
-
|
|
26115
|
-
|
|
26116
|
-
|
|
26117
|
-
|
|
26118
|
-
|
|
26119
|
-
|
|
26120
|
-
//
|
|
26121
|
-
|
|
26122
|
-
|
|
26123
|
-
|
|
26124
|
-
|
|
26125
|
-
|
|
26126
|
-
|
|
26127
|
-
|
|
26128
|
-
Math.max(Math.abs(anchorPos[1]), labelBBox.height - Math.abs(anchorPos[1])) :
|
|
26129
|
-
Math.max(Math.abs(anchorPos[1]), labelBBox.height));
|
|
26130
|
-
if (tooltip.tracker) {
|
|
26131
|
-
tooltip.tracker.attr(box);
|
|
26132
|
-
}
|
|
26133
|
-
else {
|
|
26123
|
+
const { height, r, width, x, y } = box;
|
|
26124
|
+
let { anchorX, anchorY } = box;
|
|
26125
|
+
// Shared tooltips clear the label anchor (#22295), so fall back to the
|
|
26126
|
+
// anchor the position was calculated from
|
|
26127
|
+
if (!isNumber(anchorX)) {
|
|
26128
|
+
anchorX = (tooltip.anchorX || 0) - (label.translateX || 0);
|
|
26129
|
+
anchorY = (tooltip.anchorY || 0) - (label.translateY || 0);
|
|
26130
|
+
}
|
|
26131
|
+
// Match the tooltip shape, but stretch the connector all the way to the
|
|
26132
|
+
// point, so that the pointer can travel between the two without losing
|
|
26133
|
+
// contact. Only the side facing the anchor overshoots the box, so the
|
|
26134
|
+
// largest of the four distances is the one to cover. (#24255)
|
|
26135
|
+
const d = label.renderer.symbols.callout(x, y, width, height, {
|
|
26136
|
+
anchorX,
|
|
26137
|
+
anchorY,
|
|
26138
|
+
arrowLength: Math.max(anchorX - width, -anchorX, anchorY - height, -anchorY, 0),
|
|
26139
|
+
r
|
|
26140
|
+
});
|
|
26141
|
+
if (!tooltip.tracker) {
|
|
26134
26142
|
tooltip.tracker = label.renderer
|
|
26135
|
-
.
|
|
26143
|
+
.path()
|
|
26136
26144
|
.addClass('highcharts-tracker')
|
|
26137
26145
|
.add(label);
|
|
26138
26146
|
// For a rapid move going outside of the elements keeping the
|
|
@@ -26140,10 +26148,14 @@ class Tooltip {
|
|
|
26140
26148
|
addEvent(tooltip.tracker.element, 'mouseenter', () => clearTimeouts(tooltip));
|
|
26141
26149
|
if (!chart.styledMode) {
|
|
26142
26150
|
tooltip.tracker.attr({
|
|
26143
|
-
fill: 'rgba(0,0,0,0)'
|
|
26151
|
+
fill: 'rgba(0,0,0,0)',
|
|
26152
|
+
stroke: 'rgba(0,0,0,0)',
|
|
26153
|
+
'stroke-linejoin': 'round',
|
|
26154
|
+
'stroke-width': 10
|
|
26144
26155
|
});
|
|
26145
26156
|
}
|
|
26146
26157
|
}
|
|
26158
|
+
tooltip.tracker.attr({ d });
|
|
26147
26159
|
}
|
|
26148
26160
|
/** @internal */
|
|
26149
26161
|
styledModeFormat(formatString) {
|
|
@@ -27090,7 +27102,8 @@ class Point {
|
|
|
27090
27102
|
/**
|
|
27091
27103
|
* Set a value in an object, on the property defined by key. The key
|
|
27092
27104
|
* supports nested properties using dot notation. The function modifies the
|
|
27093
|
-
* input object and does not make a copy.
|
|
27105
|
+
* input object and does not make a copy. Paths containing `__proto__` or
|
|
27106
|
+
* `constructor` are ignored.
|
|
27094
27107
|
*
|
|
27095
27108
|
* @function Highcharts.Point#setNestedProperty<T>
|
|
27096
27109
|
*
|
|
@@ -27108,11 +27121,18 @@ class Point {
|
|
|
27108
27121
|
*/
|
|
27109
27122
|
setNestedProperty(object, value, key) {
|
|
27110
27123
|
const nestedKeys = key.split('.');
|
|
27124
|
+
// Reject nested keys that would allow prototype pollution
|
|
27125
|
+
if (nestedKeys.some((nestedKey) => (nestedKey === '__proto__' || nestedKey === 'constructor'))) {
|
|
27126
|
+
return object;
|
|
27127
|
+
}
|
|
27111
27128
|
nestedKeys.reduce(function (result, key, i, arr) {
|
|
27112
27129
|
const isLastKey = arr.length - 1 === i;
|
|
27113
27130
|
result[key] = (isLastKey ?
|
|
27114
27131
|
value :
|
|
27115
|
-
|
|
27132
|
+
// Inherited objects are shared with everything else on
|
|
27133
|
+
// that prototype, so start a fresh one instead
|
|
27134
|
+
isObject(result[key], true) &&
|
|
27135
|
+
Object.hasOwnProperty.call(result, key) ?
|
|
27116
27136
|
result[key] :
|
|
27117
27137
|
{});
|
|
27118
27138
|
return result[key];
|
|
@@ -27194,15 +27214,10 @@ class Point {
|
|
|
27194
27214
|
*/
|
|
27195
27215
|
function update() {
|
|
27196
27216
|
point.applyOptions(options);
|
|
27197
|
-
// Update visuals, #4146
|
|
27198
|
-
//
|
|
27199
|
-
|
|
27200
|
-
const shouldDestroyGraphic = point.y === null ?
|
|
27201
|
-
!hasMockGraphic :
|
|
27202
|
-
hasMockGraphic;
|
|
27203
|
-
if (graphic && shouldDestroyGraphic) {
|
|
27217
|
+
// Update visuals, #4146. The a11y mock graphic is exempt, it is
|
|
27218
|
+
// maintained by the accessibility module, #12718.
|
|
27219
|
+
if (graphic && point.y === null && !point.hasMockGraphic) {
|
|
27204
27220
|
point.graphic = graphic.destroy();
|
|
27205
|
-
delete point.hasMockGraphic;
|
|
27206
27221
|
}
|
|
27207
27222
|
if (isObject(options, true)) {
|
|
27208
27223
|
// Destroy so we can get new elements
|
|
@@ -27217,7 +27232,7 @@ class Point {
|
|
|
27217
27232
|
point.dataLabel = point.dataLabel.destroy(); // #2468
|
|
27218
27233
|
}
|
|
27219
27234
|
}
|
|
27220
|
-
const pointOptions = point.optionsToObject(options);
|
|
27235
|
+
const index = point.index, pointOptions = point.optionsToObject(options);
|
|
27221
27236
|
if (!series.hasProcessedDataTable) {
|
|
27222
27237
|
// Record changes in the data table (#24451)
|
|
27223
27238
|
series.dataTable.setRow(pointOptions, index);
|
|
@@ -29221,19 +29236,18 @@ class Pointer {
|
|
|
29221
29236
|
if (hasMoved ?? true) {
|
|
29222
29237
|
this.pinch(e);
|
|
29223
29238
|
}
|
|
29239
|
+
// If inside, capture touch-drag and display tooltip. If not
|
|
29240
|
+
// inside, allow dragging the finger to scroll the page
|
|
29241
|
+
if (this.hasPointerCapture && // #25095
|
|
29242
|
+
e.type === 'touchmove' &&
|
|
29243
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29244
|
+
e.preventDefault();
|
|
29245
|
+
}
|
|
29224
29246
|
}
|
|
29225
29247
|
else if (start) {
|
|
29226
29248
|
// Hide the tooltip on touching outside the plot area (#1203)
|
|
29227
29249
|
this.reset();
|
|
29228
29250
|
}
|
|
29229
|
-
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29230
|
-
// allow dragging the finger to scroll the page
|
|
29231
|
-
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29232
|
-
isInside &&
|
|
29233
|
-
e.type === 'touchmove' &&
|
|
29234
|
-
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29235
|
-
e.preventDefault();
|
|
29236
|
-
}
|
|
29237
29251
|
}
|
|
29238
29252
|
else if (e.touches.length === 2) {
|
|
29239
29253
|
this.pinch(e);
|
|
@@ -29633,13 +29647,19 @@ const { setLength: DataTableCore_setLength, splice: DataTableCore_splice } = Dat
|
|
|
29633
29647
|
class DataTableCore {
|
|
29634
29648
|
constructor(options = {}) {
|
|
29635
29649
|
this.isDataTable = true;
|
|
29636
|
-
|
|
29650
|
+
// Reject IDs that would pollute the prototype of ID-keyed maps.
|
|
29651
|
+
const id = this.isPollutingKey(options.id) ? void 0 : options.id;
|
|
29652
|
+
this.autoId = !id;
|
|
29637
29653
|
this.columns = {};
|
|
29638
|
-
this.id = (
|
|
29654
|
+
this.id = (id || uniqueKey());
|
|
29639
29655
|
this.rowCount = 0;
|
|
29640
29656
|
this.versionTag = uniqueKey();
|
|
29641
29657
|
let rowCount = 0;
|
|
29642
29658
|
objectEach(options.columns || {}, (column, columnId) => {
|
|
29659
|
+
if (columnId === '__proto__' ||
|
|
29660
|
+
columnId === 'constructor') {
|
|
29661
|
+
return;
|
|
29662
|
+
}
|
|
29643
29663
|
this.columns[columnId] = column.slice();
|
|
29644
29664
|
rowCount = Math.max(rowCount, column.length);
|
|
29645
29665
|
});
|
|
@@ -29650,6 +29670,17 @@ class DataTableCore {
|
|
|
29650
29670
|
* Functions
|
|
29651
29671
|
*
|
|
29652
29672
|
* */
|
|
29673
|
+
/**
|
|
29674
|
+
* Checks whether a key would pollute the prototype if used to index a
|
|
29675
|
+
* plain object (e.g. as a column ID or table ID).
|
|
29676
|
+
*
|
|
29677
|
+
* @private
|
|
29678
|
+
* @param {string|undefined} key The key to check.
|
|
29679
|
+
* @return {boolean} True if the key is unsafe to use.
|
|
29680
|
+
*/
|
|
29681
|
+
isPollutingKey(key) {
|
|
29682
|
+
return key === '__proto__' || key === 'constructor';
|
|
29683
|
+
}
|
|
29653
29684
|
/**
|
|
29654
29685
|
* Applies a row count to the table by setting the `rowCount` property and
|
|
29655
29686
|
* adjusting the length of all columns.
|
|
@@ -29808,6 +29839,10 @@ class DataTableCore {
|
|
|
29808
29839
|
setColumns(columns, rowIndex, eventDetail) {
|
|
29809
29840
|
let rowCount = this.rowCount;
|
|
29810
29841
|
objectEach(columns, (column, columnId) => {
|
|
29842
|
+
if (columnId === '__proto__' ||
|
|
29843
|
+
columnId === 'constructor') {
|
|
29844
|
+
return;
|
|
29845
|
+
}
|
|
29811
29846
|
this.columns[columnId] = column.slice();
|
|
29812
29847
|
rowCount = column.length;
|
|
29813
29848
|
});
|
|
@@ -29846,11 +29881,14 @@ class DataTableCore {
|
|
|
29846
29881
|
* @emits #afterSetRows
|
|
29847
29882
|
*/
|
|
29848
29883
|
setRow(row, rowIndex = this.rowCount, insert, eventDetail) {
|
|
29849
|
-
var _a;
|
|
29850
29884
|
const { columns } = this, indexRowCount = insert ? this.rowCount + 1 : rowIndex + 1, rowKeys = Object.keys(row);
|
|
29851
29885
|
if (eventDetail?.addColumns !== false) {
|
|
29852
29886
|
for (let i = 0, iEnd = rowKeys.length; i < iEnd; i++) {
|
|
29853
|
-
|
|
29887
|
+
const rowKey = rowKeys[i];
|
|
29888
|
+
if (!this.isPollutingKey(rowKey) &&
|
|
29889
|
+
!Object.hasOwnProperty.call(columns, rowKey)) {
|
|
29890
|
+
columns[rowKey] = new Array(this.rowCount);
|
|
29891
|
+
}
|
|
29854
29892
|
}
|
|
29855
29893
|
}
|
|
29856
29894
|
objectEach(columns, (column, columnId) => {
|
|
@@ -33830,7 +33868,19 @@ class Series {
|
|
|
33830
33868
|
.optionsToObject
|
|
33831
33869
|
.call({ series: this }, data[i]);
|
|
33832
33870
|
for (const key of Object.keys(ptOptions)) {
|
|
33833
|
-
|
|
33871
|
+
// Assigning these would write through to
|
|
33872
|
+
// `Object.prototype` or the `Object` constructor instead
|
|
33873
|
+
// of creating a column, and thereby affect unrelated
|
|
33874
|
+
// objects on the page
|
|
33875
|
+
if (key === '__proto__' || key === 'constructor') {
|
|
33876
|
+
continue;
|
|
33877
|
+
}
|
|
33878
|
+
// Inherited keys like `toString` are truthy without being
|
|
33879
|
+
// columns of ours, so test for an own property rather
|
|
33880
|
+
// than for a value (#25321)
|
|
33881
|
+
if (!Object.hasOwnProperty.call(columns, key)) {
|
|
33882
|
+
columns[key] = new Array(dataLength);
|
|
33883
|
+
}
|
|
33834
33884
|
columns[key][i] = ptOptions[key];
|
|
33835
33885
|
}
|
|
33836
33886
|
}
|
|
@@ -34483,7 +34533,7 @@ class Series {
|
|
|
34483
34533
|
// Apply plotBorderRadius clipping
|
|
34484
34534
|
plotClipGroup?.clip(
|
|
34485
34535
|
// Navigator y-axis is not clippable
|
|
34486
|
-
clip && this.yAxis
|
|
34536
|
+
clip && this.yAxis?.clippable ?
|
|
34487
34537
|
chart.plotClipInner :
|
|
34488
34538
|
void 0);
|
|
34489
34539
|
}
|
|
@@ -34786,28 +34836,27 @@ class Series {
|
|
|
34786
34836
|
* @emits Highcharts.Series#event:destroy
|
|
34787
34837
|
*/
|
|
34788
34838
|
destroy(keepEventsForUpdate) {
|
|
34789
|
-
const series = this, chart = series.chart, issue134 = /AppleWebKit\/533/.test(Series_win.navigator.userAgent)
|
|
34790
|
-
let destroy,
|
|
34839
|
+
const series = this, chart = series.chart, issue134 = /AppleWebKit\/533/.test(Series_win.navigator.userAgent);
|
|
34840
|
+
let destroy, axis;
|
|
34791
34841
|
// Add event hook
|
|
34792
34842
|
fireEvent(series, 'destroy', { keepEventsForUpdate });
|
|
34793
34843
|
// Remove events
|
|
34794
34844
|
this.removeEvents(keepEventsForUpdate);
|
|
34795
34845
|
// Erase from axes
|
|
34796
|
-
(series.axisTypes || [])
|
|
34797
|
-
axis = series[
|
|
34846
|
+
for (const coll of (series.axisTypes || [])) {
|
|
34847
|
+
axis = series[coll];
|
|
34798
34848
|
if (axis?.series) {
|
|
34799
34849
|
erase(axis.series, series);
|
|
34800
34850
|
axis.isDirty = axis.forceRedraw = true;
|
|
34801
34851
|
}
|
|
34802
|
-
}
|
|
34852
|
+
}
|
|
34803
34853
|
// Remove legend items
|
|
34804
34854
|
if (series.legendItem) {
|
|
34805
34855
|
series.chart.legend.destroyItem(series);
|
|
34806
34856
|
}
|
|
34807
34857
|
// Destroy all points with their elements
|
|
34808
|
-
|
|
34809
|
-
|
|
34810
|
-
data[i]?.destroy?.(true);
|
|
34858
|
+
for (const point of series.points || []) {
|
|
34859
|
+
point?.destroy?.(true);
|
|
34811
34860
|
}
|
|
34812
34861
|
for (const zone of series.zones || []) {
|
|
34813
34862
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -38946,7 +38995,10 @@ class Chart {
|
|
|
38946
38995
|
elem = this.renderer.text(options.text, 0, 0, options.useHTML)
|
|
38947
38996
|
.attr({
|
|
38948
38997
|
align: options.align,
|
|
38949
|
-
'class':
|
|
38998
|
+
'class': [
|
|
38999
|
+
options.className,
|
|
39000
|
+
'highcharts-' + key
|
|
39001
|
+
].filter(isString).join(' '),
|
|
38950
39002
|
zIndex: options.zIndex || 4
|
|
38951
39003
|
})
|
|
38952
39004
|
.css({
|
|
@@ -39951,7 +40003,7 @@ class Chart {
|
|
|
39951
40003
|
if (label &&
|
|
39952
40004
|
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39953
40005
|
expectedSpace = label.getBBox().height +
|
|
39954
|
-
labels.distance +
|
|
40006
|
+
(labels.distance ?? 15) +
|
|
39955
40007
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
39956
40008
|
}
|
|
39957
40009
|
if (expectedSpace) {
|
|
@@ -40039,6 +40091,12 @@ class Chart {
|
|
|
40039
40091
|
addCredits(credits) {
|
|
40040
40092
|
const chart = this, creds = merge(true, this.options.credits, credits);
|
|
40041
40093
|
if (creds.enabled && !this.credits) {
|
|
40094
|
+
// Run the user-supplied URL through the allow list, so that
|
|
40095
|
+
// references like `javascript:` can't be executed from the
|
|
40096
|
+
// credits label
|
|
40097
|
+
const href = creds.href ?
|
|
40098
|
+
HTML_AST.filterUserAttributes({ href: creds.href }).href :
|
|
40099
|
+
void 0;
|
|
40042
40100
|
/**
|
|
40043
40101
|
* The chart's credits label. The label has an `update` method that
|
|
40044
40102
|
* allows setting new options as per the
|
|
@@ -40052,8 +40110,8 @@ class Chart {
|
|
|
40052
40110
|
.on('click', function (e) {
|
|
40053
40111
|
// Fire the event with browser redirect as default function
|
|
40054
40112
|
fireEvent(chart, 'creditsClick', e, () => {
|
|
40055
|
-
if (
|
|
40056
|
-
Chart_win.location.href =
|
|
40113
|
+
if (href) {
|
|
40114
|
+
Chart_win.location.href = href;
|
|
40057
40115
|
}
|
|
40058
40116
|
});
|
|
40059
40117
|
})
|
|
@@ -41670,14 +41728,11 @@ class StackItem {
|
|
|
41670
41728
|
*
|
|
41671
41729
|
* */
|
|
41672
41730
|
/** @internal */
|
|
41673
|
-
constructor(axis,
|
|
41674
|
-
const inverted = axis.chart.inverted, reversed = axis.reversed;
|
|
41731
|
+
constructor(axis, negativeValue, x, stackOption) {
|
|
41675
41732
|
this.axis = axis;
|
|
41676
41733
|
// The stack goes to the left either if the stack has negative value
|
|
41677
41734
|
// or when axis is reversed. XOR operator.
|
|
41678
|
-
|
|
41679
|
-
// Save the options to be able to style the label
|
|
41680
|
-
this.options = options = options || {};
|
|
41735
|
+
this.negativeValue = negativeValue;
|
|
41681
41736
|
// Save the x value to be able to position the label later
|
|
41682
41737
|
this.x = x;
|
|
41683
41738
|
// Initialize total value
|
|
@@ -41692,20 +41747,6 @@ class StackItem {
|
|
|
41692
41747
|
this.stack = stackOption;
|
|
41693
41748
|
this.leftCliff = 0;
|
|
41694
41749
|
this.rightCliff = 0;
|
|
41695
|
-
// The align options and text align varies on whether the stack is
|
|
41696
|
-
// negative and if the chart is inverted or not.
|
|
41697
|
-
// First test the user supplied value, then use the dynamic.
|
|
41698
|
-
this.alignOptions = {
|
|
41699
|
-
align: options.align ||
|
|
41700
|
-
(inverted ? (isNegative ? 'left' : 'right') : 'center'),
|
|
41701
|
-
verticalAlign: options.verticalAlign ||
|
|
41702
|
-
(inverted ? 'middle' : isNegative ? 'bottom' : 'top'),
|
|
41703
|
-
y: options.y,
|
|
41704
|
-
x: options.x
|
|
41705
|
-
};
|
|
41706
|
-
this.textAlign =
|
|
41707
|
-
options.textAlign ||
|
|
41708
|
-
(inverted ? (!isNegative ? 'left' : 'right') : 'center');
|
|
41709
41750
|
}
|
|
41710
41751
|
/* *
|
|
41711
41752
|
*
|
|
@@ -41721,39 +41762,34 @@ class StackItem {
|
|
|
41721
41762
|
* @internal
|
|
41722
41763
|
*/
|
|
41723
41764
|
render(group) {
|
|
41724
|
-
const
|
|
41765
|
+
const axis = this.axis, chart = axis.chart, options = axis.options.stackLabels || {}, formatOption = options.format,
|
|
41725
41766
|
// Format the text in the label.
|
|
41726
|
-
|
|
41767
|
+
text = (formatOption ?
|
|
41727
41768
|
StackItem_format(formatOption, this, chart) :
|
|
41728
|
-
options.formatter?.call(this, this)) || '';
|
|
41729
|
-
//
|
|
41730
|
-
|
|
41731
|
-
|
|
41732
|
-
|
|
41769
|
+
options.formatter?.call(this, this)) || '', verb = this.label ? 'animate' : 'attr';
|
|
41770
|
+
// Create new label
|
|
41771
|
+
this.label || (this.label = chart.renderer.label(text, 0, void 0, options.shape, void 0, void 0, options.useHTML, false, 'stack-labels'));
|
|
41772
|
+
const label = this.label, animatableAttribs = {
|
|
41773
|
+
r: options.borderRadius || 0,
|
|
41774
|
+
// Set default padding to 5 as it is in dataLabels #12308
|
|
41775
|
+
padding: (options.padding ?? 5)
|
|
41776
|
+
};
|
|
41777
|
+
if (!chart.styledMode) {
|
|
41778
|
+
animatableAttribs.fill = options.backgroundColor;
|
|
41779
|
+
animatableAttribs.stroke = options.borderColor;
|
|
41780
|
+
animatableAttribs['stroke-width'] = options.borderWidth;
|
|
41781
|
+
label.css(options.style || {});
|
|
41733
41782
|
}
|
|
41734
|
-
|
|
41735
|
-
|
|
41736
|
-
|
|
41737
|
-
|
|
41738
|
-
|
|
41739
|
-
|
|
41740
|
-
|
|
41741
|
-
padding: (options.padding ?? 5),
|
|
41742
|
-
visibility: 'hidden' // Hidden until setOffset is called
|
|
41743
|
-
};
|
|
41744
|
-
if (!chart.styledMode) {
|
|
41745
|
-
attr.fill = options.backgroundColor;
|
|
41746
|
-
attr.stroke = options.borderColor;
|
|
41747
|
-
attr['stroke-width'] = options.borderWidth;
|
|
41748
|
-
this.label.css(options.style || {});
|
|
41749
|
-
}
|
|
41750
|
-
this.label.attr(attr);
|
|
41751
|
-
if (!this.label.added) {
|
|
41752
|
-
this.label.add(group); // Add to the labels-group
|
|
41753
|
-
}
|
|
41783
|
+
label
|
|
41784
|
+
.attr({
|
|
41785
|
+
text,
|
|
41786
|
+
visibility: 'hidden' // Hidden until setOffset is called
|
|
41787
|
+
})[verb](animatableAttribs);
|
|
41788
|
+
if (!label.added) {
|
|
41789
|
+
label.add(group); // Add to the labels-group
|
|
41754
41790
|
}
|
|
41755
41791
|
// Rank it higher than data labels (#8742)
|
|
41756
|
-
|
|
41792
|
+
label.labelrank = chart.plotSizeY;
|
|
41757
41793
|
fireEvent(this, 'afterRender');
|
|
41758
41794
|
}
|
|
41759
41795
|
/**
|
|
@@ -41762,35 +41798,38 @@ class StackItem {
|
|
|
41762
41798
|
* @internal
|
|
41763
41799
|
*/
|
|
41764
41800
|
setOffset(xOffset, width, boxBottom, boxTop, defaultX, xAxis) {
|
|
41765
|
-
const {
|
|
41766
|
-
xOffset,
|
|
41767
|
-
width,
|
|
41801
|
+
const { axis, label } = this, chart = axis.chart, options = axis.options.stackLabels || {}, inverted = chart.inverted, isNegative = this.negativeValue !== !!axis.reversed, stackBox = this.getStackBox({
|
|
41768
41802
|
boxBottom,
|
|
41769
41803
|
boxTop,
|
|
41770
41804
|
defaultX,
|
|
41771
|
-
|
|
41772
|
-
|
|
41805
|
+
isNegative,
|
|
41806
|
+
width,
|
|
41807
|
+
xAxis,
|
|
41808
|
+
xOffset
|
|
41809
|
+
}), { align = (inverted ? (isNegative ? 'left' : 'right') : 'center'), verticalAlign = (inverted ? 'middle' : isNegative ? 'bottom' : 'top'), textAlign = (inverted ? (!isNegative ? 'left' : 'right') : 'center'), x = 0, y = 0 } = options, alignOptions = {
|
|
41810
|
+
align,
|
|
41811
|
+
verticalAlign,
|
|
41812
|
+
x,
|
|
41813
|
+
y
|
|
41814
|
+
};
|
|
41773
41815
|
if (label && stackBox) {
|
|
41774
41816
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41775
41817
|
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41776
|
-
// Reset alignOptions property after justify #12337
|
|
41777
|
-
alignOptions.x = options.x || 0;
|
|
41778
|
-
alignOptions.y = options.y || 0;
|
|
41779
41818
|
// Calculate the adjusted Stack position, to take into consideration
|
|
41780
|
-
//
|
|
41781
|
-
//
|
|
41782
|
-
//
|
|
41783
|
-
const { x, y } = this.adjustStackPosition({
|
|
41819
|
+
// the size if the labelBox and vertical alignment as well as the
|
|
41820
|
+
// text alignment. It needs to be done to work with default
|
|
41821
|
+
// SVGLabel.align/justify methods.
|
|
41822
|
+
const { x: adjustX, y: adjustY } = this.adjustStackPosition({
|
|
41784
41823
|
labelBox,
|
|
41785
41824
|
verticalAlign,
|
|
41786
41825
|
textAlign
|
|
41787
41826
|
});
|
|
41788
|
-
stackBox.x -=
|
|
41789
|
-
stackBox.y -=
|
|
41827
|
+
stackBox.x -= adjustX;
|
|
41828
|
+
stackBox.y -= adjustY;
|
|
41790
41829
|
// Align the label to the adjusted box.
|
|
41791
41830
|
label.align(alignOptions, false, stackBox);
|
|
41792
|
-
// Check if label is inside the plotArea #12294
|
|
41793
|
-
visible = chart.isInsidePlot(label.alignAttr.x +
|
|
41831
|
+
// Check if the label is inside the plotArea #12294
|
|
41832
|
+
visible = chart.isInsidePlot(label.alignAttr.x + x + adjustX, label.alignAttr.y + y + adjustY);
|
|
41794
41833
|
if (!visible) {
|
|
41795
41834
|
isJustify = false;
|
|
41796
41835
|
}
|
|
@@ -41798,11 +41837,8 @@ class StackItem {
|
|
|
41798
41837
|
// Justify stackLabel into the alignBox
|
|
41799
41838
|
StackItem_Series.prototype.justifyDataLabel.call(axis, label, alignOptions, label.alignAttr, labelBox, stackBox);
|
|
41800
41839
|
}
|
|
41801
|
-
// Add
|
|
41802
|
-
// Also add correct rotation with its rotation origin. #15129
|
|
41840
|
+
// Add correct rotation with its rotation origin (#15129)
|
|
41803
41841
|
label.attr({
|
|
41804
|
-
x: label.alignAttr.x,
|
|
41805
|
-
y: label.alignAttr.y,
|
|
41806
41842
|
rotation: options.rotation,
|
|
41807
41843
|
rotationOriginX: labelBox.width *
|
|
41808
41844
|
getAlignFactor(options.textAlign || 'center'),
|
|
@@ -41841,22 +41877,22 @@ class StackItem {
|
|
|
41841
41877
|
* The x, y, height, width of the stack.
|
|
41842
41878
|
*/
|
|
41843
41879
|
getStackBox(stackBoxProps) {
|
|
41844
|
-
const
|
|
41880
|
+
const axis = this.axis, chart = axis.chart, { boxBottom, boxTop, defaultX, isNegative, width, xOffset } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41845
41881
|
100 :
|
|
41846
41882
|
(boxTop ?? this.total ?? 0), y = axis.toPixels(totalStackValue), xAxis = stackBoxProps.xAxis || chart.xAxis[0], x = (defaultX ?? xAxis.translate(this.x)) + xOffset, yZero = axis.toPixels(boxBottom ||
|
|
41847
41883
|
(isNumber(axis.min) &&
|
|
41848
41884
|
axis.logarithmic &&
|
|
41849
41885
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
41850
|
-
0), height = Math.abs(y - yZero), inverted = chart.inverted
|
|
41886
|
+
0), height = Math.abs(y - yZero), inverted = chart.inverted;
|
|
41851
41887
|
return inverted ?
|
|
41852
41888
|
{
|
|
41853
|
-
x: (
|
|
41889
|
+
x: (isNegative ? y : y - height) - chart.plotLeft,
|
|
41854
41890
|
y: xAxis.height - x - width + xAxis.top - chart.plotTop,
|
|
41855
41891
|
width: height,
|
|
41856
41892
|
height: width
|
|
41857
41893
|
} : {
|
|
41858
41894
|
x: x + xAxis.transB - chart.plotLeft,
|
|
41859
|
-
y: (
|
|
41895
|
+
y: (isNegative ? y - height : y) - chart.plotTop,
|
|
41860
41896
|
width: width,
|
|
41861
41897
|
height: height
|
|
41862
41898
|
};
|
|
@@ -41892,10 +41928,6 @@ class StackItem {
|
|
|
41892
41928
|
* @name Highcharts.StackItemObject#cumulative
|
|
41893
41929
|
* @type {number}
|
|
41894
41930
|
*/ /**
|
|
41895
|
-
* True if on the negative side
|
|
41896
|
-
* @name Highcharts.StackItemObject#isNegative
|
|
41897
|
-
* @type {boolean}
|
|
41898
|
-
*/ /**
|
|
41899
41931
|
* Related SVG element
|
|
41900
41932
|
* @name Highcharts.StackItemObject#label
|
|
41901
41933
|
* @type {Highcharts.SVGElement}
|
|
@@ -42112,7 +42144,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
42112
42144
|
stacks[key][x].total = null;
|
|
42113
42145
|
}
|
|
42114
42146
|
else {
|
|
42115
|
-
stacks[key][x] = new Stacking_StackItem(axis,
|
|
42147
|
+
stacks[key][x] = new Stacking_StackItem(axis, !!isNegative, x, stackOption);
|
|
42116
42148
|
}
|
|
42117
42149
|
}
|
|
42118
42150
|
// If the StackItem doesn't exist, create it first
|
|
@@ -42269,29 +42301,41 @@ class AxisAdditions {
|
|
|
42269
42301
|
});
|
|
42270
42302
|
});
|
|
42271
42303
|
}
|
|
42272
|
-
/**
|
|
42304
|
+
/**
|
|
42305
|
+
* Create the stack totals group and render the individual labels into it
|
|
42306
|
+
* @internal
|
|
42307
|
+
*/
|
|
42273
42308
|
renderStackTotals() {
|
|
42274
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks,
|
|
42275
|
-
|
|
42276
|
-
|
|
42277
|
-
|
|
42278
|
-
|
|
42279
|
-
|
|
42280
|
-
|
|
42281
|
-
|
|
42282
|
-
|
|
42283
|
-
|
|
42284
|
-
|
|
42285
|
-
|
|
42286
|
-
|
|
42287
|
-
|
|
42288
|
-
|
|
42289
|
-
|
|
42309
|
+
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, { animation, enabled } = axis.options.stackLabels || {}, animationConfig = getDeferredAnimation(chart, animation || false), stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||
|
|
42310
|
+
(enabled ?
|
|
42311
|
+
renderer
|
|
42312
|
+
.g('stack-labels')
|
|
42313
|
+
.attr({
|
|
42314
|
+
zIndex: 6,
|
|
42315
|
+
opacity: 0
|
|
42316
|
+
})
|
|
42317
|
+
.add() :
|
|
42318
|
+
void 0));
|
|
42319
|
+
if (stackTotalGroup) {
|
|
42320
|
+
// The plotLeft/Top will change when y axis gets wider so we need to
|
|
42321
|
+
// translate the stackTotalGroup at every render call. See bug #506
|
|
42322
|
+
// and #516
|
|
42323
|
+
stackTotalGroup.translate(chart.plotLeft, chart.plotTop);
|
|
42324
|
+
// Render each stack total
|
|
42325
|
+
objectEach(stacks, (type) => {
|
|
42326
|
+
objectEach(type, (stack) => {
|
|
42327
|
+
if (enabled) {
|
|
42328
|
+
stack.render(stackTotalGroup);
|
|
42329
|
+
}
|
|
42330
|
+
else {
|
|
42331
|
+
stack.label = stack.label?.destroy();
|
|
42332
|
+
}
|
|
42333
|
+
});
|
|
42290
42334
|
});
|
|
42291
|
-
|
|
42292
|
-
|
|
42293
|
-
|
|
42294
|
-
}
|
|
42335
|
+
stackTotalGroup.animate({
|
|
42336
|
+
opacity: 1
|
|
42337
|
+
}, animationConfig);
|
|
42338
|
+
}
|
|
42295
42339
|
}
|
|
42296
42340
|
}
|
|
42297
42341
|
/* *
|
|
@@ -42613,7 +42657,6 @@ Series_SeriesRegistry.registerSeriesType('line', LineSeries);
|
|
|
42613
42657
|
* specified, it is inherited from [chart.type](#chart.type).
|
|
42614
42658
|
*
|
|
42615
42659
|
* @extends series,plotOptions.line
|
|
42616
|
-
* @excluding dataParser,dataURL
|
|
42617
42660
|
* @product highcharts highstock
|
|
42618
42661
|
* @apioption series.line
|
|
42619
42662
|
*/
|
|
@@ -42987,7 +43030,7 @@ const AreaSeriesDefaults = {
|
|
|
42987
43030
|
* specified, it is inherited from [chart.type](#chart.type).
|
|
42988
43031
|
*
|
|
42989
43032
|
* @extends series,plotOptions.area
|
|
42990
|
-
* @excluding
|
|
43033
|
+
* @excluding useOhlcData
|
|
42991
43034
|
* @product highcharts highstock
|
|
42992
43035
|
* @apioption series.area
|
|
42993
43036
|
*/
|
|
@@ -43624,7 +43667,7 @@ Series_SeriesRegistry.registerSeriesType('spline', SplineSeries);
|
|
|
43624
43667
|
* not specified, it is inherited from [chart.type](#chart.type).
|
|
43625
43668
|
*
|
|
43626
43669
|
* @extends series,plotOptions.spline
|
|
43627
|
-
* @excluding
|
|
43670
|
+
* @excluding step, boostThreshold, boostBlending
|
|
43628
43671
|
* @product highcharts highstock
|
|
43629
43672
|
* @apioption series.spline
|
|
43630
43673
|
*/
|
|
@@ -43786,7 +43829,7 @@ Series_SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);
|
|
|
43786
43829
|
*
|
|
43787
43830
|
*
|
|
43788
43831
|
* @extends series,plotOptions.areaspline
|
|
43789
|
-
* @excluding
|
|
43832
|
+
* @excluding step, boostThreshold, boostBlending
|
|
43790
43833
|
* @product highcharts highstock
|
|
43791
43834
|
* @apioption series.areaspline
|
|
43792
43835
|
*/
|
|
@@ -44063,13 +44106,16 @@ const ColumnSeriesDefaults = {
|
|
|
44063
44106
|
* The minimal height for a column or width for a bar. By default,
|
|
44064
44107
|
* 0 values are not shown. To visualize a 0 (or close to zero) point,
|
|
44065
44108
|
* set the minimal point length to a pixel value like 3\. In stacked
|
|
44066
|
-
* column charts,
|
|
44067
|
-
* packed values.
|
|
44109
|
+
* column charts, the length is applied to each point in isolation, so
|
|
44110
|
+
* tightly packed values may overlap. See the stacked sample below for a
|
|
44111
|
+
* plugin that lays out the stack as a whole instead.
|
|
44068
44112
|
*
|
|
44069
44113
|
* @sample {highcharts} highcharts/plotoptions/column-minpointlength/
|
|
44070
44114
|
* Zero base value
|
|
44071
44115
|
* @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/
|
|
44072
44116
|
* Positive and negative close to zero values
|
|
44117
|
+
* @sample {highcharts} highcharts/plotoptions/column-minpointlength-stacked/
|
|
44118
|
+
* Stack-aware minimum length
|
|
44073
44119
|
*
|
|
44074
44120
|
* @product highcharts highstock gantt
|
|
44075
44121
|
*/
|
|
@@ -44240,7 +44286,7 @@ const ColumnSeriesDefaults = {
|
|
|
44240
44286
|
* not specified, it is inherited from [chart.type](#chart.type).
|
|
44241
44287
|
*
|
|
44242
44288
|
* @extends series,plotOptions.column
|
|
44243
|
-
* @excluding connectNulls,
|
|
44289
|
+
* @excluding connectNulls, gapSize, gapUnit, linecap,
|
|
44244
44290
|
* lineWidth, marker, connectEnds, step
|
|
44245
44291
|
* @product highcharts highstock
|
|
44246
44292
|
* @apioption series.column
|
|
@@ -45884,7 +45930,7 @@ Series_SeriesRegistry.registerSeriesType('bar', BarSeries);
|
|
|
45884
45930
|
* it is inherited from [chart.type](#chart.type).
|
|
45885
45931
|
*
|
|
45886
45932
|
* @extends series,plotOptions.bar
|
|
45887
|
-
* @excluding connectNulls, dashStyle,
|
|
45933
|
+
* @excluding connectNulls, dashStyle, gapSize, gapUnit,
|
|
45888
45934
|
* linecap, lineWidth, marker, connectEnds, step
|
|
45889
45935
|
* @product highcharts
|
|
45890
45936
|
* @apioption series.bar
|
|
@@ -46085,7 +46131,7 @@ const ScatterSeriesDefaults = {
|
|
|
46085
46131
|
* not specified, it is inherited from [chart.type](#chart.type).
|
|
46086
46132
|
*
|
|
46087
46133
|
* @extends series,plotOptions.scatter
|
|
46088
|
-
* @excluding cropThreshold,
|
|
46134
|
+
* @excluding cropThreshold, useOhlcData
|
|
46089
46135
|
* @product highcharts highstock
|
|
46090
46136
|
* @apioption series.scatter
|
|
46091
46137
|
*/
|
|
@@ -47187,7 +47233,7 @@ const PieSeriesDefaults = {
|
|
|
47187
47233
|
* it is inherited from [chart.type](#chart.type).
|
|
47188
47234
|
*
|
|
47189
47235
|
* @extends series,plotOptions.pie
|
|
47190
|
-
* @excluding cropThreshold,
|
|
47236
|
+
* @excluding cropThreshold, linkedTo, stack, xAxis, yAxis,
|
|
47191
47237
|
* dataSorting, step, boostThreshold, boostBlending
|
|
47192
47238
|
* @product highcharts highmaps
|
|
47193
47239
|
* @apioption series.pie
|
|
@@ -48288,6 +48334,7 @@ var GeometryUtilities;
|
|
|
48288
48334
|
* */
|
|
48289
48335
|
|
|
48290
48336
|
|
|
48337
|
+
|
|
48291
48338
|
const { pointInPolygon } = Geometry_GeometryUtilities;
|
|
48292
48339
|
|
|
48293
48340
|
/* *
|
|
@@ -48428,30 +48475,34 @@ function composeOverlappingDataLabels(ChartClass) {
|
|
|
48428
48475
|
* Whether label is affected
|
|
48429
48476
|
*/
|
|
48430
48477
|
function hideOrShow(label, chart) {
|
|
48431
|
-
let
|
|
48478
|
+
let isLabelAffected = false;
|
|
48432
48479
|
if (label) {
|
|
48433
|
-
newOpacity = label.newOpacity;
|
|
48480
|
+
const newOpacity = label.newOpacity, isDataLabel = label.hasClass('highcharts-data-label');
|
|
48481
|
+
// For tick labels, we need to stop running animations otherwise they
|
|
48482
|
+
// may continue to run after we set the new opacity
|
|
48483
|
+
if (!isDataLabel) {
|
|
48484
|
+
stop(label, 'opacity');
|
|
48485
|
+
}
|
|
48434
48486
|
if (label.oldOpacity !== newOpacity) {
|
|
48435
48487
|
// Toggle data labels
|
|
48436
|
-
if (
|
|
48488
|
+
if (isDataLabel) {
|
|
48437
48489
|
// Make sure the label is completely hidden to avoid catching
|
|
48438
48490
|
// clicks (#4362)
|
|
48439
48491
|
label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');
|
|
48440
|
-
|
|
48492
|
+
isLabelAffected = true;
|
|
48493
|
+
// Animate or set the opacity
|
|
48494
|
+
label[label.isOld || label.placed ? 'animate' : 'attr']({ opacity: newOpacity }, void 0, () => {
|
|
48441
48495
|
if (!chart.styledMode) {
|
|
48442
48496
|
label.css({
|
|
48443
48497
|
pointerEvents: newOpacity ? 'auto' : 'none'
|
|
48444
48498
|
});
|
|
48445
48499
|
}
|
|
48446
|
-
};
|
|
48447
|
-
isLabelAffected = true;
|
|
48448
|
-
// Animate or set the opacity
|
|
48449
|
-
label[label.isOld || label.placed ? 'animate' : 'attr']({ opacity: newOpacity }, void 0, complete);
|
|
48500
|
+
});
|
|
48450
48501
|
fireEvent(chart, 'afterHideOverlappingLabel');
|
|
48451
|
-
// Toggle other labels
|
|
48502
|
+
// Toggle other labels - tick labels, stack labels
|
|
48452
48503
|
}
|
|
48453
48504
|
else {
|
|
48454
|
-
label.attr({
|
|
48505
|
+
label[label.placed ? 'animate' : 'attr']({
|
|
48455
48506
|
opacity: newOpacity
|
|
48456
48507
|
});
|
|
48457
48508
|
}
|
|
@@ -48467,25 +48518,37 @@ function hideOrShow(label, chart) {
|
|
|
48467
48518
|
* @internal
|
|
48468
48519
|
*/
|
|
48469
48520
|
function OverlappingDataLabels_onChartRender() {
|
|
48470
|
-
const chart = this
|
|
48521
|
+
const chart = this,
|
|
48522
|
+
// Helper function for data labels and stack labels when dynamicly
|
|
48523
|
+
// toggling the allowOverlap option
|
|
48524
|
+
toggle = (label, allowOverlap) => {
|
|
48525
|
+
// Allow overlap, reset opacity and show
|
|
48526
|
+
if (allowOverlap) {
|
|
48527
|
+
label.oldOpacity = label.opacity;
|
|
48528
|
+
label.newOpacity = 1;
|
|
48529
|
+
hideOrShow(label, chart);
|
|
48530
|
+
// Do not allow overlap
|
|
48531
|
+
}
|
|
48532
|
+
else {
|
|
48533
|
+
labels.push(label);
|
|
48534
|
+
}
|
|
48535
|
+
};
|
|
48471
48536
|
let labels = [];
|
|
48472
48537
|
// Consider external label collectors
|
|
48473
48538
|
for (const collector of (chart.labelCollectors || [])) {
|
|
48474
48539
|
labels = labels.concat(collector());
|
|
48475
48540
|
}
|
|
48476
|
-
|
|
48477
|
-
|
|
48478
|
-
|
|
48479
|
-
|
|
48480
|
-
|
|
48481
|
-
|
|
48482
|
-
|
|
48483
|
-
labels.push(stackItem.label);
|
|
48484
|
-
}
|
|
48485
|
-
});
|
|
48541
|
+
// Stack labels
|
|
48542
|
+
for (const { options, stacking } of (chart.yAxis || [])) {
|
|
48543
|
+
objectEach(stacking?.stacks, (stack) => {
|
|
48544
|
+
objectEach(stack, ({ label }) => {
|
|
48545
|
+
if (label) {
|
|
48546
|
+
toggle(label, options.stackLabels?.allowOverlap);
|
|
48547
|
+
}
|
|
48486
48548
|
});
|
|
48487
|
-
}
|
|
48549
|
+
});
|
|
48488
48550
|
}
|
|
48551
|
+
// Series data labels
|
|
48489
48552
|
for (const series of (chart.series || [])) {
|
|
48490
48553
|
if (series.visible && series.hasDataLabels?.()) { // #3866
|
|
48491
48554
|
const push = (points) => {
|
|
@@ -48514,21 +48577,13 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48514
48577
|
}
|
|
48515
48578
|
*/
|
|
48516
48579
|
// Allow overlap if the option is explicitly true
|
|
48517
|
-
|
|
48580
|
+
toggle(label, (
|
|
48518
48581
|
// #13449
|
|
48519
48582
|
options.allowOverlap ??
|
|
48520
48583
|
// Pie labels outside have a separate placement
|
|
48521
48584
|
// logic, skip the overlap logic
|
|
48522
48585
|
(series.is('pie') &&
|
|
48523
|
-
Number(options.distance) > 0))
|
|
48524
|
-
label.oldOpacity = label.opacity;
|
|
48525
|
-
label.newOpacity = 1;
|
|
48526
|
-
hideOrShow(label, chart);
|
|
48527
|
-
// Do not allow overlap
|
|
48528
|
-
}
|
|
48529
|
-
else {
|
|
48530
|
-
labels.push(label);
|
|
48531
|
-
}
|
|
48586
|
+
Number(options.distance) > 0)));
|
|
48532
48587
|
});
|
|
48533
48588
|
}
|
|
48534
48589
|
}
|
|
@@ -49204,7 +49259,7 @@ var Responsive;
|
|
|
49204
49259
|
;// ./code/es-modules/masters/highcharts.src.js
|
|
49205
49260
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
49206
49261
|
/**
|
|
49207
|
-
* @license Highcharts JS v13.0
|
|
49262
|
+
* @license Highcharts JS v13.1.0 (2026-09-18)
|
|
49208
49263
|
* @module highcharts/highcharts
|
|
49209
49264
|
*
|
|
49210
49265
|
* (c) 2009-2026 Highsoft AS
|
|
@@ -49416,7 +49471,8 @@ function compose(ChartClass, NavigatorClass) {
|
|
|
49416
49471
|
const chartProto = ChartClass.prototype;
|
|
49417
49472
|
NavigatorConstructor = NavigatorClass;
|
|
49418
49473
|
chartProto.callbacks.push(onChartCallback);
|
|
49419
|
-
addEvent(ChartClass, 'afterAddSeries',
|
|
49474
|
+
addEvent(ChartClass, 'afterAddSeries', resetBaseSeries);
|
|
49475
|
+
addEvent(ChartClass, 'afterDrillUp', resetBaseSeries);
|
|
49420
49476
|
addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);
|
|
49421
49477
|
addEvent(ChartClass, 'afterUpdate', onChartAfterUpdate);
|
|
49422
49478
|
addEvent(ChartClass, 'beforeRender', onChartBeforeRender);
|
|
@@ -49425,13 +49481,12 @@ function compose(ChartClass, NavigatorClass) {
|
|
|
49425
49481
|
}
|
|
49426
49482
|
}
|
|
49427
49483
|
/**
|
|
49428
|
-
*
|
|
49484
|
+
* Reset the base series.
|
|
49429
49485
|
* @internal
|
|
49430
49486
|
*/
|
|
49431
|
-
function
|
|
49487
|
+
function resetBaseSeries() {
|
|
49432
49488
|
if (this.navigator) {
|
|
49433
|
-
|
|
49434
|
-
this.navigator.setBaseSeries(null, false);
|
|
49489
|
+
this.navigator.setBaseSeries(void 0, false);
|
|
49435
49490
|
}
|
|
49436
49491
|
}
|
|
49437
49492
|
/**
|
|
@@ -49580,7 +49635,7 @@ const ChartNavigatorComposition = {
|
|
|
49580
49635
|
* */
|
|
49581
49636
|
|
|
49582
49637
|
|
|
49583
|
-
const { isTouchDevice: NavigatorAxisComposition_isTouchDevice } = Core_Globals;
|
|
49638
|
+
const { composed: NavigatorAxisComposition_composed, isTouchDevice: NavigatorAxisComposition_isTouchDevice } = Core_Globals;
|
|
49584
49639
|
|
|
49585
49640
|
/* *
|
|
49586
49641
|
*
|
|
@@ -49646,8 +49701,7 @@ class NavigatorAxisAdditions {
|
|
|
49646
49701
|
*
|
|
49647
49702
|
* */
|
|
49648
49703
|
static compose(AxisClass) {
|
|
49649
|
-
if (
|
|
49650
|
-
AxisClass.keepProps.push('navigatorAxis');
|
|
49704
|
+
if (pushUnique(NavigatorAxisComposition_composed, 'Axis.Navigator')) {
|
|
49651
49705
|
addEvent(AxisClass, 'init', NavigatorAxisComposition_onAxisInit);
|
|
49652
49706
|
addEvent(AxisClass, 'setExtremes', onAxisSetExtremes);
|
|
49653
49707
|
}
|
|
@@ -50519,6 +50573,9 @@ var ScrollbarAxis;
|
|
|
50519
50573
|
}
|
|
50520
50574
|
});
|
|
50521
50575
|
}
|
|
50576
|
+
else if (axis.scrollbar) {
|
|
50577
|
+
axis.scrollbar = axis.scrollbar.destroy();
|
|
50578
|
+
}
|
|
50522
50579
|
}
|
|
50523
50580
|
/**
|
|
50524
50581
|
* Wrap rendering axis, and update scrollbar if one is created.
|
|
@@ -50656,14 +50713,12 @@ var ScrollbarAxis;
|
|
|
50656
50713
|
*/
|
|
50657
50714
|
const ScrollbarDefaults = {
|
|
50658
50715
|
/**
|
|
50659
|
-
* The height of the scrollbar. If `buttonsEnabled` is true
|
|
50716
|
+
* The height of the scrollbar. If `buttonsEnabled` is true, the height
|
|
50660
50717
|
* also applies to the width of the scroll arrows so that they are always
|
|
50661
50718
|
* squares.
|
|
50662
50719
|
*
|
|
50663
50720
|
* @sample stock/scrollbar/style/
|
|
50664
50721
|
* Non-default height
|
|
50665
|
-
*
|
|
50666
|
-
* @type {number}
|
|
50667
50722
|
*/
|
|
50668
50723
|
height: 10,
|
|
50669
50724
|
/**
|
|
@@ -52970,11 +53025,7 @@ class Navigator {
|
|
|
52970
53025
|
erase(this.chart.axes, this.yAxis);
|
|
52971
53026
|
}
|
|
52972
53027
|
// Destroy series
|
|
52973
|
-
(this.series || [])
|
|
52974
|
-
if (s.destroy) {
|
|
52975
|
-
s.destroy();
|
|
52976
|
-
}
|
|
52977
|
-
});
|
|
53028
|
+
destroyObjectProperties(this.series || []);
|
|
52978
53029
|
// Destroy properties
|
|
52979
53030
|
[
|
|
52980
53031
|
'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',
|
|
@@ -53094,6 +53145,27 @@ const standaloneNavigatorDefaults = {
|
|
|
53094
53145
|
|
|
53095
53146
|
|
|
53096
53147
|
|
|
53148
|
+
|
|
53149
|
+
/* *
|
|
53150
|
+
*
|
|
53151
|
+
* Functions
|
|
53152
|
+
*
|
|
53153
|
+
* */
|
|
53154
|
+
/**
|
|
53155
|
+
* Support for the deprecated `chart` option, renamed to `chartOptions`.
|
|
53156
|
+
* The new option takes precedence. #24715
|
|
53157
|
+
*
|
|
53158
|
+
* @internal
|
|
53159
|
+
*/
|
|
53160
|
+
function compatChartOptions(options, chart) {
|
|
53161
|
+
if (options.chart) {
|
|
53162
|
+
error(32, false, chart, {
|
|
53163
|
+
'standaloneNavigator.chart': 'use standaloneNavigator.chartOptions'
|
|
53164
|
+
});
|
|
53165
|
+
return merge({ chartOptions: options.chart }, options);
|
|
53166
|
+
}
|
|
53167
|
+
return options;
|
|
53168
|
+
}
|
|
53097
53169
|
/* *
|
|
53098
53170
|
*
|
|
53099
53171
|
* Class
|
|
@@ -53150,9 +53222,15 @@ class StandaloneNavigator {
|
|
|
53150
53222
|
* */
|
|
53151
53223
|
constructor(element, userOptions) {
|
|
53152
53224
|
this.boundAxes = [];
|
|
53153
|
-
this.userOptions = userOptions;
|
|
53154
|
-
this.chartOptions = merge(Core_Globals.getOptions(), StandaloneNavigatorDefaults, userOptions.
|
|
53155
|
-
|
|
53225
|
+
this.userOptions = userOptions = compatChartOptions(userOptions);
|
|
53226
|
+
this.chartOptions = merge(Core_Globals.getOptions(), StandaloneNavigatorDefaults, userOptions.chartOptions, { navigator: userOptions });
|
|
53227
|
+
// For a non-inverted navigator, the height option sets the chart
|
|
53228
|
+
// height unless it is set explicitly in chart options (#21268,
|
|
53229
|
+
// #24715).
|
|
53230
|
+
if (this.chartOptions.chart &&
|
|
53231
|
+
!this.chartOptions.chart.inverted &&
|
|
53232
|
+
!userOptions.chartOptions?.chart?.height &&
|
|
53233
|
+
userOptions.height) {
|
|
53156
53234
|
this.chartOptions.chart.height = userOptions.height;
|
|
53157
53235
|
}
|
|
53158
53236
|
const chart = new Chart_Chart(element, this.chartOptions);
|
|
@@ -53240,10 +53318,8 @@ class StandaloneNavigator {
|
|
|
53240
53318
|
// Set extremes to match the navigator's extremes
|
|
53241
53319
|
axis.setExtremes(min, max);
|
|
53242
53320
|
// Unbind the axis before it's destroyed
|
|
53243
|
-
addEvent(axis, 'destroy', (
|
|
53244
|
-
|
|
53245
|
-
this.unbind(axis);
|
|
53246
|
-
}
|
|
53321
|
+
addEvent(axis, 'destroy', () => {
|
|
53322
|
+
this.unbind(axis);
|
|
53247
53323
|
});
|
|
53248
53324
|
}
|
|
53249
53325
|
/**
|
|
@@ -53337,7 +53413,12 @@ class StandaloneNavigator {
|
|
|
53337
53413
|
* specified, the standalone navigator will be redrawn.
|
|
53338
53414
|
*/
|
|
53339
53415
|
update(newOptions, redraw) {
|
|
53340
|
-
|
|
53416
|
+
newOptions = compatChartOptions(newOptions, this.navigator.chart);
|
|
53417
|
+
this.userOptions = merge(this.userOptions, newOptions);
|
|
53418
|
+
const chartUserOptions = this.userOptions.chartOptions?.chart;
|
|
53419
|
+
this.chartOptions = merge(this.chartOptions, (newOptions.height &&
|
|
53420
|
+
!chartUserOptions?.inverted &&
|
|
53421
|
+
!chartUserOptions?.height) ? { chart: { height: newOptions.height } } : void 0, newOptions.chartOptions, { navigator: newOptions });
|
|
53341
53422
|
this.navigator.chart.update(this.chartOptions, redraw);
|
|
53342
53423
|
}
|
|
53343
53424
|
/**
|
|
@@ -53464,7 +53545,7 @@ class StandaloneNavigator {
|
|
|
53464
53545
|
/* unused harmony import specifier */ var Highcharts;
|
|
53465
53546
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
53466
53547
|
/**
|
|
53467
|
-
* @license Highcharts JS v13.0
|
|
53548
|
+
* @license Highcharts JS v13.1.0 (2026-09-18)
|
|
53468
53549
|
* @module highcharts/modules/navigator
|
|
53469
53550
|
* @requires highcharts
|
|
53470
53551
|
*
|