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
package/highcharts-gantt.src.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
2
2
|
/**
|
|
3
|
-
* @license Highcharts Gantt JS v13.0
|
|
3
|
+
* @license Highcharts Gantt JS v13.1.0 (2026-09-18)
|
|
4
4
|
* @module highcharts/highcharts-gantt
|
|
5
5
|
*
|
|
6
6
|
* (c) 2017-2026 Highsoft AS
|
|
@@ -31,36 +31,17 @@ return /******/ (() => { // webpackBootstrap
|
|
|
31
31
|
/******/
|
|
32
32
|
/************************************************************************/
|
|
33
33
|
/******/ /* webpack/runtime/define property getters */
|
|
34
|
-
/******/
|
|
35
|
-
/******/
|
|
36
|
-
/******/
|
|
37
|
-
/******/ if(
|
|
38
|
-
/******/
|
|
39
|
-
/******/ while(i < definition.length) {
|
|
40
|
-
/******/ var key = definition[i++];
|
|
41
|
-
/******/ var binding = definition[i++];
|
|
42
|
-
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
43
|
-
/******/ if(binding === 0) {
|
|
44
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
45
|
-
/******/ } else {
|
|
46
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
47
|
-
/******/ }
|
|
48
|
-
/******/ } else if(binding === 0) { i++; }
|
|
49
|
-
/******/ }
|
|
50
|
-
/******/ } else {
|
|
51
|
-
/******/ for(var key in definition) {
|
|
52
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
53
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
54
|
-
/******/ }
|
|
55
|
-
/******/ }
|
|
34
|
+
/******/ // define getter/value functions for harmony exports
|
|
35
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
36
|
+
/******/ for(var key in definition) {
|
|
37
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
38
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
56
39
|
/******/ }
|
|
57
|
-
/******/ }
|
|
58
|
-
/******/ }
|
|
40
|
+
/******/ }
|
|
41
|
+
/******/ };
|
|
59
42
|
/******/
|
|
60
43
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
61
|
-
/******/ (
|
|
62
|
-
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
63
|
-
/******/ })();
|
|
44
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));
|
|
64
45
|
/******/
|
|
65
46
|
/************************************************************************/
|
|
66
47
|
let __webpack_exports__ = {};
|
|
@@ -99,7 +80,7 @@ var Globals;
|
|
|
99
80
|
* Constants
|
|
100
81
|
*
|
|
101
82
|
* */
|
|
102
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0
|
|
83
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.1.0', Globals.win = (typeof window !== 'undefined' ?
|
|
103
84
|
window :
|
|
104
85
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
105
86
|
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 = [
|
|
@@ -110,14 +91,16 @@ var Globals;
|
|
|
110
91
|
], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {
|
|
111
92
|
// Checks whether the browser supports passive events, (#11353).
|
|
112
93
|
let supportsPassive = false;
|
|
113
|
-
//
|
|
114
|
-
//
|
|
94
|
+
// Accessors don't work on IE as well as passive events - instead
|
|
95
|
+
// of using polyfill, we can exclude IE totally. The getter has to
|
|
96
|
+
// be enumerable, or wrappers that shallow-copy the options never
|
|
97
|
+
// read it (#25092).
|
|
115
98
|
if (!Globals.isMS) {
|
|
116
|
-
const opts =
|
|
117
|
-
get
|
|
118
|
-
supportsPassive = true;
|
|
99
|
+
const opts = {
|
|
100
|
+
get passive() {
|
|
101
|
+
return (supportsPassive = true);
|
|
119
102
|
}
|
|
120
|
-
}
|
|
103
|
+
};
|
|
121
104
|
if (Globals.win.addEventListener && Globals.win.removeEventListener) {
|
|
122
105
|
Globals.win.addEventListener('testPassive', Globals.noop, opts);
|
|
123
106
|
Globals.win.removeEventListener('testPassive', Globals.noop, opts);
|
|
@@ -2193,6 +2176,13 @@ function extend(a, b) {
|
|
|
2193
2176
|
a = {};
|
|
2194
2177
|
}
|
|
2195
2178
|
for (n in b) { // eslint-disable-line guard-for-in
|
|
2179
|
+
// Prototype pollution (#14883). Keys like `__proto__` may arrive as
|
|
2180
|
+
// own, enumerable properties through `JSON.parse`, in which case
|
|
2181
|
+
// assigning them would mutate the prototype of the target instead of
|
|
2182
|
+
// adding a property.
|
|
2183
|
+
if (n === '__proto__' || n === 'constructor') {
|
|
2184
|
+
continue;
|
|
2185
|
+
}
|
|
2196
2186
|
a[n] = b[n];
|
|
2197
2187
|
}
|
|
2198
2188
|
return a;
|
|
@@ -5454,6 +5444,13 @@ const defaultOptions = {
|
|
|
5454
5444
|
* @since 2.0
|
|
5455
5445
|
* @apioption title.align
|
|
5456
5446
|
*/
|
|
5447
|
+
/**
|
|
5448
|
+
* A CSS class name to apply to the title's container div,
|
|
5449
|
+
* allowing unique CSS styling for each chart.
|
|
5450
|
+
*
|
|
5451
|
+
* @type {string}
|
|
5452
|
+
* @apioption title.className
|
|
5453
|
+
*/
|
|
5457
5454
|
/**
|
|
5458
5455
|
* The margin between the title and the plot area, or if a subtitle
|
|
5459
5456
|
* is present, the margin between the subtitle and the plot area.
|
|
@@ -5516,6 +5513,13 @@ const defaultOptions = {
|
|
|
5516
5513
|
* @since 2.0
|
|
5517
5514
|
* @apioption subtitle.align
|
|
5518
5515
|
*/
|
|
5516
|
+
/**
|
|
5517
|
+
* A CSS class name to apply to the subtitle's container div,
|
|
5518
|
+
* allowing unique CSS styling for each chart.
|
|
5519
|
+
*
|
|
5520
|
+
* @type {string}
|
|
5521
|
+
* @apioption subtitle.className
|
|
5522
|
+
*/
|
|
5519
5523
|
/**
|
|
5520
5524
|
* When the subtitle is floating, the plot area will not move to make
|
|
5521
5525
|
* space for it.
|
|
@@ -7648,6 +7652,10 @@ const defaultOptions = {
|
|
|
7648
7652
|
/**
|
|
7649
7653
|
* The URL for the credits label.
|
|
7650
7654
|
*
|
|
7655
|
+
* URLs that do not start with one of the
|
|
7656
|
+
* [AST.allowedReferences](https://api.highcharts.com/class-reference/Highcharts.AST#.allowedReferences),
|
|
7657
|
+
* for example `javascript:` URLs, are ignored.
|
|
7658
|
+
*
|
|
7651
7659
|
* @sample {highcharts} highcharts/credits/href/
|
|
7652
7660
|
* Custom URL and text
|
|
7653
7661
|
* @sample {highmaps} maps/credits/customized/
|
|
@@ -8621,6 +8629,7 @@ class Fx {
|
|
|
8621
8629
|
* Prepare start and end values so that the path can be animated one to one.
|
|
8622
8630
|
*
|
|
8623
8631
|
* @function Highcharts.Fx#initPath
|
|
8632
|
+
* @internal
|
|
8624
8633
|
*
|
|
8625
8634
|
* @param {Highcharts.SVGElement} elem
|
|
8626
8635
|
* The SVGElement item.
|
|
@@ -8920,7 +8929,9 @@ function animate(el, params = { pos: 1 }, opt) {
|
|
|
8920
8929
|
if (el) {
|
|
8921
8930
|
stop(el, prop);
|
|
8922
8931
|
}
|
|
8923
|
-
const fx = new Animation_Fx(el, opt, prop), d = params.d
|
|
8932
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d,
|
|
8933
|
+
// Discrete value that doesn't animate, apply at once
|
|
8934
|
+
applyImmediately = prop === 'dashstyle';
|
|
8924
8935
|
let start = 0, end = void 0, unit = '';
|
|
8925
8936
|
if (prop === 'd' && isArray(d)) {
|
|
8926
8937
|
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
@@ -8929,6 +8940,9 @@ function animate(el, params = { pos: 1 }, opt) {
|
|
|
8929
8940
|
}
|
|
8930
8941
|
else if (el?.attr) {
|
|
8931
8942
|
start = el.attr(prop);
|
|
8943
|
+
if (applyImmediately) {
|
|
8944
|
+
el.attr(prop, val);
|
|
8945
|
+
}
|
|
8932
8946
|
}
|
|
8933
8947
|
else if (el) {
|
|
8934
8948
|
start = +(getStyle(el, prop) || 0);
|
|
@@ -8943,7 +8957,7 @@ function animate(el, params = { pos: 1 }, opt) {
|
|
|
8943
8957
|
end = end.replace(/px/g, ''); // #4351
|
|
8944
8958
|
}
|
|
8945
8959
|
// Empty dashstyle animation crashes treemap on hover
|
|
8946
|
-
if (defined(end)) {
|
|
8960
|
+
if (defined(end) && !applyImmediately) {
|
|
8947
8961
|
fx.run(start, end, unit);
|
|
8948
8962
|
}
|
|
8949
8963
|
});
|
|
@@ -9265,17 +9279,25 @@ class AST {
|
|
|
9265
9279
|
markup, 'text/html');
|
|
9266
9280
|
}
|
|
9267
9281
|
catch {
|
|
9268
|
-
//
|
|
9269
|
-
//
|
|
9270
|
-
//
|
|
9271
|
-
//
|
|
9272
|
-
//
|
|
9273
|
-
//
|
|
9282
|
+
// Due to a Chromium issue where chart redraws are triggered by a
|
|
9283
|
+
// `beforeprint` event (#16931),
|
|
9284
|
+
// https://issues.chromium.org/issues/40222135, the Trusted
|
|
9285
|
+
// Types `createHTML` callback can throw "The provided callback
|
|
9286
|
+
// is no longer runnable" while the browser is mid-print. Retry
|
|
9287
|
+
// with the raw string - `DOMParser` itself is not a Trusted
|
|
9288
|
+
// Types sink, so parsing it directly is safe.
|
|
9289
|
+
try {
|
|
9290
|
+
doc = new DOMParser().parseFromString(markup, 'text/html');
|
|
9291
|
+
}
|
|
9292
|
+
catch {
|
|
9293
|
+
// Ignore, fall through to the inert-document fallback below.
|
|
9294
|
+
}
|
|
9274
9295
|
}
|
|
9275
9296
|
if (!doc) {
|
|
9276
|
-
|
|
9277
|
-
|
|
9278
|
-
doc =
|
|
9297
|
+
// Never assign untrusted markup to a live document's innerHTML.
|
|
9298
|
+
// Parse into a detached, inert document instead.
|
|
9299
|
+
doc = Core_Globals.doc.implementation.createHTMLDocument('');
|
|
9300
|
+
doc.body.innerHTML = markup;
|
|
9279
9301
|
}
|
|
9280
9302
|
const appendChildNodes = (node, addTo) => {
|
|
9281
9303
|
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
@@ -9512,7 +9534,6 @@ AST.allowedTags = [
|
|
|
9512
9534
|
'span',
|
|
9513
9535
|
'stop',
|
|
9514
9536
|
'strong',
|
|
9515
|
-
'style',
|
|
9516
9537
|
'sub',
|
|
9517
9538
|
'sup',
|
|
9518
9539
|
'svg',
|
|
@@ -10292,6 +10313,7 @@ class SVGElement {
|
|
|
10292
10313
|
let ret = (this[key + 'Value'] ??
|
|
10293
10314
|
this[key] ??
|
|
10294
10315
|
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10316
|
+
this.box?.[key] ?? // For labels, when animating border radius
|
|
10295
10317
|
0);
|
|
10296
10318
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10297
10319
|
ret = parseFloat(ret);
|
|
@@ -12886,7 +12908,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12886
12908
|
* Path
|
|
12887
12909
|
*/
|
|
12888
12910
|
function callout(x, y, w, h, options) {
|
|
12889
|
-
const arrowLength = 6, halfDistance = 6, r = Math.min((options?.r) || 0, w, h), safeDistance = r + halfDistance, anchorX = options?.anchorX, anchorY = options?.anchorY || 0;
|
|
12911
|
+
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;
|
|
12890
12912
|
const path = roundedRect(x, y, w, h, { r });
|
|
12891
12913
|
if (!isNumber(anchorX)) {
|
|
12892
12914
|
return path;
|
|
@@ -13510,8 +13532,12 @@ class TextBuilder {
|
|
|
13510
13532
|
this.truncate(textNode, textNode.textContent || '', void 0, 0,
|
|
13511
13533
|
// Target width
|
|
13512
13534
|
width, ellipsisWidth, stringWithEllipsis);
|
|
13513
|
-
|
|
13514
|
-
|
|
13535
|
+
// If there is still text left, add an ellipsis to
|
|
13536
|
+
// the end of the line
|
|
13537
|
+
if (textNode.textContent) {
|
|
13538
|
+
textNode.textContent = textNode.textContent
|
|
13539
|
+
?.replace('\u2026', '') + '\u2026';
|
|
13540
|
+
}
|
|
13515
13541
|
}
|
|
13516
13542
|
break;
|
|
13517
13543
|
}
|
|
@@ -13937,7 +13963,7 @@ class SVGRenderer {
|
|
|
13937
13963
|
this.url = this.getReferenceURL();
|
|
13938
13964
|
// Add description
|
|
13939
13965
|
const desc = this.createElement('desc').add();
|
|
13940
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0
|
|
13966
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.1.0'));
|
|
13941
13967
|
this.defs = this.createElement('defs').add();
|
|
13942
13968
|
this.allowHTML = allowHTML;
|
|
13943
13969
|
this.forExport = forExport;
|
|
@@ -15776,7 +15802,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15776
15802
|
// Some properties require other properties to be set
|
|
15777
15803
|
if (styles?.textOverflow === 'ellipsis') {
|
|
15778
15804
|
styles.overflow = 'hidden';
|
|
15779
|
-
|
|
15805
|
+
// With a line clamp, the text should wrap and ellipsis at the
|
|
15806
|
+
// clamped line instead of staying on one line (#24724)
|
|
15807
|
+
if (!(styles.lineClamp ?? this.styles.lineClamp)) {
|
|
15808
|
+
styles.whiteSpace = 'nowrap';
|
|
15809
|
+
}
|
|
15780
15810
|
}
|
|
15781
15811
|
// Apply line clamp
|
|
15782
15812
|
if (styles?.lineClamp) {
|
|
@@ -16965,15 +16995,16 @@ var AxisDefaults;
|
|
|
16965
16995
|
/**
|
|
16966
16996
|
* The label's pixel distance from the perimeter of the plot area.
|
|
16967
16997
|
* On cartesian charts, this is overridden if the `labels.y` setting
|
|
16968
|
-
* is set.
|
|
16998
|
+
* is set. Defaults to 15 unless the labels are aligned inside the
|
|
16999
|
+
* plot area, in which case it defaults to 0.
|
|
16969
17000
|
*
|
|
16970
17001
|
* @sample {highcharts} highcharts/yaxis/labels-distance/
|
|
16971
17002
|
* Polar chart, labels centered under the arc
|
|
16972
17003
|
*
|
|
16973
17004
|
* @type {number}
|
|
16974
17005
|
* @product highcharts gantt
|
|
17006
|
+
* @apioption xAxis.labels.distance
|
|
16975
17007
|
*/
|
|
16976
|
-
distance: 15,
|
|
16977
17008
|
/**
|
|
16978
17009
|
* Enable or disable the axis labels.
|
|
16979
17010
|
*
|
|
@@ -17231,18 +17262,18 @@ var AxisDefaults;
|
|
|
17231
17262
|
* @apioption xAxis.top
|
|
17232
17263
|
*/
|
|
17233
17264
|
/**
|
|
17234
|
-
* Index of another axis that this axis is linked to.
|
|
17235
|
-
* linked to a master axis, it will take the same
|
|
17236
|
-
* the master, but as assigned by min or max or by
|
|
17237
|
-
* It can be used to show additional info, or to ease
|
|
17238
|
-
* chart by duplicating the scales.
|
|
17265
|
+
* Index or [id](#xAxis.id) of another axis that this axis is linked to.
|
|
17266
|
+
* When an axis is linked to a master axis, it will take the same
|
|
17267
|
+
* extremes as the master, but as assigned by min or max or by
|
|
17268
|
+
* `setExtremes`. It can be used to show additional info, or to ease
|
|
17269
|
+
* reading the chart by duplicating the scales.
|
|
17239
17270
|
*
|
|
17240
17271
|
* @sample {highcharts} highcharts/xaxis/linkedto/
|
|
17241
17272
|
* Different string formats of the same date
|
|
17242
17273
|
* @sample {highcharts} highcharts/yaxis/linkedto/
|
|
17243
17274
|
* Y values on both sides
|
|
17244
17275
|
*
|
|
17245
|
-
* @type {number}
|
|
17276
|
+
* @type {number|string}
|
|
17246
17277
|
* @since 2.0.2
|
|
17247
17278
|
* @product highcharts highstock gantt
|
|
17248
17279
|
* @apioption xAxis.linkedTo
|
|
@@ -19362,7 +19393,7 @@ class Tick {
|
|
|
19362
19393
|
*/
|
|
19363
19394
|
addLabel() {
|
|
19364
19395
|
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;
|
|
19365
|
-
let
|
|
19396
|
+
let dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19366
19397
|
// The context value
|
|
19367
19398
|
let value = this.parameters.category || (categories ?
|
|
19368
19399
|
(categories[pos] ?? names[pos] ?? pos) :
|
|
@@ -19448,10 +19479,15 @@ class Tick {
|
|
|
19448
19479
|
}
|
|
19449
19480
|
return axis.defaultLabelFormatter.call(ctx);
|
|
19450
19481
|
};
|
|
19451
|
-
|
|
19482
|
+
/**
|
|
19483
|
+
* The rendered text label of the tick.
|
|
19484
|
+
* @name Highcharts.Tick#label
|
|
19485
|
+
* @type {Highcharts.SVGElement|undefined}
|
|
19486
|
+
*/
|
|
19487
|
+
tick.label = tick.createLabel(labelFormatter.call(ctx, ctx), labelOptions);
|
|
19452
19488
|
// Set up conditional formatting based on the format list if existing.
|
|
19453
|
-
const list = dateTimeLabelFormats?.list;
|
|
19454
|
-
if (list) {
|
|
19489
|
+
const list = dateTimeLabelFormats?.list, label = tick.label;
|
|
19490
|
+
if (list && label) {
|
|
19455
19491
|
tick.shortenLabel = function () {
|
|
19456
19492
|
for (i = 0; i < list.length; i++) {
|
|
19457
19493
|
extend(ctx, { dateTimeLabelFormat: list[i] });
|
|
@@ -19459,43 +19495,17 @@ class Tick {
|
|
|
19459
19495
|
text: labelFormatter.call(ctx, ctx)
|
|
19460
19496
|
});
|
|
19461
19497
|
if (label.getBBox().width <
|
|
19462
|
-
axis.getSlotWidth(tick) - 2 *
|
|
19463
|
-
(labelOptions.padding || 0)) {
|
|
19498
|
+
axis.getSlotWidth(tick) - 2 * (labelOptions.padding || 0)) {
|
|
19464
19499
|
return;
|
|
19465
19500
|
}
|
|
19466
19501
|
}
|
|
19467
|
-
label.attr({
|
|
19468
|
-
text: ''
|
|
19469
|
-
});
|
|
19502
|
+
label.attr({ text: '' });
|
|
19470
19503
|
};
|
|
19471
19504
|
}
|
|
19472
19505
|
else {
|
|
19473
19506
|
// #15692
|
|
19474
19507
|
tick.shortenLabel = void 0;
|
|
19475
19508
|
}
|
|
19476
|
-
// First call
|
|
19477
|
-
if (!label) {
|
|
19478
|
-
/**
|
|
19479
|
-
* The rendered text label of the tick.
|
|
19480
|
-
* @name Highcharts.Tick#label
|
|
19481
|
-
* @type {Highcharts.SVGElement|undefined}
|
|
19482
|
-
*/
|
|
19483
|
-
tick.label = label = tick.createLabel(text, labelOptions);
|
|
19484
|
-
// Base value to detect change for new calls to getBBox
|
|
19485
|
-
tick.rotation = 0;
|
|
19486
|
-
// Update
|
|
19487
|
-
}
|
|
19488
|
-
else if (label.textStr !== text) {
|
|
19489
|
-
// When resetting text, also reset the width if dynamically set
|
|
19490
|
-
// (#8809)
|
|
19491
|
-
if (label.textWidth &&
|
|
19492
|
-
!labelOptions.style.width &&
|
|
19493
|
-
!label.styles.width) {
|
|
19494
|
-
label.css({ width: void 0 });
|
|
19495
|
-
}
|
|
19496
|
-
label.attr({ text });
|
|
19497
|
-
label.textPxLength = label.getBBox().width;
|
|
19498
|
-
}
|
|
19499
19509
|
}
|
|
19500
19510
|
/**
|
|
19501
19511
|
* Render and return the label of the tick.
|
|
@@ -19503,18 +19513,33 @@ class Tick {
|
|
|
19503
19513
|
* @internal
|
|
19504
19514
|
* @function Highcharts.Tick#createLabel
|
|
19505
19515
|
*/
|
|
19506
|
-
createLabel(
|
|
19507
|
-
const axis = this.axis, { renderer, styledMode } = axis.chart,
|
|
19508
|
-
|
|
19509
|
-
|
|
19510
|
-
|
|
19511
|
-
|
|
19516
|
+
createLabel(text, labelOptions, xy) {
|
|
19517
|
+
const axis = this.axis, { renderer, styledMode } = axis.chart, style = labelOptions.style, whiteSpace = style.whiteSpace;
|
|
19518
|
+
let label = this.label;
|
|
19519
|
+
if (defined(text) && labelOptions.enabled) {
|
|
19520
|
+
label || (label = renderer
|
|
19521
|
+
.text(text, xy?.x, xy?.y, labelOptions.useHTML)
|
|
19522
|
+
.add(axis.labelGroup));
|
|
19523
|
+
}
|
|
19524
|
+
else if (label) {
|
|
19525
|
+
label = label.destroy();
|
|
19526
|
+
// Reset so it doesn't animate when re-enabled
|
|
19527
|
+
this.isNewLabel = true;
|
|
19528
|
+
}
|
|
19512
19529
|
// Un-rotated length
|
|
19513
|
-
if (label) {
|
|
19530
|
+
if (label && (label.labelStyle !== style || text !== label.textStr)) {
|
|
19531
|
+
// Store a reference to the current style object to avoid running
|
|
19532
|
+
// this block on every render call unless something actually
|
|
19533
|
+
// changes.
|
|
19534
|
+
label.labelStyle = style;
|
|
19535
|
+
if (text !== label.textStr) {
|
|
19536
|
+
label.attr({ text });
|
|
19537
|
+
delete label.textPxLength;
|
|
19538
|
+
}
|
|
19514
19539
|
if (!styledMode) {
|
|
19515
|
-
label.css(merge(
|
|
19540
|
+
label.css(merge(style));
|
|
19516
19541
|
}
|
|
19517
|
-
label.textPxLength = label.getBBox().width;
|
|
19542
|
+
label.textPxLength ?? (label.textPxLength = label.getBBox().width);
|
|
19518
19543
|
// Apply the white-space setting after we read the full text width
|
|
19519
19544
|
if (!styledMode && whiteSpace) {
|
|
19520
19545
|
label.css({ whiteSpace });
|
|
@@ -19586,19 +19611,27 @@ class Tick {
|
|
|
19586
19611
|
* @internal
|
|
19587
19612
|
*/
|
|
19588
19613
|
getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {
|
|
19589
|
-
const axis = this.axis, transA = axis
|
|
19590
|
-
axis.
|
|
19614
|
+
const axis = this.axis, { labelAlign, side, staggerLines, transA } = axis, reversed = ( // #7911
|
|
19615
|
+
axis.linkedParent ?
|
|
19591
19616
|
axis.linkedParent.reversed :
|
|
19592
|
-
axis.reversed),
|
|
19617
|
+
axis.reversed), rotCorr = axis.tickRotCorr || { x: 0, y: 0 },
|
|
19593
19618
|
// Adjust for label alignment if we use reserveSpace: true (#5286)
|
|
19594
19619
|
labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?
|
|
19595
|
-
-axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :
|
|
19596
|
-
0), distance = labelOptions.distance
|
|
19620
|
+
-(axis.labelOffset || 0) * (axis.labelAlign === 'center' ? 0.5 : 1) :
|
|
19621
|
+
0), distance = labelOptions.distance ?? (
|
|
19622
|
+
// If the label is aligned inside the plot area, default to 0.
|
|
19623
|
+
// This is default behavior or Stock y-axis labels.
|
|
19624
|
+
(side === 1 &&
|
|
19625
|
+
labelAlign === 'right' &&
|
|
19626
|
+
!labelOptions.reserveSpace) ? 0 :
|
|
19627
|
+
(side === 3 &&
|
|
19628
|
+
labelAlign === 'left' &&
|
|
19629
|
+
!labelOptions.reserveSpace) ? 0 : 15), pos = {};
|
|
19597
19630
|
let yOffset, line;
|
|
19598
|
-
if (
|
|
19631
|
+
if (side === 0) {
|
|
19599
19632
|
yOffset = label.rotation ? -distance : -label.getBBox().height;
|
|
19600
19633
|
}
|
|
19601
|
-
else if (
|
|
19634
|
+
else if (side === 2) {
|
|
19602
19635
|
yOffset = rotCorr.y + distance;
|
|
19603
19636
|
}
|
|
19604
19637
|
else {
|
|
@@ -19607,12 +19640,12 @@ class Tick {
|
|
|
19607
19640
|
(rotCorr.y - label.getBBox(false, 0).height / 2);
|
|
19608
19641
|
}
|
|
19609
19642
|
if (defined(labelOptions.y)) {
|
|
19610
|
-
yOffset =
|
|
19643
|
+
yOffset = side === 0 && axis.horiz ?
|
|
19611
19644
|
labelOptions.y + yOffset :
|
|
19612
19645
|
labelOptions.y;
|
|
19613
19646
|
}
|
|
19614
19647
|
x = x +
|
|
19615
|
-
(labelOptions.x ?? [0, 1, 0, -1][
|
|
19648
|
+
(labelOptions.x ?? [0, 1, 0, -1][side] * distance) +
|
|
19616
19649
|
labelOffsetCorrection +
|
|
19617
19650
|
rotCorr.x -
|
|
19618
19651
|
(tickmarkOffset && horiz ?
|
|
@@ -19667,7 +19700,7 @@ class Tick {
|
|
|
19667
19700
|
* @function Highcharts.Tick#handleOverflow
|
|
19668
19701
|
*/
|
|
19669
19702
|
handleOverflow(xy) {
|
|
19670
|
-
const tick = this, axis = this
|
|
19703
|
+
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;
|
|
19671
19704
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19672
19705
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19673
19706
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19715,10 +19748,10 @@ class Tick {
|
|
|
19715
19748
|
tick.shortenLabel();
|
|
19716
19749
|
}
|
|
19717
19750
|
else {
|
|
19718
|
-
label.css(
|
|
19751
|
+
label.css({
|
|
19719
19752
|
width: Math.floor(textWidth) + 'px',
|
|
19720
19753
|
lineClamp: axis.isRadial ? 0 : 1
|
|
19721
|
-
})
|
|
19754
|
+
});
|
|
19722
19755
|
}
|
|
19723
19756
|
}
|
|
19724
19757
|
}
|
|
@@ -19734,8 +19767,11 @@ class Tick {
|
|
|
19734
19767
|
* @param {number} [opacity]
|
|
19735
19768
|
*/
|
|
19736
19769
|
render(index, old, opacity) {
|
|
19737
|
-
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;
|
|
19738
|
-
|
|
19770
|
+
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;
|
|
19771
|
+
if (!axis.visible) {
|
|
19772
|
+
opacity = 0;
|
|
19773
|
+
}
|
|
19774
|
+
const labelOpacity = opacity ?? 1;
|
|
19739
19775
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19740
19776
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19741
19777
|
// axes in Safari.
|
|
@@ -19763,25 +19799,21 @@ class Tick {
|
|
|
19763
19799
|
* @param {number} opacity The opacity of the grid line
|
|
19764
19800
|
*/
|
|
19765
19801
|
renderGridLine(old, opacity) {
|
|
19766
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), renderer = axis.chart
|
|
19767
|
-
let gridLine = tick.gridLine,
|
|
19802
|
+
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;
|
|
19803
|
+
let gridLine = tick.gridLine, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19768
19804
|
if (tick.type === 'minor') {
|
|
19769
19805
|
gridLineWidth = options.minorGridLineWidth;
|
|
19770
19806
|
gridLineColor = options.minorGridLineColor;
|
|
19771
19807
|
dashStyle = options.minorGridLineDashStyle;
|
|
19772
19808
|
}
|
|
19809
|
+
// Apply the stroke width initially so the crisping works
|
|
19810
|
+
if (!styledMode) {
|
|
19811
|
+
attribs['stroke-width'] = gridLineWidth || 0;
|
|
19812
|
+
}
|
|
19773
19813
|
if (!gridLine) {
|
|
19774
|
-
if (!axis.chart.styledMode) {
|
|
19775
|
-
attribs.stroke = gridLineColor;
|
|
19776
|
-
attribs['stroke-width'] = gridLineWidth || 0;
|
|
19777
|
-
attribs.dashstyle = dashStyle;
|
|
19778
|
-
}
|
|
19779
19814
|
if (!type) {
|
|
19780
19815
|
attribs.zIndex = 1;
|
|
19781
19816
|
}
|
|
19782
|
-
if (old) {
|
|
19783
|
-
opacity = 0;
|
|
19784
|
-
}
|
|
19785
19817
|
/**
|
|
19786
19818
|
* The rendered grid line of the tick.
|
|
19787
19819
|
* @name Highcharts.Tick#gridLine
|
|
@@ -19792,22 +19824,24 @@ class Tick {
|
|
|
19792
19824
|
.addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')
|
|
19793
19825
|
.add(axis.gridGroup);
|
|
19794
19826
|
}
|
|
19795
|
-
|
|
19796
|
-
|
|
19797
|
-
|
|
19798
|
-
|
|
19799
|
-
|
|
19800
|
-
|
|
19801
|
-
|
|
19802
|
-
|
|
19827
|
+
// Grid line path
|
|
19828
|
+
const d = axis.getPlotLinePath({
|
|
19829
|
+
value: pos + tickmarkOffset,
|
|
19830
|
+
lineWidth: gridLine.strokeWidth(),
|
|
19831
|
+
force: 'pass',
|
|
19832
|
+
old: old,
|
|
19833
|
+
acrossPanes: false // #18025
|
|
19834
|
+
});
|
|
19835
|
+
if (d) {
|
|
19836
|
+
attribs.d = d;
|
|
19837
|
+
attribs.opacity = old ? 0 : opacity;
|
|
19838
|
+
if (!styledMode) {
|
|
19839
|
+
attribs.stroke = gridLineColor;
|
|
19840
|
+
attribs.dashstyle = dashStyle;
|
|
19841
|
+
}
|
|
19803
19842
|
// If the parameter 'old' is set, the current call will be followed
|
|
19804
19843
|
// by another call, therefore do not do any animations this time
|
|
19805
|
-
|
|
19806
|
-
gridLine[old || tick.isNew ? 'attr' : 'animate']({
|
|
19807
|
-
d: gridLinePath,
|
|
19808
|
-
opacity: opacity
|
|
19809
|
-
});
|
|
19810
|
-
}
|
|
19844
|
+
gridLine[old || tick.isNew ? 'attr' : 'animate'](attribs);
|
|
19811
19845
|
}
|
|
19812
19846
|
}
|
|
19813
19847
|
/**
|
|
@@ -19819,13 +19853,13 @@ class Tick {
|
|
|
19819
19853
|
* @param {number} opacity The opacity of the mark
|
|
19820
19854
|
*/
|
|
19821
19855
|
renderMark(xy, opacity) {
|
|
19822
|
-
const tick = this, axis = tick.axis, options = axis
|
|
19856
|
+
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
|
|
19823
19857
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19824
19858
|
let mark = tick.mark;
|
|
19825
|
-
const
|
|
19826
|
-
if (tickSize) {
|
|
19859
|
+
const verb = mark ? 'animate' : 'attr';
|
|
19860
|
+
if (tickSize || mark) {
|
|
19827
19861
|
// Negate the length
|
|
19828
|
-
if (axis.opposite) {
|
|
19862
|
+
if (axis.opposite && tickSize) {
|
|
19829
19863
|
tickSize[0] = -tickSize[0];
|
|
19830
19864
|
}
|
|
19831
19865
|
// First time, create it
|
|
@@ -19838,16 +19872,16 @@ class Tick {
|
|
|
19838
19872
|
tick.mark = mark = renderer.path()
|
|
19839
19873
|
.addClass('highcharts-' + (type ? type + '-' : '') + 'tick')
|
|
19840
19874
|
.add(axis.axisGroup);
|
|
19841
|
-
if (!axis.chart.styledMode) {
|
|
19842
|
-
mark.attr({
|
|
19843
|
-
stroke: tickColor,
|
|
19844
|
-
'stroke-width': tickWidth
|
|
19845
|
-
});
|
|
19846
|
-
}
|
|
19847
19875
|
}
|
|
19848
|
-
|
|
19849
|
-
|
|
19850
|
-
|
|
19876
|
+
if (!chart.styledMode) {
|
|
19877
|
+
mark[verb]({
|
|
19878
|
+
stroke: tickColor,
|
|
19879
|
+
'stroke-width': tickWidth
|
|
19880
|
+
});
|
|
19881
|
+
}
|
|
19882
|
+
mark[verb]({
|
|
19883
|
+
d: tick.getMarkPath(x, y, tickSize?.[0] || 0, mark.strokeWidth(), axis.horiz, renderer),
|
|
19884
|
+
opacity: tickSize ? opacity : 0
|
|
19851
19885
|
});
|
|
19852
19886
|
}
|
|
19853
19887
|
}
|
|
@@ -20009,6 +20043,11 @@ extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
|
20009
20043
|
* Axis options
|
|
20010
20044
|
*/
|
|
20011
20045
|
class Axis {
|
|
20046
|
+
/* *
|
|
20047
|
+
*
|
|
20048
|
+
* Static Properties
|
|
20049
|
+
*
|
|
20050
|
+
* */
|
|
20012
20051
|
/* *
|
|
20013
20052
|
*
|
|
20014
20053
|
* Constructors
|
|
@@ -20085,9 +20124,11 @@ class Axis {
|
|
|
20085
20124
|
* @name Highcharts.Axis#side
|
|
20086
20125
|
* @type {number}
|
|
20087
20126
|
*/
|
|
20088
|
-
axis.side =
|
|
20089
|
-
(
|
|
20090
|
-
|
|
20127
|
+
axis.side = userOptions.side ??
|
|
20128
|
+
(horiz ?
|
|
20129
|
+
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
20130
|
+
(axis.opposite ? 1 : 3) // Right : left
|
|
20131
|
+
);
|
|
20091
20132
|
/**
|
|
20092
20133
|
* Current options for the axis after merge of defaults and user's
|
|
20093
20134
|
* options.
|
|
@@ -20098,8 +20139,8 @@ class Axis {
|
|
|
20098
20139
|
axis.setOptions(userOptions);
|
|
20099
20140
|
const options = axis.options, labelsOptions = options.labels;
|
|
20100
20141
|
// Set the type and fire an event
|
|
20101
|
-
axis.type
|
|
20102
|
-
axis.uniqueNames
|
|
20142
|
+
axis.type = options.type || 'linear';
|
|
20143
|
+
axis.uniqueNames = options.uniqueNames ?? true;
|
|
20103
20144
|
fireEvent(axis, 'afterSetType');
|
|
20104
20145
|
/**
|
|
20105
20146
|
* User's options for this axis without defaults.
|
|
@@ -20116,7 +20157,7 @@ class Axis {
|
|
|
20116
20157
|
* @name Highcharts.Axis#reversed
|
|
20117
20158
|
* @type {boolean}
|
|
20118
20159
|
*/
|
|
20119
|
-
axis.reversed =
|
|
20160
|
+
axis.reversed = options.reversed;
|
|
20120
20161
|
axis.visible = options.visible;
|
|
20121
20162
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20122
20163
|
// Initial categories
|
|
@@ -20138,16 +20179,12 @@ class Axis {
|
|
|
20138
20179
|
*/
|
|
20139
20180
|
axis.categories = (isArray(options.categories) && options.categories) ||
|
|
20140
20181
|
(axis.hasNames ? [] : void 0);
|
|
20141
|
-
|
|
20142
|
-
// faster than array searching (#7725). Preserve on update (#3830)
|
|
20143
|
-
axis.names || (axis.names = []);
|
|
20182
|
+
axis.names || (axis.names = []); // Preserve on update (#3830)
|
|
20144
20183
|
axis.namesMap || (axis.namesMap = {});
|
|
20145
20184
|
// Placeholder for plotLines and plotBands groups
|
|
20146
|
-
axis.plotLinesAndBandsGroups = {};
|
|
20185
|
+
axis.plotLinesAndBandsGroups || (axis.plotLinesAndBandsGroups = {});
|
|
20147
20186
|
// Shorthand types
|
|
20148
20187
|
axis.positiveValuesOnly = !!axis.logarithmic;
|
|
20149
|
-
// Flag, if axis is linked to another axis
|
|
20150
|
-
axis.isLinked = defined(options.linkedTo);
|
|
20151
20188
|
/**
|
|
20152
20189
|
* List of major ticks mapped by position on axis.
|
|
20153
20190
|
*
|
|
@@ -20156,8 +20193,8 @@ class Axis {
|
|
|
20156
20193
|
* @name Highcharts.Axis#ticks
|
|
20157
20194
|
* @type {Highcharts.Dictionary<Highcharts.Tick>}
|
|
20158
20195
|
*/
|
|
20159
|
-
axis.ticks = {};
|
|
20160
|
-
axis.labelEdge = [];
|
|
20196
|
+
axis.ticks || (axis.ticks = {});
|
|
20197
|
+
axis.labelEdge || (axis.labelEdge = []);
|
|
20161
20198
|
/**
|
|
20162
20199
|
* List of minor ticks mapped by position on the axis.
|
|
20163
20200
|
*
|
|
@@ -20166,11 +20203,9 @@ class Axis {
|
|
|
20166
20203
|
* @name Highcharts.Axis#minorTicks
|
|
20167
20204
|
* @type {Highcharts.Dictionary<Highcharts.Tick>}
|
|
20168
20205
|
*/
|
|
20169
|
-
axis.minorTicks = {};
|
|
20170
|
-
// List of plotLines/Bands
|
|
20171
|
-
axis.plotLinesAndBands = [];
|
|
20206
|
+
axis.minorTicks || (axis.minorTicks = {});
|
|
20172
20207
|
// Alternate bands
|
|
20173
|
-
axis.alternateBands = {};
|
|
20208
|
+
axis.alternateBands || (axis.alternateBands = {});
|
|
20174
20209
|
/**
|
|
20175
20210
|
* The length of the axis in terms of pixels.
|
|
20176
20211
|
*
|
|
@@ -20204,7 +20239,7 @@ class Axis {
|
|
|
20204
20239
|
* @name Highcharts.Axis#crosshair
|
|
20205
20240
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20206
20241
|
*/
|
|
20207
|
-
const crosshair = options.crosshair ?? splat(chart.options.tooltip
|
|
20242
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip?.crosshairs)[isXAxis ? 0 : 1];
|
|
20208
20243
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20209
20244
|
// Register. Don't add it again on Axis.update().
|
|
20210
20245
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20259,14 +20294,14 @@ class Axis {
|
|
|
20259
20294
|
},
|
|
20260
20295
|
margin: 15
|
|
20261
20296
|
} :
|
|
20262
|
-
// Left and right axis, title rotated 90 or
|
|
20297
|
+
// Left and right axis, title rotated -90 or 90 degrees
|
|
20263
20298
|
// respectively
|
|
20264
20299
|
{
|
|
20265
20300
|
labels: {
|
|
20266
20301
|
padding: 1
|
|
20267
20302
|
},
|
|
20268
20303
|
title: {
|
|
20269
|
-
rotation: 90
|
|
20304
|
+
rotation: this.side === 1 ? 90 : -90
|
|
20270
20305
|
}
|
|
20271
20306
|
};
|
|
20272
20307
|
this.options = merge(sideSpecific,
|
|
@@ -20480,6 +20515,9 @@ class Axis {
|
|
|
20480
20515
|
if (!axis.isRadial) {
|
|
20481
20516
|
returnValue = correctFloat(returnValue);
|
|
20482
20517
|
}
|
|
20518
|
+
if (Math.abs(returnValue) < 1e-9) {
|
|
20519
|
+
returnValue = 0;
|
|
20520
|
+
}
|
|
20483
20521
|
}
|
|
20484
20522
|
return returnValue;
|
|
20485
20523
|
}
|
|
@@ -20535,7 +20573,7 @@ class Axis {
|
|
|
20535
20573
|
* The SVG path definition for the plot line.
|
|
20536
20574
|
*/
|
|
20537
20575
|
getPlotLinePath(options) {
|
|
20538
|
-
const axis = this,
|
|
20576
|
+
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;
|
|
20539
20577
|
let translatedValue = options.translatedValue, force = options.force, x1, y1, x2, y2, skip;
|
|
20540
20578
|
// eslint-disable-next-line valid-jsdoc
|
|
20541
20579
|
/**
|
|
@@ -20573,17 +20611,17 @@ class Axis {
|
|
|
20573
20611
|
skip = true;
|
|
20574
20612
|
force = false; // #7175, don't force it when path is invalid
|
|
20575
20613
|
}
|
|
20576
|
-
else if (
|
|
20577
|
-
y1 =
|
|
20614
|
+
else if (horiz) {
|
|
20615
|
+
y1 = top;
|
|
20578
20616
|
y2 = cHeight - axis.bottom + (axis.options.isInternal ?
|
|
20579
20617
|
0 :
|
|
20580
20618
|
(chart.scrollablePixelsY || 0)); // #20354, scrollablePixelsY shouldn't be used for navigator
|
|
20581
|
-
x1 = x2 = between(x1,
|
|
20619
|
+
x1 = x2 = between(x1, left, left + axis.width);
|
|
20582
20620
|
}
|
|
20583
20621
|
else {
|
|
20584
|
-
x1 =
|
|
20622
|
+
x1 = left;
|
|
20585
20623
|
x2 = cWidth - axis.right + (chart.scrollablePixelsX || 0);
|
|
20586
|
-
y1 = y2 = between(y1,
|
|
20624
|
+
y1 = y2 = between(y1, top, top + axis.height);
|
|
20587
20625
|
}
|
|
20588
20626
|
e.path = skip && !force ?
|
|
20589
20627
|
void 0 :
|
|
@@ -21012,7 +21050,7 @@ class Axis {
|
|
|
21012
21050
|
* @emits Highcharts.Axis#event:foundExtremes
|
|
21013
21051
|
*/
|
|
21014
21052
|
setTickInterval(secondPass) {
|
|
21015
|
-
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,
|
|
21053
|
+
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;
|
|
21016
21054
|
let maxPadding = options.maxPadding, minPadding = options.minPadding, range = 0, linkedParentExtremes,
|
|
21017
21055
|
// Only non-negative tickInterval is valid, #12961
|
|
21018
21056
|
tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?
|
|
@@ -21025,7 +21063,6 @@ class Axis {
|
|
|
21025
21063
|
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
21026
21064
|
// Linked axis gets the extremes from the parent axis
|
|
21027
21065
|
if (linkedParent) {
|
|
21028
|
-
axis.linkedParent = linkedParent;
|
|
21029
21066
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
21030
21067
|
axis.min =
|
|
21031
21068
|
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
@@ -21335,7 +21372,7 @@ class Axis {
|
|
|
21335
21372
|
// Reset min/max or remove extremes based on start/end on tick
|
|
21336
21373
|
this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor
|
|
21337
21374
|
this.trimTicks(tickPositions, startOnTick, endOnTick);
|
|
21338
|
-
if (!this.
|
|
21375
|
+
if (!this.linkedParent && isNumber(this.min) && isNumber(this.max)) {
|
|
21339
21376
|
// Subtract half a unit (#2619, #2846, #2515, #3390), but not in
|
|
21340
21377
|
// case of multiple ticks (#6897)
|
|
21341
21378
|
if (this.single &&
|
|
@@ -21370,7 +21407,7 @@ class Axis {
|
|
|
21370
21407
|
trimTicks(tickPositions, startOnTick, endOnTick) {
|
|
21371
21408
|
const roundedMin = tickPositions[0], roundedMax = tickPositions[tickPositions.length - 1], minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)
|
|
21372
21409
|
fireEvent(this, 'trimTicks');
|
|
21373
|
-
if (!this.
|
|
21410
|
+
if (!this.linkedParent ||
|
|
21374
21411
|
// Linked non-grid axes should trim ticks, #21743.
|
|
21375
21412
|
// Grid axis has custom handling of ticks.
|
|
21376
21413
|
!this.grid) {
|
|
@@ -21644,7 +21681,15 @@ class Axis {
|
|
|
21644
21681
|
* @emits Highcharts.Axis#event:afterSetScale
|
|
21645
21682
|
*/
|
|
21646
21683
|
setScale() {
|
|
21647
|
-
const axis = this, { coll, stacking } = axis
|
|
21684
|
+
const axis = this, { chart, coll, options, stacking } = axis, { linkedTo } = options, axes = chart[coll] || [], index = axes.indexOf(axis), parent = isString(linkedTo) ?
|
|
21685
|
+
find(axes, (a) => a.options.id === linkedTo) :
|
|
21686
|
+
(isNumber(linkedTo) ? axes[linkedTo] : void 0), linkedParent = axis.linkedParent =
|
|
21687
|
+
parent === axis ? void 0 : parent;
|
|
21688
|
+
// Scale a later-ordered parent first so its extremes are ready. Skip
|
|
21689
|
+
// grid column axes, which live outside the collection (#24658).
|
|
21690
|
+
if (linkedParent && index > -1 && axes.indexOf(linkedParent) > index) {
|
|
21691
|
+
linkedParent.setScale();
|
|
21692
|
+
}
|
|
21648
21693
|
let isDirtyData = false, isXAxisDirty = false;
|
|
21649
21694
|
axis.series.forEach((series) => {
|
|
21650
21695
|
isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;
|
|
@@ -21661,7 +21706,7 @@ class Axis {
|
|
|
21661
21706
|
if (isDirtyAxisLength ||
|
|
21662
21707
|
isDirtyData ||
|
|
21663
21708
|
isXAxisDirty ||
|
|
21664
|
-
axis.
|
|
21709
|
+
axis.linkedParent ||
|
|
21665
21710
|
axis.forceRedraw ||
|
|
21666
21711
|
axis.userMin !== axis.old?.userMin ||
|
|
21667
21712
|
axis.userMax !== axis.old?.userMax ||
|
|
@@ -22023,7 +22068,7 @@ class Axis {
|
|
|
22023
22068
|
renderUnsquish() {
|
|
22024
22069
|
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 ?
|
|
22025
22070
|
2 * (labelOptions.padding || 0) :
|
|
22026
|
-
labelOptions.distance
|
|
22071
|
+
labelOptions.distance ?? 15 // #21172
|
|
22027
22072
|
))), attr = {}, labelMetrics = this.labelMetrics(), lineClampOption = labelStyleOptions.lineClamp;
|
|
22028
22073
|
let commonWidth, lineClamp = lineClampOption ?? (Math.floor(this.len / (tickPositions.length * labelMetrics.h)) || 1), maxLabelLength = 0;
|
|
22029
22074
|
// Set rotation option unless it is "auto", like in gauges
|
|
@@ -22103,7 +22148,6 @@ class Axis {
|
|
|
22103
22148
|
});
|
|
22104
22149
|
}
|
|
22105
22150
|
}
|
|
22106
|
-
tick.rotation = attr.rotation;
|
|
22107
22151
|
}
|
|
22108
22152
|
}, this);
|
|
22109
22153
|
// Note: Why is this not part of getLabelPosition?
|
|
@@ -22135,46 +22179,50 @@ class Axis {
|
|
|
22135
22179
|
* Whether or not to display the title.
|
|
22136
22180
|
*/
|
|
22137
22181
|
addTitle(display) {
|
|
22138
|
-
const axis = this, renderer = axis.chart.renderer, horiz = axis.horiz, opposite = axis.opposite, options = axis.options, axisTitleOptions = options.title, styledMode = axis.chart.styledMode
|
|
22139
|
-
|
|
22140
|
-
|
|
22141
|
-
|
|
22142
|
-
|
|
22143
|
-
|
|
22144
|
-
|
|
22145
|
-
|
|
22146
|
-
|
|
22147
|
-
|
|
22148
|
-
|
|
22149
|
-
|
|
22150
|
-
|
|
22151
|
-
|
|
22152
|
-
|
|
22153
|
-
|
|
22154
|
-
|
|
22155
|
-
|
|
22156
|
-
|
|
22157
|
-
|
|
22158
|
-
|
|
22159
|
-
})
|
|
22182
|
+
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 ||
|
|
22183
|
+
(horiz ? {
|
|
22184
|
+
low: 'left',
|
|
22185
|
+
middle: 'center',
|
|
22186
|
+
high: 'right'
|
|
22187
|
+
} : {
|
|
22188
|
+
low: opposite ? 'right' : 'left',
|
|
22189
|
+
middle: 'center',
|
|
22190
|
+
high: opposite ? 'left' : 'right'
|
|
22191
|
+
})[axisTitleOptions.align], attr = {
|
|
22192
|
+
text: axisTitleOptions.text || '',
|
|
22193
|
+
zIndex: 7,
|
|
22194
|
+
align: textAlign
|
|
22195
|
+
}, animatable = {
|
|
22196
|
+
rotation: axisTitleOptions.rotation || 0
|
|
22197
|
+
};
|
|
22198
|
+
let axisTitle = axis.axisTitle;
|
|
22199
|
+
if (!axisTitle) {
|
|
22200
|
+
axisTitle = renderer
|
|
22201
|
+
.text('', 0, 0, axisTitleOptions.useHTML)
|
|
22202
|
+
.attr(extend(attr, animatable))
|
|
22160
22203
|
.addClass('highcharts-axis-title');
|
|
22161
|
-
|
|
22162
|
-
|
|
22163
|
-
axis.axisTitle.css(merge(axisTitleOptions.style));
|
|
22164
|
-
}
|
|
22165
|
-
axis.axisTitle.add(axis.axisGroup);
|
|
22166
|
-
axis.axisTitle.isNew = true;
|
|
22204
|
+
axisTitle.add(axis.axisGroup);
|
|
22205
|
+
axisTitle.isNew = true;
|
|
22167
22206
|
}
|
|
22168
|
-
|
|
22169
|
-
|
|
22170
|
-
|
|
22171
|
-
|
|
22172
|
-
|
|
22173
|
-
|
|
22174
|
-
|
|
22207
|
+
else {
|
|
22208
|
+
axisTitle
|
|
22209
|
+
.attr(attr)
|
|
22210
|
+
.animate(animatable);
|
|
22211
|
+
}
|
|
22212
|
+
if (!styledMode) {
|
|
22213
|
+
// #7814, don't mutate the style option
|
|
22214
|
+
const css = merge(axisTitleOptions.style);
|
|
22215
|
+
// Max width defaults to the length of the axis
|
|
22216
|
+
if (!axisTitleOptions.style.width &&
|
|
22217
|
+
!axis.isRadial) {
|
|
22218
|
+
css.width = axis.len + 'px';
|
|
22219
|
+
}
|
|
22220
|
+
axisTitle.css(css);
|
|
22175
22221
|
}
|
|
22176
22222
|
// Hide or show the title depending on whether showEmpty is set
|
|
22177
|
-
|
|
22223
|
+
axisTitle[display ? 'show' : 'hide'](display);
|
|
22224
|
+
// Register
|
|
22225
|
+
axis.axisTitle = axisTitle;
|
|
22178
22226
|
}
|
|
22179
22227
|
/**
|
|
22180
22228
|
* Generates a tick for initial positioning.
|
|
@@ -22202,17 +22250,18 @@ class Axis {
|
|
|
22202
22250
|
createGroups() {
|
|
22203
22251
|
const { axisParent, // Used in color axis
|
|
22204
22252
|
chart, coll, options } = this, renderer = chart.renderer;
|
|
22205
|
-
const createGroup = (name, suffix
|
|
22206
|
-
.attr({ zIndex })
|
|
22253
|
+
const createGroup = (name, suffix) => renderer.g(name)
|
|
22207
22254
|
.addClass(`highcharts-${coll.toLowerCase()}${suffix} ` +
|
|
22208
22255
|
(this.isRadial ? `highcharts-radial-axis${suffix} ` : '') +
|
|
22209
22256
|
(options.className || ''))
|
|
22210
22257
|
.add(axisParent);
|
|
22211
|
-
|
|
22212
|
-
|
|
22213
|
-
|
|
22214
|
-
this.
|
|
22215
|
-
|
|
22258
|
+
(this.axisGroup || (this.axisGroup = createGroup('axis', '')))
|
|
22259
|
+
.attr({ zIndex: options.zIndex });
|
|
22260
|
+
(this.gridGroup || (this.gridGroup = createGroup('grid', '-grid')))
|
|
22261
|
+
.clip(this.clippable ? chart.plotClipInner : void 0)
|
|
22262
|
+
.attr({ zIndex: options.gridZIndex });
|
|
22263
|
+
(this.labelGroup || (this.labelGroup = createGroup('axis-labels', '-labels')))
|
|
22264
|
+
.attr({ zIndex: options.labels.zIndex });
|
|
22216
22265
|
}
|
|
22217
22266
|
/**
|
|
22218
22267
|
* Shuffle existing category ticks, like in bar race chart
|
|
@@ -22220,8 +22269,11 @@ class Axis {
|
|
|
22220
22269
|
* @internal
|
|
22221
22270
|
*/
|
|
22222
22271
|
shuffleTicks() {
|
|
22223
|
-
const ticks = this.ticks, oldNames = this.old?.names;
|
|
22224
|
-
if (this.type === 'category' &&
|
|
22272
|
+
const ticks = this.ticks, oldNames = this.old?.names, hasDuplicates = (arr) => new Set(arr).size !== arr.length;
|
|
22273
|
+
if (this.type === 'category' &&
|
|
22274
|
+
oldNames &&
|
|
22275
|
+
!hasDuplicates(oldNames) &&
|
|
22276
|
+
!hasDuplicates(this.names)) {
|
|
22225
22277
|
oldNames.forEach((name, oldPos) => {
|
|
22226
22278
|
const pos = this.namesMap[name];
|
|
22227
22279
|
if (defined(pos) && oldPos !== pos) {
|
|
@@ -22263,7 +22315,7 @@ class Axis {
|
|
|
22263
22315
|
* @emits Highcharts.Axis#event:afterGetOffset
|
|
22264
22316
|
*/
|
|
22265
22317
|
getOffset() {
|
|
22266
|
-
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];
|
|
22318
|
+
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;
|
|
22267
22319
|
let tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }, absTickRotCorrX = 0, showAxis, titleOffset = 0, titleOffsetOption, titleMargin = 0, labelOffset = 0, // Reset
|
|
22268
22320
|
labelOffsetPadded, lineHeightCorrection, reserveSpaceDefault;
|
|
22269
22321
|
// For reuse in Axis.render
|
|
@@ -22271,7 +22323,7 @@ class Axis {
|
|
|
22271
22323
|
// Set/reset staggerLines
|
|
22272
22324
|
axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;
|
|
22273
22325
|
axis.createGroups();
|
|
22274
|
-
if (hasData || axis.
|
|
22326
|
+
if (hasData || axis.linkedParent) {
|
|
22275
22327
|
// Shuffle existing category ticks
|
|
22276
22328
|
axis.shuffleTicks();
|
|
22277
22329
|
// Generate new ticks
|
|
@@ -22323,6 +22375,9 @@ class Axis {
|
|
|
22323
22375
|
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22324
22376
|
}
|
|
22325
22377
|
}
|
|
22378
|
+
else {
|
|
22379
|
+
axis.axisTitle = axis.axisTitle?.destroy();
|
|
22380
|
+
}
|
|
22326
22381
|
// Render the axis line
|
|
22327
22382
|
axis.renderLine();
|
|
22328
22383
|
// Handle automatic or user set offset
|
|
@@ -22346,12 +22401,10 @@ class Axis {
|
|
|
22346
22401
|
labelOffsetPadded -= lineHeightCorrection;
|
|
22347
22402
|
labelOffsetPadded += directionFactor * (horiz ?
|
|
22348
22403
|
(labelOptions.y ??
|
|
22349
|
-
(tickRotCorr.y +
|
|
22350
|
-
directionFactor * labelOptions.distance)) :
|
|
22404
|
+
(tickRotCorr.y + directionFactor * distance)) :
|
|
22351
22405
|
(labelOptions.x ?? (reserveSpaceDefault ?
|
|
22352
|
-
directionFactor * (
|
|
22353
|
-
tickRotCorr.x +
|
|
22354
|
-
directionFactor * labelOptions.distance)));
|
|
22406
|
+
directionFactor * (distance - absTickRotCorrX) :
|
|
22407
|
+
tickRotCorr.x + directionFactor * distance)));
|
|
22355
22408
|
if (!horiz &&
|
|
22356
22409
|
!reserveSpaceDefault &&
|
|
22357
22410
|
axis.labelAlign === 'center' &&
|
|
@@ -22365,8 +22418,8 @@ class Axis {
|
|
|
22365
22418
|
// has rendered.
|
|
22366
22419
|
if (coll !== 'colorAxis' && clipOffset) {
|
|
22367
22420
|
const tickSize = this.tickSize('tick');
|
|
22368
|
-
axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +
|
|
22369
|
-
|
|
22421
|
+
axisOffset[side] = Math.max(axisOffset[side], Math.max((axis.axisTitleMargin || 0) + titleOffset, labelOffsetPadded) + directionFactor * axis.offset, // #6967
|
|
22422
|
+
labelOffsetPadded, // #3027
|
|
22370
22423
|
tickPositions?.length && tickSize ?
|
|
22371
22424
|
tickSize[0] + directionFactor * axis.offset :
|
|
22372
22425
|
0 // #4866
|
|
@@ -22428,18 +22481,20 @@ class Axis {
|
|
|
22428
22481
|
* @function Highcharts.Axis#renderLine
|
|
22429
22482
|
*/
|
|
22430
22483
|
renderLine() {
|
|
22431
|
-
const { chart, offset = 0, options } = this;
|
|
22484
|
+
const { chart, offset = 0, options } = this, verb = this.axisLine ? 'animate' : 'attr';
|
|
22432
22485
|
this.axisLine || (this.axisLine = chart.renderer.path()
|
|
22433
22486
|
.addClass('highcharts-axis-line')
|
|
22434
|
-
.attr(
|
|
22435
|
-
stroke: options.lineColor,
|
|
22436
|
-
'stroke-width': options.lineWidth,
|
|
22437
|
-
zIndex: 7
|
|
22438
|
-
})
|
|
22487
|
+
.attr({ zIndex: 7 })
|
|
22439
22488
|
.clip(this.clippable && offset <= 0 ?
|
|
22440
22489
|
chart.plotClipOuter :
|
|
22441
22490
|
void 0)
|
|
22442
22491
|
.add(this.axisGroup));
|
|
22492
|
+
if (!chart.styledMode) {
|
|
22493
|
+
this.axisLine[verb]({
|
|
22494
|
+
stroke: options.lineColor,
|
|
22495
|
+
'stroke-width': options.lineWidth
|
|
22496
|
+
});
|
|
22497
|
+
}
|
|
22443
22498
|
}
|
|
22444
22499
|
/**
|
|
22445
22500
|
* Position the axis title.
|
|
@@ -22524,9 +22579,9 @@ class Axis {
|
|
|
22524
22579
|
* Whether the tick should animate in from last computed position
|
|
22525
22580
|
*/
|
|
22526
22581
|
renderTick(pos, i, slideIn) {
|
|
22527
|
-
const axis = this,
|
|
22582
|
+
const axis = this, ticks = axis.ticks;
|
|
22528
22583
|
// Linked axes need an extra check to find out if
|
|
22529
|
-
if (!
|
|
22584
|
+
if (!axis.linkedParent ||
|
|
22530
22585
|
(pos >= axis.min && pos <= axis.max) ||
|
|
22531
22586
|
axis.grid?.isColumn) {
|
|
22532
22587
|
if (!ticks[pos]) {
|
|
@@ -22552,11 +22607,13 @@ class Axis {
|
|
|
22552
22607
|
* @emits Highcharts.Axis#event:afterRender
|
|
22553
22608
|
*/
|
|
22554
22609
|
render() {
|
|
22555
|
-
const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options,
|
|
22610
|
+
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);
|
|
22556
22611
|
let from, to;
|
|
22557
22612
|
// Reset
|
|
22558
22613
|
axis.labelEdge.length = 0;
|
|
22559
22614
|
axis.overlap = false;
|
|
22615
|
+
// Update z-indices
|
|
22616
|
+
this.createGroups();
|
|
22560
22617
|
// Mark all elements inActive before we go over and mark the active ones
|
|
22561
22618
|
[ticks, minorTicks, alternateBands].forEach(function (coll) {
|
|
22562
22619
|
objectEach(coll, function (tick) {
|
|
@@ -22575,7 +22632,7 @@ class Axis {
|
|
|
22575
22632
|
}
|
|
22576
22633
|
}
|
|
22577
22634
|
// If the series has data draw the ticks. Else only the line and title
|
|
22578
|
-
if (axis.hasData() ||
|
|
22635
|
+
if (axis.hasData() || axis.linkedParent) {
|
|
22579
22636
|
const slideInTicks = axis.chart.hasRendered &&
|
|
22580
22637
|
axis.old && isNumber(axis.old.min);
|
|
22581
22638
|
// Minor ticks
|
|
@@ -22613,8 +22670,10 @@ class Axis {
|
|
|
22613
22670
|
tickmarkOffset)) { // #2248, #4660
|
|
22614
22671
|
if (!alternateBands[pos]) {
|
|
22615
22672
|
// Should be imported from PlotLineOrBand.js, but
|
|
22616
|
-
// the dependency cycle with axis is a problem
|
|
22617
|
-
|
|
22673
|
+
// the dependency cycle with axis is a problem. Try
|
|
22674
|
+
// moving it to the PlotLineOrBand axis composition
|
|
22675
|
+
// later.
|
|
22676
|
+
alternateBands[pos] = new Core_Globals.PlotLineOrBand(axis, {}, 'plotBands');
|
|
22618
22677
|
}
|
|
22619
22678
|
from = pos + tickmarkOffset; // #949
|
|
22620
22679
|
alternateBands[pos].options = {
|
|
@@ -22628,17 +22687,13 @@ class Axis {
|
|
|
22628
22687
|
}
|
|
22629
22688
|
});
|
|
22630
22689
|
}
|
|
22631
|
-
// Custom plot lines and bands
|
|
22632
|
-
if (!axis._addedPlotLB) { // Only first time
|
|
22633
|
-
axis._addedPlotLB = true;
|
|
22634
|
-
(options.plotLines || [])
|
|
22635
|
-
.concat(options.plotBands || [])
|
|
22636
|
-
.forEach(function (plotLineOptions) {
|
|
22637
|
-
axis
|
|
22638
|
-
.addPlotBandOrLine(plotLineOptions);
|
|
22639
|
-
});
|
|
22640
|
-
}
|
|
22641
22690
|
} // End if hasData
|
|
22691
|
+
// Render or update rendering of plot lines and bands
|
|
22692
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
22693
|
+
for (const plotItem of this[coll]) {
|
|
22694
|
+
plotItem.render();
|
|
22695
|
+
}
|
|
22696
|
+
}
|
|
22642
22697
|
// Remove inactive ticks
|
|
22643
22698
|
[ticks, minorTicks, alternateBands].forEach(function (coll) {
|
|
22644
22699
|
const forDestruction = [], delay = animation.duration, destroyInactiveItems = function () {
|
|
@@ -22672,20 +22727,22 @@ class Axis {
|
|
|
22672
22727
|
// Set the axis line path
|
|
22673
22728
|
if (axisLine) {
|
|
22674
22729
|
axisLine[axisLine.isPlaced ? 'animate' : 'attr']({
|
|
22675
|
-
d: this.getLinePath(axisLine.strokeWidth())
|
|
22730
|
+
d: this.getLinePath(axisLine.strokeWidth()),
|
|
22731
|
+
opacity
|
|
22676
22732
|
});
|
|
22677
22733
|
axisLine.isPlaced = true;
|
|
22678
22734
|
// Show or hide the line depending on options.showEmpty
|
|
22679
22735
|
axisLine[showAxis ? 'show' : 'hide'](showAxis);
|
|
22680
22736
|
}
|
|
22681
22737
|
if (axisTitle && showAxis) {
|
|
22682
|
-
axisTitle[axisTitle.isNew ? 'attr' : 'animate'](
|
|
22738
|
+
axisTitle[axisTitle.isNew ? 'attr' : 'animate']({
|
|
22739
|
+
opacity,
|
|
22740
|
+
...axis.getTitlePosition(axisTitle)
|
|
22741
|
+
});
|
|
22683
22742
|
axisTitle.isNew = false;
|
|
22684
22743
|
}
|
|
22685
22744
|
// Stacked totals
|
|
22686
|
-
|
|
22687
|
-
axis.stacking.renderStackTotals();
|
|
22688
|
-
}
|
|
22745
|
+
axis.stacking?.renderStackTotals();
|
|
22689
22746
|
// First time, save the existing state
|
|
22690
22747
|
if (!this.old) {
|
|
22691
22748
|
this.saveOld();
|
|
@@ -22701,13 +22758,11 @@ class Axis {
|
|
|
22701
22758
|
* @function Highcharts.Axis#redraw
|
|
22702
22759
|
*/
|
|
22703
22760
|
redraw() {
|
|
22704
|
-
|
|
22761
|
+
// If it was initially visible, but dynamically hidden, `this.axisGroup`
|
|
22762
|
+
// exists. Then render with opacity 0.
|
|
22763
|
+
if (this.visible || this.axisGroup) {
|
|
22705
22764
|
// Render the axis
|
|
22706
22765
|
this.render();
|
|
22707
|
-
// Move plot lines and bands
|
|
22708
|
-
this.plotLinesAndBands.forEach(function (plotLine) {
|
|
22709
|
-
plotLine.render();
|
|
22710
|
-
});
|
|
22711
22766
|
}
|
|
22712
22767
|
// Mark associated series as dirty and ready for redraw
|
|
22713
22768
|
this.series.forEach(function (series) {
|
|
@@ -22721,6 +22776,7 @@ class Axis {
|
|
|
22721
22776
|
*/
|
|
22722
22777
|
saveOld() {
|
|
22723
22778
|
this.old = isNumber(this.min) ? {
|
|
22779
|
+
horiz: this.horiz,
|
|
22724
22780
|
len: this.len,
|
|
22725
22781
|
max: this.max,
|
|
22726
22782
|
min: this.min,
|
|
@@ -22730,64 +22786,37 @@ class Axis {
|
|
|
22730
22786
|
userMin: this.userMin
|
|
22731
22787
|
} : void 0;
|
|
22732
22788
|
}
|
|
22733
|
-
/**
|
|
22734
|
-
* Returns an array of axis properties, that should be untouched during
|
|
22735
|
-
* reinitialization.
|
|
22736
|
-
*
|
|
22737
|
-
* @internal
|
|
22738
|
-
* @function Highcharts.Axis#getKeepProps
|
|
22739
|
-
*/
|
|
22740
|
-
getKeepProps() {
|
|
22741
|
-
return (this.keepProps || Axis.keepProps);
|
|
22742
|
-
}
|
|
22743
22789
|
/**
|
|
22744
22790
|
* Destroys an Axis instance. See {@link Axis#remove} for the API endpoint
|
|
22745
22791
|
* to fully remove the axis.
|
|
22746
22792
|
*
|
|
22747
22793
|
* @internal
|
|
22748
22794
|
* @function Highcharts.Axis#destroy
|
|
22749
|
-
*
|
|
22750
|
-
* @param {boolean} [keepEvents]
|
|
22751
|
-
* Whether to preserve events, used internally in Axis.update.
|
|
22752
22795
|
*/
|
|
22753
|
-
destroy(
|
|
22754
|
-
|
|
22755
|
-
fireEvent(this, 'destroy', { keepEvents: keepEvents });
|
|
22796
|
+
destroy() {
|
|
22797
|
+
fireEvent(this, 'destroy');
|
|
22756
22798
|
// Remove the events
|
|
22757
|
-
|
|
22758
|
-
removeEvent(axis);
|
|
22759
|
-
}
|
|
22799
|
+
removeEvent(this);
|
|
22760
22800
|
// Destroy collections
|
|
22761
|
-
[
|
|
22762
|
-
|
|
22763
|
-
|
|
22764
|
-
|
|
22765
|
-
|
|
22766
|
-
|
|
22767
|
-
|
|
22768
|
-
|
|
22769
|
-
|
|
22770
|
-
// Destroy elements
|
|
22801
|
+
[
|
|
22802
|
+
this.ticks,
|
|
22803
|
+
this.minorTicks,
|
|
22804
|
+
this.alternateBands,
|
|
22805
|
+
this.plotBands,
|
|
22806
|
+
this.plotLines,
|
|
22807
|
+
this.plotLinesAndBandsGroups
|
|
22808
|
+
].forEach(destroyObjectProperties);
|
|
22809
|
+
// Destroy elements and clear reference
|
|
22771
22810
|
[
|
|
22772
22811
|
'axisLine', 'axisTitle', 'axisGroup',
|
|
22773
22812
|
'gridGroup', 'labelGroup', 'cross', 'scrollbar'
|
|
22774
|
-
].forEach(
|
|
22775
|
-
|
|
22776
|
-
axis[prop] = axis[prop].destroy();
|
|
22777
|
-
}
|
|
22813
|
+
].forEach((prop) => {
|
|
22814
|
+
this[prop] = this[prop]?.destroy();
|
|
22778
22815
|
});
|
|
22779
|
-
// Destroy each generated group for plotLines and plotBands
|
|
22780
|
-
for (const plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in
|
|
22781
|
-
axis.plotLinesAndBandsGroups[plotGroup] =
|
|
22782
|
-
axis.plotLinesAndBandsGroups[plotGroup].destroy();
|
|
22783
|
-
}
|
|
22784
22816
|
// Delete all properties and fall back to the prototype.
|
|
22785
|
-
objectEach(
|
|
22786
|
-
|
|
22787
|
-
delete axis[key];
|
|
22788
|
-
}
|
|
22817
|
+
objectEach(this, (_val, key) => {
|
|
22818
|
+
delete this[key];
|
|
22789
22819
|
});
|
|
22790
|
-
this.eventOptions = eventOptions;
|
|
22791
22820
|
}
|
|
22792
22821
|
/**
|
|
22793
22822
|
* Internal function to draw a crosshair.
|
|
@@ -22881,25 +22910,21 @@ class Axis {
|
|
|
22881
22910
|
void 0 :
|
|
22882
22911
|
chart.plotClipInner)
|
|
22883
22912
|
.add();
|
|
22884
|
-
|
|
22885
|
-
|
|
22886
|
-
|
|
22887
|
-
|
|
22888
|
-
|
|
22889
|
-
|
|
22890
|
-
|
|
22891
|
-
|
|
22892
|
-
|
|
22893
|
-
|
|
22894
|
-
|
|
22895
|
-
|
|
22896
|
-
|
|
22897
|
-
|
|
22898
|
-
|
|
22899
|
-
dashstyle: options.dashStyle
|
|
22900
|
-
});
|
|
22901
|
-
}
|
|
22902
|
-
}
|
|
22913
|
+
}
|
|
22914
|
+
// Presentational attributes
|
|
22915
|
+
if (!chart.styledMode) {
|
|
22916
|
+
cross
|
|
22917
|
+
.attr({
|
|
22918
|
+
stroke: options.color || (categorized ?
|
|
22919
|
+
Axis_color('var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22920
|
+
'var(--highcharts-neutral-color-20)'),
|
|
22921
|
+
'stroke-width': options.width ?? 1,
|
|
22922
|
+
// Dash style must be after stroke-width
|
|
22923
|
+
dashstyle: options.dashStyle || 'Solid'
|
|
22924
|
+
})
|
|
22925
|
+
.css({
|
|
22926
|
+
'pointer-events': 'none'
|
|
22927
|
+
});
|
|
22903
22928
|
}
|
|
22904
22929
|
cross
|
|
22905
22930
|
.show()
|
|
@@ -22909,9 +22934,7 @@ class Axis {
|
|
|
22909
22934
|
'stroke-width': this.transA
|
|
22910
22935
|
});
|
|
22911
22936
|
}
|
|
22912
|
-
|
|
22913
|
-
this.cross.e = e;
|
|
22914
|
-
}
|
|
22937
|
+
cross.e = e;
|
|
22915
22938
|
},
|
|
22916
22939
|
// Only use delay if the crosshair is currently hidden
|
|
22917
22940
|
(!graphic || graphic.attr('visibility') === 'hidden') ?
|
|
@@ -22950,13 +22973,14 @@ class Axis {
|
|
|
22950
22973
|
* operations on the chart, it is a good idea to set redraw to false and
|
|
22951
22974
|
* call {@link Chart#redraw} after.
|
|
22952
22975
|
*/
|
|
22953
|
-
update(options, redraw) {
|
|
22976
|
+
update(options = {}, redraw = true) {
|
|
22954
22977
|
const chart = this.chart;
|
|
22978
|
+
fireEvent(this, 'update', { options });
|
|
22955
22979
|
options = merge(this.userOptions, options);
|
|
22956
|
-
this.
|
|
22980
|
+
this.isDirty = this.forceRedraw = true;
|
|
22957
22981
|
this.init(chart, options);
|
|
22958
22982
|
chart.isDirtyBox = true;
|
|
22959
|
-
if (redraw
|
|
22983
|
+
if (redraw) {
|
|
22960
22984
|
chart.redraw();
|
|
22961
22985
|
}
|
|
22962
22986
|
}
|
|
@@ -23025,26 +23049,6 @@ class Axis {
|
|
|
23025
23049
|
this.update({ categories: categories }, redraw);
|
|
23026
23050
|
}
|
|
23027
23051
|
}
|
|
23028
|
-
/* *
|
|
23029
|
-
*
|
|
23030
|
-
* Static Properties
|
|
23031
|
-
*
|
|
23032
|
-
* */
|
|
23033
|
-
/**
|
|
23034
|
-
* Properties to survive after destroy, needed for Axis.update (#4317,
|
|
23035
|
-
* #5773, #5881).
|
|
23036
|
-
* @internal
|
|
23037
|
-
*/
|
|
23038
|
-
Axis.keepProps = [
|
|
23039
|
-
'coll',
|
|
23040
|
-
'extKey',
|
|
23041
|
-
'hcEvents',
|
|
23042
|
-
'len',
|
|
23043
|
-
'names',
|
|
23044
|
-
'series',
|
|
23045
|
-
'userMax',
|
|
23046
|
-
'userMin'
|
|
23047
|
-
];
|
|
23048
23052
|
/* *
|
|
23049
23053
|
*
|
|
23050
23054
|
* Default Export
|
|
@@ -23315,6 +23319,8 @@ Axis.keepProps = [
|
|
|
23315
23319
|
* */
|
|
23316
23320
|
|
|
23317
23321
|
|
|
23322
|
+
const { composed: DateTimeAxis_composed } = Core_Globals;
|
|
23323
|
+
|
|
23318
23324
|
|
|
23319
23325
|
/* *
|
|
23320
23326
|
*
|
|
@@ -23338,8 +23344,7 @@ var DateTimeAxis;
|
|
|
23338
23344
|
* @internal
|
|
23339
23345
|
*/
|
|
23340
23346
|
function compose(AxisClass) {
|
|
23341
|
-
if (
|
|
23342
|
-
AxisClass.keepProps.push('dateTime');
|
|
23347
|
+
if (pushUnique(DateTimeAxis_composed, 'Axis.DateTime')) {
|
|
23343
23348
|
const axisProto = AxisClass.prototype;
|
|
23344
23349
|
axisProto.getTimeTicks = getTimeTicks;
|
|
23345
23350
|
addEvent(AxisClass, 'afterSetType', onAfterSetType);
|
|
@@ -23501,6 +23506,8 @@ var DateTimeAxis;
|
|
|
23501
23506
|
* */
|
|
23502
23507
|
|
|
23503
23508
|
|
|
23509
|
+
const { composed: LogarithmicAxis_composed } = Core_Globals;
|
|
23510
|
+
|
|
23504
23511
|
/* *
|
|
23505
23512
|
*
|
|
23506
23513
|
* Class
|
|
@@ -23524,8 +23531,7 @@ var LogarithmicAxis;
|
|
|
23524
23531
|
* @internal
|
|
23525
23532
|
*/
|
|
23526
23533
|
function compose(AxisClass) {
|
|
23527
|
-
if (
|
|
23528
|
-
AxisClass.keepProps.push('logarithmic');
|
|
23534
|
+
if (pushUnique(LogarithmicAxis_composed, 'Axis.Logarithmic')) {
|
|
23529
23535
|
addEvent(AxisClass, 'afterSetType', onAfterSetType);
|
|
23530
23536
|
addEvent(AxisClass, 'afterInit', onAfterInit);
|
|
23531
23537
|
}
|
|
@@ -23734,24 +23740,7 @@ var PlotLineOrBandAxis;
|
|
|
23734
23740
|
* Functions
|
|
23735
23741
|
*
|
|
23736
23742
|
* */
|
|
23737
|
-
|
|
23738
|
-
* Add a plot band after render time.
|
|
23739
|
-
*
|
|
23740
|
-
* @sample highcharts/members/axis-addplotband/
|
|
23741
|
-
* Toggle the plot band from a button
|
|
23742
|
-
*
|
|
23743
|
-
* @function Highcharts.Axis#addPlotBand
|
|
23744
|
-
*
|
|
23745
|
-
* @param {Highcharts.AxisPlotBandsOptions} options
|
|
23746
|
-
* A configuration object for the plot band, as defined in
|
|
23747
|
-
* [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).
|
|
23748
|
-
*
|
|
23749
|
-
* @return {Highcharts.PlotLineOrBand|undefined}
|
|
23750
|
-
* The added plot band, or `undefined` if the options are not valid.
|
|
23751
|
-
*/
|
|
23752
|
-
function addPlotBand(options) {
|
|
23753
|
-
return this.addPlotBandOrLine(options, 'plotBands');
|
|
23754
|
-
}
|
|
23743
|
+
const getAdderFunction = (coll) =>
|
|
23755
23744
|
/**
|
|
23756
23745
|
* Add a plot band or plot line after render time. Called from
|
|
23757
23746
|
* addPlotBand and addPlotLine internally.
|
|
@@ -23759,65 +23748,85 @@ var PlotLineOrBandAxis;
|
|
|
23759
23748
|
* @internal
|
|
23760
23749
|
* @function Highcharts.Axis#addPlotBandOrLine
|
|
23761
23750
|
* @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options
|
|
23762
|
-
*
|
|
23751
|
+
* The `plotBand` or `plotLine` configuration object.
|
|
23763
23752
|
*/
|
|
23764
|
-
function
|
|
23765
|
-
|
|
23766
|
-
|
|
23753
|
+
function addPlotLineOrBand(options) {
|
|
23754
|
+
var _a;
|
|
23755
|
+
const plotItem = new PlotLineOrBandClass(this, options, coll);
|
|
23767
23756
|
if (this.visible) {
|
|
23768
|
-
|
|
23769
|
-
}
|
|
23770
|
-
if (obj) { // #2189
|
|
23771
|
-
if (!this._addedPlotLB) {
|
|
23772
|
-
this._addedPlotLB = true;
|
|
23773
|
-
(userOptions.plotLines || [])
|
|
23774
|
-
.concat(userOptions.plotBands || [])
|
|
23775
|
-
.forEach((plotLineOptions) => {
|
|
23776
|
-
this.addPlotBandOrLine(plotLineOptions);
|
|
23777
|
-
});
|
|
23778
|
-
}
|
|
23779
|
-
// Add it to the user options for exporting and Axis.update
|
|
23780
|
-
if (coll) {
|
|
23781
|
-
// Workaround Microsoft/TypeScript issue #32693
|
|
23782
|
-
const updatedOptions = (userOptions[coll] || []);
|
|
23783
|
-
updatedOptions.push(options);
|
|
23784
|
-
userOptions[coll] = updatedOptions;
|
|
23785
|
-
}
|
|
23786
|
-
this.plotLinesAndBands.push(obj);
|
|
23757
|
+
plotItem.render();
|
|
23787
23758
|
}
|
|
23788
|
-
|
|
23789
|
-
|
|
23790
|
-
|
|
23791
|
-
|
|
23792
|
-
|
|
23793
|
-
* @sample highcharts/members/axis-addplotline/
|
|
23794
|
-
* Toggle the plot line from a button
|
|
23795
|
-
*
|
|
23796
|
-
* @function Highcharts.Axis#addPlotLine
|
|
23797
|
-
*
|
|
23798
|
-
* @param {Highcharts.AxisPlotLinesOptions} options
|
|
23799
|
-
* A configuration object for the plot line, as defined in
|
|
23800
|
-
* [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).
|
|
23801
|
-
*
|
|
23802
|
-
* @return {Highcharts.PlotLineOrBand|undefined}
|
|
23803
|
-
* The added plot line, or `undefined` if the options are not valid.
|
|
23804
|
-
*/
|
|
23805
|
-
function addPlotLine(options) {
|
|
23806
|
-
return this.addPlotBandOrLine(options, 'plotLines');
|
|
23807
|
-
}
|
|
23759
|
+
(_a = this.options)[coll] || (_a[coll] = this.userOptions[coll] = []);
|
|
23760
|
+
this.options[coll].push(options);
|
|
23761
|
+
this[coll].push(plotItem);
|
|
23762
|
+
return plotItem;
|
|
23763
|
+
};
|
|
23808
23764
|
/** @internal */
|
|
23809
23765
|
function compose(PlotLineOrBandType, AxisClass) {
|
|
23810
23766
|
const axisProto = AxisClass.prototype;
|
|
23811
23767
|
if (!axisProto.addPlotBand) {
|
|
23812
23768
|
PlotLineOrBandClass = PlotLineOrBandType;
|
|
23813
23769
|
extend(axisProto, {
|
|
23814
|
-
addPlotBand,
|
|
23815
|
-
addPlotLine,
|
|
23816
|
-
addPlotBandOrLine,
|
|
23770
|
+
addPlotBand: getAdderFunction('plotBands'),
|
|
23771
|
+
addPlotLine: getAdderFunction('plotLines'),
|
|
23817
23772
|
getPlotBandPath,
|
|
23818
|
-
removePlotBand,
|
|
23819
|
-
removePlotLine
|
|
23820
|
-
|
|
23773
|
+
removePlotBand: removePlotBandOrLine,
|
|
23774
|
+
removePlotLine: removePlotBandOrLine
|
|
23775
|
+
});
|
|
23776
|
+
addEvent(AxisClass, 'afterInit', function () {
|
|
23777
|
+
// First time only, not on Axis.update()
|
|
23778
|
+
if (!this.plotBands) {
|
|
23779
|
+
// Placeholder for plotlines and plotbands groups
|
|
23780
|
+
this.plotLinesAndBandsGroups = {};
|
|
23781
|
+
// Plot lines and bands from options
|
|
23782
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
23783
|
+
this[coll] = [];
|
|
23784
|
+
for (const pOptions of splat(this.options[coll] || [])) {
|
|
23785
|
+
this[coll].push(new PlotLineOrBandClass(this, pOptions, coll));
|
|
23786
|
+
}
|
|
23787
|
+
}
|
|
23788
|
+
}
|
|
23789
|
+
});
|
|
23790
|
+
// Update plot bands and lines one to one
|
|
23791
|
+
addEvent(AxisClass, 'update', function ({ options }) {
|
|
23792
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
23793
|
+
// Check if we have new options to process, otherwise do
|
|
23794
|
+
// nothing with existing plot lines and bands
|
|
23795
|
+
if (options[coll]) {
|
|
23796
|
+
const plotItems = this[coll];
|
|
23797
|
+
splat(options[coll]).forEach((pOptions = {}, i) => {
|
|
23798
|
+
// Match by id
|
|
23799
|
+
let pItem;
|
|
23800
|
+
if (pOptions?.id) {
|
|
23801
|
+
pItem = plotItems.find((p) => p.id === pOptions.id);
|
|
23802
|
+
}
|
|
23803
|
+
// Match by index
|
|
23804
|
+
pItem || (pItem = plotItems[i]);
|
|
23805
|
+
// Update
|
|
23806
|
+
if (pItem) {
|
|
23807
|
+
pItem.update(pOptions, false);
|
|
23808
|
+
options[coll][i] = pItem.options;
|
|
23809
|
+
// Add
|
|
23810
|
+
}
|
|
23811
|
+
else {
|
|
23812
|
+
pItem = this[coll === 'plotBands' ?
|
|
23813
|
+
'addPlotBand' :
|
|
23814
|
+
'addPlotLine'](pOptions);
|
|
23815
|
+
}
|
|
23816
|
+
pItem.isActive = true;
|
|
23817
|
+
});
|
|
23818
|
+
// Remove inactive items from end to start
|
|
23819
|
+
let i = plotItems.length;
|
|
23820
|
+
while (i--) {
|
|
23821
|
+
if (!plotItems[i].isActive) {
|
|
23822
|
+
plotItems[i].remove();
|
|
23823
|
+
}
|
|
23824
|
+
else {
|
|
23825
|
+
delete plotItems[i].isActive;
|
|
23826
|
+
}
|
|
23827
|
+
}
|
|
23828
|
+
}
|
|
23829
|
+
}
|
|
23821
23830
|
});
|
|
23822
23831
|
}
|
|
23823
23832
|
return AxisClass;
|
|
@@ -23888,23 +23897,6 @@ var PlotLineOrBandAxis;
|
|
|
23888
23897
|
}
|
|
23889
23898
|
return result;
|
|
23890
23899
|
}
|
|
23891
|
-
/**
|
|
23892
|
-
* Remove a plot band by its id.
|
|
23893
|
-
*
|
|
23894
|
-
* @sample highcharts/members/axis-removeplotband/
|
|
23895
|
-
* Remove plot band by id
|
|
23896
|
-
* @sample highcharts/members/axis-addplotband/
|
|
23897
|
-
* Toggle the plot band from a button
|
|
23898
|
-
*
|
|
23899
|
-
* @function Highcharts.Axis#removePlotBand
|
|
23900
|
-
*
|
|
23901
|
-
* @param {string} id
|
|
23902
|
-
* The plot band's `id` as given in the original configuration
|
|
23903
|
-
* object or in the `addPlotBand` option.
|
|
23904
|
-
*/
|
|
23905
|
-
function removePlotBand(id) {
|
|
23906
|
-
this.removePlotBandOrLine(id);
|
|
23907
|
-
}
|
|
23908
23900
|
/**
|
|
23909
23901
|
* Remove a plot band or plot line from the chart by id. Called
|
|
23910
23902
|
* internally from `removePlotBand` and `removePlotLine`.
|
|
@@ -23912,45 +23904,7 @@ var PlotLineOrBandAxis;
|
|
|
23912
23904
|
* @function Highcharts.Axis#removePlotBandOrLine
|
|
23913
23905
|
*/
|
|
23914
23906
|
function removePlotBandOrLine(id) {
|
|
23915
|
-
|
|
23916
|
-
if (plotLinesAndBands) { // #15639
|
|
23917
|
-
let i = plotLinesAndBands.length;
|
|
23918
|
-
while (i--) {
|
|
23919
|
-
if (plotLinesAndBands[i].id === id) {
|
|
23920
|
-
plotLinesAndBands[i].destroy();
|
|
23921
|
-
}
|
|
23922
|
-
}
|
|
23923
|
-
([
|
|
23924
|
-
options.plotLines || [],
|
|
23925
|
-
userOptions.plotLines || [],
|
|
23926
|
-
options.plotBands || [],
|
|
23927
|
-
userOptions.plotBands || []
|
|
23928
|
-
]).forEach(function (arr) {
|
|
23929
|
-
i = arr.length;
|
|
23930
|
-
while (i--) {
|
|
23931
|
-
if (arr[i]?.id === id) {
|
|
23932
|
-
erase(arr, arr[i]);
|
|
23933
|
-
}
|
|
23934
|
-
}
|
|
23935
|
-
});
|
|
23936
|
-
}
|
|
23937
|
-
}
|
|
23938
|
-
/**
|
|
23939
|
-
* Remove a plot line by its id.
|
|
23940
|
-
*
|
|
23941
|
-
* @sample highcharts/xaxis/plotlines-id/
|
|
23942
|
-
* Remove plot line by id
|
|
23943
|
-
* @sample highcharts/members/axis-addplotline/
|
|
23944
|
-
* Toggle the plot line from a button
|
|
23945
|
-
*
|
|
23946
|
-
* @function Highcharts.Axis#removePlotLine
|
|
23947
|
-
*
|
|
23948
|
-
* @param {string} id
|
|
23949
|
-
* The plot line's `id` as given in the original configuration
|
|
23950
|
-
* object or in the `addPlotLine` option.
|
|
23951
|
-
*/
|
|
23952
|
-
function removePlotLine(id) {
|
|
23953
|
-
this.removePlotBandOrLine(id);
|
|
23907
|
+
[...this.plotBands || [], ...this.plotLines || []].find((plotItem) => plotItem.id === id)?.remove();
|
|
23954
23908
|
}
|
|
23955
23909
|
})(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));
|
|
23956
23910
|
/* *
|
|
@@ -24014,9 +23968,11 @@ class PlotLineOrBand {
|
|
|
24014
23968
|
this.labelCollectors.push(() => {
|
|
24015
23969
|
const labels = [];
|
|
24016
23970
|
for (const axis of this.axes) {
|
|
24017
|
-
for (const
|
|
24018
|
-
|
|
24019
|
-
|
|
23971
|
+
for (const coll of ['plotBands', 'plotLines']) {
|
|
23972
|
+
for (const { label, options } of axis[coll]) {
|
|
23973
|
+
if (label && !options?.label?.allowOverlap) {
|
|
23974
|
+
labels.push(label);
|
|
23975
|
+
}
|
|
24020
23976
|
}
|
|
24021
23977
|
}
|
|
24022
23978
|
}
|
|
@@ -24030,7 +23986,7 @@ class PlotLineOrBand {
|
|
|
24030
23986
|
* Constructor
|
|
24031
23987
|
*
|
|
24032
23988
|
* */
|
|
24033
|
-
constructor(axis, options) {
|
|
23989
|
+
constructor(axis, options, coll) {
|
|
24034
23990
|
/**
|
|
24035
23991
|
* Related axis.
|
|
24036
23992
|
*
|
|
@@ -24046,6 +24002,7 @@ class PlotLineOrBand {
|
|
|
24046
24002
|
*/
|
|
24047
24003
|
this.options = options;
|
|
24048
24004
|
this.id = options.id;
|
|
24005
|
+
this.coll = coll;
|
|
24049
24006
|
}
|
|
24050
24007
|
/* *
|
|
24051
24008
|
*
|
|
@@ -24061,43 +24018,28 @@ class PlotLineOrBand {
|
|
|
24061
24018
|
*/
|
|
24062
24019
|
render() {
|
|
24063
24020
|
fireEvent(this, 'render');
|
|
24064
|
-
const { axis, options } = this, { chart, horiz, logarithmic } = axis, { color, events, zIndex = 0 } = options, { renderer, time } = axis.chart,
|
|
24021
|
+
const { axis, options } = this, { chart, horiz, logarithmic } = axis, { color, events, zIndex = 0 } = options, { renderer, styledMode, time } = axis.chart,
|
|
24065
24022
|
// These properties only exist on either band or line
|
|
24066
24023
|
to = time.parse(options.to), from = time.parse(options.from), value = time.parse(options.value), borderWidth = options.borderWidth;
|
|
24067
|
-
let optionsLabel = options.label, { label, svgElem } = this,
|
|
24068
|
-
const isBand =
|
|
24069
|
-
'class':
|
|
24070
|
-
|
|
24071
|
-
|
|
24072
|
-
|
|
24073
|
-
// Set the
|
|
24074
|
-
if (!
|
|
24075
|
-
|
|
24076
|
-
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
24077
|
-
attribs['stroke-width'] =
|
|
24078
|
-
options.width ?? 1;
|
|
24079
|
-
if (options.dashStyle) {
|
|
24080
|
-
attribs.dashstyle = options.dashStyle;
|
|
24081
|
-
}
|
|
24082
|
-
}
|
|
24083
|
-
else if (isBand) { // Plot band
|
|
24084
|
-
attribs.fill = color || 'var(--highcharts-highlight-color-10)';
|
|
24085
|
-
if (borderWidth) {
|
|
24086
|
-
attribs.stroke = options.borderColor;
|
|
24087
|
-
attribs['stroke-width'] = borderWidth;
|
|
24088
|
-
}
|
|
24089
|
-
}
|
|
24024
|
+
let optionsLabel = options.label, { label, svgElem } = this, group;
|
|
24025
|
+
const isBand = this.coll === 'plotBands', shortKey = isBand ? 'band' : 'line', groupName = `${shortKey}s-${zIndex}`, isNew = !svgElem, attribs = {
|
|
24026
|
+
'class': `highcharts-plot-${shortKey} ${options.className || ''}`
|
|
24027
|
+
}, strokeWidth = isBand ?
|
|
24028
|
+
(borderWidth || 0) :
|
|
24029
|
+
(options.width ?? 1);
|
|
24030
|
+
// Set the stroke width before the path is calculated
|
|
24031
|
+
if (!styledMode) {
|
|
24032
|
+
attribs['stroke-width'] = strokeWidth;
|
|
24090
24033
|
}
|
|
24091
24034
|
// Grouping and zIndex
|
|
24092
|
-
groupAttribs.zIndex = zIndex;
|
|
24093
|
-
groupName += '-' + zIndex;
|
|
24094
24035
|
group = axis.plotLinesAndBandsGroups[groupName];
|
|
24095
24036
|
if (!group) {
|
|
24096
24037
|
axis.plotLinesAndBandsGroups[groupName] = group =
|
|
24097
24038
|
renderer.g('plot-' + groupName)
|
|
24098
24039
|
.clip(chart.plotClipOuter)
|
|
24099
|
-
.attr(
|
|
24040
|
+
.attr({ zIndex }).add();
|
|
24100
24041
|
}
|
|
24042
|
+
group[isNew ? 'attr' : 'animate']({ opacity: +axis.visible });
|
|
24101
24043
|
// Create the path
|
|
24102
24044
|
if (!svgElem) {
|
|
24103
24045
|
/**
|
|
@@ -24108,40 +24050,58 @@ class PlotLineOrBand {
|
|
|
24108
24050
|
*/
|
|
24109
24051
|
this.svgElem = svgElem = renderer
|
|
24110
24052
|
.path()
|
|
24111
|
-
.attr(attribs)
|
|
24112
|
-
|
|
24053
|
+
.attr(attribs);
|
|
24054
|
+
}
|
|
24055
|
+
// Add it to the correct index while allowing dynamic z-index update
|
|
24056
|
+
if (svgElem.parentGroup !== group) {
|
|
24057
|
+
svgElem.add(group);
|
|
24113
24058
|
}
|
|
24114
24059
|
// Set the path or return
|
|
24115
|
-
|
|
24060
|
+
let path;
|
|
24061
|
+
if (!isBand && defined(value)) { // Plot line
|
|
24116
24062
|
path = axis.getPlotLinePath({
|
|
24117
24063
|
value: logarithmic?.log2lin(value) ?? value,
|
|
24118
24064
|
lineWidth: svgElem.strokeWidth(),
|
|
24119
24065
|
acrossPanes: options.acrossPanes
|
|
24120
24066
|
});
|
|
24121
24067
|
}
|
|
24122
|
-
else if (defined(from) && defined(to)) { // Plot band
|
|
24068
|
+
else if (isBand && defined(from) && defined(to)) { // Plot band
|
|
24123
24069
|
path = axis.getPlotBandPath(logarithmic?.log2lin(from) ?? from, logarithmic?.log2lin(to) ?? to, options);
|
|
24124
24070
|
}
|
|
24125
|
-
|
|
24126
|
-
|
|
24071
|
+
if (path) {
|
|
24072
|
+
attribs.d = path;
|
|
24073
|
+
}
|
|
24074
|
+
// Apply the styling
|
|
24075
|
+
if (!styledMode) {
|
|
24076
|
+
if (isBand) { // Plot band
|
|
24077
|
+
attribs.fill = color || 'var(--highcharts-highlight-color-10)';
|
|
24078
|
+
if (borderWidth) {
|
|
24079
|
+
attribs.stroke = options.borderColor;
|
|
24080
|
+
}
|
|
24081
|
+
}
|
|
24082
|
+
else {
|
|
24083
|
+
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
24084
|
+
if (options.dashStyle) {
|
|
24085
|
+
attribs.dashstyle = options.dashStyle;
|
|
24086
|
+
}
|
|
24087
|
+
}
|
|
24127
24088
|
}
|
|
24128
24089
|
// Common for lines and bands. Add events only if they were not added
|
|
24129
24090
|
// before.
|
|
24130
|
-
if (
|
|
24091
|
+
if (isNew && events) {
|
|
24131
24092
|
objectEach(events, (_event, eventType) => {
|
|
24132
24093
|
svgElem?.on(eventType, (e) => {
|
|
24133
24094
|
events[eventType].apply(this, [e, this]);
|
|
24134
24095
|
});
|
|
24135
24096
|
});
|
|
24136
|
-
this.eventsAdded = true;
|
|
24137
24097
|
}
|
|
24138
24098
|
if ((isNew || !svgElem.d) && path?.length) {
|
|
24139
|
-
svgElem.attr(
|
|
24099
|
+
svgElem.attr(attribs);
|
|
24140
24100
|
}
|
|
24141
24101
|
else if (svgElem) {
|
|
24142
24102
|
if (path) {
|
|
24143
24103
|
svgElem.show();
|
|
24144
|
-
svgElem.animate(
|
|
24104
|
+
svgElem.animate(attribs);
|
|
24145
24105
|
}
|
|
24146
24106
|
else if (svgElem.d) {
|
|
24147
24107
|
svgElem.hide();
|
|
@@ -24181,7 +24141,7 @@ class PlotLineOrBand {
|
|
|
24181
24141
|
* @function Highcharts.PlotLineOrBand#renderLabel
|
|
24182
24142
|
*/
|
|
24183
24143
|
renderLabel(optionsLabel, path, isBand, zIndex) {
|
|
24184
|
-
const plotLine = this, axis = plotLine.axis,
|
|
24144
|
+
const plotLine = this, axis = plotLine.axis, chart = axis.chart, renderer = chart.renderer, inside = optionsLabel.inside;
|
|
24185
24145
|
let label = plotLine.label;
|
|
24186
24146
|
// Add the SVG element
|
|
24187
24147
|
if (!label) {
|
|
@@ -24192,25 +24152,31 @@ class PlotLineOrBand {
|
|
|
24192
24152
|
* @type {Highcharts.SVGElement}
|
|
24193
24153
|
*/
|
|
24194
24154
|
plotLine.label = label = renderer
|
|
24195
|
-
.text(
|
|
24196
|
-
.attr({
|
|
24197
|
-
|
|
24198
|
-
|
|
24199
|
-
|
|
24200
|
-
|
|
24201
|
-
|
|
24202
|
-
|
|
24203
|
-
|
|
24204
|
-
|
|
24205
|
-
|
|
24206
|
-
|
|
24207
|
-
|
|
24208
|
-
|
|
24209
|
-
|
|
24210
|
-
|
|
24211
|
-
|
|
24212
|
-
|
|
24213
|
-
|
|
24155
|
+
.text('', 0, 0, optionsLabel.useHTML)
|
|
24156
|
+
.attr({ zIndex });
|
|
24157
|
+
}
|
|
24158
|
+
label
|
|
24159
|
+
.attr({
|
|
24160
|
+
text: this.getLabelText(optionsLabel),
|
|
24161
|
+
align: optionsLabel.textAlign || optionsLabel.align,
|
|
24162
|
+
'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +
|
|
24163
|
+
'-label ' + (optionsLabel.className || '')
|
|
24164
|
+
})[label.placed ? 'animate' : 'attr']({
|
|
24165
|
+
opacity: 1,
|
|
24166
|
+
rotation: optionsLabel.rotation
|
|
24167
|
+
});
|
|
24168
|
+
if (!chart.styledMode) {
|
|
24169
|
+
label.css(merge({
|
|
24170
|
+
// To allow theming, and in lack of a general place to set
|
|
24171
|
+
// default options for plot lines and bands, default to the
|
|
24172
|
+
// title color. If we expose the palette, we should use that
|
|
24173
|
+
// instead.
|
|
24174
|
+
color: chart.options.title?.style?.color,
|
|
24175
|
+
fontSize: '0.8em',
|
|
24176
|
+
textOverflow: (isBand && !inside) ? '' : 'ellipsis'
|
|
24177
|
+
}, optionsLabel.style));
|
|
24178
|
+
}
|
|
24179
|
+
if (!label.added) {
|
|
24214
24180
|
label.add();
|
|
24215
24181
|
}
|
|
24216
24182
|
// Get the bounding box and align the label
|
|
@@ -24234,12 +24200,31 @@ class PlotLineOrBand {
|
|
|
24234
24200
|
axis.height - (label.alignAttr.y -
|
|
24235
24201
|
axis.top) : (optionsLabel.clip ?
|
|
24236
24202
|
(axis.width + axis.left) :
|
|
24237
|
-
|
|
24203
|
+
chart.chartWidth) - label.alignAttr.x) :
|
|
24238
24204
|
bBoxWidth)) + 'px'
|
|
24239
24205
|
});
|
|
24240
24206
|
}
|
|
24207
|
+
else if (label.textWidth) {
|
|
24208
|
+
label.css({ width: 'auto' });
|
|
24209
|
+
}
|
|
24241
24210
|
label.show(true);
|
|
24242
24211
|
}
|
|
24212
|
+
/**
|
|
24213
|
+
* Update the plot line or band with new options.
|
|
24214
|
+
*
|
|
24215
|
+
* @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} options
|
|
24216
|
+
* The new options to apply
|
|
24217
|
+
* @param {boolean} [redraw=true]
|
|
24218
|
+
* Whether to redraw the plot guide immediately
|
|
24219
|
+
*
|
|
24220
|
+
* @function Highcharts.PlotLineOrBand#update
|
|
24221
|
+
*/
|
|
24222
|
+
update(options, redraw = true) {
|
|
24223
|
+
merge(true, this.options, options);
|
|
24224
|
+
if (redraw) {
|
|
24225
|
+
this.render();
|
|
24226
|
+
}
|
|
24227
|
+
}
|
|
24243
24228
|
/**
|
|
24244
24229
|
* Get label's text content.
|
|
24245
24230
|
* @internal
|
|
@@ -24251,15 +24236,22 @@ class PlotLineOrBand {
|
|
|
24251
24236
|
optionsLabel.text;
|
|
24252
24237
|
}
|
|
24253
24238
|
/**
|
|
24254
|
-
*
|
|
24255
|
-
*
|
|
24256
|
-
* @function Highcharts.PlotLineOrBand#destroy
|
|
24239
|
+
* Destroy the item's elements
|
|
24257
24240
|
*/
|
|
24258
24241
|
destroy() {
|
|
24242
|
+
destroyObjectProperties(this, this.axis);
|
|
24243
|
+
}
|
|
24244
|
+
/**
|
|
24245
|
+
* Remove the plot line or band and destroy its elements.
|
|
24246
|
+
*
|
|
24247
|
+
* @function Highcharts.PlotLineOrBand#remove
|
|
24248
|
+
*/
|
|
24249
|
+
remove() {
|
|
24259
24250
|
// Remove it from the lookup
|
|
24260
|
-
erase(this.axis.
|
|
24261
|
-
|
|
24262
|
-
|
|
24251
|
+
erase(this.axis[this.coll], this);
|
|
24252
|
+
// Remove from options
|
|
24253
|
+
erase(this.axis.options[this.coll] || [], this.options);
|
|
24254
|
+
this.destroy();
|
|
24263
24255
|
}
|
|
24264
24256
|
}
|
|
24265
24257
|
/* *
|
|
@@ -24306,10 +24298,24 @@ class PlotLineOrBand {
|
|
|
24306
24298
|
* In styled mode, the plot bands are styled by the `.highcharts-plot-band`
|
|
24307
24299
|
* class in addition to the `className` option.
|
|
24308
24300
|
*
|
|
24301
|
+
* When doing `Chart.update()` or `Axis.update()`, the plot bands are updated
|
|
24302
|
+
* by index or id. The following merging rules apply:
|
|
24303
|
+
* - If `plotBands` are not defined in the new options, all existing plot bands
|
|
24304
|
+
* are kept.
|
|
24305
|
+
* - If `plotBands` are defined without ids, the existing plot bands are updated
|
|
24306
|
+
* by index. If the new array has fewer plot bands, the remaining existing
|
|
24307
|
+
* plot bands are removed. If the new array has more plot bands, the extra
|
|
24308
|
+
* ones are added. An empty array removes all existing plot bands.
|
|
24309
|
+
* - If `plotBands` are defined with ids, the existing plot bands are matched
|
|
24310
|
+
* by id, and remaining unmatched existing plot bands are removed.
|
|
24311
|
+
*
|
|
24309
24312
|
* @productdesc {highcharts}
|
|
24310
24313
|
* In a gauge, a plot band on the Y axis (value axis) will stretch along the
|
|
24311
24314
|
* perimeter of the gauge.
|
|
24312
24315
|
*
|
|
24316
|
+
* @sample {highcharts} highcharts/xaxis/plotbands-color/
|
|
24317
|
+
* Basic plot band
|
|
24318
|
+
*
|
|
24313
24319
|
* @type {Array<*>}
|
|
24314
24320
|
* @product highcharts highstock gantt
|
|
24315
24321
|
* @apioption xAxis.plotBands
|
|
@@ -24601,12 +24607,23 @@ class PlotLineOrBand {
|
|
|
24601
24607
|
* In styled mode, the plot lines are styled by the
|
|
24602
24608
|
* `.highcharts-plot-line` class in addition to the `className` option.
|
|
24603
24609
|
*
|
|
24610
|
+
* When doing `Chart.update()` or `Axis.update()`, the plot lines are updated
|
|
24611
|
+
* by index or id. The following merging rules apply:
|
|
24612
|
+
* - If `plotLines` are not defined in the new options, all existing plot lines
|
|
24613
|
+
* are kept.
|
|
24614
|
+
* - If `plotLines` are defined without ids, the existing plot lines are updated
|
|
24615
|
+
* by index. If the new array has fewer plot lines, the remaining existing
|
|
24616
|
+
* plot lines are removed. If the new array has more plot lines, the extra
|
|
24617
|
+
* ones are added. An empty array removes all existing plot lines.
|
|
24618
|
+
* - If `plotLines` are defined with ids, the existing plot lines are matched
|
|
24619
|
+
* by id, and remaining unmatched existing plot lines are removed.
|
|
24620
|
+
*
|
|
24604
24621
|
* @type {Array<*>}
|
|
24605
24622
|
* @product highcharts highstock gantt
|
|
24606
|
-
* @sample
|
|
24607
|
-
*
|
|
24608
|
-
* @sample
|
|
24609
|
-
*
|
|
24623
|
+
* @sample {highcharts} highcharts/xaxis/plotlines-color/
|
|
24624
|
+
* Basic plot line
|
|
24625
|
+
* @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/
|
|
24626
|
+
* Solid gauge plot line
|
|
24610
24627
|
* @apioption xAxis.plotLines
|
|
24611
24628
|
*/
|
|
24612
24629
|
/**
|
|
@@ -25115,14 +25132,11 @@ class Tooltip {
|
|
|
25115
25132
|
*/
|
|
25116
25133
|
destroy() {
|
|
25117
25134
|
// Destroy and clear local variables
|
|
25118
|
-
|
|
25119
|
-
|
|
25120
|
-
}
|
|
25135
|
+
this.tracker = this.tracker?.destroy();
|
|
25136
|
+
this.label = this.label?.destroy();
|
|
25121
25137
|
if (this.split) {
|
|
25122
25138
|
this.cleanSplit(true);
|
|
25123
|
-
|
|
25124
|
-
this.tt = this.tt.destroy();
|
|
25125
|
-
}
|
|
25139
|
+
this.tt = this.tt?.destroy();
|
|
25126
25140
|
}
|
|
25127
25141
|
if (this.renderer) {
|
|
25128
25142
|
this.renderer = this.renderer.destroy();
|
|
@@ -25652,6 +25666,8 @@ class Tooltip {
|
|
|
25652
25666
|
!this.isHidden &&
|
|
25653
25667
|
!options.fixed &&
|
|
25654
25668
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
25669
|
+
this.anchorX = anchorX;
|
|
25670
|
+
this.anchorY = anchorY;
|
|
25655
25671
|
if (!skipAnchor) {
|
|
25656
25672
|
attr.anchorX = anchorX;
|
|
25657
25673
|
attr.anchorY = anchorY;
|
|
@@ -26098,45 +26114,37 @@ class Tooltip {
|
|
|
26098
26114
|
*/
|
|
26099
26115
|
drawTracker() {
|
|
26100
26116
|
const tooltip = this;
|
|
26101
|
-
if (!
|
|
26102
|
-
|
|
26103
|
-
tooltip.tracker = tooltip.tracker.destroy();
|
|
26104
|
-
}
|
|
26117
|
+
if (!tooltip.shouldStickOnContact()) {
|
|
26118
|
+
tooltip.tracker = tooltip.tracker?.destroy();
|
|
26105
26119
|
return;
|
|
26106
26120
|
}
|
|
26107
|
-
const chart = tooltip.chart
|
|
26108
|
-
|
|
26109
|
-
|
|
26110
|
-
if (!
|
|
26121
|
+
const { chart, label } = tooltip, points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint,
|
|
26122
|
+
// Split tooltips render into a plain group, with no box to trace
|
|
26123
|
+
box = label?.box;
|
|
26124
|
+
if (!box || !points) {
|
|
26111
26125
|
return;
|
|
26112
26126
|
}
|
|
26113
|
-
const
|
|
26114
|
-
|
|
26115
|
-
|
|
26116
|
-
|
|
26117
|
-
|
|
26118
|
-
|
|
26119
|
-
|
|
26120
|
-
|
|
26121
|
-
|
|
26122
|
-
|
|
26123
|
-
|
|
26124
|
-
//
|
|
26125
|
-
|
|
26126
|
-
|
|
26127
|
-
|
|
26128
|
-
|
|
26129
|
-
|
|
26130
|
-
|
|
26131
|
-
|
|
26132
|
-
Math.max(Math.abs(anchorPos[1]), labelBBox.height - Math.abs(anchorPos[1])) :
|
|
26133
|
-
Math.max(Math.abs(anchorPos[1]), labelBBox.height));
|
|
26134
|
-
if (tooltip.tracker) {
|
|
26135
|
-
tooltip.tracker.attr(box);
|
|
26136
|
-
}
|
|
26137
|
-
else {
|
|
26127
|
+
const { height, r, width, x, y } = box;
|
|
26128
|
+
let { anchorX, anchorY } = box;
|
|
26129
|
+
// Shared tooltips clear the label anchor (#22295), so fall back to the
|
|
26130
|
+
// anchor the position was calculated from
|
|
26131
|
+
if (!isNumber(anchorX)) {
|
|
26132
|
+
anchorX = (tooltip.anchorX || 0) - (label.translateX || 0);
|
|
26133
|
+
anchorY = (tooltip.anchorY || 0) - (label.translateY || 0);
|
|
26134
|
+
}
|
|
26135
|
+
// Match the tooltip shape, but stretch the connector all the way to the
|
|
26136
|
+
// point, so that the pointer can travel between the two without losing
|
|
26137
|
+
// contact. Only the side facing the anchor overshoots the box, so the
|
|
26138
|
+
// largest of the four distances is the one to cover. (#24255)
|
|
26139
|
+
const d = label.renderer.symbols.callout(x, y, width, height, {
|
|
26140
|
+
anchorX,
|
|
26141
|
+
anchorY,
|
|
26142
|
+
arrowLength: Math.max(anchorX - width, -anchorX, anchorY - height, -anchorY, 0),
|
|
26143
|
+
r
|
|
26144
|
+
});
|
|
26145
|
+
if (!tooltip.tracker) {
|
|
26138
26146
|
tooltip.tracker = label.renderer
|
|
26139
|
-
.
|
|
26147
|
+
.path()
|
|
26140
26148
|
.addClass('highcharts-tracker')
|
|
26141
26149
|
.add(label);
|
|
26142
26150
|
// For a rapid move going outside of the elements keeping the
|
|
@@ -26144,10 +26152,14 @@ class Tooltip {
|
|
|
26144
26152
|
addEvent(tooltip.tracker.element, 'mouseenter', () => clearTimeouts(tooltip));
|
|
26145
26153
|
if (!chart.styledMode) {
|
|
26146
26154
|
tooltip.tracker.attr({
|
|
26147
|
-
fill: 'rgba(0,0,0,0)'
|
|
26155
|
+
fill: 'rgba(0,0,0,0)',
|
|
26156
|
+
stroke: 'rgba(0,0,0,0)',
|
|
26157
|
+
'stroke-linejoin': 'round',
|
|
26158
|
+
'stroke-width': 10
|
|
26148
26159
|
});
|
|
26149
26160
|
}
|
|
26150
26161
|
}
|
|
26162
|
+
tooltip.tracker.attr({ d });
|
|
26151
26163
|
}
|
|
26152
26164
|
/** @internal */
|
|
26153
26165
|
styledModeFormat(formatString) {
|
|
@@ -27094,7 +27106,8 @@ class Point {
|
|
|
27094
27106
|
/**
|
|
27095
27107
|
* Set a value in an object, on the property defined by key. The key
|
|
27096
27108
|
* supports nested properties using dot notation. The function modifies the
|
|
27097
|
-
* input object and does not make a copy.
|
|
27109
|
+
* input object and does not make a copy. Paths containing `__proto__` or
|
|
27110
|
+
* `constructor` are ignored.
|
|
27098
27111
|
*
|
|
27099
27112
|
* @function Highcharts.Point#setNestedProperty<T>
|
|
27100
27113
|
*
|
|
@@ -27112,11 +27125,18 @@ class Point {
|
|
|
27112
27125
|
*/
|
|
27113
27126
|
setNestedProperty(object, value, key) {
|
|
27114
27127
|
const nestedKeys = key.split('.');
|
|
27128
|
+
// Reject nested keys that would allow prototype pollution
|
|
27129
|
+
if (nestedKeys.some((nestedKey) => (nestedKey === '__proto__' || nestedKey === 'constructor'))) {
|
|
27130
|
+
return object;
|
|
27131
|
+
}
|
|
27115
27132
|
nestedKeys.reduce(function (result, key, i, arr) {
|
|
27116
27133
|
const isLastKey = arr.length - 1 === i;
|
|
27117
27134
|
result[key] = (isLastKey ?
|
|
27118
27135
|
value :
|
|
27119
|
-
|
|
27136
|
+
// Inherited objects are shared with everything else on
|
|
27137
|
+
// that prototype, so start a fresh one instead
|
|
27138
|
+
isObject(result[key], true) &&
|
|
27139
|
+
Object.hasOwnProperty.call(result, key) ?
|
|
27120
27140
|
result[key] :
|
|
27121
27141
|
{});
|
|
27122
27142
|
return result[key];
|
|
@@ -27198,15 +27218,10 @@ class Point {
|
|
|
27198
27218
|
*/
|
|
27199
27219
|
function update() {
|
|
27200
27220
|
point.applyOptions(options);
|
|
27201
|
-
// Update visuals, #4146
|
|
27202
|
-
//
|
|
27203
|
-
|
|
27204
|
-
const shouldDestroyGraphic = point.y === null ?
|
|
27205
|
-
!hasMockGraphic :
|
|
27206
|
-
hasMockGraphic;
|
|
27207
|
-
if (graphic && shouldDestroyGraphic) {
|
|
27221
|
+
// Update visuals, #4146. The a11y mock graphic is exempt, it is
|
|
27222
|
+
// maintained by the accessibility module, #12718.
|
|
27223
|
+
if (graphic && point.y === null && !point.hasMockGraphic) {
|
|
27208
27224
|
point.graphic = graphic.destroy();
|
|
27209
|
-
delete point.hasMockGraphic;
|
|
27210
27225
|
}
|
|
27211
27226
|
if (isObject(options, true)) {
|
|
27212
27227
|
// Destroy so we can get new elements
|
|
@@ -27221,7 +27236,7 @@ class Point {
|
|
|
27221
27236
|
point.dataLabel = point.dataLabel.destroy(); // #2468
|
|
27222
27237
|
}
|
|
27223
27238
|
}
|
|
27224
|
-
const pointOptions = point.optionsToObject(options);
|
|
27239
|
+
const index = point.index, pointOptions = point.optionsToObject(options);
|
|
27225
27240
|
if (!series.hasProcessedDataTable) {
|
|
27226
27241
|
// Record changes in the data table (#24451)
|
|
27227
27242
|
series.dataTable.setRow(pointOptions, index);
|
|
@@ -29225,19 +29240,18 @@ class Pointer {
|
|
|
29225
29240
|
if (hasMoved ?? true) {
|
|
29226
29241
|
this.pinch(e);
|
|
29227
29242
|
}
|
|
29243
|
+
// If inside, capture touch-drag and display tooltip. If not
|
|
29244
|
+
// inside, allow dragging the finger to scroll the page
|
|
29245
|
+
if (this.hasPointerCapture && // #25095
|
|
29246
|
+
e.type === 'touchmove' &&
|
|
29247
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29248
|
+
e.preventDefault();
|
|
29249
|
+
}
|
|
29228
29250
|
}
|
|
29229
29251
|
else if (start) {
|
|
29230
29252
|
// Hide the tooltip on touching outside the plot area (#1203)
|
|
29231
29253
|
this.reset();
|
|
29232
29254
|
}
|
|
29233
|
-
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29234
|
-
// allow dragging the finger to scroll the page
|
|
29235
|
-
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29236
|
-
isInside &&
|
|
29237
|
-
e.type === 'touchmove' &&
|
|
29238
|
-
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29239
|
-
e.preventDefault();
|
|
29240
|
-
}
|
|
29241
29255
|
}
|
|
29242
29256
|
else if (e.touches.length === 2) {
|
|
29243
29257
|
this.pinch(e);
|
|
@@ -29637,13 +29651,19 @@ const { setLength: DataTableCore_setLength, splice: DataTableCore_splice } = Dat
|
|
|
29637
29651
|
class DataTableCore {
|
|
29638
29652
|
constructor(options = {}) {
|
|
29639
29653
|
this.isDataTable = true;
|
|
29640
|
-
|
|
29654
|
+
// Reject IDs that would pollute the prototype of ID-keyed maps.
|
|
29655
|
+
const id = this.isPollutingKey(options.id) ? void 0 : options.id;
|
|
29656
|
+
this.autoId = !id;
|
|
29641
29657
|
this.columns = {};
|
|
29642
|
-
this.id = (
|
|
29658
|
+
this.id = (id || uniqueKey());
|
|
29643
29659
|
this.rowCount = 0;
|
|
29644
29660
|
this.versionTag = uniqueKey();
|
|
29645
29661
|
let rowCount = 0;
|
|
29646
29662
|
objectEach(options.columns || {}, (column, columnId) => {
|
|
29663
|
+
if (columnId === '__proto__' ||
|
|
29664
|
+
columnId === 'constructor') {
|
|
29665
|
+
return;
|
|
29666
|
+
}
|
|
29647
29667
|
this.columns[columnId] = column.slice();
|
|
29648
29668
|
rowCount = Math.max(rowCount, column.length);
|
|
29649
29669
|
});
|
|
@@ -29654,6 +29674,17 @@ class DataTableCore {
|
|
|
29654
29674
|
* Functions
|
|
29655
29675
|
*
|
|
29656
29676
|
* */
|
|
29677
|
+
/**
|
|
29678
|
+
* Checks whether a key would pollute the prototype if used to index a
|
|
29679
|
+
* plain object (e.g. as a column ID or table ID).
|
|
29680
|
+
*
|
|
29681
|
+
* @private
|
|
29682
|
+
* @param {string|undefined} key The key to check.
|
|
29683
|
+
* @return {boolean} True if the key is unsafe to use.
|
|
29684
|
+
*/
|
|
29685
|
+
isPollutingKey(key) {
|
|
29686
|
+
return key === '__proto__' || key === 'constructor';
|
|
29687
|
+
}
|
|
29657
29688
|
/**
|
|
29658
29689
|
* Applies a row count to the table by setting the `rowCount` property and
|
|
29659
29690
|
* adjusting the length of all columns.
|
|
@@ -29812,6 +29843,10 @@ class DataTableCore {
|
|
|
29812
29843
|
setColumns(columns, rowIndex, eventDetail) {
|
|
29813
29844
|
let rowCount = this.rowCount;
|
|
29814
29845
|
objectEach(columns, (column, columnId) => {
|
|
29846
|
+
if (columnId === '__proto__' ||
|
|
29847
|
+
columnId === 'constructor') {
|
|
29848
|
+
return;
|
|
29849
|
+
}
|
|
29815
29850
|
this.columns[columnId] = column.slice();
|
|
29816
29851
|
rowCount = column.length;
|
|
29817
29852
|
});
|
|
@@ -29850,11 +29885,14 @@ class DataTableCore {
|
|
|
29850
29885
|
* @emits #afterSetRows
|
|
29851
29886
|
*/
|
|
29852
29887
|
setRow(row, rowIndex = this.rowCount, insert, eventDetail) {
|
|
29853
|
-
var _a;
|
|
29854
29888
|
const { columns } = this, indexRowCount = insert ? this.rowCount + 1 : rowIndex + 1, rowKeys = Object.keys(row);
|
|
29855
29889
|
if (eventDetail?.addColumns !== false) {
|
|
29856
29890
|
for (let i = 0, iEnd = rowKeys.length; i < iEnd; i++) {
|
|
29857
|
-
|
|
29891
|
+
const rowKey = rowKeys[i];
|
|
29892
|
+
if (!this.isPollutingKey(rowKey) &&
|
|
29893
|
+
!Object.hasOwnProperty.call(columns, rowKey)) {
|
|
29894
|
+
columns[rowKey] = new Array(this.rowCount);
|
|
29895
|
+
}
|
|
29858
29896
|
}
|
|
29859
29897
|
}
|
|
29860
29898
|
objectEach(columns, (column, columnId) => {
|
|
@@ -33834,7 +33872,19 @@ class Series {
|
|
|
33834
33872
|
.optionsToObject
|
|
33835
33873
|
.call({ series: this }, data[i]);
|
|
33836
33874
|
for (const key of Object.keys(ptOptions)) {
|
|
33837
|
-
|
|
33875
|
+
// Assigning these would write through to
|
|
33876
|
+
// `Object.prototype` or the `Object` constructor instead
|
|
33877
|
+
// of creating a column, and thereby affect unrelated
|
|
33878
|
+
// objects on the page
|
|
33879
|
+
if (key === '__proto__' || key === 'constructor') {
|
|
33880
|
+
continue;
|
|
33881
|
+
}
|
|
33882
|
+
// Inherited keys like `toString` are truthy without being
|
|
33883
|
+
// columns of ours, so test for an own property rather
|
|
33884
|
+
// than for a value (#25321)
|
|
33885
|
+
if (!Object.hasOwnProperty.call(columns, key)) {
|
|
33886
|
+
columns[key] = new Array(dataLength);
|
|
33887
|
+
}
|
|
33838
33888
|
columns[key][i] = ptOptions[key];
|
|
33839
33889
|
}
|
|
33840
33890
|
}
|
|
@@ -34487,7 +34537,7 @@ class Series {
|
|
|
34487
34537
|
// Apply plotBorderRadius clipping
|
|
34488
34538
|
plotClipGroup?.clip(
|
|
34489
34539
|
// Navigator y-axis is not clippable
|
|
34490
|
-
clip && this.yAxis
|
|
34540
|
+
clip && this.yAxis?.clippable ?
|
|
34491
34541
|
chart.plotClipInner :
|
|
34492
34542
|
void 0);
|
|
34493
34543
|
}
|
|
@@ -34790,28 +34840,27 @@ class Series {
|
|
|
34790
34840
|
* @emits Highcharts.Series#event:destroy
|
|
34791
34841
|
*/
|
|
34792
34842
|
destroy(keepEventsForUpdate) {
|
|
34793
|
-
const series = this, chart = series.chart, issue134 = /AppleWebKit\/533/.test(Series_win.navigator.userAgent)
|
|
34794
|
-
let destroy,
|
|
34843
|
+
const series = this, chart = series.chart, issue134 = /AppleWebKit\/533/.test(Series_win.navigator.userAgent);
|
|
34844
|
+
let destroy, axis;
|
|
34795
34845
|
// Add event hook
|
|
34796
34846
|
fireEvent(series, 'destroy', { keepEventsForUpdate });
|
|
34797
34847
|
// Remove events
|
|
34798
34848
|
this.removeEvents(keepEventsForUpdate);
|
|
34799
34849
|
// Erase from axes
|
|
34800
|
-
(series.axisTypes || [])
|
|
34801
|
-
axis = series[
|
|
34850
|
+
for (const coll of (series.axisTypes || [])) {
|
|
34851
|
+
axis = series[coll];
|
|
34802
34852
|
if (axis?.series) {
|
|
34803
34853
|
erase(axis.series, series);
|
|
34804
34854
|
axis.isDirty = axis.forceRedraw = true;
|
|
34805
34855
|
}
|
|
34806
|
-
}
|
|
34856
|
+
}
|
|
34807
34857
|
// Remove legend items
|
|
34808
34858
|
if (series.legendItem) {
|
|
34809
34859
|
series.chart.legend.destroyItem(series);
|
|
34810
34860
|
}
|
|
34811
34861
|
// Destroy all points with their elements
|
|
34812
|
-
|
|
34813
|
-
|
|
34814
|
-
data[i]?.destroy?.(true);
|
|
34862
|
+
for (const point of series.points || []) {
|
|
34863
|
+
point?.destroy?.(true);
|
|
34815
34864
|
}
|
|
34816
34865
|
for (const zone of series.zones || []) {
|
|
34817
34866
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -38950,7 +38999,10 @@ class Chart {
|
|
|
38950
38999
|
elem = this.renderer.text(options.text, 0, 0, options.useHTML)
|
|
38951
39000
|
.attr({
|
|
38952
39001
|
align: options.align,
|
|
38953
|
-
'class':
|
|
39002
|
+
'class': [
|
|
39003
|
+
options.className,
|
|
39004
|
+
'highcharts-' + key
|
|
39005
|
+
].filter(isString).join(' '),
|
|
38954
39006
|
zIndex: options.zIndex || 4
|
|
38955
39007
|
})
|
|
38956
39008
|
.css({
|
|
@@ -39955,7 +40007,7 @@ class Chart {
|
|
|
39955
40007
|
if (label &&
|
|
39956
40008
|
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39957
40009
|
expectedSpace = label.getBBox().height +
|
|
39958
|
-
labels.distance +
|
|
40010
|
+
(labels.distance ?? 15) +
|
|
39959
40011
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
39960
40012
|
}
|
|
39961
40013
|
if (expectedSpace) {
|
|
@@ -40043,6 +40095,12 @@ class Chart {
|
|
|
40043
40095
|
addCredits(credits) {
|
|
40044
40096
|
const chart = this, creds = merge(true, this.options.credits, credits);
|
|
40045
40097
|
if (creds.enabled && !this.credits) {
|
|
40098
|
+
// Run the user-supplied URL through the allow list, so that
|
|
40099
|
+
// references like `javascript:` can't be executed from the
|
|
40100
|
+
// credits label
|
|
40101
|
+
const href = creds.href ?
|
|
40102
|
+
HTML_AST.filterUserAttributes({ href: creds.href }).href :
|
|
40103
|
+
void 0;
|
|
40046
40104
|
/**
|
|
40047
40105
|
* The chart's credits label. The label has an `update` method that
|
|
40048
40106
|
* allows setting new options as per the
|
|
@@ -40056,8 +40114,8 @@ class Chart {
|
|
|
40056
40114
|
.on('click', function (e) {
|
|
40057
40115
|
// Fire the event with browser redirect as default function
|
|
40058
40116
|
fireEvent(chart, 'creditsClick', e, () => {
|
|
40059
|
-
if (
|
|
40060
|
-
Chart_win.location.href =
|
|
40117
|
+
if (href) {
|
|
40118
|
+
Chart_win.location.href = href;
|
|
40061
40119
|
}
|
|
40062
40120
|
});
|
|
40063
40121
|
})
|
|
@@ -41674,14 +41732,11 @@ class StackItem {
|
|
|
41674
41732
|
*
|
|
41675
41733
|
* */
|
|
41676
41734
|
/** @internal */
|
|
41677
|
-
constructor(axis,
|
|
41678
|
-
const inverted = axis.chart.inverted, reversed = axis.reversed;
|
|
41735
|
+
constructor(axis, negativeValue, x, stackOption) {
|
|
41679
41736
|
this.axis = axis;
|
|
41680
41737
|
// The stack goes to the left either if the stack has negative value
|
|
41681
41738
|
// or when axis is reversed. XOR operator.
|
|
41682
|
-
|
|
41683
|
-
// Save the options to be able to style the label
|
|
41684
|
-
this.options = options = options || {};
|
|
41739
|
+
this.negativeValue = negativeValue;
|
|
41685
41740
|
// Save the x value to be able to position the label later
|
|
41686
41741
|
this.x = x;
|
|
41687
41742
|
// Initialize total value
|
|
@@ -41696,20 +41751,6 @@ class StackItem {
|
|
|
41696
41751
|
this.stack = stackOption;
|
|
41697
41752
|
this.leftCliff = 0;
|
|
41698
41753
|
this.rightCliff = 0;
|
|
41699
|
-
// The align options and text align varies on whether the stack is
|
|
41700
|
-
// negative and if the chart is inverted or not.
|
|
41701
|
-
// First test the user supplied value, then use the dynamic.
|
|
41702
|
-
this.alignOptions = {
|
|
41703
|
-
align: options.align ||
|
|
41704
|
-
(inverted ? (isNegative ? 'left' : 'right') : 'center'),
|
|
41705
|
-
verticalAlign: options.verticalAlign ||
|
|
41706
|
-
(inverted ? 'middle' : isNegative ? 'bottom' : 'top'),
|
|
41707
|
-
y: options.y,
|
|
41708
|
-
x: options.x
|
|
41709
|
-
};
|
|
41710
|
-
this.textAlign =
|
|
41711
|
-
options.textAlign ||
|
|
41712
|
-
(inverted ? (!isNegative ? 'left' : 'right') : 'center');
|
|
41713
41754
|
}
|
|
41714
41755
|
/* *
|
|
41715
41756
|
*
|
|
@@ -41725,39 +41766,34 @@ class StackItem {
|
|
|
41725
41766
|
* @internal
|
|
41726
41767
|
*/
|
|
41727
41768
|
render(group) {
|
|
41728
|
-
const
|
|
41769
|
+
const axis = this.axis, chart = axis.chart, options = axis.options.stackLabels || {}, formatOption = options.format,
|
|
41729
41770
|
// Format the text in the label.
|
|
41730
|
-
|
|
41771
|
+
text = (formatOption ?
|
|
41731
41772
|
StackItem_format(formatOption, this, chart) :
|
|
41732
|
-
options.formatter?.call(this, this)) || '';
|
|
41733
|
-
//
|
|
41734
|
-
|
|
41735
|
-
|
|
41736
|
-
|
|
41773
|
+
options.formatter?.call(this, this)) || '', verb = this.label ? 'animate' : 'attr';
|
|
41774
|
+
// Create new label
|
|
41775
|
+
this.label || (this.label = chart.renderer.label(text, 0, void 0, options.shape, void 0, void 0, options.useHTML, false, 'stack-labels'));
|
|
41776
|
+
const label = this.label, animatableAttribs = {
|
|
41777
|
+
r: options.borderRadius || 0,
|
|
41778
|
+
// Set default padding to 5 as it is in dataLabels #12308
|
|
41779
|
+
padding: (options.padding ?? 5)
|
|
41780
|
+
};
|
|
41781
|
+
if (!chart.styledMode) {
|
|
41782
|
+
animatableAttribs.fill = options.backgroundColor;
|
|
41783
|
+
animatableAttribs.stroke = options.borderColor;
|
|
41784
|
+
animatableAttribs['stroke-width'] = options.borderWidth;
|
|
41785
|
+
label.css(options.style || {});
|
|
41737
41786
|
}
|
|
41738
|
-
|
|
41739
|
-
|
|
41740
|
-
|
|
41741
|
-
|
|
41742
|
-
|
|
41743
|
-
|
|
41744
|
-
|
|
41745
|
-
padding: (options.padding ?? 5),
|
|
41746
|
-
visibility: 'hidden' // Hidden until setOffset is called
|
|
41747
|
-
};
|
|
41748
|
-
if (!chart.styledMode) {
|
|
41749
|
-
attr.fill = options.backgroundColor;
|
|
41750
|
-
attr.stroke = options.borderColor;
|
|
41751
|
-
attr['stroke-width'] = options.borderWidth;
|
|
41752
|
-
this.label.css(options.style || {});
|
|
41753
|
-
}
|
|
41754
|
-
this.label.attr(attr);
|
|
41755
|
-
if (!this.label.added) {
|
|
41756
|
-
this.label.add(group); // Add to the labels-group
|
|
41757
|
-
}
|
|
41787
|
+
label
|
|
41788
|
+
.attr({
|
|
41789
|
+
text,
|
|
41790
|
+
visibility: 'hidden' // Hidden until setOffset is called
|
|
41791
|
+
})[verb](animatableAttribs);
|
|
41792
|
+
if (!label.added) {
|
|
41793
|
+
label.add(group); // Add to the labels-group
|
|
41758
41794
|
}
|
|
41759
41795
|
// Rank it higher than data labels (#8742)
|
|
41760
|
-
|
|
41796
|
+
label.labelrank = chart.plotSizeY;
|
|
41761
41797
|
fireEvent(this, 'afterRender');
|
|
41762
41798
|
}
|
|
41763
41799
|
/**
|
|
@@ -41766,35 +41802,38 @@ class StackItem {
|
|
|
41766
41802
|
* @internal
|
|
41767
41803
|
*/
|
|
41768
41804
|
setOffset(xOffset, width, boxBottom, boxTop, defaultX, xAxis) {
|
|
41769
|
-
const {
|
|
41770
|
-
xOffset,
|
|
41771
|
-
width,
|
|
41805
|
+
const { axis, label } = this, chart = axis.chart, options = axis.options.stackLabels || {}, inverted = chart.inverted, isNegative = this.negativeValue !== !!axis.reversed, stackBox = this.getStackBox({
|
|
41772
41806
|
boxBottom,
|
|
41773
41807
|
boxTop,
|
|
41774
41808
|
defaultX,
|
|
41775
|
-
|
|
41776
|
-
|
|
41809
|
+
isNegative,
|
|
41810
|
+
width,
|
|
41811
|
+
xAxis,
|
|
41812
|
+
xOffset
|
|
41813
|
+
}), { align = (inverted ? (isNegative ? 'left' : 'right') : 'center'), verticalAlign = (inverted ? 'middle' : isNegative ? 'bottom' : 'top'), textAlign = (inverted ? (!isNegative ? 'left' : 'right') : 'center'), x = 0, y = 0 } = options, alignOptions = {
|
|
41814
|
+
align,
|
|
41815
|
+
verticalAlign,
|
|
41816
|
+
x,
|
|
41817
|
+
y
|
|
41818
|
+
};
|
|
41777
41819
|
if (label && stackBox) {
|
|
41778
41820
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41779
41821
|
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41780
|
-
// Reset alignOptions property after justify #12337
|
|
41781
|
-
alignOptions.x = options.x || 0;
|
|
41782
|
-
alignOptions.y = options.y || 0;
|
|
41783
41822
|
// Calculate the adjusted Stack position, to take into consideration
|
|
41784
|
-
//
|
|
41785
|
-
//
|
|
41786
|
-
//
|
|
41787
|
-
const { x, y } = this.adjustStackPosition({
|
|
41823
|
+
// the size if the labelBox and vertical alignment as well as the
|
|
41824
|
+
// text alignment. It needs to be done to work with default
|
|
41825
|
+
// SVGLabel.align/justify methods.
|
|
41826
|
+
const { x: adjustX, y: adjustY } = this.adjustStackPosition({
|
|
41788
41827
|
labelBox,
|
|
41789
41828
|
verticalAlign,
|
|
41790
41829
|
textAlign
|
|
41791
41830
|
});
|
|
41792
|
-
stackBox.x -=
|
|
41793
|
-
stackBox.y -=
|
|
41831
|
+
stackBox.x -= adjustX;
|
|
41832
|
+
stackBox.y -= adjustY;
|
|
41794
41833
|
// Align the label to the adjusted box.
|
|
41795
41834
|
label.align(alignOptions, false, stackBox);
|
|
41796
|
-
// Check if label is inside the plotArea #12294
|
|
41797
|
-
visible = chart.isInsidePlot(label.alignAttr.x +
|
|
41835
|
+
// Check if the label is inside the plotArea #12294
|
|
41836
|
+
visible = chart.isInsidePlot(label.alignAttr.x + x + adjustX, label.alignAttr.y + y + adjustY);
|
|
41798
41837
|
if (!visible) {
|
|
41799
41838
|
isJustify = false;
|
|
41800
41839
|
}
|
|
@@ -41802,11 +41841,8 @@ class StackItem {
|
|
|
41802
41841
|
// Justify stackLabel into the alignBox
|
|
41803
41842
|
StackItem_Series.prototype.justifyDataLabel.call(axis, label, alignOptions, label.alignAttr, labelBox, stackBox);
|
|
41804
41843
|
}
|
|
41805
|
-
// Add
|
|
41806
|
-
// Also add correct rotation with its rotation origin. #15129
|
|
41844
|
+
// Add correct rotation with its rotation origin (#15129)
|
|
41807
41845
|
label.attr({
|
|
41808
|
-
x: label.alignAttr.x,
|
|
41809
|
-
y: label.alignAttr.y,
|
|
41810
41846
|
rotation: options.rotation,
|
|
41811
41847
|
rotationOriginX: labelBox.width *
|
|
41812
41848
|
getAlignFactor(options.textAlign || 'center'),
|
|
@@ -41845,22 +41881,22 @@ class StackItem {
|
|
|
41845
41881
|
* The x, y, height, width of the stack.
|
|
41846
41882
|
*/
|
|
41847
41883
|
getStackBox(stackBoxProps) {
|
|
41848
|
-
const
|
|
41884
|
+
const axis = this.axis, chart = axis.chart, { boxBottom, boxTop, defaultX, isNegative, width, xOffset } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41849
41885
|
100 :
|
|
41850
41886
|
(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 ||
|
|
41851
41887
|
(isNumber(axis.min) &&
|
|
41852
41888
|
axis.logarithmic &&
|
|
41853
41889
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
41854
|
-
0), height = Math.abs(y - yZero), inverted = chart.inverted
|
|
41890
|
+
0), height = Math.abs(y - yZero), inverted = chart.inverted;
|
|
41855
41891
|
return inverted ?
|
|
41856
41892
|
{
|
|
41857
|
-
x: (
|
|
41893
|
+
x: (isNegative ? y : y - height) - chart.plotLeft,
|
|
41858
41894
|
y: xAxis.height - x - width + xAxis.top - chart.plotTop,
|
|
41859
41895
|
width: height,
|
|
41860
41896
|
height: width
|
|
41861
41897
|
} : {
|
|
41862
41898
|
x: x + xAxis.transB - chart.plotLeft,
|
|
41863
|
-
y: (
|
|
41899
|
+
y: (isNegative ? y - height : y) - chart.plotTop,
|
|
41864
41900
|
width: width,
|
|
41865
41901
|
height: height
|
|
41866
41902
|
};
|
|
@@ -41896,10 +41932,6 @@ class StackItem {
|
|
|
41896
41932
|
* @name Highcharts.StackItemObject#cumulative
|
|
41897
41933
|
* @type {number}
|
|
41898
41934
|
*/ /**
|
|
41899
|
-
* True if on the negative side
|
|
41900
|
-
* @name Highcharts.StackItemObject#isNegative
|
|
41901
|
-
* @type {boolean}
|
|
41902
|
-
*/ /**
|
|
41903
41935
|
* Related SVG element
|
|
41904
41936
|
* @name Highcharts.StackItemObject#label
|
|
41905
41937
|
* @type {Highcharts.SVGElement}
|
|
@@ -42116,7 +42148,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
42116
42148
|
stacks[key][x].total = null;
|
|
42117
42149
|
}
|
|
42118
42150
|
else {
|
|
42119
|
-
stacks[key][x] = new Stacking_StackItem(axis,
|
|
42151
|
+
stacks[key][x] = new Stacking_StackItem(axis, !!isNegative, x, stackOption);
|
|
42120
42152
|
}
|
|
42121
42153
|
}
|
|
42122
42154
|
// If the StackItem doesn't exist, create it first
|
|
@@ -42273,29 +42305,41 @@ class AxisAdditions {
|
|
|
42273
42305
|
});
|
|
42274
42306
|
});
|
|
42275
42307
|
}
|
|
42276
|
-
/**
|
|
42308
|
+
/**
|
|
42309
|
+
* Create the stack totals group and render the individual labels into it
|
|
42310
|
+
* @internal
|
|
42311
|
+
*/
|
|
42277
42312
|
renderStackTotals() {
|
|
42278
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks,
|
|
42279
|
-
|
|
42280
|
-
|
|
42281
|
-
|
|
42282
|
-
|
|
42283
|
-
|
|
42284
|
-
|
|
42285
|
-
|
|
42286
|
-
|
|
42287
|
-
|
|
42288
|
-
|
|
42289
|
-
|
|
42290
|
-
|
|
42291
|
-
|
|
42292
|
-
|
|
42293
|
-
|
|
42313
|
+
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 ||
|
|
42314
|
+
(enabled ?
|
|
42315
|
+
renderer
|
|
42316
|
+
.g('stack-labels')
|
|
42317
|
+
.attr({
|
|
42318
|
+
zIndex: 6,
|
|
42319
|
+
opacity: 0
|
|
42320
|
+
})
|
|
42321
|
+
.add() :
|
|
42322
|
+
void 0));
|
|
42323
|
+
if (stackTotalGroup) {
|
|
42324
|
+
// The plotLeft/Top will change when y axis gets wider so we need to
|
|
42325
|
+
// translate the stackTotalGroup at every render call. See bug #506
|
|
42326
|
+
// and #516
|
|
42327
|
+
stackTotalGroup.translate(chart.plotLeft, chart.plotTop);
|
|
42328
|
+
// Render each stack total
|
|
42329
|
+
objectEach(stacks, (type) => {
|
|
42330
|
+
objectEach(type, (stack) => {
|
|
42331
|
+
if (enabled) {
|
|
42332
|
+
stack.render(stackTotalGroup);
|
|
42333
|
+
}
|
|
42334
|
+
else {
|
|
42335
|
+
stack.label = stack.label?.destroy();
|
|
42336
|
+
}
|
|
42337
|
+
});
|
|
42294
42338
|
});
|
|
42295
|
-
|
|
42296
|
-
|
|
42297
|
-
|
|
42298
|
-
}
|
|
42339
|
+
stackTotalGroup.animate({
|
|
42340
|
+
opacity: 1
|
|
42341
|
+
}, animationConfig);
|
|
42342
|
+
}
|
|
42299
42343
|
}
|
|
42300
42344
|
}
|
|
42301
42345
|
/* *
|
|
@@ -42617,7 +42661,6 @@ Series_SeriesRegistry.registerSeriesType('line', LineSeries);
|
|
|
42617
42661
|
* specified, it is inherited from [chart.type](#chart.type).
|
|
42618
42662
|
*
|
|
42619
42663
|
* @extends series,plotOptions.line
|
|
42620
|
-
* @excluding dataParser,dataURL
|
|
42621
42664
|
* @product highcharts highstock
|
|
42622
42665
|
* @apioption series.line
|
|
42623
42666
|
*/
|
|
@@ -42991,7 +43034,7 @@ const AreaSeriesDefaults = {
|
|
|
42991
43034
|
* specified, it is inherited from [chart.type](#chart.type).
|
|
42992
43035
|
*
|
|
42993
43036
|
* @extends series,plotOptions.area
|
|
42994
|
-
* @excluding
|
|
43037
|
+
* @excluding useOhlcData
|
|
42995
43038
|
* @product highcharts highstock
|
|
42996
43039
|
* @apioption series.area
|
|
42997
43040
|
*/
|
|
@@ -43628,7 +43671,7 @@ Series_SeriesRegistry.registerSeriesType('spline', SplineSeries);
|
|
|
43628
43671
|
* not specified, it is inherited from [chart.type](#chart.type).
|
|
43629
43672
|
*
|
|
43630
43673
|
* @extends series,plotOptions.spline
|
|
43631
|
-
* @excluding
|
|
43674
|
+
* @excluding step, boostThreshold, boostBlending
|
|
43632
43675
|
* @product highcharts highstock
|
|
43633
43676
|
* @apioption series.spline
|
|
43634
43677
|
*/
|
|
@@ -43790,7 +43833,7 @@ Series_SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);
|
|
|
43790
43833
|
*
|
|
43791
43834
|
*
|
|
43792
43835
|
* @extends series,plotOptions.areaspline
|
|
43793
|
-
* @excluding
|
|
43836
|
+
* @excluding step, boostThreshold, boostBlending
|
|
43794
43837
|
* @product highcharts highstock
|
|
43795
43838
|
* @apioption series.areaspline
|
|
43796
43839
|
*/
|
|
@@ -44067,13 +44110,16 @@ const ColumnSeriesDefaults = {
|
|
|
44067
44110
|
* The minimal height for a column or width for a bar. By default,
|
|
44068
44111
|
* 0 values are not shown. To visualize a 0 (or close to zero) point,
|
|
44069
44112
|
* set the minimal point length to a pixel value like 3\. In stacked
|
|
44070
|
-
* column charts,
|
|
44071
|
-
* packed values.
|
|
44113
|
+
* column charts, the length is applied to each point in isolation, so
|
|
44114
|
+
* tightly packed values may overlap. See the stacked sample below for a
|
|
44115
|
+
* plugin that lays out the stack as a whole instead.
|
|
44072
44116
|
*
|
|
44073
44117
|
* @sample {highcharts} highcharts/plotoptions/column-minpointlength/
|
|
44074
44118
|
* Zero base value
|
|
44075
44119
|
* @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/
|
|
44076
44120
|
* Positive and negative close to zero values
|
|
44121
|
+
* @sample {highcharts} highcharts/plotoptions/column-minpointlength-stacked/
|
|
44122
|
+
* Stack-aware minimum length
|
|
44077
44123
|
*
|
|
44078
44124
|
* @product highcharts highstock gantt
|
|
44079
44125
|
*/
|
|
@@ -44244,7 +44290,7 @@ const ColumnSeriesDefaults = {
|
|
|
44244
44290
|
* not specified, it is inherited from [chart.type](#chart.type).
|
|
44245
44291
|
*
|
|
44246
44292
|
* @extends series,plotOptions.column
|
|
44247
|
-
* @excluding connectNulls,
|
|
44293
|
+
* @excluding connectNulls, gapSize, gapUnit, linecap,
|
|
44248
44294
|
* lineWidth, marker, connectEnds, step
|
|
44249
44295
|
* @product highcharts highstock
|
|
44250
44296
|
* @apioption series.column
|
|
@@ -45888,7 +45934,7 @@ Series_SeriesRegistry.registerSeriesType('bar', BarSeries);
|
|
|
45888
45934
|
* it is inherited from [chart.type](#chart.type).
|
|
45889
45935
|
*
|
|
45890
45936
|
* @extends series,plotOptions.bar
|
|
45891
|
-
* @excluding connectNulls, dashStyle,
|
|
45937
|
+
* @excluding connectNulls, dashStyle, gapSize, gapUnit,
|
|
45892
45938
|
* linecap, lineWidth, marker, connectEnds, step
|
|
45893
45939
|
* @product highcharts
|
|
45894
45940
|
* @apioption series.bar
|
|
@@ -46089,7 +46135,7 @@ const ScatterSeriesDefaults = {
|
|
|
46089
46135
|
* not specified, it is inherited from [chart.type](#chart.type).
|
|
46090
46136
|
*
|
|
46091
46137
|
* @extends series,plotOptions.scatter
|
|
46092
|
-
* @excluding cropThreshold,
|
|
46138
|
+
* @excluding cropThreshold, useOhlcData
|
|
46093
46139
|
* @product highcharts highstock
|
|
46094
46140
|
* @apioption series.scatter
|
|
46095
46141
|
*/
|
|
@@ -47191,7 +47237,7 @@ const PieSeriesDefaults = {
|
|
|
47191
47237
|
* it is inherited from [chart.type](#chart.type).
|
|
47192
47238
|
*
|
|
47193
47239
|
* @extends series,plotOptions.pie
|
|
47194
|
-
* @excluding cropThreshold,
|
|
47240
|
+
* @excluding cropThreshold, linkedTo, stack, xAxis, yAxis,
|
|
47195
47241
|
* dataSorting, step, boostThreshold, boostBlending
|
|
47196
47242
|
* @product highcharts highmaps
|
|
47197
47243
|
* @apioption series.pie
|
|
@@ -48292,6 +48338,7 @@ var GeometryUtilities;
|
|
|
48292
48338
|
* */
|
|
48293
48339
|
|
|
48294
48340
|
|
|
48341
|
+
|
|
48295
48342
|
const { pointInPolygon } = Geometry_GeometryUtilities;
|
|
48296
48343
|
|
|
48297
48344
|
/* *
|
|
@@ -48432,30 +48479,34 @@ function composeOverlappingDataLabels(ChartClass) {
|
|
|
48432
48479
|
* Whether label is affected
|
|
48433
48480
|
*/
|
|
48434
48481
|
function hideOrShow(label, chart) {
|
|
48435
|
-
let
|
|
48482
|
+
let isLabelAffected = false;
|
|
48436
48483
|
if (label) {
|
|
48437
|
-
newOpacity = label.newOpacity;
|
|
48484
|
+
const newOpacity = label.newOpacity, isDataLabel = label.hasClass('highcharts-data-label');
|
|
48485
|
+
// For tick labels, we need to stop running animations otherwise they
|
|
48486
|
+
// may continue to run after we set the new opacity
|
|
48487
|
+
if (!isDataLabel) {
|
|
48488
|
+
stop(label, 'opacity');
|
|
48489
|
+
}
|
|
48438
48490
|
if (label.oldOpacity !== newOpacity) {
|
|
48439
48491
|
// Toggle data labels
|
|
48440
|
-
if (
|
|
48492
|
+
if (isDataLabel) {
|
|
48441
48493
|
// Make sure the label is completely hidden to avoid catching
|
|
48442
48494
|
// clicks (#4362)
|
|
48443
48495
|
label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');
|
|
48444
|
-
|
|
48496
|
+
isLabelAffected = true;
|
|
48497
|
+
// Animate or set the opacity
|
|
48498
|
+
label[label.isOld || label.placed ? 'animate' : 'attr']({ opacity: newOpacity }, void 0, () => {
|
|
48445
48499
|
if (!chart.styledMode) {
|
|
48446
48500
|
label.css({
|
|
48447
48501
|
pointerEvents: newOpacity ? 'auto' : 'none'
|
|
48448
48502
|
});
|
|
48449
48503
|
}
|
|
48450
|
-
};
|
|
48451
|
-
isLabelAffected = true;
|
|
48452
|
-
// Animate or set the opacity
|
|
48453
|
-
label[label.isOld || label.placed ? 'animate' : 'attr']({ opacity: newOpacity }, void 0, complete);
|
|
48504
|
+
});
|
|
48454
48505
|
fireEvent(chart, 'afterHideOverlappingLabel');
|
|
48455
|
-
// Toggle other labels
|
|
48506
|
+
// Toggle other labels - tick labels, stack labels
|
|
48456
48507
|
}
|
|
48457
48508
|
else {
|
|
48458
|
-
label.attr({
|
|
48509
|
+
label[label.placed ? 'animate' : 'attr']({
|
|
48459
48510
|
opacity: newOpacity
|
|
48460
48511
|
});
|
|
48461
48512
|
}
|
|
@@ -48471,25 +48522,37 @@ function hideOrShow(label, chart) {
|
|
|
48471
48522
|
* @internal
|
|
48472
48523
|
*/
|
|
48473
48524
|
function OverlappingDataLabels_onChartRender() {
|
|
48474
|
-
const chart = this
|
|
48525
|
+
const chart = this,
|
|
48526
|
+
// Helper function for data labels and stack labels when dynamicly
|
|
48527
|
+
// toggling the allowOverlap option
|
|
48528
|
+
toggle = (label, allowOverlap) => {
|
|
48529
|
+
// Allow overlap, reset opacity and show
|
|
48530
|
+
if (allowOverlap) {
|
|
48531
|
+
label.oldOpacity = label.opacity;
|
|
48532
|
+
label.newOpacity = 1;
|
|
48533
|
+
hideOrShow(label, chart);
|
|
48534
|
+
// Do not allow overlap
|
|
48535
|
+
}
|
|
48536
|
+
else {
|
|
48537
|
+
labels.push(label);
|
|
48538
|
+
}
|
|
48539
|
+
};
|
|
48475
48540
|
let labels = [];
|
|
48476
48541
|
// Consider external label collectors
|
|
48477
48542
|
for (const collector of (chart.labelCollectors || [])) {
|
|
48478
48543
|
labels = labels.concat(collector());
|
|
48479
48544
|
}
|
|
48480
|
-
|
|
48481
|
-
|
|
48482
|
-
|
|
48483
|
-
|
|
48484
|
-
|
|
48485
|
-
|
|
48486
|
-
|
|
48487
|
-
labels.push(stackItem.label);
|
|
48488
|
-
}
|
|
48489
|
-
});
|
|
48545
|
+
// Stack labels
|
|
48546
|
+
for (const { options, stacking } of (chart.yAxis || [])) {
|
|
48547
|
+
objectEach(stacking?.stacks, (stack) => {
|
|
48548
|
+
objectEach(stack, ({ label }) => {
|
|
48549
|
+
if (label) {
|
|
48550
|
+
toggle(label, options.stackLabels?.allowOverlap);
|
|
48551
|
+
}
|
|
48490
48552
|
});
|
|
48491
|
-
}
|
|
48553
|
+
});
|
|
48492
48554
|
}
|
|
48555
|
+
// Series data labels
|
|
48493
48556
|
for (const series of (chart.series || [])) {
|
|
48494
48557
|
if (series.visible && series.hasDataLabels?.()) { // #3866
|
|
48495
48558
|
const push = (points) => {
|
|
@@ -48518,21 +48581,13 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48518
48581
|
}
|
|
48519
48582
|
*/
|
|
48520
48583
|
// Allow overlap if the option is explicitly true
|
|
48521
|
-
|
|
48584
|
+
toggle(label, (
|
|
48522
48585
|
// #13449
|
|
48523
48586
|
options.allowOverlap ??
|
|
48524
48587
|
// Pie labels outside have a separate placement
|
|
48525
48588
|
// logic, skip the overlap logic
|
|
48526
48589
|
(series.is('pie') &&
|
|
48527
|
-
Number(options.distance) > 0))
|
|
48528
|
-
label.oldOpacity = label.opacity;
|
|
48529
|
-
label.newOpacity = 1;
|
|
48530
|
-
hideOrShow(label, chart);
|
|
48531
|
-
// Do not allow overlap
|
|
48532
|
-
}
|
|
48533
|
-
else {
|
|
48534
|
-
labels.push(label);
|
|
48535
|
-
}
|
|
48590
|
+
Number(options.distance) > 0)));
|
|
48536
48591
|
});
|
|
48537
48592
|
}
|
|
48538
48593
|
}
|
|
@@ -49208,7 +49263,7 @@ var Responsive;
|
|
|
49208
49263
|
;// ./code/es-modules/masters/highcharts.src.js
|
|
49209
49264
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
49210
49265
|
/**
|
|
49211
|
-
* @license Highcharts JS v13.0
|
|
49266
|
+
* @license Highcharts JS v13.1.0 (2026-09-18)
|
|
49212
49267
|
* @module highcharts/highcharts
|
|
49213
49268
|
*
|
|
49214
49269
|
* (c) 2009-2026 Highsoft AS
|
|
@@ -50248,7 +50303,8 @@ function compose(ChartClass, NavigatorClass) {
|
|
|
50248
50303
|
const chartProto = ChartClass.prototype;
|
|
50249
50304
|
NavigatorConstructor = NavigatorClass;
|
|
50250
50305
|
chartProto.callbacks.push(onChartCallback);
|
|
50251
|
-
addEvent(ChartClass, 'afterAddSeries',
|
|
50306
|
+
addEvent(ChartClass, 'afterAddSeries', resetBaseSeries);
|
|
50307
|
+
addEvent(ChartClass, 'afterDrillUp', resetBaseSeries);
|
|
50252
50308
|
addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);
|
|
50253
50309
|
addEvent(ChartClass, 'afterUpdate', onChartAfterUpdate);
|
|
50254
50310
|
addEvent(ChartClass, 'beforeRender', onChartBeforeRender);
|
|
@@ -50257,13 +50313,12 @@ function compose(ChartClass, NavigatorClass) {
|
|
|
50257
50313
|
}
|
|
50258
50314
|
}
|
|
50259
50315
|
/**
|
|
50260
|
-
*
|
|
50316
|
+
* Reset the base series.
|
|
50261
50317
|
* @internal
|
|
50262
50318
|
*/
|
|
50263
|
-
function
|
|
50319
|
+
function resetBaseSeries() {
|
|
50264
50320
|
if (this.navigator) {
|
|
50265
|
-
|
|
50266
|
-
this.navigator.setBaseSeries(null, false);
|
|
50321
|
+
this.navigator.setBaseSeries(void 0, false);
|
|
50267
50322
|
}
|
|
50268
50323
|
}
|
|
50269
50324
|
/**
|
|
@@ -50412,7 +50467,7 @@ const ChartNavigatorComposition = {
|
|
|
50412
50467
|
* */
|
|
50413
50468
|
|
|
50414
50469
|
|
|
50415
|
-
const { isTouchDevice: NavigatorAxisComposition_isTouchDevice } = Core_Globals;
|
|
50470
|
+
const { composed: NavigatorAxisComposition_composed, isTouchDevice: NavigatorAxisComposition_isTouchDevice } = Core_Globals;
|
|
50416
50471
|
|
|
50417
50472
|
/* *
|
|
50418
50473
|
*
|
|
@@ -50478,8 +50533,7 @@ class NavigatorAxisAdditions {
|
|
|
50478
50533
|
*
|
|
50479
50534
|
* */
|
|
50480
50535
|
static compose(AxisClass) {
|
|
50481
|
-
if (
|
|
50482
|
-
AxisClass.keepProps.push('navigatorAxis');
|
|
50536
|
+
if (pushUnique(NavigatorAxisComposition_composed, 'Axis.Navigator')) {
|
|
50483
50537
|
addEvent(AxisClass, 'init', NavigatorAxisComposition_onAxisInit);
|
|
50484
50538
|
addEvent(AxisClass, 'setExtremes', onAxisSetExtremes);
|
|
50485
50539
|
}
|
|
@@ -51351,6 +51405,9 @@ var ScrollbarAxis;
|
|
|
51351
51405
|
}
|
|
51352
51406
|
});
|
|
51353
51407
|
}
|
|
51408
|
+
else if (axis.scrollbar) {
|
|
51409
|
+
axis.scrollbar = axis.scrollbar.destroy();
|
|
51410
|
+
}
|
|
51354
51411
|
}
|
|
51355
51412
|
/**
|
|
51356
51413
|
* Wrap rendering axis, and update scrollbar if one is created.
|
|
@@ -51488,14 +51545,12 @@ var ScrollbarAxis;
|
|
|
51488
51545
|
*/
|
|
51489
51546
|
const ScrollbarDefaults = {
|
|
51490
51547
|
/**
|
|
51491
|
-
* The height of the scrollbar. If `buttonsEnabled` is true
|
|
51548
|
+
* The height of the scrollbar. If `buttonsEnabled` is true, the height
|
|
51492
51549
|
* also applies to the width of the scroll arrows so that they are always
|
|
51493
51550
|
* squares.
|
|
51494
51551
|
*
|
|
51495
51552
|
* @sample stock/scrollbar/style/
|
|
51496
51553
|
* Non-default height
|
|
51497
|
-
*
|
|
51498
|
-
* @type {number}
|
|
51499
51554
|
*/
|
|
51500
51555
|
height: 10,
|
|
51501
51556
|
/**
|
|
@@ -53802,11 +53857,7 @@ class Navigator {
|
|
|
53802
53857
|
erase(this.chart.axes, this.yAxis);
|
|
53803
53858
|
}
|
|
53804
53859
|
// Destroy series
|
|
53805
|
-
(this.series || [])
|
|
53806
|
-
if (s.destroy) {
|
|
53807
|
-
s.destroy();
|
|
53808
|
-
}
|
|
53809
|
-
});
|
|
53860
|
+
destroyObjectProperties(this.series || []);
|
|
53810
53861
|
// Destroy properties
|
|
53811
53862
|
[
|
|
53812
53863
|
'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',
|
|
@@ -54643,8 +54694,8 @@ function RangeSelectorComposition_onChartUpdate(e) {
|
|
|
54643
54694
|
this.options.rangeSelector.enabled = true;
|
|
54644
54695
|
this.rangeSelector = rangeSelector = new RangeSelectorConstructor(this);
|
|
54645
54696
|
}
|
|
54646
|
-
this.extraBottomMargin =
|
|
54647
|
-
this.extraTopMargin =
|
|
54697
|
+
this.extraBottomMargin = void 0;
|
|
54698
|
+
this.extraTopMargin = void 0;
|
|
54648
54699
|
if (rangeSelector) {
|
|
54649
54700
|
const verticalAlign = (optionsRangeSelector &&
|
|
54650
54701
|
optionsRangeSelector.verticalAlign) || (rangeSelector.options && rangeSelector.options.verticalAlign);
|
|
@@ -56348,7 +56399,7 @@ function getCurvedPath(pathParams) {
|
|
|
56348
56399
|
}
|
|
56349
56400
|
/**
|
|
56350
56401
|
* General function to apply corner radius to a path
|
|
56351
|
-
* @
|
|
56402
|
+
* @internal
|
|
56352
56403
|
*/
|
|
56353
56404
|
function applyRadius(path, r) {
|
|
56354
56405
|
const d = [];
|
|
@@ -56401,10 +56452,12 @@ function applyRadius(path, r) {
|
|
|
56401
56452
|
}
|
|
56402
56453
|
return d;
|
|
56403
56454
|
}
|
|
56455
|
+
/** @internal */
|
|
56404
56456
|
const PathUtilities = {
|
|
56405
56457
|
applyRadius,
|
|
56406
56458
|
getLinkPath
|
|
56407
56459
|
};
|
|
56460
|
+
/** @internal */
|
|
56408
56461
|
/* harmony default export */ const Series_PathUtilities = (PathUtilities);
|
|
56409
56462
|
|
|
56410
56463
|
;// ./code/es-modules/Gantt/PathfinderAlgorithms.js
|
|
@@ -58096,7 +58149,7 @@ Pathfinder.prototype.algorithms = PathfinderAlgorithms;
|
|
|
58096
58149
|
/* unused harmony import specifier */ var Highcharts;
|
|
58097
58150
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
58098
58151
|
/**
|
|
58099
|
-
* @license Highcharts Gantt JS v13.0
|
|
58152
|
+
* @license Highcharts Gantt JS v13.1.0 (2026-09-18)
|
|
58100
58153
|
* @module highcharts/modules/pathfinder
|
|
58101
58154
|
* @requires highcharts
|
|
58102
58155
|
*
|
|
@@ -58180,17 +58233,19 @@ function chartAdjustHeight() {
|
|
|
58180
58233
|
}
|
|
58181
58234
|
// Make sure clip rects have the right height before initial
|
|
58182
58235
|
// animation.
|
|
58183
|
-
|
|
58184
|
-
|
|
58185
|
-
|
|
58186
|
-
|
|
58187
|
-
clipRect
|
|
58188
|
-
|
|
58189
|
-
|
|
58190
|
-
|
|
58191
|
-
|
|
58192
|
-
|
|
58193
|
-
|
|
58236
|
+
if (!chart.initiatedScale) {
|
|
58237
|
+
axis.series.forEach((series) => {
|
|
58238
|
+
const clipRect = series.sharedClipKey &&
|
|
58239
|
+
chart.sharedClips[series.sharedClipKey];
|
|
58240
|
+
if (clipRect) {
|
|
58241
|
+
clipRect.attr(chart.inverted ? {
|
|
58242
|
+
width: chart.plotHeight
|
|
58243
|
+
} : {
|
|
58244
|
+
height: chart.plotHeight
|
|
58245
|
+
});
|
|
58246
|
+
}
|
|
58247
|
+
});
|
|
58248
|
+
}
|
|
58194
58249
|
}
|
|
58195
58250
|
}
|
|
58196
58251
|
this.initiatedScale = true;
|
|
@@ -58227,7 +58282,7 @@ function chartAdjustHeight() {
|
|
|
58227
58282
|
/* unused harmony import specifier */ var static_scale_src_Highcharts;
|
|
58228
58283
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
58229
58284
|
/**
|
|
58230
|
-
* @license Highcharts Gantt JS v13.0
|
|
58285
|
+
* @license Highcharts Gantt JS v13.1.0 (2026-09-18)
|
|
58231
58286
|
* @module highcharts/modules/static-scale
|
|
58232
58287
|
* @requires highcharts
|
|
58233
58288
|
*
|
|
@@ -59043,7 +59098,7 @@ Series_SeriesRegistry.registerSeriesType('xrange', XRangeSeries);
|
|
|
59043
59098
|
/* unused harmony import specifier */ var xrange_src_Highcharts;
|
|
59044
59099
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
59045
59100
|
/**
|
|
59046
|
-
* @license Highcharts JS v13.0
|
|
59101
|
+
* @license Highcharts JS v13.1.0 (2026-09-18)
|
|
59047
59102
|
* @module highcharts/modules/xrange
|
|
59048
59103
|
* @requires highcharts
|
|
59049
59104
|
*
|
|
@@ -59384,6 +59439,8 @@ const GanttSeriesDefaults = {
|
|
|
59384
59439
|
* */
|
|
59385
59440
|
|
|
59386
59441
|
|
|
59442
|
+
const { composed: BrokenAxis_composed } = Core_Globals;
|
|
59443
|
+
|
|
59387
59444
|
|
|
59388
59445
|
/* *
|
|
59389
59446
|
*
|
|
@@ -59411,8 +59468,7 @@ var BrokenAxis;
|
|
|
59411
59468
|
* @internal
|
|
59412
59469
|
*/
|
|
59413
59470
|
function compose(AxisClass, SeriesClass) {
|
|
59414
|
-
if (
|
|
59415
|
-
AxisClass.keepProps.push('brokenAxis');
|
|
59471
|
+
if (pushUnique(BrokenAxis_composed, 'Axis.Broken')) {
|
|
59416
59472
|
addEvent(AxisClass, 'init', onAxisInit);
|
|
59417
59473
|
addEvent(AxisClass, 'afterInit', onAxisAfterInit);
|
|
59418
59474
|
addEvent(AxisClass, 'afterSetTickPositions', onAxisAfterSetTickPositions);
|
|
@@ -59630,7 +59686,7 @@ var BrokenAxis;
|
|
|
59630
59686
|
});
|
|
59631
59687
|
// For stacked chart generate empty stack items, #6546
|
|
59632
59688
|
if (yAxis.stacking && this.options.stacking) {
|
|
59633
|
-
stack = yAxis.stacking.stacks[this.stackKey][xRange] = new Stacking_StackItem(yAxis,
|
|
59689
|
+
stack = yAxis.stacking.stacks[this.stackKey][xRange] = new Stacking_StackItem(yAxis, false, xRange, this.stack ?? '');
|
|
59634
59690
|
stack.total = 0;
|
|
59635
59691
|
}
|
|
59636
59692
|
}
|
|
@@ -60007,7 +60063,7 @@ var BrokenAxis;
|
|
|
60007
60063
|
|
|
60008
60064
|
|
|
60009
60065
|
|
|
60010
|
-
const { dateFormats: GridAxis_dateFormats } = Core_Globals;
|
|
60066
|
+
const { composed: GridAxis_composed, dateFormats: GridAxis_dateFormats } = Core_Globals;
|
|
60011
60067
|
|
|
60012
60068
|
|
|
60013
60069
|
/* *
|
|
@@ -60071,8 +60127,7 @@ function applyGridOptions(axis) {
|
|
|
60071
60127
|
* @internal
|
|
60072
60128
|
*/
|
|
60073
60129
|
function GridAxis_compose(AxisClass, ChartClass, TickClass) {
|
|
60074
|
-
if (
|
|
60075
|
-
AxisClass.keepProps.push('grid');
|
|
60130
|
+
if (pushUnique(GridAxis_composed, 'Axis.Grid')) {
|
|
60076
60131
|
AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
|
|
60077
60132
|
wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
|
|
60078
60133
|
wrap(AxisClass.prototype, 'getOffset', wrapGetOffset);
|
|
@@ -60212,13 +60267,19 @@ function onAfterGetTitlePosition(e) {
|
|
|
60212
60267
|
}
|
|
60213
60268
|
/** @internal */
|
|
60214
60269
|
function onAfterInit() {
|
|
60270
|
+
var _a;
|
|
60215
60271
|
const axis = this;
|
|
60216
60272
|
const { chart, options: { grid: gridOptions = {} }, userOptions } = axis;
|
|
60217
60273
|
if (gridOptions.enabled) {
|
|
60218
60274
|
applyGridOptions(axis);
|
|
60219
60275
|
}
|
|
60220
60276
|
if (gridOptions.columns) {
|
|
60221
|
-
|
|
60277
|
+
(_a = axis.grid).columns || (_a.columns = []);
|
|
60278
|
+
const columns = axis.grid.columns;
|
|
60279
|
+
// Destroy existing columns. In a future update we could consider
|
|
60280
|
+
// matching and updating existing columns instead of recreating all.
|
|
60281
|
+
columns.forEach((column) => column.destroy());
|
|
60282
|
+
columns.length = 0;
|
|
60222
60283
|
let columnIndex = axis.grid.columnIndex = 0;
|
|
60223
60284
|
// Handle columns, each column is a grid axis
|
|
60224
60285
|
while (++columnIndex < gridOptions.columns.length) {
|
|
@@ -60630,11 +60691,10 @@ function onAfterSetScale() {
|
|
|
60630
60691
|
* @internal
|
|
60631
60692
|
*/
|
|
60632
60693
|
function onAfterTickSize(e) {
|
|
60633
|
-
const { horiz, maxLabelDimensions, options
|
|
60634
|
-
if (
|
|
60635
|
-
const labelPadding =
|
|
60636
|
-
|
|
60637
|
-
(gridOptions.cellHeight ||
|
|
60694
|
+
const { horiz, maxLabelDimensions, options } = this, { labels, grid = {} } = options;
|
|
60695
|
+
if (grid.enabled && maxLabelDimensions) {
|
|
60696
|
+
const labelPadding = (labels.distance ?? 15) * 2, distance = horiz ?
|
|
60697
|
+
(grid.cellHeight ||
|
|
60638
60698
|
labelPadding + maxLabelDimensions.height) :
|
|
60639
60699
|
labelPadding + maxLabelDimensions.width;
|
|
60640
60700
|
if (isArray(e.tickSize)) {
|
|
@@ -60655,14 +60715,14 @@ function GridAxis_onChartAfterSetChartSize() {
|
|
|
60655
60715
|
});
|
|
60656
60716
|
}
|
|
60657
60717
|
/** @internal */
|
|
60658
|
-
function onDestroy(
|
|
60718
|
+
function onDestroy() {
|
|
60659
60719
|
const { grid } = this;
|
|
60660
60720
|
// Axes created before the Gantt module was loaded have no grid
|
|
60661
60721
|
// additions to be destroyed (#24644).
|
|
60662
60722
|
if (!grid) {
|
|
60663
60723
|
return;
|
|
60664
60724
|
}
|
|
60665
|
-
(grid.columns || []).forEach((column) => column.destroy(
|
|
60725
|
+
(grid.columns || []).forEach((column) => column.destroy());
|
|
60666
60726
|
grid.columns = void 0;
|
|
60667
60727
|
}
|
|
60668
60728
|
/**
|
|
@@ -60830,7 +60890,7 @@ function onTrimTicks() {
|
|
|
60830
60890
|
max > beforeLastPos);
|
|
60831
60891
|
if (gridOptions.enabled === true &&
|
|
60832
60892
|
!categoryAxis &&
|
|
60833
|
-
(axis.isXAxis || axis.
|
|
60893
|
+
(axis.isXAxis || axis.linkedParent)) {
|
|
60834
60894
|
if ((endMoreThanMin || startLessThanMin) && !options.startOnTick) {
|
|
60835
60895
|
tickPositions[0] = min;
|
|
60836
60896
|
}
|
|
@@ -61714,6 +61774,8 @@ const TreeUtilities = {
|
|
|
61714
61774
|
|
|
61715
61775
|
|
|
61716
61776
|
|
|
61777
|
+
const { composed: TreeGridAxis_composed } = Core_Globals;
|
|
61778
|
+
|
|
61717
61779
|
|
|
61718
61780
|
|
|
61719
61781
|
const { getLevelOptions: TreeGridAxis_getLevelOptions } = Series_TreeUtilities;
|
|
@@ -62003,19 +62065,16 @@ function onBeforeRender(e) {
|
|
|
62003
62065
|
* The tick position in axis values.
|
|
62004
62066
|
*/
|
|
62005
62067
|
function wrapGenerateTick(proceed, pos) {
|
|
62006
|
-
const axis = this, mapOptionsToLevel = axis.treeGrid.mapOptionsToLevel || {}, isTreeGrid = axis.type === 'treegrid', ticks = axis.ticks;
|
|
62007
|
-
let tick = ticks[pos], levelOptions, options
|
|
62008
|
-
if (isTreeGrid &&
|
|
62009
|
-
axis.treeGrid.mapOfPosToGridNode) {
|
|
62010
|
-
gridNode = axis.treeGrid.mapOfPosToGridNode[pos];
|
|
62068
|
+
const axis = this, mapOptionsToLevel = axis.treeGrid.mapOptionsToLevel || {}, isTreeGrid = axis.type === 'treegrid', ticks = axis.ticks, gridNode = axis.treeGrid.mapOfPosToGridNode?.[pos];
|
|
62069
|
+
let tick = ticks[pos], levelOptions, options;
|
|
62070
|
+
if (isTreeGrid && gridNode) {
|
|
62011
62071
|
levelOptions = mapOptionsToLevel[gridNode.depth];
|
|
62012
62072
|
if (levelOptions) {
|
|
62013
62073
|
options = {
|
|
62014
62074
|
labels: levelOptions
|
|
62015
62075
|
};
|
|
62016
62076
|
}
|
|
62017
|
-
if (!tick &&
|
|
62018
|
-
TickConstructor) {
|
|
62077
|
+
if (!tick && TickConstructor) {
|
|
62019
62078
|
ticks[pos] = tick =
|
|
62020
62079
|
new TickConstructor(axis, pos, void 0, void 0, {
|
|
62021
62080
|
category: gridNode.name,
|
|
@@ -62172,9 +62231,7 @@ function wrapInit(proceed, chart, userOptions, coll) {
|
|
|
62172
62231
|
* The original setTickInterval function.
|
|
62173
62232
|
*/
|
|
62174
62233
|
function wrapSetTickInterval(proceed) {
|
|
62175
|
-
const axis = this, options = axis.options, time = axis.chart.time, linkedParent =
|
|
62176
|
-
this.chart[axis.coll]?.[options.linkedTo] :
|
|
62177
|
-
void 0, isTreeGrid = axis.type === 'treegrid';
|
|
62234
|
+
const axis = this, options = axis.options, time = axis.chart.time, linkedParent = axis.linkedParent, isTreeGrid = axis.type === 'treegrid';
|
|
62178
62235
|
if (isTreeGrid) {
|
|
62179
62236
|
axis.min = axis.userMin ?? time.parse(options.min) ?? axis.dataMin;
|
|
62180
62237
|
axis.max = axis.userMax ?? time.parse(options.max) ?? axis.dataMax;
|
|
@@ -62238,9 +62295,8 @@ class TreeGridAxisAdditions {
|
|
|
62238
62295
|
* */
|
|
62239
62296
|
/** @internal */
|
|
62240
62297
|
static compose(AxisClass, ChartClass, SeriesClass, TickClass) {
|
|
62241
|
-
if (
|
|
62298
|
+
if (pushUnique(TreeGridAxis_composed, 'Axis.TreeGrid')) {
|
|
62242
62299
|
const axisProps = AxisClass.prototype;
|
|
62243
|
-
AxisClass.keepProps.push('treeGrid');
|
|
62244
62300
|
wrap(axisProps, 'generateTick', wrapGenerateTick);
|
|
62245
62301
|
wrap(axisProps, 'init', wrapInit);
|
|
62246
62302
|
wrap(axisProps, 'setTickInterval', wrapSetTickInterval);
|
|
@@ -62561,7 +62617,7 @@ Series_SeriesRegistry.registerSeriesType('gantt', GanttSeries);
|
|
|
62561
62617
|
/* unused harmony import specifier */ var gantt_src_Highcharts;
|
|
62562
62618
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
62563
62619
|
/**
|
|
62564
|
-
* @license Highcharts Gantt JS v13.0
|
|
62620
|
+
* @license Highcharts Gantt JS v13.1.0 (2026-09-18)
|
|
62565
62621
|
* @module highcharts/modules/gantt
|
|
62566
62622
|
* @requires highcharts
|
|
62567
62623
|
*
|