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.
|
|
@@ -10,29 +10,6 @@
|
|
|
10
10
|
* A commercial license may be required depending on use,
|
|
11
11
|
* see www.highcharts.com/license
|
|
12
12
|
*/
|
|
13
|
-
/******/ // The require scope
|
|
14
|
-
/******/ var __webpack_require__ = {};
|
|
15
|
-
/******/
|
|
16
|
-
/************************************************************************/
|
|
17
|
-
/******/ /* webpack/runtime/define property getters */
|
|
18
|
-
/******/ (() => {
|
|
19
|
-
/******/ // define getter functions for harmony exports
|
|
20
|
-
/******/ __webpack_require__.d = (exports, definition) => {
|
|
21
|
-
/******/ for(var key in definition) {
|
|
22
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
23
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
24
|
-
/******/ }
|
|
25
|
-
/******/ }
|
|
26
|
-
/******/ };
|
|
27
|
-
/******/ })();
|
|
28
|
-
/******/
|
|
29
|
-
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
30
|
-
/******/ (() => {
|
|
31
|
-
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
32
|
-
/******/ })();
|
|
33
|
-
/******/
|
|
34
|
-
/************************************************************************/
|
|
35
|
-
var __webpack_exports__ = {};
|
|
36
13
|
|
|
37
14
|
;// ./code/es-modules/Core/Globals.js
|
|
38
15
|
/* *
|
|
@@ -63,7 +40,7 @@ var Globals;
|
|
|
63
40
|
* Constants
|
|
64
41
|
*
|
|
65
42
|
* */
|
|
66
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.
|
|
43
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
|
|
67
44
|
window :
|
|
68
45
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
69
46
|
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 = [
|
|
@@ -390,6 +367,29 @@ const ChartDefaults = {
|
|
|
390
367
|
* @context Highcharts.Chart
|
|
391
368
|
* @apioption chart.events.load
|
|
392
369
|
*/
|
|
370
|
+
/**
|
|
371
|
+
* Fires while the chart is panned by mouse drag. Panning must be
|
|
372
|
+
* enabled through [chart.panning](#chart.panning). One parameter,
|
|
373
|
+
* `event`, is passed to the function, containing common event
|
|
374
|
+
* information as well as `event.originalEvent`, the underlying pointer
|
|
375
|
+
* event. Note that the event fires for every mouse move during the
|
|
376
|
+
* drag, not once per gesture.
|
|
377
|
+
*
|
|
378
|
+
* Calling `event.preventDefault()` or returning false prevents the
|
|
379
|
+
* default panning of the axes. In Highcharts Maps, and on ordinal axes
|
|
380
|
+
* in Highcharts Stock, the panning is applied outside the default
|
|
381
|
+
* action and is not prevented.
|
|
382
|
+
*
|
|
383
|
+
* Panning by touch does not fire this event, unless
|
|
384
|
+
* [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
|
|
385
|
+
* no zoom type is set. Single-finger drags are then handled as mouse
|
|
386
|
+
* drags and fire this event.
|
|
387
|
+
*
|
|
388
|
+
* @type {Highcharts.ChartPanCallbackFunction}
|
|
389
|
+
* @since 7.0.2
|
|
390
|
+
* @context Highcharts.Chart
|
|
391
|
+
* @apioption chart.events.pan
|
|
392
|
+
*/
|
|
393
393
|
/**
|
|
394
394
|
* Fires when the chart is redrawn, either after a call to
|
|
395
395
|
* `chart.redraw()` or after an axis, series or point is modified with
|
|
@@ -978,7 +978,7 @@ const ChartDefaults = {
|
|
|
978
978
|
* @type {Highcharts.ColorType}
|
|
979
979
|
* @since 2.1.7
|
|
980
980
|
*/
|
|
981
|
-
selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
981
|
+
selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
982
982
|
/**
|
|
983
983
|
* Whether to apply a drop shadow to the global series group. This causes
|
|
984
984
|
* all the series to have the same shadow. Contrary to the `series.shadow`
|
|
@@ -2404,7 +2404,7 @@ function getStyle(el, prop, toInt) {
|
|
|
2404
2404
|
const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
|
|
2405
2405
|
if (css) {
|
|
2406
2406
|
style = css.getPropertyValue(prop);
|
|
2407
|
-
if (
|
|
2407
|
+
if (toInt ?? prop !== 'opacity') {
|
|
2408
2408
|
style = pInt(style);
|
|
2409
2409
|
}
|
|
2410
2410
|
}
|
|
@@ -2654,7 +2654,7 @@ function merge(extendOrSource, ...sources) {
|
|
|
2654
2654
|
function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
|
|
2655
2655
|
let i, retInterval = interval;
|
|
2656
2656
|
// Round to a tenfold of 1, 2, 2.5 or 5
|
|
2657
|
-
magnitude =
|
|
2657
|
+
magnitude = (magnitude ?? getMagnitude(interval));
|
|
2658
2658
|
const normalized = interval / magnitude;
|
|
2659
2659
|
// Multiples for a linear scale
|
|
2660
2660
|
if (!multiples) {
|
|
@@ -2767,20 +2767,22 @@ function pad(number, length, padder) {
|
|
|
2767
2767
|
.replace('-', '')
|
|
2768
2768
|
.length).join(padder || '0') + number;
|
|
2769
2769
|
}
|
|
2770
|
-
/* eslint-disable jsdoc
|
|
2770
|
+
/* eslint-disable valid-jsdoc */
|
|
2771
2771
|
/**
|
|
2772
2772
|
* Return the first value that is not null or undefined.
|
|
2773
2773
|
*
|
|
2774
|
+
* @deprecated 13.0.2
|
|
2775
|
+
* Use nullish coalescing (`??`) or explicit fallback logic instead.
|
|
2776
|
+
*
|
|
2774
2777
|
* @function Highcharts.pick<T>
|
|
2775
2778
|
*
|
|
2776
|
-
* @param {...
|
|
2779
|
+
* @param {...(T|null|undefined)} args
|
|
2777
2780
|
* Variable number of arguments to inspect.
|
|
2778
2781
|
*
|
|
2779
2782
|
* @return {T}
|
|
2780
2783
|
* The value of the first argument that is not null or undefined.
|
|
2781
2784
|
*/
|
|
2782
|
-
function pick() {
|
|
2783
|
-
const args = arguments;
|
|
2785
|
+
function pick(...args) {
|
|
2784
2786
|
const length = args.length;
|
|
2785
2787
|
for (let i = 0; i < length; i++) {
|
|
2786
2788
|
const arg = args[i];
|
|
@@ -2789,7 +2791,7 @@ function pick() {
|
|
|
2789
2791
|
}
|
|
2790
2792
|
}
|
|
2791
2793
|
}
|
|
2792
|
-
/* eslint-enable jsdoc
|
|
2794
|
+
/* eslint-enable valid-jsdoc */
|
|
2793
2795
|
/**
|
|
2794
2796
|
* Shortcut for parseInt
|
|
2795
2797
|
*
|
|
@@ -3172,7 +3174,8 @@ function insertItem(item, collection) {
|
|
|
3172
3174
|
!collection[i] ||
|
|
3173
3175
|
// Handle index option, the element to insert has lower index
|
|
3174
3176
|
(isNumber(indexOption) &&
|
|
3175
|
-
indexOption <
|
|
3177
|
+
indexOption < (collection[i].options.index ??
|
|
3178
|
+
collection[i]._i)) ||
|
|
3176
3179
|
// Insert the new item before other internal items
|
|
3177
3180
|
// (navigator)
|
|
3178
3181
|
collection[i].options.isInternal) {
|
|
@@ -3258,7 +3261,7 @@ const uniqueKey = (function () {
|
|
|
3258
3261
|
* State of the serial mode.
|
|
3259
3262
|
*/
|
|
3260
3263
|
function useSerialIds(mode) {
|
|
3261
|
-
return (serialMode =
|
|
3264
|
+
return (serialMode = (mode ?? serialMode));
|
|
3262
3265
|
}
|
|
3263
3266
|
/* *
|
|
3264
3267
|
*
|
|
@@ -3724,6 +3727,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
|
|
|
3724
3727
|
*
|
|
3725
3728
|
* @param {Highcharts.TimeOptions} [options] Time options as defined in
|
|
3726
3729
|
* [chart.options.time](/highcharts/time).
|
|
3730
|
+
*
|
|
3731
|
+
* @param {Highcharts.LangOptions} [lang]
|
|
3732
|
+
* Language options. When `options.locale` is not set, `lang.locale` is used as
|
|
3733
|
+
* the locale fallback for locale-aware date formatting.
|
|
3727
3734
|
*/
|
|
3728
3735
|
class TimeBase {
|
|
3729
3736
|
/* *
|
|
@@ -3742,8 +3749,8 @@ class TimeBase {
|
|
|
3742
3749
|
};
|
|
3743
3750
|
this.variableTimezone = false;
|
|
3744
3751
|
this.Date = TimeBase_win.Date;
|
|
3745
|
-
this.update(options);
|
|
3746
3752
|
this.lang = lang;
|
|
3753
|
+
this.update(options);
|
|
3747
3754
|
}
|
|
3748
3755
|
/* *
|
|
3749
3756
|
*
|
|
@@ -3855,7 +3862,9 @@ class TimeBase {
|
|
|
3855
3862
|
/**
|
|
3856
3863
|
* Shorthand to get a cached `Intl.DateTimeFormat` instance.
|
|
3857
3864
|
*/
|
|
3858
|
-
dateTimeFormat(options, timestamp, locale = this.options.locale ||
|
|
3865
|
+
dateTimeFormat(options, timestamp, locale = (this.options.locale ||
|
|
3866
|
+
this.lang?.locale ||
|
|
3867
|
+
pageLang)) {
|
|
3859
3868
|
const cacheKey = JSON.stringify(options) + locale;
|
|
3860
3869
|
if (isString(options)) {
|
|
3861
3870
|
options = this.str2dtf(options);
|
|
@@ -3941,17 +3950,16 @@ class TimeBase {
|
|
|
3941
3950
|
// eslint-disable-next-line new-cap
|
|
3942
3951
|
let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
|
|
3943
3952
|
if (this.timezone !== 'UTC') {
|
|
3944
|
-
const offset = this.getTimezoneOffset(d);
|
|
3953
|
+
const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
|
|
3945
3954
|
d += offset;
|
|
3946
|
-
// Adjustments close to DST transitions
|
|
3947
3955
|
if (
|
|
3948
|
-
//
|
|
3949
|
-
//
|
|
3956
|
+
// Limit the number of calls to `getTimezoneOffset` to months
|
|
3957
|
+
// where DST changes may occur. According to
|
|
3950
3958
|
// https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
|
|
3951
3959
|
// DST change may only occur in these months.
|
|
3952
3960
|
[2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
|
|
3953
|
-
// DST
|
|
3954
|
-
(
|
|
3961
|
+
// DST changes only occur at night (#24420)
|
|
3962
|
+
(localHours < 5 || localHours > 20)) {
|
|
3955
3963
|
const newOffset = this.getTimezoneOffset(d);
|
|
3956
3964
|
if (offset !== newOffset) {
|
|
3957
3965
|
d += newOffset - offset;
|
|
@@ -6688,6 +6696,9 @@ const defaultOptions = {
|
|
|
6688
6696
|
* below the column, but as `followTouchMove` is true, the tooltip will
|
|
6689
6697
|
* jump from column to column as the user swipes across the plot area.
|
|
6690
6698
|
*
|
|
6699
|
+
* @sample {highcharts} highcharts/tooltip/followtouchmove/
|
|
6700
|
+
* Tooltip follows touch move
|
|
6701
|
+
*
|
|
6691
6702
|
* @type {boolean}
|
|
6692
6703
|
* @default {highcharts} true
|
|
6693
6704
|
* @default {highstock} true
|
|
@@ -7470,10 +7481,14 @@ const defaultOptions = {
|
|
|
7470
7481
|
* @type {Highcharts.CSSObject}
|
|
7471
7482
|
*/
|
|
7472
7483
|
style: {
|
|
7473
|
-
/**
|
|
7484
|
+
/**
|
|
7485
|
+
* @type {Highcharts.ColorType}
|
|
7486
|
+
*/
|
|
7474
7487
|
color: 'var(--highcharts-neutral-color-80)',
|
|
7475
7488
|
cursor: 'default',
|
|
7476
|
-
/**
|
|
7489
|
+
/**
|
|
7490
|
+
* @type {number|string}
|
|
7491
|
+
*/
|
|
7477
7492
|
fontSize: '0.8em'
|
|
7478
7493
|
},
|
|
7479
7494
|
/**
|
|
@@ -7789,6 +7804,41 @@ const DefaultOptions = {
|
|
|
7789
7804
|
* @param {global.Event} event
|
|
7790
7805
|
* The event that occurred.
|
|
7791
7806
|
*/
|
|
7807
|
+
/**
|
|
7808
|
+
* Gets fired while the chart is panned by mouse drag. Calling
|
|
7809
|
+
* `event.preventDefault()` or returning `false` prevents the default panning
|
|
7810
|
+
* of the axes.
|
|
7811
|
+
*
|
|
7812
|
+
* @callback Highcharts.ChartPanCallbackFunction
|
|
7813
|
+
*
|
|
7814
|
+
* @param {Highcharts.Chart} this
|
|
7815
|
+
* The chart on which the event occurred.
|
|
7816
|
+
*
|
|
7817
|
+
* @param {Highcharts.ChartPanEventObject} event
|
|
7818
|
+
* The event that occurred.
|
|
7819
|
+
*/
|
|
7820
|
+
/**
|
|
7821
|
+
* Contains common event information. Through the `originalEvent` property you
|
|
7822
|
+
* can access the pointer event that triggered the panning.
|
|
7823
|
+
*
|
|
7824
|
+
* @interface Highcharts.ChartPanEventObject
|
|
7825
|
+
*/ /**
|
|
7826
|
+
* The pointer event that triggered the panning.
|
|
7827
|
+
* @name Highcharts.ChartPanEventObject#originalEvent
|
|
7828
|
+
* @type {Highcharts.PointerEventObject}
|
|
7829
|
+
*/ /**
|
|
7830
|
+
* Prevents the default behavior of the event.
|
|
7831
|
+
* @name Highcharts.ChartPanEventObject#preventDefault
|
|
7832
|
+
* @type {Function}
|
|
7833
|
+
*/ /**
|
|
7834
|
+
* The event target.
|
|
7835
|
+
* @name Highcharts.ChartPanEventObject#target
|
|
7836
|
+
* @type {Highcharts.Chart}
|
|
7837
|
+
*/ /**
|
|
7838
|
+
* The event type.
|
|
7839
|
+
* @name Highcharts.ChartPanEventObject#type
|
|
7840
|
+
* @type {"pan"}
|
|
7841
|
+
*/
|
|
7792
7842
|
/**
|
|
7793
7843
|
* Fires when the chart is redrawn, either after a call to `chart.redraw()` or
|
|
7794
7844
|
* after an axis, series or point is modified with the `redraw` option set to
|
|
@@ -8164,7 +8214,9 @@ Color.None = new Color(''); // Must be last static for init
|
|
|
8164
8214
|
*/
|
|
8165
8215
|
/**
|
|
8166
8216
|
* A valid color type than can be parsed and handled by Highcharts. It can be a
|
|
8167
|
-
* color string, a gradient object, or a pattern
|
|
8217
|
+
* color string (including CSS expressions), a gradient object, or a pattern
|
|
8218
|
+
* object. Read more about colors in the [Highcharts
|
|
8219
|
+
* documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
8168
8220
|
*
|
|
8169
8221
|
* @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
|
|
8170
8222
|
*/
|
|
@@ -8396,24 +8448,22 @@ class Fx {
|
|
|
8396
8448
|
*/
|
|
8397
8449
|
update() {
|
|
8398
8450
|
const elem = this.elem, prop = this.prop, // If destroyed, it is null
|
|
8399
|
-
now = this.now, step = this.options.step;
|
|
8451
|
+
now = this.now ?? 1, step = this.options.step;
|
|
8400
8452
|
// Animation setter defined from outside
|
|
8401
8453
|
if (this[prop + 'Setter']) {
|
|
8402
8454
|
this[prop + 'Setter']();
|
|
8403
8455
|
// Other animations on SVGElement
|
|
8404
8456
|
}
|
|
8405
|
-
else if (elem.attr) {
|
|
8457
|
+
else if (elem && elem.attr) {
|
|
8406
8458
|
if (elem.element) {
|
|
8407
|
-
elem.attr(prop, now,
|
|
8459
|
+
elem.attr(prop, now, void 0, true);
|
|
8408
8460
|
}
|
|
8409
8461
|
// HTML styles, raw HTML content like container size
|
|
8410
8462
|
}
|
|
8411
|
-
else {
|
|
8412
|
-
elem.style[prop] = now + this.unit;
|
|
8413
|
-
}
|
|
8414
|
-
if (step) {
|
|
8415
|
-
step.call(elem, now, this);
|
|
8463
|
+
else if (elem) {
|
|
8464
|
+
elem.style[prop] = now + (this.unit || '');
|
|
8416
8465
|
}
|
|
8466
|
+
step?.call(elem, now, this);
|
|
8417
8467
|
}
|
|
8418
8468
|
/**
|
|
8419
8469
|
* Run an animation.
|
|
@@ -8431,12 +8481,10 @@ class Fx {
|
|
|
8431
8481
|
*
|
|
8432
8482
|
*/
|
|
8433
8483
|
run(from, to, unit) {
|
|
8434
|
-
const
|
|
8435
|
-
return timer.stopped ? false : self.step(gotoEnd);
|
|
8436
|
-
}, requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8484
|
+
const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8437
8485
|
function (step) {
|
|
8438
8486
|
setTimeout(step, 13);
|
|
8439
|
-
}, step =
|
|
8487
|
+
}, step = () => {
|
|
8440
8488
|
for (let i = 0; i < Fx.timers.length; i++) {
|
|
8441
8489
|
if (!Fx.timers[i]()) {
|
|
8442
8490
|
Fx.timers.splice(i--, 1);
|
|
@@ -8446,11 +8494,11 @@ class Fx {
|
|
|
8446
8494
|
requestAnimationFrame(step);
|
|
8447
8495
|
}
|
|
8448
8496
|
};
|
|
8449
|
-
if (from === to && !
|
|
8450
|
-
delete
|
|
8451
|
-
if (
|
|
8452
|
-
Object.keys(
|
|
8453
|
-
|
|
8497
|
+
if (from === to && !elem['forceAnimate:' + this.prop]) {
|
|
8498
|
+
delete curAnim[this.prop];
|
|
8499
|
+
if (complete &&
|
|
8500
|
+
Object.keys(curAnim).length === 0) {
|
|
8501
|
+
complete.call(elem);
|
|
8454
8502
|
}
|
|
8455
8503
|
}
|
|
8456
8504
|
else { // #7166
|
|
@@ -8460,7 +8508,7 @@ class Fx {
|
|
|
8460
8508
|
this.unit = unit;
|
|
8461
8509
|
this.now = this.start;
|
|
8462
8510
|
this.pos = 0;
|
|
8463
|
-
timer.elem =
|
|
8511
|
+
timer.elem = elem;
|
|
8464
8512
|
timer.prop = this.prop;
|
|
8465
8513
|
if (timer() && Fx.timers.push(timer) === 1) {
|
|
8466
8514
|
requestAnimationFrame(step);
|
|
@@ -8481,7 +8529,8 @@ class Fx {
|
|
|
8481
8529
|
step(gotoEnd) {
|
|
8482
8530
|
const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
|
|
8483
8531
|
let ret, done;
|
|
8484
|
-
|
|
8532
|
+
// #2616, element is destroyed
|
|
8533
|
+
if (elem?.attr && !elem.element) {
|
|
8485
8534
|
ret = false;
|
|
8486
8535
|
}
|
|
8487
8536
|
else if (gotoEnd || t >= duration + this.startTime) {
|
|
@@ -8710,7 +8759,8 @@ Fx.timers = [];
|
|
|
8710
8759
|
* so it should be moved to the SVGRenderer.
|
|
8711
8760
|
*/
|
|
8712
8761
|
function setAnimation(animation, chart) {
|
|
8713
|
-
chart.renderer.globalAnimation =
|
|
8762
|
+
chart.renderer.globalAnimation =
|
|
8763
|
+
animation ?? chart.options.chart.animation ?? true;
|
|
8714
8764
|
}
|
|
8715
8765
|
/**
|
|
8716
8766
|
* Get the animation in object form, where a disabled animation is always
|
|
@@ -8771,6 +8821,11 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8771
8821
|
/**
|
|
8772
8822
|
* The global animate method, which uses Fx to create individual animators.
|
|
8773
8823
|
*
|
|
8824
|
+
* @sample highcharts/members/renderer-basic
|
|
8825
|
+
* SVG elements with animation
|
|
8826
|
+
* @sample highcharts/members/animate
|
|
8827
|
+
* Animation without an owner element
|
|
8828
|
+
*
|
|
8774
8829
|
* @function Highcharts.animate
|
|
8775
8830
|
*
|
|
8776
8831
|
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
|
|
@@ -8786,14 +8841,12 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8786
8841
|
*
|
|
8787
8842
|
* @return {void}
|
|
8788
8843
|
*/
|
|
8789
|
-
function animate(el, params, opt) {
|
|
8790
|
-
let start, unit = '', end, fx, args;
|
|
8844
|
+
function animate(el, params = { pos: 1 }, opt) {
|
|
8791
8845
|
if (!isObject(opt)) { // Number or undefined/null
|
|
8792
|
-
args = arguments;
|
|
8793
8846
|
opt = {
|
|
8794
|
-
duration:
|
|
8795
|
-
easing:
|
|
8796
|
-
complete:
|
|
8847
|
+
duration: arguments[2],
|
|
8848
|
+
easing: arguments[3],
|
|
8849
|
+
complete: arguments[4]
|
|
8797
8850
|
};
|
|
8798
8851
|
}
|
|
8799
8852
|
if (!isNumber(opt.duration)) {
|
|
@@ -8803,22 +8856,23 @@ function animate(el, params, opt) {
|
|
|
8803
8856
|
opt.easing :
|
|
8804
8857
|
(Math[opt.easing] || Math.easeInOutSine);
|
|
8805
8858
|
opt.curAnim = merge(params);
|
|
8806
|
-
objectEach(params,
|
|
8859
|
+
objectEach(params, (val, prop) => {
|
|
8807
8860
|
// Stop current running animation of this property
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8813
|
-
|
|
8814
|
-
|
|
8861
|
+
if (el) {
|
|
8862
|
+
stop(el, prop);
|
|
8863
|
+
}
|
|
8864
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d;
|
|
8865
|
+
let start = 0, end = void 0, unit = '';
|
|
8866
|
+
if (prop === 'd' && isArray(d)) {
|
|
8867
|
+
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
8868
|
+
fx.toD = d;
|
|
8815
8869
|
end = 1;
|
|
8816
8870
|
}
|
|
8817
|
-
else if (el
|
|
8871
|
+
else if (el?.attr) {
|
|
8818
8872
|
start = el.attr(prop);
|
|
8819
8873
|
}
|
|
8820
|
-
else {
|
|
8821
|
-
start =
|
|
8874
|
+
else if (el) {
|
|
8875
|
+
start = +(getStyle(el, prop) || 0);
|
|
8822
8876
|
if (prop !== 'opacity') {
|
|
8823
8877
|
unit = 'px';
|
|
8824
8878
|
}
|
|
@@ -8829,7 +8883,10 @@ function animate(el, params, opt) {
|
|
|
8829
8883
|
if (typeof end === 'string' && end.match('px')) {
|
|
8830
8884
|
end = end.replace(/px/g, ''); // #4351
|
|
8831
8885
|
}
|
|
8832
|
-
|
|
8886
|
+
// Empty dashstyle animation crashes treemap on hover
|
|
8887
|
+
if (defined(end)) {
|
|
8888
|
+
fx.run(start, end, unit);
|
|
8889
|
+
}
|
|
8833
8890
|
});
|
|
8834
8891
|
}
|
|
8835
8892
|
/**
|
|
@@ -8853,28 +8910,11 @@ function animate(el, params, opt) {
|
|
|
8853
8910
|
* improvement in all cases where we stop the animation from .attr. Instead of
|
|
8854
8911
|
* stopping everything, we can just stop the actual attributes we're setting.
|
|
8855
8912
|
*/
|
|
8856
|
-
|
|
8857
|
-
|
|
8858
|
-
|
|
8859
|
-
while (i--) {
|
|
8860
|
-
if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
|
|
8861
|
-
Animation_Fx.timers[i].stopped = true; // #4667
|
|
8862
|
-
}
|
|
8913
|
+
const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
|
|
8914
|
+
if (timer.elem === el && (!prop || prop === timer.prop)) {
|
|
8915
|
+
timer.stopped = true; // #4667
|
|
8863
8916
|
}
|
|
8864
|
-
}
|
|
8865
|
-
const animationExports = {
|
|
8866
|
-
animate,
|
|
8867
|
-
animObject,
|
|
8868
|
-
getDeferredAnimation,
|
|
8869
|
-
setAnimation,
|
|
8870
|
-
stop
|
|
8871
|
-
};
|
|
8872
|
-
/* *
|
|
8873
|
-
*
|
|
8874
|
-
* Default Export
|
|
8875
|
-
*
|
|
8876
|
-
* */
|
|
8877
|
-
/* harmony default export */ const AnimationUtilities = (animationExports);
|
|
8917
|
+
});
|
|
8878
8918
|
/* *
|
|
8879
8919
|
*
|
|
8880
8920
|
* API Options
|
|
@@ -9179,7 +9219,9 @@ class AST {
|
|
|
9179
9219
|
doc = { body };
|
|
9180
9220
|
}
|
|
9181
9221
|
const appendChildNodes = (node, addTo) => {
|
|
9182
|
-
|
|
9222
|
+
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
9223
|
+
const tagName = node.localName ||
|
|
9224
|
+
node.nodeName.toLowerCase();
|
|
9183
9225
|
// Add allowed tags
|
|
9184
9226
|
const astNode = {
|
|
9185
9227
|
tagName
|
|
@@ -9293,6 +9335,8 @@ AST.allowedAttributes = [
|
|
|
9293
9335
|
'src',
|
|
9294
9336
|
'startOffset',
|
|
9295
9337
|
'stdDeviation',
|
|
9338
|
+
'stop-color',
|
|
9339
|
+
'stop-opacity',
|
|
9296
9340
|
'stroke-linecap',
|
|
9297
9341
|
'stroke-width',
|
|
9298
9342
|
'stroke',
|
|
@@ -9779,7 +9823,7 @@ function format(str = '', ctx, owner) {
|
|
|
9779
9823
|
replacement = `"${replacement}"`;
|
|
9780
9824
|
}
|
|
9781
9825
|
}
|
|
9782
|
-
str = str.replace(match.find,
|
|
9826
|
+
str = str.replace(match.find, (replacement ?? ''));
|
|
9783
9827
|
});
|
|
9784
9828
|
return hasSub ? format(str, ctx, owner) : str;
|
|
9785
9829
|
}
|
|
@@ -9896,9 +9940,7 @@ const Templating = {
|
|
|
9896
9940
|
* API Declarations
|
|
9897
9941
|
* */
|
|
9898
9942
|
/**
|
|
9899
|
-
*
|
|
9900
|
-
*
|
|
9901
|
-
* The Highcharts.Templating interface provides a structure for defining
|
|
9943
|
+
* The Highcharts.TemplatingObject interface provides a structure for defining
|
|
9902
9944
|
* helpers. Helpers can be used as conditional blocks or functions within
|
|
9903
9945
|
* expressions. Highcharts includes several built-in helpers and supports
|
|
9904
9946
|
* the addition of custom helpers.
|
|
@@ -9906,16 +9948,21 @@ const Templating = {
|
|
|
9906
9948
|
* @see [More information](
|
|
9907
9949
|
* https://www.highcharts.com/docs/chart-concepts/templating#helpers)
|
|
9908
9950
|
*
|
|
9909
|
-
* @
|
|
9910
|
-
|
|
9911
|
-
|
|
9912
|
-
|
|
9913
|
-
|
|
9914
|
-
|
|
9915
|
-
|
|
9916
|
-
|
|
9917
|
-
|
|
9918
|
-
|
|
9951
|
+
* @interface Highcharts.TemplatingObject
|
|
9952
|
+
*/ /**
|
|
9953
|
+
* @example
|
|
9954
|
+
* // Define a custom helper to return the absolute value of a number
|
|
9955
|
+
* Highcharts.Templating.helpers.abs = value => Math.abs(value);
|
|
9956
|
+
*
|
|
9957
|
+
* // Usage in a format string
|
|
9958
|
+
* format: 'Absolute value: {abs point.y}'
|
|
9959
|
+
*
|
|
9960
|
+
* @name Highcharts.TemplatingObject#helpers
|
|
9961
|
+
* @type {Record<string, Function>}
|
|
9962
|
+
*/ /**
|
|
9963
|
+
* @name Highcharts.Templating
|
|
9964
|
+
* @type {Highcharts.TemplatingObject}
|
|
9965
|
+
*/
|
|
9919
9966
|
(''); // Keeps doclets above in file
|
|
9920
9967
|
|
|
9921
9968
|
;// ./code/es-modules/Core/Renderer/RendererUtilities.js
|
|
@@ -10025,7 +10072,7 @@ var RendererUtilities;
|
|
|
10025
10072
|
boxes = boxes.map((box) => ({
|
|
10026
10073
|
size: box.size,
|
|
10027
10074
|
targets: [box.target],
|
|
10028
|
-
align:
|
|
10075
|
+
align: (box.align ?? 0.5)
|
|
10029
10076
|
}));
|
|
10030
10077
|
while (overlapping) {
|
|
10031
10078
|
// Initial positions: target centered in box
|
|
@@ -10124,7 +10171,6 @@ var RendererUtilities;
|
|
|
10124
10171
|
* */
|
|
10125
10172
|
|
|
10126
10173
|
|
|
10127
|
-
const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
|
|
10128
10174
|
|
|
10129
10175
|
|
|
10130
10176
|
const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
|
|
@@ -10184,8 +10230,10 @@ class SVGElement {
|
|
|
10184
10230
|
* Property value.
|
|
10185
10231
|
*/
|
|
10186
10232
|
_defaultGetter(key) {
|
|
10187
|
-
let ret =
|
|
10188
|
-
|
|
10233
|
+
let ret = (this[key + 'Value'] ??
|
|
10234
|
+
this[key] ??
|
|
10235
|
+
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10236
|
+
0);
|
|
10189
10237
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10190
10238
|
ret = parseFloat(ret);
|
|
10191
10239
|
}
|
|
@@ -10348,7 +10396,7 @@ class SVGElement {
|
|
|
10348
10396
|
}
|
|
10349
10397
|
alignTo = void 0; // Do not use the box
|
|
10350
10398
|
}
|
|
10351
|
-
const alignToBox =
|
|
10399
|
+
const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
|
|
10352
10400
|
// Default: left align
|
|
10353
10401
|
x = (alignToBox.x || 0) + (alignOptions.x || 0) +
|
|
10354
10402
|
((alignToBox.width || 0) - (alignOptions.width || 0)) *
|
|
@@ -10408,7 +10456,7 @@ class SVGElement {
|
|
|
10408
10456
|
* Returns the SVGElement for chaining.
|
|
10409
10457
|
*/
|
|
10410
10458
|
animate(params, options, complete) {
|
|
10411
|
-
const animOptions =
|
|
10459
|
+
const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
|
|
10412
10460
|
// When the page is hidden save resources in the background by not
|
|
10413
10461
|
// running animation at all (#9749).
|
|
10414
10462
|
if (SVGElement_doc.hidden) {
|
|
@@ -10423,7 +10471,7 @@ class SVGElement {
|
|
|
10423
10471
|
// If defer option is defined delay the animation #12901
|
|
10424
10472
|
syncTimeout(() => {
|
|
10425
10473
|
if (this.element) {
|
|
10426
|
-
|
|
10474
|
+
animate(this, params, animOptions);
|
|
10427
10475
|
}
|
|
10428
10476
|
}, deferTime);
|
|
10429
10477
|
}
|
|
@@ -10597,7 +10645,7 @@ class SVGElement {
|
|
|
10597
10645
|
// Unless .attr is from the animator update, stop current
|
|
10598
10646
|
// running animation of this property
|
|
10599
10647
|
if (!continueAnimation) {
|
|
10600
|
-
|
|
10648
|
+
stop(this, key);
|
|
10601
10649
|
}
|
|
10602
10650
|
// Special handling of symbol attributes
|
|
10603
10651
|
if (this.symbolName &&
|
|
@@ -10900,7 +10948,7 @@ class SVGElement {
|
|
|
10900
10948
|
.split(','); // Ending comma
|
|
10901
10949
|
i = v.length;
|
|
10902
10950
|
while (i--) {
|
|
10903
|
-
v[i] = '' + (pInt(v[i]) *
|
|
10951
|
+
v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
|
|
10904
10952
|
}
|
|
10905
10953
|
value = v.join(',').replace(/NaN/g, 'none'); // #3226
|
|
10906
10954
|
this.element.setAttribute('stroke-dasharray', value);
|
|
@@ -10917,7 +10965,7 @@ class SVGElement {
|
|
|
10917
10965
|
// Remove events
|
|
10918
10966
|
element.onclick = element.onmouseout = element.onmouseover =
|
|
10919
10967
|
element.onmousemove = element.point = null;
|
|
10920
|
-
|
|
10968
|
+
stop(wrapper); // Stop running animations
|
|
10921
10969
|
if (wrapper.clipPath && ownerSVGElement) {
|
|
10922
10970
|
const clipPath = wrapper.clipPath;
|
|
10923
10971
|
// Look for existing references to this clipPath and remove them
|
|
@@ -11040,7 +11088,7 @@ class SVGElement {
|
|
|
11040
11088
|
* The bounding box with `x`, `y`, `width` and `height` properties.
|
|
11041
11089
|
*/
|
|
11042
11090
|
getBBox(reload, rot) {
|
|
11043
|
-
const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation =
|
|
11091
|
+
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 &&
|
|
11044
11092
|
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
|
|
11045
11093
|
renderer.rootFontSize,
|
|
11046
11094
|
this.textWidth, // #7874, also useHTML
|
|
@@ -11566,7 +11614,7 @@ class SVGElement {
|
|
|
11566
11614
|
symbolAttr(hash) {
|
|
11567
11615
|
const wrapper = this;
|
|
11568
11616
|
SVGElement.symbolCustomAttribs.forEach(function (key) {
|
|
11569
|
-
wrapper[key] =
|
|
11617
|
+
wrapper[key] = (hash[key] ?? wrapper[key]);
|
|
11570
11618
|
});
|
|
11571
11619
|
wrapper.attr({
|
|
11572
11620
|
d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
|
|
@@ -11606,7 +11654,7 @@ class SVGElement {
|
|
|
11606
11654
|
}
|
|
11607
11655
|
// Replace text content and escape markup
|
|
11608
11656
|
titleNode.textContent = replaceNested(// Scan #[73]
|
|
11609
|
-
|
|
11657
|
+
(value ?? ''), // #3276, #3895
|
|
11610
11658
|
[/<[^>]*>/g, '']).replace(/</g, '<').replace(/>/g, '>');
|
|
11611
11659
|
}
|
|
11612
11660
|
/**
|
|
@@ -12384,7 +12432,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12384
12432
|
if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
|
|
12385
12433
|
this.updateBoxSize();
|
|
12386
12434
|
}
|
|
12387
|
-
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft =
|
|
12435
|
+
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
|
|
12388
12436
|
let bBox = {
|
|
12389
12437
|
width,
|
|
12390
12438
|
height,
|
|
@@ -12437,7 +12485,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12437
12485
|
this.attr({
|
|
12438
12486
|
// Alignment is available now (#3295, 0 not rendered if given
|
|
12439
12487
|
// as a value)
|
|
12440
|
-
text:
|
|
12488
|
+
text: (this.textStr ?? ''),
|
|
12441
12489
|
x: this.x || 0,
|
|
12442
12490
|
y: this.y || 0
|
|
12443
12491
|
});
|
|
@@ -12593,8 +12641,8 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12593
12641
|
/** @internal */
|
|
12594
12642
|
getPaddedWidth() {
|
|
12595
12643
|
const padding = this.padding;
|
|
12596
|
-
const paddingLeft =
|
|
12597
|
-
const paddingRight =
|
|
12644
|
+
const paddingLeft = (this.paddingLeft ?? padding);
|
|
12645
|
+
const paddingRight = (this.paddingRight ?? padding);
|
|
12598
12646
|
return ((this.widthSetting || this.bBox.width || 0) +
|
|
12599
12647
|
paddingLeft +
|
|
12600
12648
|
paddingRight);
|
|
@@ -12695,7 +12743,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12695
12743
|
const arc = [];
|
|
12696
12744
|
if (options) {
|
|
12697
12745
|
let start = options.start || 0, end = options.end || 0;
|
|
12698
|
-
const rx =
|
|
12746
|
+
const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
|
|
12699
12747
|
// Subtract a small number to prevent cos and sin of start and end
|
|
12700
12748
|
// from becoming equal on 360 arcs (#1561). See "Arc proximity"
|
|
12701
12749
|
// tests at samples/unit-tests/svgrenderer/symbol/demo.js
|
|
@@ -12705,16 +12753,17 @@ function arc(cx, cy, w, h, options) {
|
|
|
12705
12753
|
start = Math.PI / 2;
|
|
12706
12754
|
end = Math.PI * 2.5 - proximity;
|
|
12707
12755
|
}
|
|
12708
|
-
const innerRadius = options.innerR, open =
|
|
12756
|
+
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),
|
|
12709
12757
|
// Proximity takes care of rounding errors around PI (#6971)
|
|
12710
|
-
longArc =
|
|
12758
|
+
longArc = options.longArc ??
|
|
12759
|
+
(end - start - Math.PI < proximity ? 0 : 1);
|
|
12711
12760
|
let arcSegment = [
|
|
12712
12761
|
'A', // ArcTo
|
|
12713
12762
|
rx, // X radius
|
|
12714
12763
|
ry, // Y radius
|
|
12715
12764
|
0, // Slanting
|
|
12716
12765
|
longArc, // Long or short arc
|
|
12717
|
-
|
|
12766
|
+
(options.clockwise ?? 1), // Clockwise
|
|
12718
12767
|
// Use a static pixel offset for full circle (#21701)
|
|
12719
12768
|
cx + (fullCircle ? 0.001 : rx * cosEnd),
|
|
12720
12769
|
cy + ry * sinEnd
|
|
@@ -13245,7 +13294,7 @@ class TextBuilder {
|
|
|
13245
13294
|
* @internal
|
|
13246
13295
|
*/
|
|
13247
13296
|
buildSVG() {
|
|
13248
|
-
const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr =
|
|
13297
|
+
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,
|
|
13249
13298
|
// The buildText code is quite heavy, so if we're not changing
|
|
13250
13299
|
// something that affects the text, skip it (#6113).
|
|
13251
13300
|
textCache = [
|
|
@@ -13829,7 +13878,7 @@ class SVGRenderer {
|
|
|
13829
13878
|
this.url = this.getReferenceURL();
|
|
13830
13879
|
// Add description
|
|
13831
13880
|
const desc = this.createElement('desc').add();
|
|
13832
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.
|
|
13881
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
|
|
13833
13882
|
this.defs = this.createElement('defs').add();
|
|
13834
13883
|
this.allowHTML = allowHTML;
|
|
13835
13884
|
this.forExport = forExport;
|
|
@@ -14615,7 +14664,7 @@ class SVGRenderer {
|
|
|
14615
14664
|
this.attr('height')
|
|
14616
14665
|
});
|
|
14617
14666
|
},
|
|
14618
|
-
duration:
|
|
14667
|
+
duration: (animate ?? true) ? void 0 : 0
|
|
14619
14668
|
});
|
|
14620
14669
|
renderer.alignElements();
|
|
14621
14670
|
}
|
|
@@ -14773,8 +14822,8 @@ class SVGRenderer {
|
|
|
14773
14822
|
// The image width is not always the same as the symbol width. The
|
|
14774
14823
|
// image may be centered within the symbol, as is the case when
|
|
14775
14824
|
// image shapes are used as label backgrounds, for example in flags.
|
|
14776
|
-
img.imgwidth =
|
|
14777
|
-
img.imgheight =
|
|
14825
|
+
img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
|
|
14826
|
+
img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
|
|
14778
14827
|
/**
|
|
14779
14828
|
* Set the size and position
|
|
14780
14829
|
*/
|
|
@@ -15620,7 +15669,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15620
15669
|
.attr({
|
|
15621
15670
|
text: str,
|
|
15622
15671
|
x: Math.round(x),
|
|
15623
|
-
y: Math.round(y)
|
|
15672
|
+
y: Math.round(y),
|
|
15673
|
+
// The namespace attribute is required for serialization
|
|
15674
|
+
// (export and side-by-side comparison), otherwise it
|
|
15675
|
+
// inherits the SVG namespace from foreignObject.
|
|
15676
|
+
xmlns: 'http://www.w3.org/1999/xhtml'
|
|
15624
15677
|
});
|
|
15625
15678
|
};
|
|
15626
15679
|
}
|
|
@@ -15800,8 +15853,10 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15800
15853
|
foreignObject.attr({
|
|
15801
15854
|
x: x + (this.xCorr || 0),
|
|
15802
15855
|
y: y + (this.yCorr || 0),
|
|
15803
|
-
// Add 4px to avoid ellipsis
|
|
15804
|
-
//
|
|
15856
|
+
// Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
|
|
15857
|
+
// the foreignObject with a 3px right margin. This was later
|
|
15858
|
+
// removed, but we still need to add a few pixels to avoid
|
|
15859
|
+
// ellipsis.
|
|
15805
15860
|
width: element.offsetWidth + 4,
|
|
15806
15861
|
// Add 1px to account for subpixel bounding boxes
|
|
15807
15862
|
height: element.offsetHeight + 1,
|
|
@@ -15821,25 +15876,16 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15821
15876
|
this.cTT = currentTextTransform;
|
|
15822
15877
|
}
|
|
15823
15878
|
/**
|
|
15824
|
-
* Add the element to
|
|
15825
|
-
* will be created for each ancestor SVG `g` element.
|
|
15879
|
+
* Add the element to the foreign object
|
|
15826
15880
|
*
|
|
15827
15881
|
* @internal
|
|
15828
15882
|
*/
|
|
15829
15883
|
add(parentGroup) {
|
|
15830
|
-
const { foreignObject
|
|
15884
|
+
const { foreignObject } = this;
|
|
15831
15885
|
// Foreign object
|
|
15832
15886
|
foreignObject.add(parentGroup);
|
|
15833
|
-
|
|
15834
|
-
|
|
15835
|
-
renderer.createElement('body')
|
|
15836
|
-
.attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
|
|
15837
|
-
.css({
|
|
15838
|
-
background: 'transparent',
|
|
15839
|
-
// 3px is to avoid clipping on the right
|
|
15840
|
-
margin: '0 3px 0 0'
|
|
15841
|
-
})
|
|
15842
|
-
.add(foreignObject));
|
|
15887
|
+
// Add this.element to the foreign objct
|
|
15888
|
+
super.add(foreignObject);
|
|
15843
15889
|
if (this.alignOnAdd) {
|
|
15844
15890
|
this.updateTransform();
|
|
15845
15891
|
}
|
|
@@ -15874,10 +15920,20 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15874
15920
|
this[key] = value;
|
|
15875
15921
|
this.doTransform = true;
|
|
15876
15922
|
}
|
|
15923
|
+
/**
|
|
15924
|
+
* Apply visibility/opacity to the foreignObject; the HTML element
|
|
15925
|
+
* ignores them.
|
|
15926
|
+
* @internal
|
|
15927
|
+
*/
|
|
15928
|
+
visibilitySetter(value, key) {
|
|
15929
|
+
this.foreignObject.attr({ [key]: value });
|
|
15930
|
+
this[key] = value;
|
|
15931
|
+
}
|
|
15877
15932
|
}
|
|
15878
15933
|
// Some shared setters
|
|
15879
15934
|
const proto = HTMLElement.prototype;
|
|
15880
15935
|
proto.ySetter = proto.xSetter;
|
|
15936
|
+
proto.opacitySetter = proto.visibilitySetter;
|
|
15881
15937
|
/* *
|
|
15882
15938
|
*
|
|
15883
15939
|
* Default Export
|
|
@@ -16418,6 +16474,7 @@ var AxisDefaults;
|
|
|
16418
16474
|
*/
|
|
16419
16475
|
dateTimeLabelFormats: {
|
|
16420
16476
|
/**
|
|
16477
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16421
16478
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16422
16479
|
*/
|
|
16423
16480
|
millisecond: {
|
|
@@ -16443,6 +16500,7 @@ var AxisDefaults;
|
|
|
16443
16500
|
range: false
|
|
16444
16501
|
},
|
|
16445
16502
|
/**
|
|
16503
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16446
16504
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16447
16505
|
*/
|
|
16448
16506
|
second: {
|
|
@@ -16468,6 +16526,7 @@ var AxisDefaults;
|
|
|
16468
16526
|
range: false
|
|
16469
16527
|
},
|
|
16470
16528
|
/**
|
|
16529
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16471
16530
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16472
16531
|
*/
|
|
16473
16532
|
minute: {
|
|
@@ -16493,6 +16552,7 @@ var AxisDefaults;
|
|
|
16493
16552
|
range: false
|
|
16494
16553
|
},
|
|
16495
16554
|
/**
|
|
16555
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16496
16556
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16497
16557
|
*/
|
|
16498
16558
|
hour: {
|
|
@@ -16525,6 +16585,7 @@ var AxisDefaults;
|
|
|
16525
16585
|
range: false
|
|
16526
16586
|
},
|
|
16527
16587
|
/**
|
|
16588
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16528
16589
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16529
16590
|
*/
|
|
16530
16591
|
day: {
|
|
@@ -16547,6 +16608,7 @@ var AxisDefaults;
|
|
|
16547
16608
|
boundary: '%[eb]'
|
|
16548
16609
|
},
|
|
16549
16610
|
/**
|
|
16611
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16550
16612
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16551
16613
|
*/
|
|
16552
16614
|
week: {
|
|
@@ -16562,6 +16624,7 @@ var AxisDefaults;
|
|
|
16562
16624
|
main: '%[eb]'
|
|
16563
16625
|
},
|
|
16564
16626
|
/**
|
|
16627
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16565
16628
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16566
16629
|
*/
|
|
16567
16630
|
month: {
|
|
@@ -16584,6 +16647,7 @@ var AxisDefaults;
|
|
|
16584
16647
|
boundary: void 0
|
|
16585
16648
|
},
|
|
16586
16649
|
/**
|
|
16650
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16587
16651
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16588
16652
|
*/
|
|
16589
16653
|
year: {
|
|
@@ -17399,7 +17463,7 @@ var AxisDefaults;
|
|
|
17399
17463
|
* @sample {highstock} stock/xaxis/offset/
|
|
17400
17464
|
* Y axis offset by 70 px
|
|
17401
17465
|
*
|
|
17402
|
-
* @type {number}
|
|
17466
|
+
* @type {number|string}
|
|
17403
17467
|
*/
|
|
17404
17468
|
offset: void 0,
|
|
17405
17469
|
/**
|
|
@@ -19049,7 +19113,9 @@ var AxisDefaults;
|
|
|
19049
19113
|
* @product highcharts
|
|
19050
19114
|
*/
|
|
19051
19115
|
style: {
|
|
19052
|
-
/**
|
|
19116
|
+
/**
|
|
19117
|
+
* @type {Highcharts.ColorType}
|
|
19118
|
+
*/
|
|
19053
19119
|
color: 'var(--highcharts-neutral-color-100)',
|
|
19054
19120
|
/**
|
|
19055
19121
|
* @type {number|string}
|
|
@@ -19236,11 +19302,11 @@ class Tick {
|
|
|
19236
19302
|
* @function Highcharts.Tick#addLabel
|
|
19237
19303
|
*/
|
|
19238
19304
|
addLabel() {
|
|
19239
|
-
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 =
|
|
19305
|
+
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;
|
|
19240
19306
|
let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19241
19307
|
// The context value
|
|
19242
19308
|
let value = this.parameters.category || (categories ?
|
|
19243
|
-
|
|
19309
|
+
(categories[pos] ?? names[pos] ?? pos) :
|
|
19244
19310
|
pos);
|
|
19245
19311
|
if (log && isNumber(value)) {
|
|
19246
19312
|
value = correctFloat(log.lin2log(value));
|
|
@@ -19487,7 +19553,7 @@ class Tick {
|
|
|
19487
19553
|
labelOptions.y;
|
|
19488
19554
|
}
|
|
19489
19555
|
x = x +
|
|
19490
|
-
|
|
19556
|
+
(labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
|
|
19491
19557
|
labelOffsetCorrection +
|
|
19492
19558
|
rotCorr.x -
|
|
19493
19559
|
(tickmarkOffset && horiz ?
|
|
@@ -19542,7 +19608,7 @@ class Tick {
|
|
|
19542
19608
|
* @function Highcharts.Tick#handleOverflow
|
|
19543
19609
|
*/
|
|
19544
19610
|
handleOverflow(xy) {
|
|
19545
|
-
const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound =
|
|
19611
|
+
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 = {};
|
|
19546
19612
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19547
19613
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19548
19614
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19609,9 +19675,8 @@ class Tick {
|
|
|
19609
19675
|
* @param {number} [opacity]
|
|
19610
19676
|
*/
|
|
19611
19677
|
render(index, old, opacity) {
|
|
19612
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset =
|
|
19613
|
-
const labelOpacity =
|
|
19614
|
-
1);
|
|
19678
|
+
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;
|
|
19679
|
+
const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
|
|
19615
19680
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19616
19681
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19617
19682
|
// axes in Safari.
|
|
@@ -19639,7 +19704,7 @@ class Tick {
|
|
|
19639
19704
|
* @param {number} opacity The opacity of the grid line
|
|
19640
19705
|
*/
|
|
19641
19706
|
renderGridLine(old, opacity) {
|
|
19642
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset =
|
|
19707
|
+
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;
|
|
19643
19708
|
let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19644
19709
|
if (tick.type === 'minor') {
|
|
19645
19710
|
gridLineWidth = options.minorGridLineWidth;
|
|
@@ -19695,7 +19760,7 @@ class Tick {
|
|
|
19695
19760
|
* @param {number} opacity The opacity of the mark
|
|
19696
19761
|
*/
|
|
19697
19762
|
renderMark(xy, opacity) {
|
|
19698
|
-
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 =
|
|
19763
|
+
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
|
|
19699
19764
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19700
19765
|
let mark = tick.mark;
|
|
19701
19766
|
const isNewMark = !mark;
|
|
@@ -19740,7 +19805,7 @@ class Tick {
|
|
|
19740
19805
|
* @param {number} index The index of the tick
|
|
19741
19806
|
*/
|
|
19742
19807
|
renderLabel(xy, old, opacity, index) {
|
|
19743
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset =
|
|
19808
|
+
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;
|
|
19744
19809
|
let show = true;
|
|
19745
19810
|
if (label && isNumber(x)) {
|
|
19746
19811
|
label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
|
|
@@ -19832,7 +19897,6 @@ class Tick {
|
|
|
19832
19897
|
* */
|
|
19833
19898
|
|
|
19834
19899
|
|
|
19835
|
-
const { animObject: Axis_animObject } = AnimationUtilities;
|
|
19836
19900
|
|
|
19837
19901
|
const { xAxis, yAxis } = Axis_AxisDefaults;
|
|
19838
19902
|
|
|
@@ -19846,12 +19910,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
|
|
|
19846
19910
|
|
|
19847
19911
|
|
|
19848
19912
|
|
|
19849
|
-
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0,
|
|
19850
|
-
// If the tick interval is greater than 0.5, avoid decimals, as
|
|
19851
|
-
// linear axes are often used to render discrete values (#3363). If
|
|
19852
|
-
// a tick amount is set, allow decimals by default, as it increases
|
|
19853
|
-
// the chances for a good fit.
|
|
19854
|
-
tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
|
|
19913
|
+
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
|
|
19855
19914
|
extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
19856
19915
|
/* *
|
|
19857
19916
|
*
|
|
@@ -19959,7 +20018,7 @@ class Axis {
|
|
|
19959
20018
|
axis.coll = coll;
|
|
19960
20019
|
fireEvent(this, 'init', { userOptions: userOptions });
|
|
19961
20020
|
// Needed in setOptions
|
|
19962
|
-
axis.opposite =
|
|
20021
|
+
axis.opposite = (userOptions.opposite ?? axis.opposite);
|
|
19963
20022
|
/**
|
|
19964
20023
|
* The side on which the axis is rendered. 0 is top, 1 is right, 2
|
|
19965
20024
|
* is bottom and 3 is left.
|
|
@@ -19967,10 +20026,9 @@ class Axis {
|
|
|
19967
20026
|
* @name Highcharts.Axis#side
|
|
19968
20027
|
* @type {number}
|
|
19969
20028
|
*/
|
|
19970
|
-
axis.side =
|
|
20029
|
+
axis.side = (userOptions.side ?? axis.side ?? (horiz ?
|
|
19971
20030
|
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
19972
|
-
(axis.opposite ? 1 : 3))
|
|
19973
|
-
);
|
|
20031
|
+
(axis.opposite ? 1 : 3)));
|
|
19974
20032
|
/**
|
|
19975
20033
|
* Current options for the axis after merge of defaults and user's
|
|
19976
20034
|
* options.
|
|
@@ -19999,7 +20057,7 @@ class Axis {
|
|
|
19999
20057
|
* @name Highcharts.Axis#reversed
|
|
20000
20058
|
* @type {boolean}
|
|
20001
20059
|
*/
|
|
20002
|
-
axis.reversed =
|
|
20060
|
+
axis.reversed = (options.reversed ?? axis.reversed);
|
|
20003
20061
|
axis.visible = options.visible;
|
|
20004
20062
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20005
20063
|
// Initial categories
|
|
@@ -20087,7 +20145,7 @@ class Axis {
|
|
|
20087
20145
|
* @name Highcharts.Axis#crosshair
|
|
20088
20146
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20089
20147
|
*/
|
|
20090
|
-
const crosshair =
|
|
20148
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
|
|
20091
20149
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20092
20150
|
// Register. Don't add it again on Axis.update().
|
|
20093
20151
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20271,8 +20329,8 @@ class Axis {
|
|
|
20271
20329
|
seriesDataMax = xExtremes.max;
|
|
20272
20330
|
}
|
|
20273
20331
|
if (xData.length) {
|
|
20274
|
-
axis.dataMin = Math.min(
|
|
20275
|
-
axis.dataMax = Math.max(
|
|
20332
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20333
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20276
20334
|
}
|
|
20277
20335
|
}
|
|
20278
20336
|
// Get dataMin and dataMax for Y axes, as well as handle
|
|
@@ -20287,11 +20345,11 @@ class Axis {
|
|
|
20287
20345
|
// doesn't have active y data, we continue with nulls
|
|
20288
20346
|
if (isNumber(dataExtremes.dataMin)) {
|
|
20289
20347
|
seriesDataMin = dataExtremes.dataMin;
|
|
20290
|
-
axis.dataMin = Math.min(
|
|
20348
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20291
20349
|
}
|
|
20292
20350
|
if (isNumber(dataExtremes.dataMax)) {
|
|
20293
20351
|
seriesDataMax = dataExtremes.dataMax;
|
|
20294
|
-
axis.dataMax = Math.max(
|
|
20352
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20295
20353
|
}
|
|
20296
20354
|
// Adjust to threshold
|
|
20297
20355
|
if (defined(threshold)) {
|
|
@@ -20446,7 +20504,7 @@ class Axis {
|
|
|
20446
20504
|
translatedValue
|
|
20447
20505
|
};
|
|
20448
20506
|
fireEvent(this, 'getPlotLinePath', evt, function (e) {
|
|
20449
|
-
translatedValue =
|
|
20507
|
+
translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
|
|
20450
20508
|
// Keep the translated value within sane bounds, and avoid Infinity
|
|
20451
20509
|
// to fail the isNumber test (#7709).
|
|
20452
20510
|
translatedValue = clamp(translatedValue, -1e9, 1e9);
|
|
@@ -20535,7 +20593,7 @@ class Axis {
|
|
|
20535
20593
|
getMinorTickInterval() {
|
|
20536
20594
|
const { minorTicks, minorTickInterval } = this.options;
|
|
20537
20595
|
if (minorTicks === true) {
|
|
20538
|
-
return
|
|
20596
|
+
return (minorTickInterval ?? 'auto');
|
|
20539
20597
|
}
|
|
20540
20598
|
if (minorTicks === false) {
|
|
20541
20599
|
return;
|
|
@@ -20818,7 +20876,9 @@ class Axis {
|
|
|
20818
20876
|
const seriesPointRange = hasCategories ?
|
|
20819
20877
|
1 :
|
|
20820
20878
|
(isXAxis ?
|
|
20821
|
-
|
|
20879
|
+
(series.options.pointRange ??
|
|
20880
|
+
closestPointRange ??
|
|
20881
|
+
0) :
|
|
20822
20882
|
(axis.axisPointRange || 0)), // #2806
|
|
20823
20883
|
pointPlacement = series.options.pointPlacement;
|
|
20824
20884
|
pointRange = Math.max(pointRange, seriesPointRange);
|
|
@@ -20902,14 +20962,16 @@ class Axis {
|
|
|
20902
20962
|
this.getTickAmount();
|
|
20903
20963
|
}
|
|
20904
20964
|
// Min or max set either by zooming/setExtremes or initial options
|
|
20905
|
-
hardMin =
|
|
20906
|
-
hardMax =
|
|
20965
|
+
hardMin = (axis.userMin ?? time.parse(options.min));
|
|
20966
|
+
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
20907
20967
|
// Linked axis gets the extremes from the parent axis
|
|
20908
20968
|
if (linkedParent) {
|
|
20909
20969
|
axis.linkedParent = linkedParent;
|
|
20910
20970
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
20911
|
-
axis.min =
|
|
20912
|
-
|
|
20971
|
+
axis.min =
|
|
20972
|
+
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
20973
|
+
axis.max =
|
|
20974
|
+
linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
|
|
20913
20975
|
if (this.type !== linkedParent.type) {
|
|
20914
20976
|
// Can't link axes of different type
|
|
20915
20977
|
error(11, true, chart);
|
|
@@ -20931,14 +20993,14 @@ class Axis {
|
|
|
20931
20993
|
maxPadding = 0;
|
|
20932
20994
|
}
|
|
20933
20995
|
}
|
|
20934
|
-
axis.min =
|
|
20935
|
-
axis.max =
|
|
20996
|
+
axis.min = (hardMin ?? thresholdMin ?? dataMin);
|
|
20997
|
+
axis.max = (hardMax ?? thresholdMax ?? dataMax);
|
|
20936
20998
|
}
|
|
20937
20999
|
if (isNumber(axis.max) && isNumber(axis.min)) {
|
|
20938
21000
|
if (logarithmic) {
|
|
20939
21001
|
if (axis.positiveValuesOnly &&
|
|
20940
21002
|
!secondPass &&
|
|
20941
|
-
Math.min(axis.min,
|
|
21003
|
+
Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
|
|
20942
21004
|
// Can't plot negative values on log axis
|
|
20943
21005
|
error(10, true, chart);
|
|
20944
21006
|
}
|
|
@@ -21044,16 +21106,13 @@ class Axis {
|
|
|
21044
21106
|
axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
|
|
21045
21107
|
}
|
|
21046
21108
|
else {
|
|
21047
|
-
axis.tickInterval =
|
|
21109
|
+
axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
|
|
21048
21110
|
range / Math.max(this.tickAmount - 1, 1) :
|
|
21049
|
-
|
|
21050
|
-
|
|
21051
|
-
|
|
21052
|
-
|
|
21053
|
-
|
|
21054
|
-
// Don't let it be more than the data range
|
|
21055
|
-
range * tickPixelIntervalOption /
|
|
21056
|
-
Math.max(axis.len, tickPixelIntervalOption));
|
|
21111
|
+
categories ?
|
|
21112
|
+
1 :
|
|
21113
|
+
// Don't let it be more than the data range
|
|
21114
|
+
range * tickPixelIntervalOption /
|
|
21115
|
+
Math.max(axis.len, tickPixelIntervalOption));
|
|
21057
21116
|
}
|
|
21058
21117
|
// Now we're finished detecting min and max, crop and group series data.
|
|
21059
21118
|
// This is in turn needed in order to find tick positions in ordinal
|
|
@@ -21083,12 +21142,9 @@ class Axis {
|
|
|
21083
21142
|
}
|
|
21084
21143
|
// Before normalizing the tick interval, handle minimum tick interval.
|
|
21085
21144
|
// This applies only if tickInterval is not defined.
|
|
21086
|
-
const minTickInterval =
|
|
21087
|
-
|
|
21088
|
-
|
|
21089
|
-
dateTime &&
|
|
21090
|
-
!axis.series.some((s) => !s.sorted) ?
|
|
21091
|
-
axis.closestPointRange : 0);
|
|
21145
|
+
const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
|
|
21146
|
+
axis.closestPointRange :
|
|
21147
|
+
0);
|
|
21092
21148
|
if (!tickIntervalOption &&
|
|
21093
21149
|
minTickInterval &&
|
|
21094
21150
|
axis.tickInterval < minTickInterval) {
|
|
@@ -21418,7 +21474,7 @@ class Axis {
|
|
|
21418
21474
|
* @function Highcharts.Axis#adjustTickAmount
|
|
21419
21475
|
*/
|
|
21420
21476
|
adjustTickAmount() {
|
|
21421
|
-
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold =
|
|
21477
|
+
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
|
|
21422
21478
|
let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
|
|
21423
21479
|
const
|
|
21424
21480
|
// Extend the tickPositions by appending a position
|
|
@@ -21654,7 +21710,8 @@ class Axis {
|
|
|
21654
21710
|
offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
|
|
21655
21711
|
// Check for percentage based input values. Rounding fixes problems
|
|
21656
21712
|
// with column overflow and plot line filtering (#4898, #4899)
|
|
21657
|
-
width = this.width = Math.round(relativeLength(
|
|
21713
|
+
width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
|
|
21714
|
+
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));
|
|
21658
21715
|
// Expose basic values to use in Series object and navigator
|
|
21659
21716
|
this.bottom = chart.chartHeight - height - top;
|
|
21660
21717
|
this.right = chart.chartWidth - width - left;
|
|
@@ -21765,9 +21822,7 @@ class Axis {
|
|
|
21765
21822
|
* An array of tickLength and tickWidth
|
|
21766
21823
|
*/
|
|
21767
21824
|
tickSize(prefix) {
|
|
21768
|
-
const options = this.options, tickWidth =
|
|
21769
|
-
// Default to 1 on linear and datetime X axes
|
|
21770
|
-
prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21825
|
+
const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21771
21826
|
let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
|
|
21772
21827
|
if (tickWidth && tickLength) {
|
|
21773
21828
|
// Negate the length
|
|
@@ -21854,7 +21909,7 @@ class Axis {
|
|
|
21854
21909
|
newTickInterval = getStep(lineHeight * 0.75);
|
|
21855
21910
|
}
|
|
21856
21911
|
this.autoRotation = autoRotation;
|
|
21857
|
-
this.labelRotation =
|
|
21912
|
+
this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
|
|
21858
21913
|
return labelOptions.step ? tickInterval : newTickInterval;
|
|
21859
21914
|
}
|
|
21860
21915
|
/**
|
|
@@ -22206,7 +22261,7 @@ class Axis {
|
|
|
22206
22261
|
titleOffsetOption = axisTitleOptions.offset;
|
|
22207
22262
|
titleMargin = defined(titleOffsetOption) ?
|
|
22208
22263
|
0 :
|
|
22209
|
-
|
|
22264
|
+
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22210
22265
|
}
|
|
22211
22266
|
}
|
|
22212
22267
|
// Render the axis line
|
|
@@ -22438,7 +22493,7 @@ class Axis {
|
|
|
22438
22493
|
* @emits Highcharts.Axis#event:afterRender
|
|
22439
22494
|
*/
|
|
22440
22495
|
render() {
|
|
22441
|
-
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 =
|
|
22496
|
+
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);
|
|
22442
22497
|
let from, to;
|
|
22443
22498
|
// Reset
|
|
22444
22499
|
axis.labelEdge.length = 0;
|
|
@@ -22717,9 +22772,9 @@ class Axis {
|
|
|
22717
22772
|
}
|
|
22718
22773
|
else if (defined(point)) {
|
|
22719
22774
|
// #3834
|
|
22720
|
-
pos =
|
|
22721
|
-
point.crosshairPos :
|
|
22722
|
-
null
|
|
22775
|
+
pos = (this.coll !== 'colorAxis' ?
|
|
22776
|
+
point.crosshairPos :
|
|
22777
|
+
null) ?? (this.isXAxis ?
|
|
22723
22778
|
point.plotX :
|
|
22724
22779
|
this.len - point.plotY);
|
|
22725
22780
|
}
|
|
@@ -22728,7 +22783,7 @@ class Axis {
|
|
|
22728
22783
|
// Value, only used on radial
|
|
22729
22784
|
value: point && (this.isXAxis ?
|
|
22730
22785
|
point.x :
|
|
22731
|
-
|
|
22786
|
+
(point.stackY ?? point.y ?? void 0)),
|
|
22732
22787
|
translatedValue: pos
|
|
22733
22788
|
};
|
|
22734
22789
|
if (chart.polar) {
|
|
@@ -22761,7 +22816,7 @@ class Axis {
|
|
|
22761
22816
|
(categorized ? 'category ' : 'thin ') +
|
|
22762
22817
|
(options.className || ''))
|
|
22763
22818
|
.attr({
|
|
22764
|
-
zIndex:
|
|
22819
|
+
zIndex: (options.zIndex ?? 2)
|
|
22765
22820
|
})
|
|
22766
22821
|
.clip(options.clip === false ?
|
|
22767
22822
|
void 0 :
|
|
@@ -22776,7 +22831,7 @@ class Axis {
|
|
|
22776
22831
|
// eslint-disable-next-line max-len
|
|
22777
22832
|
'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22778
22833
|
'var(--highcharts-neutral-color-20)'),
|
|
22779
|
-
'stroke-width':
|
|
22834
|
+
'stroke-width': (options.width ?? 1)
|
|
22780
22835
|
}).css({
|
|
22781
22836
|
'pointer-events': 'none'
|
|
22782
22837
|
});
|
|
@@ -22789,7 +22844,7 @@ class Axis {
|
|
|
22789
22844
|
}
|
|
22790
22845
|
cross
|
|
22791
22846
|
.show()
|
|
22792
|
-
.animate({ d: path },
|
|
22847
|
+
.animate({ d: path }, animObject(options?.animation));
|
|
22793
22848
|
if (categorized && !options.width) {
|
|
22794
22849
|
cross.attr({
|
|
22795
22850
|
'stroke-width': this.transA
|
|
@@ -22842,7 +22897,7 @@ class Axis {
|
|
|
22842
22897
|
this.destroy(true);
|
|
22843
22898
|
this.init(chart, options);
|
|
22844
22899
|
chart.isDirtyBox = true;
|
|
22845
|
-
if (
|
|
22900
|
+
if (redraw ?? true) {
|
|
22846
22901
|
chart.redraw();
|
|
22847
22902
|
}
|
|
22848
22903
|
}
|
|
@@ -22872,7 +22927,7 @@ class Axis {
|
|
|
22872
22927
|
chart.orderItems(coll);
|
|
22873
22928
|
this.destroy();
|
|
22874
22929
|
chart.isDirtyBox = true;
|
|
22875
|
-
if (
|
|
22930
|
+
if (redraw ?? true) {
|
|
22876
22931
|
chart.redraw();
|
|
22877
22932
|
}
|
|
22878
22933
|
}
|
|
@@ -23528,8 +23583,10 @@ var LogarithmicAxis;
|
|
|
23528
23583
|
tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
|
|
23529
23584
|
axisLength / axis.tickPositions.length :
|
|
23530
23585
|
axisLength;
|
|
23531
|
-
interval =
|
|
23532
|
-
|
|
23586
|
+
interval = filteredTickIntervalOption ??
|
|
23587
|
+
log.minorAutoInterval ??
|
|
23588
|
+
(realMax - realMin) * tickPixelIntervalOption /
|
|
23589
|
+
(totalPixelLength || 1);
|
|
23533
23590
|
interval = normalizeTickInterval(interval);
|
|
23534
23591
|
positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
|
|
23535
23592
|
if (!minor) {
|
|
@@ -23958,7 +24015,8 @@ class PlotLineOrBand {
|
|
|
23958
24015
|
if (!chart.styledMode) {
|
|
23959
24016
|
if (isLine) {
|
|
23960
24017
|
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
23961
|
-
attribs['stroke-width'] =
|
|
24018
|
+
attribs['stroke-width'] =
|
|
24019
|
+
options.width ?? 1;
|
|
23962
24020
|
if (options.dashStyle) {
|
|
23963
24021
|
attribs.dashstyle = options.dashStyle;
|
|
23964
24022
|
}
|
|
@@ -24827,7 +24885,6 @@ class PlotLineOrBand {
|
|
|
24827
24885
|
* */
|
|
24828
24886
|
|
|
24829
24887
|
|
|
24830
|
-
const { animObject: Tooltip_animObject } = AnimationUtilities;
|
|
24831
24888
|
|
|
24832
24889
|
const { format: Tooltip_format } = Core_Templating;
|
|
24833
24890
|
|
|
@@ -25091,7 +25148,8 @@ class Tooltip {
|
|
|
25091
25148
|
'highcharts-label',
|
|
25092
25149
|
isHeader && 'highcharts-tooltip-header',
|
|
25093
25150
|
isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
|
|
25094
|
-
!isHeader &&
|
|
25151
|
+
!isHeader &&
|
|
25152
|
+
'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
|
|
25095
25153
|
seriesOptions?.className
|
|
25096
25154
|
].filter(isString).join(' ');
|
|
25097
25155
|
}
|
|
@@ -25276,7 +25334,8 @@ class Tooltip {
|
|
|
25276
25334
|
}
|
|
25277
25335
|
// The far side is right or bottom
|
|
25278
25336
|
const preferFarSide = !this.followPointer &&
|
|
25279
|
-
|
|
25337
|
+
(point.ttBelow ??
|
|
25338
|
+
(polar ? false : !inverted === flipped)), // #4984
|
|
25280
25339
|
/*
|
|
25281
25340
|
* Handle the preferred dimension. When the preferred dimension is
|
|
25282
25341
|
* tooltip on top or bottom of the point, it will look for space
|
|
@@ -25403,7 +25462,7 @@ class Tooltip {
|
|
|
25403
25462
|
const tooltip = this;
|
|
25404
25463
|
// Disallow duplicate timers (#1728, #1766)
|
|
25405
25464
|
clearTimeouts(this);
|
|
25406
|
-
delay =
|
|
25465
|
+
delay = (delay ?? this.options.hideDelay);
|
|
25407
25466
|
if (!this.isHidden) {
|
|
25408
25467
|
this.hideTimer = syncTimeout(function () {
|
|
25409
25468
|
const label = tooltip.getLabel();
|
|
@@ -25506,7 +25565,9 @@ class Tooltip {
|
|
|
25506
25565
|
* Split tooltip does not support outside in the first iteration. Should
|
|
25507
25566
|
* not be too complicated to implement.
|
|
25508
25567
|
*/
|
|
25509
|
-
this.outside =
|
|
25568
|
+
this.outside =
|
|
25569
|
+
options.outside ??
|
|
25570
|
+
Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
|
|
25510
25571
|
}
|
|
25511
25572
|
shouldStickOnContact(pointerEvent) {
|
|
25512
25573
|
return !!(!this.followPointer &&
|
|
@@ -25528,7 +25589,7 @@ class Tooltip {
|
|
|
25528
25589
|
* @param {number} anchorY
|
|
25529
25590
|
*/
|
|
25530
25591
|
move(x, y, anchorX, anchorY) {
|
|
25531
|
-
const { followPointer, options } = this, animation =
|
|
25592
|
+
const { followPointer, options } = this, animation = animObject(!followPointer &&
|
|
25532
25593
|
!this.isHidden &&
|
|
25533
25594
|
!options.fixed &&
|
|
25534
25595
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
@@ -25586,7 +25647,7 @@ class Tooltip {
|
|
|
25586
25647
|
point.points = void 0;
|
|
25587
25648
|
// Register the current series
|
|
25588
25649
|
const currentSeries = point.series;
|
|
25589
|
-
this.distance =
|
|
25650
|
+
this.distance = (currentSeries.tooltipOptions.distance ?? 16);
|
|
25590
25651
|
// Update the inner HTML
|
|
25591
25652
|
if (text === false) {
|
|
25592
25653
|
this.hide();
|
|
@@ -25859,7 +25920,7 @@ class Tooltip {
|
|
|
25859
25920
|
anchorY,
|
|
25860
25921
|
boxWidth,
|
|
25861
25922
|
point,
|
|
25862
|
-
rank:
|
|
25923
|
+
rank: boxPosition.rank ?? (isHeader ? 1 : 0),
|
|
25863
25924
|
size,
|
|
25864
25925
|
target: boxPosition.y,
|
|
25865
25926
|
tt,
|
|
@@ -26276,7 +26337,6 @@ class Tooltip {
|
|
|
26276
26337
|
|
|
26277
26338
|
|
|
26278
26339
|
|
|
26279
|
-
const { animObject: Point_animObject } = AnimationUtilities;
|
|
26280
26340
|
|
|
26281
26341
|
const { defaultOptions: Point_defaultOptions } = Defaults;
|
|
26282
26342
|
|
|
@@ -26616,10 +26676,15 @@ class Point {
|
|
|
26616
26676
|
*
|
|
26617
26677
|
* @internal
|
|
26618
26678
|
* @function Highcharts.Point#destroy
|
|
26679
|
+
*
|
|
26680
|
+
* @param {boolean} [sync]
|
|
26681
|
+
* Whether to destroy the point synchronously. Used internally from
|
|
26682
|
+
* series.destroy, where condemned points may cause animation errors
|
|
26683
|
+
* (#24976).
|
|
26619
26684
|
*/
|
|
26620
|
-
destroy() {
|
|
26621
|
-
if (!this.condemned) {
|
|
26622
|
-
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } =
|
|
26685
|
+
destroy(sync) {
|
|
26686
|
+
if (!this.destroyed && !this.condemned) {
|
|
26687
|
+
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
|
|
26623
26688
|
/**
|
|
26624
26689
|
* Allow to call after animation.
|
|
26625
26690
|
* @internal
|
|
@@ -26636,6 +26701,7 @@ class Point {
|
|
|
26636
26701
|
for (const prop in point) { // eslint-disable-line guard-for-in
|
|
26637
26702
|
delete point[prop];
|
|
26638
26703
|
}
|
|
26704
|
+
this.destroyed = true;
|
|
26639
26705
|
};
|
|
26640
26706
|
if (point.legendItem) {
|
|
26641
26707
|
// Pies have legend items
|
|
@@ -26652,7 +26718,7 @@ class Point {
|
|
|
26652
26718
|
point.onMouseOut();
|
|
26653
26719
|
}
|
|
26654
26720
|
// Remove properties after animation
|
|
26655
|
-
if (duration && series.condemnedPoints) {
|
|
26721
|
+
if (duration && !sync && series.condemnedPoints) {
|
|
26656
26722
|
series.condemnedPoints.push(this);
|
|
26657
26723
|
this.graphic?.addClass('highcharts-point-condemned');
|
|
26658
26724
|
setTimeout(destroyPoint, duration);
|
|
@@ -26775,14 +26841,15 @@ class Point {
|
|
|
26775
26841
|
*
|
|
26776
26842
|
* @function Highcharts.Point#getZone
|
|
26777
26843
|
*
|
|
26778
|
-
* @return {Highcharts.SeriesZonesOptionsObject}
|
|
26779
|
-
* The zone item.
|
|
26844
|
+
* @return {Highcharts.SeriesZonesOptionsObject|undefined}
|
|
26845
|
+
* The zone item, or `undefined` if the series has no zones.
|
|
26780
26846
|
*/
|
|
26781
26847
|
getZone() {
|
|
26782
26848
|
const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
|
|
26783
26849
|
let zone, i = 0;
|
|
26784
26850
|
zone = zones[i];
|
|
26785
|
-
while (
|
|
26851
|
+
while (i < zones.length &&
|
|
26852
|
+
this[zoneAxis] >= zone.value) {
|
|
26786
26853
|
zone = zones[++i];
|
|
26787
26854
|
}
|
|
26788
26855
|
// For resetting or reusing the point (#8100)
|
|
@@ -27198,7 +27265,7 @@ class Point {
|
|
|
27198
27265
|
*/
|
|
27199
27266
|
select(selected, accumulate) {
|
|
27200
27267
|
const point = this, series = point.series, chart = series.chart;
|
|
27201
|
-
selected =
|
|
27268
|
+
selected = (selected ?? !point.selected);
|
|
27202
27269
|
this.selectedStaging = selected;
|
|
27203
27270
|
// Fire the event with the default handler
|
|
27204
27271
|
point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
|
|
@@ -27322,9 +27389,8 @@ class Point {
|
|
|
27322
27389
|
* @emits Highcharts.Point#event:afterSetState
|
|
27323
27390
|
*/
|
|
27324
27391
|
setState(state, move) {
|
|
27325
|
-
const point = this, series = point.series, previousState = point.state, stateOptions =
|
|
27326
|
-
|
|
27327
|
-
series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27392
|
+
const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
|
|
27393
|
+
series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27328
27394
|
{}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
|
|
27329
27395
|
let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
|
|
27330
27396
|
state = state || ''; // Empty string
|
|
@@ -27337,13 +27403,10 @@ class Point {
|
|
|
27337
27403
|
(stateOptions.enabled === false) ||
|
|
27338
27404
|
// General point marker's state options is disabled
|
|
27339
27405
|
(state && (stateDisabled ||
|
|
27340
|
-
(normalDisabled &&
|
|
27341
|
-
markerStateOptions.enabled === false))) ||
|
|
27406
|
+
(normalDisabled && markerStateOptions.enabled === false))) ||
|
|
27342
27407
|
// Individual point marker's state options is disabled
|
|
27343
27408
|
(state &&
|
|
27344
|
-
pointMarker.states
|
|
27345
|
-
pointMarker.states[state] &&
|
|
27346
|
-
pointMarker.states[state].enabled === false) // #1610
|
|
27409
|
+
pointMarker.states?.[state]?.enabled === false) // #1610
|
|
27347
27410
|
) {
|
|
27348
27411
|
return;
|
|
27349
27412
|
}
|
|
@@ -27362,7 +27425,8 @@ class Point {
|
|
|
27362
27425
|
}
|
|
27363
27426
|
if (!chart.styledMode) {
|
|
27364
27427
|
pointAttribs = series.pointAttribs(point, state);
|
|
27365
|
-
pointAttribsAnimation =
|
|
27428
|
+
pointAttribsAnimation = (chart.options.chart.animation ??
|
|
27429
|
+
stateOptions.animation);
|
|
27366
27430
|
const opacity = pointAttribs.opacity;
|
|
27367
27431
|
// Some inactive points (e.g. slices in pie) should apply
|
|
27368
27432
|
// opacity also for their labels
|
|
@@ -27380,9 +27444,11 @@ class Point {
|
|
|
27380
27444
|
point.graphic.animate(pointAttribs, pointAttribsAnimation);
|
|
27381
27445
|
}
|
|
27382
27446
|
if (markerAttribs) {
|
|
27383
|
-
point.graphic.animate(markerAttribs,
|
|
27447
|
+
point.graphic.animate(markerAttribs, (
|
|
27384
27448
|
// Turn off globally:
|
|
27385
|
-
chart.options.chart.animation
|
|
27449
|
+
chart.options.chart.animation ??
|
|
27450
|
+
markerStateOptions.animation ??
|
|
27451
|
+
markerOptions.animation));
|
|
27386
27452
|
}
|
|
27387
27453
|
// Zooming in from a range with no markers to a range with markers
|
|
27388
27454
|
if (stateMarkerGraphic) {
|
|
@@ -27431,10 +27497,12 @@ class Point {
|
|
|
27431
27497
|
}
|
|
27432
27498
|
}
|
|
27433
27499
|
// Show me your halo
|
|
27434
|
-
const haloOptions = stateOptions.halo
|
|
27500
|
+
const haloOptions = isObject(stateOptions.halo) ?
|
|
27501
|
+
stateOptions.halo :
|
|
27502
|
+
{};
|
|
27435
27503
|
const markerGraphic = (point.graphic || stateMarkerGraphic);
|
|
27436
27504
|
const markerVisibility = markerGraphic?.visibility || 'inherit';
|
|
27437
|
-
if (haloOptions
|
|
27505
|
+
if (haloOptions.size &&
|
|
27438
27506
|
markerGraphic &&
|
|
27439
27507
|
markerVisibility !== 'hidden' &&
|
|
27440
27508
|
!point.isCluster) {
|
|
@@ -27448,7 +27516,7 @@ class Point {
|
|
|
27448
27516
|
});
|
|
27449
27517
|
halo.attr({
|
|
27450
27518
|
'class': 'highcharts-halo highcharts-color-' +
|
|
27451
|
-
|
|
27519
|
+
(point.colorIndex ?? series.colorIndex) +
|
|
27452
27520
|
(point.className ? ' ' + point.className : ''),
|
|
27453
27521
|
'visibility': markerVisibility,
|
|
27454
27522
|
'zIndex': -1 // #4929, #8276
|
|
@@ -27964,6 +28032,11 @@ class Pointer {
|
|
|
27964
28032
|
}
|
|
27965
28033
|
}
|
|
27966
28034
|
}
|
|
28035
|
+
// Run a final transform with a drop trigger to display the reset
|
|
28036
|
+
// zoom button after a pinch gesture (#22128)
|
|
28037
|
+
if (e?.type === 'touchend' && this.hasDragged) {
|
|
28038
|
+
chart.transform({ trigger: 'drop' });
|
|
28039
|
+
}
|
|
27967
28040
|
if (redraw) {
|
|
27968
28041
|
chart.redraw();
|
|
27969
28042
|
}
|
|
@@ -28176,7 +28249,7 @@ class Pointer {
|
|
|
28176
28249
|
const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
|
|
28177
28250
|
return (s.visible &&
|
|
28178
28251
|
!(!shared && s.directTouch) && // #3821
|
|
28179
|
-
|
|
28252
|
+
(s.options.enableMouseTracking ?? true));
|
|
28180
28253
|
};
|
|
28181
28254
|
let hoverSeries = existingHoverSeries,
|
|
28182
28255
|
// Which series to look in for the hover point
|
|
@@ -28362,8 +28435,8 @@ class Pointer {
|
|
|
28362
28435
|
const ePos = (touches ?
|
|
28363
28436
|
touches.length ?
|
|
28364
28437
|
touches.item(0) :
|
|
28365
|
-
(
|
|
28366
|
-
|
|
28438
|
+
(touches.changedTouches ??
|
|
28439
|
+
e.changedTouches)[0] :
|
|
28367
28440
|
e);
|
|
28368
28441
|
// Get mouse position
|
|
28369
28442
|
if (!chartPosition) {
|
|
@@ -28437,7 +28510,7 @@ class Pointer {
|
|
|
28437
28510
|
* @function Highcharts.Pointer#onContainerMouseLeave
|
|
28438
28511
|
*/
|
|
28439
28512
|
onContainerMouseLeave(e) {
|
|
28440
|
-
const { pointer } = Pointer_charts[
|
|
28513
|
+
const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
|
|
28441
28514
|
e = this.normalize(e);
|
|
28442
28515
|
this.onContainerMouseMove(e);
|
|
28443
28516
|
// #4886, MS Touch end fires mouseleave but with no related target
|
|
@@ -28537,7 +28610,7 @@ class Pointer {
|
|
|
28537
28610
|
if (e?.touches && this.hasPinchMoved) {
|
|
28538
28611
|
e?.preventDefault?.();
|
|
28539
28612
|
}
|
|
28540
|
-
Pointer_charts[
|
|
28613
|
+
Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
|
|
28541
28614
|
?.pointer
|
|
28542
28615
|
?.drop(e);
|
|
28543
28616
|
}
|
|
@@ -28607,6 +28680,9 @@ class Pointer {
|
|
|
28607
28680
|
from: boxFromTouches(lastTouches),
|
|
28608
28681
|
trigger: e.type
|
|
28609
28682
|
});
|
|
28683
|
+
// Record a truthy value in order to trigger the final transform
|
|
28684
|
+
// in the drop function
|
|
28685
|
+
pointer.hasDragged = 1;
|
|
28610
28686
|
});
|
|
28611
28687
|
if (pointer.res) {
|
|
28612
28688
|
pointer.res = false;
|
|
@@ -29041,7 +29117,7 @@ class Pointer {
|
|
|
29041
29117
|
*/
|
|
29042
29118
|
setHoverChartIndex(e) {
|
|
29043
29119
|
const chart = this.chart;
|
|
29044
|
-
const hoverChart = Core_Globals.charts[
|
|
29120
|
+
const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
|
|
29045
29121
|
if (hoverChart &&
|
|
29046
29122
|
hoverChart !== chart) {
|
|
29047
29123
|
const relatedTargetObj = { relatedTarget: chart.container };
|
|
@@ -29087,7 +29163,7 @@ class Pointer {
|
|
|
29087
29163
|
Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
|
|
29088
29164
|
false;
|
|
29089
29165
|
}
|
|
29090
|
-
if (
|
|
29166
|
+
if (hasMoved ?? true) {
|
|
29091
29167
|
this.pinch(e);
|
|
29092
29168
|
}
|
|
29093
29169
|
}
|
|
@@ -29098,7 +29174,9 @@ class Pointer {
|
|
|
29098
29174
|
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29099
29175
|
// allow dragging the finger to scroll the page
|
|
29100
29176
|
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29101
|
-
isInside
|
|
29177
|
+
isInside &&
|
|
29178
|
+
e.type === 'touchmove' &&
|
|
29179
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29102
29180
|
e.preventDefault();
|
|
29103
29181
|
}
|
|
29104
29182
|
}
|
|
@@ -29128,7 +29206,7 @@ class Pointer {
|
|
|
29128
29206
|
let zoomType = chart.zooming.type || '', zoomX, zoomY;
|
|
29129
29207
|
// Look for the pinchType option
|
|
29130
29208
|
if (/touch/.test(e.type)) {
|
|
29131
|
-
zoomType =
|
|
29209
|
+
zoomType = (chart.zooming.pinchType ?? zoomType);
|
|
29132
29210
|
}
|
|
29133
29211
|
this.zoomX = zoomX = /x/.test(zoomType);
|
|
29134
29212
|
this.zoomY = zoomY = /y/.test(zoomType);
|
|
@@ -29570,7 +29648,7 @@ class DataTableCore {
|
|
|
29570
29648
|
* Fetches the given column by the canonical column ID. Simplified version
|
|
29571
29649
|
* of the full `DataTable.getRow` method, always returning by reference.
|
|
29572
29650
|
*
|
|
29573
|
-
* @function Highcharts.DataTable#
|
|
29651
|
+
* @function Highcharts.DataTable#getColumn
|
|
29574
29652
|
*
|
|
29575
29653
|
* @param {string} columnId
|
|
29576
29654
|
* ID of the column to get.
|
|
@@ -29902,7 +29980,7 @@ var LegendSymbol;
|
|
|
29902
29980
|
// Draw the marker
|
|
29903
29981
|
if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
|
|
29904
29982
|
// Do not allow the marker to be larger than the symbolHeight
|
|
29905
|
-
let radius = Math.min(
|
|
29983
|
+
let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
|
|
29906
29984
|
// Restrict symbol markers size
|
|
29907
29985
|
if (symbol.indexOf('url') === 0) {
|
|
29908
29986
|
markerOptions = merge(markerOptions, {
|
|
@@ -30306,6 +30384,10 @@ const seriesDefaults = {
|
|
|
30306
30384
|
* ```
|
|
30307
30385
|
*
|
|
30308
30386
|
* @type {Highcharts.DataMappingOptionsObject}
|
|
30387
|
+
* @sample highcharts/datatable/datamapping
|
|
30388
|
+
* Basic data mapping
|
|
30389
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
30390
|
+
* Data mapping with dynamic updates
|
|
30309
30391
|
* @sample {highcharts} highcharts/datatable/series-datatable-multiple
|
|
30310
30392
|
* Series with two data tables
|
|
30311
30393
|
* @sample {highcharts} highcharts/datatable/nested-keys
|
|
@@ -30316,6 +30398,29 @@ const seriesDefaults = {
|
|
|
30316
30398
|
* @since 13.0.0
|
|
30317
30399
|
* @apioption plotOptions.series.dataMapping
|
|
30318
30400
|
*/
|
|
30401
|
+
/**
|
|
30402
|
+
* Options for a specific series-level data table or an array of data
|
|
30403
|
+
* tables. The `dataTable` option can be either a configuration object or an
|
|
30404
|
+
* instance of the `DataTable` class. If a `DataTable` instance is passed,
|
|
30405
|
+
* it will be used directly. If a configuration object or an array is
|
|
30406
|
+
* passed, a new `DataTable` instance will be created based on the provided
|
|
30407
|
+
* configuration.
|
|
30408
|
+
*
|
|
30409
|
+
* @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
|
|
30410
|
+
* @sample {highcharts} highcharts/datatable/series-datatable/
|
|
30411
|
+
* Series with one data table each
|
|
30412
|
+
* @sample {highcharts} highcharts/datatable/series-datatable-multiple/
|
|
30413
|
+
* Series with two data tables
|
|
30414
|
+
* @sample {highstock} stock/datatable/series-datatable/
|
|
30415
|
+
* Series with one data table each
|
|
30416
|
+
* @sample {highstock} stock/datatable/series-datatable-multiple/
|
|
30417
|
+
* Series with two data tables
|
|
30418
|
+
* @sample {highmaps} maps/datatable/series-datatable
|
|
30419
|
+
* Series-level data table
|
|
30420
|
+
*
|
|
30421
|
+
* @since 13.0.0
|
|
30422
|
+
* @apioption plotOptions.series.dataTable
|
|
30423
|
+
*/
|
|
30319
30424
|
/**
|
|
30320
30425
|
* Enable or disable the mouse tracking for a specific series. This
|
|
30321
30426
|
* includes point tooltips and click events on graphs and points. For
|
|
@@ -31199,6 +31304,7 @@ const seriesDefaults = {
|
|
|
31199
31304
|
* `series.allowPointSelect` option to true.
|
|
31200
31305
|
*
|
|
31201
31306
|
* @declare Highcharts.PointStatesSelectOptionsObject
|
|
31307
|
+
* @extends plotOptions.series.marker.states.hover
|
|
31202
31308
|
*/
|
|
31203
31309
|
select: {
|
|
31204
31310
|
/**
|
|
@@ -31775,6 +31881,7 @@ const seriesDefaults = {
|
|
|
31775
31881
|
* @sample {highmaps} maps/plotoptions/series-datalabels-box/
|
|
31776
31882
|
* Data labels box options
|
|
31777
31883
|
*
|
|
31884
|
+
* @type {number|Array<number>}
|
|
31778
31885
|
* @since 2.2.1
|
|
31779
31886
|
*/
|
|
31780
31887
|
padding: [1, 3],
|
|
@@ -31976,6 +32083,9 @@ const seriesDefaults = {
|
|
|
31976
32083
|
/**
|
|
31977
32084
|
* A collection of options for different series states.
|
|
31978
32085
|
*
|
|
32086
|
+
* In addition to the options documented under each state, any option from
|
|
32087
|
+
* the parent series type can be set, with exception of `data` and `states`.
|
|
32088
|
+
*
|
|
31979
32089
|
* @declare Highcharts.SeriesStatesOptionsObject
|
|
31980
32090
|
*/
|
|
31981
32091
|
states: {
|
|
@@ -32149,6 +32259,7 @@ const seriesDefaults = {
|
|
|
32149
32259
|
* Disabled inactive state
|
|
32150
32260
|
*
|
|
32151
32261
|
* @declare Highcharts.SeriesStatesInactiveOptionsObject
|
|
32262
|
+
* @extends plotOptions.series.states.hover
|
|
32152
32263
|
*/
|
|
32153
32264
|
inactive: {
|
|
32154
32265
|
/**
|
|
@@ -32549,7 +32660,6 @@ var SeriesRegistry;
|
|
|
32549
32660
|
* */
|
|
32550
32661
|
|
|
32551
32662
|
|
|
32552
|
-
const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
|
|
32553
32663
|
|
|
32554
32664
|
|
|
32555
32665
|
const { defaultOptions: Series_defaultOptions } = Defaults;
|
|
@@ -32687,6 +32797,13 @@ class Series {
|
|
|
32687
32797
|
* @type {number|undefined}
|
|
32688
32798
|
* @readonly
|
|
32689
32799
|
*/
|
|
32800
|
+
/**
|
|
32801
|
+
* The main group for the series' graphics.
|
|
32802
|
+
*
|
|
32803
|
+
* @name Highcharts.Series#group
|
|
32804
|
+
* @type {Highcharts.SVGElement}
|
|
32805
|
+
* @readonly
|
|
32806
|
+
*/
|
|
32690
32807
|
/**
|
|
32691
32808
|
* Contains the series' index in the `Chart.series` array.
|
|
32692
32809
|
*
|
|
@@ -32819,10 +32936,12 @@ class Series {
|
|
|
32819
32936
|
*/
|
|
32820
32937
|
series.options = series.setOptions(userOptions);
|
|
32821
32938
|
const options = series.options, visible = options.visible !== false;
|
|
32822
|
-
// Create the data table
|
|
32823
|
-
this.dataTable ?? (this.dataTable = options.dataTable
|
|
32824
|
-
|
|
32825
|
-
|
|
32939
|
+
// Create the data table or use the one passed as option
|
|
32940
|
+
this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
|
|
32941
|
+
new Data_DataTableCore() :
|
|
32942
|
+
options.dataTable?.isDataTable ?
|
|
32943
|
+
options.dataTable :
|
|
32944
|
+
new Data_DataTableCore(options.dataTable));
|
|
32826
32945
|
/**
|
|
32827
32946
|
* All child series that are linked to the current series through the
|
|
32828
32947
|
* [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
|
|
@@ -32882,7 +33001,7 @@ class Series {
|
|
|
32882
33001
|
if (chartSeries.length) {
|
|
32883
33002
|
lastSeries = chartSeries[chartSeries.length - 1];
|
|
32884
33003
|
}
|
|
32885
|
-
series._i =
|
|
33004
|
+
series._i = (lastSeries?._i ?? -1) + 1;
|
|
32886
33005
|
series.opacity = series.options.opacity;
|
|
32887
33006
|
// Insert the series and re-order all series above the insertion
|
|
32888
33007
|
// point.
|
|
@@ -32929,7 +33048,7 @@ class Series {
|
|
|
32929
33048
|
// Apply if the series xAxis or yAxis option matches
|
|
32930
33049
|
// the number of the axis, or if undefined, use the
|
|
32931
33050
|
// first axis
|
|
32932
|
-
if (
|
|
33051
|
+
if ((seriesOptions[coll] ?? 0) === axis.index ||
|
|
32933
33052
|
(typeof seriesOptions[coll] !==
|
|
32934
33053
|
'undefined' &&
|
|
32935
33054
|
seriesOptions[coll] === axisOptions.id)) {
|
|
@@ -32972,8 +33091,12 @@ class Series {
|
|
|
32972
33091
|
* @function Highcharts.Series#hasMarkerChanged
|
|
32973
33092
|
*/
|
|
32974
33093
|
hasMarkerChanged(options, oldOptions) {
|
|
32975
|
-
const marker = options.marker, oldMarker = oldOptions.marker
|
|
32976
|
-
|
|
33094
|
+
const marker = options.marker, oldMarker = oldOptions.marker;
|
|
33095
|
+
// Note that `marker` holds the full, merged object including
|
|
33096
|
+
// `plotOptions`, while `oldMarker` is the user-defined series-level
|
|
33097
|
+
// options only. We may need to refactor that in the future if more
|
|
33098
|
+
// issues like #24057 arise.
|
|
33099
|
+
return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
|
|
32977
33100
|
oldMarker.symbol !== marker.symbol || // #10870, #15946
|
|
32978
33101
|
oldMarker.height !== marker.height || // #16274
|
|
32979
33102
|
oldMarker.width !== marker.width // #16274
|
|
@@ -32992,7 +33115,8 @@ class Series {
|
|
|
32992
33115
|
time.parse(options.pointStart) ??
|
|
32993
33116
|
0;
|
|
32994
33117
|
let pointInterval;
|
|
32995
|
-
this.pointInterval = pointInterval =
|
|
33118
|
+
this.pointInterval = pointInterval =
|
|
33119
|
+
this.pointInterval ?? options.pointInterval ?? 1;
|
|
32996
33120
|
if (relativeXValue && isNumber(x)) {
|
|
32997
33121
|
pointInterval *= x;
|
|
32998
33122
|
}
|
|
@@ -33064,9 +33188,13 @@ class Series {
|
|
|
33064
33188
|
);
|
|
33065
33189
|
// When shared tooltip, stickyTracking is true by default,
|
|
33066
33190
|
// unless user says otherwise.
|
|
33067
|
-
this.stickyTracking =
|
|
33068
|
-
|
|
33069
|
-
|
|
33191
|
+
this.stickyTracking =
|
|
33192
|
+
seriesUserOptions.stickyTracking ??
|
|
33193
|
+
userPlotOptionsType.stickyTracking ??
|
|
33194
|
+
userPlotOptionsSeries.stickyTracking ??
|
|
33195
|
+
(this.tooltipOptions.shared && !this.noSharedTooltip ?
|
|
33196
|
+
true :
|
|
33197
|
+
options.stickyTracking);
|
|
33070
33198
|
// Delete marker object if not allowed (#1125)
|
|
33071
33199
|
if (typeOptions.marker === null) {
|
|
33072
33200
|
delete options.marker;
|
|
@@ -33144,7 +33272,9 @@ class Series {
|
|
|
33144
33272
|
if (!value) {
|
|
33145
33273
|
// Pick up either the colorIndex option, or the series.colorIndex
|
|
33146
33274
|
// after Series.update()
|
|
33147
|
-
setting =
|
|
33275
|
+
setting = prop === 'color' ?
|
|
33276
|
+
(this.options.colorIndex ?? this[indexName]) :
|
|
33277
|
+
this[indexName];
|
|
33148
33278
|
if (defined(setting)) { // After Series.update()
|
|
33149
33279
|
i = setting;
|
|
33150
33280
|
}
|
|
@@ -33204,7 +33334,7 @@ class Series {
|
|
|
33204
33334
|
*/
|
|
33205
33335
|
getSymbol() {
|
|
33206
33336
|
const seriesMarkerOption = this.options.marker;
|
|
33207
|
-
this.getCyclic('symbol', seriesMarkerOption
|
|
33337
|
+
this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
|
|
33208
33338
|
}
|
|
33209
33339
|
/**
|
|
33210
33340
|
* Shorthand to get one of the series' data columns from `Series.dataTable`.
|
|
@@ -33400,9 +33530,10 @@ class Series {
|
|
|
33400
33530
|
if (!oldData[i].destroyed && !oldData[i].condemned) {
|
|
33401
33531
|
const pOptions = dataTable.getRowObject(i);
|
|
33402
33532
|
if (pOptions) {
|
|
33533
|
+
// Remove undefined properties, but preserve explicit
|
|
33534
|
+
// nulls (#24872)
|
|
33403
33535
|
Object.keys(pOptions).forEach((key) => {
|
|
33404
|
-
if (
|
|
33405
|
-
pOptions[key] === oldData[i].options[key]*/) {
|
|
33536
|
+
if (pOptions[key] === void 0) {
|
|
33406
33537
|
delete pOptions[key];
|
|
33407
33538
|
}
|
|
33408
33539
|
});
|
|
@@ -33807,8 +33938,12 @@ class Series {
|
|
|
33807
33938
|
}
|
|
33808
33939
|
}
|
|
33809
33940
|
}
|
|
33810
|
-
// Find the closest distance between processed points
|
|
33811
|
-
|
|
33941
|
+
// Find the closest distance between processed points. When the data was
|
|
33942
|
+
// cropped (or set out of range), read x from the freshly cropped local
|
|
33943
|
+
// `modified` table, #24858.
|
|
33944
|
+
if (modified !== table) {
|
|
33945
|
+
xData = modified.getColumn('x', true) || [];
|
|
33946
|
+
}
|
|
33812
33947
|
const closestPointRange = getClosestDistance([
|
|
33813
33948
|
logarithmic ?
|
|
33814
33949
|
xData.map(logarithmic.log2lin) :
|
|
@@ -34013,9 +34148,9 @@ class Series {
|
|
|
34013
34148
|
* Force getting extremes of a total series data range.
|
|
34014
34149
|
*/
|
|
34015
34150
|
getExtremes(yData, forceExtremesFromAll) {
|
|
34016
|
-
const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34151
|
+
const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34017
34152
|
this.getExtremesFromAll ||
|
|
34018
|
-
|
|
34153
|
+
options.getExtremesFromAll, // #4599, #21003
|
|
34019
34154
|
table = getExtremesFromAll && this.cropped ?
|
|
34020
34155
|
this.dataTable :
|
|
34021
34156
|
this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
|
|
@@ -34025,7 +34160,12 @@ class Series {
|
|
|
34025
34160
|
// non-sorted data like scatter (#7639).
|
|
34026
34161
|
shoulder = this.requireSorting && !this.is('column') ?
|
|
34027
34162
|
1 : 0,
|
|
34028
|
-
//
|
|
34163
|
+
// Used only for `cumulativeStart` (#24608)
|
|
34164
|
+
excludeShoulder = options.cumulative &&
|
|
34165
|
+
options.cumulativeStart &&
|
|
34166
|
+
shoulder &&
|
|
34167
|
+
!getExtremesFromAll,
|
|
34168
|
+
// Compensate for log X axis (#2117)
|
|
34029
34169
|
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
|
|
34030
34170
|
this.cropped ||
|
|
34031
34171
|
!xAxis; // For colorAxis support
|
|
@@ -34037,10 +34177,10 @@ class Series {
|
|
|
34037
34177
|
}
|
|
34038
34178
|
for (i = 0; i < rowCount; i++) {
|
|
34039
34179
|
x = xData[i];
|
|
34040
|
-
// Check if it is within the selected x
|
|
34041
|
-
if (doAll ||
|
|
34180
|
+
// Check if it is within the selected x-axis range
|
|
34181
|
+
if ((doAll ||
|
|
34042
34182
|
((xData[i + shoulder] || x) >= xMin &&
|
|
34043
|
-
(xData[i - shoulder] || x) <= xMax)) {
|
|
34183
|
+
(xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
|
|
34044
34184
|
for (const values of yAxisData) {
|
|
34045
34185
|
const val = values[i];
|
|
34046
34186
|
// For points within the visible range, including the
|
|
@@ -34109,7 +34249,7 @@ class Series {
|
|
|
34109
34249
|
*/
|
|
34110
34250
|
translate() {
|
|
34111
34251
|
this.generatePoints();
|
|
34112
|
-
const series = this, { options, xAxis, yAxis } = series, { stacking, threshold } = options, {
|
|
34252
|
+
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
|
|
34113
34253
|
dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
|
|
34114
34254
|
yAxis.len);
|
|
34115
34255
|
let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
|
|
@@ -34161,7 +34301,9 @@ class Series {
|
|
|
34161
34301
|
yValue = stackValues[1];
|
|
34162
34302
|
if (lowValue === stackThreshold &&
|
|
34163
34303
|
stackIndicator.key === stacks[xValue].base) {
|
|
34164
|
-
lowValue =
|
|
34304
|
+
lowValue = isNumber(threshold) ?
|
|
34305
|
+
threshold :
|
|
34306
|
+
yAxis.min;
|
|
34165
34307
|
}
|
|
34166
34308
|
// #1200, #1232
|
|
34167
34309
|
if (yAxis.positiveValuesOnly &&
|
|
@@ -34169,7 +34311,7 @@ class Series {
|
|
|
34169
34311
|
lowValue <= 0) {
|
|
34170
34312
|
lowValue = void 0;
|
|
34171
34313
|
}
|
|
34172
|
-
point.total = point.stackTotal =
|
|
34314
|
+
point.total = point.stackTotal = stackItem.total ?? void 0;
|
|
34173
34315
|
point.percentage = defined(point.y) && stackItem.total ?
|
|
34174
34316
|
(point.y / stackItem.total * 100) : void 0;
|
|
34175
34317
|
point.stackY = yValue;
|
|
@@ -34302,7 +34444,7 @@ class Series {
|
|
|
34302
34444
|
* Initialize the animation.
|
|
34303
34445
|
*/
|
|
34304
34446
|
animate(init) {
|
|
34305
|
-
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation =
|
|
34447
|
+
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
|
|
34306
34448
|
// The key for temporary animation clips
|
|
34307
34449
|
animationClipKey = [
|
|
34308
34450
|
this.getSharedClipKey(),
|
|
@@ -34398,10 +34540,11 @@ class Series {
|
|
|
34398
34540
|
*/
|
|
34399
34541
|
drawPoints(points) {
|
|
34400
34542
|
points || (points = this.points.concat(this.condemnedPoints));
|
|
34401
|
-
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 =
|
|
34402
|
-
|
|
34403
|
-
|
|
34404
|
-
seriesMarkerOptions.
|
|
34543
|
+
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 ??
|
|
34544
|
+
(!xAxis || xAxis.isRadial ? true : null) ??
|
|
34545
|
+
// Use larger or equal as radius is null in bubbles (#6321)
|
|
34546
|
+
((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
|
|
34547
|
+
seriesMarkerOptions.radius));
|
|
34405
34548
|
let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
|
|
34406
34549
|
if (seriesMarkerOptions.enabled !== false ||
|
|
34407
34550
|
series._hasPointMarkers) {
|
|
@@ -34418,8 +34561,10 @@ class Series {
|
|
|
34418
34561
|
// Only draw the point if y is defined
|
|
34419
34562
|
if (shouldDrawMarker) {
|
|
34420
34563
|
// Shortcuts
|
|
34421
|
-
const symbol =
|
|
34422
|
-
|
|
34564
|
+
const symbol = pointMarkerOptions.symbol ??
|
|
34565
|
+
series.symbol ??
|
|
34566
|
+
'rect';
|
|
34567
|
+
markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
|
|
34423
34568
|
const isInside = point.isInside !== false;
|
|
34424
34569
|
if (!graphic &&
|
|
34425
34570
|
isInside &&
|
|
@@ -34484,15 +34629,17 @@ class Series {
|
|
|
34484
34629
|
* A hash containing those attributes that are not settable from CSS.
|
|
34485
34630
|
*/
|
|
34486
34631
|
markerAttribs(point, state) {
|
|
34487
|
-
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34632
|
+
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34488
34633
|
seriesMarkerOptions.symbol), attribs = {};
|
|
34489
|
-
let seriesStateOptions, pointStateOptions, radius =
|
|
34634
|
+
let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
|
|
34635
|
+
seriesMarkerOptions.radius;
|
|
34490
34636
|
// Handle hover and select states
|
|
34491
34637
|
if (state) {
|
|
34492
|
-
seriesStateOptions = seriesMarkerOptions
|
|
34638
|
+
seriesStateOptions = seriesMarkerOptions.states?.[state];
|
|
34493
34639
|
pointStateOptions = pointMarkerOptions.states?.[state];
|
|
34494
|
-
radius =
|
|
34495
|
-
|
|
34640
|
+
radius = pointStateOptions?.radius ??
|
|
34641
|
+
seriesStateOptions?.radius ??
|
|
34642
|
+
(radius && radius + (seriesStateOptions?.radiusPlus || 0));
|
|
34496
34643
|
}
|
|
34497
34644
|
point.hasImage = symbol && symbol.indexOf('url') === 0;
|
|
34498
34645
|
if (point.hasImage) {
|
|
@@ -34505,7 +34652,7 @@ class Series {
|
|
|
34505
34652
|
0 :
|
|
34506
34653
|
symbol === 'rect' ?
|
|
34507
34654
|
// Rectangle symbols need crisp edges, others don't
|
|
34508
|
-
seriesMarkerOptions
|
|
34655
|
+
seriesMarkerOptions.lineWidth || 0 :
|
|
34509
34656
|
1);
|
|
34510
34657
|
}
|
|
34511
34658
|
attribs.x = pos[0] - radius;
|
|
@@ -34536,8 +34683,9 @@ class Series {
|
|
|
34536
34683
|
* The presentational attributes to be set on the point.
|
|
34537
34684
|
*/
|
|
34538
34685
|
pointAttribs(point, state) {
|
|
34539
|
-
const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34540
|
-
let
|
|
34686
|
+
const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34687
|
+
let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
|
|
34688
|
+
seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
|
|
34541
34689
|
color = (pointColorOption ||
|
|
34542
34690
|
zoneColor ||
|
|
34543
34691
|
pointColor ||
|
|
@@ -34550,19 +34698,22 @@ class Series {
|
|
|
34550
34698
|
color);
|
|
34551
34699
|
// Handle hover and select states
|
|
34552
34700
|
state = state || 'normal';
|
|
34553
|
-
|
|
34554
|
-
|
|
34555
|
-
|
|
34556
|
-
|
|
34557
|
-
strokeWidth
|
|
34558
|
-
|
|
34559
|
-
|
|
34560
|
-
|
|
34561
|
-
|
|
34562
|
-
|
|
34563
|
-
|
|
34564
|
-
|
|
34565
|
-
|
|
34701
|
+
const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
|
|
34702
|
+
const pointStateOptions = pointMarkerOptions.states?.[state] || {};
|
|
34703
|
+
strokeWidth = pointStateOptions.lineWidth ??
|
|
34704
|
+
seriesStateOptions.lineWidth ??
|
|
34705
|
+
(strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
|
|
34706
|
+
seriesStateOptions.lineWidthPlus ??
|
|
34707
|
+
0);
|
|
34708
|
+
fill = (pointStateOptions.fillColor ||
|
|
34709
|
+
seriesStateOptions.fillColor ||
|
|
34710
|
+
fill);
|
|
34711
|
+
stroke = (pointStateOptions.lineColor ||
|
|
34712
|
+
seriesStateOptions.lineColor ||
|
|
34713
|
+
stroke);
|
|
34714
|
+
opacity = (pointStateOptions.opacity ??
|
|
34715
|
+
seriesStateOptions.opacity ??
|
|
34716
|
+
opacity);
|
|
34566
34717
|
return {
|
|
34567
34718
|
'stroke': stroke,
|
|
34568
34719
|
'stroke-width': strokeWidth,
|
|
@@ -34601,7 +34752,7 @@ class Series {
|
|
|
34601
34752
|
// Destroy all points with their elements
|
|
34602
34753
|
i = data.length;
|
|
34603
34754
|
while (i--) {
|
|
34604
|
-
data[i]?.destroy?.();
|
|
34755
|
+
data[i]?.destroy?.(true);
|
|
34605
34756
|
}
|
|
34606
34757
|
for (const zone of series.zones || []) {
|
|
34607
34758
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -34628,7 +34779,7 @@ class Series {
|
|
|
34628
34779
|
erase(chart.series, series);
|
|
34629
34780
|
chart.orderItems('series');
|
|
34630
34781
|
// Clear all members
|
|
34631
|
-
objectEach(series, function (
|
|
34782
|
+
objectEach(series, function (_val, prop) {
|
|
34632
34783
|
if (!keepEventsForUpdate || prop !== 'hcEvents') {
|
|
34633
34784
|
delete series[prop];
|
|
34634
34785
|
}
|
|
@@ -34680,7 +34831,7 @@ class Series {
|
|
|
34680
34831
|
// Reset
|
|
34681
34832
|
zones.forEach((zone) => {
|
|
34682
34833
|
zone.lineClip = [];
|
|
34683
|
-
zone.translated = clamp(axis.toPixels(
|
|
34834
|
+
zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
|
|
34684
34835
|
});
|
|
34685
34836
|
// The use of the Color Threshold assumes there are no gaps so it is
|
|
34686
34837
|
// safe to hide the original graph and area unless it is not
|
|
@@ -34904,7 +35055,7 @@ class Series {
|
|
|
34904
35055
|
* @emits Highcharts.Series#event:afterRender
|
|
34905
35056
|
*/
|
|
34906
35057
|
render() {
|
|
34907
|
-
const series = this, { chart, options, hasRendered } = series, animOptions =
|
|
35058
|
+
const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
|
|
34908
35059
|
'inherit' : 'hidden', // #2597
|
|
34909
35060
|
zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
|
|
34910
35061
|
let animDuration = series.finishedAnimating ?
|
|
@@ -35006,7 +35157,7 @@ class Series {
|
|
|
35006
35157
|
*
|
|
35007
35158
|
* @function Highcharts.Series#searchPoint
|
|
35008
35159
|
*
|
|
35009
|
-
* @param {
|
|
35160
|
+
* @param {PointerEvent} e
|
|
35010
35161
|
* The normalized pointer event
|
|
35011
35162
|
* @param {boolean} [compareX=false]
|
|
35012
35163
|
* Search only by the X value, not Y
|
|
@@ -35038,7 +35189,7 @@ class Series {
|
|
|
35038
35189
|
// Prevent multiple k-d-trees from being built simultaneously
|
|
35039
35190
|
// (#6235)
|
|
35040
35191
|
this.buildingKdTree = true;
|
|
35041
|
-
const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
|
|
35192
|
+
const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
|
|
35042
35193
|
.indexOf('y') > -1 ? 2 : 1;
|
|
35043
35194
|
/**
|
|
35044
35195
|
* Internal function
|
|
@@ -35088,7 +35239,7 @@ class Series {
|
|
|
35088
35239
|
* The point to search for.
|
|
35089
35240
|
* @param {boolean} [compareX=false]
|
|
35090
35241
|
* Search only by the X value, not Y.
|
|
35091
|
-
* @param {
|
|
35242
|
+
* @param {PointerEvent} [e]
|
|
35092
35243
|
* The normalized pointer event.
|
|
35093
35244
|
* @param {Function} [suppliedPointEvaluator]
|
|
35094
35245
|
* A custom point evaluator function.
|
|
@@ -35294,11 +35445,13 @@ class Series {
|
|
|
35294
35445
|
* Both X and Y values given
|
|
35295
35446
|
* @sample highcharts/members/series-addpoint-pie/
|
|
35296
35447
|
* Append pie slice
|
|
35297
|
-
* @sample
|
|
35448
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
35449
|
+
* Alternative approach with data table
|
|
35450
|
+
* @sample {highstock} stock/members/series-addpoint/
|
|
35298
35451
|
* Append 100 points in Highcharts Stock
|
|
35299
|
-
* @sample stock/members/series-addpoint-shift/
|
|
35452
|
+
* @sample {highstock} stock/members/series-addpoint-shift/
|
|
35300
35453
|
* Append and shift in Highcharts Stock
|
|
35301
|
-
* @sample maps/members/series-addpoint/
|
|
35454
|
+
* @sample {highmaps} maps/members/series-addpoint/
|
|
35302
35455
|
* Add a point in Highmaps
|
|
35303
35456
|
*
|
|
35304
35457
|
* @function Highcharts.Series#addPoint
|
|
@@ -35334,7 +35487,7 @@ class Series {
|
|
|
35334
35487
|
const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
|
|
35335
35488
|
let isInTheMiddle, i;
|
|
35336
35489
|
// Optional redraw, defaults to true
|
|
35337
|
-
redraw =
|
|
35490
|
+
redraw = (redraw ?? true);
|
|
35338
35491
|
// Get options and push the point to xData, yData and series.options. In
|
|
35339
35492
|
// series.generatePoints the Point instance will be created on demand
|
|
35340
35493
|
// and pushed to the series.data array.
|
|
@@ -35444,8 +35597,8 @@ class Series {
|
|
|
35444
35597
|
chart.redraw();
|
|
35445
35598
|
}
|
|
35446
35599
|
};
|
|
35447
|
-
|
|
35448
|
-
redraw =
|
|
35600
|
+
setAnimation(animation, chart);
|
|
35601
|
+
redraw = (redraw ?? true);
|
|
35449
35602
|
// Fire the event with a default handler of removing the point
|
|
35450
35603
|
if (point) {
|
|
35451
35604
|
point.firePointEvent('remove', null, remove);
|
|
@@ -35488,7 +35641,7 @@ class Series {
|
|
|
35488
35641
|
// Redraw
|
|
35489
35642
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
35490
35643
|
chart.linkSeries(keepEvents);
|
|
35491
|
-
if (
|
|
35644
|
+
if (redraw ?? true) {
|
|
35492
35645
|
chart.redraw(animation);
|
|
35493
35646
|
}
|
|
35494
35647
|
}
|
|
@@ -35705,7 +35858,7 @@ class Series {
|
|
|
35705
35858
|
series.isDirtyData = true;
|
|
35706
35859
|
}
|
|
35707
35860
|
fireEvent(this, 'afterUpdate');
|
|
35708
|
-
if (
|
|
35861
|
+
if (redraw ?? true) {
|
|
35709
35862
|
chart.redraw(keepPoints ? void 0 : false);
|
|
35710
35863
|
}
|
|
35711
35864
|
}
|
|
@@ -35722,12 +35875,12 @@ class Series {
|
|
|
35722
35875
|
* @internal
|
|
35723
35876
|
*/
|
|
35724
35877
|
hasOptionChanged(optionName) {
|
|
35725
|
-
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption =
|
|
35878
|
+
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
|
|
35726
35879
|
// Check if `plotOptions` are defined already, #19203
|
|
35727
35880
|
if (oldOption && !defined(plotOptionsOption)) {
|
|
35728
35881
|
return option !== oldOption;
|
|
35729
35882
|
}
|
|
35730
|
-
return option !==
|
|
35883
|
+
return option !== (plotOptionsOption ?? option);
|
|
35731
35884
|
}
|
|
35732
35885
|
/**
|
|
35733
35886
|
* Runs on mouse over the series graphical items.
|
|
@@ -35798,10 +35951,11 @@ class Series {
|
|
|
35798
35951
|
* Determines if state should be inherited by points too.
|
|
35799
35952
|
*/
|
|
35800
35953
|
setState(state, inherit) {
|
|
35801
|
-
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
|
|
35954
|
+
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
|
|
35802
35955
|
// By default a quick animation to hover/inactive,
|
|
35803
35956
|
// slower to un-hover
|
|
35804
|
-
stateAnimation =
|
|
35957
|
+
stateAnimation = stateOptions[state || 'normal']?.animation ??
|
|
35958
|
+
series.chart.options.chart.animation;
|
|
35805
35959
|
let { lineWidth, opacity } = options;
|
|
35806
35960
|
state = state || '';
|
|
35807
35961
|
if (series.state !== state) {
|
|
@@ -35828,9 +35982,13 @@ class Series {
|
|
|
35828
35982
|
return;
|
|
35829
35983
|
}
|
|
35830
35984
|
if (state) {
|
|
35831
|
-
lineWidth =
|
|
35832
|
-
|
|
35833
|
-
|
|
35985
|
+
lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
|
|
35986
|
+
void 0 :
|
|
35987
|
+
// Increase by lineWidthPlus only when lineWidth
|
|
35988
|
+
// is a number.
|
|
35989
|
+
(lineWidth +
|
|
35990
|
+
(stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
|
|
35991
|
+
opacity = stateOptions[state]?.opacity ?? opacity;
|
|
35834
35992
|
}
|
|
35835
35993
|
if (graph && !graph.dashstyle && isNumber(lineWidth)) {
|
|
35836
35994
|
// Animate the graph stroke-width
|
|
@@ -35874,11 +36032,7 @@ class Series {
|
|
|
35874
36032
|
* Can be either `hover` or undefined to set to normal state.
|
|
35875
36033
|
*/
|
|
35876
36034
|
setAllPointsToState(state) {
|
|
35877
|
-
this.points.forEach(
|
|
35878
|
-
if (point.setState) {
|
|
35879
|
-
point.setState(state);
|
|
35880
|
-
}
|
|
35881
|
-
});
|
|
36035
|
+
this.points.forEach((point) => point.setState?.(state));
|
|
35882
36036
|
}
|
|
35883
36037
|
/**
|
|
35884
36038
|
* Show or hide the series.
|
|
@@ -36559,7 +36713,6 @@ Series_SeriesRegistry.series = Series;
|
|
|
36559
36713
|
* */
|
|
36560
36714
|
|
|
36561
36715
|
|
|
36562
|
-
const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
|
|
36563
36716
|
|
|
36564
36717
|
const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
|
|
36565
36718
|
|
|
@@ -36688,7 +36841,7 @@ class Legend {
|
|
|
36688
36841
|
* @param {Highcharts.LegendOptions} options
|
|
36689
36842
|
*/
|
|
36690
36843
|
setOptions(options) {
|
|
36691
|
-
const padding =
|
|
36844
|
+
const padding = (options.padding ?? 8);
|
|
36692
36845
|
/**
|
|
36693
36846
|
* Legend options.
|
|
36694
36847
|
*
|
|
@@ -36705,7 +36858,7 @@ class Legend {
|
|
|
36705
36858
|
this.itemMarginBottom = options.itemMarginBottom;
|
|
36706
36859
|
this.padding = padding;
|
|
36707
36860
|
this.initialItemY = padding - 5; // 5 is pixels above the text
|
|
36708
|
-
this.symbolWidth =
|
|
36861
|
+
this.symbolWidth = (options.symbolWidth ?? 16);
|
|
36709
36862
|
this.pages = [];
|
|
36710
36863
|
this.proximate = options.layout === 'proximate' && !this.chart.inverted;
|
|
36711
36864
|
// #12705: baseline has to be reset on every update
|
|
@@ -36739,7 +36892,7 @@ class Legend {
|
|
|
36739
36892
|
}
|
|
36740
36893
|
this.destroy();
|
|
36741
36894
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
36742
|
-
if (
|
|
36895
|
+
if (redraw ?? true) {
|
|
36743
36896
|
chart.redraw();
|
|
36744
36897
|
}
|
|
36745
36898
|
fireEvent(this, 'afterUpdate', { redraw });
|
|
@@ -36977,7 +37130,7 @@ class Legend {
|
|
|
36977
37130
|
* The item to render.
|
|
36978
37131
|
*/
|
|
36979
37132
|
renderItem(item) {
|
|
36980
|
-
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 ?
|
|
37133
|
+
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 ?
|
|
36981
37134
|
item.series :
|
|
36982
37135
|
item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
|
|
36983
37136
|
seriesOptions &&
|
|
@@ -37023,9 +37176,11 @@ class Legend {
|
|
|
37023
37176
|
legend.fontMetrics.f + 3 + legend.itemMarginTop;
|
|
37024
37177
|
label.attr('y', legend.baseline);
|
|
37025
37178
|
legend.symbolHeight =
|
|
37026
|
-
|
|
37179
|
+
(options.symbolHeight ?? legend.fontMetrics.f);
|
|
37027
37180
|
if (options.squareSymbol) {
|
|
37028
|
-
legend.symbolWidth =
|
|
37181
|
+
legend.symbolWidth =
|
|
37182
|
+
options.symbolWidth ??
|
|
37183
|
+
Math.max(legend.symbolHeight, 16);
|
|
37029
37184
|
itemExtraWidth = legend.symbolWidth + symbolPadding +
|
|
37030
37185
|
itemDistance + (showCheckbox ? 20 : 0);
|
|
37031
37186
|
if (ltr) {
|
|
@@ -37077,7 +37232,7 @@ class Legend {
|
|
|
37077
37232
|
* @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
|
|
37078
37233
|
*/
|
|
37079
37234
|
layoutItem(item) {
|
|
37080
|
-
const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ?
|
|
37235
|
+
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 &&
|
|
37081
37236
|
this.totalItemWidth > maxLegendWidth) ?
|
|
37082
37237
|
this.maxItemWidth :
|
|
37083
37238
|
item.itemWidth, legendItem = item.legendItem || {};
|
|
@@ -37131,7 +37286,9 @@ class Legend {
|
|
|
37131
37286
|
const seriesOptions = series?.options;
|
|
37132
37287
|
// Handle showInLegend. If the series is linked to another series,
|
|
37133
37288
|
// defaults to false.
|
|
37134
|
-
if (series &&
|
|
37289
|
+
if (series &&
|
|
37290
|
+
(seriesOptions.showInLegend ??
|
|
37291
|
+
(!defined(seriesOptions.linkedTo)))) {
|
|
37135
37292
|
// Use points or series for the legend item depending on
|
|
37136
37293
|
// legendType
|
|
37137
37294
|
allItems = allItems.concat(series.legendItem?.labels ||
|
|
@@ -37413,7 +37570,7 @@ class Legend {
|
|
|
37413
37570
|
* @function Highcharts.Legend#handleOverflow
|
|
37414
37571
|
*/
|
|
37415
37572
|
handleOverflow(legendHeight) {
|
|
37416
|
-
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 =
|
|
37573
|
+
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) {
|
|
37417
37574
|
if (typeof height === 'number') {
|
|
37418
37575
|
clipRect.attr({
|
|
37419
37576
|
height: height
|
|
@@ -37459,7 +37616,7 @@ class Legend {
|
|
|
37459
37616
|
navOptions.enabled !== false) {
|
|
37460
37617
|
this.clipHeight = clipHeight =
|
|
37461
37618
|
Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
|
|
37462
|
-
this.currentPage =
|
|
37619
|
+
this.currentPage = (this.currentPage ?? 1);
|
|
37463
37620
|
this.fullHeight = legendHeight;
|
|
37464
37621
|
// Fill pages with Y positions so that the top of each a legend item
|
|
37465
37622
|
// defines the scroll top for each page (#2098)
|
|
@@ -37562,7 +37719,7 @@ class Legend {
|
|
|
37562
37719
|
}
|
|
37563
37720
|
if (currentPage > 0) {
|
|
37564
37721
|
if (typeof animation !== 'undefined') {
|
|
37565
|
-
|
|
37722
|
+
setAnimation(animation, chart);
|
|
37566
37723
|
}
|
|
37567
37724
|
this.nav.attr({
|
|
37568
37725
|
translateX: padding,
|
|
@@ -37619,7 +37776,7 @@ class Legend {
|
|
|
37619
37776
|
this.currentPage = currentPage;
|
|
37620
37777
|
this.positionCheckboxes();
|
|
37621
37778
|
// Fire event after scroll animation is complete
|
|
37622
|
-
const animOptions =
|
|
37779
|
+
const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
|
|
37623
37780
|
syncTimeout(() => {
|
|
37624
37781
|
fireEvent(this, 'afterScroll', { currentPage });
|
|
37625
37782
|
}, animOptions.duration);
|
|
@@ -37829,7 +37986,7 @@ class Legend {
|
|
|
37829
37986
|
*/ /**
|
|
37830
37987
|
* Related browser event.
|
|
37831
37988
|
* @name Highcharts.LegendItemClickEventObject#browserEvent
|
|
37832
|
-
* @type {
|
|
37989
|
+
* @type {PointerEvent}
|
|
37833
37990
|
*/ /**
|
|
37834
37991
|
* Prevent the default action of toggle the visibility of the series or point.
|
|
37835
37992
|
* @name Highcharts.LegendItemClickEventObject#preventDefault
|
|
@@ -37880,7 +38037,7 @@ class Legend {
|
|
|
37880
38037
|
*/ /**
|
|
37881
38038
|
* Related browser event.
|
|
37882
38039
|
* @name Highcharts.PointLegendItemClickEventObject#browserEvent
|
|
37883
|
-
* @type {
|
|
38040
|
+
* @type {PointerEvent}
|
|
37884
38041
|
*/ /**
|
|
37885
38042
|
* Whether the default action has been prevented (`true`) or not.
|
|
37886
38043
|
* @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
|
|
@@ -37936,7 +38093,7 @@ class Legend {
|
|
|
37936
38093
|
*/ /**
|
|
37937
38094
|
* Related browser event.
|
|
37938
38095
|
* @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
|
|
37939
|
-
* @type {
|
|
38096
|
+
* @type {PointerEvent}
|
|
37940
38097
|
*/ /**
|
|
37941
38098
|
* Whether the default action has been prevented (`true`) or not.
|
|
37942
38099
|
* @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
|
|
@@ -37970,7 +38127,6 @@ class Legend {
|
|
|
37970
38127
|
* */
|
|
37971
38128
|
|
|
37972
38129
|
|
|
37973
|
-
const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
|
|
37974
38130
|
|
|
37975
38131
|
|
|
37976
38132
|
const { defaultOptions: Chart_defaultOptions } = Defaults;
|
|
@@ -38061,7 +38217,7 @@ class Chart {
|
|
|
38061
38217
|
*/
|
|
38062
38218
|
static chart(a, b, c) {
|
|
38063
38219
|
const chart = new Chart(a, b, c);
|
|
38064
|
-
return chart.promise
|
|
38220
|
+
return chart.promise ?? chart;
|
|
38065
38221
|
}
|
|
38066
38222
|
// Implementation
|
|
38067
38223
|
constructor(a,
|
|
@@ -38102,10 +38258,10 @@ class Chart {
|
|
|
38102
38258
|
const chart = this, options = chart.options.chart, zooming = options.zooming;
|
|
38103
38259
|
chart.zooming = {
|
|
38104
38260
|
...zooming,
|
|
38105
|
-
type:
|
|
38106
|
-
key:
|
|
38107
|
-
pinchType:
|
|
38108
|
-
singleTouch:
|
|
38261
|
+
type: (options.zoomType ?? zooming.type),
|
|
38262
|
+
key: (options.zoomKey ?? zooming.key),
|
|
38263
|
+
pinchType: (options.pinchType ?? zooming.pinchType),
|
|
38264
|
+
singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
|
|
38109
38265
|
resetButton: merge(zooming.resetButton, options.resetZoomButton)
|
|
38110
38266
|
};
|
|
38111
38267
|
}
|
|
@@ -38448,7 +38604,7 @@ class Chart {
|
|
|
38448
38604
|
redraw(animation) {
|
|
38449
38605
|
fireEvent(this, 'beforeRedraw');
|
|
38450
38606
|
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 = [];
|
|
38451
|
-
let hasDirtyStacks, hasStackedSeries, i,
|
|
38607
|
+
let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
|
|
38452
38608
|
renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
|
|
38453
38609
|
// Handle responsive rules, not only on resize (#6130)
|
|
38454
38610
|
if (chart.setResponsive) {
|
|
@@ -38457,7 +38613,7 @@ class Chart {
|
|
|
38457
38613
|
// Set the global animation. When chart.hasRendered is not true, the
|
|
38458
38614
|
// redraw call comes from a responsive rule and animation should not
|
|
38459
38615
|
// occur.
|
|
38460
|
-
|
|
38616
|
+
setAnimation(chart.hasRendered ? animation : false, chart);
|
|
38461
38617
|
if (isHiddenChart) {
|
|
38462
38618
|
chart.temporaryDisplay();
|
|
38463
38619
|
}
|
|
@@ -38520,6 +38676,7 @@ class Chart {
|
|
|
38520
38676
|
});
|
|
38521
38677
|
chart.getMargins(); // #3098
|
|
38522
38678
|
// If one axis is dirty, all axes must be redrawn (#792, #2169)
|
|
38679
|
+
let isDirtyBox = chart.isDirtyBox;
|
|
38523
38680
|
axes.forEach(function (axis) {
|
|
38524
38681
|
if (axis.isDirty) {
|
|
38525
38682
|
isDirtyBox = true;
|
|
@@ -38656,7 +38813,7 @@ class Chart {
|
|
|
38656
38813
|
// inspect the generated series.points.
|
|
38657
38814
|
series.getPointsCollection()
|
|
38658
38815
|
.forEach((point) => {
|
|
38659
|
-
if (
|
|
38816
|
+
if (point.selectedStaging ?? point.selected) {
|
|
38660
38817
|
acc.push(point);
|
|
38661
38818
|
}
|
|
38662
38819
|
});
|
|
@@ -39055,11 +39212,8 @@ class Chart {
|
|
|
39055
39212
|
const chartHeight = chart.chartHeight;
|
|
39056
39213
|
let chartWidth = chart.chartWidth;
|
|
39057
39214
|
// Allow table cells and flex-boxes to shrink without the chart
|
|
39058
|
-
// blocking them out (#6427)
|
|
39059
|
-
|
|
39060
|
-
if (!chart.styledMode) {
|
|
39061
|
-
css(renderTo, { overflow: 'hidden' });
|
|
39062
|
-
}
|
|
39215
|
+
// blocking them out (#6427)
|
|
39216
|
+
css(renderTo, { overflow: 'hidden' });
|
|
39063
39217
|
// Create the inner container
|
|
39064
39218
|
if (!chart.styledMode) {
|
|
39065
39219
|
containerStyle = extend({
|
|
@@ -39097,7 +39251,7 @@ class Chart {
|
|
|
39097
39251
|
chartWidth = chart.chartWidth;
|
|
39098
39252
|
if (!chart.styledMode) {
|
|
39099
39253
|
css(container, {
|
|
39100
|
-
width:
|
|
39254
|
+
width: (optionsChart.style?.width ?? chartWidth + 'px')
|
|
39101
39255
|
});
|
|
39102
39256
|
}
|
|
39103
39257
|
}
|
|
@@ -39116,7 +39270,7 @@ class Chart {
|
|
|
39116
39270
|
// first ResizeObserver reflow
|
|
39117
39271
|
chart.containerBox = chart.getContainerBox();
|
|
39118
39272
|
// Set the initial animation from the options
|
|
39119
|
-
|
|
39273
|
+
setAnimation(void 0, chart);
|
|
39120
39274
|
chart.setClassName(optionsChart.className);
|
|
39121
39275
|
if (!chart.styledMode) {
|
|
39122
39276
|
chart.renderer.setStyle(optionsChart.style);
|
|
@@ -39311,7 +39465,7 @@ class Chart {
|
|
|
39311
39465
|
// Handle the isResizing counter
|
|
39312
39466
|
chart.isResizing += 1;
|
|
39313
39467
|
// Set the animation for the current process
|
|
39314
|
-
|
|
39468
|
+
setAnimation(animation, chart);
|
|
39315
39469
|
const globalAnimation = renderer.globalAnimation;
|
|
39316
39470
|
chart.oldChartHeight = chart.chartHeight;
|
|
39317
39471
|
chart.oldChartWidth = chart.chartWidth;
|
|
@@ -39330,7 +39484,7 @@ class Chart {
|
|
|
39330
39484
|
// Resize the container with the global animation applied if enabled
|
|
39331
39485
|
// (#2503)
|
|
39332
39486
|
if (!chart.styledMode) {
|
|
39333
|
-
(globalAnimation ?
|
|
39487
|
+
(globalAnimation ? animate : css)(chart.container, {
|
|
39334
39488
|
width: `${chartWidth + scrollablePixelsX}px`,
|
|
39335
39489
|
height: `${chartHeight + scrollablePixelsY}px`
|
|
39336
39490
|
}, globalAnimation);
|
|
@@ -39356,7 +39510,7 @@ class Chart {
|
|
|
39356
39510
|
if (chart) {
|
|
39357
39511
|
fireEvent(chart, 'endResize');
|
|
39358
39512
|
}
|
|
39359
|
-
},
|
|
39513
|
+
}, animObject(globalAnimation).duration);
|
|
39360
39514
|
}
|
|
39361
39515
|
// Handle resizing counter even if we've re-rendered or not (#20548).
|
|
39362
39516
|
chart.isResizing -= 1;
|
|
@@ -39740,7 +39894,7 @@ class Chart {
|
|
|
39740
39894
|
const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
|
|
39741
39895
|
mockTick.destroy();
|
|
39742
39896
|
if (label &&
|
|
39743
|
-
|
|
39897
|
+
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39744
39898
|
expectedSpace = label.getBBox().height +
|
|
39745
39899
|
labels.distance +
|
|
39746
39900
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
@@ -40075,7 +40229,7 @@ class Chart {
|
|
|
40075
40229
|
const chart = this;
|
|
40076
40230
|
let series;
|
|
40077
40231
|
if (options) { // <- not necessary
|
|
40078
|
-
redraw =
|
|
40232
|
+
redraw = (redraw ?? true); // Defaults to true
|
|
40079
40233
|
fireEvent(chart, 'addSeries', { options: options }, function () {
|
|
40080
40234
|
series = chart.initSeries(options);
|
|
40081
40235
|
chart.isDirtyLegend = true;
|
|
@@ -40166,7 +40320,7 @@ class Chart {
|
|
|
40166
40320
|
*/
|
|
40167
40321
|
createAxis(coll, options) {
|
|
40168
40322
|
const axis = new Axis_Axis(this, options.axis, coll);
|
|
40169
|
-
if (
|
|
40323
|
+
if (options.redraw ?? true) {
|
|
40170
40324
|
this.redraw(options.animation);
|
|
40171
40325
|
}
|
|
40172
40326
|
return axis;
|
|
@@ -40214,7 +40368,7 @@ class Chart {
|
|
|
40214
40368
|
}
|
|
40215
40369
|
loadingDiv.className = 'highcharts-loading';
|
|
40216
40370
|
// Update text
|
|
40217
|
-
HTML_AST.setElementHTML(loadingSpan,
|
|
40371
|
+
HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
|
|
40218
40372
|
if (!chart.styledMode) {
|
|
40219
40373
|
// Update visuals
|
|
40220
40374
|
css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
|
|
@@ -40225,7 +40379,7 @@ class Chart {
|
|
|
40225
40379
|
opacity: 0,
|
|
40226
40380
|
display: ''
|
|
40227
40381
|
});
|
|
40228
|
-
|
|
40382
|
+
animate(loadingDiv, {
|
|
40229
40383
|
opacity: loadingStyle.opacity ?? 0.5
|
|
40230
40384
|
}, {
|
|
40231
40385
|
duration: loadingOptions?.showDuration ?? 0
|
|
@@ -40253,7 +40407,7 @@ class Chart {
|
|
|
40253
40407
|
loadingDiv.className =
|
|
40254
40408
|
'highcharts-loading highcharts-loading-hidden';
|
|
40255
40409
|
if (!this.styledMode) {
|
|
40256
|
-
|
|
40410
|
+
animate(loadingDiv, {
|
|
40257
40411
|
opacity: 0
|
|
40258
40412
|
}, {
|
|
40259
40413
|
duration: options.loading?.hideDuration ?? 100,
|
|
@@ -40285,6 +40439,9 @@ class Chart {
|
|
|
40285
40439
|
* Note that when changing series data, `chart.update` may mutate the passed
|
|
40286
40440
|
* data options.
|
|
40287
40441
|
*
|
|
40442
|
+
* If the given options don't differ from the current chart options, the
|
|
40443
|
+
* update is skipped and the `afterUpdate` event is not emitted.
|
|
40444
|
+
*
|
|
40288
40445
|
* See also the
|
|
40289
40446
|
* [responsive option set](https://api.highcharts.com/highcharts/responsive).
|
|
40290
40447
|
* Switching between `responsive.rules` basically runs `chart.update` under
|
|
@@ -40329,14 +40486,24 @@ class Chart {
|
|
|
40329
40486
|
caption: 'setCaption'
|
|
40330
40487
|
}, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
|
|
40331
40488
|
let updateAllAxes, updateAllSeries, runSetSize;
|
|
40332
|
-
|
|
40489
|
+
options = diffObjects(options, chart.options);
|
|
40490
|
+
const e = {
|
|
40491
|
+
options,
|
|
40492
|
+
// Event handlers can turn this on or off to control further
|
|
40493
|
+
// processing
|
|
40494
|
+
hasChanged: !!Object.keys(options).length
|
|
40495
|
+
};
|
|
40496
|
+
fireEvent(chart, 'update', e);
|
|
40497
|
+
// If no changes are detected, stop further processing (#24805).
|
|
40498
|
+
if (!e.hasChanged) {
|
|
40499
|
+
return;
|
|
40500
|
+
}
|
|
40333
40501
|
// If there are responsive rules in action, undo the responsive rules
|
|
40334
40502
|
// before we apply the updated options and replay the responsive rules
|
|
40335
40503
|
// on top from the chart.redraw function (#9617).
|
|
40336
40504
|
if (!isResponsiveOptions) {
|
|
40337
40505
|
chart.setResponsive(false, true);
|
|
40338
40506
|
}
|
|
40339
|
-
options = diffObjects(options, chart.options);
|
|
40340
40507
|
chart.userOptions = merge(chart.userOptions, options);
|
|
40341
40508
|
// If the top-level chart option is present, some special updates are
|
|
40342
40509
|
// required
|
|
@@ -40439,7 +40606,7 @@ class Chart {
|
|
|
40439
40606
|
}
|
|
40440
40607
|
// No match by id found, match by index instead
|
|
40441
40608
|
if (!item && chart[coll]) {
|
|
40442
|
-
item = chart[coll][
|
|
40609
|
+
item = chart[coll][(newOptions.index ?? i)];
|
|
40443
40610
|
// Check if we grabbed an item with an existing but
|
|
40444
40611
|
// different id (#13541). Check that the item in this
|
|
40445
40612
|
// position is not internal (navigator).
|
|
@@ -40515,7 +40682,7 @@ class Chart {
|
|
|
40515
40682
|
(isNumber(newHeight) && newHeight !== chart.chartHeight)) {
|
|
40516
40683
|
chart.setSize(newWidth, newHeight, animation);
|
|
40517
40684
|
}
|
|
40518
|
-
else if (
|
|
40685
|
+
else if (redraw ?? true) {
|
|
40519
40686
|
chart.redraw(animation);
|
|
40520
40687
|
}
|
|
40521
40688
|
fireEvent(chart, 'afterUpdate', {
|
|
@@ -40564,15 +40731,11 @@ class Chart {
|
|
|
40564
40731
|
showResetZoom() {
|
|
40565
40732
|
const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
|
|
40566
40733
|
btnOptions.relativeTo === 'spacingBox' ?
|
|
40567
|
-
|
|
40734
|
+
void 0 :
|
|
40568
40735
|
'plotBox');
|
|
40569
|
-
|
|
40570
|
-
function zoomOut() {
|
|
40571
|
-
chart.zoomOut();
|
|
40572
|
-
}
|
|
40573
|
-
fireEvent(this, 'beforeShowResetZoom', null, function () {
|
|
40736
|
+
fireEvent(this, 'beforeShowResetZoom', void 0, () => {
|
|
40574
40737
|
chart.resetZoomButton = chart.renderer
|
|
40575
|
-
.button(lang.resetZoom,
|
|
40738
|
+
.button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
|
|
40576
40739
|
.attr({
|
|
40577
40740
|
align: btnOptions.position.align,
|
|
40578
40741
|
title: lang.resetZoomTitle
|
|
@@ -40650,21 +40813,21 @@ class Chart {
|
|
|
40650
40813
|
* @function Highcharts.Chart#transform
|
|
40651
40814
|
*/
|
|
40652
40815
|
transform(params) {
|
|
40653
|
-
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, {
|
|
40816
|
+
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
|
|
40654
40817
|
// Remove active points for shared tooltip
|
|
40655
40818
|
this.hoverPoints?.forEach((point) => point.setState());
|
|
40656
40819
|
fireEvent(this, 'transform', params);
|
|
40657
40820
|
let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
|
|
40658
40821
|
for (const axis of axes) {
|
|
40659
|
-
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength =
|
|
40822
|
+
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),
|
|
40660
40823
|
// If fingers pinched very close on this axis, treat as pan
|
|
40661
40824
|
scale = Math.abs(toLength) < 10 ?
|
|
40662
40825
|
1 :
|
|
40663
40826
|
toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
|
|
40664
|
-
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (
|
|
40665
|
-
(!
|
|
40666
|
-
|
|
40667
|
-
1, minPx = move;
|
|
40827
|
+
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
|
|
40828
|
+
(!horiz && reversed)) ?
|
|
40829
|
+
1 :
|
|
40830
|
+
-1, minPx = move;
|
|
40668
40831
|
// Zooming in multiple panes, zoom only in the pane that receives
|
|
40669
40832
|
// the input
|
|
40670
40833
|
if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
|
|
@@ -40673,17 +40836,11 @@ class Chart {
|
|
|
40673
40836
|
// Adjust offset to ensure selection zoom triggers correctly
|
|
40674
40837
|
// (#22945)
|
|
40675
40838
|
// Set offset to 0 for ordinal axis only when zooming out, (#24545).
|
|
40676
|
-
const offset = (axis.chart.polar ||
|
|
40839
|
+
const offset = (selection || axis.chart.polar ||
|
|
40840
|
+
(axis.isOrdinal && scale <= 1)) ?
|
|
40677
40841
|
0 :
|
|
40678
40842
|
(minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
|
|
40679
40843
|
let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
|
|
40680
|
-
if (selection) {
|
|
40681
|
-
selection[axis.coll].push({
|
|
40682
|
-
axis,
|
|
40683
|
-
min: Math.min(eventMin, eventMax),
|
|
40684
|
-
max: Math.max(eventMin, eventMax)
|
|
40685
|
-
});
|
|
40686
|
-
}
|
|
40687
40844
|
if (newMin > newMax) {
|
|
40688
40845
|
[newMin, newMax] = [newMax, newMin];
|
|
40689
40846
|
}
|
|
@@ -40740,14 +40897,15 @@ class Chart {
|
|
|
40740
40897
|
}
|
|
40741
40898
|
// Set new extremes if they are actually new
|
|
40742
40899
|
if (reset || (axis.series.length &&
|
|
40743
|
-
(
|
|
40744
|
-
|
|
40745
|
-
|
|
40900
|
+
(selection ||
|
|
40901
|
+
((newMin !== min || newMax !== max) &&
|
|
40902
|
+
newMin >= floor &&
|
|
40903
|
+
newMax <= ceiling)))) {
|
|
40746
40904
|
if (selection) {
|
|
40747
40905
|
selection[axis.coll].push({
|
|
40748
40906
|
axis,
|
|
40749
|
-
min:
|
|
40750
|
-
max:
|
|
40907
|
+
min: Math.min(eventMin, eventMax),
|
|
40908
|
+
max: Math.max(eventMin, eventMax)
|
|
40751
40909
|
});
|
|
40752
40910
|
}
|
|
40753
40911
|
else {
|
|
@@ -40755,11 +40913,14 @@ class Chart {
|
|
|
40755
40913
|
// disallow certain axis padding options that would make
|
|
40756
40914
|
// panning/zooming hard. Reset and redraw after the
|
|
40757
40915
|
// operation has finished.
|
|
40758
|
-
axis.isPanning = trigger !== 'zoom'
|
|
40916
|
+
axis.isPanning = trigger !== 'zoom' &&
|
|
40917
|
+
trigger !== 'drop';
|
|
40759
40918
|
if (axis.isPanning && trigger !== 'mousewheel') {
|
|
40760
40919
|
isAnyAxisPanning = true; // #21319
|
|
40761
40920
|
}
|
|
40762
|
-
|
|
40921
|
+
if (trigger !== 'drop') {
|
|
40922
|
+
axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
|
|
40923
|
+
}
|
|
40763
40924
|
if (!reset &&
|
|
40764
40925
|
(newMin > floor || newMax < ceiling)) {
|
|
40765
40926
|
displayButton = allowResetButton;
|
|
@@ -40790,7 +40951,8 @@ class Chart {
|
|
|
40790
40951
|
});
|
|
40791
40952
|
}
|
|
40792
40953
|
else {
|
|
40793
|
-
// Show or hide the Reset zoom button, but not while
|
|
40954
|
+
// Show or hide the Reset zoom button, but not while
|
|
40955
|
+
// panning.
|
|
40794
40956
|
if (displayButton &&
|
|
40795
40957
|
!isAnyAxisPanning &&
|
|
40796
40958
|
!this.resetZoomButton) {
|
|
@@ -41032,7 +41194,6 @@ extend(Chart.prototype, {
|
|
|
41032
41194
|
*/
|
|
41033
41195
|
|
|
41034
41196
|
|
|
41035
|
-
const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
|
|
41036
41197
|
|
|
41037
41198
|
const { composed: ScrollablePlotArea_composed } = Core_Globals;
|
|
41038
41199
|
|
|
@@ -41198,7 +41359,7 @@ class ScrollablePlotArea {
|
|
|
41198
41359
|
this.moveFixedElements();
|
|
41199
41360
|
}
|
|
41200
41361
|
// Increase the size of the scrollable renderer and background
|
|
41201
|
-
|
|
41362
|
+
stop(chart.container);
|
|
41202
41363
|
css(container, {
|
|
41203
41364
|
width: `${scrollableWidth}px`,
|
|
41204
41365
|
height: `${scrollableHeight}px`
|
|
@@ -41355,6 +41516,13 @@ ScrollablePlotArea.fixedSelectors = [
|
|
|
41355
41516
|
* vertical scrolling, depending on whether the `minWidth` or `minHeight`
|
|
41356
41517
|
* option is set.
|
|
41357
41518
|
*
|
|
41519
|
+
* **Note:** Because native browser scrollbars are used, they may
|
|
41520
|
+
* overlap with fixed chart elements such as credits or the chart
|
|
41521
|
+
* border. To avoid this collision, it is recommended to manually add
|
|
41522
|
+
* extra space to the corresponding side using `chart.spacingBottom`
|
|
41523
|
+
* (for horizontal scrollbars) or `chart.spacingRight` (for vertical
|
|
41524
|
+
* scrollbars).
|
|
41525
|
+
*
|
|
41358
41526
|
* @sample highcharts/chart/scrollable-plotarea
|
|
41359
41527
|
* Scrollable plot area
|
|
41360
41528
|
* @sample highcharts/chart/scrollable-plotarea-vertical
|
|
@@ -41515,7 +41683,7 @@ class StackItem {
|
|
|
41515
41683
|
r: options.borderRadius || 0,
|
|
41516
41684
|
text: str,
|
|
41517
41685
|
// Set default padding to 5 as it is in dataLabels #12308
|
|
41518
|
-
padding:
|
|
41686
|
+
padding: (options.padding ?? 5),
|
|
41519
41687
|
visibility: 'hidden' // Hidden until setOffset is called
|
|
41520
41688
|
};
|
|
41521
41689
|
if (!chart.styledMode) {
|
|
@@ -41549,7 +41717,7 @@ class StackItem {
|
|
|
41549
41717
|
}), { verticalAlign } = alignOptions;
|
|
41550
41718
|
if (label && stackBox) {
|
|
41551
41719
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41552
|
-
let isJustify =
|
|
41720
|
+
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41553
41721
|
// Reset alignOptions property after justify #12337
|
|
41554
41722
|
alignOptions.x = options.x || 0;
|
|
41555
41723
|
alignOptions.y = options.y || 0;
|
|
@@ -41586,7 +41754,7 @@ class StackItem {
|
|
|
41586
41754
|
rotationOriginY: labelBox.height / 2
|
|
41587
41755
|
});
|
|
41588
41756
|
// Check if the dataLabel should be visible.
|
|
41589
|
-
if (
|
|
41757
|
+
if (((!isJustify && options.crop) ?? true)) {
|
|
41590
41758
|
visible =
|
|
41591
41759
|
isNumber(label.x) &&
|
|
41592
41760
|
isNumber(label.y) &&
|
|
@@ -41620,7 +41788,7 @@ class StackItem {
|
|
|
41620
41788
|
getStackBox(stackBoxProps) {
|
|
41621
41789
|
const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41622
41790
|
100 :
|
|
41623
|
-
|
|
41791
|
+
(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 ||
|
|
41624
41792
|
(isNumber(axis.min) &&
|
|
41625
41793
|
axis.logarithmic &&
|
|
41626
41794
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
@@ -41705,7 +41873,6 @@ class StackItem {
|
|
|
41705
41873
|
* */
|
|
41706
41874
|
|
|
41707
41875
|
|
|
41708
|
-
const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
|
|
41709
41876
|
|
|
41710
41877
|
const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
|
|
41711
41878
|
|
|
@@ -41734,7 +41901,7 @@ function chartGetStacks() {
|
|
|
41734
41901
|
if (series.options.stacking && series.reserveSpace()) {
|
|
41735
41902
|
series.stackKey = [
|
|
41736
41903
|
series.type,
|
|
41737
|
-
|
|
41904
|
+
(series.options.stack ?? ''),
|
|
41738
41905
|
inverted ? xAxisOptions.top : xAxisOptions.left,
|
|
41739
41906
|
inverted ? xAxisOptions.height : xAxisOptions.width
|
|
41740
41907
|
].join(',');
|
|
@@ -41897,7 +42064,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41897
42064
|
stack = stacks[key][x];
|
|
41898
42065
|
if (y !== null) {
|
|
41899
42066
|
stack.points[pointKey] = stack.points[series.index] = [
|
|
41900
|
-
|
|
42067
|
+
(stack.cumulative ?? stackThreshold)
|
|
41901
42068
|
];
|
|
41902
42069
|
// Record the base of the stack
|
|
41903
42070
|
if (!defined(stack.cumulative)) {
|
|
@@ -41945,7 +42112,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41945
42112
|
stack.cumulative = (total || 1) - 1;
|
|
41946
42113
|
}
|
|
41947
42114
|
else {
|
|
41948
|
-
stack.cumulative = correctFloat(
|
|
42115
|
+
stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
|
|
41949
42116
|
}
|
|
41950
42117
|
stack.total = total;
|
|
41951
42118
|
if (y !== null) {
|
|
@@ -42049,7 +42216,7 @@ class AxisAdditions {
|
|
|
42049
42216
|
}
|
|
42050
42217
|
/** @internal */
|
|
42051
42218
|
renderStackTotals() {
|
|
42052
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig =
|
|
42219
|
+
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 ||
|
|
42053
42220
|
renderer
|
|
42054
42221
|
.g('stack-labels')
|
|
42055
42222
|
.attr({
|
|
@@ -42960,8 +43127,7 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
42960
43127
|
*/
|
|
42961
43128
|
getGraphPath(points) {
|
|
42962
43129
|
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
|
|
42963
|
-
yAxis.getThreshold(options.threshold)), connectNulls =
|
|
42964
|
-
options.connectNulls, stacking === 'percent'),
|
|
43130
|
+
yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
|
|
42965
43131
|
// To display null points in underlying stacked series, this
|
|
42966
43132
|
// series graph must be broken, and the area also fall down to
|
|
42967
43133
|
// fill the gap left by the null point. #2069
|
|
@@ -43014,9 +43180,9 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
43014
43180
|
// Treat points with undefined plotY as null (e.g. non-positive
|
|
43015
43181
|
// values on logarithmic axis, #18422)
|
|
43016
43182
|
isNull = points[i].isNull || !defined(points[i].plotY);
|
|
43017
|
-
plotX =
|
|
43183
|
+
plotX = (points[i].rectPlotX ?? points[i].plotX);
|
|
43018
43184
|
yBottom = stacking ?
|
|
43019
|
-
|
|
43185
|
+
(points[i].yBottom ?? translatedThreshold) :
|
|
43020
43186
|
translatedThreshold;
|
|
43021
43187
|
if (!isNull || connectNulls) {
|
|
43022
43188
|
if (!connectNulls) {
|
|
@@ -43354,10 +43520,10 @@ class SplineSeries extends SplineSeries_LineSeries {
|
|
|
43354
43520
|
}
|
|
43355
43521
|
const ret = [
|
|
43356
43522
|
'C',
|
|
43357
|
-
|
|
43358
|
-
|
|
43359
|
-
|
|
43360
|
-
|
|
43523
|
+
(lastPoint.rightContX ?? lastPoint.plotX ?? 0),
|
|
43524
|
+
(lastPoint.rightContY ?? lastPoint.plotY ?? 0),
|
|
43525
|
+
(leftContX ?? plotX ?? 0),
|
|
43526
|
+
(leftContY ?? plotY ?? 0),
|
|
43361
43527
|
plotX,
|
|
43362
43528
|
plotY
|
|
43363
43529
|
];
|
|
@@ -43802,6 +43968,8 @@ const ColumnSeriesDefaults = {
|
|
|
43802
43968
|
* 0.25
|
|
43803
43969
|
* @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
|
|
43804
43970
|
* 0 for tightly packed columns
|
|
43971
|
+
* @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
|
|
43972
|
+
* Pie point padding plugin
|
|
43805
43973
|
*
|
|
43806
43974
|
* @product highcharts highstock gantt
|
|
43807
43975
|
*/
|
|
@@ -44133,12 +44301,12 @@ const ColumnSeriesDefaults = {
|
|
|
44133
44301
|
*/
|
|
44134
44302
|
/**
|
|
44135
44303
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44136
|
-
* @product highcharts highstock
|
|
44304
|
+
* @product highcharts highstock gantt
|
|
44137
44305
|
* @apioption series.column.states.hover
|
|
44138
44306
|
*/
|
|
44139
44307
|
/**
|
|
44140
44308
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44141
|
-
* @product highcharts highstock
|
|
44309
|
+
* @product highcharts highstock gantt
|
|
44142
44310
|
* @apioption series.column.states.select
|
|
44143
44311
|
*/
|
|
44144
44312
|
/**
|
|
@@ -44168,7 +44336,6 @@ const ColumnSeriesDefaults = {
|
|
|
44168
44336
|
* */
|
|
44169
44337
|
|
|
44170
44338
|
|
|
44171
|
-
const { animObject: ColumnSeries_animObject } = AnimationUtilities;
|
|
44172
44339
|
|
|
44173
44340
|
const { parse: ColumnSeries_color } = Color_Color;
|
|
44174
44341
|
|
|
@@ -44239,7 +44406,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44239
44406
|
}
|
|
44240
44407
|
else { // Run the animation
|
|
44241
44408
|
translateStart = Number(series.group.attr(translateProp));
|
|
44242
|
-
series.group.animate({ scaleY: 1 }, extend(
|
|
44409
|
+
series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
|
|
44243
44410
|
// Do the scale synchronously to ensure smooth
|
|
44244
44411
|
// updating (#5030, #7228)
|
|
44245
44412
|
step: function (val, fx) {
|
|
@@ -44325,7 +44492,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44325
44492
|
xAxis.tickInterval ||
|
|
44326
44493
|
1), // #2610
|
|
44327
44494
|
xAxis.len // #1535
|
|
44328
|
-
), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len,
|
|
44495
|
+
), 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,
|
|
44329
44496
|
// #1251, #3737
|
|
44330
44497
|
colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
|
|
44331
44498
|
(groupPadding +
|
|
@@ -44575,11 +44742,11 @@ class ColumnSeries extends Series_Series {
|
|
|
44575
44742
|
*/
|
|
44576
44743
|
pointAttribs(point, state) {
|
|
44577
44744
|
const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
|
|
44578
|
-
let stateOptions, zone, brightness, fill =
|
|
44745
|
+
let stateOptions, zone, brightness, fill = point?.color || this.color,
|
|
44579
44746
|
// Set to fill when borderColor null:
|
|
44580
|
-
stroke = (
|
|
44747
|
+
stroke = (point?.[strokeOption] ||
|
|
44581
44748
|
options[strokeOption] ||
|
|
44582
|
-
fill), dashstyle =
|
|
44749
|
+
fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
|
|
44583
44750
|
options[strokeWidthOption] ??
|
|
44584
44751
|
this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
|
|
44585
44752
|
0 :
|
|
@@ -44600,7 +44767,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44600
44767
|
}
|
|
44601
44768
|
// Select or hover states
|
|
44602
44769
|
if (state && point) {
|
|
44603
|
-
stateOptions = merge(options.states[state],
|
|
44770
|
+
stateOptions = merge(options.states?.[state],
|
|
44604
44771
|
// #6401
|
|
44605
44772
|
point.options.states?.[state] || {});
|
|
44606
44773
|
brightness = stateOptions.brightness;
|
|
@@ -44610,14 +44777,13 @@ class ColumnSeries extends Series_Series {
|
|
|
44610
44777
|
.brighten(stateOptions.brightness)
|
|
44611
44778
|
.get()) || fill;
|
|
44612
44779
|
stroke = stateOptions[strokeOption] || stroke;
|
|
44613
|
-
strokeWidth =
|
|
44614
|
-
stateOptions[strokeWidthOption] || strokeWidth;
|
|
44780
|
+
strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
|
|
44615
44781
|
dashstyle = stateOptions.dashStyle || dashstyle;
|
|
44616
|
-
opacity =
|
|
44782
|
+
opacity = stateOptions.opacity ?? opacity;
|
|
44617
44783
|
}
|
|
44618
44784
|
const ret = {
|
|
44619
|
-
fill
|
|
44620
|
-
stroke
|
|
44785
|
+
fill,
|
|
44786
|
+
stroke,
|
|
44621
44787
|
'stroke-width': strokeWidth,
|
|
44622
44788
|
opacity: point?.condemned ? 0 : opacity
|
|
44623
44789
|
};
|
|
@@ -44658,6 +44824,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44658
44824
|
initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
|
|
44659
44825
|
if (!styledMode) {
|
|
44660
44826
|
initialAttr.opacity = 0;
|
|
44827
|
+
initialAttr['stroke-width'] = 0;
|
|
44661
44828
|
}
|
|
44662
44829
|
shouldUpdate = true;
|
|
44663
44830
|
verb = 'animate';
|
|
@@ -44673,7 +44840,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44673
44840
|
}
|
|
44674
44841
|
// Presentational
|
|
44675
44842
|
if (!styledMode) {
|
|
44676
|
-
graphic[verb](series.pointAttribs(point,
|
|
44843
|
+
graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
|
|
44677
44844
|
.shadow(point.allowShadow !== false && options.shadow);
|
|
44678
44845
|
}
|
|
44679
44846
|
graphic
|
|
@@ -44797,6 +44964,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44797
44964
|
* Default Export
|
|
44798
44965
|
*
|
|
44799
44966
|
* */
|
|
44967
|
+
/** @internal */
|
|
44800
44968
|
/* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
|
|
44801
44969
|
/* *
|
|
44802
44970
|
*
|
|
@@ -44833,7 +45001,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44833
45001
|
* */
|
|
44834
45002
|
|
|
44835
45003
|
|
|
44836
|
-
const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
|
|
44837
45004
|
|
|
44838
45005
|
const { format: DataLabel_format } = Core_Templating;
|
|
44839
45006
|
|
|
@@ -44889,7 +45056,7 @@ var DataLabel;
|
|
|
44889
45056
|
// that parts of the align box is inside the plot area
|
|
44890
45057
|
// (#12370). When stacking, it is always inside regardless
|
|
44891
45058
|
// of the option (#15148).
|
|
44892
|
-
|
|
45059
|
+
(options.inside ?? !!this.options.stacking) &&
|
|
44893
45060
|
alignTo &&
|
|
44894
45061
|
chart.isInsidePlot(plotX, inverted ?
|
|
44895
45062
|
alignTo.x + 1 :
|
|
@@ -44992,8 +45159,8 @@ var DataLabel;
|
|
|
44992
45159
|
// zIndex: 20
|
|
44993
45160
|
// }).add();
|
|
44994
45161
|
// chart.renderer.circle(
|
|
44995
|
-
// chart.plotLeft +
|
|
44996
|
-
// chart.plotTop +
|
|
45162
|
+
// chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
|
|
45163
|
+
// chart.plotTop + (dataLabel.alignAttr.y ?? 0),
|
|
44997
45164
|
// 2
|
|
44998
45165
|
// ).attr({
|
|
44999
45166
|
// fill: 'red',
|
|
@@ -45150,7 +45317,7 @@ var DataLabel;
|
|
|
45150
45317
|
'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
|
|
45151
45318
|
// Resolve the animation
|
|
45152
45319
|
const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
|
|
45153
|
-
|
|
45320
|
+
getDeferredAnimation(chart, animation, series) :
|
|
45154
45321
|
{ defer: 0, duration: 0 };
|
|
45155
45322
|
fireEvent(this, 'drawDataLabels');
|
|
45156
45323
|
if (series.hasDataLabels?.()) {
|
|
@@ -45176,7 +45343,7 @@ var DataLabel;
|
|
|
45176
45343
|
if (labelEnabled) {
|
|
45177
45344
|
// Create individual options structure that can be
|
|
45178
45345
|
// extended without affecting others
|
|
45179
|
-
formatString =
|
|
45346
|
+
formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
|
|
45180
45347
|
labelText = defined(formatString) ?
|
|
45181
45348
|
DataLabel_format(formatString, point, chart) :
|
|
45182
45349
|
(labelOptions[point.formatPrefix + 'Formatter'] ||
|
|
@@ -45184,7 +45351,9 @@ var DataLabel;
|
|
|
45184
45351
|
rotation = labelOptions.rotation;
|
|
45185
45352
|
if (!chart.styledMode) {
|
|
45186
45353
|
// Determine the color
|
|
45187
|
-
style.color =
|
|
45354
|
+
style.color = (isString(labelOptions.color) ?
|
|
45355
|
+
labelOptions.color :
|
|
45356
|
+
void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
|
|
45188
45357
|
// Get automated contrast color
|
|
45189
45358
|
if (style.color === 'contrast') {
|
|
45190
45359
|
if (backgroundColor !== 'none') {
|
|
@@ -45916,6 +46085,8 @@ const ScatterSeriesDefaults = {
|
|
|
45916
46085
|
* Arrays of datetime x and y
|
|
45917
46086
|
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
45918
46087
|
* Arrays of point.name and y
|
|
46088
|
+
* @sample {highcharts} highcharts/series-scatter/scatter-cluster/
|
|
46089
|
+
* Computed clusters
|
|
45919
46090
|
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
45920
46091
|
* Config objects
|
|
45921
46092
|
*
|
|
@@ -45983,14 +46154,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
|
|
|
45983
46154
|
return rand - Math.floor(rand);
|
|
45984
46155
|
}
|
|
45985
46156
|
if (jitter) {
|
|
45986
|
-
this.points.forEach(
|
|
45987
|
-
['x', 'y'].forEach(
|
|
46157
|
+
this.points.forEach((point, i) => {
|
|
46158
|
+
['x', 'y'].forEach((dim, j) => {
|
|
45988
46159
|
if (jitter[dim] && !point.isNull) {
|
|
45989
|
-
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`]
|
|
45990
|
-
axis.transA;
|
|
46160
|
+
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
|
|
45991
46161
|
if (axis && !axis.logarithmic) {
|
|
45992
46162
|
// Identify the outer bounds of the jitter range
|
|
45993
|
-
|
|
46163
|
+
// (#25054)
|
|
46164
|
+
const translatedJitter = jitter[dim] * axis.transA *
|
|
46165
|
+
(axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
|
|
45994
46166
|
// Find a random position within this range
|
|
45995
46167
|
point[plotProp] = min +
|
|
45996
46168
|
(max - min) * unrandom(i + j * len);
|
|
@@ -46064,7 +46236,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
|
|
|
46064
46236
|
const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
|
|
46065
46237
|
|
|
46066
46238
|
/**
|
|
46067
|
-
* @
|
|
46239
|
+
* @internal
|
|
46068
46240
|
*/
|
|
46069
46241
|
var CenteredUtilities;
|
|
46070
46242
|
(function (CenteredUtilities) {
|
|
@@ -46082,7 +46254,7 @@ var CenteredUtilities;
|
|
|
46082
46254
|
* Get the center of the pie based on the size and center options relative
|
|
46083
46255
|
* to the plot area. Borrowed by the polar and gauge series types.
|
|
46084
46256
|
*
|
|
46085
|
-
* @
|
|
46257
|
+
* @internal
|
|
46086
46258
|
* @function Highcharts.CenteredSeriesMixin.getCenter
|
|
46087
46259
|
*/
|
|
46088
46260
|
function getCenter() {
|
|
@@ -46095,11 +46267,13 @@ var CenteredUtilities;
|
|
|
46095
46267
|
innerSize = parseFloat(innerSize);
|
|
46096
46268
|
}
|
|
46097
46269
|
const positions = [
|
|
46098
|
-
|
|
46099
|
-
|
|
46270
|
+
(centerOption?.[0] ?? '50%'),
|
|
46271
|
+
(centerOption?.[1] ?? '50%'),
|
|
46100
46272
|
// Prevent from negative values
|
|
46101
|
-
|
|
46102
|
-
|
|
46273
|
+
((size && size < 0 ? void 0 : options.size) ?? '100%'),
|
|
46274
|
+
((innerSize && innerSize < 0 ?
|
|
46275
|
+
void 0 :
|
|
46276
|
+
options.innerSize || 0) ?? '0%')
|
|
46103
46277
|
];
|
|
46104
46278
|
for (i = 0; i < 4; ++i) {
|
|
46105
46279
|
value = positions[i];
|
|
@@ -46127,7 +46301,7 @@ var CenteredUtilities;
|
|
|
46127
46301
|
* GetStartAndEndRadians - Calculates start and end angles in radians.
|
|
46128
46302
|
* Used in series types such as pie and sunburst.
|
|
46129
46303
|
*
|
|
46130
|
-
* @
|
|
46304
|
+
* @internal
|
|
46131
46305
|
* @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
|
|
46132
46306
|
*
|
|
46133
46307
|
* @param {number} [start]
|
|
@@ -46159,6 +46333,7 @@ var CenteredUtilities;
|
|
|
46159
46333
|
* Default Export
|
|
46160
46334
|
*
|
|
46161
46335
|
* */
|
|
46336
|
+
/** @internal */
|
|
46162
46337
|
/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
|
|
46163
46338
|
/* *
|
|
46164
46339
|
*
|
|
@@ -46166,7 +46341,7 @@ var CenteredUtilities;
|
|
|
46166
46341
|
*
|
|
46167
46342
|
* */
|
|
46168
46343
|
/**
|
|
46169
|
-
* @
|
|
46344
|
+
* @internal
|
|
46170
46345
|
* @interface Highcharts.RadianAngles
|
|
46171
46346
|
*/ /**
|
|
46172
46347
|
* @name Highcharts.RadianAngles#end
|
|
@@ -46191,7 +46366,6 @@ var CenteredUtilities;
|
|
|
46191
46366
|
* */
|
|
46192
46367
|
|
|
46193
46368
|
|
|
46194
|
-
const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
|
|
46195
46369
|
|
|
46196
46370
|
|
|
46197
46371
|
/* *
|
|
@@ -46299,9 +46473,9 @@ class PiePoint extends Series_Point {
|
|
|
46299
46473
|
*/
|
|
46300
46474
|
slice(sliced, redraw, animation) {
|
|
46301
46475
|
const series = this.series, chart = series.chart;
|
|
46302
|
-
|
|
46476
|
+
setAnimation(animation, chart);
|
|
46303
46477
|
// Redraw is true by default
|
|
46304
|
-
redraw =
|
|
46478
|
+
redraw = (redraw ?? true);
|
|
46305
46479
|
this.sliced = this.options.sliced = sliced ?? !this.sliced;
|
|
46306
46480
|
// Update options.data
|
|
46307
46481
|
if (series.options.data) {
|
|
@@ -47106,7 +47280,8 @@ class PieSeries extends Series_Series {
|
|
|
47106
47280
|
// Start values
|
|
47107
47281
|
graphic.attr({
|
|
47108
47282
|
// Animate from inner radius (#779)
|
|
47109
|
-
r:
|
|
47283
|
+
r: point.startR ??
|
|
47284
|
+
(series.center && series.center[3] / 2),
|
|
47110
47285
|
start: startAngleRad,
|
|
47111
47286
|
end: startAngleRad
|
|
47112
47287
|
});
|
|
@@ -47747,7 +47922,7 @@ var PieDataLabel_ColumnDataLabel;
|
|
|
47747
47922
|
labelPosition.computed.x = x;
|
|
47748
47923
|
labelPosition.computed.y = y - topOffset;
|
|
47749
47924
|
// Detect overflowing data labels
|
|
47750
|
-
if (
|
|
47925
|
+
if (dataLabelOptions.crop ?? true) {
|
|
47751
47926
|
dataLabelWidth = dataLabel.getBBox().width;
|
|
47752
47927
|
let sideOverflow;
|
|
47753
47928
|
// Overflow left
|
|
@@ -48263,7 +48438,10 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48263
48438
|
if (point.visible) {
|
|
48264
48439
|
(point.dataLabels || []).forEach((label) => {
|
|
48265
48440
|
const options = label.options || {};
|
|
48266
|
-
label.labelrank =
|
|
48441
|
+
label.labelrank =
|
|
48442
|
+
options.labelrank ??
|
|
48443
|
+
point.labelrank ??
|
|
48444
|
+
point.shapeArgs?.height; // #4118
|
|
48267
48445
|
// #21725: Sync target positions for generic overlap
|
|
48268
48446
|
// checking. During animations (e.g., toggling a
|
|
48269
48447
|
// point), DOM positions may overlap. We force
|
|
@@ -48437,7 +48615,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
|
|
|
48437
48615
|
if (options.open || !options.borderRadius) {
|
|
48438
48616
|
return path;
|
|
48439
48617
|
}
|
|
48440
|
-
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius
|
|
48618
|
+
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
|
|
48441
48619
|
// Cap to half the sector radius
|
|
48442
48620
|
(r - innerR) / 2,
|
|
48443
48621
|
// For smaller pie slices, cap to the largest small circle that
|
|
@@ -48463,7 +48641,7 @@ function seriesOnAfterColumnTranslate() {
|
|
|
48463
48641
|
if (this.options.borderRadius &&
|
|
48464
48642
|
!(this.chart.is3d && this.chart.is3d())) {
|
|
48465
48643
|
const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
|
|
48466
|
-
?.borderRadius, borderRadius =
|
|
48644
|
+
?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
|
|
48467
48645
|
for (const point of this.points) {
|
|
48468
48646
|
const { shapeArgs } = point;
|
|
48469
48647
|
if (point.shapeType === 'roundedRect' && shapeArgs) {
|
|
@@ -48535,8 +48713,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
|
|
|
48535
48713
|
symbols.roundedRect = BorderRadius_roundedRect;
|
|
48536
48714
|
}
|
|
48537
48715
|
}
|
|
48538
|
-
/**
|
|
48539
|
-
function
|
|
48716
|
+
/**
|
|
48717
|
+
* Utility function to get the full border radius options object, from a simple
|
|
48718
|
+
* number or a partial options object.
|
|
48719
|
+
* @internal
|
|
48720
|
+
*/
|
|
48721
|
+
function borderRadiusObject(options, seriesBROptions) {
|
|
48540
48722
|
if (!isObject(options)) {
|
|
48541
48723
|
options = { radius: options || 0 };
|
|
48542
48724
|
}
|
|
@@ -48544,7 +48726,7 @@ function optionsToObject(options, seriesBROptions) {
|
|
|
48544
48726
|
}
|
|
48545
48727
|
/** @internal */
|
|
48546
48728
|
function pieSeriesOnAfterTranslate() {
|
|
48547
|
-
const borderRadius =
|
|
48729
|
+
const borderRadius = borderRadiusObject(this.options.borderRadius);
|
|
48548
48730
|
for (const point of this.points) {
|
|
48549
48731
|
const shapeArgs = point.shapeArgs;
|
|
48550
48732
|
if (shapeArgs) {
|
|
@@ -48663,7 +48845,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48663
48845
|
* Column and pie with rounded border
|
|
48664
48846
|
*
|
|
48665
48847
|
* @name Highcharts.BorderRadiusOptionsObject#radius
|
|
48666
|
-
* @type {string|number}
|
|
48848
|
+
* @type {string|number|undefined}
|
|
48667
48849
|
*/ /**
|
|
48668
48850
|
* The scope of the rounding for column charts or plot bands. In a stacked
|
|
48669
48851
|
* column chart, the value `point` means each single point will get rounded
|
|
@@ -48678,8 +48860,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48678
48860
|
* Rounded columns
|
|
48679
48861
|
*
|
|
48680
48862
|
* @name Highcharts.BorderRadiusOptionsObject#scope
|
|
48681
|
-
* @
|
|
48682
|
-
* @type {string}
|
|
48863
|
+
* @type {"individual"|"point"|"stack"|undefined}
|
|
48683
48864
|
*/ /**
|
|
48684
48865
|
* For column charts, where in the point or stack to apply rounding. The `end`
|
|
48685
48866
|
* value means only those corners at the point value will be rounded, leaving
|
|
@@ -48690,8 +48871,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48690
48871
|
* Rounding on all corners
|
|
48691
48872
|
*
|
|
48692
48873
|
* @name Highcharts.BorderRadiusOptionsObject#where
|
|
48693
|
-
* @
|
|
48694
|
-
* @type {string}
|
|
48874
|
+
* @type {"all"|"end"|undefined}
|
|
48695
48875
|
* @default end
|
|
48696
48876
|
*/
|
|
48697
48877
|
(''); // Keeps doclets above in JS file
|
|
@@ -48750,10 +48930,12 @@ var Responsive;
|
|
|
48750
48930
|
*/
|
|
48751
48931
|
function matchResponsiveRule(rule, matches) {
|
|
48752
48932
|
const condition = rule.condition, fn = condition.callback || function () {
|
|
48753
|
-
return (this.chartWidth <=
|
|
48754
|
-
|
|
48755
|
-
this.
|
|
48756
|
-
|
|
48933
|
+
return (this.chartWidth <=
|
|
48934
|
+
(condition.maxWidth ?? Number.MAX_VALUE) &&
|
|
48935
|
+
this.chartHeight <=
|
|
48936
|
+
(condition.maxHeight ?? Number.MAX_VALUE) &&
|
|
48937
|
+
this.chartWidth >= (condition.minWidth ?? 0) &&
|
|
48938
|
+
this.chartHeight >= (condition.minHeight ?? 0));
|
|
48757
48939
|
};
|
|
48758
48940
|
if (fn.call(this, this)) {
|
|
48759
48941
|
matches.push(rule._id);
|
|
@@ -48967,7 +49149,7 @@ var Responsive;
|
|
|
48967
49149
|
;// ./code/es-modules/masters/highcharts.src.js
|
|
48968
49150
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
48969
49151
|
/**
|
|
48970
|
-
* @license Highcharts JS v13.0.
|
|
49152
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
48971
49153
|
* @module highcharts/highcharts
|
|
48972
49154
|
*
|
|
48973
49155
|
* (c) 2009-2026 Highsoft AS
|
|
@@ -49044,12 +49226,17 @@ G.SVGElement = SVG_SVGElement;
|
|
|
49044
49226
|
G.SVGRenderer = SVG_SVGRenderer;
|
|
49045
49227
|
G.Templating = Core_Templating;
|
|
49046
49228
|
G.Tick = Axis_Tick;
|
|
49047
|
-
G.Time = Core_Time
|
|
49229
|
+
G.Time = class extends Core_Time {
|
|
49230
|
+
constructor(options, lang) {
|
|
49231
|
+
const defaultOptions = Defaults.getOptions();
|
|
49232
|
+
super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
|
|
49233
|
+
}
|
|
49234
|
+
};
|
|
49048
49235
|
G.Tooltip = Core_Tooltip;
|
|
49049
49236
|
// Utilities
|
|
49050
49237
|
G.addEvent = addEvent;
|
|
49051
|
-
G.animObject =
|
|
49052
|
-
G.animate =
|
|
49238
|
+
G.animObject = animObject;
|
|
49239
|
+
G.animate = animate;
|
|
49053
49240
|
G.arrayMax = arrayMax;
|
|
49054
49241
|
G.arrayMin = arrayMin;
|
|
49055
49242
|
G.attr = attr;
|
|
@@ -49076,7 +49263,7 @@ G.fireEvent = fireEvent;
|
|
|
49076
49263
|
G.format = Core_Templating.format;
|
|
49077
49264
|
G.getAlignFactor = getAlignFactor;
|
|
49078
49265
|
G.getClosestDistance = getClosestDistance;
|
|
49079
|
-
G.getDeferredAnimation =
|
|
49266
|
+
G.getDeferredAnimation = getDeferredAnimation;
|
|
49080
49267
|
G.getMagnitude = getMagnitude;
|
|
49081
49268
|
G.getNestedProperty = getNestedProperty;
|
|
49082
49269
|
G.getOptions = Defaults.getOptions;
|
|
@@ -49103,11 +49290,11 @@ G.relativeLength = relativeLength;
|
|
|
49103
49290
|
G.removeEvent = removeEvent;
|
|
49104
49291
|
G.replaceNested = replaceNested;
|
|
49105
49292
|
G.seriesType = Series_SeriesRegistry.seriesType;
|
|
49106
|
-
G.setAnimation =
|
|
49293
|
+
G.setAnimation = setAnimation;
|
|
49107
49294
|
G.setOptions = Defaults.setOptions;
|
|
49108
49295
|
G.splat = splat;
|
|
49109
49296
|
G.stableSort = stableSort;
|
|
49110
|
-
G.stop =
|
|
49297
|
+
G.stop = stop;
|
|
49111
49298
|
G.syncTimeout = syncTimeout;
|
|
49112
49299
|
G.time = Defaults.defaultTime;
|
|
49113
49300
|
G.ucfirst = ucfirst;
|
|
@@ -49216,7 +49403,7 @@ function onChartAfterSetChartSize() {
|
|
|
49216
49403
|
navigator.top = this.plotTop + scrollButtonSize;
|
|
49217
49404
|
}
|
|
49218
49405
|
else {
|
|
49219
|
-
navigator.left =
|
|
49406
|
+
navigator.left = (xAxis.left ?? this.plotLeft + scrollButtonSize);
|
|
49220
49407
|
navigator.top = navigator.navigatorOptions.top ||
|
|
49221
49408
|
this.chartHeight -
|
|
49222
49409
|
navigator.height -
|
|
@@ -49232,7 +49419,7 @@ function onChartAfterSetChartSize() {
|
|
|
49232
49419
|
legendOptions.enabled &&
|
|
49233
49420
|
!legendOptions.floating) ?
|
|
49234
49421
|
legend.legendHeight +
|
|
49235
|
-
|
|
49422
|
+
(legendOptions.margin ?? 10) :
|
|
49236
49423
|
0) -
|
|
49237
49424
|
(this.titleOffset ? this.titleOffset[2] : 0);
|
|
49238
49425
|
}
|
|
@@ -49257,7 +49444,7 @@ function onChartAfterUpdate(event) {
|
|
|
49257
49444
|
(this.options.navigator.enabled ||
|
|
49258
49445
|
this.options.scrollbar.enabled)) {
|
|
49259
49446
|
this.scroller = this.navigator = new NavigatorConstructor(this);
|
|
49260
|
-
if (
|
|
49447
|
+
if (event.redraw ?? true) {
|
|
49261
49448
|
this.redraw(event.animation); // #7067
|
|
49262
49449
|
}
|
|
49263
49450
|
}
|
|
@@ -49435,7 +49622,7 @@ class NavigatorAxisAdditions {
|
|
|
49435
49622
|
*/
|
|
49436
49623
|
toFixedRange(pxMin, pxMax, fixedMin, fixedMax) {
|
|
49437
49624
|
const axis = this.axis, halfPointRange = (axis.pointRange || 0) / 2;
|
|
49438
|
-
let newMin =
|
|
49625
|
+
let newMin = fixedMin ?? axis.translate(pxMin, true, !axis.horiz), newMax = fixedMax ?? axis.translate(pxMax, true, !axis.horiz);
|
|
49439
49626
|
// Add/remove half point range to/from the extremes (#1172)
|
|
49440
49627
|
if (!defined(fixedMin)) {
|
|
49441
49628
|
newMin = correctFloat(newMin + halfPointRange);
|
|
@@ -49659,7 +49846,7 @@ const NavigatorDefaults = {
|
|
|
49659
49846
|
*
|
|
49660
49847
|
* @type {Highcharts.ColorType}
|
|
49661
49848
|
*/
|
|
49662
|
-
maskFill: 'color-mix(var(--highcharts-highlight-color-60) 30%, transparent)',
|
|
49849
|
+
maskFill: 'color-mix(in srgb, var(--highcharts-highlight-color-60) 30%, transparent)', // eslint-disable-line max-len
|
|
49663
49850
|
/**
|
|
49664
49851
|
* The color of the line marking the currently zoomed area in the
|
|
49665
49852
|
* navigator.
|
|
@@ -49798,11 +49985,18 @@ const NavigatorDefaults = {
|
|
|
49798
49985
|
id: 'highcharts-navigator-series',
|
|
49799
49986
|
className: 'highcharts-navigator-series',
|
|
49800
49987
|
/**
|
|
49801
|
-
* Sets the
|
|
49988
|
+
* Sets the color of the navigator series.
|
|
49802
49989
|
*
|
|
49803
49990
|
* @type {Highcharts.ColorType}
|
|
49804
49991
|
* @apioption navigator.series.color
|
|
49805
49992
|
*/
|
|
49993
|
+
/**
|
|
49994
|
+
* Sets the fill color of the navigator series. Applies to series
|
|
49995
|
+
* types with a filled area, like the default `areaspline`.
|
|
49996
|
+
*
|
|
49997
|
+
* @type {Highcharts.ColorType}
|
|
49998
|
+
* @apioption navigator.series.fillColor
|
|
49999
|
+
*/
|
|
49806
50000
|
/**
|
|
49807
50001
|
* Line color for the navigator series. Allows setting the color
|
|
49808
50002
|
* while disallowing the default candlestick setting.
|
|
@@ -50002,6 +50196,7 @@ const NavigatorDefaults = {
|
|
|
50002
50196
|
|
|
50003
50197
|
|
|
50004
50198
|
|
|
50199
|
+
|
|
50005
50200
|
/* *
|
|
50006
50201
|
*
|
|
50007
50202
|
* Constants
|
|
@@ -50012,7 +50207,7 @@ const NavigatorDefaults = {
|
|
|
50012
50207
|
* @internal
|
|
50013
50208
|
*/
|
|
50014
50209
|
function navigatorHandle(_x, _y, width, height, options = {}) {
|
|
50015
|
-
const halfWidth = options.width ? options.width / 2 : width, markerPosition = 1.5, r = relativeLength(options.borderRadius
|
|
50210
|
+
const halfWidth = options.width ? options.width / 2 : width, markerPosition = 1.5, r = relativeLength(borderRadiusObject(options.borderRadius).radius, Math.min(halfWidth * 2, height));
|
|
50016
50211
|
height = options.height || height;
|
|
50017
50212
|
return [
|
|
50018
50213
|
['M', -markerPosition, height / 2 - 3.5],
|
|
@@ -50202,8 +50397,8 @@ var ScrollbarAxis;
|
|
|
50202
50397
|
ScrollbarAxis.compose = compose;
|
|
50203
50398
|
/** @internal */
|
|
50204
50399
|
function getExtremes(axis) {
|
|
50205
|
-
const axisMin =
|
|
50206
|
-
const axisMax =
|
|
50400
|
+
const axisMin = (axis.options?.min ?? axis.min);
|
|
50401
|
+
const axisMax = (axis.options?.max ?? axis.max);
|
|
50207
50402
|
return {
|
|
50208
50403
|
axisMin,
|
|
50209
50404
|
axisMax,
|
|
@@ -50742,7 +50937,7 @@ class Scrollbar {
|
|
|
50742
50937
|
buttonToMaxClick(e) {
|
|
50743
50938
|
const scroller = this;
|
|
50744
50939
|
const range = ((scroller.to - scroller.from) *
|
|
50745
|
-
|
|
50940
|
+
(scroller.options.step ?? 0.2));
|
|
50746
50941
|
scroller.updatePosition(scroller.from + range, scroller.to + range);
|
|
50747
50942
|
fireEvent(scroller, 'changed', {
|
|
50748
50943
|
from: scroller.from,
|
|
@@ -50754,7 +50949,7 @@ class Scrollbar {
|
|
|
50754
50949
|
buttonToMinClick(e) {
|
|
50755
50950
|
const scroller = this;
|
|
50756
50951
|
const range = correctFloat(scroller.to - scroller.from) *
|
|
50757
|
-
|
|
50952
|
+
(scroller.options.step ?? 0.2);
|
|
50758
50953
|
scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
|
|
50759
50954
|
fireEvent(scroller, 'changed', {
|
|
50760
50955
|
from: scroller.from,
|
|
@@ -50886,10 +51081,11 @@ class Scrollbar {
|
|
|
50886
51081
|
scroller.renderer = renderer;
|
|
50887
51082
|
scroller.userOptions = options;
|
|
50888
51083
|
scroller.options = merge(Scrollbar_ScrollbarDefaults, Scrollbar_defaultOptions.scrollbar, options);
|
|
50889
|
-
scroller.options.margin =
|
|
51084
|
+
scroller.options.margin = (scroller.options.margin ?? 10);
|
|
50890
51085
|
scroller.chart = chart;
|
|
50891
51086
|
// Backward compatibility
|
|
50892
|
-
scroller.size =
|
|
51087
|
+
scroller.size = scroller.options.size ??
|
|
51088
|
+
scroller.options.height;
|
|
50893
51089
|
// Init
|
|
50894
51090
|
if (options.enabled) {
|
|
50895
51091
|
scroller.render();
|
|
@@ -51179,9 +51375,9 @@ class Scrollbar {
|
|
|
51179
51375
|
* @function Highcharts.Scrollbar#shouldUpdateExtremes
|
|
51180
51376
|
*/
|
|
51181
51377
|
shouldUpdateExtremes(eventType) {
|
|
51182
|
-
return (
|
|
51378
|
+
return ((this.options.liveRedraw ?? (Core_Globals.svg &&
|
|
51183
51379
|
!Core_Globals.isTouchDevice &&
|
|
51184
|
-
!this.chart.boosted) ||
|
|
51380
|
+
!this.chart.boosted)) ||
|
|
51185
51381
|
// Mouseup always should change extremes
|
|
51186
51382
|
eventType === 'mouseup' ||
|
|
51187
51383
|
eventType === 'touchend' ||
|
|
@@ -51701,18 +51897,18 @@ class Navigator {
|
|
|
51701
51897
|
// it. For example hidden series, but visible navigator (#6022).
|
|
51702
51898
|
if (rendered) {
|
|
51703
51899
|
pxMin = 0;
|
|
51704
|
-
pxMax =
|
|
51900
|
+
pxMax = (xAxis.width ?? scrollbarXAxis.width);
|
|
51705
51901
|
}
|
|
51706
51902
|
else {
|
|
51707
51903
|
return;
|
|
51708
51904
|
}
|
|
51709
51905
|
}
|
|
51710
|
-
navigator.left =
|
|
51711
|
-
// In case of scrollbar only, without navigator
|
|
51712
|
-
chart.plotLeft + scrollButtonSize +
|
|
51906
|
+
navigator.left = (xAxis.left ?? chart.plotLeft + scrollButtonSize +
|
|
51713
51907
|
(inverted ? chart.plotWidth : 0));
|
|
51714
|
-
let zoomedMax = navigator.size = navigatorSize =
|
|
51715
|
-
|
|
51908
|
+
let zoomedMax = navigator.size = navigatorSize =
|
|
51909
|
+
xAxis.len ??
|
|
51910
|
+
(inverted ? chart.plotHeight : chart.plotWidth) -
|
|
51911
|
+
2 * scrollButtonSize;
|
|
51716
51912
|
if (inverted) {
|
|
51717
51913
|
navigatorWidth = scrollbarHeight;
|
|
51718
51914
|
}
|
|
@@ -51720,8 +51916,8 @@ class Navigator {
|
|
|
51720
51916
|
navigatorWidth = navigatorSize + 2 * scrollButtonSize;
|
|
51721
51917
|
}
|
|
51722
51918
|
// Get the pixel position of the handles
|
|
51723
|
-
pxMin =
|
|
51724
|
-
pxMax =
|
|
51919
|
+
pxMin = (pxMin ?? xAxis.toPixels(min, true));
|
|
51920
|
+
pxMax = (pxMax ?? xAxis.toPixels(max, true));
|
|
51725
51921
|
// Verify (#1851, #2238)
|
|
51726
51922
|
if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {
|
|
51727
51923
|
pxMin = 0;
|
|
@@ -52000,11 +52196,10 @@ class Navigator {
|
|
|
52000
52196
|
navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);
|
|
52001
52197
|
}
|
|
52002
52198
|
if (navigator.hasDragged &&
|
|
52003
|
-
|
|
52199
|
+
(navigator.scrollbarOptions?.liveRedraw ?? (
|
|
52004
52200
|
// By default, don't run live redraw on touch
|
|
52005
52201
|
// devices or if the chart is in boost.
|
|
52006
|
-
!Navigator_isTouchDevice &&
|
|
52007
|
-
!this.chart.boosted)) {
|
|
52202
|
+
!Navigator_isTouchDevice && !this.chart.boosted))) {
|
|
52008
52203
|
e.DOMType = e.type;
|
|
52009
52204
|
setTimeout(function () {
|
|
52010
52205
|
navigator.onMouseUp(e);
|
|
@@ -52193,8 +52388,10 @@ class Navigator {
|
|
|
52193
52388
|
offset: 0,
|
|
52194
52389
|
index: yAxisIndex,
|
|
52195
52390
|
isInternal: true,
|
|
52196
|
-
reversed:
|
|
52197
|
-
navigatorOptions.yAxis.reversed)
|
|
52391
|
+
reversed: ((navigatorOptions.yAxis &&
|
|
52392
|
+
navigatorOptions.yAxis.reversed) ??
|
|
52393
|
+
(chart.yAxis[0] && chart.yAxis[0].reversed) ??
|
|
52394
|
+
false), // #14060
|
|
52198
52395
|
zoomEnabled: false
|
|
52199
52396
|
}, chart.inverted ? {
|
|
52200
52397
|
width: height
|
|
@@ -52280,7 +52477,9 @@ class Navigator {
|
|
|
52280
52477
|
*/
|
|
52281
52478
|
setOpposite() {
|
|
52282
52479
|
const navigatorOptions = this.navigatorOptions, navigatorEnabled = this.navigatorEnabled, chart = this.chart;
|
|
52283
|
-
this.opposite =
|
|
52480
|
+
this.opposite =
|
|
52481
|
+
navigatorOptions.opposite ??
|
|
52482
|
+
Boolean(!navigatorEnabled && chart.inverted); // #6262
|
|
52284
52483
|
}
|
|
52285
52484
|
/**
|
|
52286
52485
|
* Get the union data extremes of the chart - the outer data extremes of the
|
|
@@ -52294,9 +52493,8 @@ class Navigator {
|
|
|
52294
52493
|
let ret;
|
|
52295
52494
|
if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
|
|
52296
52495
|
ret = {
|
|
52297
|
-
dataMin:
|
|
52298
|
-
time.parse(navAxisOptions?.
|
|
52299
|
-
dataMax: pick(time.parse(navAxisOptions?.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
|
|
52496
|
+
dataMin: (time.parse(navAxisOptions?.min) ?? numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
|
|
52497
|
+
dataMax: (time.parse(navAxisOptions?.max) ?? numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
|
|
52300
52498
|
};
|
|
52301
52499
|
}
|
|
52302
52500
|
return ret;
|
|
@@ -52411,11 +52609,9 @@ class Navigator {
|
|
|
52411
52609
|
userNavOptions.dataLabels = splat(userNavOptions.dataLabels);
|
|
52412
52610
|
mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);
|
|
52413
52611
|
// Once nav series type is resolved, pick correct pointRange
|
|
52414
|
-
mergedNavSeriesOptions.pointRange =
|
|
52415
|
-
|
|
52416
|
-
|
|
52417
|
-
// Fallback to default values, e.g. `null` for column
|
|
52418
|
-
Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
|
|
52612
|
+
mergedNavSeriesOptions.pointRange = (userNavOptions.pointRange ??
|
|
52613
|
+
baseNavigatorOptions.pointRange ??
|
|
52614
|
+
Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
|
|
52419
52615
|
// Merge data separately. Do a slice to avoid mutating the
|
|
52420
52616
|
// navigator options from base series (#4923).
|
|
52421
52617
|
const navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data, navigatorSeriesDataTable = baseNavigatorOptions.dataTable ||
|
|
@@ -52575,7 +52771,7 @@ class Navigator {
|
|
|
52575
52771
|
* @function Highcharts.Navigator#modifyBaseAxisExtremes
|
|
52576
52772
|
*/
|
|
52577
52773
|
modifyBaseAxisExtremes() {
|
|
52578
|
-
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 =
|
|
52774
|
+
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,
|
|
52579
52775
|
// When the extremes have been set by range selector button, don't
|
|
52580
52776
|
// stick to min or max. The range selector buttons will handle the
|
|
52581
52777
|
// extremes. (#5489)
|
|
@@ -52627,8 +52823,8 @@ class Navigator {
|
|
|
52627
52823
|
Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
|
|
52628
52824
|
// If the scrollbar is scrolled all the way to the right, keep right as
|
|
52629
52825
|
// new data comes in, unless user set navigator.stickToMax to false.
|
|
52630
|
-
navigator.stickToMax =
|
|
52631
|
-
this.chart.options.navigator.stickToMax
|
|
52826
|
+
navigator.stickToMax = (this.chart.options.navigator &&
|
|
52827
|
+
this.chart.options.navigator.stickToMax) ?? shouldStickToMax;
|
|
52632
52828
|
navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);
|
|
52633
52829
|
// Set the navigator series data to the new data of the base series
|
|
52634
52830
|
if (navigatorSeries && !navigator.hasNavigatorData) {
|
|
@@ -52942,7 +53138,7 @@ class StandaloneNavigator {
|
|
|
52942
53138
|
if (!(axis instanceof Axis_Axis)) {
|
|
52943
53139
|
return;
|
|
52944
53140
|
}
|
|
52945
|
-
const { min, max } =
|
|
53141
|
+
const navigator = this.navigator, { min, max } = navigator.xAxis, removeEventCallbacks = [];
|
|
52946
53142
|
if (twoWay) {
|
|
52947
53143
|
const removeSetExtremesEvent = addEvent(axis, 'setExtremes', (e) => {
|
|
52948
53144
|
if (e.trigger === 'pan' ||
|
|
@@ -52955,7 +53151,7 @@ class StandaloneNavigator {
|
|
|
52955
53151
|
});
|
|
52956
53152
|
removeEventCallbacks.push(removeSetExtremesEvent);
|
|
52957
53153
|
}
|
|
52958
|
-
const removeSetRangeEvent = addEvent(
|
|
53154
|
+
const removeSetRangeEvent = addEvent(navigator, 'setRange', (e) => {
|
|
52959
53155
|
axis.setExtremes(e.min, e.max, e.redraw, e.animation);
|
|
52960
53156
|
});
|
|
52961
53157
|
removeEventCallbacks.push(removeSetRangeEvent);
|
|
@@ -52964,6 +53160,13 @@ class StandaloneNavigator {
|
|
|
52964
53160
|
})[0];
|
|
52965
53161
|
if (!boundAxis) {
|
|
52966
53162
|
boundAxis = { axis, callbacks: [] };
|
|
53163
|
+
// A navigator bound to a yAxis defines the full range the axis
|
|
53164
|
+
// should cover. Stash the axis' own bounds before overriding them,
|
|
53165
|
+
// so `unbind` can restore them, #24716
|
|
53166
|
+
if (axis.coll === 'yAxis') {
|
|
53167
|
+
boundAxis.oldMin = axis.options.min ?? axis.min;
|
|
53168
|
+
boundAxis.oldMax = axis.options.max ?? axis.max;
|
|
53169
|
+
}
|
|
52967
53170
|
this.boundAxes.push(boundAxis);
|
|
52968
53171
|
}
|
|
52969
53172
|
boundAxis.callbacks = removeEventCallbacks;
|
|
@@ -52973,6 +53176,12 @@ class StandaloneNavigator {
|
|
|
52973
53176
|
nav.addSeries(series.options);
|
|
52974
53177
|
}
|
|
52975
53178
|
});
|
|
53179
|
+
// Bind a yAxis to the navigator's full range so vertical panning isn't
|
|
53180
|
+
// capped at the series' data extremes, #24716
|
|
53181
|
+
if (axis.coll === 'yAxis') {
|
|
53182
|
+
const { dataMin, dataMax } = navigator.xAxis.getExtremes();
|
|
53183
|
+
axis.update({ min: dataMin, max: dataMax }, false);
|
|
53184
|
+
}
|
|
52976
53185
|
// Set extremes to match the navigator's extremes
|
|
52977
53186
|
axis.setExtremes(min, max);
|
|
52978
53187
|
// Unbind the axis before it's destroyed
|
|
@@ -52994,12 +53203,15 @@ class StandaloneNavigator {
|
|
|
52994
53203
|
* Passing a Chart object unbinds the first X axis of the chart,
|
|
52995
53204
|
* an Axis object unbinds that specific axis,
|
|
52996
53205
|
* and undefined unbinds all axes bound to the navigator.
|
|
53206
|
+
* @param {boolean} restoreExtremes
|
|
53207
|
+
* Whether to restore the axis' original min/max that were
|
|
53208
|
+
* overridden when binding a yAxis.
|
|
52997
53209
|
*/
|
|
52998
|
-
unbind(axisOrChart) {
|
|
53210
|
+
unbind(axisOrChart, restoreExtremes) {
|
|
52999
53211
|
// If no axis or chart is provided, unbind all bound axes
|
|
53000
53212
|
if (!axisOrChart) {
|
|
53001
|
-
this.boundAxes.forEach((
|
|
53002
|
-
|
|
53213
|
+
this.boundAxes.forEach((boundAxis) => {
|
|
53214
|
+
this.releaseAxis(boundAxis, restoreExtremes);
|
|
53003
53215
|
});
|
|
53004
53216
|
this.boundAxes.length = 0;
|
|
53005
53217
|
return;
|
|
@@ -53009,20 +53221,45 @@ class StandaloneNavigator {
|
|
|
53009
53221
|
axisOrChart.xAxis[0];
|
|
53010
53222
|
for (let i = this.boundAxes.length - 1; i >= 0; i--) {
|
|
53011
53223
|
if (this.boundAxes[i].axis === axis) {
|
|
53012
|
-
this.boundAxes[i]
|
|
53224
|
+
this.releaseAxis(this.boundAxes[i], restoreExtremes);
|
|
53013
53225
|
this.boundAxes.splice(i, 1);
|
|
53014
53226
|
}
|
|
53015
53227
|
}
|
|
53016
53228
|
}
|
|
53229
|
+
/**
|
|
53230
|
+
* Disconnect a bound axis' events and restore the axis' own bounds that
|
|
53231
|
+
* were overridden when binding a yAxis.
|
|
53232
|
+
*
|
|
53233
|
+
* @internal
|
|
53234
|
+
*
|
|
53235
|
+
* @param {BoundAxis} boundAxis
|
|
53236
|
+
* The bound axis entry to release.
|
|
53237
|
+
* @param {boolean} [restoreExtremes=false]
|
|
53238
|
+
* Whether to restore the axis' original min/max that were
|
|
53239
|
+
* overridden when binding a yAxis.
|
|
53240
|
+
*/
|
|
53241
|
+
releaseAxis(boundAxis, restoreExtremes = false) {
|
|
53242
|
+
// Disconnect events
|
|
53243
|
+
boundAxis.callbacks.forEach((removeCallback) => removeCallback());
|
|
53244
|
+
// Restore the axis' original min/max that were overridden in `bind`
|
|
53245
|
+
if (boundAxis.axis.coll === 'yAxis' && restoreExtremes) {
|
|
53246
|
+
const min = boundAxis.oldMin ?? void 0, max = boundAxis.oldMax ?? void 0;
|
|
53247
|
+
boundAxis.axis.update({ min, max }, false);
|
|
53248
|
+
boundAxis.axis.setExtremes(min, max);
|
|
53249
|
+
}
|
|
53250
|
+
}
|
|
53017
53251
|
/**
|
|
53018
53252
|
* Destroys allocated standalone navigator elements.
|
|
53019
53253
|
*
|
|
53020
53254
|
* @function Highcharts.StandaloneNavigator#destroy
|
|
53255
|
+
*
|
|
53256
|
+
* @param {boolean} restoreExtremes
|
|
53257
|
+
* Whether to restore the axis' original min/max that were
|
|
53258
|
+
* overridden when binding a yAxis.
|
|
53021
53259
|
*/
|
|
53022
|
-
destroy() {
|
|
53023
|
-
|
|
53024
|
-
|
|
53025
|
-
callbacks.forEach((removeCallback) => removeCallback());
|
|
53260
|
+
destroy(restoreExtremes) {
|
|
53261
|
+
this.boundAxes.forEach((boundAxis) => {
|
|
53262
|
+
this.releaseAxis(boundAxis, restoreExtremes);
|
|
53026
53263
|
});
|
|
53027
53264
|
this.boundAxes.length = 0;
|
|
53028
53265
|
this.navigator.destroy();
|
|
@@ -53065,7 +53302,7 @@ class StandaloneNavigator {
|
|
|
53065
53302
|
* Options for the series to be added to the navigator.
|
|
53066
53303
|
*/
|
|
53067
53304
|
addSeries(seriesOptions) {
|
|
53068
|
-
this.navigator.chart.addSeries(merge(seriesOptions, { showInNavigator:
|
|
53305
|
+
this.navigator.chart.addSeries(merge(seriesOptions, { showInNavigator: (seriesOptions.showInNavigator ?? true) }));
|
|
53069
53306
|
this.navigator.setBaseSeries();
|
|
53070
53307
|
}
|
|
53071
53308
|
/**
|
|
@@ -53104,8 +53341,8 @@ class StandaloneNavigator {
|
|
|
53104
53341
|
getRange() {
|
|
53105
53342
|
const { min, max } = this.navigator.chart.xAxis[0].getExtremes(), { userMin, userMax, min: dataMin, max: dataMax } = this.navigator.xAxis.getExtremes();
|
|
53106
53343
|
return {
|
|
53107
|
-
min:
|
|
53108
|
-
max:
|
|
53344
|
+
min: (min ?? dataMin),
|
|
53345
|
+
max: (max ?? dataMax),
|
|
53109
53346
|
dataMin,
|
|
53110
53347
|
dataMax,
|
|
53111
53348
|
userMin,
|
|
@@ -53169,9 +53406,10 @@ class StandaloneNavigator {
|
|
|
53169
53406
|
''; // Detach doclets above
|
|
53170
53407
|
|
|
53171
53408
|
;// ./code/es-modules/masters/modules/navigator.src.js
|
|
53409
|
+
/* unused harmony import specifier */ var Highcharts;
|
|
53172
53410
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
53173
53411
|
/**
|
|
53174
|
-
* @license Highcharts JS v13.0.
|
|
53412
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
53175
53413
|
* @module highcharts/modules/navigator
|
|
53176
53414
|
* @requires highcharts
|
|
53177
53415
|
*
|