highcharts 13.0.0 → 13.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/css/highcharts.css +2 -1
- package/es-modules/Accessibility/A11yI18n.js +4 -4
- package/es-modules/Accessibility/Accessibility.js +38 -1
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
- package/es-modules/Accessibility/Components/LegendComponent.js +3 -4
- package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -4
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +8 -4
- package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
- package/es-modules/Accessibility/FocusBorder.js +2 -2
- package/es-modules/Accessibility/Options/A11yDefaults.js +12 -3
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
- package/es-modules/Accessibility/ProxyElement.js +1 -0
- package/es-modules/Core/Animation/AnimationUtilities.js +34 -43
- package/es-modules/Core/Animation/Fx.js +16 -19
- package/es-modules/Core/Axis/Axis.js +49 -59
- package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
- package/es-modules/Core/Axis/AxisDefaults.js +12 -2
- package/es-modules/Core/Axis/BrokenAxis.js +6 -5
- package/es-modules/Core/Axis/Color/ColorAxis.js +24 -12
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -3
- package/es-modules/Core/Axis/GridAxis.js +12 -5
- package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
- package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
- package/es-modules/Core/Axis/OrdinalAxis.js +21 -11
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
- package/es-modules/Core/Axis/RadialAxis.js +23 -22
- package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
- package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
- package/es-modules/Core/Axis/Stacking/StackingAxis.js +5 -6
- package/es-modules/Core/Axis/Tick.js +10 -11
- package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +1 -1
- package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
- package/es-modules/Core/Chart/Chart.js +58 -53
- package/es-modules/Core/Chart/Chart3D.js +3 -3
- package/es-modules/Core/Chart/ChartDefaults.js +24 -1
- package/es-modules/Core/Chart/MapChart.js +7 -10
- package/es-modules/Core/Chart/StockChart.js +15 -11
- package/es-modules/Core/Color/Color.js +3 -1
- package/es-modules/Core/Defaults.js +44 -2
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/Legend/Legend.js +20 -17
- package/es-modules/Core/Legend/LegendSymbol.js +2 -2
- package/es-modules/Core/MSPointer.js +2 -2
- package/es-modules/Core/Math3D.js +6 -7
- package/es-modules/Core/Pointer.js +20 -10
- package/es-modules/Core/Renderer/HTML/AST.js +5 -1
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +23 -16
- package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
- package/es-modules/Core/Renderer/SVG/SVGElement.js +12 -11
- package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +6 -6
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +13 -12
- package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
- package/es-modules/Core/Responsive.js +7 -5
- package/es-modules/Core/Series/DataLabel.js +9 -8
- package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
- package/es-modules/Core/Series/Point.js +31 -24
- package/es-modules/Core/Series/Series.js +125 -82
- package/es-modules/Core/Series/Series3D.js +2 -2
- package/es-modules/Core/Series/SeriesDefaults.js +33 -0
- package/es-modules/Core/Templating.js +18 -15
- package/es-modules/Core/Tooltip.js +12 -9
- package/es-modules/Core/Utilities.js +4 -3
- package/es-modules/Data/Connectors/DataConnector.js +2 -2
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
- package/es-modules/Data/DataTable.js +17 -0
- package/es-modules/Data/DataTableCore.js +1 -1
- package/es-modules/Extensions/Annotations/Annotation.js +5 -6
- package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
- package/es-modules/Extensions/Annotations/AnnotationDefaults.js +4 -4
- package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
- package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
- package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
- package/es-modules/Extensions/Annotations/MockPoint.js +7 -9
- package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
- package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +31 -4
- package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
- package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +6 -8
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -4
- package/es-modules/Extensions/Annotations/Types/Measure.js +28 -10
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +3 -1
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
- package/es-modules/Extensions/Boost/Boost.js +13 -0
- package/es-modules/Extensions/Boost/BoostChart.js +11 -4
- package/es-modules/Extensions/Boost/BoostSeries.js +17 -11
- package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
- package/es-modules/Extensions/Boost/WGLShader.js +3 -3
- package/es-modules/Extensions/BoostCanvas.js +2 -2
- package/es-modules/Extensions/BorderRadius.js +12 -10
- package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +6 -5
- package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
- package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
- package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
- package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
- package/es-modules/Extensions/DraggablePoints/DraggableChart.js +1 -2
- package/es-modules/Extensions/Drilldown/Drilldown.js +1 -2
- package/es-modules/Extensions/Drilldown/DrilldownSeries.js +1 -2
- package/es-modules/Extensions/ExportData/ExportData.js +21 -16
- package/es-modules/Extensions/Exporting/Exporting.js +28 -28
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +32 -0
- package/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +1 -2
- package/es-modules/Extensions/MarkerClusters/MarkerClusters.js +1 -2
- package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +31 -4
- package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
- package/es-modules/Extensions/Pane/PaneDefaults.js +1 -1
- package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
- package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +3 -0
- package/es-modules/Extensions/PatternFill.js +7 -5
- package/es-modules/Extensions/PriceIndication.js +5 -4
- package/es-modules/Extensions/ScrollablePlotArea.js +8 -2
- package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +8 -9
- package/es-modules/Extensions/Sonification/MIDI.js +2 -3
- package/es-modules/Extensions/Sonification/Sonification.js +2 -2
- package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
- package/es-modules/Extensions/Sonification/SynthPatch.js +4 -4
- package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
- package/es-modules/Gantt/Legacy.js +2 -2
- package/es-modules/Gantt/Pathfinder.js +3 -3
- package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
- package/es-modules/Gantt/Tree.js +1 -1
- package/es-modules/Maps/GeoJSONComposition.js +14 -1
- package/es-modules/Maps/MapNavigation.js +4 -4
- package/es-modules/Maps/MapPointer.js +2 -2
- package/es-modules/Maps/MapView.js +3 -3
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
- package/es-modules/Series/Area/AreaSeries.js +4 -5
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +87 -147
- package/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +42 -4
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +10 -6
- package/es-modules/Series/BoxPlot/BoxPlotSeries.js +40 -32
- package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +33 -1
- package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
- package/es-modules/Series/Bubble/BubbleSeries.js +25 -9
- package/es-modules/Series/Bullet/BulletSeries.js +17 -10
- package/es-modules/Series/Candlestick/CandlestickSeries.js +3 -3
- package/es-modules/Series/CenteredUtilities.js +12 -9
- package/es-modules/Series/ColorMapComposition.js +7 -4
- package/es-modules/Series/Column/ColumnPoint.js +2 -0
- package/es-modules/Series/Column/ColumnSeries.js +14 -14
- package/es-modules/Series/Column/ColumnSeriesDefaults.js +4 -2
- package/es-modules/Series/Column3D/Column3DComposition.js +22 -19
- package/es-modules/Series/ColumnPyramid/ColumnPyramidPoint.js +18 -0
- package/es-modules/Series/ColumnPyramid/ColumnPyramidPointOptions.js +12 -0
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +7 -6
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeriesOptions.js +12 -0
- package/es-modules/Series/ColumnRange/ColumnRangePoint.js +2 -0
- package/es-modules/Series/ColumnRange/ColumnRangePointOptions.js +12 -0
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +13 -144
- package/es-modules/Series/ColumnRange/ColumnRangeSeriesDefaults.js +148 -0
- package/es-modules/Series/ColumnRange/ColumnRangeSeriesOptions.js +12 -0
- package/es-modules/Series/Contour/ContourPoint.js +2 -0
- package/es-modules/Series/Contour/ContourSeries.js +1 -0
- package/es-modules/Series/Contour/ContourSeriesDefaults.js +7 -0
- package/es-modules/Series/Contour/ContourShader.js +9 -1
- package/es-modules/Series/CrossSymbol.js +3 -2
- package/es-modules/Series/Cylinder/CylinderComposition.js +12 -12
- package/es-modules/Series/Cylinder/CylinderPoint.js +2 -0
- package/es-modules/Series/Cylinder/CylinderPointOptions.js +15 -0
- package/es-modules/Series/Cylinder/CylinderSeries.js +2 -1
- package/es-modules/Series/Cylinder/CylinderSeriesOptions.js +15 -0
- package/es-modules/Series/Cylinder/SVGElement3DCylinder.js +2 -0
- package/es-modules/Series/DataModifyComposition.js +9 -7
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
- package/es-modules/Series/DependencyWheel/DependencyWheelPointOptions.js +14 -0
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +8 -8
- package/es-modules/Series/DependencyWheel/DependencyWheelSeriesOptions.js +14 -0
- package/es-modules/Series/DerivedComposition.js +9 -8
- package/es-modules/Series/DotPlot/DotPlotPoint.js +18 -0
- package/es-modules/Series/DotPlot/DotPlotPointOptions.js +12 -0
- package/es-modules/Series/DotPlot/DotPlotSeries.js +6 -4
- package/es-modules/Series/DotPlot/DotPlotSeriesOptions.js +12 -0
- package/es-modules/Series/DragNodesComposition.js +11 -8
- package/es-modules/Series/DrawPointUtilities.js +3 -1
- package/es-modules/Series/Dumbbell/DumbbellPoint.js +19 -6
- package/es-modules/Series/Dumbbell/DumbbellPointOptions.js +12 -0
- package/es-modules/Series/Dumbbell/DumbbellSeries.js +33 -15
- package/es-modules/Series/Dumbbell/DumbbellSeriesOptions.js +12 -0
- package/es-modules/Series/ErrorBar/ErrorBarPoint.js +18 -0
- package/es-modules/Series/ErrorBar/ErrorBarPointOptions.js +12 -0
- package/es-modules/Series/ErrorBar/ErrorBarSeries.js +6 -9
- package/es-modules/Series/ErrorBar/ErrorBarSeriesDefaults.js +15 -1
- package/es-modules/Series/ErrorBar/ErrorBarSeriesOptions.js +12 -0
- package/es-modules/Series/Flags/FlagsSeries.js +5 -14
- package/es-modules/Series/Flags/FlagsSeriesDefaults.js +2 -1
- package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
- package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
- package/es-modules/Series/Funnel/FunnelSeries.js +25 -26
- package/es-modules/Series/Funnel/FunnelSeriesDefaults.js +12 -0
- package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
- package/es-modules/Series/Gantt/GanttSeries.js +2 -1
- package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
- package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +9 -9
- package/es-modules/Series/GraphLayoutComposition.js +3 -3
- package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
- package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
- package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
- package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
- package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
- package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
- package/es-modules/Series/Histogram/HistogramSeries.js +15 -3
- package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +9 -9
- package/es-modules/Series/InterpolationUtilities.js +5 -5
- package/es-modules/Series/Item/ItemPointOptions.js +14 -0
- package/es-modules/Series/Item/ItemSeries.js +18 -6
- package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
- package/es-modules/Series/Map/MapPoint.js +5 -3
- package/es-modules/Series/Map/MapSeries.js +6 -10
- package/es-modules/Series/Map/MapSeriesDefaults.js +11 -1
- package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
- package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +14 -9
- package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +12 -0
- package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
- package/es-modules/Series/NodesComposition.js +9 -10
- package/es-modules/Series/OHLC/OHLCPoint.js +2 -2
- package/es-modules/Series/OHLC/OHLCSeries.js +1 -0
- package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
- package/es-modules/Series/Organization/OrganizationSeries.js +29 -7
- package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +11 -4
- package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
- package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
- package/es-modules/Series/Pie/PieDataLabel.js +2 -2
- package/es-modules/Series/Pie/PiePoint.js +3 -4
- package/es-modules/Series/Pie/PieSeries.js +3 -2
- package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
- package/es-modules/Series/PolarComposition.js +13 -14
- package/es-modules/Series/Polygon/PolygonSeries.js +2 -2
- package/es-modules/Series/Polygon/PolygonSeriesDefaults.js +20 -0
- package/es-modules/Series/RangeDataLabel.js +128 -0
- package/es-modules/Series/Sankey/SankeySeries.js +13 -7
- package/es-modules/Series/Sankey/SankeySeriesDefaults.js +2 -2
- package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
- package/es-modules/Series/Scatter/ScatterSeriesDefaults.js +2 -0
- package/es-modules/Series/SimulationSeriesUtilities.js +1 -2
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +4 -4
- package/es-modules/Series/Spline/SplineSeries.js +5 -5
- package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +8 -0
- package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +20 -12
- package/es-modules/Series/Tilemap/TilemapSeriesDefaults.js +2 -1
- package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
- package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
- package/es-modules/Series/Timeline/TimelineSeries.js +13 -6
- package/es-modules/Series/TreeUtilities.js +16 -7
- package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
- package/es-modules/Series/Treegraph/TreegraphSeries.js +22 -13
- package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
- package/es-modules/Series/Treemap/TreemapSeriesDefaults.js +22 -1
- package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
- package/es-modules/Series/VariablePie/VariablePieSeriesDefaults.js +3 -2
- package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
- package/es-modules/Series/Vector/VectorSeries.js +7 -9
- package/es-modules/Series/Venn/VennSeries.js +3 -4
- package/es-modules/Series/Waterfall/WaterfallSeries.js +3 -3
- package/es-modules/Series/Windbarb/WindbarbSeries.js +8 -10
- package/es-modules/Series/XRange/XRangeSeries.js +8 -8
- package/es-modules/Shared/TimeBase.js +13 -8
- package/es-modules/Shared/Utilities.js +9 -7
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +1 -2
- package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
- package/es-modules/Stock/Navigator/Navigator.js +26 -26
- package/es-modules/Stock/Navigator/NavigatorDefaults.js +9 -2
- package/es-modules/Stock/Navigator/NavigatorSymbols.js +2 -1
- package/es-modules/Stock/Navigator/StandaloneNavigator.js +55 -14
- package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
- package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
- package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
- package/es-modules/Stock/StockTools/StockToolbar.js +6 -6
- package/es-modules/Stock/StockTools/StockTools.js +2 -2
- package/es-modules/Stock/StockTools/StockToolsBindings.js +7 -7
- package/es-modules/Stock/StockTools/StockToolsGui.js +6 -4
- 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 +13 -8
- 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 +2 -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 +3 -2
- 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 +78 -55
- package/esm/highcharts-autoload.js +2 -2
- package/esm/highcharts-autoload.src.js +22 -8
- package/esm/highcharts-gantt.js +2 -2
- package/esm/highcharts-gantt.src.js +1 -24
- package/esm/highcharts-more.js +2 -2
- package/esm/highcharts-more.src.js +1198 -981
- package/esm/highcharts.js +5 -5
- package/esm/highcharts.src.js +702 -515
- package/esm/highmaps.js +2 -2
- package/esm/highmaps.src.js +1 -24
- package/esm/highstock.js +2 -2
- package/esm/highstock.src.js +1 -24
- package/esm/i18n/fr-FR.js +2 -2
- package/esm/i18n/fr-FR.src.js +22 -8
- package/esm/i18n/nb-NO.js +2 -2
- package/esm/i18n/nb-NO.src.js +22 -8
- package/esm/i18n/zh-CN.js +2 -2
- package/esm/i18n/zh-CN.src.js +22 -8
- package/esm/indicators/acceleration-bands.js +2 -2
- package/esm/indicators/acceleration-bands.src.js +22 -8
- package/esm/indicators/accumulation-distribution.js +2 -2
- package/esm/indicators/accumulation-distribution.src.js +22 -8
- package/esm/indicators/ao.js +2 -2
- package/esm/indicators/ao.src.js +22 -8
- package/esm/indicators/apo.js +2 -2
- package/esm/indicators/apo.src.js +22 -8
- package/esm/indicators/aroon-oscillator.js +2 -2
- package/esm/indicators/aroon-oscillator.src.js +22 -8
- package/esm/indicators/aroon.js +2 -2
- package/esm/indicators/aroon.src.js +24 -10
- package/esm/indicators/atr.js +2 -2
- package/esm/indicators/atr.src.js +22 -8
- package/esm/indicators/bollinger-bands.js +2 -2
- package/esm/indicators/bollinger-bands.src.js +22 -8
- package/esm/indicators/cci.js +2 -2
- package/esm/indicators/cci.src.js +22 -8
- package/esm/indicators/chaikin.js +2 -2
- package/esm/indicators/chaikin.src.js +22 -8
- package/esm/indicators/cmf.js +2 -2
- package/esm/indicators/cmf.src.js +22 -8
- package/esm/indicators/cmo.js +2 -2
- package/esm/indicators/cmo.src.js +22 -8
- package/esm/indicators/dema.js +2 -2
- package/esm/indicators/dema.src.js +22 -8
- package/esm/indicators/disparity-index.js +2 -2
- package/esm/indicators/disparity-index.src.js +22 -8
- package/esm/indicators/dmi.js +2 -2
- package/esm/indicators/dmi.src.js +22 -8
- package/esm/indicators/dpo.js +2 -2
- package/esm/indicators/dpo.src.js +25 -10
- package/esm/indicators/ichimoku-kinko-hyo.js +2 -2
- package/esm/indicators/ichimoku-kinko-hyo.src.js +22 -8
- package/esm/indicators/indicators-all.js +2 -2
- package/esm/indicators/indicators-all.src.js +31 -17
- package/esm/indicators/indicators.js +2 -2
- package/esm/indicators/indicators.src.js +24 -10
- package/esm/indicators/keltner-channels.js +2 -2
- package/esm/indicators/keltner-channels.src.js +22 -8
- package/esm/indicators/klinger.js +2 -2
- package/esm/indicators/klinger.src.js +22 -8
- package/esm/indicators/macd.js +2 -2
- package/esm/indicators/macd.src.js +22 -8
- package/esm/indicators/mfi.js +2 -2
- package/esm/indicators/mfi.src.js +22 -8
- package/esm/indicators/momentum.js +2 -2
- package/esm/indicators/momentum.src.js +22 -8
- package/esm/indicators/natr.js +2 -2
- package/esm/indicators/natr.src.js +22 -8
- package/esm/indicators/obv.js +2 -2
- package/esm/indicators/obv.src.js +22 -8
- package/esm/indicators/pivot-points.js +2 -2
- package/esm/indicators/pivot-points.src.js +22 -8
- package/esm/indicators/ppo.js +2 -2
- package/esm/indicators/ppo.src.js +22 -8
- package/esm/indicators/price-channel.js +2 -2
- package/esm/indicators/price-channel.src.js +22 -8
- package/esm/indicators/price-envelopes.js +2 -2
- package/esm/indicators/price-envelopes.src.js +22 -8
- package/esm/indicators/psar.js +2 -2
- package/esm/indicators/psar.src.js +22 -8
- package/esm/indicators/regressions.js +2 -2
- package/esm/indicators/regressions.src.js +22 -8
- package/esm/indicators/roc.js +2 -2
- package/esm/indicators/roc.src.js +22 -8
- package/esm/indicators/rsi.js +2 -2
- package/esm/indicators/rsi.src.js +23 -9
- package/esm/indicators/slow-stochastic.js +2 -2
- package/esm/indicators/slow-stochastic.src.js +22 -8
- package/esm/indicators/stochastic.js +2 -2
- package/esm/indicators/stochastic.src.js +22 -8
- package/esm/indicators/supertrend.js +2 -2
- package/esm/indicators/supertrend.src.js +22 -8
- package/esm/indicators/tema.js +2 -2
- package/esm/indicators/tema.src.js +22 -8
- package/esm/indicators/trendline.js +2 -2
- package/esm/indicators/trendline.src.js +22 -8
- package/esm/indicators/trix.js +2 -2
- package/esm/indicators/trix.src.js +22 -8
- package/esm/indicators/volume-by-price.js +2 -2
- package/esm/indicators/volume-by-price.src.js +23 -10
- package/esm/indicators/vwap.js +2 -2
- package/esm/indicators/vwap.src.js +22 -8
- package/esm/indicators/williams-r.js +2 -2
- package/esm/indicators/williams-r.src.js +22 -8
- package/esm/indicators/wma.js +2 -2
- package/esm/indicators/wma.src.js +22 -8
- package/esm/indicators/zigzag.js +2 -2
- package/esm/indicators/zigzag.src.js +22 -8
- package/esm/modules/accessibility.js +2 -2
- package/esm/modules/accessibility.src.js +564 -92
- package/esm/modules/annotations-advanced.js +11 -11
- package/esm/modules/annotations-advanced.src.js +224 -162
- package/esm/modules/annotations.js +11 -11
- package/esm/modules/annotations.src.js +184 -144
- package/esm/modules/arc-diagram.js +2 -2
- package/esm/modules/arc-diagram.src.js +37 -22
- package/esm/modules/arrow-symbols.js +3 -3
- package/esm/modules/arrow-symbols.src.js +22 -8
- package/esm/modules/boost-canvas.js +2 -2
- package/esm/modules/boost-canvas.src.js +60 -30
- package/esm/modules/boost.js +2 -2
- package/esm/modules/boost.src.js +72 -29
- package/esm/modules/broken-axis.js +2 -2
- package/esm/modules/broken-axis.src.js +27 -12
- package/esm/modules/bullet.js +2 -2
- package/esm/modules/bullet.src.js +38 -17
- package/esm/modules/coloraxis.js +2 -2
- package/esm/modules/coloraxis.src.js +47 -21
- package/esm/modules/contour.js +3 -3
- package/esm/modules/contour.src.js +46 -13
- package/esm/modules/current-date-indicator.js +2 -2
- package/esm/modules/current-date-indicator.src.js +22 -8
- package/esm/modules/cylinder.js +2 -2
- package/esm/modules/cylinder.src.js +46 -28
- package/esm/modules/data-sorting.js +2 -2
- package/esm/modules/data-sorting.src.js +22 -8
- package/esm/modules/data-tools.js +2 -2
- package/esm/modules/data-tools.src.js +44 -13
- package/esm/modules/data.js +4 -4
- package/esm/modules/data.src.js +23 -9
- package/esm/modules/datagrouping.js +2 -2
- package/esm/modules/datagrouping.src.js +28 -13
- package/esm/modules/debugger.js +2 -2
- package/esm/modules/debugger.src.js +22 -8
- package/esm/modules/dependency-wheel.js +2 -2
- package/esm/modules/dependency-wheel.src.js +428 -17
- package/esm/modules/dotplot.js +2 -2
- package/esm/modules/dotplot.src.js +27 -11
- package/esm/modules/drag-panes.js +2 -2
- package/esm/modules/drag-panes.src.js +22 -8
- package/esm/modules/draggable-points.js +2 -2
- package/esm/modules/draggable-points.src.js +24 -12
- package/esm/modules/drilldown.js +2 -2
- package/esm/modules/drilldown.src.js +38 -25
- package/esm/modules/dumbbell.js +2 -2
- package/esm/modules/dumbbell.src.js +72 -27
- package/esm/modules/export-data.js +2 -2
- package/esm/modules/export-data.src.js +42 -23
- package/esm/modules/exporting.js +2 -2
- package/esm/modules/exporting.src.js +83 -37
- package/esm/modules/flowmap.js +3 -2
- package/esm/modules/flowmap.src.js +43 -18
- package/esm/modules/full-screen.js +2 -2
- package/esm/modules/full-screen.src.js +22 -8
- package/esm/modules/funnel.js +2 -2
- package/esm/modules/funnel.src.js +73 -42
- package/esm/modules/funnel3d.js +2 -2
- package/esm/modules/funnel3d.src.js +35 -20
- package/esm/modules/gantt.js +2 -2
- package/esm/modules/gantt.src.js +542 -100
- package/esm/modules/geoheatmap.js +2 -2
- package/esm/modules/geoheatmap.src.js +35 -21
- package/esm/modules/grid-axis.js +2 -2
- package/esm/modules/grid-axis.src.js +33 -12
- package/esm/modules/heatmap.js +2 -2
- package/esm/modules/heatmap.src.js +50 -33
- package/esm/modules/heikinashi.js +2 -2
- package/esm/modules/heikinashi.src.js +22 -8
- package/esm/modules/histogram-bellcurve.js +2 -2
- package/esm/modules/histogram-bellcurve.src.js +56 -25
- package/esm/modules/hollowcandlestick.js +2 -2
- package/esm/modules/hollowcandlestick.src.js +31 -17
- package/esm/modules/item-series.js +2 -2
- package/esm/modules/item-series.src.js +72 -13
- package/esm/modules/lollipop.js +2 -2
- package/esm/modules/lollipop.src.js +22 -8
- package/esm/modules/map.js +2 -2
- package/esm/modules/map.src.js +148 -91
- package/esm/modules/marker-clusters.js +2 -2
- package/esm/modules/marker-clusters.src.js +25 -13
- package/esm/modules/mouse-wheel-zoom.js +2 -2
- package/esm/modules/mouse-wheel-zoom.src.js +54 -13
- package/esm/modules/navigator.js +2 -2
- package/esm/modules/navigator.src.js +534 -74
- package/esm/modules/networkgraph.js +2 -2
- package/esm/modules/networkgraph.src.js +87 -46
- package/esm/modules/no-data-to-display.js +2 -2
- package/esm/modules/no-data-to-display.src.js +22 -8
- package/esm/modules/non-cartesian-zoom.js +2 -2
- package/esm/modules/non-cartesian-zoom.src.js +22 -8
- package/esm/modules/offline-exporting.js +2 -2
- package/esm/modules/offline-exporting.src.js +53 -12
- package/esm/modules/organization.js +4 -2
- package/esm/modules/organization.src.js +63 -19
- package/esm/modules/parallel-coordinates.js +2 -2
- package/esm/modules/parallel-coordinates.src.js +26 -9
- package/esm/modules/pareto.js +2 -2
- package/esm/modules/pareto.src.js +31 -16
- package/esm/modules/pathfinder.js +2 -2
- package/esm/modules/pathfinder.src.js +28 -13
- package/esm/modules/pattern-fill.js +2 -2
- package/esm/modules/pattern-fill.src.js +28 -12
- package/esm/modules/pictorial.js +2 -2
- package/esm/modules/pictorial.src.js +36 -19
- package/esm/modules/pointandfigure.js +2 -2
- package/esm/modules/pointandfigure.src.js +26 -11
- package/esm/modules/price-indicator.js +2 -2
- package/esm/modules/price-indicator.src.js +26 -11
- package/esm/modules/pyramid3d.js +2 -2
- package/esm/modules/pyramid3d.src.js +22 -8
- package/esm/modules/renko.js +2 -2
- package/esm/modules/renko.src.js +22 -8
- package/esm/modules/sankey.js +2 -2
- package/esm/modules/sankey.src.js +59 -31
- package/esm/modules/series-label.js +2 -2
- package/esm/modules/series-label.src.js +31 -18
- package/esm/modules/series-on-point.js +2 -2
- package/esm/modules/series-on-point.src.js +23 -9
- package/esm/modules/solid-gauge.js +2 -2
- package/esm/modules/solid-gauge.src.js +40 -20
- package/esm/modules/sonification.js +2 -2
- package/esm/modules/sonification.src.js +45 -30
- package/esm/modules/static-scale.js +2 -2
- package/esm/modules/static-scale.src.js +22 -8
- package/esm/modules/stock-tools.js +3 -3
- package/esm/modules/stock-tools.src.js +73 -27
- package/esm/modules/stock.js +2 -2
- package/esm/modules/stock.src.js +554 -122
- package/esm/modules/streamgraph.js +2 -2
- package/esm/modules/streamgraph.src.js +22 -8
- package/esm/modules/sunburst.js +2 -2
- package/esm/modules/sunburst.src.js +110 -45
- package/esm/modules/textpath.js +2 -2
- package/esm/modules/textpath.src.js +22 -8
- package/esm/modules/tiledwebmap.js +3 -3
- package/esm/modules/tiledwebmap.src.js +44 -19
- package/esm/modules/tilemap.js +2 -2
- package/esm/modules/tilemap.src.js +27 -12
- package/esm/modules/timeline.js +2 -2
- package/esm/modules/timeline.src.js +35 -14
- package/esm/modules/treegraph.js +2 -2
- package/esm/modules/treegraph.src.js +59 -27
- package/esm/modules/treegrid.js +2 -2
- package/esm/modules/treegrid.src.js +58 -27
- package/esm/modules/treemap.js +2 -2
- package/esm/modules/treemap.src.js +89 -36
- package/esm/modules/variable-pie.js +2 -2
- package/esm/modules/variable-pie.src.js +30 -13
- package/esm/modules/variwide.js +2 -2
- package/esm/modules/variwide.src.js +23 -9
- package/esm/modules/vector.js +2 -2
- package/esm/modules/vector.src.js +28 -16
- package/esm/modules/venn.js +2 -2
- package/esm/modules/venn.src.js +28 -13
- package/esm/modules/windbarb.js +2 -2
- package/esm/modules/windbarb.src.js +29 -17
- package/esm/modules/wordcloud.js +2 -2
- package/esm/modules/wordcloud.src.js +25 -9
- package/esm/modules/xrange.js +2 -2
- package/esm/modules/xrange.src.js +29 -15
- package/esm/standalone-navigator.js +5 -5
- package/esm/standalone-navigator.src.js +808 -570
- package/esm/themes/adaptive.js +3 -3
- package/esm/themes/adaptive.src.js +22 -8
- package/esm/themes/avocado.js +2 -2
- package/esm/themes/avocado.src.js +22 -8
- package/esm/themes/dark-unica.js +2 -2
- package/esm/themes/dark-unica.src.js +22 -8
- package/esm/themes/grid-light.js +2 -2
- package/esm/themes/grid-light.src.js +22 -8
- package/esm/themes/high-contrast.js +2 -2
- package/esm/themes/high-contrast.src.js +22 -8
- package/esm/themes/sand-signika.js +2 -2
- package/esm/themes/sand-signika.src.js +22 -8
- package/esm/themes/sunset.js +2 -2
- package/esm/themes/sunset.src.js +22 -8
- package/highcharts-3d.js +2 -2
- package/highcharts-3d.src.js +116 -92
- package/highcharts-autoload.d.ts +15 -5
- package/highcharts-autoload.js +4 -4
- package/highcharts-autoload.src.d.ts +15 -5
- package/highcharts-autoload.src.js +724 -499
- package/highcharts-gantt.js +4 -4
- package/highcharts-gantt.src.js +851 -590
- package/highcharts-more.d.ts +7 -3
- package/highcharts-more.js +2 -2
- package/highcharts-more.src.d.ts +7 -3
- package/highcharts-more.src.js +1313 -1095
- package/highcharts.d.ts +34795 -25647
- package/highcharts.js +4 -4
- package/highcharts.src.d.ts +34795 -25647
- package/highcharts.src.js +723 -498
- package/highmaps.js +4 -4
- package/highmaps.src.js +863 -583
- package/highstock.js +4 -4
- package/highstock.src.js +899 -619
- package/i18n/fr-FR.js +2 -2
- package/i18n/fr-FR.src.js +32 -16
- package/i18n/nb-NO.js +2 -2
- package/i18n/nb-NO.src.js +32 -16
- package/i18n/zh-CN.js +2 -2
- package/i18n/zh-CN.src.js +32 -16
- package/indicators/acceleration-bands.js +2 -2
- package/indicators/acceleration-bands.src.js +31 -16
- package/indicators/accumulation-distribution.js +2 -2
- package/indicators/accumulation-distribution.src.js +31 -16
- package/indicators/ao.js +2 -2
- package/indicators/ao.src.js +31 -16
- package/indicators/apo.js +2 -2
- package/indicators/apo.src.js +31 -16
- package/indicators/aroon-oscillator.js +2 -2
- package/indicators/aroon-oscillator.src.js +31 -16
- package/indicators/aroon.js +2 -2
- package/indicators/aroon.src.js +33 -18
- package/indicators/atr.js +2 -2
- package/indicators/atr.src.js +31 -16
- package/indicators/bollinger-bands.js +2 -2
- package/indicators/bollinger-bands.src.js +31 -16
- package/indicators/cci.js +2 -2
- package/indicators/cci.src.js +31 -16
- package/indicators/chaikin.js +2 -2
- package/indicators/chaikin.src.js +31 -16
- package/indicators/cmf.js +2 -2
- package/indicators/cmf.src.js +31 -16
- package/indicators/cmo.js +2 -2
- package/indicators/cmo.src.js +31 -16
- package/indicators/dema.js +2 -2
- package/indicators/dema.src.js +31 -16
- package/indicators/disparity-index.js +2 -2
- package/indicators/disparity-index.src.js +31 -16
- package/indicators/dmi.js +2 -2
- package/indicators/dmi.src.js +31 -16
- package/indicators/dpo.js +2 -2
- package/indicators/dpo.src.js +34 -18
- package/indicators/ichimoku-kinko-hyo.js +2 -2
- package/indicators/ichimoku-kinko-hyo.src.js +41 -26
- package/indicators/indicators-all.js +2 -2
- package/indicators/indicators-all.src.js +52 -37
- package/indicators/indicators.js +2 -2
- package/indicators/indicators.src.js +39 -24
- package/indicators/keltner-channels.js +2 -2
- package/indicators/keltner-channels.src.js +31 -16
- package/indicators/klinger.js +2 -2
- package/indicators/klinger.src.js +31 -16
- package/indicators/macd.js +2 -2
- package/indicators/macd.src.js +31 -16
- package/indicators/mfi.js +2 -2
- package/indicators/mfi.src.js +31 -16
- package/indicators/momentum.js +2 -2
- package/indicators/momentum.src.js +31 -16
- package/indicators/natr.js +2 -2
- package/indicators/natr.src.js +31 -16
- package/indicators/obv.js +2 -2
- package/indicators/obv.src.js +31 -16
- package/indicators/pivot-points.js +2 -2
- package/indicators/pivot-points.src.js +31 -16
- package/indicators/ppo.js +2 -2
- package/indicators/ppo.src.js +31 -16
- package/indicators/price-channel.js +2 -2
- package/indicators/price-channel.src.js +31 -16
- package/indicators/price-envelopes.js +2 -2
- package/indicators/price-envelopes.src.js +31 -16
- package/indicators/psar.js +2 -2
- package/indicators/psar.src.js +31 -16
- package/indicators/regressions.js +2 -2
- package/indicators/regressions.src.js +31 -16
- package/indicators/roc.js +2 -2
- package/indicators/roc.src.js +31 -16
- package/indicators/rsi.js +2 -2
- package/indicators/rsi.src.js +32 -17
- package/indicators/slow-stochastic.js +2 -2
- package/indicators/slow-stochastic.src.js +31 -16
- package/indicators/stochastic.js +2 -2
- package/indicators/stochastic.src.js +31 -16
- package/indicators/supertrend.js +2 -2
- package/indicators/supertrend.src.js +31 -16
- package/indicators/tema.js +2 -2
- package/indicators/tema.src.js +31 -16
- package/indicators/trendline.js +2 -2
- package/indicators/trendline.src.js +31 -16
- package/indicators/trix.js +2 -2
- package/indicators/trix.src.js +31 -16
- package/indicators/volume-by-price.js +2 -2
- package/indicators/volume-by-price.src.js +32 -18
- package/indicators/vwap.js +2 -2
- package/indicators/vwap.src.js +31 -16
- package/indicators/williams-r.js +2 -2
- package/indicators/williams-r.src.js +31 -16
- package/indicators/wma.js +2 -2
- package/indicators/wma.src.js +31 -16
- package/indicators/zigzag.js +2 -2
- package/indicators/zigzag.src.js +31 -16
- package/modules/accessibility.d.ts +47 -0
- package/modules/accessibility.js +2 -2
- package/modules/accessibility.src.d.ts +47 -0
- package/modules/accessibility.src.js +603 -130
- package/modules/annotations-advanced.js +11 -11
- package/modules/annotations-advanced.src.js +246 -183
- package/modules/annotations.js +11 -11
- package/modules/annotations.src.js +206 -165
- package/modules/arc-diagram.js +2 -2
- package/modules/arc-diagram.src.js +58 -42
- package/modules/arrow-symbols.js +2 -2
- package/modules/arrow-symbols.src.js +28 -13
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.src.js +69 -38
- package/modules/boost.js +2 -2
- package/modules/boost.src.js +81 -37
- package/modules/broken-axis.js +2 -2
- package/modules/broken-axis.src.js +36 -20
- package/modules/bullet.js +2 -2
- package/modules/bullet.src.js +50 -28
- package/modules/coloraxis.js +2 -2
- package/modules/coloraxis.src.js +65 -38
- package/modules/contour.js +5 -5
- package/modules/contour.src.js +91 -44
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.src.js +28 -13
- package/modules/cylinder.js +2 -2
- package/modules/cylinder.src.js +67 -48
- package/modules/data-sorting.js +2 -2
- package/modules/data-sorting.src.js +28 -13
- package/modules/data-tools.js +2 -2
- package/modules/data-tools.src.js +50 -18
- package/modules/data.js +2 -2
- package/modules/data.src.js +50 -35
- package/modules/datagrouping.js +2 -2
- package/modules/datagrouping.src.js +42 -26
- package/modules/debugger.js +2 -2
- package/modules/debugger.src.js +28 -13
- package/modules/dependency-wheel.d.ts +7 -1
- package/modules/dependency-wheel.js +2 -2
- package/modules/dependency-wheel.src.d.ts +7 -1
- package/modules/dependency-wheel.src.js +440 -28
- package/modules/dotplot.js +2 -2
- package/modules/dotplot.src.js +36 -19
- package/modules/drag-panes.js +2 -2
- package/modules/drag-panes.src.js +28 -13
- package/modules/draggable-points.js +2 -2
- package/modules/draggable-points.src.js +30 -17
- package/modules/drilldown.js +2 -2
- package/modules/drilldown.src.js +49 -35
- package/modules/dumbbell.js +2 -2
- package/modules/dumbbell.src.js +86 -40
- package/modules/export-data.d.ts +66 -1
- package/modules/export-data.js +2 -2
- package/modules/export-data.src.d.ts +66 -1
- package/modules/export-data.src.js +56 -36
- package/modules/exporting.d.ts +0 -103
- package/modules/exporting.js +2 -2
- package/modules/exporting.src.d.ts +0 -103
- package/modules/exporting.src.js +97 -50
- package/modules/flowmap.js +3 -2
- package/modules/flowmap.src.js +52 -26
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.src.js +31 -16
- package/modules/funnel.d.ts +3 -3
- package/modules/funnel.js +2 -2
- package/modules/funnel.src.d.ts +3 -3
- package/modules/funnel.src.js +82 -50
- package/modules/funnel3d.js +2 -2
- package/modules/funnel3d.src.js +56 -40
- package/modules/gantt.d.ts +47 -0
- package/modules/gantt.js +8 -8
- package/modules/gantt.src.d.ts +47 -0
- package/modules/gantt.src.js +602 -156
- package/modules/geoheatmap.d.ts +13 -12
- package/modules/geoheatmap.js +2 -2
- package/modules/geoheatmap.src.d.ts +13 -12
- package/modules/geoheatmap.src.js +44 -29
- package/modules/grid-axis.js +2 -2
- package/modules/grid-axis.src.js +42 -20
- package/modules/heatmap.d.ts +0 -12
- package/modules/heatmap.js +4 -4
- package/modules/heatmap.src.d.ts +0 -12
- package/modules/heatmap.src.js +102 -71
- package/modules/heikinashi.js +2 -2
- package/modules/heikinashi.src.js +31 -16
- package/modules/histogram-bellcurve.js +2 -2
- package/modules/histogram-bellcurve.src.js +70 -38
- package/modules/hollowcandlestick.js +2 -2
- package/modules/hollowcandlestick.src.js +45 -30
- package/modules/item-series.js +2 -2
- package/modules/item-series.src.js +81 -21
- package/modules/lollipop.js +2 -2
- package/modules/lollipop.src.js +36 -21
- package/modules/map.d.ts +0 -20
- package/modules/map.js +4 -4
- package/modules/map.src.d.ts +0 -20
- package/modules/map.src.js +212 -140
- package/modules/marker-clusters.js +2 -2
- package/modules/marker-clusters.src.js +31 -18
- package/modules/mouse-wheel-zoom.js +2 -2
- package/modules/mouse-wheel-zoom.src.js +60 -18
- package/modules/navigator.d.ts +47 -0
- package/modules/navigator.js +2 -2
- package/modules/navigator.src.d.ts +47 -0
- package/modules/navigator.src.js +556 -95
- package/modules/networkgraph.js +2 -2
- package/modules/networkgraph.src.js +99 -57
- package/modules/no-data-to-display.js +2 -2
- package/modules/no-data-to-display.src.js +31 -16
- package/modules/non-cartesian-zoom.js +2 -2
- package/modules/non-cartesian-zoom.src.js +28 -13
- package/modules/offline-exporting.js +2 -2
- package/modules/offline-exporting.src.js +67 -25
- package/modules/organization.js +4 -2
- package/modules/organization.src.js +75 -30
- package/modules/parallel-coordinates.js +2 -2
- package/modules/parallel-coordinates.src.js +37 -19
- package/modules/pareto.js +2 -2
- package/modules/pareto.src.js +45 -29
- package/modules/pathfinder.js +2 -2
- package/modules/pathfinder.src.js +37 -21
- package/modules/pattern-fill.js +2 -2
- package/modules/pattern-fill.src.js +34 -17
- package/modules/pictorial.js +2 -2
- package/modules/pictorial.src.js +62 -43
- package/modules/pointandfigure.js +2 -2
- package/modules/pointandfigure.src.js +35 -19
- package/modules/price-indicator.js +2 -2
- package/modules/price-indicator.src.js +32 -16
- package/modules/pyramid3d.js +2 -2
- package/modules/pyramid3d.src.js +31 -16
- package/modules/renko.js +2 -2
- package/modules/renko.src.js +34 -19
- package/modules/sankey.js +2 -2
- package/modules/sankey.src.js +80 -51
- package/modules/series-label.js +2 -2
- package/modules/series-label.src.js +42 -28
- package/modules/series-on-point.js +2 -2
- package/modules/series-on-point.src.js +40 -25
- package/modules/solid-gauge.d.ts +3 -3
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.src.d.ts +3 -3
- package/modules/solid-gauge.src.js +54 -33
- package/modules/sonification.js +2 -2
- package/modules/sonification.src.js +56 -40
- package/modules/static-scale.js +2 -2
- package/modules/static-scale.src.js +28 -13
- package/modules/stock-tools.js +3 -3
- package/modules/stock-tools.src.js +90 -43
- package/modules/stock.d.ts +47 -0
- package/modules/stock.js +6 -6
- package/modules/stock.src.d.ts +47 -0
- package/modules/stock.src.js +650 -185
- package/modules/streamgraph.js +2 -2
- package/modules/streamgraph.src.js +31 -16
- package/modules/sunburst.js +2 -2
- package/modules/sunburst.src.js +137 -71
- package/modules/textpath.js +2 -2
- package/modules/textpath.src.js +28 -13
- package/modules/tiledwebmap.js +3 -3
- package/modules/tiledwebmap.src.js +65 -32
- package/modules/tilemap.js +2 -2
- package/modules/tilemap.src.js +41 -25
- package/modules/timeline.js +2 -2
- package/modules/timeline.src.js +47 -25
- package/modules/treegraph.js +2 -2
- package/modules/treegraph.src.js +83 -50
- package/modules/treegrid.js +2 -2
- package/modules/treegrid.src.js +76 -44
- package/modules/treemap.js +2 -2
- package/modules/treemap.src.js +116 -62
- package/modules/variable-pie.js +2 -2
- package/modules/variable-pie.src.js +39 -21
- package/modules/variwide.js +2 -2
- package/modules/variwide.src.js +32 -17
- package/modules/vector.js +2 -2
- package/modules/vector.src.js +37 -24
- package/modules/venn.js +2 -2
- package/modules/venn.src.js +42 -26
- package/modules/windbarb.js +2 -2
- package/modules/windbarb.src.js +51 -38
- package/modules/wordcloud.js +2 -2
- package/modules/wordcloud.src.js +34 -17
- package/modules/xrange.js +2 -2
- package/modules/xrange.src.js +43 -28
- package/options/abands.d.ts +722 -83
- package/options/abands.src.d.ts +722 -83
- package/options/ad.d.ts +381 -26
- package/options/ad.src.d.ts +381 -26
- package/options/ao.d.ts +744 -70
- package/options/ao.src.d.ts +744 -70
- package/options/apo.d.ts +381 -26
- package/options/apo.src.d.ts +381 -26
- package/options/arcdiagram.d.ts +80 -534
- package/options/arcdiagram.src.d.ts +80 -534
- package/options/area.d.ts +432 -129
- package/options/area.src.d.ts +432 -129
- package/options/arearange.d.ts +46 -4
- package/options/arearange.src.d.ts +46 -4
- package/options/areaspline.d.ts +141 -866
- package/options/areaspline.src.d.ts +141 -866
- package/options/areasplinerange.d.ts +221 -871
- package/options/areasplinerange.src.d.ts +221 -871
- package/options/aroon.d.ts +432 -124
- package/options/aroon.src.d.ts +432 -124
- package/options/aroonoscillator.d.ts +127 -689
- package/options/aroonoscillator.src.d.ts +127 -689
- package/options/atr.d.ts +381 -71
- package/options/atr.src.d.ts +381 -71
- package/options/bar.d.ts +103 -12
- package/options/bar.src.d.ts +103 -12
- package/options/bb.d.ts +87 -762
- package/options/bb.src.d.ts +87 -762
- package/options/bellcurve.d.ts +87 -364
- package/options/bellcurve.src.d.ts +87 -364
- package/options/boxplot.d.ts +82 -13
- package/options/boxplot.src.d.ts +82 -13
- package/options/bubble.d.ts +83 -874
- package/options/bubble.src.d.ts +83 -874
- package/options/bullet.d.ts +354 -717
- package/options/bullet.src.d.ts +354 -717
- package/options/candlestick.d.ts +99 -1214
- package/options/candlestick.src.d.ts +99 -1214
- package/options/cci.d.ts +381 -26
- package/options/cci.src.d.ts +381 -26
- package/options/chaikin.d.ts +728 -83
- package/options/chaikin.src.d.ts +728 -83
- package/options/cmf.d.ts +381 -26
- package/options/cmf.src.d.ts +381 -26
- package/options/cmo.d.ts +730 -79
- package/options/cmo.src.d.ts +730 -79
- package/options/column.d.ts +1265 -99
- package/options/column.src.d.ts +1265 -99
- package/options/columnpyramid.d.ts +102 -1158
- package/options/columnpyramid.src.d.ts +102 -1158
- package/options/columnrange.d.ts +952 -95
- package/options/columnrange.src.d.ts +952 -95
- package/options/contour.d.ts +31 -443
- package/options/contour.src.d.ts +31 -443
- package/options/cylinder.d.ts +100 -12
- package/options/cylinder.src.d.ts +100 -12
- package/options/dema.d.ts +80 -736
- package/options/dema.src.d.ts +80 -736
- package/options/dependencywheel.d.ts +599 -218
- package/options/dependencywheel.src.d.ts +599 -218
- package/options/disparityindex.d.ts +84 -365
- package/options/disparityindex.src.d.ts +84 -365
- package/options/dmi.d.ts +86 -775
- package/options/dmi.src.d.ts +86 -775
- package/options/dpo.d.ts +83 -365
- package/options/dpo.src.d.ts +83 -365
- package/options/dumbbell.d.ts +27 -4
- package/options/dumbbell.src.d.ts +27 -4
- package/options/ema.d.ts +81 -703
- package/options/ema.src.d.ts +81 -703
- package/options/errorbar.d.ts +91 -1161
- package/options/errorbar.src.d.ts +91 -1161
- package/options/flags.d.ts +98 -1192
- package/options/flags.src.d.ts +98 -1192
- package/options/flowmap.d.ts +48 -373
- package/options/flowmap.src.d.ts +48 -373
- package/options/funnel.d.ts +40 -3
- package/options/funnel.src.d.ts +40 -3
- package/options/gantt.d.ts +37 -40
- package/options/gantt.src.d.ts +37 -40
- package/options/gauge.d.ts +398 -472
- package/options/gauge.src.d.ts +398 -472
- package/options/geoheatmap.d.ts +462 -63
- package/options/geoheatmap.src.d.ts +462 -63
- package/options/heatmap.d.ts +31 -380
- package/options/heatmap.src.d.ts +31 -380
- package/options/heikinashi.d.ts +20 -2
- package/options/heikinashi.src.d.ts +20 -2
- package/options/hlc.d.ts +20 -2
- package/options/hlc.src.d.ts +20 -2
- package/options/ikh.d.ts +750 -103
- package/options/ikh.src.d.ts +750 -103
- package/options/item.d.ts +34 -74
- package/options/item.src.d.ts +34 -74
- package/options/keltnerchannels.d.ts +87 -708
- package/options/keltnerchannels.src.d.ts +87 -708
- package/options/klinger.d.ts +34 -365
- package/options/klinger.src.d.ts +34 -365
- package/options/line.d.ts +151 -851
- package/options/line.src.d.ts +151 -851
- package/options/linearregression.d.ts +960 -85
- package/options/linearregression.src.d.ts +960 -85
- package/options/linearregressionangle.d.ts +96 -699
- package/options/linearregressionangle.src.d.ts +96 -699
- package/options/linearregressionintercept.d.ts +381 -26
- package/options/linearregressionintercept.src.d.ts +381 -26
- package/options/linearregressionslope.d.ts +381 -26
- package/options/linearregressionslope.src.d.ts +381 -26
- package/options/lollipop.d.ts +214 -851
- package/options/lollipop.src.d.ts +214 -851
- package/options/macd.d.ts +386 -83
- package/options/macd.src.d.ts +386 -83
- package/options/map.d.ts +470 -36
- package/options/map.src.d.ts +470 -36
- package/options/mapbubble.d.ts +43 -532
- package/options/mapbubble.src.d.ts +43 -532
- package/options/mapline.d.ts +135 -58
- package/options/mapline.src.d.ts +135 -58
- package/options/mappoint.d.ts +205 -283
- package/options/mappoint.src.d.ts +205 -283
- package/options/mfi.d.ts +772 -82
- package/options/mfi.src.d.ts +772 -82
- package/options/momentum.d.ts +381 -71
- package/options/momentum.src.d.ts +381 -71
- package/options/natr.d.ts +776 -75
- package/options/natr.src.d.ts +776 -75
- package/options/networkgraph.d.ts +184 -207
- package/options/networkgraph.src.d.ts +184 -207
- package/options/obv.d.ts +426 -26
- package/options/obv.src.d.ts +426 -26
- package/options/ohlc.d.ts +77 -14
- package/options/ohlc.src.d.ts +77 -14
- package/options/packedbubble.d.ts +76 -696
- package/options/packedbubble.src.d.ts +76 -696
- package/options/pareto.d.ts +28 -364
- package/options/pareto.src.d.ts +28 -364
- package/options/pc.d.ts +724 -85
- package/options/pc.src.d.ts +724 -85
- package/options/pictorial.d.ts +1093 -58
- package/options/pictorial.src.d.ts +1093 -58
- package/options/pie.d.ts +595 -129
- package/options/pie.src.d.ts +595 -129
- package/options/pivotpoints.d.ts +34 -365
- package/options/pivotpoints.src.d.ts +34 -365
- package/options/pointandfigure.d.ts +10 -50
- package/options/pointandfigure.src.d.ts +10 -50
- package/options/polygon.d.ts +803 -74
- package/options/polygon.src.d.ts +803 -74
- package/options/ppo.d.ts +34 -365
- package/options/ppo.src.d.ts +34 -365
- package/options/priceenvelopes.d.ts +93 -719
- package/options/priceenvelopes.src.d.ts +93 -719
- package/options/psar.d.ts +34 -365
- package/options/psar.src.d.ts +34 -365
- package/options/pyramid.d.ts +35 -3
- package/options/pyramid.src.d.ts +35 -3
- package/options/renko.d.ts +25 -2
- package/options/renko.src.d.ts +25 -2
- package/options/roc.d.ts +78 -712
- package/options/roc.src.d.ts +78 -712
- package/options/rsi.d.ts +34 -365
- package/options/rsi.src.d.ts +34 -365
- package/options/sankey.d.ts +27 -5
- package/options/sankey.src.d.ts +27 -5
- package/options/scatter.d.ts +896 -290
- package/options/scatter.src.d.ts +896 -290
- package/options/series.d.ts +938 -83
- package/options/series.src.d.ts +938 -83
- package/options/slowstochastic.d.ts +381 -26
- package/options/slowstochastic.src.d.ts +381 -26
- package/options/sma.d.ts +729 -79
- package/options/sma.src.d.ts +729 -79
- package/options/solidgauge.d.ts +882 -105
- package/options/solidgauge.src.d.ts +882 -105
- package/options/spline.d.ts +389 -90
- package/options/spline.src.d.ts +389 -90
- package/options/stochastic.d.ts +83 -716
- package/options/stochastic.src.d.ts +83 -716
- package/options/streamgraph.d.ts +97 -364
- package/options/streamgraph.src.d.ts +97 -364
- package/options/sunburst.d.ts +87 -19
- package/options/sunburst.src.d.ts +87 -19
- package/options/supertrend.d.ts +77 -749
- package/options/supertrend.src.d.ts +77 -749
- package/options/tema.d.ts +83 -365
- package/options/tema.src.d.ts +83 -365
- package/options/tiledwebmap.d.ts +13 -72
- package/options/tiledwebmap.src.d.ts +13 -72
- package/options/tilemap.d.ts +372 -533
- package/options/tilemap.src.d.ts +372 -533
- package/options/timeline.d.ts +49 -154
- package/options/timeline.src.d.ts +49 -154
- package/options/treegraph.d.ts +174 -696
- package/options/treegraph.src.d.ts +174 -696
- package/options/treemap.d.ts +468 -1079
- package/options/treemap.src.d.ts +468 -1079
- package/options/trendline.d.ts +381 -26
- package/options/trendline.src.d.ts +381 -26
- package/options/trix.d.ts +712 -82
- package/options/trix.src.d.ts +712 -82
- package/options/variablepie.d.ts +130 -587
- package/options/variablepie.src.d.ts +130 -587
- package/options/variwide.d.ts +1123 -94
- package/options/variwide.src.d.ts +1123 -94
- package/options/vbp.d.ts +57 -383
- package/options/vbp.src.d.ts +57 -383
- package/options/vector.d.ts +22 -58
- package/options/vector.src.d.ts +22 -58
- package/options/venn.d.ts +32 -78
- package/options/venn.src.d.ts +32 -78
- package/options/vwap.d.ts +122 -703
- package/options/vwap.src.d.ts +122 -703
- package/options/waterfall.d.ts +139 -1150
- package/options/waterfall.src.d.ts +139 -1150
- package/options/williamsr.d.ts +381 -76
- package/options/williamsr.src.d.ts +381 -76
- package/options/windbarb.d.ts +39 -2
- package/options/windbarb.src.d.ts +39 -2
- package/options/wma.d.ts +78 -704
- package/options/wma.src.d.ts +78 -704
- package/options/wordcloud.d.ts +98 -595
- package/options/wordcloud.src.d.ts +98 -595
- package/options/xrange.d.ts +166 -1056
- package/options/xrange.src.d.ts +166 -1056
- package/options/zigzag.d.ts +34 -410
- package/options/zigzag.src.d.ts +34 -410
- package/package.json +1 -1
- package/standalone-navigator.js +4 -4
- package/standalone-navigator.src.js +829 -553
- package/themes/adaptive.js +2 -2
- package/themes/adaptive.src.js +33 -18
- package/themes/avocado.js +2 -2
- package/themes/avocado.src.js +28 -13
- package/themes/dark-unica.js +2 -2
- package/themes/dark-unica.src.js +28 -13
- package/themes/grid-light.js +2 -2
- package/themes/grid-light.src.js +28 -13
- package/themes/high-contrast.js +2 -2
- package/themes/high-contrast.src.js +28 -13
- package/themes/sand-signika.js +2 -2
- package/themes/sand-signika.src.js +28 -13
- package/themes/sunset.js +2 -2
- package/themes/sunset.src.js +28 -13
- package/css/.stylelintrc.json +0 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
2
2
|
/**
|
|
3
|
-
* @license Highcharts JS v13.0.
|
|
3
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
4
4
|
* @module highcharts/standalone-navigator
|
|
5
5
|
*
|
|
6
6
|
* Standalone Navigator for Highcharts.
|
|
@@ -23,16 +23,31 @@
|
|
|
23
23
|
return /******/ (() => { // webpackBootstrap
|
|
24
24
|
/******/ "use strict";
|
|
25
25
|
/******/ // The require scope
|
|
26
|
-
/******/
|
|
26
|
+
/******/ const __webpack_require__ = {};
|
|
27
27
|
/******/
|
|
28
28
|
/************************************************************************/
|
|
29
29
|
/******/ /* webpack/runtime/define property getters */
|
|
30
30
|
/******/ (() => {
|
|
31
|
-
/******/ // define getter functions for harmony exports
|
|
31
|
+
/******/ // define getter/value functions for harmony exports
|
|
32
32
|
/******/ __webpack_require__.d = (exports, definition) => {
|
|
33
|
-
/******/
|
|
34
|
-
/******/
|
|
35
|
-
/******/
|
|
33
|
+
/******/ if(Array.isArray(definition)) {
|
|
34
|
+
/******/ var i = 0;
|
|
35
|
+
/******/ while(i < definition.length) {
|
|
36
|
+
/******/ var key = definition[i++];
|
|
37
|
+
/******/ var binding = definition[i++];
|
|
38
|
+
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
39
|
+
/******/ if(binding === 0) {
|
|
40
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
41
|
+
/******/ } else {
|
|
42
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
43
|
+
/******/ }
|
|
44
|
+
/******/ } else if(binding === 0) { i++; }
|
|
45
|
+
/******/ }
|
|
46
|
+
/******/ } else {
|
|
47
|
+
/******/ for(var key in definition) {
|
|
48
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
49
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
50
|
+
/******/ }
|
|
36
51
|
/******/ }
|
|
37
52
|
/******/ }
|
|
38
53
|
/******/ };
|
|
@@ -44,7 +59,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
44
59
|
/******/ })();
|
|
45
60
|
/******/
|
|
46
61
|
/************************************************************************/
|
|
47
|
-
|
|
62
|
+
let __webpack_exports__ = {};
|
|
48
63
|
|
|
49
64
|
// EXPORTS
|
|
50
65
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -80,7 +95,7 @@ var Globals;
|
|
|
80
95
|
* Constants
|
|
81
96
|
*
|
|
82
97
|
* */
|
|
83
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.
|
|
98
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
|
|
84
99
|
window :
|
|
85
100
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
86
101
|
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 = [
|
|
@@ -407,6 +422,29 @@ const ChartDefaults = {
|
|
|
407
422
|
* @context Highcharts.Chart
|
|
408
423
|
* @apioption chart.events.load
|
|
409
424
|
*/
|
|
425
|
+
/**
|
|
426
|
+
* Fires while the chart is panned by mouse drag. Panning must be
|
|
427
|
+
* enabled through [chart.panning](#chart.panning). One parameter,
|
|
428
|
+
* `event`, is passed to the function, containing common event
|
|
429
|
+
* information as well as `event.originalEvent`, the underlying pointer
|
|
430
|
+
* event. Note that the event fires for every mouse move during the
|
|
431
|
+
* drag, not once per gesture.
|
|
432
|
+
*
|
|
433
|
+
* Calling `event.preventDefault()` or returning false prevents the
|
|
434
|
+
* default panning of the axes. In Highcharts Maps, and on ordinal axes
|
|
435
|
+
* in Highcharts Stock, the panning is applied outside the default
|
|
436
|
+
* action and is not prevented.
|
|
437
|
+
*
|
|
438
|
+
* Panning by touch does not fire this event, unless
|
|
439
|
+
* [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
|
|
440
|
+
* no zoom type is set. Single-finger drags are then handled as mouse
|
|
441
|
+
* drags and fire this event.
|
|
442
|
+
*
|
|
443
|
+
* @type {Highcharts.ChartPanCallbackFunction}
|
|
444
|
+
* @since 7.0.2
|
|
445
|
+
* @context Highcharts.Chart
|
|
446
|
+
* @apioption chart.events.pan
|
|
447
|
+
*/
|
|
410
448
|
/**
|
|
411
449
|
* Fires when the chart is redrawn, either after a call to
|
|
412
450
|
* `chart.redraw()` or after an axis, series or point is modified with
|
|
@@ -995,7 +1033,7 @@ const ChartDefaults = {
|
|
|
995
1033
|
* @type {Highcharts.ColorType}
|
|
996
1034
|
* @since 2.1.7
|
|
997
1035
|
*/
|
|
998
|
-
selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
1036
|
+
selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
999
1037
|
/**
|
|
1000
1038
|
* Whether to apply a drop shadow to the global series group. This causes
|
|
1001
1039
|
* all the series to have the same shadow. Contrary to the `series.shadow`
|
|
@@ -2421,7 +2459,7 @@ function getStyle(el, prop, toInt) {
|
|
|
2421
2459
|
const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
|
|
2422
2460
|
if (css) {
|
|
2423
2461
|
style = css.getPropertyValue(prop);
|
|
2424
|
-
if (
|
|
2462
|
+
if (toInt ?? prop !== 'opacity') {
|
|
2425
2463
|
style = pInt(style);
|
|
2426
2464
|
}
|
|
2427
2465
|
}
|
|
@@ -2671,7 +2709,7 @@ function merge(extendOrSource, ...sources) {
|
|
|
2671
2709
|
function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
|
|
2672
2710
|
let i, retInterval = interval;
|
|
2673
2711
|
// Round to a tenfold of 1, 2, 2.5 or 5
|
|
2674
|
-
magnitude =
|
|
2712
|
+
magnitude = (magnitude ?? getMagnitude(interval));
|
|
2675
2713
|
const normalized = interval / magnitude;
|
|
2676
2714
|
// Multiples for a linear scale
|
|
2677
2715
|
if (!multiples) {
|
|
@@ -2784,20 +2822,22 @@ function pad(number, length, padder) {
|
|
|
2784
2822
|
.replace('-', '')
|
|
2785
2823
|
.length).join(padder || '0') + number;
|
|
2786
2824
|
}
|
|
2787
|
-
/* eslint-disable jsdoc
|
|
2825
|
+
/* eslint-disable valid-jsdoc */
|
|
2788
2826
|
/**
|
|
2789
2827
|
* Return the first value that is not null or undefined.
|
|
2790
2828
|
*
|
|
2829
|
+
* @deprecated 13.0.2
|
|
2830
|
+
* Use nullish coalescing (`??`) or explicit fallback logic instead.
|
|
2831
|
+
*
|
|
2791
2832
|
* @function Highcharts.pick<T>
|
|
2792
2833
|
*
|
|
2793
|
-
* @param {...
|
|
2834
|
+
* @param {...(T|null|undefined)} args
|
|
2794
2835
|
* Variable number of arguments to inspect.
|
|
2795
2836
|
*
|
|
2796
2837
|
* @return {T}
|
|
2797
2838
|
* The value of the first argument that is not null or undefined.
|
|
2798
2839
|
*/
|
|
2799
|
-
function pick() {
|
|
2800
|
-
const args = arguments;
|
|
2840
|
+
function pick(...args) {
|
|
2801
2841
|
const length = args.length;
|
|
2802
2842
|
for (let i = 0; i < length; i++) {
|
|
2803
2843
|
const arg = args[i];
|
|
@@ -2806,7 +2846,7 @@ function pick() {
|
|
|
2806
2846
|
}
|
|
2807
2847
|
}
|
|
2808
2848
|
}
|
|
2809
|
-
/* eslint-enable jsdoc
|
|
2849
|
+
/* eslint-enable valid-jsdoc */
|
|
2810
2850
|
/**
|
|
2811
2851
|
* Shortcut for parseInt
|
|
2812
2852
|
*
|
|
@@ -3189,7 +3229,8 @@ function insertItem(item, collection) {
|
|
|
3189
3229
|
!collection[i] ||
|
|
3190
3230
|
// Handle index option, the element to insert has lower index
|
|
3191
3231
|
(isNumber(indexOption) &&
|
|
3192
|
-
indexOption <
|
|
3232
|
+
indexOption < (collection[i].options.index ??
|
|
3233
|
+
collection[i]._i)) ||
|
|
3193
3234
|
// Insert the new item before other internal items
|
|
3194
3235
|
// (navigator)
|
|
3195
3236
|
collection[i].options.isInternal) {
|
|
@@ -3275,7 +3316,7 @@ const uniqueKey = (function () {
|
|
|
3275
3316
|
* State of the serial mode.
|
|
3276
3317
|
*/
|
|
3277
3318
|
function useSerialIds(mode) {
|
|
3278
|
-
return (serialMode =
|
|
3319
|
+
return (serialMode = (mode ?? serialMode));
|
|
3279
3320
|
}
|
|
3280
3321
|
/* *
|
|
3281
3322
|
*
|
|
@@ -3741,6 +3782,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
|
|
|
3741
3782
|
*
|
|
3742
3783
|
* @param {Highcharts.TimeOptions} [options] Time options as defined in
|
|
3743
3784
|
* [chart.options.time](/highcharts/time).
|
|
3785
|
+
*
|
|
3786
|
+
* @param {Highcharts.LangOptions} [lang]
|
|
3787
|
+
* Language options. When `options.locale` is not set, `lang.locale` is used as
|
|
3788
|
+
* the locale fallback for locale-aware date formatting.
|
|
3744
3789
|
*/
|
|
3745
3790
|
class TimeBase {
|
|
3746
3791
|
/* *
|
|
@@ -3759,8 +3804,8 @@ class TimeBase {
|
|
|
3759
3804
|
};
|
|
3760
3805
|
this.variableTimezone = false;
|
|
3761
3806
|
this.Date = TimeBase_win.Date;
|
|
3762
|
-
this.update(options);
|
|
3763
3807
|
this.lang = lang;
|
|
3808
|
+
this.update(options);
|
|
3764
3809
|
}
|
|
3765
3810
|
/* *
|
|
3766
3811
|
*
|
|
@@ -3872,7 +3917,9 @@ class TimeBase {
|
|
|
3872
3917
|
/**
|
|
3873
3918
|
* Shorthand to get a cached `Intl.DateTimeFormat` instance.
|
|
3874
3919
|
*/
|
|
3875
|
-
dateTimeFormat(options, timestamp, locale = this.options.locale ||
|
|
3920
|
+
dateTimeFormat(options, timestamp, locale = (this.options.locale ||
|
|
3921
|
+
this.lang?.locale ||
|
|
3922
|
+
pageLang)) {
|
|
3876
3923
|
const cacheKey = JSON.stringify(options) + locale;
|
|
3877
3924
|
if (isString(options)) {
|
|
3878
3925
|
options = this.str2dtf(options);
|
|
@@ -3958,17 +4005,16 @@ class TimeBase {
|
|
|
3958
4005
|
// eslint-disable-next-line new-cap
|
|
3959
4006
|
let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
|
|
3960
4007
|
if (this.timezone !== 'UTC') {
|
|
3961
|
-
const offset = this.getTimezoneOffset(d);
|
|
4008
|
+
const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
|
|
3962
4009
|
d += offset;
|
|
3963
|
-
// Adjustments close to DST transitions
|
|
3964
4010
|
if (
|
|
3965
|
-
//
|
|
3966
|
-
//
|
|
4011
|
+
// Limit the number of calls to `getTimezoneOffset` to months
|
|
4012
|
+
// where DST changes may occur. According to
|
|
3967
4013
|
// https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
|
|
3968
4014
|
// DST change may only occur in these months.
|
|
3969
4015
|
[2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
|
|
3970
|
-
// DST
|
|
3971
|
-
(
|
|
4016
|
+
// DST changes only occur at night (#24420)
|
|
4017
|
+
(localHours < 5 || localHours > 20)) {
|
|
3972
4018
|
const newOffset = this.getTimezoneOffset(d);
|
|
3973
4019
|
if (offset !== newOffset) {
|
|
3974
4020
|
d += newOffset - offset;
|
|
@@ -6705,6 +6751,9 @@ const defaultOptions = {
|
|
|
6705
6751
|
* below the column, but as `followTouchMove` is true, the tooltip will
|
|
6706
6752
|
* jump from column to column as the user swipes across the plot area.
|
|
6707
6753
|
*
|
|
6754
|
+
* @sample {highcharts} highcharts/tooltip/followtouchmove/
|
|
6755
|
+
* Tooltip follows touch move
|
|
6756
|
+
*
|
|
6708
6757
|
* @type {boolean}
|
|
6709
6758
|
* @default {highcharts} true
|
|
6710
6759
|
* @default {highstock} true
|
|
@@ -7487,10 +7536,14 @@ const defaultOptions = {
|
|
|
7487
7536
|
* @type {Highcharts.CSSObject}
|
|
7488
7537
|
*/
|
|
7489
7538
|
style: {
|
|
7490
|
-
/**
|
|
7539
|
+
/**
|
|
7540
|
+
* @type {Highcharts.ColorType}
|
|
7541
|
+
*/
|
|
7491
7542
|
color: 'var(--highcharts-neutral-color-80)',
|
|
7492
7543
|
cursor: 'default',
|
|
7493
|
-
/**
|
|
7544
|
+
/**
|
|
7545
|
+
* @type {number|string}
|
|
7546
|
+
*/
|
|
7494
7547
|
fontSize: '0.8em'
|
|
7495
7548
|
},
|
|
7496
7549
|
/**
|
|
@@ -7806,6 +7859,41 @@ const DefaultOptions = {
|
|
|
7806
7859
|
* @param {global.Event} event
|
|
7807
7860
|
* The event that occurred.
|
|
7808
7861
|
*/
|
|
7862
|
+
/**
|
|
7863
|
+
* Gets fired while the chart is panned by mouse drag. Calling
|
|
7864
|
+
* `event.preventDefault()` or returning `false` prevents the default panning
|
|
7865
|
+
* of the axes.
|
|
7866
|
+
*
|
|
7867
|
+
* @callback Highcharts.ChartPanCallbackFunction
|
|
7868
|
+
*
|
|
7869
|
+
* @param {Highcharts.Chart} this
|
|
7870
|
+
* The chart on which the event occurred.
|
|
7871
|
+
*
|
|
7872
|
+
* @param {Highcharts.ChartPanEventObject} event
|
|
7873
|
+
* The event that occurred.
|
|
7874
|
+
*/
|
|
7875
|
+
/**
|
|
7876
|
+
* Contains common event information. Through the `originalEvent` property you
|
|
7877
|
+
* can access the pointer event that triggered the panning.
|
|
7878
|
+
*
|
|
7879
|
+
* @interface Highcharts.ChartPanEventObject
|
|
7880
|
+
*/ /**
|
|
7881
|
+
* The pointer event that triggered the panning.
|
|
7882
|
+
* @name Highcharts.ChartPanEventObject#originalEvent
|
|
7883
|
+
* @type {Highcharts.PointerEventObject}
|
|
7884
|
+
*/ /**
|
|
7885
|
+
* Prevents the default behavior of the event.
|
|
7886
|
+
* @name Highcharts.ChartPanEventObject#preventDefault
|
|
7887
|
+
* @type {Function}
|
|
7888
|
+
*/ /**
|
|
7889
|
+
* The event target.
|
|
7890
|
+
* @name Highcharts.ChartPanEventObject#target
|
|
7891
|
+
* @type {Highcharts.Chart}
|
|
7892
|
+
*/ /**
|
|
7893
|
+
* The event type.
|
|
7894
|
+
* @name Highcharts.ChartPanEventObject#type
|
|
7895
|
+
* @type {"pan"}
|
|
7896
|
+
*/
|
|
7809
7897
|
/**
|
|
7810
7898
|
* Fires when the chart is redrawn, either after a call to `chart.redraw()` or
|
|
7811
7899
|
* after an axis, series or point is modified with the `redraw` option set to
|
|
@@ -8181,7 +8269,9 @@ Color.None = new Color(''); // Must be last static for init
|
|
|
8181
8269
|
*/
|
|
8182
8270
|
/**
|
|
8183
8271
|
* A valid color type than can be parsed and handled by Highcharts. It can be a
|
|
8184
|
-
* color string, a gradient object, or a pattern
|
|
8272
|
+
* color string (including CSS expressions), a gradient object, or a pattern
|
|
8273
|
+
* object. Read more about colors in the [Highcharts
|
|
8274
|
+
* documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
8185
8275
|
*
|
|
8186
8276
|
* @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
|
|
8187
8277
|
*/
|
|
@@ -8413,24 +8503,22 @@ class Fx {
|
|
|
8413
8503
|
*/
|
|
8414
8504
|
update() {
|
|
8415
8505
|
const elem = this.elem, prop = this.prop, // If destroyed, it is null
|
|
8416
|
-
now = this.now, step = this.options.step;
|
|
8506
|
+
now = this.now ?? 1, step = this.options.step;
|
|
8417
8507
|
// Animation setter defined from outside
|
|
8418
8508
|
if (this[prop + 'Setter']) {
|
|
8419
8509
|
this[prop + 'Setter']();
|
|
8420
8510
|
// Other animations on SVGElement
|
|
8421
8511
|
}
|
|
8422
|
-
else if (elem.attr) {
|
|
8512
|
+
else if (elem && elem.attr) {
|
|
8423
8513
|
if (elem.element) {
|
|
8424
|
-
elem.attr(prop, now,
|
|
8514
|
+
elem.attr(prop, now, void 0, true);
|
|
8425
8515
|
}
|
|
8426
8516
|
// HTML styles, raw HTML content like container size
|
|
8427
8517
|
}
|
|
8428
|
-
else {
|
|
8429
|
-
elem.style[prop] = now + this.unit;
|
|
8430
|
-
}
|
|
8431
|
-
if (step) {
|
|
8432
|
-
step.call(elem, now, this);
|
|
8518
|
+
else if (elem) {
|
|
8519
|
+
elem.style[prop] = now + (this.unit || '');
|
|
8433
8520
|
}
|
|
8521
|
+
step?.call(elem, now, this);
|
|
8434
8522
|
}
|
|
8435
8523
|
/**
|
|
8436
8524
|
* Run an animation.
|
|
@@ -8448,12 +8536,10 @@ class Fx {
|
|
|
8448
8536
|
*
|
|
8449
8537
|
*/
|
|
8450
8538
|
run(from, to, unit) {
|
|
8451
|
-
const
|
|
8452
|
-
return timer.stopped ? false : self.step(gotoEnd);
|
|
8453
|
-
}, requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8539
|
+
const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8454
8540
|
function (step) {
|
|
8455
8541
|
setTimeout(step, 13);
|
|
8456
|
-
}, step =
|
|
8542
|
+
}, step = () => {
|
|
8457
8543
|
for (let i = 0; i < Fx.timers.length; i++) {
|
|
8458
8544
|
if (!Fx.timers[i]()) {
|
|
8459
8545
|
Fx.timers.splice(i--, 1);
|
|
@@ -8463,11 +8549,11 @@ class Fx {
|
|
|
8463
8549
|
requestAnimationFrame(step);
|
|
8464
8550
|
}
|
|
8465
8551
|
};
|
|
8466
|
-
if (from === to && !
|
|
8467
|
-
delete
|
|
8468
|
-
if (
|
|
8469
|
-
Object.keys(
|
|
8470
|
-
|
|
8552
|
+
if (from === to && !elem['forceAnimate:' + this.prop]) {
|
|
8553
|
+
delete curAnim[this.prop];
|
|
8554
|
+
if (complete &&
|
|
8555
|
+
Object.keys(curAnim).length === 0) {
|
|
8556
|
+
complete.call(elem);
|
|
8471
8557
|
}
|
|
8472
8558
|
}
|
|
8473
8559
|
else { // #7166
|
|
@@ -8477,7 +8563,7 @@ class Fx {
|
|
|
8477
8563
|
this.unit = unit;
|
|
8478
8564
|
this.now = this.start;
|
|
8479
8565
|
this.pos = 0;
|
|
8480
|
-
timer.elem =
|
|
8566
|
+
timer.elem = elem;
|
|
8481
8567
|
timer.prop = this.prop;
|
|
8482
8568
|
if (timer() && Fx.timers.push(timer) === 1) {
|
|
8483
8569
|
requestAnimationFrame(step);
|
|
@@ -8498,7 +8584,8 @@ class Fx {
|
|
|
8498
8584
|
step(gotoEnd) {
|
|
8499
8585
|
const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
|
|
8500
8586
|
let ret, done;
|
|
8501
|
-
|
|
8587
|
+
// #2616, element is destroyed
|
|
8588
|
+
if (elem?.attr && !elem.element) {
|
|
8502
8589
|
ret = false;
|
|
8503
8590
|
}
|
|
8504
8591
|
else if (gotoEnd || t >= duration + this.startTime) {
|
|
@@ -8727,7 +8814,8 @@ Fx.timers = [];
|
|
|
8727
8814
|
* so it should be moved to the SVGRenderer.
|
|
8728
8815
|
*/
|
|
8729
8816
|
function setAnimation(animation, chart) {
|
|
8730
|
-
chart.renderer.globalAnimation =
|
|
8817
|
+
chart.renderer.globalAnimation =
|
|
8818
|
+
animation ?? chart.options.chart.animation ?? true;
|
|
8731
8819
|
}
|
|
8732
8820
|
/**
|
|
8733
8821
|
* Get the animation in object form, where a disabled animation is always
|
|
@@ -8788,6 +8876,11 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8788
8876
|
/**
|
|
8789
8877
|
* The global animate method, which uses Fx to create individual animators.
|
|
8790
8878
|
*
|
|
8879
|
+
* @sample highcharts/members/renderer-basic
|
|
8880
|
+
* SVG elements with animation
|
|
8881
|
+
* @sample highcharts/members/animate
|
|
8882
|
+
* Animation without an owner element
|
|
8883
|
+
*
|
|
8791
8884
|
* @function Highcharts.animate
|
|
8792
8885
|
*
|
|
8793
8886
|
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
|
|
@@ -8803,14 +8896,12 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8803
8896
|
*
|
|
8804
8897
|
* @return {void}
|
|
8805
8898
|
*/
|
|
8806
|
-
function animate(el, params, opt) {
|
|
8807
|
-
let start, unit = '', end, fx, args;
|
|
8899
|
+
function animate(el, params = { pos: 1 }, opt) {
|
|
8808
8900
|
if (!isObject(opt)) { // Number or undefined/null
|
|
8809
|
-
args = arguments;
|
|
8810
8901
|
opt = {
|
|
8811
|
-
duration:
|
|
8812
|
-
easing:
|
|
8813
|
-
complete:
|
|
8902
|
+
duration: arguments[2],
|
|
8903
|
+
easing: arguments[3],
|
|
8904
|
+
complete: arguments[4]
|
|
8814
8905
|
};
|
|
8815
8906
|
}
|
|
8816
8907
|
if (!isNumber(opt.duration)) {
|
|
@@ -8820,22 +8911,23 @@ function animate(el, params, opt) {
|
|
|
8820
8911
|
opt.easing :
|
|
8821
8912
|
(Math[opt.easing] || Math.easeInOutSine);
|
|
8822
8913
|
opt.curAnim = merge(params);
|
|
8823
|
-
objectEach(params,
|
|
8914
|
+
objectEach(params, (val, prop) => {
|
|
8824
8915
|
// Stop current running animation of this property
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
|
|
8916
|
+
if (el) {
|
|
8917
|
+
stop(el, prop);
|
|
8918
|
+
}
|
|
8919
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d;
|
|
8920
|
+
let start = 0, end = void 0, unit = '';
|
|
8921
|
+
if (prop === 'd' && isArray(d)) {
|
|
8922
|
+
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
8923
|
+
fx.toD = d;
|
|
8832
8924
|
end = 1;
|
|
8833
8925
|
}
|
|
8834
|
-
else if (el
|
|
8926
|
+
else if (el?.attr) {
|
|
8835
8927
|
start = el.attr(prop);
|
|
8836
8928
|
}
|
|
8837
|
-
else {
|
|
8838
|
-
start =
|
|
8929
|
+
else if (el) {
|
|
8930
|
+
start = +(getStyle(el, prop) || 0);
|
|
8839
8931
|
if (prop !== 'opacity') {
|
|
8840
8932
|
unit = 'px';
|
|
8841
8933
|
}
|
|
@@ -8846,7 +8938,10 @@ function animate(el, params, opt) {
|
|
|
8846
8938
|
if (typeof end === 'string' && end.match('px')) {
|
|
8847
8939
|
end = end.replace(/px/g, ''); // #4351
|
|
8848
8940
|
}
|
|
8849
|
-
|
|
8941
|
+
// Empty dashstyle animation crashes treemap on hover
|
|
8942
|
+
if (defined(end)) {
|
|
8943
|
+
fx.run(start, end, unit);
|
|
8944
|
+
}
|
|
8850
8945
|
});
|
|
8851
8946
|
}
|
|
8852
8947
|
/**
|
|
@@ -8870,28 +8965,11 @@ function animate(el, params, opt) {
|
|
|
8870
8965
|
* improvement in all cases where we stop the animation from .attr. Instead of
|
|
8871
8966
|
* stopping everything, we can just stop the actual attributes we're setting.
|
|
8872
8967
|
*/
|
|
8873
|
-
|
|
8874
|
-
|
|
8875
|
-
|
|
8876
|
-
while (i--) {
|
|
8877
|
-
if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
|
|
8878
|
-
Animation_Fx.timers[i].stopped = true; // #4667
|
|
8879
|
-
}
|
|
8968
|
+
const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
|
|
8969
|
+
if (timer.elem === el && (!prop || prop === timer.prop)) {
|
|
8970
|
+
timer.stopped = true; // #4667
|
|
8880
8971
|
}
|
|
8881
|
-
}
|
|
8882
|
-
const animationExports = {
|
|
8883
|
-
animate,
|
|
8884
|
-
animObject,
|
|
8885
|
-
getDeferredAnimation,
|
|
8886
|
-
setAnimation,
|
|
8887
|
-
stop
|
|
8888
|
-
};
|
|
8889
|
-
/* *
|
|
8890
|
-
*
|
|
8891
|
-
* Default Export
|
|
8892
|
-
*
|
|
8893
|
-
* */
|
|
8894
|
-
/* harmony default export */ const AnimationUtilities = (animationExports);
|
|
8972
|
+
});
|
|
8895
8973
|
/* *
|
|
8896
8974
|
*
|
|
8897
8975
|
* API Options
|
|
@@ -9196,7 +9274,9 @@ class AST {
|
|
|
9196
9274
|
doc = { body };
|
|
9197
9275
|
}
|
|
9198
9276
|
const appendChildNodes = (node, addTo) => {
|
|
9199
|
-
|
|
9277
|
+
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
9278
|
+
const tagName = node.localName ||
|
|
9279
|
+
node.nodeName.toLowerCase();
|
|
9200
9280
|
// Add allowed tags
|
|
9201
9281
|
const astNode = {
|
|
9202
9282
|
tagName
|
|
@@ -9310,6 +9390,8 @@ AST.allowedAttributes = [
|
|
|
9310
9390
|
'src',
|
|
9311
9391
|
'startOffset',
|
|
9312
9392
|
'stdDeviation',
|
|
9393
|
+
'stop-color',
|
|
9394
|
+
'stop-opacity',
|
|
9313
9395
|
'stroke-linecap',
|
|
9314
9396
|
'stroke-width',
|
|
9315
9397
|
'stroke',
|
|
@@ -9796,7 +9878,7 @@ function format(str = '', ctx, owner) {
|
|
|
9796
9878
|
replacement = `"${replacement}"`;
|
|
9797
9879
|
}
|
|
9798
9880
|
}
|
|
9799
|
-
str = str.replace(match.find,
|
|
9881
|
+
str = str.replace(match.find, (replacement ?? ''));
|
|
9800
9882
|
});
|
|
9801
9883
|
return hasSub ? format(str, ctx, owner) : str;
|
|
9802
9884
|
}
|
|
@@ -9913,9 +9995,7 @@ const Templating = {
|
|
|
9913
9995
|
* API Declarations
|
|
9914
9996
|
* */
|
|
9915
9997
|
/**
|
|
9916
|
-
*
|
|
9917
|
-
*
|
|
9918
|
-
* The Highcharts.Templating interface provides a structure for defining
|
|
9998
|
+
* The Highcharts.TemplatingObject interface provides a structure for defining
|
|
9919
9999
|
* helpers. Helpers can be used as conditional blocks or functions within
|
|
9920
10000
|
* expressions. Highcharts includes several built-in helpers and supports
|
|
9921
10001
|
* the addition of custom helpers.
|
|
@@ -9923,16 +10003,21 @@ const Templating = {
|
|
|
9923
10003
|
* @see [More information](
|
|
9924
10004
|
* https://www.highcharts.com/docs/chart-concepts/templating#helpers)
|
|
9925
10005
|
*
|
|
9926
|
-
* @
|
|
9927
|
-
|
|
9928
|
-
|
|
9929
|
-
|
|
9930
|
-
|
|
9931
|
-
|
|
9932
|
-
|
|
9933
|
-
|
|
9934
|
-
|
|
9935
|
-
|
|
10006
|
+
* @interface Highcharts.TemplatingObject
|
|
10007
|
+
*/ /**
|
|
10008
|
+
* @example
|
|
10009
|
+
* // Define a custom helper to return the absolute value of a number
|
|
10010
|
+
* Highcharts.Templating.helpers.abs = value => Math.abs(value);
|
|
10011
|
+
*
|
|
10012
|
+
* // Usage in a format string
|
|
10013
|
+
* format: 'Absolute value: {abs point.y}'
|
|
10014
|
+
*
|
|
10015
|
+
* @name Highcharts.TemplatingObject#helpers
|
|
10016
|
+
* @type {Record<string, Function>}
|
|
10017
|
+
*/ /**
|
|
10018
|
+
* @name Highcharts.Templating
|
|
10019
|
+
* @type {Highcharts.TemplatingObject}
|
|
10020
|
+
*/
|
|
9936
10021
|
(''); // Keeps doclets above in file
|
|
9937
10022
|
|
|
9938
10023
|
;// ./code/es-modules/Core/Renderer/RendererUtilities.js
|
|
@@ -10042,7 +10127,7 @@ var RendererUtilities;
|
|
|
10042
10127
|
boxes = boxes.map((box) => ({
|
|
10043
10128
|
size: box.size,
|
|
10044
10129
|
targets: [box.target],
|
|
10045
|
-
align:
|
|
10130
|
+
align: (box.align ?? 0.5)
|
|
10046
10131
|
}));
|
|
10047
10132
|
while (overlapping) {
|
|
10048
10133
|
// Initial positions: target centered in box
|
|
@@ -10141,7 +10226,6 @@ var RendererUtilities;
|
|
|
10141
10226
|
* */
|
|
10142
10227
|
|
|
10143
10228
|
|
|
10144
|
-
const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
|
|
10145
10229
|
|
|
10146
10230
|
|
|
10147
10231
|
const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
|
|
@@ -10201,8 +10285,10 @@ class SVGElement {
|
|
|
10201
10285
|
* Property value.
|
|
10202
10286
|
*/
|
|
10203
10287
|
_defaultGetter(key) {
|
|
10204
|
-
let ret =
|
|
10205
|
-
|
|
10288
|
+
let ret = (this[key + 'Value'] ??
|
|
10289
|
+
this[key] ??
|
|
10290
|
+
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10291
|
+
0);
|
|
10206
10292
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10207
10293
|
ret = parseFloat(ret);
|
|
10208
10294
|
}
|
|
@@ -10365,7 +10451,7 @@ class SVGElement {
|
|
|
10365
10451
|
}
|
|
10366
10452
|
alignTo = void 0; // Do not use the box
|
|
10367
10453
|
}
|
|
10368
|
-
const alignToBox =
|
|
10454
|
+
const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
|
|
10369
10455
|
// Default: left align
|
|
10370
10456
|
x = (alignToBox.x || 0) + (alignOptions.x || 0) +
|
|
10371
10457
|
((alignToBox.width || 0) - (alignOptions.width || 0)) *
|
|
@@ -10425,7 +10511,7 @@ class SVGElement {
|
|
|
10425
10511
|
* Returns the SVGElement for chaining.
|
|
10426
10512
|
*/
|
|
10427
10513
|
animate(params, options, complete) {
|
|
10428
|
-
const animOptions =
|
|
10514
|
+
const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
|
|
10429
10515
|
// When the page is hidden save resources in the background by not
|
|
10430
10516
|
// running animation at all (#9749).
|
|
10431
10517
|
if (SVGElement_doc.hidden) {
|
|
@@ -10440,7 +10526,7 @@ class SVGElement {
|
|
|
10440
10526
|
// If defer option is defined delay the animation #12901
|
|
10441
10527
|
syncTimeout(() => {
|
|
10442
10528
|
if (this.element) {
|
|
10443
|
-
|
|
10529
|
+
animate(this, params, animOptions);
|
|
10444
10530
|
}
|
|
10445
10531
|
}, deferTime);
|
|
10446
10532
|
}
|
|
@@ -10614,7 +10700,7 @@ class SVGElement {
|
|
|
10614
10700
|
// Unless .attr is from the animator update, stop current
|
|
10615
10701
|
// running animation of this property
|
|
10616
10702
|
if (!continueAnimation) {
|
|
10617
|
-
|
|
10703
|
+
stop(this, key);
|
|
10618
10704
|
}
|
|
10619
10705
|
// Special handling of symbol attributes
|
|
10620
10706
|
if (this.symbolName &&
|
|
@@ -10917,7 +11003,7 @@ class SVGElement {
|
|
|
10917
11003
|
.split(','); // Ending comma
|
|
10918
11004
|
i = v.length;
|
|
10919
11005
|
while (i--) {
|
|
10920
|
-
v[i] = '' + (pInt(v[i]) *
|
|
11006
|
+
v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
|
|
10921
11007
|
}
|
|
10922
11008
|
value = v.join(',').replace(/NaN/g, 'none'); // #3226
|
|
10923
11009
|
this.element.setAttribute('stroke-dasharray', value);
|
|
@@ -10934,7 +11020,7 @@ class SVGElement {
|
|
|
10934
11020
|
// Remove events
|
|
10935
11021
|
element.onclick = element.onmouseout = element.onmouseover =
|
|
10936
11022
|
element.onmousemove = element.point = null;
|
|
10937
|
-
|
|
11023
|
+
stop(wrapper); // Stop running animations
|
|
10938
11024
|
if (wrapper.clipPath && ownerSVGElement) {
|
|
10939
11025
|
const clipPath = wrapper.clipPath;
|
|
10940
11026
|
// Look for existing references to this clipPath and remove them
|
|
@@ -11057,7 +11143,7 @@ class SVGElement {
|
|
|
11057
11143
|
* The bounding box with `x`, `y`, `width` and `height` properties.
|
|
11058
11144
|
*/
|
|
11059
11145
|
getBBox(reload, rot) {
|
|
11060
|
-
const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation =
|
|
11146
|
+
const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = (rot ?? wrapper.rotation ?? 0), fontSize = renderer.styledMode ? (element &&
|
|
11061
11147
|
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
|
|
11062
11148
|
renderer.rootFontSize,
|
|
11063
11149
|
this.textWidth, // #7874, also useHTML
|
|
@@ -11583,7 +11669,7 @@ class SVGElement {
|
|
|
11583
11669
|
symbolAttr(hash) {
|
|
11584
11670
|
const wrapper = this;
|
|
11585
11671
|
SVGElement.symbolCustomAttribs.forEach(function (key) {
|
|
11586
|
-
wrapper[key] =
|
|
11672
|
+
wrapper[key] = (hash[key] ?? wrapper[key]);
|
|
11587
11673
|
});
|
|
11588
11674
|
wrapper.attr({
|
|
11589
11675
|
d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
|
|
@@ -11623,7 +11709,7 @@ class SVGElement {
|
|
|
11623
11709
|
}
|
|
11624
11710
|
// Replace text content and escape markup
|
|
11625
11711
|
titleNode.textContent = replaceNested(// Scan #[73]
|
|
11626
|
-
|
|
11712
|
+
(value ?? ''), // #3276, #3895
|
|
11627
11713
|
[/<[^>]*>/g, '']).replace(/</g, '<').replace(/>/g, '>');
|
|
11628
11714
|
}
|
|
11629
11715
|
/**
|
|
@@ -12401,7 +12487,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12401
12487
|
if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
|
|
12402
12488
|
this.updateBoxSize();
|
|
12403
12489
|
}
|
|
12404
|
-
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft =
|
|
12490
|
+
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
|
|
12405
12491
|
let bBox = {
|
|
12406
12492
|
width,
|
|
12407
12493
|
height,
|
|
@@ -12454,7 +12540,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12454
12540
|
this.attr({
|
|
12455
12541
|
// Alignment is available now (#3295, 0 not rendered if given
|
|
12456
12542
|
// as a value)
|
|
12457
|
-
text:
|
|
12543
|
+
text: (this.textStr ?? ''),
|
|
12458
12544
|
x: this.x || 0,
|
|
12459
12545
|
y: this.y || 0
|
|
12460
12546
|
});
|
|
@@ -12610,8 +12696,8 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12610
12696
|
/** @internal */
|
|
12611
12697
|
getPaddedWidth() {
|
|
12612
12698
|
const padding = this.padding;
|
|
12613
|
-
const paddingLeft =
|
|
12614
|
-
const paddingRight =
|
|
12699
|
+
const paddingLeft = (this.paddingLeft ?? padding);
|
|
12700
|
+
const paddingRight = (this.paddingRight ?? padding);
|
|
12615
12701
|
return ((this.widthSetting || this.bBox.width || 0) +
|
|
12616
12702
|
paddingLeft +
|
|
12617
12703
|
paddingRight);
|
|
@@ -12712,7 +12798,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12712
12798
|
const arc = [];
|
|
12713
12799
|
if (options) {
|
|
12714
12800
|
let start = options.start || 0, end = options.end || 0;
|
|
12715
|
-
const rx =
|
|
12801
|
+
const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
|
|
12716
12802
|
// Subtract a small number to prevent cos and sin of start and end
|
|
12717
12803
|
// from becoming equal on 360 arcs (#1561). See "Arc proximity"
|
|
12718
12804
|
// tests at samples/unit-tests/svgrenderer/symbol/demo.js
|
|
@@ -12722,16 +12808,17 @@ function arc(cx, cy, w, h, options) {
|
|
|
12722
12808
|
start = Math.PI / 2;
|
|
12723
12809
|
end = Math.PI * 2.5 - proximity;
|
|
12724
12810
|
}
|
|
12725
|
-
const innerRadius = options.innerR, open =
|
|
12811
|
+
const innerRadius = options.innerR, open = (options.open ?? fullCircle), cosStart = fullCircle ? 0 : Math.cos(start), sinStart = fullCircle ? 1 : Math.sin(start), cosEnd = fullCircle ? 0 : Math.cos(end), sinEnd = fullCircle ? 1 : Math.sin(end),
|
|
12726
12812
|
// Proximity takes care of rounding errors around PI (#6971)
|
|
12727
|
-
longArc =
|
|
12813
|
+
longArc = options.longArc ??
|
|
12814
|
+
(end - start - Math.PI < proximity ? 0 : 1);
|
|
12728
12815
|
let arcSegment = [
|
|
12729
12816
|
'A', // ArcTo
|
|
12730
12817
|
rx, // X radius
|
|
12731
12818
|
ry, // Y radius
|
|
12732
12819
|
0, // Slanting
|
|
12733
12820
|
longArc, // Long or short arc
|
|
12734
|
-
|
|
12821
|
+
(options.clockwise ?? 1), // Clockwise
|
|
12735
12822
|
// Use a static pixel offset for full circle (#21701)
|
|
12736
12823
|
cx + (fullCircle ? 0.001 : rx * cosEnd),
|
|
12737
12824
|
cy + ry * sinEnd
|
|
@@ -13262,7 +13349,7 @@ class TextBuilder {
|
|
|
13262
13349
|
* @internal
|
|
13263
13350
|
*/
|
|
13264
13351
|
buildSVG() {
|
|
13265
|
-
const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr =
|
|
13352
|
+
const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = (wrapper.textStr ?? '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = !wrapper.added && renderer.box, regexMatchBreaks = /<br.*?>/g,
|
|
13266
13353
|
// The buildText code is quite heavy, so if we're not changing
|
|
13267
13354
|
// something that affects the text, skip it (#6113).
|
|
13268
13355
|
textCache = [
|
|
@@ -13846,7 +13933,7 @@ class SVGRenderer {
|
|
|
13846
13933
|
this.url = this.getReferenceURL();
|
|
13847
13934
|
// Add description
|
|
13848
13935
|
const desc = this.createElement('desc').add();
|
|
13849
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.
|
|
13936
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
|
|
13850
13937
|
this.defs = this.createElement('defs').add();
|
|
13851
13938
|
this.allowHTML = allowHTML;
|
|
13852
13939
|
this.forExport = forExport;
|
|
@@ -14632,7 +14719,7 @@ class SVGRenderer {
|
|
|
14632
14719
|
this.attr('height')
|
|
14633
14720
|
});
|
|
14634
14721
|
},
|
|
14635
|
-
duration:
|
|
14722
|
+
duration: (animate ?? true) ? void 0 : 0
|
|
14636
14723
|
});
|
|
14637
14724
|
renderer.alignElements();
|
|
14638
14725
|
}
|
|
@@ -14790,8 +14877,8 @@ class SVGRenderer {
|
|
|
14790
14877
|
// The image width is not always the same as the symbol width. The
|
|
14791
14878
|
// image may be centered within the symbol, as is the case when
|
|
14792
14879
|
// image shapes are used as label backgrounds, for example in flags.
|
|
14793
|
-
img.imgwidth =
|
|
14794
|
-
img.imgheight =
|
|
14880
|
+
img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
|
|
14881
|
+
img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
|
|
14795
14882
|
/**
|
|
14796
14883
|
* Set the size and position
|
|
14797
14884
|
*/
|
|
@@ -15637,7 +15724,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15637
15724
|
.attr({
|
|
15638
15725
|
text: str,
|
|
15639
15726
|
x: Math.round(x),
|
|
15640
|
-
y: Math.round(y)
|
|
15727
|
+
y: Math.round(y),
|
|
15728
|
+
// The namespace attribute is required for serialization
|
|
15729
|
+
// (export and side-by-side comparison), otherwise it
|
|
15730
|
+
// inherits the SVG namespace from foreignObject.
|
|
15731
|
+
xmlns: 'http://www.w3.org/1999/xhtml'
|
|
15641
15732
|
});
|
|
15642
15733
|
};
|
|
15643
15734
|
}
|
|
@@ -15817,8 +15908,10 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15817
15908
|
foreignObject.attr({
|
|
15818
15909
|
x: x + (this.xCorr || 0),
|
|
15819
15910
|
y: y + (this.yCorr || 0),
|
|
15820
|
-
// Add 4px to avoid ellipsis
|
|
15821
|
-
//
|
|
15911
|
+
// Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
|
|
15912
|
+
// the foreignObject with a 3px right margin. This was later
|
|
15913
|
+
// removed, but we still need to add a few pixels to avoid
|
|
15914
|
+
// ellipsis.
|
|
15822
15915
|
width: element.offsetWidth + 4,
|
|
15823
15916
|
// Add 1px to account for subpixel bounding boxes
|
|
15824
15917
|
height: element.offsetHeight + 1,
|
|
@@ -15838,25 +15931,16 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15838
15931
|
this.cTT = currentTextTransform;
|
|
15839
15932
|
}
|
|
15840
15933
|
/**
|
|
15841
|
-
* Add the element to
|
|
15842
|
-
* will be created for each ancestor SVG `g` element.
|
|
15934
|
+
* Add the element to the foreign object
|
|
15843
15935
|
*
|
|
15844
15936
|
* @internal
|
|
15845
15937
|
*/
|
|
15846
15938
|
add(parentGroup) {
|
|
15847
|
-
const { foreignObject
|
|
15939
|
+
const { foreignObject } = this;
|
|
15848
15940
|
// Foreign object
|
|
15849
15941
|
foreignObject.add(parentGroup);
|
|
15850
|
-
|
|
15851
|
-
|
|
15852
|
-
renderer.createElement('body')
|
|
15853
|
-
.attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
|
|
15854
|
-
.css({
|
|
15855
|
-
background: 'transparent',
|
|
15856
|
-
// 3px is to avoid clipping on the right
|
|
15857
|
-
margin: '0 3px 0 0'
|
|
15858
|
-
})
|
|
15859
|
-
.add(foreignObject));
|
|
15942
|
+
// Add this.element to the foreign objct
|
|
15943
|
+
super.add(foreignObject);
|
|
15860
15944
|
if (this.alignOnAdd) {
|
|
15861
15945
|
this.updateTransform();
|
|
15862
15946
|
}
|
|
@@ -15891,10 +15975,20 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15891
15975
|
this[key] = value;
|
|
15892
15976
|
this.doTransform = true;
|
|
15893
15977
|
}
|
|
15978
|
+
/**
|
|
15979
|
+
* Apply visibility/opacity to the foreignObject; the HTML element
|
|
15980
|
+
* ignores them.
|
|
15981
|
+
* @internal
|
|
15982
|
+
*/
|
|
15983
|
+
visibilitySetter(value, key) {
|
|
15984
|
+
this.foreignObject.attr({ [key]: value });
|
|
15985
|
+
this[key] = value;
|
|
15986
|
+
}
|
|
15894
15987
|
}
|
|
15895
15988
|
// Some shared setters
|
|
15896
15989
|
const proto = HTMLElement.prototype;
|
|
15897
15990
|
proto.ySetter = proto.xSetter;
|
|
15991
|
+
proto.opacitySetter = proto.visibilitySetter;
|
|
15898
15992
|
/* *
|
|
15899
15993
|
*
|
|
15900
15994
|
* Default Export
|
|
@@ -16435,6 +16529,7 @@ var AxisDefaults;
|
|
|
16435
16529
|
*/
|
|
16436
16530
|
dateTimeLabelFormats: {
|
|
16437
16531
|
/**
|
|
16532
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16438
16533
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16439
16534
|
*/
|
|
16440
16535
|
millisecond: {
|
|
@@ -16460,6 +16555,7 @@ var AxisDefaults;
|
|
|
16460
16555
|
range: false
|
|
16461
16556
|
},
|
|
16462
16557
|
/**
|
|
16558
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16463
16559
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16464
16560
|
*/
|
|
16465
16561
|
second: {
|
|
@@ -16485,6 +16581,7 @@ var AxisDefaults;
|
|
|
16485
16581
|
range: false
|
|
16486
16582
|
},
|
|
16487
16583
|
/**
|
|
16584
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16488
16585
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16489
16586
|
*/
|
|
16490
16587
|
minute: {
|
|
@@ -16510,6 +16607,7 @@ var AxisDefaults;
|
|
|
16510
16607
|
range: false
|
|
16511
16608
|
},
|
|
16512
16609
|
/**
|
|
16610
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16513
16611
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16514
16612
|
*/
|
|
16515
16613
|
hour: {
|
|
@@ -16542,6 +16640,7 @@ var AxisDefaults;
|
|
|
16542
16640
|
range: false
|
|
16543
16641
|
},
|
|
16544
16642
|
/**
|
|
16643
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16545
16644
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16546
16645
|
*/
|
|
16547
16646
|
day: {
|
|
@@ -16564,6 +16663,7 @@ var AxisDefaults;
|
|
|
16564
16663
|
boundary: '%[eb]'
|
|
16565
16664
|
},
|
|
16566
16665
|
/**
|
|
16666
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16567
16667
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16568
16668
|
*/
|
|
16569
16669
|
week: {
|
|
@@ -16579,6 +16679,7 @@ var AxisDefaults;
|
|
|
16579
16679
|
main: '%[eb]'
|
|
16580
16680
|
},
|
|
16581
16681
|
/**
|
|
16682
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16582
16683
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16583
16684
|
*/
|
|
16584
16685
|
month: {
|
|
@@ -16601,6 +16702,7 @@ var AxisDefaults;
|
|
|
16601
16702
|
boundary: void 0
|
|
16602
16703
|
},
|
|
16603
16704
|
/**
|
|
16705
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16604
16706
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16605
16707
|
*/
|
|
16606
16708
|
year: {
|
|
@@ -17416,7 +17518,7 @@ var AxisDefaults;
|
|
|
17416
17518
|
* @sample {highstock} stock/xaxis/offset/
|
|
17417
17519
|
* Y axis offset by 70 px
|
|
17418
17520
|
*
|
|
17419
|
-
* @type {number}
|
|
17521
|
+
* @type {number|string}
|
|
17420
17522
|
*/
|
|
17421
17523
|
offset: void 0,
|
|
17422
17524
|
/**
|
|
@@ -19066,7 +19168,9 @@ var AxisDefaults;
|
|
|
19066
19168
|
* @product highcharts
|
|
19067
19169
|
*/
|
|
19068
19170
|
style: {
|
|
19069
|
-
/**
|
|
19171
|
+
/**
|
|
19172
|
+
* @type {Highcharts.ColorType}
|
|
19173
|
+
*/
|
|
19070
19174
|
color: 'var(--highcharts-neutral-color-100)',
|
|
19071
19175
|
/**
|
|
19072
19176
|
* @type {number|string}
|
|
@@ -19253,11 +19357,11 @@ class Tick {
|
|
|
19253
19357
|
* @function Highcharts.Tick#addLabel
|
|
19254
19358
|
*/
|
|
19255
19359
|
addLabel() {
|
|
19256
|
-
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 =
|
|
19360
|
+
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;
|
|
19257
19361
|
let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19258
19362
|
// The context value
|
|
19259
19363
|
let value = this.parameters.category || (categories ?
|
|
19260
|
-
|
|
19364
|
+
(categories[pos] ?? names[pos] ?? pos) :
|
|
19261
19365
|
pos);
|
|
19262
19366
|
if (log && isNumber(value)) {
|
|
19263
19367
|
value = correctFloat(log.lin2log(value));
|
|
@@ -19504,7 +19608,7 @@ class Tick {
|
|
|
19504
19608
|
labelOptions.y;
|
|
19505
19609
|
}
|
|
19506
19610
|
x = x +
|
|
19507
|
-
|
|
19611
|
+
(labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
|
|
19508
19612
|
labelOffsetCorrection +
|
|
19509
19613
|
rotCorr.x -
|
|
19510
19614
|
(tickmarkOffset && horiz ?
|
|
@@ -19559,7 +19663,7 @@ class Tick {
|
|
|
19559
19663
|
* @function Highcharts.Tick#handleOverflow
|
|
19560
19664
|
*/
|
|
19561
19665
|
handleOverflow(xy) {
|
|
19562
|
-
const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound =
|
|
19666
|
+
const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound = axis.labelLeft ?? Math.min(axis.pos, spacing[3]), rightBound = (axis.labelRight ?? Math.max(!axis.isRadial ? axis.pos + axis.len : 0, chartWidth - spacing[1])), label = this.label, rotation = this.rotation, factor = getAlignFactor(axis.labelAlign || label.attr('align')), labelWidth = label.getBBox().width, slotWidth = axis.getSlotWidth(tick), xCorrection = factor, css = {};
|
|
19563
19667
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19564
19668
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19565
19669
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19626,9 +19730,8 @@ class Tick {
|
|
|
19626
19730
|
* @param {number} [opacity]
|
|
19627
19731
|
*/
|
|
19628
19732
|
render(index, old, opacity) {
|
|
19629
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset =
|
|
19630
|
-
const labelOpacity =
|
|
19631
|
-
1);
|
|
19733
|
+
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, axisStart = axis.pos, axisEnd = axisStart + axis.len, pxPos = horiz ? x : y;
|
|
19734
|
+
const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
|
|
19632
19735
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19633
19736
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19634
19737
|
// axes in Safari.
|
|
@@ -19656,7 +19759,7 @@ class Tick {
|
|
|
19656
19759
|
* @param {number} opacity The opacity of the grid line
|
|
19657
19760
|
*/
|
|
19658
19761
|
renderGridLine(old, opacity) {
|
|
19659
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset =
|
|
19762
|
+
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), renderer = axis.chart.renderer;
|
|
19660
19763
|
let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19661
19764
|
if (tick.type === 'minor') {
|
|
19662
19765
|
gridLineWidth = options.minorGridLineWidth;
|
|
@@ -19712,7 +19815,7 @@ class Tick {
|
|
|
19712
19815
|
* @param {number} opacity The opacity of the mark
|
|
19713
19816
|
*/
|
|
19714
19817
|
renderMark(xy, opacity) {
|
|
19715
|
-
const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth =
|
|
19818
|
+
const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'] ?? (!type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
|
|
19716
19819
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19717
19820
|
let mark = tick.mark;
|
|
19718
19821
|
const isNewMark = !mark;
|
|
@@ -19757,7 +19860,7 @@ class Tick {
|
|
|
19757
19860
|
* @param {number} index The index of the tick
|
|
19758
19861
|
*/
|
|
19759
19862
|
renderLabel(xy, old, opacity, index) {
|
|
19760
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset =
|
|
19863
|
+
const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), x = xy.x, y = xy.y;
|
|
19761
19864
|
let show = true;
|
|
19762
19865
|
if (label && isNumber(x)) {
|
|
19763
19866
|
label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
|
|
@@ -19849,7 +19952,6 @@ class Tick {
|
|
|
19849
19952
|
* */
|
|
19850
19953
|
|
|
19851
19954
|
|
|
19852
|
-
const { animObject: Axis_animObject } = AnimationUtilities;
|
|
19853
19955
|
|
|
19854
19956
|
const { xAxis, yAxis } = Axis_AxisDefaults;
|
|
19855
19957
|
|
|
@@ -19863,12 +19965,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
|
|
|
19863
19965
|
|
|
19864
19966
|
|
|
19865
19967
|
|
|
19866
|
-
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0,
|
|
19867
|
-
// If the tick interval is greater than 0.5, avoid decimals, as
|
|
19868
|
-
// linear axes are often used to render discrete values (#3363). If
|
|
19869
|
-
// a tick amount is set, allow decimals by default, as it increases
|
|
19870
|
-
// the chances for a good fit.
|
|
19871
|
-
tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
|
|
19968
|
+
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
|
|
19872
19969
|
extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
19873
19970
|
/* *
|
|
19874
19971
|
*
|
|
@@ -19976,7 +20073,7 @@ class Axis {
|
|
|
19976
20073
|
axis.coll = coll;
|
|
19977
20074
|
fireEvent(this, 'init', { userOptions: userOptions });
|
|
19978
20075
|
// Needed in setOptions
|
|
19979
|
-
axis.opposite =
|
|
20076
|
+
axis.opposite = (userOptions.opposite ?? axis.opposite);
|
|
19980
20077
|
/**
|
|
19981
20078
|
* The side on which the axis is rendered. 0 is top, 1 is right, 2
|
|
19982
20079
|
* is bottom and 3 is left.
|
|
@@ -19984,10 +20081,9 @@ class Axis {
|
|
|
19984
20081
|
* @name Highcharts.Axis#side
|
|
19985
20082
|
* @type {number}
|
|
19986
20083
|
*/
|
|
19987
|
-
axis.side =
|
|
20084
|
+
axis.side = (userOptions.side ?? axis.side ?? (horiz ?
|
|
19988
20085
|
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
19989
|
-
(axis.opposite ? 1 : 3))
|
|
19990
|
-
);
|
|
20086
|
+
(axis.opposite ? 1 : 3)));
|
|
19991
20087
|
/**
|
|
19992
20088
|
* Current options for the axis after merge of defaults and user's
|
|
19993
20089
|
* options.
|
|
@@ -20016,7 +20112,7 @@ class Axis {
|
|
|
20016
20112
|
* @name Highcharts.Axis#reversed
|
|
20017
20113
|
* @type {boolean}
|
|
20018
20114
|
*/
|
|
20019
|
-
axis.reversed =
|
|
20115
|
+
axis.reversed = (options.reversed ?? axis.reversed);
|
|
20020
20116
|
axis.visible = options.visible;
|
|
20021
20117
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20022
20118
|
// Initial categories
|
|
@@ -20104,7 +20200,7 @@ class Axis {
|
|
|
20104
20200
|
* @name Highcharts.Axis#crosshair
|
|
20105
20201
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20106
20202
|
*/
|
|
20107
|
-
const crosshair =
|
|
20203
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
|
|
20108
20204
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20109
20205
|
// Register. Don't add it again on Axis.update().
|
|
20110
20206
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20288,8 +20384,8 @@ class Axis {
|
|
|
20288
20384
|
seriesDataMax = xExtremes.max;
|
|
20289
20385
|
}
|
|
20290
20386
|
if (xData.length) {
|
|
20291
|
-
axis.dataMin = Math.min(
|
|
20292
|
-
axis.dataMax = Math.max(
|
|
20387
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20388
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20293
20389
|
}
|
|
20294
20390
|
}
|
|
20295
20391
|
// Get dataMin and dataMax for Y axes, as well as handle
|
|
@@ -20304,11 +20400,11 @@ class Axis {
|
|
|
20304
20400
|
// doesn't have active y data, we continue with nulls
|
|
20305
20401
|
if (isNumber(dataExtremes.dataMin)) {
|
|
20306
20402
|
seriesDataMin = dataExtremes.dataMin;
|
|
20307
|
-
axis.dataMin = Math.min(
|
|
20403
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20308
20404
|
}
|
|
20309
20405
|
if (isNumber(dataExtremes.dataMax)) {
|
|
20310
20406
|
seriesDataMax = dataExtremes.dataMax;
|
|
20311
|
-
axis.dataMax = Math.max(
|
|
20407
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20312
20408
|
}
|
|
20313
20409
|
// Adjust to threshold
|
|
20314
20410
|
if (defined(threshold)) {
|
|
@@ -20463,7 +20559,7 @@ class Axis {
|
|
|
20463
20559
|
translatedValue
|
|
20464
20560
|
};
|
|
20465
20561
|
fireEvent(this, 'getPlotLinePath', evt, function (e) {
|
|
20466
|
-
translatedValue =
|
|
20562
|
+
translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
|
|
20467
20563
|
// Keep the translated value within sane bounds, and avoid Infinity
|
|
20468
20564
|
// to fail the isNumber test (#7709).
|
|
20469
20565
|
translatedValue = clamp(translatedValue, -1e9, 1e9);
|
|
@@ -20552,7 +20648,7 @@ class Axis {
|
|
|
20552
20648
|
getMinorTickInterval() {
|
|
20553
20649
|
const { minorTicks, minorTickInterval } = this.options;
|
|
20554
20650
|
if (minorTicks === true) {
|
|
20555
|
-
return
|
|
20651
|
+
return (minorTickInterval ?? 'auto');
|
|
20556
20652
|
}
|
|
20557
20653
|
if (minorTicks === false) {
|
|
20558
20654
|
return;
|
|
@@ -20835,7 +20931,9 @@ class Axis {
|
|
|
20835
20931
|
const seriesPointRange = hasCategories ?
|
|
20836
20932
|
1 :
|
|
20837
20933
|
(isXAxis ?
|
|
20838
|
-
|
|
20934
|
+
(series.options.pointRange ??
|
|
20935
|
+
closestPointRange ??
|
|
20936
|
+
0) :
|
|
20839
20937
|
(axis.axisPointRange || 0)), // #2806
|
|
20840
20938
|
pointPlacement = series.options.pointPlacement;
|
|
20841
20939
|
pointRange = Math.max(pointRange, seriesPointRange);
|
|
@@ -20919,14 +21017,16 @@ class Axis {
|
|
|
20919
21017
|
this.getTickAmount();
|
|
20920
21018
|
}
|
|
20921
21019
|
// Min or max set either by zooming/setExtremes or initial options
|
|
20922
|
-
hardMin =
|
|
20923
|
-
hardMax =
|
|
21020
|
+
hardMin = (axis.userMin ?? time.parse(options.min));
|
|
21021
|
+
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
20924
21022
|
// Linked axis gets the extremes from the parent axis
|
|
20925
21023
|
if (linkedParent) {
|
|
20926
21024
|
axis.linkedParent = linkedParent;
|
|
20927
21025
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
20928
|
-
axis.min =
|
|
20929
|
-
|
|
21026
|
+
axis.min =
|
|
21027
|
+
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
21028
|
+
axis.max =
|
|
21029
|
+
linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
|
|
20930
21030
|
if (this.type !== linkedParent.type) {
|
|
20931
21031
|
// Can't link axes of different type
|
|
20932
21032
|
error(11, true, chart);
|
|
@@ -20948,14 +21048,14 @@ class Axis {
|
|
|
20948
21048
|
maxPadding = 0;
|
|
20949
21049
|
}
|
|
20950
21050
|
}
|
|
20951
|
-
axis.min =
|
|
20952
|
-
axis.max =
|
|
21051
|
+
axis.min = (hardMin ?? thresholdMin ?? dataMin);
|
|
21052
|
+
axis.max = (hardMax ?? thresholdMax ?? dataMax);
|
|
20953
21053
|
}
|
|
20954
21054
|
if (isNumber(axis.max) && isNumber(axis.min)) {
|
|
20955
21055
|
if (logarithmic) {
|
|
20956
21056
|
if (axis.positiveValuesOnly &&
|
|
20957
21057
|
!secondPass &&
|
|
20958
|
-
Math.min(axis.min,
|
|
21058
|
+
Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
|
|
20959
21059
|
// Can't plot negative values on log axis
|
|
20960
21060
|
error(10, true, chart);
|
|
20961
21061
|
}
|
|
@@ -21061,16 +21161,13 @@ class Axis {
|
|
|
21061
21161
|
axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
|
|
21062
21162
|
}
|
|
21063
21163
|
else {
|
|
21064
|
-
axis.tickInterval =
|
|
21164
|
+
axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
|
|
21065
21165
|
range / Math.max(this.tickAmount - 1, 1) :
|
|
21066
|
-
|
|
21067
|
-
|
|
21068
|
-
|
|
21069
|
-
|
|
21070
|
-
|
|
21071
|
-
// Don't let it be more than the data range
|
|
21072
|
-
range * tickPixelIntervalOption /
|
|
21073
|
-
Math.max(axis.len, tickPixelIntervalOption));
|
|
21166
|
+
categories ?
|
|
21167
|
+
1 :
|
|
21168
|
+
// Don't let it be more than the data range
|
|
21169
|
+
range * tickPixelIntervalOption /
|
|
21170
|
+
Math.max(axis.len, tickPixelIntervalOption));
|
|
21074
21171
|
}
|
|
21075
21172
|
// Now we're finished detecting min and max, crop and group series data.
|
|
21076
21173
|
// This is in turn needed in order to find tick positions in ordinal
|
|
@@ -21100,12 +21197,9 @@ class Axis {
|
|
|
21100
21197
|
}
|
|
21101
21198
|
// Before normalizing the tick interval, handle minimum tick interval.
|
|
21102
21199
|
// This applies only if tickInterval is not defined.
|
|
21103
|
-
const minTickInterval =
|
|
21104
|
-
|
|
21105
|
-
|
|
21106
|
-
dateTime &&
|
|
21107
|
-
!axis.series.some((s) => !s.sorted) ?
|
|
21108
|
-
axis.closestPointRange : 0);
|
|
21200
|
+
const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
|
|
21201
|
+
axis.closestPointRange :
|
|
21202
|
+
0);
|
|
21109
21203
|
if (!tickIntervalOption &&
|
|
21110
21204
|
minTickInterval &&
|
|
21111
21205
|
axis.tickInterval < minTickInterval) {
|
|
@@ -21435,7 +21529,7 @@ class Axis {
|
|
|
21435
21529
|
* @function Highcharts.Axis#adjustTickAmount
|
|
21436
21530
|
*/
|
|
21437
21531
|
adjustTickAmount() {
|
|
21438
|
-
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold =
|
|
21532
|
+
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
|
|
21439
21533
|
let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
|
|
21440
21534
|
const
|
|
21441
21535
|
// Extend the tickPositions by appending a position
|
|
@@ -21671,7 +21765,8 @@ class Axis {
|
|
|
21671
21765
|
offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
|
|
21672
21766
|
// Check for percentage based input values. Rounding fixes problems
|
|
21673
21767
|
// with column overflow and plot line filtering (#4898, #4899)
|
|
21674
|
-
width = this.width = Math.round(relativeLength(
|
|
21768
|
+
width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
|
|
21769
|
+
chart.plotHeight - offsets[0] + offsets[2]), chart.plotHeight)), top = this.top = Math.round(relativeLength((options.top ?? chart.plotTop + offsets[0]), chart.plotHeight, chart.plotTop)), left = this.left = Math.round(relativeLength((options.left ?? chart.plotLeft + offsets[3]), chart.plotWidth, chart.plotLeft));
|
|
21675
21770
|
// Expose basic values to use in Series object and navigator
|
|
21676
21771
|
this.bottom = chart.chartHeight - height - top;
|
|
21677
21772
|
this.right = chart.chartWidth - width - left;
|
|
@@ -21782,9 +21877,7 @@ class Axis {
|
|
|
21782
21877
|
* An array of tickLength and tickWidth
|
|
21783
21878
|
*/
|
|
21784
21879
|
tickSize(prefix) {
|
|
21785
|
-
const options = this.options, tickWidth =
|
|
21786
|
-
// Default to 1 on linear and datetime X axes
|
|
21787
|
-
prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21880
|
+
const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21788
21881
|
let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
|
|
21789
21882
|
if (tickWidth && tickLength) {
|
|
21790
21883
|
// Negate the length
|
|
@@ -21871,7 +21964,7 @@ class Axis {
|
|
|
21871
21964
|
newTickInterval = getStep(lineHeight * 0.75);
|
|
21872
21965
|
}
|
|
21873
21966
|
this.autoRotation = autoRotation;
|
|
21874
|
-
this.labelRotation =
|
|
21967
|
+
this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
|
|
21875
21968
|
return labelOptions.step ? tickInterval : newTickInterval;
|
|
21876
21969
|
}
|
|
21877
21970
|
/**
|
|
@@ -22223,7 +22316,7 @@ class Axis {
|
|
|
22223
22316
|
titleOffsetOption = axisTitleOptions.offset;
|
|
22224
22317
|
titleMargin = defined(titleOffsetOption) ?
|
|
22225
22318
|
0 :
|
|
22226
|
-
|
|
22319
|
+
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22227
22320
|
}
|
|
22228
22321
|
}
|
|
22229
22322
|
// Render the axis line
|
|
@@ -22455,7 +22548,7 @@ class Axis {
|
|
|
22455
22548
|
* @emits Highcharts.Axis#event:afterRender
|
|
22456
22549
|
*/
|
|
22457
22550
|
render() {
|
|
22458
|
-
const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options, isLinked = axis.isLinked, tickPositions = axis.tickPositions, axisTitle = axis.axisTitle, ticks = axis.ticks, minorTicks = axis.minorTicks, alternateBands = axis.alternateBands, stackLabelOptions = options.stackLabels, alternateGridColor = options.alternateGridColor, crossing = options.crossing, tickmarkOffset = axis.tickmarkOffset, axisLine = axis.axisLine, showAxis = axis.showAxis, animation =
|
|
22551
|
+
const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options, isLinked = axis.isLinked, tickPositions = axis.tickPositions, axisTitle = axis.axisTitle, ticks = axis.ticks, minorTicks = axis.minorTicks, alternateBands = axis.alternateBands, stackLabelOptions = options.stackLabels, alternateGridColor = options.alternateGridColor, crossing = options.crossing, tickmarkOffset = axis.tickmarkOffset, axisLine = axis.axisLine, showAxis = axis.showAxis, animation = animObject(renderer.globalAnimation);
|
|
22459
22552
|
let from, to;
|
|
22460
22553
|
// Reset
|
|
22461
22554
|
axis.labelEdge.length = 0;
|
|
@@ -22734,9 +22827,9 @@ class Axis {
|
|
|
22734
22827
|
}
|
|
22735
22828
|
else if (defined(point)) {
|
|
22736
22829
|
// #3834
|
|
22737
|
-
pos =
|
|
22738
|
-
point.crosshairPos :
|
|
22739
|
-
null
|
|
22830
|
+
pos = (this.coll !== 'colorAxis' ?
|
|
22831
|
+
point.crosshairPos :
|
|
22832
|
+
null) ?? (this.isXAxis ?
|
|
22740
22833
|
point.plotX :
|
|
22741
22834
|
this.len - point.plotY);
|
|
22742
22835
|
}
|
|
@@ -22745,7 +22838,7 @@ class Axis {
|
|
|
22745
22838
|
// Value, only used on radial
|
|
22746
22839
|
value: point && (this.isXAxis ?
|
|
22747
22840
|
point.x :
|
|
22748
|
-
|
|
22841
|
+
(point.stackY ?? point.y ?? void 0)),
|
|
22749
22842
|
translatedValue: pos
|
|
22750
22843
|
};
|
|
22751
22844
|
if (chart.polar) {
|
|
@@ -22778,7 +22871,7 @@ class Axis {
|
|
|
22778
22871
|
(categorized ? 'category ' : 'thin ') +
|
|
22779
22872
|
(options.className || ''))
|
|
22780
22873
|
.attr({
|
|
22781
|
-
zIndex:
|
|
22874
|
+
zIndex: (options.zIndex ?? 2)
|
|
22782
22875
|
})
|
|
22783
22876
|
.clip(options.clip === false ?
|
|
22784
22877
|
void 0 :
|
|
@@ -22793,7 +22886,7 @@ class Axis {
|
|
|
22793
22886
|
// eslint-disable-next-line max-len
|
|
22794
22887
|
'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22795
22888
|
'var(--highcharts-neutral-color-20)'),
|
|
22796
|
-
'stroke-width':
|
|
22889
|
+
'stroke-width': (options.width ?? 1)
|
|
22797
22890
|
}).css({
|
|
22798
22891
|
'pointer-events': 'none'
|
|
22799
22892
|
});
|
|
@@ -22806,7 +22899,7 @@ class Axis {
|
|
|
22806
22899
|
}
|
|
22807
22900
|
cross
|
|
22808
22901
|
.show()
|
|
22809
|
-
.animate({ d: path },
|
|
22902
|
+
.animate({ d: path }, animObject(options?.animation));
|
|
22810
22903
|
if (categorized && !options.width) {
|
|
22811
22904
|
cross.attr({
|
|
22812
22905
|
'stroke-width': this.transA
|
|
@@ -22859,7 +22952,7 @@ class Axis {
|
|
|
22859
22952
|
this.destroy(true);
|
|
22860
22953
|
this.init(chart, options);
|
|
22861
22954
|
chart.isDirtyBox = true;
|
|
22862
|
-
if (
|
|
22955
|
+
if (redraw ?? true) {
|
|
22863
22956
|
chart.redraw();
|
|
22864
22957
|
}
|
|
22865
22958
|
}
|
|
@@ -22889,7 +22982,7 @@ class Axis {
|
|
|
22889
22982
|
chart.orderItems(coll);
|
|
22890
22983
|
this.destroy();
|
|
22891
22984
|
chart.isDirtyBox = true;
|
|
22892
|
-
if (
|
|
22985
|
+
if (redraw ?? true) {
|
|
22893
22986
|
chart.redraw();
|
|
22894
22987
|
}
|
|
22895
22988
|
}
|
|
@@ -23545,8 +23638,10 @@ var LogarithmicAxis;
|
|
|
23545
23638
|
tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
|
|
23546
23639
|
axisLength / axis.tickPositions.length :
|
|
23547
23640
|
axisLength;
|
|
23548
|
-
interval =
|
|
23549
|
-
|
|
23641
|
+
interval = filteredTickIntervalOption ??
|
|
23642
|
+
log.minorAutoInterval ??
|
|
23643
|
+
(realMax - realMin) * tickPixelIntervalOption /
|
|
23644
|
+
(totalPixelLength || 1);
|
|
23550
23645
|
interval = normalizeTickInterval(interval);
|
|
23551
23646
|
positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
|
|
23552
23647
|
if (!minor) {
|
|
@@ -23975,7 +24070,8 @@ class PlotLineOrBand {
|
|
|
23975
24070
|
if (!chart.styledMode) {
|
|
23976
24071
|
if (isLine) {
|
|
23977
24072
|
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
23978
|
-
attribs['stroke-width'] =
|
|
24073
|
+
attribs['stroke-width'] =
|
|
24074
|
+
options.width ?? 1;
|
|
23979
24075
|
if (options.dashStyle) {
|
|
23980
24076
|
attribs.dashstyle = options.dashStyle;
|
|
23981
24077
|
}
|
|
@@ -24844,7 +24940,6 @@ class PlotLineOrBand {
|
|
|
24844
24940
|
* */
|
|
24845
24941
|
|
|
24846
24942
|
|
|
24847
|
-
const { animObject: Tooltip_animObject } = AnimationUtilities;
|
|
24848
24943
|
|
|
24849
24944
|
const { format: Tooltip_format } = Core_Templating;
|
|
24850
24945
|
|
|
@@ -25108,7 +25203,8 @@ class Tooltip {
|
|
|
25108
25203
|
'highcharts-label',
|
|
25109
25204
|
isHeader && 'highcharts-tooltip-header',
|
|
25110
25205
|
isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
|
|
25111
|
-
!isHeader &&
|
|
25206
|
+
!isHeader &&
|
|
25207
|
+
'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
|
|
25112
25208
|
seriesOptions?.className
|
|
25113
25209
|
].filter(isString).join(' ');
|
|
25114
25210
|
}
|
|
@@ -25293,7 +25389,8 @@ class Tooltip {
|
|
|
25293
25389
|
}
|
|
25294
25390
|
// The far side is right or bottom
|
|
25295
25391
|
const preferFarSide = !this.followPointer &&
|
|
25296
|
-
|
|
25392
|
+
(point.ttBelow ??
|
|
25393
|
+
(polar ? false : !inverted === flipped)), // #4984
|
|
25297
25394
|
/*
|
|
25298
25395
|
* Handle the preferred dimension. When the preferred dimension is
|
|
25299
25396
|
* tooltip on top or bottom of the point, it will look for space
|
|
@@ -25420,7 +25517,7 @@ class Tooltip {
|
|
|
25420
25517
|
const tooltip = this;
|
|
25421
25518
|
// Disallow duplicate timers (#1728, #1766)
|
|
25422
25519
|
clearTimeouts(this);
|
|
25423
|
-
delay =
|
|
25520
|
+
delay = (delay ?? this.options.hideDelay);
|
|
25424
25521
|
if (!this.isHidden) {
|
|
25425
25522
|
this.hideTimer = syncTimeout(function () {
|
|
25426
25523
|
const label = tooltip.getLabel();
|
|
@@ -25523,7 +25620,9 @@ class Tooltip {
|
|
|
25523
25620
|
* Split tooltip does not support outside in the first iteration. Should
|
|
25524
25621
|
* not be too complicated to implement.
|
|
25525
25622
|
*/
|
|
25526
|
-
this.outside =
|
|
25623
|
+
this.outside =
|
|
25624
|
+
options.outside ??
|
|
25625
|
+
Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
|
|
25527
25626
|
}
|
|
25528
25627
|
shouldStickOnContact(pointerEvent) {
|
|
25529
25628
|
return !!(!this.followPointer &&
|
|
@@ -25545,7 +25644,7 @@ class Tooltip {
|
|
|
25545
25644
|
* @param {number} anchorY
|
|
25546
25645
|
*/
|
|
25547
25646
|
move(x, y, anchorX, anchorY) {
|
|
25548
|
-
const { followPointer, options } = this, animation =
|
|
25647
|
+
const { followPointer, options } = this, animation = animObject(!followPointer &&
|
|
25549
25648
|
!this.isHidden &&
|
|
25550
25649
|
!options.fixed &&
|
|
25551
25650
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
@@ -25603,7 +25702,7 @@ class Tooltip {
|
|
|
25603
25702
|
point.points = void 0;
|
|
25604
25703
|
// Register the current series
|
|
25605
25704
|
const currentSeries = point.series;
|
|
25606
|
-
this.distance =
|
|
25705
|
+
this.distance = (currentSeries.tooltipOptions.distance ?? 16);
|
|
25607
25706
|
// Update the inner HTML
|
|
25608
25707
|
if (text === false) {
|
|
25609
25708
|
this.hide();
|
|
@@ -25876,7 +25975,7 @@ class Tooltip {
|
|
|
25876
25975
|
anchorY,
|
|
25877
25976
|
boxWidth,
|
|
25878
25977
|
point,
|
|
25879
|
-
rank:
|
|
25978
|
+
rank: boxPosition.rank ?? (isHeader ? 1 : 0),
|
|
25880
25979
|
size,
|
|
25881
25980
|
target: boxPosition.y,
|
|
25882
25981
|
tt,
|
|
@@ -26293,7 +26392,6 @@ class Tooltip {
|
|
|
26293
26392
|
|
|
26294
26393
|
|
|
26295
26394
|
|
|
26296
|
-
const { animObject: Point_animObject } = AnimationUtilities;
|
|
26297
26395
|
|
|
26298
26396
|
const { defaultOptions: Point_defaultOptions } = Defaults;
|
|
26299
26397
|
|
|
@@ -26633,10 +26731,15 @@ class Point {
|
|
|
26633
26731
|
*
|
|
26634
26732
|
* @internal
|
|
26635
26733
|
* @function Highcharts.Point#destroy
|
|
26734
|
+
*
|
|
26735
|
+
* @param {boolean} [sync]
|
|
26736
|
+
* Whether to destroy the point synchronously. Used internally from
|
|
26737
|
+
* series.destroy, where condemned points may cause animation errors
|
|
26738
|
+
* (#24976).
|
|
26636
26739
|
*/
|
|
26637
|
-
destroy() {
|
|
26638
|
-
if (!this.condemned) {
|
|
26639
|
-
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } =
|
|
26740
|
+
destroy(sync) {
|
|
26741
|
+
if (!this.destroyed && !this.condemned) {
|
|
26742
|
+
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
|
|
26640
26743
|
/**
|
|
26641
26744
|
* Allow to call after animation.
|
|
26642
26745
|
* @internal
|
|
@@ -26653,6 +26756,7 @@ class Point {
|
|
|
26653
26756
|
for (const prop in point) { // eslint-disable-line guard-for-in
|
|
26654
26757
|
delete point[prop];
|
|
26655
26758
|
}
|
|
26759
|
+
this.destroyed = true;
|
|
26656
26760
|
};
|
|
26657
26761
|
if (point.legendItem) {
|
|
26658
26762
|
// Pies have legend items
|
|
@@ -26669,7 +26773,7 @@ class Point {
|
|
|
26669
26773
|
point.onMouseOut();
|
|
26670
26774
|
}
|
|
26671
26775
|
// Remove properties after animation
|
|
26672
|
-
if (duration && series.condemnedPoints) {
|
|
26776
|
+
if (duration && !sync && series.condemnedPoints) {
|
|
26673
26777
|
series.condemnedPoints.push(this);
|
|
26674
26778
|
this.graphic?.addClass('highcharts-point-condemned');
|
|
26675
26779
|
setTimeout(destroyPoint, duration);
|
|
@@ -26792,14 +26896,15 @@ class Point {
|
|
|
26792
26896
|
*
|
|
26793
26897
|
* @function Highcharts.Point#getZone
|
|
26794
26898
|
*
|
|
26795
|
-
* @return {Highcharts.SeriesZonesOptionsObject}
|
|
26796
|
-
* The zone item.
|
|
26899
|
+
* @return {Highcharts.SeriesZonesOptionsObject|undefined}
|
|
26900
|
+
* The zone item, or `undefined` if the series has no zones.
|
|
26797
26901
|
*/
|
|
26798
26902
|
getZone() {
|
|
26799
26903
|
const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
|
|
26800
26904
|
let zone, i = 0;
|
|
26801
26905
|
zone = zones[i];
|
|
26802
|
-
while (
|
|
26906
|
+
while (i < zones.length &&
|
|
26907
|
+
this[zoneAxis] >= zone.value) {
|
|
26803
26908
|
zone = zones[++i];
|
|
26804
26909
|
}
|
|
26805
26910
|
// For resetting or reusing the point (#8100)
|
|
@@ -27215,7 +27320,7 @@ class Point {
|
|
|
27215
27320
|
*/
|
|
27216
27321
|
select(selected, accumulate) {
|
|
27217
27322
|
const point = this, series = point.series, chart = series.chart;
|
|
27218
|
-
selected =
|
|
27323
|
+
selected = (selected ?? !point.selected);
|
|
27219
27324
|
this.selectedStaging = selected;
|
|
27220
27325
|
// Fire the event with the default handler
|
|
27221
27326
|
point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
|
|
@@ -27339,9 +27444,8 @@ class Point {
|
|
|
27339
27444
|
* @emits Highcharts.Point#event:afterSetState
|
|
27340
27445
|
*/
|
|
27341
27446
|
setState(state, move) {
|
|
27342
|
-
const point = this, series = point.series, previousState = point.state, stateOptions =
|
|
27343
|
-
|
|
27344
|
-
series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27447
|
+
const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
|
|
27448
|
+
series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27345
27449
|
{}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
|
|
27346
27450
|
let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
|
|
27347
27451
|
state = state || ''; // Empty string
|
|
@@ -27354,13 +27458,10 @@ class Point {
|
|
|
27354
27458
|
(stateOptions.enabled === false) ||
|
|
27355
27459
|
// General point marker's state options is disabled
|
|
27356
27460
|
(state && (stateDisabled ||
|
|
27357
|
-
(normalDisabled &&
|
|
27358
|
-
markerStateOptions.enabled === false))) ||
|
|
27461
|
+
(normalDisabled && markerStateOptions.enabled === false))) ||
|
|
27359
27462
|
// Individual point marker's state options is disabled
|
|
27360
27463
|
(state &&
|
|
27361
|
-
pointMarker.states
|
|
27362
|
-
pointMarker.states[state] &&
|
|
27363
|
-
pointMarker.states[state].enabled === false) // #1610
|
|
27464
|
+
pointMarker.states?.[state]?.enabled === false) // #1610
|
|
27364
27465
|
) {
|
|
27365
27466
|
return;
|
|
27366
27467
|
}
|
|
@@ -27379,7 +27480,8 @@ class Point {
|
|
|
27379
27480
|
}
|
|
27380
27481
|
if (!chart.styledMode) {
|
|
27381
27482
|
pointAttribs = series.pointAttribs(point, state);
|
|
27382
|
-
pointAttribsAnimation =
|
|
27483
|
+
pointAttribsAnimation = (chart.options.chart.animation ??
|
|
27484
|
+
stateOptions.animation);
|
|
27383
27485
|
const opacity = pointAttribs.opacity;
|
|
27384
27486
|
// Some inactive points (e.g. slices in pie) should apply
|
|
27385
27487
|
// opacity also for their labels
|
|
@@ -27397,9 +27499,11 @@ class Point {
|
|
|
27397
27499
|
point.graphic.animate(pointAttribs, pointAttribsAnimation);
|
|
27398
27500
|
}
|
|
27399
27501
|
if (markerAttribs) {
|
|
27400
|
-
point.graphic.animate(markerAttribs,
|
|
27502
|
+
point.graphic.animate(markerAttribs, (
|
|
27401
27503
|
// Turn off globally:
|
|
27402
|
-
chart.options.chart.animation
|
|
27504
|
+
chart.options.chart.animation ??
|
|
27505
|
+
markerStateOptions.animation ??
|
|
27506
|
+
markerOptions.animation));
|
|
27403
27507
|
}
|
|
27404
27508
|
// Zooming in from a range with no markers to a range with markers
|
|
27405
27509
|
if (stateMarkerGraphic) {
|
|
@@ -27448,10 +27552,12 @@ class Point {
|
|
|
27448
27552
|
}
|
|
27449
27553
|
}
|
|
27450
27554
|
// Show me your halo
|
|
27451
|
-
const haloOptions = stateOptions.halo
|
|
27555
|
+
const haloOptions = isObject(stateOptions.halo) ?
|
|
27556
|
+
stateOptions.halo :
|
|
27557
|
+
{};
|
|
27452
27558
|
const markerGraphic = (point.graphic || stateMarkerGraphic);
|
|
27453
27559
|
const markerVisibility = markerGraphic?.visibility || 'inherit';
|
|
27454
|
-
if (haloOptions
|
|
27560
|
+
if (haloOptions.size &&
|
|
27455
27561
|
markerGraphic &&
|
|
27456
27562
|
markerVisibility !== 'hidden' &&
|
|
27457
27563
|
!point.isCluster) {
|
|
@@ -27465,7 +27571,7 @@ class Point {
|
|
|
27465
27571
|
});
|
|
27466
27572
|
halo.attr({
|
|
27467
27573
|
'class': 'highcharts-halo highcharts-color-' +
|
|
27468
|
-
|
|
27574
|
+
(point.colorIndex ?? series.colorIndex) +
|
|
27469
27575
|
(point.className ? ' ' + point.className : ''),
|
|
27470
27576
|
'visibility': markerVisibility,
|
|
27471
27577
|
'zIndex': -1 // #4929, #8276
|
|
@@ -27981,6 +28087,11 @@ class Pointer {
|
|
|
27981
28087
|
}
|
|
27982
28088
|
}
|
|
27983
28089
|
}
|
|
28090
|
+
// Run a final transform with a drop trigger to display the reset
|
|
28091
|
+
// zoom button after a pinch gesture (#22128)
|
|
28092
|
+
if (e?.type === 'touchend' && this.hasDragged) {
|
|
28093
|
+
chart.transform({ trigger: 'drop' });
|
|
28094
|
+
}
|
|
27984
28095
|
if (redraw) {
|
|
27985
28096
|
chart.redraw();
|
|
27986
28097
|
}
|
|
@@ -28193,7 +28304,7 @@ class Pointer {
|
|
|
28193
28304
|
const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
|
|
28194
28305
|
return (s.visible &&
|
|
28195
28306
|
!(!shared && s.directTouch) && // #3821
|
|
28196
|
-
|
|
28307
|
+
(s.options.enableMouseTracking ?? true));
|
|
28197
28308
|
};
|
|
28198
28309
|
let hoverSeries = existingHoverSeries,
|
|
28199
28310
|
// Which series to look in for the hover point
|
|
@@ -28379,8 +28490,8 @@ class Pointer {
|
|
|
28379
28490
|
const ePos = (touches ?
|
|
28380
28491
|
touches.length ?
|
|
28381
28492
|
touches.item(0) :
|
|
28382
|
-
(
|
|
28383
|
-
|
|
28493
|
+
(touches.changedTouches ??
|
|
28494
|
+
e.changedTouches)[0] :
|
|
28384
28495
|
e);
|
|
28385
28496
|
// Get mouse position
|
|
28386
28497
|
if (!chartPosition) {
|
|
@@ -28454,7 +28565,7 @@ class Pointer {
|
|
|
28454
28565
|
* @function Highcharts.Pointer#onContainerMouseLeave
|
|
28455
28566
|
*/
|
|
28456
28567
|
onContainerMouseLeave(e) {
|
|
28457
|
-
const { pointer } = Pointer_charts[
|
|
28568
|
+
const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
|
|
28458
28569
|
e = this.normalize(e);
|
|
28459
28570
|
this.onContainerMouseMove(e);
|
|
28460
28571
|
// #4886, MS Touch end fires mouseleave but with no related target
|
|
@@ -28554,7 +28665,7 @@ class Pointer {
|
|
|
28554
28665
|
if (e?.touches && this.hasPinchMoved) {
|
|
28555
28666
|
e?.preventDefault?.();
|
|
28556
28667
|
}
|
|
28557
|
-
Pointer_charts[
|
|
28668
|
+
Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
|
|
28558
28669
|
?.pointer
|
|
28559
28670
|
?.drop(e);
|
|
28560
28671
|
}
|
|
@@ -28624,6 +28735,9 @@ class Pointer {
|
|
|
28624
28735
|
from: boxFromTouches(lastTouches),
|
|
28625
28736
|
trigger: e.type
|
|
28626
28737
|
});
|
|
28738
|
+
// Record a truthy value in order to trigger the final transform
|
|
28739
|
+
// in the drop function
|
|
28740
|
+
pointer.hasDragged = 1;
|
|
28627
28741
|
});
|
|
28628
28742
|
if (pointer.res) {
|
|
28629
28743
|
pointer.res = false;
|
|
@@ -29058,7 +29172,7 @@ class Pointer {
|
|
|
29058
29172
|
*/
|
|
29059
29173
|
setHoverChartIndex(e) {
|
|
29060
29174
|
const chart = this.chart;
|
|
29061
|
-
const hoverChart = Core_Globals.charts[
|
|
29175
|
+
const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
|
|
29062
29176
|
if (hoverChart &&
|
|
29063
29177
|
hoverChart !== chart) {
|
|
29064
29178
|
const relatedTargetObj = { relatedTarget: chart.container };
|
|
@@ -29104,7 +29218,7 @@ class Pointer {
|
|
|
29104
29218
|
Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
|
|
29105
29219
|
false;
|
|
29106
29220
|
}
|
|
29107
|
-
if (
|
|
29221
|
+
if (hasMoved ?? true) {
|
|
29108
29222
|
this.pinch(e);
|
|
29109
29223
|
}
|
|
29110
29224
|
}
|
|
@@ -29115,7 +29229,9 @@ class Pointer {
|
|
|
29115
29229
|
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29116
29230
|
// allow dragging the finger to scroll the page
|
|
29117
29231
|
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29118
|
-
isInside
|
|
29232
|
+
isInside &&
|
|
29233
|
+
e.type === 'touchmove' &&
|
|
29234
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29119
29235
|
e.preventDefault();
|
|
29120
29236
|
}
|
|
29121
29237
|
}
|
|
@@ -29145,7 +29261,7 @@ class Pointer {
|
|
|
29145
29261
|
let zoomType = chart.zooming.type || '', zoomX, zoomY;
|
|
29146
29262
|
// Look for the pinchType option
|
|
29147
29263
|
if (/touch/.test(e.type)) {
|
|
29148
|
-
zoomType =
|
|
29264
|
+
zoomType = (chart.zooming.pinchType ?? zoomType);
|
|
29149
29265
|
}
|
|
29150
29266
|
this.zoomX = zoomX = /x/.test(zoomType);
|
|
29151
29267
|
this.zoomY = zoomY = /y/.test(zoomType);
|
|
@@ -29587,7 +29703,7 @@ class DataTableCore {
|
|
|
29587
29703
|
* Fetches the given column by the canonical column ID. Simplified version
|
|
29588
29704
|
* of the full `DataTable.getRow` method, always returning by reference.
|
|
29589
29705
|
*
|
|
29590
|
-
* @function Highcharts.DataTable#
|
|
29706
|
+
* @function Highcharts.DataTable#getColumn
|
|
29591
29707
|
*
|
|
29592
29708
|
* @param {string} columnId
|
|
29593
29709
|
* ID of the column to get.
|
|
@@ -29919,7 +30035,7 @@ var LegendSymbol;
|
|
|
29919
30035
|
// Draw the marker
|
|
29920
30036
|
if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
|
|
29921
30037
|
// Do not allow the marker to be larger than the symbolHeight
|
|
29922
|
-
let radius = Math.min(
|
|
30038
|
+
let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
|
|
29923
30039
|
// Restrict symbol markers size
|
|
29924
30040
|
if (symbol.indexOf('url') === 0) {
|
|
29925
30041
|
markerOptions = merge(markerOptions, {
|
|
@@ -30323,6 +30439,10 @@ const seriesDefaults = {
|
|
|
30323
30439
|
* ```
|
|
30324
30440
|
*
|
|
30325
30441
|
* @type {Highcharts.DataMappingOptionsObject}
|
|
30442
|
+
* @sample highcharts/datatable/datamapping
|
|
30443
|
+
* Basic data mapping
|
|
30444
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
30445
|
+
* Data mapping with dynamic updates
|
|
30326
30446
|
* @sample {highcharts} highcharts/datatable/series-datatable-multiple
|
|
30327
30447
|
* Series with two data tables
|
|
30328
30448
|
* @sample {highcharts} highcharts/datatable/nested-keys
|
|
@@ -30333,6 +30453,29 @@ const seriesDefaults = {
|
|
|
30333
30453
|
* @since 13.0.0
|
|
30334
30454
|
* @apioption plotOptions.series.dataMapping
|
|
30335
30455
|
*/
|
|
30456
|
+
/**
|
|
30457
|
+
* Options for a specific series-level data table or an array of data
|
|
30458
|
+
* tables. The `dataTable` option can be either a configuration object or an
|
|
30459
|
+
* instance of the `DataTable` class. If a `DataTable` instance is passed,
|
|
30460
|
+
* it will be used directly. If a configuration object or an array is
|
|
30461
|
+
* passed, a new `DataTable` instance will be created based on the provided
|
|
30462
|
+
* configuration.
|
|
30463
|
+
*
|
|
30464
|
+
* @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
|
|
30465
|
+
* @sample {highcharts} highcharts/datatable/series-datatable/
|
|
30466
|
+
* Series with one data table each
|
|
30467
|
+
* @sample {highcharts} highcharts/datatable/series-datatable-multiple/
|
|
30468
|
+
* Series with two data tables
|
|
30469
|
+
* @sample {highstock} stock/datatable/series-datatable/
|
|
30470
|
+
* Series with one data table each
|
|
30471
|
+
* @sample {highstock} stock/datatable/series-datatable-multiple/
|
|
30472
|
+
* Series with two data tables
|
|
30473
|
+
* @sample {highmaps} maps/datatable/series-datatable
|
|
30474
|
+
* Series-level data table
|
|
30475
|
+
*
|
|
30476
|
+
* @since 13.0.0
|
|
30477
|
+
* @apioption plotOptions.series.dataTable
|
|
30478
|
+
*/
|
|
30336
30479
|
/**
|
|
30337
30480
|
* Enable or disable the mouse tracking for a specific series. This
|
|
30338
30481
|
* includes point tooltips and click events on graphs and points. For
|
|
@@ -31216,6 +31359,7 @@ const seriesDefaults = {
|
|
|
31216
31359
|
* `series.allowPointSelect` option to true.
|
|
31217
31360
|
*
|
|
31218
31361
|
* @declare Highcharts.PointStatesSelectOptionsObject
|
|
31362
|
+
* @extends plotOptions.series.marker.states.hover
|
|
31219
31363
|
*/
|
|
31220
31364
|
select: {
|
|
31221
31365
|
/**
|
|
@@ -31792,6 +31936,7 @@ const seriesDefaults = {
|
|
|
31792
31936
|
* @sample {highmaps} maps/plotoptions/series-datalabels-box/
|
|
31793
31937
|
* Data labels box options
|
|
31794
31938
|
*
|
|
31939
|
+
* @type {number|Array<number>}
|
|
31795
31940
|
* @since 2.2.1
|
|
31796
31941
|
*/
|
|
31797
31942
|
padding: [1, 3],
|
|
@@ -31993,6 +32138,9 @@ const seriesDefaults = {
|
|
|
31993
32138
|
/**
|
|
31994
32139
|
* A collection of options for different series states.
|
|
31995
32140
|
*
|
|
32141
|
+
* In addition to the options documented under each state, any option from
|
|
32142
|
+
* the parent series type can be set, with exception of `data` and `states`.
|
|
32143
|
+
*
|
|
31996
32144
|
* @declare Highcharts.SeriesStatesOptionsObject
|
|
31997
32145
|
*/
|
|
31998
32146
|
states: {
|
|
@@ -32166,6 +32314,7 @@ const seriesDefaults = {
|
|
|
32166
32314
|
* Disabled inactive state
|
|
32167
32315
|
*
|
|
32168
32316
|
* @declare Highcharts.SeriesStatesInactiveOptionsObject
|
|
32317
|
+
* @extends plotOptions.series.states.hover
|
|
32169
32318
|
*/
|
|
32170
32319
|
inactive: {
|
|
32171
32320
|
/**
|
|
@@ -32566,7 +32715,6 @@ var SeriesRegistry;
|
|
|
32566
32715
|
* */
|
|
32567
32716
|
|
|
32568
32717
|
|
|
32569
|
-
const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
|
|
32570
32718
|
|
|
32571
32719
|
|
|
32572
32720
|
const { defaultOptions: Series_defaultOptions } = Defaults;
|
|
@@ -32704,6 +32852,13 @@ class Series {
|
|
|
32704
32852
|
* @type {number|undefined}
|
|
32705
32853
|
* @readonly
|
|
32706
32854
|
*/
|
|
32855
|
+
/**
|
|
32856
|
+
* The main group for the series' graphics.
|
|
32857
|
+
*
|
|
32858
|
+
* @name Highcharts.Series#group
|
|
32859
|
+
* @type {Highcharts.SVGElement}
|
|
32860
|
+
* @readonly
|
|
32861
|
+
*/
|
|
32707
32862
|
/**
|
|
32708
32863
|
* Contains the series' index in the `Chart.series` array.
|
|
32709
32864
|
*
|
|
@@ -32836,10 +32991,12 @@ class Series {
|
|
|
32836
32991
|
*/
|
|
32837
32992
|
series.options = series.setOptions(userOptions);
|
|
32838
32993
|
const options = series.options, visible = options.visible !== false;
|
|
32839
|
-
// Create the data table
|
|
32840
|
-
this.dataTable ?? (this.dataTable = options.dataTable
|
|
32841
|
-
|
|
32842
|
-
|
|
32994
|
+
// Create the data table or use the one passed as option
|
|
32995
|
+
this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
|
|
32996
|
+
new Data_DataTableCore() :
|
|
32997
|
+
options.dataTable?.isDataTable ?
|
|
32998
|
+
options.dataTable :
|
|
32999
|
+
new Data_DataTableCore(options.dataTable));
|
|
32843
33000
|
/**
|
|
32844
33001
|
* All child series that are linked to the current series through the
|
|
32845
33002
|
* [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
|
|
@@ -32899,7 +33056,7 @@ class Series {
|
|
|
32899
33056
|
if (chartSeries.length) {
|
|
32900
33057
|
lastSeries = chartSeries[chartSeries.length - 1];
|
|
32901
33058
|
}
|
|
32902
|
-
series._i =
|
|
33059
|
+
series._i = (lastSeries?._i ?? -1) + 1;
|
|
32903
33060
|
series.opacity = series.options.opacity;
|
|
32904
33061
|
// Insert the series and re-order all series above the insertion
|
|
32905
33062
|
// point.
|
|
@@ -32946,7 +33103,7 @@ class Series {
|
|
|
32946
33103
|
// Apply if the series xAxis or yAxis option matches
|
|
32947
33104
|
// the number of the axis, or if undefined, use the
|
|
32948
33105
|
// first axis
|
|
32949
|
-
if (
|
|
33106
|
+
if ((seriesOptions[coll] ?? 0) === axis.index ||
|
|
32950
33107
|
(typeof seriesOptions[coll] !==
|
|
32951
33108
|
'undefined' &&
|
|
32952
33109
|
seriesOptions[coll] === axisOptions.id)) {
|
|
@@ -32989,8 +33146,12 @@ class Series {
|
|
|
32989
33146
|
* @function Highcharts.Series#hasMarkerChanged
|
|
32990
33147
|
*/
|
|
32991
33148
|
hasMarkerChanged(options, oldOptions) {
|
|
32992
|
-
const marker = options.marker, oldMarker = oldOptions.marker
|
|
32993
|
-
|
|
33149
|
+
const marker = options.marker, oldMarker = oldOptions.marker;
|
|
33150
|
+
// Note that `marker` holds the full, merged object including
|
|
33151
|
+
// `plotOptions`, while `oldMarker` is the user-defined series-level
|
|
33152
|
+
// options only. We may need to refactor that in the future if more
|
|
33153
|
+
// issues like #24057 arise.
|
|
33154
|
+
return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
|
|
32994
33155
|
oldMarker.symbol !== marker.symbol || // #10870, #15946
|
|
32995
33156
|
oldMarker.height !== marker.height || // #16274
|
|
32996
33157
|
oldMarker.width !== marker.width // #16274
|
|
@@ -33009,7 +33170,8 @@ class Series {
|
|
|
33009
33170
|
time.parse(options.pointStart) ??
|
|
33010
33171
|
0;
|
|
33011
33172
|
let pointInterval;
|
|
33012
|
-
this.pointInterval = pointInterval =
|
|
33173
|
+
this.pointInterval = pointInterval =
|
|
33174
|
+
this.pointInterval ?? options.pointInterval ?? 1;
|
|
33013
33175
|
if (relativeXValue && isNumber(x)) {
|
|
33014
33176
|
pointInterval *= x;
|
|
33015
33177
|
}
|
|
@@ -33081,9 +33243,13 @@ class Series {
|
|
|
33081
33243
|
);
|
|
33082
33244
|
// When shared tooltip, stickyTracking is true by default,
|
|
33083
33245
|
// unless user says otherwise.
|
|
33084
|
-
this.stickyTracking =
|
|
33085
|
-
|
|
33086
|
-
|
|
33246
|
+
this.stickyTracking =
|
|
33247
|
+
seriesUserOptions.stickyTracking ??
|
|
33248
|
+
userPlotOptionsType.stickyTracking ??
|
|
33249
|
+
userPlotOptionsSeries.stickyTracking ??
|
|
33250
|
+
(this.tooltipOptions.shared && !this.noSharedTooltip ?
|
|
33251
|
+
true :
|
|
33252
|
+
options.stickyTracking);
|
|
33087
33253
|
// Delete marker object if not allowed (#1125)
|
|
33088
33254
|
if (typeOptions.marker === null) {
|
|
33089
33255
|
delete options.marker;
|
|
@@ -33161,7 +33327,9 @@ class Series {
|
|
|
33161
33327
|
if (!value) {
|
|
33162
33328
|
// Pick up either the colorIndex option, or the series.colorIndex
|
|
33163
33329
|
// after Series.update()
|
|
33164
|
-
setting =
|
|
33330
|
+
setting = prop === 'color' ?
|
|
33331
|
+
(this.options.colorIndex ?? this[indexName]) :
|
|
33332
|
+
this[indexName];
|
|
33165
33333
|
if (defined(setting)) { // After Series.update()
|
|
33166
33334
|
i = setting;
|
|
33167
33335
|
}
|
|
@@ -33221,7 +33389,7 @@ class Series {
|
|
|
33221
33389
|
*/
|
|
33222
33390
|
getSymbol() {
|
|
33223
33391
|
const seriesMarkerOption = this.options.marker;
|
|
33224
|
-
this.getCyclic('symbol', seriesMarkerOption
|
|
33392
|
+
this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
|
|
33225
33393
|
}
|
|
33226
33394
|
/**
|
|
33227
33395
|
* Shorthand to get one of the series' data columns from `Series.dataTable`.
|
|
@@ -33417,9 +33585,10 @@ class Series {
|
|
|
33417
33585
|
if (!oldData[i].destroyed && !oldData[i].condemned) {
|
|
33418
33586
|
const pOptions = dataTable.getRowObject(i);
|
|
33419
33587
|
if (pOptions) {
|
|
33588
|
+
// Remove undefined properties, but preserve explicit
|
|
33589
|
+
// nulls (#24872)
|
|
33420
33590
|
Object.keys(pOptions).forEach((key) => {
|
|
33421
|
-
if (
|
|
33422
|
-
pOptions[key] === oldData[i].options[key]*/) {
|
|
33591
|
+
if (pOptions[key] === void 0) {
|
|
33423
33592
|
delete pOptions[key];
|
|
33424
33593
|
}
|
|
33425
33594
|
});
|
|
@@ -33824,8 +33993,12 @@ class Series {
|
|
|
33824
33993
|
}
|
|
33825
33994
|
}
|
|
33826
33995
|
}
|
|
33827
|
-
// Find the closest distance between processed points
|
|
33828
|
-
|
|
33996
|
+
// Find the closest distance between processed points. When the data was
|
|
33997
|
+
// cropped (or set out of range), read x from the freshly cropped local
|
|
33998
|
+
// `modified` table, #24858.
|
|
33999
|
+
if (modified !== table) {
|
|
34000
|
+
xData = modified.getColumn('x', true) || [];
|
|
34001
|
+
}
|
|
33829
34002
|
const closestPointRange = getClosestDistance([
|
|
33830
34003
|
logarithmic ?
|
|
33831
34004
|
xData.map(logarithmic.log2lin) :
|
|
@@ -34030,9 +34203,9 @@ class Series {
|
|
|
34030
34203
|
* Force getting extremes of a total series data range.
|
|
34031
34204
|
*/
|
|
34032
34205
|
getExtremes(yData, forceExtremesFromAll) {
|
|
34033
|
-
const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34206
|
+
const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34034
34207
|
this.getExtremesFromAll ||
|
|
34035
|
-
|
|
34208
|
+
options.getExtremesFromAll, // #4599, #21003
|
|
34036
34209
|
table = getExtremesFromAll && this.cropped ?
|
|
34037
34210
|
this.dataTable :
|
|
34038
34211
|
this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
|
|
@@ -34042,7 +34215,12 @@ class Series {
|
|
|
34042
34215
|
// non-sorted data like scatter (#7639).
|
|
34043
34216
|
shoulder = this.requireSorting && !this.is('column') ?
|
|
34044
34217
|
1 : 0,
|
|
34045
|
-
//
|
|
34218
|
+
// Used only for `cumulativeStart` (#24608)
|
|
34219
|
+
excludeShoulder = options.cumulative &&
|
|
34220
|
+
options.cumulativeStart &&
|
|
34221
|
+
shoulder &&
|
|
34222
|
+
!getExtremesFromAll,
|
|
34223
|
+
// Compensate for log X axis (#2117)
|
|
34046
34224
|
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
|
|
34047
34225
|
this.cropped ||
|
|
34048
34226
|
!xAxis; // For colorAxis support
|
|
@@ -34054,10 +34232,10 @@ class Series {
|
|
|
34054
34232
|
}
|
|
34055
34233
|
for (i = 0; i < rowCount; i++) {
|
|
34056
34234
|
x = xData[i];
|
|
34057
|
-
// Check if it is within the selected x
|
|
34058
|
-
if (doAll ||
|
|
34235
|
+
// Check if it is within the selected x-axis range
|
|
34236
|
+
if ((doAll ||
|
|
34059
34237
|
((xData[i + shoulder] || x) >= xMin &&
|
|
34060
|
-
(xData[i - shoulder] || x) <= xMax)) {
|
|
34238
|
+
(xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
|
|
34061
34239
|
for (const values of yAxisData) {
|
|
34062
34240
|
const val = values[i];
|
|
34063
34241
|
// For points within the visible range, including the
|
|
@@ -34126,7 +34304,7 @@ class Series {
|
|
|
34126
34304
|
*/
|
|
34127
34305
|
translate() {
|
|
34128
34306
|
this.generatePoints();
|
|
34129
|
-
const series = this, { options, xAxis, yAxis } = series, { stacking, threshold } = options, {
|
|
34307
|
+
const series = this, { hasRendered, options, xAxis, yAxis } = series, { stacking, threshold } = options, { polar } = series.chart, points = series.points.concat(series.condemnedPoints), dataLength = points.length, pointPlacement = series.pointPlacementToXValue(), // #7860
|
|
34130
34308
|
dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
|
|
34131
34309
|
yAxis.len);
|
|
34132
34310
|
let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
|
|
@@ -34178,7 +34356,9 @@ class Series {
|
|
|
34178
34356
|
yValue = stackValues[1];
|
|
34179
34357
|
if (lowValue === stackThreshold &&
|
|
34180
34358
|
stackIndicator.key === stacks[xValue].base) {
|
|
34181
|
-
lowValue =
|
|
34359
|
+
lowValue = isNumber(threshold) ?
|
|
34360
|
+
threshold :
|
|
34361
|
+
yAxis.min;
|
|
34182
34362
|
}
|
|
34183
34363
|
// #1200, #1232
|
|
34184
34364
|
if (yAxis.positiveValuesOnly &&
|
|
@@ -34186,7 +34366,7 @@ class Series {
|
|
|
34186
34366
|
lowValue <= 0) {
|
|
34187
34367
|
lowValue = void 0;
|
|
34188
34368
|
}
|
|
34189
|
-
point.total = point.stackTotal =
|
|
34369
|
+
point.total = point.stackTotal = stackItem.total ?? void 0;
|
|
34190
34370
|
point.percentage = defined(point.y) && stackItem.total ?
|
|
34191
34371
|
(point.y / stackItem.total * 100) : void 0;
|
|
34192
34372
|
point.stackY = yValue;
|
|
@@ -34319,7 +34499,7 @@ class Series {
|
|
|
34319
34499
|
* Initialize the animation.
|
|
34320
34500
|
*/
|
|
34321
34501
|
animate(init) {
|
|
34322
|
-
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation =
|
|
34502
|
+
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
|
|
34323
34503
|
// The key for temporary animation clips
|
|
34324
34504
|
animationClipKey = [
|
|
34325
34505
|
this.getSharedClipKey(),
|
|
@@ -34415,10 +34595,11 @@ class Series {
|
|
|
34415
34595
|
*/
|
|
34416
34596
|
drawPoints(points) {
|
|
34417
34597
|
points || (points = this.points.concat(this.condemnedPoints));
|
|
34418
|
-
const series = this, chart = series.chart, styledMode = chart.styledMode, { colorAxis, options } = series, seriesMarkerOptions = options.marker, nullInteraction = options.nullInteraction, markerGroup = series[series.specialGroup || 'markerGroup'], xAxis = series.xAxis, globallyEnabled =
|
|
34419
|
-
|
|
34420
|
-
|
|
34421
|
-
seriesMarkerOptions.
|
|
34598
|
+
const series = this, chart = series.chart, styledMode = chart.styledMode, { colorAxis, options } = series, seriesMarkerOptions = options.marker || {}, nullInteraction = options.nullInteraction, markerGroup = series[series.specialGroup || 'markerGroup'], xAxis = series.xAxis, globallyEnabled = seriesMarkerOptions.enabled ??
|
|
34599
|
+
(!xAxis || xAxis.isRadial ? true : null) ??
|
|
34600
|
+
// Use larger or equal as radius is null in bubbles (#6321)
|
|
34601
|
+
((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
|
|
34602
|
+
seriesMarkerOptions.radius));
|
|
34422
34603
|
let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
|
|
34423
34604
|
if (seriesMarkerOptions.enabled !== false ||
|
|
34424
34605
|
series._hasPointMarkers) {
|
|
@@ -34435,8 +34616,10 @@ class Series {
|
|
|
34435
34616
|
// Only draw the point if y is defined
|
|
34436
34617
|
if (shouldDrawMarker) {
|
|
34437
34618
|
// Shortcuts
|
|
34438
|
-
const symbol =
|
|
34439
|
-
|
|
34619
|
+
const symbol = pointMarkerOptions.symbol ??
|
|
34620
|
+
series.symbol ??
|
|
34621
|
+
'rect';
|
|
34622
|
+
markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
|
|
34440
34623
|
const isInside = point.isInside !== false;
|
|
34441
34624
|
if (!graphic &&
|
|
34442
34625
|
isInside &&
|
|
@@ -34501,15 +34684,17 @@ class Series {
|
|
|
34501
34684
|
* A hash containing those attributes that are not settable from CSS.
|
|
34502
34685
|
*/
|
|
34503
34686
|
markerAttribs(point, state) {
|
|
34504
|
-
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34687
|
+
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34505
34688
|
seriesMarkerOptions.symbol), attribs = {};
|
|
34506
|
-
let seriesStateOptions, pointStateOptions, radius =
|
|
34689
|
+
let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
|
|
34690
|
+
seriesMarkerOptions.radius;
|
|
34507
34691
|
// Handle hover and select states
|
|
34508
34692
|
if (state) {
|
|
34509
|
-
seriesStateOptions = seriesMarkerOptions
|
|
34693
|
+
seriesStateOptions = seriesMarkerOptions.states?.[state];
|
|
34510
34694
|
pointStateOptions = pointMarkerOptions.states?.[state];
|
|
34511
|
-
radius =
|
|
34512
|
-
|
|
34695
|
+
radius = pointStateOptions?.radius ??
|
|
34696
|
+
seriesStateOptions?.radius ??
|
|
34697
|
+
(radius && radius + (seriesStateOptions?.radiusPlus || 0));
|
|
34513
34698
|
}
|
|
34514
34699
|
point.hasImage = symbol && symbol.indexOf('url') === 0;
|
|
34515
34700
|
if (point.hasImage) {
|
|
@@ -34522,7 +34707,7 @@ class Series {
|
|
|
34522
34707
|
0 :
|
|
34523
34708
|
symbol === 'rect' ?
|
|
34524
34709
|
// Rectangle symbols need crisp edges, others don't
|
|
34525
|
-
seriesMarkerOptions
|
|
34710
|
+
seriesMarkerOptions.lineWidth || 0 :
|
|
34526
34711
|
1);
|
|
34527
34712
|
}
|
|
34528
34713
|
attribs.x = pos[0] - radius;
|
|
@@ -34553,8 +34738,9 @@ class Series {
|
|
|
34553
34738
|
* The presentational attributes to be set on the point.
|
|
34554
34739
|
*/
|
|
34555
34740
|
pointAttribs(point, state) {
|
|
34556
|
-
const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34557
|
-
let
|
|
34741
|
+
const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34742
|
+
let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
|
|
34743
|
+
seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
|
|
34558
34744
|
color = (pointColorOption ||
|
|
34559
34745
|
zoneColor ||
|
|
34560
34746
|
pointColor ||
|
|
@@ -34567,19 +34753,22 @@ class Series {
|
|
|
34567
34753
|
color);
|
|
34568
34754
|
// Handle hover and select states
|
|
34569
34755
|
state = state || 'normal';
|
|
34570
|
-
|
|
34571
|
-
|
|
34572
|
-
|
|
34573
|
-
|
|
34574
|
-
strokeWidth
|
|
34575
|
-
|
|
34576
|
-
|
|
34577
|
-
|
|
34578
|
-
|
|
34579
|
-
|
|
34580
|
-
|
|
34581
|
-
|
|
34582
|
-
|
|
34756
|
+
const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
|
|
34757
|
+
const pointStateOptions = pointMarkerOptions.states?.[state] || {};
|
|
34758
|
+
strokeWidth = pointStateOptions.lineWidth ??
|
|
34759
|
+
seriesStateOptions.lineWidth ??
|
|
34760
|
+
(strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
|
|
34761
|
+
seriesStateOptions.lineWidthPlus ??
|
|
34762
|
+
0);
|
|
34763
|
+
fill = (pointStateOptions.fillColor ||
|
|
34764
|
+
seriesStateOptions.fillColor ||
|
|
34765
|
+
fill);
|
|
34766
|
+
stroke = (pointStateOptions.lineColor ||
|
|
34767
|
+
seriesStateOptions.lineColor ||
|
|
34768
|
+
stroke);
|
|
34769
|
+
opacity = (pointStateOptions.opacity ??
|
|
34770
|
+
seriesStateOptions.opacity ??
|
|
34771
|
+
opacity);
|
|
34583
34772
|
return {
|
|
34584
34773
|
'stroke': stroke,
|
|
34585
34774
|
'stroke-width': strokeWidth,
|
|
@@ -34618,7 +34807,7 @@ class Series {
|
|
|
34618
34807
|
// Destroy all points with their elements
|
|
34619
34808
|
i = data.length;
|
|
34620
34809
|
while (i--) {
|
|
34621
|
-
data[i]?.destroy?.();
|
|
34810
|
+
data[i]?.destroy?.(true);
|
|
34622
34811
|
}
|
|
34623
34812
|
for (const zone of series.zones || []) {
|
|
34624
34813
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -34645,7 +34834,7 @@ class Series {
|
|
|
34645
34834
|
erase(chart.series, series);
|
|
34646
34835
|
chart.orderItems('series');
|
|
34647
34836
|
// Clear all members
|
|
34648
|
-
objectEach(series, function (
|
|
34837
|
+
objectEach(series, function (_val, prop) {
|
|
34649
34838
|
if (!keepEventsForUpdate || prop !== 'hcEvents') {
|
|
34650
34839
|
delete series[prop];
|
|
34651
34840
|
}
|
|
@@ -34697,7 +34886,7 @@ class Series {
|
|
|
34697
34886
|
// Reset
|
|
34698
34887
|
zones.forEach((zone) => {
|
|
34699
34888
|
zone.lineClip = [];
|
|
34700
|
-
zone.translated = clamp(axis.toPixels(
|
|
34889
|
+
zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
|
|
34701
34890
|
});
|
|
34702
34891
|
// The use of the Color Threshold assumes there are no gaps so it is
|
|
34703
34892
|
// safe to hide the original graph and area unless it is not
|
|
@@ -34921,7 +35110,7 @@ class Series {
|
|
|
34921
35110
|
* @emits Highcharts.Series#event:afterRender
|
|
34922
35111
|
*/
|
|
34923
35112
|
render() {
|
|
34924
|
-
const series = this, { chart, options, hasRendered } = series, animOptions =
|
|
35113
|
+
const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
|
|
34925
35114
|
'inherit' : 'hidden', // #2597
|
|
34926
35115
|
zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
|
|
34927
35116
|
let animDuration = series.finishedAnimating ?
|
|
@@ -35023,7 +35212,7 @@ class Series {
|
|
|
35023
35212
|
*
|
|
35024
35213
|
* @function Highcharts.Series#searchPoint
|
|
35025
35214
|
*
|
|
35026
|
-
* @param {
|
|
35215
|
+
* @param {PointerEvent} e
|
|
35027
35216
|
* The normalized pointer event
|
|
35028
35217
|
* @param {boolean} [compareX=false]
|
|
35029
35218
|
* Search only by the X value, not Y
|
|
@@ -35055,7 +35244,7 @@ class Series {
|
|
|
35055
35244
|
// Prevent multiple k-d-trees from being built simultaneously
|
|
35056
35245
|
// (#6235)
|
|
35057
35246
|
this.buildingKdTree = true;
|
|
35058
|
-
const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
|
|
35247
|
+
const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
|
|
35059
35248
|
.indexOf('y') > -1 ? 2 : 1;
|
|
35060
35249
|
/**
|
|
35061
35250
|
* Internal function
|
|
@@ -35105,7 +35294,7 @@ class Series {
|
|
|
35105
35294
|
* The point to search for.
|
|
35106
35295
|
* @param {boolean} [compareX=false]
|
|
35107
35296
|
* Search only by the X value, not Y.
|
|
35108
|
-
* @param {
|
|
35297
|
+
* @param {PointerEvent} [e]
|
|
35109
35298
|
* The normalized pointer event.
|
|
35110
35299
|
* @param {Function} [suppliedPointEvaluator]
|
|
35111
35300
|
* A custom point evaluator function.
|
|
@@ -35311,11 +35500,13 @@ class Series {
|
|
|
35311
35500
|
* Both X and Y values given
|
|
35312
35501
|
* @sample highcharts/members/series-addpoint-pie/
|
|
35313
35502
|
* Append pie slice
|
|
35314
|
-
* @sample
|
|
35503
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
35504
|
+
* Alternative approach with data table
|
|
35505
|
+
* @sample {highstock} stock/members/series-addpoint/
|
|
35315
35506
|
* Append 100 points in Highcharts Stock
|
|
35316
|
-
* @sample stock/members/series-addpoint-shift/
|
|
35507
|
+
* @sample {highstock} stock/members/series-addpoint-shift/
|
|
35317
35508
|
* Append and shift in Highcharts Stock
|
|
35318
|
-
* @sample maps/members/series-addpoint/
|
|
35509
|
+
* @sample {highmaps} maps/members/series-addpoint/
|
|
35319
35510
|
* Add a point in Highmaps
|
|
35320
35511
|
*
|
|
35321
35512
|
* @function Highcharts.Series#addPoint
|
|
@@ -35351,7 +35542,7 @@ class Series {
|
|
|
35351
35542
|
const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
|
|
35352
35543
|
let isInTheMiddle, i;
|
|
35353
35544
|
// Optional redraw, defaults to true
|
|
35354
|
-
redraw =
|
|
35545
|
+
redraw = (redraw ?? true);
|
|
35355
35546
|
// Get options and push the point to xData, yData and series.options. In
|
|
35356
35547
|
// series.generatePoints the Point instance will be created on demand
|
|
35357
35548
|
// and pushed to the series.data array.
|
|
@@ -35461,8 +35652,8 @@ class Series {
|
|
|
35461
35652
|
chart.redraw();
|
|
35462
35653
|
}
|
|
35463
35654
|
};
|
|
35464
|
-
|
|
35465
|
-
redraw =
|
|
35655
|
+
setAnimation(animation, chart);
|
|
35656
|
+
redraw = (redraw ?? true);
|
|
35466
35657
|
// Fire the event with a default handler of removing the point
|
|
35467
35658
|
if (point) {
|
|
35468
35659
|
point.firePointEvent('remove', null, remove);
|
|
@@ -35505,7 +35696,7 @@ class Series {
|
|
|
35505
35696
|
// Redraw
|
|
35506
35697
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
35507
35698
|
chart.linkSeries(keepEvents);
|
|
35508
|
-
if (
|
|
35699
|
+
if (redraw ?? true) {
|
|
35509
35700
|
chart.redraw(animation);
|
|
35510
35701
|
}
|
|
35511
35702
|
}
|
|
@@ -35722,7 +35913,7 @@ class Series {
|
|
|
35722
35913
|
series.isDirtyData = true;
|
|
35723
35914
|
}
|
|
35724
35915
|
fireEvent(this, 'afterUpdate');
|
|
35725
|
-
if (
|
|
35916
|
+
if (redraw ?? true) {
|
|
35726
35917
|
chart.redraw(keepPoints ? void 0 : false);
|
|
35727
35918
|
}
|
|
35728
35919
|
}
|
|
@@ -35739,12 +35930,12 @@ class Series {
|
|
|
35739
35930
|
* @internal
|
|
35740
35931
|
*/
|
|
35741
35932
|
hasOptionChanged(optionName) {
|
|
35742
|
-
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption =
|
|
35933
|
+
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
|
|
35743
35934
|
// Check if `plotOptions` are defined already, #19203
|
|
35744
35935
|
if (oldOption && !defined(plotOptionsOption)) {
|
|
35745
35936
|
return option !== oldOption;
|
|
35746
35937
|
}
|
|
35747
|
-
return option !==
|
|
35938
|
+
return option !== (plotOptionsOption ?? option);
|
|
35748
35939
|
}
|
|
35749
35940
|
/**
|
|
35750
35941
|
* Runs on mouse over the series graphical items.
|
|
@@ -35815,10 +36006,11 @@ class Series {
|
|
|
35815
36006
|
* Determines if state should be inherited by points too.
|
|
35816
36007
|
*/
|
|
35817
36008
|
setState(state, inherit) {
|
|
35818
|
-
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
|
|
36009
|
+
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
|
|
35819
36010
|
// By default a quick animation to hover/inactive,
|
|
35820
36011
|
// slower to un-hover
|
|
35821
|
-
stateAnimation =
|
|
36012
|
+
stateAnimation = stateOptions[state || 'normal']?.animation ??
|
|
36013
|
+
series.chart.options.chart.animation;
|
|
35822
36014
|
let { lineWidth, opacity } = options;
|
|
35823
36015
|
state = state || '';
|
|
35824
36016
|
if (series.state !== state) {
|
|
@@ -35845,9 +36037,13 @@ class Series {
|
|
|
35845
36037
|
return;
|
|
35846
36038
|
}
|
|
35847
36039
|
if (state) {
|
|
35848
|
-
lineWidth =
|
|
35849
|
-
|
|
35850
|
-
|
|
36040
|
+
lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
|
|
36041
|
+
void 0 :
|
|
36042
|
+
// Increase by lineWidthPlus only when lineWidth
|
|
36043
|
+
// is a number.
|
|
36044
|
+
(lineWidth +
|
|
36045
|
+
(stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
|
|
36046
|
+
opacity = stateOptions[state]?.opacity ?? opacity;
|
|
35851
36047
|
}
|
|
35852
36048
|
if (graph && !graph.dashstyle && isNumber(lineWidth)) {
|
|
35853
36049
|
// Animate the graph stroke-width
|
|
@@ -35891,11 +36087,7 @@ class Series {
|
|
|
35891
36087
|
* Can be either `hover` or undefined to set to normal state.
|
|
35892
36088
|
*/
|
|
35893
36089
|
setAllPointsToState(state) {
|
|
35894
|
-
this.points.forEach(
|
|
35895
|
-
if (point.setState) {
|
|
35896
|
-
point.setState(state);
|
|
35897
|
-
}
|
|
35898
|
-
});
|
|
36090
|
+
this.points.forEach((point) => point.setState?.(state));
|
|
35899
36091
|
}
|
|
35900
36092
|
/**
|
|
35901
36093
|
* Show or hide the series.
|
|
@@ -36576,7 +36768,6 @@ Series_SeriesRegistry.series = Series;
|
|
|
36576
36768
|
* */
|
|
36577
36769
|
|
|
36578
36770
|
|
|
36579
|
-
const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
|
|
36580
36771
|
|
|
36581
36772
|
const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
|
|
36582
36773
|
|
|
@@ -36705,7 +36896,7 @@ class Legend {
|
|
|
36705
36896
|
* @param {Highcharts.LegendOptions} options
|
|
36706
36897
|
*/
|
|
36707
36898
|
setOptions(options) {
|
|
36708
|
-
const padding =
|
|
36899
|
+
const padding = (options.padding ?? 8);
|
|
36709
36900
|
/**
|
|
36710
36901
|
* Legend options.
|
|
36711
36902
|
*
|
|
@@ -36722,7 +36913,7 @@ class Legend {
|
|
|
36722
36913
|
this.itemMarginBottom = options.itemMarginBottom;
|
|
36723
36914
|
this.padding = padding;
|
|
36724
36915
|
this.initialItemY = padding - 5; // 5 is pixels above the text
|
|
36725
|
-
this.symbolWidth =
|
|
36916
|
+
this.symbolWidth = (options.symbolWidth ?? 16);
|
|
36726
36917
|
this.pages = [];
|
|
36727
36918
|
this.proximate = options.layout === 'proximate' && !this.chart.inverted;
|
|
36728
36919
|
// #12705: baseline has to be reset on every update
|
|
@@ -36756,7 +36947,7 @@ class Legend {
|
|
|
36756
36947
|
}
|
|
36757
36948
|
this.destroy();
|
|
36758
36949
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
36759
|
-
if (
|
|
36950
|
+
if (redraw ?? true) {
|
|
36760
36951
|
chart.redraw();
|
|
36761
36952
|
}
|
|
36762
36953
|
fireEvent(this, 'afterUpdate', { redraw });
|
|
@@ -36994,7 +37185,7 @@ class Legend {
|
|
|
36994
37185
|
* The item to render.
|
|
36995
37186
|
*/
|
|
36996
37187
|
renderItem(item) {
|
|
36997
|
-
const legend = this, legendItem = item.legendItem = item.legendItem || {}, chart = legend.chart, renderer = chart.renderer, options = legend.options, horizontal = options.layout === 'horizontal', symbolWidth = legend.symbolWidth, symbolPadding = options.symbolPadding || 0, itemStyle = legend.itemStyle, itemHiddenStyle = legend.itemHiddenStyle, itemDistance = horizontal ?
|
|
37188
|
+
const legend = this, legendItem = item.legendItem = item.legendItem || {}, chart = legend.chart, renderer = chart.renderer, options = legend.options, horizontal = options.layout === 'horizontal', symbolWidth = legend.symbolWidth, symbolPadding = options.symbolPadding || 0, itemStyle = legend.itemStyle, itemHiddenStyle = legend.itemHiddenStyle, itemDistance = horizontal ? (options.itemDistance ?? 20) : 0, ltr = !options.rtl, isSeries = !item.series, series = !isSeries && item.series.drawLegendSymbol ?
|
|
36998
37189
|
item.series :
|
|
36999
37190
|
item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
|
|
37000
37191
|
seriesOptions &&
|
|
@@ -37040,9 +37231,11 @@ class Legend {
|
|
|
37040
37231
|
legend.fontMetrics.f + 3 + legend.itemMarginTop;
|
|
37041
37232
|
label.attr('y', legend.baseline);
|
|
37042
37233
|
legend.symbolHeight =
|
|
37043
|
-
|
|
37234
|
+
(options.symbolHeight ?? legend.fontMetrics.f);
|
|
37044
37235
|
if (options.squareSymbol) {
|
|
37045
|
-
legend.symbolWidth =
|
|
37236
|
+
legend.symbolWidth =
|
|
37237
|
+
options.symbolWidth ??
|
|
37238
|
+
Math.max(legend.symbolHeight, 16);
|
|
37046
37239
|
itemExtraWidth = legend.symbolWidth + symbolPadding +
|
|
37047
37240
|
itemDistance + (showCheckbox ? 20 : 0);
|
|
37048
37241
|
if (ltr) {
|
|
@@ -37094,7 +37287,7 @@ class Legend {
|
|
|
37094
37287
|
* @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
|
|
37095
37288
|
*/
|
|
37096
37289
|
layoutItem(item) {
|
|
37097
|
-
const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ?
|
|
37290
|
+
const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ? (options.itemDistance ?? 20) : 0, maxLegendWidth = this.maxLegendWidth, itemWidth = (options.alignColumns &&
|
|
37098
37291
|
this.totalItemWidth > maxLegendWidth) ?
|
|
37099
37292
|
this.maxItemWidth :
|
|
37100
37293
|
item.itemWidth, legendItem = item.legendItem || {};
|
|
@@ -37148,7 +37341,9 @@ class Legend {
|
|
|
37148
37341
|
const seriesOptions = series?.options;
|
|
37149
37342
|
// Handle showInLegend. If the series is linked to another series,
|
|
37150
37343
|
// defaults to false.
|
|
37151
|
-
if (series &&
|
|
37344
|
+
if (series &&
|
|
37345
|
+
(seriesOptions.showInLegend ??
|
|
37346
|
+
(!defined(seriesOptions.linkedTo)))) {
|
|
37152
37347
|
// Use points or series for the legend item depending on
|
|
37153
37348
|
// legendType
|
|
37154
37349
|
allItems = allItems.concat(series.legendItem?.labels ||
|
|
@@ -37430,7 +37625,7 @@ class Legend {
|
|
|
37430
37625
|
* @function Highcharts.Legend#handleOverflow
|
|
37431
37626
|
*/
|
|
37432
37627
|
handleOverflow(legendHeight) {
|
|
37433
|
-
const legend = this, chart = this.chart, renderer = chart.renderer, options = this.options, optionsY = options.y, alignTop = options.verticalAlign === 'top', padding = this.padding, maxHeight = options.maxHeight, navOptions = options.navigation, animation =
|
|
37628
|
+
const legend = this, chart = this.chart, renderer = chart.renderer, options = this.options, optionsY = options.y, alignTop = options.verticalAlign === 'top', padding = this.padding, maxHeight = options.maxHeight, navOptions = options.navigation, animation = (navOptions.animation ?? true), arrowSize = navOptions.arrowSize || 12, pages = this.pages, allItems = this.allItems, clipToHeight = function (height) {
|
|
37434
37629
|
if (typeof height === 'number') {
|
|
37435
37630
|
clipRect.attr({
|
|
37436
37631
|
height: height
|
|
@@ -37476,7 +37671,7 @@ class Legend {
|
|
|
37476
37671
|
navOptions.enabled !== false) {
|
|
37477
37672
|
this.clipHeight = clipHeight =
|
|
37478
37673
|
Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
|
|
37479
|
-
this.currentPage =
|
|
37674
|
+
this.currentPage = (this.currentPage ?? 1);
|
|
37480
37675
|
this.fullHeight = legendHeight;
|
|
37481
37676
|
// Fill pages with Y positions so that the top of each a legend item
|
|
37482
37677
|
// defines the scroll top for each page (#2098)
|
|
@@ -37579,7 +37774,7 @@ class Legend {
|
|
|
37579
37774
|
}
|
|
37580
37775
|
if (currentPage > 0) {
|
|
37581
37776
|
if (typeof animation !== 'undefined') {
|
|
37582
|
-
|
|
37777
|
+
setAnimation(animation, chart);
|
|
37583
37778
|
}
|
|
37584
37779
|
this.nav.attr({
|
|
37585
37780
|
translateX: padding,
|
|
@@ -37636,7 +37831,7 @@ class Legend {
|
|
|
37636
37831
|
this.currentPage = currentPage;
|
|
37637
37832
|
this.positionCheckboxes();
|
|
37638
37833
|
// Fire event after scroll animation is complete
|
|
37639
|
-
const animOptions =
|
|
37834
|
+
const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
|
|
37640
37835
|
syncTimeout(() => {
|
|
37641
37836
|
fireEvent(this, 'afterScroll', { currentPage });
|
|
37642
37837
|
}, animOptions.duration);
|
|
@@ -37846,7 +38041,7 @@ class Legend {
|
|
|
37846
38041
|
*/ /**
|
|
37847
38042
|
* Related browser event.
|
|
37848
38043
|
* @name Highcharts.LegendItemClickEventObject#browserEvent
|
|
37849
|
-
* @type {
|
|
38044
|
+
* @type {PointerEvent}
|
|
37850
38045
|
*/ /**
|
|
37851
38046
|
* Prevent the default action of toggle the visibility of the series or point.
|
|
37852
38047
|
* @name Highcharts.LegendItemClickEventObject#preventDefault
|
|
@@ -37897,7 +38092,7 @@ class Legend {
|
|
|
37897
38092
|
*/ /**
|
|
37898
38093
|
* Related browser event.
|
|
37899
38094
|
* @name Highcharts.PointLegendItemClickEventObject#browserEvent
|
|
37900
|
-
* @type {
|
|
38095
|
+
* @type {PointerEvent}
|
|
37901
38096
|
*/ /**
|
|
37902
38097
|
* Whether the default action has been prevented (`true`) or not.
|
|
37903
38098
|
* @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
|
|
@@ -37953,7 +38148,7 @@ class Legend {
|
|
|
37953
38148
|
*/ /**
|
|
37954
38149
|
* Related browser event.
|
|
37955
38150
|
* @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
|
|
37956
|
-
* @type {
|
|
38151
|
+
* @type {PointerEvent}
|
|
37957
38152
|
*/ /**
|
|
37958
38153
|
* Whether the default action has been prevented (`true`) or not.
|
|
37959
38154
|
* @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
|
|
@@ -37987,7 +38182,6 @@ class Legend {
|
|
|
37987
38182
|
* */
|
|
37988
38183
|
|
|
37989
38184
|
|
|
37990
|
-
const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
|
|
37991
38185
|
|
|
37992
38186
|
|
|
37993
38187
|
const { defaultOptions: Chart_defaultOptions } = Defaults;
|
|
@@ -38078,7 +38272,7 @@ class Chart {
|
|
|
38078
38272
|
*/
|
|
38079
38273
|
static chart(a, b, c) {
|
|
38080
38274
|
const chart = new Chart(a, b, c);
|
|
38081
|
-
return chart.promise
|
|
38275
|
+
return chart.promise ?? chart;
|
|
38082
38276
|
}
|
|
38083
38277
|
// Implementation
|
|
38084
38278
|
constructor(a,
|
|
@@ -38119,10 +38313,10 @@ class Chart {
|
|
|
38119
38313
|
const chart = this, options = chart.options.chart, zooming = options.zooming;
|
|
38120
38314
|
chart.zooming = {
|
|
38121
38315
|
...zooming,
|
|
38122
|
-
type:
|
|
38123
|
-
key:
|
|
38124
|
-
pinchType:
|
|
38125
|
-
singleTouch:
|
|
38316
|
+
type: (options.zoomType ?? zooming.type),
|
|
38317
|
+
key: (options.zoomKey ?? zooming.key),
|
|
38318
|
+
pinchType: (options.pinchType ?? zooming.pinchType),
|
|
38319
|
+
singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
|
|
38126
38320
|
resetButton: merge(zooming.resetButton, options.resetZoomButton)
|
|
38127
38321
|
};
|
|
38128
38322
|
}
|
|
@@ -38465,7 +38659,7 @@ class Chart {
|
|
|
38465
38659
|
redraw(animation) {
|
|
38466
38660
|
fireEvent(this, 'beforeRedraw');
|
|
38467
38661
|
const chart = this, axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [], series = chart.series, pointer = chart.pointer, legend = chart.legend, legendUserOptions = chart.userOptions.legend, renderer = chart.renderer, isHiddenChart = renderer.isHidden(), afterRedraw = [];
|
|
38468
|
-
let hasDirtyStacks, hasStackedSeries, i,
|
|
38662
|
+
let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
|
|
38469
38663
|
renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
|
|
38470
38664
|
// Handle responsive rules, not only on resize (#6130)
|
|
38471
38665
|
if (chart.setResponsive) {
|
|
@@ -38474,7 +38668,7 @@ class Chart {
|
|
|
38474
38668
|
// Set the global animation. When chart.hasRendered is not true, the
|
|
38475
38669
|
// redraw call comes from a responsive rule and animation should not
|
|
38476
38670
|
// occur.
|
|
38477
|
-
|
|
38671
|
+
setAnimation(chart.hasRendered ? animation : false, chart);
|
|
38478
38672
|
if (isHiddenChart) {
|
|
38479
38673
|
chart.temporaryDisplay();
|
|
38480
38674
|
}
|
|
@@ -38537,6 +38731,7 @@ class Chart {
|
|
|
38537
38731
|
});
|
|
38538
38732
|
chart.getMargins(); // #3098
|
|
38539
38733
|
// If one axis is dirty, all axes must be redrawn (#792, #2169)
|
|
38734
|
+
let isDirtyBox = chart.isDirtyBox;
|
|
38540
38735
|
axes.forEach(function (axis) {
|
|
38541
38736
|
if (axis.isDirty) {
|
|
38542
38737
|
isDirtyBox = true;
|
|
@@ -38673,7 +38868,7 @@ class Chart {
|
|
|
38673
38868
|
// inspect the generated series.points.
|
|
38674
38869
|
series.getPointsCollection()
|
|
38675
38870
|
.forEach((point) => {
|
|
38676
|
-
if (
|
|
38871
|
+
if (point.selectedStaging ?? point.selected) {
|
|
38677
38872
|
acc.push(point);
|
|
38678
38873
|
}
|
|
38679
38874
|
});
|
|
@@ -39072,11 +39267,8 @@ class Chart {
|
|
|
39072
39267
|
const chartHeight = chart.chartHeight;
|
|
39073
39268
|
let chartWidth = chart.chartWidth;
|
|
39074
39269
|
// Allow table cells and flex-boxes to shrink without the chart
|
|
39075
|
-
// blocking them out (#6427)
|
|
39076
|
-
|
|
39077
|
-
if (!chart.styledMode) {
|
|
39078
|
-
css(renderTo, { overflow: 'hidden' });
|
|
39079
|
-
}
|
|
39270
|
+
// blocking them out (#6427)
|
|
39271
|
+
css(renderTo, { overflow: 'hidden' });
|
|
39080
39272
|
// Create the inner container
|
|
39081
39273
|
if (!chart.styledMode) {
|
|
39082
39274
|
containerStyle = extend({
|
|
@@ -39114,7 +39306,7 @@ class Chart {
|
|
|
39114
39306
|
chartWidth = chart.chartWidth;
|
|
39115
39307
|
if (!chart.styledMode) {
|
|
39116
39308
|
css(container, {
|
|
39117
|
-
width:
|
|
39309
|
+
width: (optionsChart.style?.width ?? chartWidth + 'px')
|
|
39118
39310
|
});
|
|
39119
39311
|
}
|
|
39120
39312
|
}
|
|
@@ -39133,7 +39325,7 @@ class Chart {
|
|
|
39133
39325
|
// first ResizeObserver reflow
|
|
39134
39326
|
chart.containerBox = chart.getContainerBox();
|
|
39135
39327
|
// Set the initial animation from the options
|
|
39136
|
-
|
|
39328
|
+
setAnimation(void 0, chart);
|
|
39137
39329
|
chart.setClassName(optionsChart.className);
|
|
39138
39330
|
if (!chart.styledMode) {
|
|
39139
39331
|
chart.renderer.setStyle(optionsChart.style);
|
|
@@ -39328,7 +39520,7 @@ class Chart {
|
|
|
39328
39520
|
// Handle the isResizing counter
|
|
39329
39521
|
chart.isResizing += 1;
|
|
39330
39522
|
// Set the animation for the current process
|
|
39331
|
-
|
|
39523
|
+
setAnimation(animation, chart);
|
|
39332
39524
|
const globalAnimation = renderer.globalAnimation;
|
|
39333
39525
|
chart.oldChartHeight = chart.chartHeight;
|
|
39334
39526
|
chart.oldChartWidth = chart.chartWidth;
|
|
@@ -39347,7 +39539,7 @@ class Chart {
|
|
|
39347
39539
|
// Resize the container with the global animation applied if enabled
|
|
39348
39540
|
// (#2503)
|
|
39349
39541
|
if (!chart.styledMode) {
|
|
39350
|
-
(globalAnimation ?
|
|
39542
|
+
(globalAnimation ? animate : css)(chart.container, {
|
|
39351
39543
|
width: `${chartWidth + scrollablePixelsX}px`,
|
|
39352
39544
|
height: `${chartHeight + scrollablePixelsY}px`
|
|
39353
39545
|
}, globalAnimation);
|
|
@@ -39373,7 +39565,7 @@ class Chart {
|
|
|
39373
39565
|
if (chart) {
|
|
39374
39566
|
fireEvent(chart, 'endResize');
|
|
39375
39567
|
}
|
|
39376
|
-
},
|
|
39568
|
+
}, animObject(globalAnimation).duration);
|
|
39377
39569
|
}
|
|
39378
39570
|
// Handle resizing counter even if we've re-rendered or not (#20548).
|
|
39379
39571
|
chart.isResizing -= 1;
|
|
@@ -39757,7 +39949,7 @@ class Chart {
|
|
|
39757
39949
|
const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
|
|
39758
39950
|
mockTick.destroy();
|
|
39759
39951
|
if (label &&
|
|
39760
|
-
|
|
39952
|
+
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39761
39953
|
expectedSpace = label.getBBox().height +
|
|
39762
39954
|
labels.distance +
|
|
39763
39955
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
@@ -40092,7 +40284,7 @@ class Chart {
|
|
|
40092
40284
|
const chart = this;
|
|
40093
40285
|
let series;
|
|
40094
40286
|
if (options) { // <- not necessary
|
|
40095
|
-
redraw =
|
|
40287
|
+
redraw = (redraw ?? true); // Defaults to true
|
|
40096
40288
|
fireEvent(chart, 'addSeries', { options: options }, function () {
|
|
40097
40289
|
series = chart.initSeries(options);
|
|
40098
40290
|
chart.isDirtyLegend = true;
|
|
@@ -40183,7 +40375,7 @@ class Chart {
|
|
|
40183
40375
|
*/
|
|
40184
40376
|
createAxis(coll, options) {
|
|
40185
40377
|
const axis = new Axis_Axis(this, options.axis, coll);
|
|
40186
|
-
if (
|
|
40378
|
+
if (options.redraw ?? true) {
|
|
40187
40379
|
this.redraw(options.animation);
|
|
40188
40380
|
}
|
|
40189
40381
|
return axis;
|
|
@@ -40231,7 +40423,7 @@ class Chart {
|
|
|
40231
40423
|
}
|
|
40232
40424
|
loadingDiv.className = 'highcharts-loading';
|
|
40233
40425
|
// Update text
|
|
40234
|
-
HTML_AST.setElementHTML(loadingSpan,
|
|
40426
|
+
HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
|
|
40235
40427
|
if (!chart.styledMode) {
|
|
40236
40428
|
// Update visuals
|
|
40237
40429
|
css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
|
|
@@ -40242,7 +40434,7 @@ class Chart {
|
|
|
40242
40434
|
opacity: 0,
|
|
40243
40435
|
display: ''
|
|
40244
40436
|
});
|
|
40245
|
-
|
|
40437
|
+
animate(loadingDiv, {
|
|
40246
40438
|
opacity: loadingStyle.opacity ?? 0.5
|
|
40247
40439
|
}, {
|
|
40248
40440
|
duration: loadingOptions?.showDuration ?? 0
|
|
@@ -40270,7 +40462,7 @@ class Chart {
|
|
|
40270
40462
|
loadingDiv.className =
|
|
40271
40463
|
'highcharts-loading highcharts-loading-hidden';
|
|
40272
40464
|
if (!this.styledMode) {
|
|
40273
|
-
|
|
40465
|
+
animate(loadingDiv, {
|
|
40274
40466
|
opacity: 0
|
|
40275
40467
|
}, {
|
|
40276
40468
|
duration: options.loading?.hideDuration ?? 100,
|
|
@@ -40302,6 +40494,9 @@ class Chart {
|
|
|
40302
40494
|
* Note that when changing series data, `chart.update` may mutate the passed
|
|
40303
40495
|
* data options.
|
|
40304
40496
|
*
|
|
40497
|
+
* If the given options don't differ from the current chart options, the
|
|
40498
|
+
* update is skipped and the `afterUpdate` event is not emitted.
|
|
40499
|
+
*
|
|
40305
40500
|
* See also the
|
|
40306
40501
|
* [responsive option set](https://api.highcharts.com/highcharts/responsive).
|
|
40307
40502
|
* Switching between `responsive.rules` basically runs `chart.update` under
|
|
@@ -40346,14 +40541,24 @@ class Chart {
|
|
|
40346
40541
|
caption: 'setCaption'
|
|
40347
40542
|
}, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
|
|
40348
40543
|
let updateAllAxes, updateAllSeries, runSetSize;
|
|
40349
|
-
|
|
40544
|
+
options = diffObjects(options, chart.options);
|
|
40545
|
+
const e = {
|
|
40546
|
+
options,
|
|
40547
|
+
// Event handlers can turn this on or off to control further
|
|
40548
|
+
// processing
|
|
40549
|
+
hasChanged: !!Object.keys(options).length
|
|
40550
|
+
};
|
|
40551
|
+
fireEvent(chart, 'update', e);
|
|
40552
|
+
// If no changes are detected, stop further processing (#24805).
|
|
40553
|
+
if (!e.hasChanged) {
|
|
40554
|
+
return;
|
|
40555
|
+
}
|
|
40350
40556
|
// If there are responsive rules in action, undo the responsive rules
|
|
40351
40557
|
// before we apply the updated options and replay the responsive rules
|
|
40352
40558
|
// on top from the chart.redraw function (#9617).
|
|
40353
40559
|
if (!isResponsiveOptions) {
|
|
40354
40560
|
chart.setResponsive(false, true);
|
|
40355
40561
|
}
|
|
40356
|
-
options = diffObjects(options, chart.options);
|
|
40357
40562
|
chart.userOptions = merge(chart.userOptions, options);
|
|
40358
40563
|
// If the top-level chart option is present, some special updates are
|
|
40359
40564
|
// required
|
|
@@ -40456,7 +40661,7 @@ class Chart {
|
|
|
40456
40661
|
}
|
|
40457
40662
|
// No match by id found, match by index instead
|
|
40458
40663
|
if (!item && chart[coll]) {
|
|
40459
|
-
item = chart[coll][
|
|
40664
|
+
item = chart[coll][(newOptions.index ?? i)];
|
|
40460
40665
|
// Check if we grabbed an item with an existing but
|
|
40461
40666
|
// different id (#13541). Check that the item in this
|
|
40462
40667
|
// position is not internal (navigator).
|
|
@@ -40532,7 +40737,7 @@ class Chart {
|
|
|
40532
40737
|
(isNumber(newHeight) && newHeight !== chart.chartHeight)) {
|
|
40533
40738
|
chart.setSize(newWidth, newHeight, animation);
|
|
40534
40739
|
}
|
|
40535
|
-
else if (
|
|
40740
|
+
else if (redraw ?? true) {
|
|
40536
40741
|
chart.redraw(animation);
|
|
40537
40742
|
}
|
|
40538
40743
|
fireEvent(chart, 'afterUpdate', {
|
|
@@ -40581,15 +40786,11 @@ class Chart {
|
|
|
40581
40786
|
showResetZoom() {
|
|
40582
40787
|
const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
|
|
40583
40788
|
btnOptions.relativeTo === 'spacingBox' ?
|
|
40584
|
-
|
|
40789
|
+
void 0 :
|
|
40585
40790
|
'plotBox');
|
|
40586
|
-
|
|
40587
|
-
function zoomOut() {
|
|
40588
|
-
chart.zoomOut();
|
|
40589
|
-
}
|
|
40590
|
-
fireEvent(this, 'beforeShowResetZoom', null, function () {
|
|
40791
|
+
fireEvent(this, 'beforeShowResetZoom', void 0, () => {
|
|
40591
40792
|
chart.resetZoomButton = chart.renderer
|
|
40592
|
-
.button(lang.resetZoom,
|
|
40793
|
+
.button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
|
|
40593
40794
|
.attr({
|
|
40594
40795
|
align: btnOptions.position.align,
|
|
40595
40796
|
title: lang.resetZoomTitle
|
|
@@ -40667,21 +40868,21 @@ class Chart {
|
|
|
40667
40868
|
* @function Highcharts.Chart#transform
|
|
40668
40869
|
*/
|
|
40669
40870
|
transform(params) {
|
|
40670
|
-
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, {
|
|
40871
|
+
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
|
|
40671
40872
|
// Remove active points for shared tooltip
|
|
40672
40873
|
this.hoverPoints?.forEach((point) => point.setState());
|
|
40673
40874
|
fireEvent(this, 'transform', params);
|
|
40674
40875
|
let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
|
|
40675
40876
|
for (const axis of axes) {
|
|
40676
|
-
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength =
|
|
40877
|
+
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength = (to[wh] ?? axis.len), fromLength = (from[wh] ?? axis.len),
|
|
40677
40878
|
// If fingers pinched very close on this axis, treat as pan
|
|
40678
40879
|
scale = Math.abs(toLength) < 10 ?
|
|
40679
40880
|
1 :
|
|
40680
40881
|
toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
|
|
40681
|
-
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (
|
|
40682
|
-
(!
|
|
40683
|
-
|
|
40684
|
-
1, minPx = move;
|
|
40882
|
+
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
|
|
40883
|
+
(!horiz && reversed)) ?
|
|
40884
|
+
1 :
|
|
40885
|
+
-1, minPx = move;
|
|
40685
40886
|
// Zooming in multiple panes, zoom only in the pane that receives
|
|
40686
40887
|
// the input
|
|
40687
40888
|
if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
|
|
@@ -40690,17 +40891,11 @@ class Chart {
|
|
|
40690
40891
|
// Adjust offset to ensure selection zoom triggers correctly
|
|
40691
40892
|
// (#22945)
|
|
40692
40893
|
// Set offset to 0 for ordinal axis only when zooming out, (#24545).
|
|
40693
|
-
const offset = (axis.chart.polar ||
|
|
40894
|
+
const offset = (selection || axis.chart.polar ||
|
|
40895
|
+
(axis.isOrdinal && scale <= 1)) ?
|
|
40694
40896
|
0 :
|
|
40695
40897
|
(minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
|
|
40696
40898
|
let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
|
|
40697
|
-
if (selection) {
|
|
40698
|
-
selection[axis.coll].push({
|
|
40699
|
-
axis,
|
|
40700
|
-
min: Math.min(eventMin, eventMax),
|
|
40701
|
-
max: Math.max(eventMin, eventMax)
|
|
40702
|
-
});
|
|
40703
|
-
}
|
|
40704
40899
|
if (newMin > newMax) {
|
|
40705
40900
|
[newMin, newMax] = [newMax, newMin];
|
|
40706
40901
|
}
|
|
@@ -40757,14 +40952,15 @@ class Chart {
|
|
|
40757
40952
|
}
|
|
40758
40953
|
// Set new extremes if they are actually new
|
|
40759
40954
|
if (reset || (axis.series.length &&
|
|
40760
|
-
(
|
|
40761
|
-
|
|
40762
|
-
|
|
40955
|
+
(selection ||
|
|
40956
|
+
((newMin !== min || newMax !== max) &&
|
|
40957
|
+
newMin >= floor &&
|
|
40958
|
+
newMax <= ceiling)))) {
|
|
40763
40959
|
if (selection) {
|
|
40764
40960
|
selection[axis.coll].push({
|
|
40765
40961
|
axis,
|
|
40766
|
-
min:
|
|
40767
|
-
max:
|
|
40962
|
+
min: Math.min(eventMin, eventMax),
|
|
40963
|
+
max: Math.max(eventMin, eventMax)
|
|
40768
40964
|
});
|
|
40769
40965
|
}
|
|
40770
40966
|
else {
|
|
@@ -40772,11 +40968,14 @@ class Chart {
|
|
|
40772
40968
|
// disallow certain axis padding options that would make
|
|
40773
40969
|
// panning/zooming hard. Reset and redraw after the
|
|
40774
40970
|
// operation has finished.
|
|
40775
|
-
axis.isPanning = trigger !== 'zoom'
|
|
40971
|
+
axis.isPanning = trigger !== 'zoom' &&
|
|
40972
|
+
trigger !== 'drop';
|
|
40776
40973
|
if (axis.isPanning && trigger !== 'mousewheel') {
|
|
40777
40974
|
isAnyAxisPanning = true; // #21319
|
|
40778
40975
|
}
|
|
40779
|
-
|
|
40976
|
+
if (trigger !== 'drop') {
|
|
40977
|
+
axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
|
|
40978
|
+
}
|
|
40780
40979
|
if (!reset &&
|
|
40781
40980
|
(newMin > floor || newMax < ceiling)) {
|
|
40782
40981
|
displayButton = allowResetButton;
|
|
@@ -40807,7 +41006,8 @@ class Chart {
|
|
|
40807
41006
|
});
|
|
40808
41007
|
}
|
|
40809
41008
|
else {
|
|
40810
|
-
// Show or hide the Reset zoom button, but not while
|
|
41009
|
+
// Show or hide the Reset zoom button, but not while
|
|
41010
|
+
// panning.
|
|
40811
41011
|
if (displayButton &&
|
|
40812
41012
|
!isAnyAxisPanning &&
|
|
40813
41013
|
!this.resetZoomButton) {
|
|
@@ -41049,7 +41249,6 @@ extend(Chart.prototype, {
|
|
|
41049
41249
|
*/
|
|
41050
41250
|
|
|
41051
41251
|
|
|
41052
|
-
const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
|
|
41053
41252
|
|
|
41054
41253
|
const { composed: ScrollablePlotArea_composed } = Core_Globals;
|
|
41055
41254
|
|
|
@@ -41215,7 +41414,7 @@ class ScrollablePlotArea {
|
|
|
41215
41414
|
this.moveFixedElements();
|
|
41216
41415
|
}
|
|
41217
41416
|
// Increase the size of the scrollable renderer and background
|
|
41218
|
-
|
|
41417
|
+
stop(chart.container);
|
|
41219
41418
|
css(container, {
|
|
41220
41419
|
width: `${scrollableWidth}px`,
|
|
41221
41420
|
height: `${scrollableHeight}px`
|
|
@@ -41372,6 +41571,13 @@ ScrollablePlotArea.fixedSelectors = [
|
|
|
41372
41571
|
* vertical scrolling, depending on whether the `minWidth` or `minHeight`
|
|
41373
41572
|
* option is set.
|
|
41374
41573
|
*
|
|
41574
|
+
* **Note:** Because native browser scrollbars are used, they may
|
|
41575
|
+
* overlap with fixed chart elements such as credits or the chart
|
|
41576
|
+
* border. To avoid this collision, it is recommended to manually add
|
|
41577
|
+
* extra space to the corresponding side using `chart.spacingBottom`
|
|
41578
|
+
* (for horizontal scrollbars) or `chart.spacingRight` (for vertical
|
|
41579
|
+
* scrollbars).
|
|
41580
|
+
*
|
|
41375
41581
|
* @sample highcharts/chart/scrollable-plotarea
|
|
41376
41582
|
* Scrollable plot area
|
|
41377
41583
|
* @sample highcharts/chart/scrollable-plotarea-vertical
|
|
@@ -41532,7 +41738,7 @@ class StackItem {
|
|
|
41532
41738
|
r: options.borderRadius || 0,
|
|
41533
41739
|
text: str,
|
|
41534
41740
|
// Set default padding to 5 as it is in dataLabels #12308
|
|
41535
|
-
padding:
|
|
41741
|
+
padding: (options.padding ?? 5),
|
|
41536
41742
|
visibility: 'hidden' // Hidden until setOffset is called
|
|
41537
41743
|
};
|
|
41538
41744
|
if (!chart.styledMode) {
|
|
@@ -41566,7 +41772,7 @@ class StackItem {
|
|
|
41566
41772
|
}), { verticalAlign } = alignOptions;
|
|
41567
41773
|
if (label && stackBox) {
|
|
41568
41774
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41569
|
-
let isJustify =
|
|
41775
|
+
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41570
41776
|
// Reset alignOptions property after justify #12337
|
|
41571
41777
|
alignOptions.x = options.x || 0;
|
|
41572
41778
|
alignOptions.y = options.y || 0;
|
|
@@ -41603,7 +41809,7 @@ class StackItem {
|
|
|
41603
41809
|
rotationOriginY: labelBox.height / 2
|
|
41604
41810
|
});
|
|
41605
41811
|
// Check if the dataLabel should be visible.
|
|
41606
|
-
if (
|
|
41812
|
+
if (((!isJustify && options.crop) ?? true)) {
|
|
41607
41813
|
visible =
|
|
41608
41814
|
isNumber(label.x) &&
|
|
41609
41815
|
isNumber(label.y) &&
|
|
@@ -41637,7 +41843,7 @@ class StackItem {
|
|
|
41637
41843
|
getStackBox(stackBoxProps) {
|
|
41638
41844
|
const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41639
41845
|
100 :
|
|
41640
|
-
|
|
41846
|
+
(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 ||
|
|
41641
41847
|
(isNumber(axis.min) &&
|
|
41642
41848
|
axis.logarithmic &&
|
|
41643
41849
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
@@ -41722,7 +41928,6 @@ class StackItem {
|
|
|
41722
41928
|
* */
|
|
41723
41929
|
|
|
41724
41930
|
|
|
41725
|
-
const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
|
|
41726
41931
|
|
|
41727
41932
|
const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
|
|
41728
41933
|
|
|
@@ -41751,7 +41956,7 @@ function chartGetStacks() {
|
|
|
41751
41956
|
if (series.options.stacking && series.reserveSpace()) {
|
|
41752
41957
|
series.stackKey = [
|
|
41753
41958
|
series.type,
|
|
41754
|
-
|
|
41959
|
+
(series.options.stack ?? ''),
|
|
41755
41960
|
inverted ? xAxisOptions.top : xAxisOptions.left,
|
|
41756
41961
|
inverted ? xAxisOptions.height : xAxisOptions.width
|
|
41757
41962
|
].join(',');
|
|
@@ -41914,7 +42119,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41914
42119
|
stack = stacks[key][x];
|
|
41915
42120
|
if (y !== null) {
|
|
41916
42121
|
stack.points[pointKey] = stack.points[series.index] = [
|
|
41917
|
-
|
|
42122
|
+
(stack.cumulative ?? stackThreshold)
|
|
41918
42123
|
];
|
|
41919
42124
|
// Record the base of the stack
|
|
41920
42125
|
if (!defined(stack.cumulative)) {
|
|
@@ -41962,7 +42167,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41962
42167
|
stack.cumulative = (total || 1) - 1;
|
|
41963
42168
|
}
|
|
41964
42169
|
else {
|
|
41965
|
-
stack.cumulative = correctFloat(
|
|
42170
|
+
stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
|
|
41966
42171
|
}
|
|
41967
42172
|
stack.total = total;
|
|
41968
42173
|
if (y !== null) {
|
|
@@ -42066,7 +42271,7 @@ class AxisAdditions {
|
|
|
42066
42271
|
}
|
|
42067
42272
|
/** @internal */
|
|
42068
42273
|
renderStackTotals() {
|
|
42069
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig =
|
|
42274
|
+
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig = getDeferredAnimation(chart, stackLabelsAnim || false), stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||
|
|
42070
42275
|
renderer
|
|
42071
42276
|
.g('stack-labels')
|
|
42072
42277
|
.attr({
|
|
@@ -42977,8 +43182,7 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
42977
43182
|
*/
|
|
42978
43183
|
getGraphPath(points) {
|
|
42979
43184
|
const getGraphPath = AreaSeries_LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909
|
|
42980
|
-
yAxis.getThreshold(options.threshold)), connectNulls =
|
|
42981
|
-
options.connectNulls, stacking === 'percent'),
|
|
43185
|
+
yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
|
|
42982
43186
|
// To display null points in underlying stacked series, this
|
|
42983
43187
|
// series graph must be broken, and the area also fall down to
|
|
42984
43188
|
// fill the gap left by the null point. #2069
|
|
@@ -43031,9 +43235,9 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
43031
43235
|
// Treat points with undefined plotY as null (e.g. non-positive
|
|
43032
43236
|
// values on logarithmic axis, #18422)
|
|
43033
43237
|
isNull = points[i].isNull || !defined(points[i].plotY);
|
|
43034
|
-
plotX =
|
|
43238
|
+
plotX = (points[i].rectPlotX ?? points[i].plotX);
|
|
43035
43239
|
yBottom = stacking ?
|
|
43036
|
-
|
|
43240
|
+
(points[i].yBottom ?? translatedThreshold) :
|
|
43037
43241
|
translatedThreshold;
|
|
43038
43242
|
if (!isNull || connectNulls) {
|
|
43039
43243
|
if (!connectNulls) {
|
|
@@ -43371,10 +43575,10 @@ class SplineSeries extends SplineSeries_LineSeries {
|
|
|
43371
43575
|
}
|
|
43372
43576
|
const ret = [
|
|
43373
43577
|
'C',
|
|
43374
|
-
|
|
43375
|
-
|
|
43376
|
-
|
|
43377
|
-
|
|
43578
|
+
(lastPoint.rightContX ?? lastPoint.plotX ?? 0),
|
|
43579
|
+
(lastPoint.rightContY ?? lastPoint.plotY ?? 0),
|
|
43580
|
+
(leftContX ?? plotX ?? 0),
|
|
43581
|
+
(leftContY ?? plotY ?? 0),
|
|
43378
43582
|
plotX,
|
|
43379
43583
|
plotY
|
|
43380
43584
|
];
|
|
@@ -43819,6 +44023,8 @@ const ColumnSeriesDefaults = {
|
|
|
43819
44023
|
* 0.25
|
|
43820
44024
|
* @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
|
|
43821
44025
|
* 0 for tightly packed columns
|
|
44026
|
+
* @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
|
|
44027
|
+
* Pie point padding plugin
|
|
43822
44028
|
*
|
|
43823
44029
|
* @product highcharts highstock gantt
|
|
43824
44030
|
*/
|
|
@@ -44150,12 +44356,12 @@ const ColumnSeriesDefaults = {
|
|
|
44150
44356
|
*/
|
|
44151
44357
|
/**
|
|
44152
44358
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44153
|
-
* @product highcharts highstock
|
|
44359
|
+
* @product highcharts highstock gantt
|
|
44154
44360
|
* @apioption series.column.states.hover
|
|
44155
44361
|
*/
|
|
44156
44362
|
/**
|
|
44157
44363
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44158
|
-
* @product highcharts highstock
|
|
44364
|
+
* @product highcharts highstock gantt
|
|
44159
44365
|
* @apioption series.column.states.select
|
|
44160
44366
|
*/
|
|
44161
44367
|
/**
|
|
@@ -44185,7 +44391,6 @@ const ColumnSeriesDefaults = {
|
|
|
44185
44391
|
* */
|
|
44186
44392
|
|
|
44187
44393
|
|
|
44188
|
-
const { animObject: ColumnSeries_animObject } = AnimationUtilities;
|
|
44189
44394
|
|
|
44190
44395
|
const { parse: ColumnSeries_color } = Color_Color;
|
|
44191
44396
|
|
|
@@ -44256,7 +44461,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44256
44461
|
}
|
|
44257
44462
|
else { // Run the animation
|
|
44258
44463
|
translateStart = Number(series.group.attr(translateProp));
|
|
44259
|
-
series.group.animate({ scaleY: 1 }, extend(
|
|
44464
|
+
series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
|
|
44260
44465
|
// Do the scale synchronously to ensure smooth
|
|
44261
44466
|
// updating (#5030, #7228)
|
|
44262
44467
|
step: function (val, fx) {
|
|
@@ -44342,7 +44547,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44342
44547
|
xAxis.tickInterval ||
|
|
44343
44548
|
1), // #2610
|
|
44344
44549
|
xAxis.len // #1535
|
|
44345
|
-
), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len,
|
|
44550
|
+
), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len, (options.pointWidth ?? pointOffsetWidth * (1 - 2 * options.pointPadding))), pointPadding = (pointOffsetWidth - pointWidth) / 2,
|
|
44346
44551
|
// #1251, #3737
|
|
44347
44552
|
colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
|
|
44348
44553
|
(groupPadding +
|
|
@@ -44592,11 +44797,11 @@ class ColumnSeries extends Series_Series {
|
|
|
44592
44797
|
*/
|
|
44593
44798
|
pointAttribs(point, state) {
|
|
44594
44799
|
const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
|
|
44595
|
-
let stateOptions, zone, brightness, fill =
|
|
44800
|
+
let stateOptions, zone, brightness, fill = point?.color || this.color,
|
|
44596
44801
|
// Set to fill when borderColor null:
|
|
44597
|
-
stroke = (
|
|
44802
|
+
stroke = (point?.[strokeOption] ||
|
|
44598
44803
|
options[strokeOption] ||
|
|
44599
|
-
fill), dashstyle =
|
|
44804
|
+
fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
|
|
44600
44805
|
options[strokeWidthOption] ??
|
|
44601
44806
|
this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
|
|
44602
44807
|
0 :
|
|
@@ -44617,7 +44822,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44617
44822
|
}
|
|
44618
44823
|
// Select or hover states
|
|
44619
44824
|
if (state && point) {
|
|
44620
|
-
stateOptions = merge(options.states[state],
|
|
44825
|
+
stateOptions = merge(options.states?.[state],
|
|
44621
44826
|
// #6401
|
|
44622
44827
|
point.options.states?.[state] || {});
|
|
44623
44828
|
brightness = stateOptions.brightness;
|
|
@@ -44627,14 +44832,13 @@ class ColumnSeries extends Series_Series {
|
|
|
44627
44832
|
.brighten(stateOptions.brightness)
|
|
44628
44833
|
.get()) || fill;
|
|
44629
44834
|
stroke = stateOptions[strokeOption] || stroke;
|
|
44630
|
-
strokeWidth =
|
|
44631
|
-
stateOptions[strokeWidthOption] || strokeWidth;
|
|
44835
|
+
strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
|
|
44632
44836
|
dashstyle = stateOptions.dashStyle || dashstyle;
|
|
44633
|
-
opacity =
|
|
44837
|
+
opacity = stateOptions.opacity ?? opacity;
|
|
44634
44838
|
}
|
|
44635
44839
|
const ret = {
|
|
44636
|
-
fill
|
|
44637
|
-
stroke
|
|
44840
|
+
fill,
|
|
44841
|
+
stroke,
|
|
44638
44842
|
'stroke-width': strokeWidth,
|
|
44639
44843
|
opacity: point?.condemned ? 0 : opacity
|
|
44640
44844
|
};
|
|
@@ -44675,6 +44879,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44675
44879
|
initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
|
|
44676
44880
|
if (!styledMode) {
|
|
44677
44881
|
initialAttr.opacity = 0;
|
|
44882
|
+
initialAttr['stroke-width'] = 0;
|
|
44678
44883
|
}
|
|
44679
44884
|
shouldUpdate = true;
|
|
44680
44885
|
verb = 'animate';
|
|
@@ -44690,7 +44895,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44690
44895
|
}
|
|
44691
44896
|
// Presentational
|
|
44692
44897
|
if (!styledMode) {
|
|
44693
|
-
graphic[verb](series.pointAttribs(point,
|
|
44898
|
+
graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
|
|
44694
44899
|
.shadow(point.allowShadow !== false && options.shadow);
|
|
44695
44900
|
}
|
|
44696
44901
|
graphic
|
|
@@ -44814,6 +45019,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44814
45019
|
* Default Export
|
|
44815
45020
|
*
|
|
44816
45021
|
* */
|
|
45022
|
+
/** @internal */
|
|
44817
45023
|
/* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
|
|
44818
45024
|
/* *
|
|
44819
45025
|
*
|
|
@@ -44850,7 +45056,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44850
45056
|
* */
|
|
44851
45057
|
|
|
44852
45058
|
|
|
44853
|
-
const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
|
|
44854
45059
|
|
|
44855
45060
|
const { format: DataLabel_format } = Core_Templating;
|
|
44856
45061
|
|
|
@@ -44906,7 +45111,7 @@ var DataLabel;
|
|
|
44906
45111
|
// that parts of the align box is inside the plot area
|
|
44907
45112
|
// (#12370). When stacking, it is always inside regardless
|
|
44908
45113
|
// of the option (#15148).
|
|
44909
|
-
|
|
45114
|
+
(options.inside ?? !!this.options.stacking) &&
|
|
44910
45115
|
alignTo &&
|
|
44911
45116
|
chart.isInsidePlot(plotX, inverted ?
|
|
44912
45117
|
alignTo.x + 1 :
|
|
@@ -45009,8 +45214,8 @@ var DataLabel;
|
|
|
45009
45214
|
// zIndex: 20
|
|
45010
45215
|
// }).add();
|
|
45011
45216
|
// chart.renderer.circle(
|
|
45012
|
-
// chart.plotLeft +
|
|
45013
|
-
// chart.plotTop +
|
|
45217
|
+
// chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
|
|
45218
|
+
// chart.plotTop + (dataLabel.alignAttr.y ?? 0),
|
|
45014
45219
|
// 2
|
|
45015
45220
|
// ).attr({
|
|
45016
45221
|
// fill: 'red',
|
|
@@ -45167,7 +45372,7 @@ var DataLabel;
|
|
|
45167
45372
|
'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
|
|
45168
45373
|
// Resolve the animation
|
|
45169
45374
|
const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
|
|
45170
|
-
|
|
45375
|
+
getDeferredAnimation(chart, animation, series) :
|
|
45171
45376
|
{ defer: 0, duration: 0 };
|
|
45172
45377
|
fireEvent(this, 'drawDataLabels');
|
|
45173
45378
|
if (series.hasDataLabels?.()) {
|
|
@@ -45193,7 +45398,7 @@ var DataLabel;
|
|
|
45193
45398
|
if (labelEnabled) {
|
|
45194
45399
|
// Create individual options structure that can be
|
|
45195
45400
|
// extended without affecting others
|
|
45196
|
-
formatString =
|
|
45401
|
+
formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
|
|
45197
45402
|
labelText = defined(formatString) ?
|
|
45198
45403
|
DataLabel_format(formatString, point, chart) :
|
|
45199
45404
|
(labelOptions[point.formatPrefix + 'Formatter'] ||
|
|
@@ -45201,7 +45406,9 @@ var DataLabel;
|
|
|
45201
45406
|
rotation = labelOptions.rotation;
|
|
45202
45407
|
if (!chart.styledMode) {
|
|
45203
45408
|
// Determine the color
|
|
45204
|
-
style.color =
|
|
45409
|
+
style.color = (isString(labelOptions.color) ?
|
|
45410
|
+
labelOptions.color :
|
|
45411
|
+
void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
|
|
45205
45412
|
// Get automated contrast color
|
|
45206
45413
|
if (style.color === 'contrast') {
|
|
45207
45414
|
if (backgroundColor !== 'none') {
|
|
@@ -45933,6 +46140,8 @@ const ScatterSeriesDefaults = {
|
|
|
45933
46140
|
* Arrays of datetime x and y
|
|
45934
46141
|
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
45935
46142
|
* Arrays of point.name and y
|
|
46143
|
+
* @sample {highcharts} highcharts/series-scatter/scatter-cluster/
|
|
46144
|
+
* Computed clusters
|
|
45936
46145
|
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
45937
46146
|
* Config objects
|
|
45938
46147
|
*
|
|
@@ -46000,14 +46209,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
|
|
|
46000
46209
|
return rand - Math.floor(rand);
|
|
46001
46210
|
}
|
|
46002
46211
|
if (jitter) {
|
|
46003
|
-
this.points.forEach(
|
|
46004
|
-
['x', 'y'].forEach(
|
|
46212
|
+
this.points.forEach((point, i) => {
|
|
46213
|
+
['x', 'y'].forEach((dim, j) => {
|
|
46005
46214
|
if (jitter[dim] && !point.isNull) {
|
|
46006
|
-
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`]
|
|
46007
|
-
axis.transA;
|
|
46215
|
+
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
|
|
46008
46216
|
if (axis && !axis.logarithmic) {
|
|
46009
46217
|
// Identify the outer bounds of the jitter range
|
|
46010
|
-
|
|
46218
|
+
// (#25054)
|
|
46219
|
+
const translatedJitter = jitter[dim] * axis.transA *
|
|
46220
|
+
(axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
|
|
46011
46221
|
// Find a random position within this range
|
|
46012
46222
|
point[plotProp] = min +
|
|
46013
46223
|
(max - min) * unrandom(i + j * len);
|
|
@@ -46081,7 +46291,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
|
|
|
46081
46291
|
const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
|
|
46082
46292
|
|
|
46083
46293
|
/**
|
|
46084
|
-
* @
|
|
46294
|
+
* @internal
|
|
46085
46295
|
*/
|
|
46086
46296
|
var CenteredUtilities;
|
|
46087
46297
|
(function (CenteredUtilities) {
|
|
@@ -46099,7 +46309,7 @@ var CenteredUtilities;
|
|
|
46099
46309
|
* Get the center of the pie based on the size and center options relative
|
|
46100
46310
|
* to the plot area. Borrowed by the polar and gauge series types.
|
|
46101
46311
|
*
|
|
46102
|
-
* @
|
|
46312
|
+
* @internal
|
|
46103
46313
|
* @function Highcharts.CenteredSeriesMixin.getCenter
|
|
46104
46314
|
*/
|
|
46105
46315
|
function getCenter() {
|
|
@@ -46112,11 +46322,13 @@ var CenteredUtilities;
|
|
|
46112
46322
|
innerSize = parseFloat(innerSize);
|
|
46113
46323
|
}
|
|
46114
46324
|
const positions = [
|
|
46115
|
-
|
|
46116
|
-
|
|
46325
|
+
(centerOption?.[0] ?? '50%'),
|
|
46326
|
+
(centerOption?.[1] ?? '50%'),
|
|
46117
46327
|
// Prevent from negative values
|
|
46118
|
-
|
|
46119
|
-
|
|
46328
|
+
((size && size < 0 ? void 0 : options.size) ?? '100%'),
|
|
46329
|
+
((innerSize && innerSize < 0 ?
|
|
46330
|
+
void 0 :
|
|
46331
|
+
options.innerSize || 0) ?? '0%')
|
|
46120
46332
|
];
|
|
46121
46333
|
for (i = 0; i < 4; ++i) {
|
|
46122
46334
|
value = positions[i];
|
|
@@ -46144,7 +46356,7 @@ var CenteredUtilities;
|
|
|
46144
46356
|
* GetStartAndEndRadians - Calculates start and end angles in radians.
|
|
46145
46357
|
* Used in series types such as pie and sunburst.
|
|
46146
46358
|
*
|
|
46147
|
-
* @
|
|
46359
|
+
* @internal
|
|
46148
46360
|
* @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
|
|
46149
46361
|
*
|
|
46150
46362
|
* @param {number} [start]
|
|
@@ -46176,6 +46388,7 @@ var CenteredUtilities;
|
|
|
46176
46388
|
* Default Export
|
|
46177
46389
|
*
|
|
46178
46390
|
* */
|
|
46391
|
+
/** @internal */
|
|
46179
46392
|
/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
|
|
46180
46393
|
/* *
|
|
46181
46394
|
*
|
|
@@ -46183,7 +46396,7 @@ var CenteredUtilities;
|
|
|
46183
46396
|
*
|
|
46184
46397
|
* */
|
|
46185
46398
|
/**
|
|
46186
|
-
* @
|
|
46399
|
+
* @internal
|
|
46187
46400
|
* @interface Highcharts.RadianAngles
|
|
46188
46401
|
*/ /**
|
|
46189
46402
|
* @name Highcharts.RadianAngles#end
|
|
@@ -46208,7 +46421,6 @@ var CenteredUtilities;
|
|
|
46208
46421
|
* */
|
|
46209
46422
|
|
|
46210
46423
|
|
|
46211
|
-
const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
|
|
46212
46424
|
|
|
46213
46425
|
|
|
46214
46426
|
/* *
|
|
@@ -46316,9 +46528,9 @@ class PiePoint extends Series_Point {
|
|
|
46316
46528
|
*/
|
|
46317
46529
|
slice(sliced, redraw, animation) {
|
|
46318
46530
|
const series = this.series, chart = series.chart;
|
|
46319
|
-
|
|
46531
|
+
setAnimation(animation, chart);
|
|
46320
46532
|
// Redraw is true by default
|
|
46321
|
-
redraw =
|
|
46533
|
+
redraw = (redraw ?? true);
|
|
46322
46534
|
this.sliced = this.options.sliced = sliced ?? !this.sliced;
|
|
46323
46535
|
// Update options.data
|
|
46324
46536
|
if (series.options.data) {
|
|
@@ -47123,7 +47335,8 @@ class PieSeries extends Series_Series {
|
|
|
47123
47335
|
// Start values
|
|
47124
47336
|
graphic.attr({
|
|
47125
47337
|
// Animate from inner radius (#779)
|
|
47126
|
-
r:
|
|
47338
|
+
r: point.startR ??
|
|
47339
|
+
(series.center && series.center[3] / 2),
|
|
47127
47340
|
start: startAngleRad,
|
|
47128
47341
|
end: startAngleRad
|
|
47129
47342
|
});
|
|
@@ -47764,7 +47977,7 @@ var PieDataLabel_ColumnDataLabel;
|
|
|
47764
47977
|
labelPosition.computed.x = x;
|
|
47765
47978
|
labelPosition.computed.y = y - topOffset;
|
|
47766
47979
|
// Detect overflowing data labels
|
|
47767
|
-
if (
|
|
47980
|
+
if (dataLabelOptions.crop ?? true) {
|
|
47768
47981
|
dataLabelWidth = dataLabel.getBBox().width;
|
|
47769
47982
|
let sideOverflow;
|
|
47770
47983
|
// Overflow left
|
|
@@ -48280,7 +48493,10 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48280
48493
|
if (point.visible) {
|
|
48281
48494
|
(point.dataLabels || []).forEach((label) => {
|
|
48282
48495
|
const options = label.options || {};
|
|
48283
|
-
label.labelrank =
|
|
48496
|
+
label.labelrank =
|
|
48497
|
+
options.labelrank ??
|
|
48498
|
+
point.labelrank ??
|
|
48499
|
+
point.shapeArgs?.height; // #4118
|
|
48284
48500
|
// #21725: Sync target positions for generic overlap
|
|
48285
48501
|
// checking. During animations (e.g., toggling a
|
|
48286
48502
|
// point), DOM positions may overlap. We force
|
|
@@ -48454,7 +48670,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
|
|
|
48454
48670
|
if (options.open || !options.borderRadius) {
|
|
48455
48671
|
return path;
|
|
48456
48672
|
}
|
|
48457
|
-
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius
|
|
48673
|
+
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
|
|
48458
48674
|
// Cap to half the sector radius
|
|
48459
48675
|
(r - innerR) / 2,
|
|
48460
48676
|
// For smaller pie slices, cap to the largest small circle that
|
|
@@ -48480,7 +48696,7 @@ function seriesOnAfterColumnTranslate() {
|
|
|
48480
48696
|
if (this.options.borderRadius &&
|
|
48481
48697
|
!(this.chart.is3d && this.chart.is3d())) {
|
|
48482
48698
|
const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
|
|
48483
|
-
?.borderRadius, borderRadius =
|
|
48699
|
+
?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
|
|
48484
48700
|
for (const point of this.points) {
|
|
48485
48701
|
const { shapeArgs } = point;
|
|
48486
48702
|
if (point.shapeType === 'roundedRect' && shapeArgs) {
|
|
@@ -48552,8 +48768,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
|
|
|
48552
48768
|
symbols.roundedRect = BorderRadius_roundedRect;
|
|
48553
48769
|
}
|
|
48554
48770
|
}
|
|
48555
|
-
/**
|
|
48556
|
-
function
|
|
48771
|
+
/**
|
|
48772
|
+
* Utility function to get the full border radius options object, from a simple
|
|
48773
|
+
* number or a partial options object.
|
|
48774
|
+
* @internal
|
|
48775
|
+
*/
|
|
48776
|
+
function borderRadiusObject(options, seriesBROptions) {
|
|
48557
48777
|
if (!isObject(options)) {
|
|
48558
48778
|
options = { radius: options || 0 };
|
|
48559
48779
|
}
|
|
@@ -48561,7 +48781,7 @@ function optionsToObject(options, seriesBROptions) {
|
|
|
48561
48781
|
}
|
|
48562
48782
|
/** @internal */
|
|
48563
48783
|
function pieSeriesOnAfterTranslate() {
|
|
48564
|
-
const borderRadius =
|
|
48784
|
+
const borderRadius = borderRadiusObject(this.options.borderRadius);
|
|
48565
48785
|
for (const point of this.points) {
|
|
48566
48786
|
const shapeArgs = point.shapeArgs;
|
|
48567
48787
|
if (shapeArgs) {
|
|
@@ -48680,7 +48900,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48680
48900
|
* Column and pie with rounded border
|
|
48681
48901
|
*
|
|
48682
48902
|
* @name Highcharts.BorderRadiusOptionsObject#radius
|
|
48683
|
-
* @type {string|number}
|
|
48903
|
+
* @type {string|number|undefined}
|
|
48684
48904
|
*/ /**
|
|
48685
48905
|
* The scope of the rounding for column charts or plot bands. In a stacked
|
|
48686
48906
|
* column chart, the value `point` means each single point will get rounded
|
|
@@ -48695,8 +48915,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48695
48915
|
* Rounded columns
|
|
48696
48916
|
*
|
|
48697
48917
|
* @name Highcharts.BorderRadiusOptionsObject#scope
|
|
48698
|
-
* @
|
|
48699
|
-
* @type {string}
|
|
48918
|
+
* @type {"individual"|"point"|"stack"|undefined}
|
|
48700
48919
|
*/ /**
|
|
48701
48920
|
* For column charts, where in the point or stack to apply rounding. The `end`
|
|
48702
48921
|
* value means only those corners at the point value will be rounded, leaving
|
|
@@ -48707,8 +48926,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48707
48926
|
* Rounding on all corners
|
|
48708
48927
|
*
|
|
48709
48928
|
* @name Highcharts.BorderRadiusOptionsObject#where
|
|
48710
|
-
* @
|
|
48711
|
-
* @type {string}
|
|
48929
|
+
* @type {"all"|"end"|undefined}
|
|
48712
48930
|
* @default end
|
|
48713
48931
|
*/
|
|
48714
48932
|
(''); // Keeps doclets above in JS file
|
|
@@ -48767,10 +48985,12 @@ var Responsive;
|
|
|
48767
48985
|
*/
|
|
48768
48986
|
function matchResponsiveRule(rule, matches) {
|
|
48769
48987
|
const condition = rule.condition, fn = condition.callback || function () {
|
|
48770
|
-
return (this.chartWidth <=
|
|
48771
|
-
|
|
48772
|
-
this.
|
|
48773
|
-
|
|
48988
|
+
return (this.chartWidth <=
|
|
48989
|
+
(condition.maxWidth ?? Number.MAX_VALUE) &&
|
|
48990
|
+
this.chartHeight <=
|
|
48991
|
+
(condition.maxHeight ?? Number.MAX_VALUE) &&
|
|
48992
|
+
this.chartWidth >= (condition.minWidth ?? 0) &&
|
|
48993
|
+
this.chartHeight >= (condition.minHeight ?? 0));
|
|
48774
48994
|
};
|
|
48775
48995
|
if (fn.call(this, this)) {
|
|
48776
48996
|
matches.push(rule._id);
|
|
@@ -48984,7 +49204,7 @@ var Responsive;
|
|
|
48984
49204
|
;// ./code/es-modules/masters/highcharts.src.js
|
|
48985
49205
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
48986
49206
|
/**
|
|
48987
|
-
* @license Highcharts JS v13.0.
|
|
49207
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
48988
49208
|
* @module highcharts/highcharts
|
|
48989
49209
|
*
|
|
48990
49210
|
* (c) 2009-2026 Highsoft AS
|
|
@@ -49061,12 +49281,17 @@ G.SVGElement = SVG_SVGElement;
|
|
|
49061
49281
|
G.SVGRenderer = SVG_SVGRenderer;
|
|
49062
49282
|
G.Templating = Core_Templating;
|
|
49063
49283
|
G.Tick = Axis_Tick;
|
|
49064
|
-
G.Time = Core_Time
|
|
49284
|
+
G.Time = class extends Core_Time {
|
|
49285
|
+
constructor(options, lang) {
|
|
49286
|
+
const defaultOptions = Defaults.getOptions();
|
|
49287
|
+
super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
|
|
49288
|
+
}
|
|
49289
|
+
};
|
|
49065
49290
|
G.Tooltip = Core_Tooltip;
|
|
49066
49291
|
// Utilities
|
|
49067
49292
|
G.addEvent = addEvent;
|
|
49068
|
-
G.animObject =
|
|
49069
|
-
G.animate =
|
|
49293
|
+
G.animObject = animObject;
|
|
49294
|
+
G.animate = animate;
|
|
49070
49295
|
G.arrayMax = arrayMax;
|
|
49071
49296
|
G.arrayMin = arrayMin;
|
|
49072
49297
|
G.attr = attr;
|
|
@@ -49093,7 +49318,7 @@ G.fireEvent = fireEvent;
|
|
|
49093
49318
|
G.format = Core_Templating.format;
|
|
49094
49319
|
G.getAlignFactor = getAlignFactor;
|
|
49095
49320
|
G.getClosestDistance = getClosestDistance;
|
|
49096
|
-
G.getDeferredAnimation =
|
|
49321
|
+
G.getDeferredAnimation = getDeferredAnimation;
|
|
49097
49322
|
G.getMagnitude = getMagnitude;
|
|
49098
49323
|
G.getNestedProperty = getNestedProperty;
|
|
49099
49324
|
G.getOptions = Defaults.getOptions;
|
|
@@ -49120,11 +49345,11 @@ G.relativeLength = relativeLength;
|
|
|
49120
49345
|
G.removeEvent = removeEvent;
|
|
49121
49346
|
G.replaceNested = replaceNested;
|
|
49122
49347
|
G.seriesType = Series_SeriesRegistry.seriesType;
|
|
49123
|
-
G.setAnimation =
|
|
49348
|
+
G.setAnimation = setAnimation;
|
|
49124
49349
|
G.setOptions = Defaults.setOptions;
|
|
49125
49350
|
G.splat = splat;
|
|
49126
49351
|
G.stableSort = stableSort;
|
|
49127
|
-
G.stop =
|
|
49352
|
+
G.stop = stop;
|
|
49128
49353
|
G.syncTimeout = syncTimeout;
|
|
49129
49354
|
G.time = Defaults.defaultTime;
|
|
49130
49355
|
G.ucfirst = ucfirst;
|
|
@@ -49233,7 +49458,7 @@ function onChartAfterSetChartSize() {
|
|
|
49233
49458
|
navigator.top = this.plotTop + scrollButtonSize;
|
|
49234
49459
|
}
|
|
49235
49460
|
else {
|
|
49236
|
-
navigator.left =
|
|
49461
|
+
navigator.left = (xAxis.left ?? this.plotLeft + scrollButtonSize);
|
|
49237
49462
|
navigator.top = navigator.navigatorOptions.top ||
|
|
49238
49463
|
this.chartHeight -
|
|
49239
49464
|
navigator.height -
|
|
@@ -49249,7 +49474,7 @@ function onChartAfterSetChartSize() {
|
|
|
49249
49474
|
legendOptions.enabled &&
|
|
49250
49475
|
!legendOptions.floating) ?
|
|
49251
49476
|
legend.legendHeight +
|
|
49252
|
-
|
|
49477
|
+
(legendOptions.margin ?? 10) :
|
|
49253
49478
|
0) -
|
|
49254
49479
|
(this.titleOffset ? this.titleOffset[2] : 0);
|
|
49255
49480
|
}
|
|
@@ -49274,7 +49499,7 @@ function onChartAfterUpdate(event) {
|
|
|
49274
49499
|
(this.options.navigator.enabled ||
|
|
49275
49500
|
this.options.scrollbar.enabled)) {
|
|
49276
49501
|
this.scroller = this.navigator = new NavigatorConstructor(this);
|
|
49277
|
-
if (
|
|
49502
|
+
if (event.redraw ?? true) {
|
|
49278
49503
|
this.redraw(event.animation); // #7067
|
|
49279
49504
|
}
|
|
49280
49505
|
}
|
|
@@ -49452,7 +49677,7 @@ class NavigatorAxisAdditions {
|
|
|
49452
49677
|
*/
|
|
49453
49678
|
toFixedRange(pxMin, pxMax, fixedMin, fixedMax) {
|
|
49454
49679
|
const axis = this.axis, halfPointRange = (axis.pointRange || 0) / 2;
|
|
49455
|
-
let newMin =
|
|
49680
|
+
let newMin = fixedMin ?? axis.translate(pxMin, true, !axis.horiz), newMax = fixedMax ?? axis.translate(pxMax, true, !axis.horiz);
|
|
49456
49681
|
// Add/remove half point range to/from the extremes (#1172)
|
|
49457
49682
|
if (!defined(fixedMin)) {
|
|
49458
49683
|
newMin = correctFloat(newMin + halfPointRange);
|
|
@@ -49676,7 +49901,7 @@ const NavigatorDefaults = {
|
|
|
49676
49901
|
*
|
|
49677
49902
|
* @type {Highcharts.ColorType}
|
|
49678
49903
|
*/
|
|
49679
|
-
maskFill: 'color-mix(var(--highcharts-highlight-color-60) 30%, transparent)',
|
|
49904
|
+
maskFill: 'color-mix(in srgb, var(--highcharts-highlight-color-60) 30%, transparent)', // eslint-disable-line max-len
|
|
49680
49905
|
/**
|
|
49681
49906
|
* The color of the line marking the currently zoomed area in the
|
|
49682
49907
|
* navigator.
|
|
@@ -49815,11 +50040,18 @@ const NavigatorDefaults = {
|
|
|
49815
50040
|
id: 'highcharts-navigator-series',
|
|
49816
50041
|
className: 'highcharts-navigator-series',
|
|
49817
50042
|
/**
|
|
49818
|
-
* Sets the
|
|
50043
|
+
* Sets the color of the navigator series.
|
|
49819
50044
|
*
|
|
49820
50045
|
* @type {Highcharts.ColorType}
|
|
49821
50046
|
* @apioption navigator.series.color
|
|
49822
50047
|
*/
|
|
50048
|
+
/**
|
|
50049
|
+
* Sets the fill color of the navigator series. Applies to series
|
|
50050
|
+
* types with a filled area, like the default `areaspline`.
|
|
50051
|
+
*
|
|
50052
|
+
* @type {Highcharts.ColorType}
|
|
50053
|
+
* @apioption navigator.series.fillColor
|
|
50054
|
+
*/
|
|
49823
50055
|
/**
|
|
49824
50056
|
* Line color for the navigator series. Allows setting the color
|
|
49825
50057
|
* while disallowing the default candlestick setting.
|
|
@@ -50019,6 +50251,7 @@ const NavigatorDefaults = {
|
|
|
50019
50251
|
|
|
50020
50252
|
|
|
50021
50253
|
|
|
50254
|
+
|
|
50022
50255
|
/* *
|
|
50023
50256
|
*
|
|
50024
50257
|
* Constants
|
|
@@ -50029,7 +50262,7 @@ const NavigatorDefaults = {
|
|
|
50029
50262
|
* @internal
|
|
50030
50263
|
*/
|
|
50031
50264
|
function navigatorHandle(_x, _y, width, height, options = {}) {
|
|
50032
|
-
const halfWidth = options.width ? options.width / 2 : width, markerPosition = 1.5, r = relativeLength(options.borderRadius
|
|
50265
|
+
const halfWidth = options.width ? options.width / 2 : width, markerPosition = 1.5, r = relativeLength(borderRadiusObject(options.borderRadius).radius, Math.min(halfWidth * 2, height));
|
|
50033
50266
|
height = options.height || height;
|
|
50034
50267
|
return [
|
|
50035
50268
|
['M', -markerPosition, height / 2 - 3.5],
|
|
@@ -50219,8 +50452,8 @@ var ScrollbarAxis;
|
|
|
50219
50452
|
ScrollbarAxis.compose = compose;
|
|
50220
50453
|
/** @internal */
|
|
50221
50454
|
function getExtremes(axis) {
|
|
50222
|
-
const axisMin =
|
|
50223
|
-
const axisMax =
|
|
50455
|
+
const axisMin = (axis.options?.min ?? axis.min);
|
|
50456
|
+
const axisMax = (axis.options?.max ?? axis.max);
|
|
50224
50457
|
return {
|
|
50225
50458
|
axisMin,
|
|
50226
50459
|
axisMax,
|
|
@@ -50759,7 +50992,7 @@ class Scrollbar {
|
|
|
50759
50992
|
buttonToMaxClick(e) {
|
|
50760
50993
|
const scroller = this;
|
|
50761
50994
|
const range = ((scroller.to - scroller.from) *
|
|
50762
|
-
|
|
50995
|
+
(scroller.options.step ?? 0.2));
|
|
50763
50996
|
scroller.updatePosition(scroller.from + range, scroller.to + range);
|
|
50764
50997
|
fireEvent(scroller, 'changed', {
|
|
50765
50998
|
from: scroller.from,
|
|
@@ -50771,7 +51004,7 @@ class Scrollbar {
|
|
|
50771
51004
|
buttonToMinClick(e) {
|
|
50772
51005
|
const scroller = this;
|
|
50773
51006
|
const range = correctFloat(scroller.to - scroller.from) *
|
|
50774
|
-
|
|
51007
|
+
(scroller.options.step ?? 0.2);
|
|
50775
51008
|
scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
|
|
50776
51009
|
fireEvent(scroller, 'changed', {
|
|
50777
51010
|
from: scroller.from,
|
|
@@ -50903,10 +51136,11 @@ class Scrollbar {
|
|
|
50903
51136
|
scroller.renderer = renderer;
|
|
50904
51137
|
scroller.userOptions = options;
|
|
50905
51138
|
scroller.options = merge(Scrollbar_ScrollbarDefaults, Scrollbar_defaultOptions.scrollbar, options);
|
|
50906
|
-
scroller.options.margin =
|
|
51139
|
+
scroller.options.margin = (scroller.options.margin ?? 10);
|
|
50907
51140
|
scroller.chart = chart;
|
|
50908
51141
|
// Backward compatibility
|
|
50909
|
-
scroller.size =
|
|
51142
|
+
scroller.size = scroller.options.size ??
|
|
51143
|
+
scroller.options.height;
|
|
50910
51144
|
// Init
|
|
50911
51145
|
if (options.enabled) {
|
|
50912
51146
|
scroller.render();
|
|
@@ -51196,9 +51430,9 @@ class Scrollbar {
|
|
|
51196
51430
|
* @function Highcharts.Scrollbar#shouldUpdateExtremes
|
|
51197
51431
|
*/
|
|
51198
51432
|
shouldUpdateExtremes(eventType) {
|
|
51199
|
-
return (
|
|
51433
|
+
return ((this.options.liveRedraw ?? (Core_Globals.svg &&
|
|
51200
51434
|
!Core_Globals.isTouchDevice &&
|
|
51201
|
-
!this.chart.boosted) ||
|
|
51435
|
+
!this.chart.boosted)) ||
|
|
51202
51436
|
// Mouseup always should change extremes
|
|
51203
51437
|
eventType === 'mouseup' ||
|
|
51204
51438
|
eventType === 'touchend' ||
|
|
@@ -51718,18 +51952,18 @@ class Navigator {
|
|
|
51718
51952
|
// it. For example hidden series, but visible navigator (#6022).
|
|
51719
51953
|
if (rendered) {
|
|
51720
51954
|
pxMin = 0;
|
|
51721
|
-
pxMax =
|
|
51955
|
+
pxMax = (xAxis.width ?? scrollbarXAxis.width);
|
|
51722
51956
|
}
|
|
51723
51957
|
else {
|
|
51724
51958
|
return;
|
|
51725
51959
|
}
|
|
51726
51960
|
}
|
|
51727
|
-
navigator.left =
|
|
51728
|
-
// In case of scrollbar only, without navigator
|
|
51729
|
-
chart.plotLeft + scrollButtonSize +
|
|
51961
|
+
navigator.left = (xAxis.left ?? chart.plotLeft + scrollButtonSize +
|
|
51730
51962
|
(inverted ? chart.plotWidth : 0));
|
|
51731
|
-
let zoomedMax = navigator.size = navigatorSize =
|
|
51732
|
-
|
|
51963
|
+
let zoomedMax = navigator.size = navigatorSize =
|
|
51964
|
+
xAxis.len ??
|
|
51965
|
+
(inverted ? chart.plotHeight : chart.plotWidth) -
|
|
51966
|
+
2 * scrollButtonSize;
|
|
51733
51967
|
if (inverted) {
|
|
51734
51968
|
navigatorWidth = scrollbarHeight;
|
|
51735
51969
|
}
|
|
@@ -51737,8 +51971,8 @@ class Navigator {
|
|
|
51737
51971
|
navigatorWidth = navigatorSize + 2 * scrollButtonSize;
|
|
51738
51972
|
}
|
|
51739
51973
|
// Get the pixel position of the handles
|
|
51740
|
-
pxMin =
|
|
51741
|
-
pxMax =
|
|
51974
|
+
pxMin = (pxMin ?? xAxis.toPixels(min, true));
|
|
51975
|
+
pxMax = (pxMax ?? xAxis.toPixels(max, true));
|
|
51742
51976
|
// Verify (#1851, #2238)
|
|
51743
51977
|
if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {
|
|
51744
51978
|
pxMin = 0;
|
|
@@ -52017,11 +52251,10 @@ class Navigator {
|
|
|
52017
52251
|
navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);
|
|
52018
52252
|
}
|
|
52019
52253
|
if (navigator.hasDragged &&
|
|
52020
|
-
|
|
52254
|
+
(navigator.scrollbarOptions?.liveRedraw ?? (
|
|
52021
52255
|
// By default, don't run live redraw on touch
|
|
52022
52256
|
// devices or if the chart is in boost.
|
|
52023
|
-
!Navigator_isTouchDevice &&
|
|
52024
|
-
!this.chart.boosted)) {
|
|
52257
|
+
!Navigator_isTouchDevice && !this.chart.boosted))) {
|
|
52025
52258
|
e.DOMType = e.type;
|
|
52026
52259
|
setTimeout(function () {
|
|
52027
52260
|
navigator.onMouseUp(e);
|
|
@@ -52210,8 +52443,10 @@ class Navigator {
|
|
|
52210
52443
|
offset: 0,
|
|
52211
52444
|
index: yAxisIndex,
|
|
52212
52445
|
isInternal: true,
|
|
52213
|
-
reversed:
|
|
52214
|
-
navigatorOptions.yAxis.reversed)
|
|
52446
|
+
reversed: ((navigatorOptions.yAxis &&
|
|
52447
|
+
navigatorOptions.yAxis.reversed) ??
|
|
52448
|
+
(chart.yAxis[0] && chart.yAxis[0].reversed) ??
|
|
52449
|
+
false), // #14060
|
|
52215
52450
|
zoomEnabled: false
|
|
52216
52451
|
}, chart.inverted ? {
|
|
52217
52452
|
width: height
|
|
@@ -52297,7 +52532,9 @@ class Navigator {
|
|
|
52297
52532
|
*/
|
|
52298
52533
|
setOpposite() {
|
|
52299
52534
|
const navigatorOptions = this.navigatorOptions, navigatorEnabled = this.navigatorEnabled, chart = this.chart;
|
|
52300
|
-
this.opposite =
|
|
52535
|
+
this.opposite =
|
|
52536
|
+
navigatorOptions.opposite ??
|
|
52537
|
+
Boolean(!navigatorEnabled && chart.inverted); // #6262
|
|
52301
52538
|
}
|
|
52302
52539
|
/**
|
|
52303
52540
|
* Get the union data extremes of the chart - the outer data extremes of the
|
|
@@ -52311,9 +52548,8 @@ class Navigator {
|
|
|
52311
52548
|
let ret;
|
|
52312
52549
|
if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
|
|
52313
52550
|
ret = {
|
|
52314
|
-
dataMin:
|
|
52315
|
-
time.parse(navAxisOptions?.
|
|
52316
|
-
dataMax: pick(time.parse(navAxisOptions?.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
|
|
52551
|
+
dataMin: (time.parse(navAxisOptions?.min) ?? numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
|
|
52552
|
+
dataMax: (time.parse(navAxisOptions?.max) ?? numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
|
|
52317
52553
|
};
|
|
52318
52554
|
}
|
|
52319
52555
|
return ret;
|
|
@@ -52428,11 +52664,9 @@ class Navigator {
|
|
|
52428
52664
|
userNavOptions.dataLabels = splat(userNavOptions.dataLabels);
|
|
52429
52665
|
mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);
|
|
52430
52666
|
// Once nav series type is resolved, pick correct pointRange
|
|
52431
|
-
mergedNavSeriesOptions.pointRange =
|
|
52432
|
-
|
|
52433
|
-
|
|
52434
|
-
// Fallback to default values, e.g. `null` for column
|
|
52435
|
-
Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
|
|
52667
|
+
mergedNavSeriesOptions.pointRange = (userNavOptions.pointRange ??
|
|
52668
|
+
baseNavigatorOptions.pointRange ??
|
|
52669
|
+
Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
|
|
52436
52670
|
// Merge data separately. Do a slice to avoid mutating the
|
|
52437
52671
|
// navigator options from base series (#4923).
|
|
52438
52672
|
const navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data, navigatorSeriesDataTable = baseNavigatorOptions.dataTable ||
|
|
@@ -52592,7 +52826,7 @@ class Navigator {
|
|
|
52592
52826
|
* @function Highcharts.Navigator#modifyBaseAxisExtremes
|
|
52593
52827
|
*/
|
|
52594
52828
|
modifyBaseAxisExtremes() {
|
|
52595
|
-
const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll =
|
|
52829
|
+
const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll = (baseXAxis.ordinal?.convertOverscroll(baseXAxis.options.overscroll) ?? 0), navigatorSeries = navigator.series && navigator.series[0], hasSetExtremes = !!baseXAxis.setExtremes,
|
|
52596
52830
|
// When the extremes have been set by range selector button, don't
|
|
52597
52831
|
// stick to min or max. The range selector buttons will handle the
|
|
52598
52832
|
// extremes. (#5489)
|
|
@@ -52644,8 +52878,8 @@ class Navigator {
|
|
|
52644
52878
|
Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
|
|
52645
52879
|
// If the scrollbar is scrolled all the way to the right, keep right as
|
|
52646
52880
|
// new data comes in, unless user set navigator.stickToMax to false.
|
|
52647
|
-
navigator.stickToMax =
|
|
52648
|
-
this.chart.options.navigator.stickToMax
|
|
52881
|
+
navigator.stickToMax = (this.chart.options.navigator &&
|
|
52882
|
+
this.chart.options.navigator.stickToMax) ?? shouldStickToMax;
|
|
52649
52883
|
navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);
|
|
52650
52884
|
// Set the navigator series data to the new data of the base series
|
|
52651
52885
|
if (navigatorSeries && !navigator.hasNavigatorData) {
|
|
@@ -52959,7 +53193,7 @@ class StandaloneNavigator {
|
|
|
52959
53193
|
if (!(axis instanceof Axis_Axis)) {
|
|
52960
53194
|
return;
|
|
52961
53195
|
}
|
|
52962
|
-
const { min, max } =
|
|
53196
|
+
const navigator = this.navigator, { min, max } = navigator.xAxis, removeEventCallbacks = [];
|
|
52963
53197
|
if (twoWay) {
|
|
52964
53198
|
const removeSetExtremesEvent = addEvent(axis, 'setExtremes', (e) => {
|
|
52965
53199
|
if (e.trigger === 'pan' ||
|
|
@@ -52972,7 +53206,7 @@ class StandaloneNavigator {
|
|
|
52972
53206
|
});
|
|
52973
53207
|
removeEventCallbacks.push(removeSetExtremesEvent);
|
|
52974
53208
|
}
|
|
52975
|
-
const removeSetRangeEvent = addEvent(
|
|
53209
|
+
const removeSetRangeEvent = addEvent(navigator, 'setRange', (e) => {
|
|
52976
53210
|
axis.setExtremes(e.min, e.max, e.redraw, e.animation);
|
|
52977
53211
|
});
|
|
52978
53212
|
removeEventCallbacks.push(removeSetRangeEvent);
|
|
@@ -52981,6 +53215,13 @@ class StandaloneNavigator {
|
|
|
52981
53215
|
})[0];
|
|
52982
53216
|
if (!boundAxis) {
|
|
52983
53217
|
boundAxis = { axis, callbacks: [] };
|
|
53218
|
+
// A navigator bound to a yAxis defines the full range the axis
|
|
53219
|
+
// should cover. Stash the axis' own bounds before overriding them,
|
|
53220
|
+
// so `unbind` can restore them, #24716
|
|
53221
|
+
if (axis.coll === 'yAxis') {
|
|
53222
|
+
boundAxis.oldMin = axis.options.min ?? axis.min;
|
|
53223
|
+
boundAxis.oldMax = axis.options.max ?? axis.max;
|
|
53224
|
+
}
|
|
52984
53225
|
this.boundAxes.push(boundAxis);
|
|
52985
53226
|
}
|
|
52986
53227
|
boundAxis.callbacks = removeEventCallbacks;
|
|
@@ -52990,6 +53231,12 @@ class StandaloneNavigator {
|
|
|
52990
53231
|
nav.addSeries(series.options);
|
|
52991
53232
|
}
|
|
52992
53233
|
});
|
|
53234
|
+
// Bind a yAxis to the navigator's full range so vertical panning isn't
|
|
53235
|
+
// capped at the series' data extremes, #24716
|
|
53236
|
+
if (axis.coll === 'yAxis') {
|
|
53237
|
+
const { dataMin, dataMax } = navigator.xAxis.getExtremes();
|
|
53238
|
+
axis.update({ min: dataMin, max: dataMax }, false);
|
|
53239
|
+
}
|
|
52993
53240
|
// Set extremes to match the navigator's extremes
|
|
52994
53241
|
axis.setExtremes(min, max);
|
|
52995
53242
|
// Unbind the axis before it's destroyed
|
|
@@ -53011,12 +53258,15 @@ class StandaloneNavigator {
|
|
|
53011
53258
|
* Passing a Chart object unbinds the first X axis of the chart,
|
|
53012
53259
|
* an Axis object unbinds that specific axis,
|
|
53013
53260
|
* and undefined unbinds all axes bound to the navigator.
|
|
53261
|
+
* @param {boolean} restoreExtremes
|
|
53262
|
+
* Whether to restore the axis' original min/max that were
|
|
53263
|
+
* overridden when binding a yAxis.
|
|
53014
53264
|
*/
|
|
53015
|
-
unbind(axisOrChart) {
|
|
53265
|
+
unbind(axisOrChart, restoreExtremes) {
|
|
53016
53266
|
// If no axis or chart is provided, unbind all bound axes
|
|
53017
53267
|
if (!axisOrChart) {
|
|
53018
|
-
this.boundAxes.forEach((
|
|
53019
|
-
|
|
53268
|
+
this.boundAxes.forEach((boundAxis) => {
|
|
53269
|
+
this.releaseAxis(boundAxis, restoreExtremes);
|
|
53020
53270
|
});
|
|
53021
53271
|
this.boundAxes.length = 0;
|
|
53022
53272
|
return;
|
|
@@ -53026,20 +53276,45 @@ class StandaloneNavigator {
|
|
|
53026
53276
|
axisOrChart.xAxis[0];
|
|
53027
53277
|
for (let i = this.boundAxes.length - 1; i >= 0; i--) {
|
|
53028
53278
|
if (this.boundAxes[i].axis === axis) {
|
|
53029
|
-
this.boundAxes[i]
|
|
53279
|
+
this.releaseAxis(this.boundAxes[i], restoreExtremes);
|
|
53030
53280
|
this.boundAxes.splice(i, 1);
|
|
53031
53281
|
}
|
|
53032
53282
|
}
|
|
53033
53283
|
}
|
|
53284
|
+
/**
|
|
53285
|
+
* Disconnect a bound axis' events and restore the axis' own bounds that
|
|
53286
|
+
* were overridden when binding a yAxis.
|
|
53287
|
+
*
|
|
53288
|
+
* @internal
|
|
53289
|
+
*
|
|
53290
|
+
* @param {BoundAxis} boundAxis
|
|
53291
|
+
* The bound axis entry to release.
|
|
53292
|
+
* @param {boolean} [restoreExtremes=false]
|
|
53293
|
+
* Whether to restore the axis' original min/max that were
|
|
53294
|
+
* overridden when binding a yAxis.
|
|
53295
|
+
*/
|
|
53296
|
+
releaseAxis(boundAxis, restoreExtremes = false) {
|
|
53297
|
+
// Disconnect events
|
|
53298
|
+
boundAxis.callbacks.forEach((removeCallback) => removeCallback());
|
|
53299
|
+
// Restore the axis' original min/max that were overridden in `bind`
|
|
53300
|
+
if (boundAxis.axis.coll === 'yAxis' && restoreExtremes) {
|
|
53301
|
+
const min = boundAxis.oldMin ?? void 0, max = boundAxis.oldMax ?? void 0;
|
|
53302
|
+
boundAxis.axis.update({ min, max }, false);
|
|
53303
|
+
boundAxis.axis.setExtremes(min, max);
|
|
53304
|
+
}
|
|
53305
|
+
}
|
|
53034
53306
|
/**
|
|
53035
53307
|
* Destroys allocated standalone navigator elements.
|
|
53036
53308
|
*
|
|
53037
53309
|
* @function Highcharts.StandaloneNavigator#destroy
|
|
53310
|
+
*
|
|
53311
|
+
* @param {boolean} restoreExtremes
|
|
53312
|
+
* Whether to restore the axis' original min/max that were
|
|
53313
|
+
* overridden when binding a yAxis.
|
|
53038
53314
|
*/
|
|
53039
|
-
destroy() {
|
|
53040
|
-
|
|
53041
|
-
|
|
53042
|
-
callbacks.forEach((removeCallback) => removeCallback());
|
|
53315
|
+
destroy(restoreExtremes) {
|
|
53316
|
+
this.boundAxes.forEach((boundAxis) => {
|
|
53317
|
+
this.releaseAxis(boundAxis, restoreExtremes);
|
|
53043
53318
|
});
|
|
53044
53319
|
this.boundAxes.length = 0;
|
|
53045
53320
|
this.navigator.destroy();
|
|
@@ -53082,7 +53357,7 @@ class StandaloneNavigator {
|
|
|
53082
53357
|
* Options for the series to be added to the navigator.
|
|
53083
53358
|
*/
|
|
53084
53359
|
addSeries(seriesOptions) {
|
|
53085
|
-
this.navigator.chart.addSeries(merge(seriesOptions, { showInNavigator:
|
|
53360
|
+
this.navigator.chart.addSeries(merge(seriesOptions, { showInNavigator: (seriesOptions.showInNavigator ?? true) }));
|
|
53086
53361
|
this.navigator.setBaseSeries();
|
|
53087
53362
|
}
|
|
53088
53363
|
/**
|
|
@@ -53121,8 +53396,8 @@ class StandaloneNavigator {
|
|
|
53121
53396
|
getRange() {
|
|
53122
53397
|
const { min, max } = this.navigator.chart.xAxis[0].getExtremes(), { userMin, userMax, min: dataMin, max: dataMax } = this.navigator.xAxis.getExtremes();
|
|
53123
53398
|
return {
|
|
53124
|
-
min:
|
|
53125
|
-
max:
|
|
53399
|
+
min: (min ?? dataMin),
|
|
53400
|
+
max: (max ?? dataMax),
|
|
53126
53401
|
dataMin,
|
|
53127
53402
|
dataMax,
|
|
53128
53403
|
userMin,
|
|
@@ -53186,9 +53461,10 @@ class StandaloneNavigator {
|
|
|
53186
53461
|
''; // Detach doclets above
|
|
53187
53462
|
|
|
53188
53463
|
;// ./code/es-modules/masters/modules/navigator.src.js
|
|
53464
|
+
/* unused harmony import specifier */ var Highcharts;
|
|
53189
53465
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
53190
53466
|
/**
|
|
53191
|
-
* @license Highcharts JS v13.0.
|
|
53467
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
53192
53468
|
* @module highcharts/modules/navigator
|
|
53193
53469
|
* @requires highcharts
|
|
53194
53470
|
*
|