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
package/esm/highcharts.src.js
CHANGED
|
@@ -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/highcharts
|
|
5
5
|
*
|
|
6
6
|
* (c) 2009-2026 Highsoft AS
|
|
@@ -8,29 +8,6 @@
|
|
|
8
8
|
* A commercial license may be required depending on use,
|
|
9
9
|
* see www.highcharts.com/license
|
|
10
10
|
*/
|
|
11
|
-
/******/ // The require scope
|
|
12
|
-
/******/ var __webpack_require__ = {};
|
|
13
|
-
/******/
|
|
14
|
-
/************************************************************************/
|
|
15
|
-
/******/ /* webpack/runtime/define property getters */
|
|
16
|
-
/******/ (() => {
|
|
17
|
-
/******/ // define getter functions for harmony exports
|
|
18
|
-
/******/ __webpack_require__.d = (exports, definition) => {
|
|
19
|
-
/******/ for(var key in definition) {
|
|
20
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
21
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
22
|
-
/******/ }
|
|
23
|
-
/******/ }
|
|
24
|
-
/******/ };
|
|
25
|
-
/******/ })();
|
|
26
|
-
/******/
|
|
27
|
-
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
28
|
-
/******/ (() => {
|
|
29
|
-
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
30
|
-
/******/ })();
|
|
31
|
-
/******/
|
|
32
|
-
/************************************************************************/
|
|
33
|
-
var __webpack_exports__ = {};
|
|
34
11
|
|
|
35
12
|
;// ./code/es-modules/Core/Globals.js
|
|
36
13
|
/* *
|
|
@@ -61,7 +38,7 @@ var Globals;
|
|
|
61
38
|
* Constants
|
|
62
39
|
*
|
|
63
40
|
* */
|
|
64
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.
|
|
41
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
|
|
65
42
|
window :
|
|
66
43
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
67
44
|
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 = [
|
|
@@ -388,6 +365,29 @@ const ChartDefaults = {
|
|
|
388
365
|
* @context Highcharts.Chart
|
|
389
366
|
* @apioption chart.events.load
|
|
390
367
|
*/
|
|
368
|
+
/**
|
|
369
|
+
* Fires while the chart is panned by mouse drag. Panning must be
|
|
370
|
+
* enabled through [chart.panning](#chart.panning). One parameter,
|
|
371
|
+
* `event`, is passed to the function, containing common event
|
|
372
|
+
* information as well as `event.originalEvent`, the underlying pointer
|
|
373
|
+
* event. Note that the event fires for every mouse move during the
|
|
374
|
+
* drag, not once per gesture.
|
|
375
|
+
*
|
|
376
|
+
* Calling `event.preventDefault()` or returning false prevents the
|
|
377
|
+
* default panning of the axes. In Highcharts Maps, and on ordinal axes
|
|
378
|
+
* in Highcharts Stock, the panning is applied outside the default
|
|
379
|
+
* action and is not prevented.
|
|
380
|
+
*
|
|
381
|
+
* Panning by touch does not fire this event, unless
|
|
382
|
+
* [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
|
|
383
|
+
* no zoom type is set. Single-finger drags are then handled as mouse
|
|
384
|
+
* drags and fire this event.
|
|
385
|
+
*
|
|
386
|
+
* @type {Highcharts.ChartPanCallbackFunction}
|
|
387
|
+
* @since 7.0.2
|
|
388
|
+
* @context Highcharts.Chart
|
|
389
|
+
* @apioption chart.events.pan
|
|
390
|
+
*/
|
|
391
391
|
/**
|
|
392
392
|
* Fires when the chart is redrawn, either after a call to
|
|
393
393
|
* `chart.redraw()` or after an axis, series or point is modified with
|
|
@@ -976,7 +976,7 @@ const ChartDefaults = {
|
|
|
976
976
|
* @type {Highcharts.ColorType}
|
|
977
977
|
* @since 2.1.7
|
|
978
978
|
*/
|
|
979
|
-
selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
979
|
+
selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
980
980
|
/**
|
|
981
981
|
* Whether to apply a drop shadow to the global series group. This causes
|
|
982
982
|
* all the series to have the same shadow. Contrary to the `series.shadow`
|
|
@@ -2402,7 +2402,7 @@ function getStyle(el, prop, toInt) {
|
|
|
2402
2402
|
const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
|
|
2403
2403
|
if (css) {
|
|
2404
2404
|
style = css.getPropertyValue(prop);
|
|
2405
|
-
if (
|
|
2405
|
+
if (toInt ?? prop !== 'opacity') {
|
|
2406
2406
|
style = pInt(style);
|
|
2407
2407
|
}
|
|
2408
2408
|
}
|
|
@@ -2652,7 +2652,7 @@ function merge(extendOrSource, ...sources) {
|
|
|
2652
2652
|
function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
|
|
2653
2653
|
let i, retInterval = interval;
|
|
2654
2654
|
// Round to a tenfold of 1, 2, 2.5 or 5
|
|
2655
|
-
magnitude =
|
|
2655
|
+
magnitude = (magnitude ?? getMagnitude(interval));
|
|
2656
2656
|
const normalized = interval / magnitude;
|
|
2657
2657
|
// Multiples for a linear scale
|
|
2658
2658
|
if (!multiples) {
|
|
@@ -2765,20 +2765,22 @@ function pad(number, length, padder) {
|
|
|
2765
2765
|
.replace('-', '')
|
|
2766
2766
|
.length).join(padder || '0') + number;
|
|
2767
2767
|
}
|
|
2768
|
-
/* eslint-disable jsdoc
|
|
2768
|
+
/* eslint-disable valid-jsdoc */
|
|
2769
2769
|
/**
|
|
2770
2770
|
* Return the first value that is not null or undefined.
|
|
2771
2771
|
*
|
|
2772
|
+
* @deprecated 13.0.2
|
|
2773
|
+
* Use nullish coalescing (`??`) or explicit fallback logic instead.
|
|
2774
|
+
*
|
|
2772
2775
|
* @function Highcharts.pick<T>
|
|
2773
2776
|
*
|
|
2774
|
-
* @param {...
|
|
2777
|
+
* @param {...(T|null|undefined)} args
|
|
2775
2778
|
* Variable number of arguments to inspect.
|
|
2776
2779
|
*
|
|
2777
2780
|
* @return {T}
|
|
2778
2781
|
* The value of the first argument that is not null or undefined.
|
|
2779
2782
|
*/
|
|
2780
|
-
function pick() {
|
|
2781
|
-
const args = arguments;
|
|
2783
|
+
function pick(...args) {
|
|
2782
2784
|
const length = args.length;
|
|
2783
2785
|
for (let i = 0; i < length; i++) {
|
|
2784
2786
|
const arg = args[i];
|
|
@@ -2787,7 +2789,7 @@ function pick() {
|
|
|
2787
2789
|
}
|
|
2788
2790
|
}
|
|
2789
2791
|
}
|
|
2790
|
-
/* eslint-enable jsdoc
|
|
2792
|
+
/* eslint-enable valid-jsdoc */
|
|
2791
2793
|
/**
|
|
2792
2794
|
* Shortcut for parseInt
|
|
2793
2795
|
*
|
|
@@ -3170,7 +3172,8 @@ function insertItem(item, collection) {
|
|
|
3170
3172
|
!collection[i] ||
|
|
3171
3173
|
// Handle index option, the element to insert has lower index
|
|
3172
3174
|
(isNumber(indexOption) &&
|
|
3173
|
-
indexOption <
|
|
3175
|
+
indexOption < (collection[i].options.index ??
|
|
3176
|
+
collection[i]._i)) ||
|
|
3174
3177
|
// Insert the new item before other internal items
|
|
3175
3178
|
// (navigator)
|
|
3176
3179
|
collection[i].options.isInternal) {
|
|
@@ -3256,7 +3259,7 @@ const uniqueKey = (function () {
|
|
|
3256
3259
|
* State of the serial mode.
|
|
3257
3260
|
*/
|
|
3258
3261
|
function useSerialIds(mode) {
|
|
3259
|
-
return (serialMode =
|
|
3262
|
+
return (serialMode = (mode ?? serialMode));
|
|
3260
3263
|
}
|
|
3261
3264
|
/* *
|
|
3262
3265
|
*
|
|
@@ -3722,6 +3725,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
|
|
|
3722
3725
|
*
|
|
3723
3726
|
* @param {Highcharts.TimeOptions} [options] Time options as defined in
|
|
3724
3727
|
* [chart.options.time](/highcharts/time).
|
|
3728
|
+
*
|
|
3729
|
+
* @param {Highcharts.LangOptions} [lang]
|
|
3730
|
+
* Language options. When `options.locale` is not set, `lang.locale` is used as
|
|
3731
|
+
* the locale fallback for locale-aware date formatting.
|
|
3725
3732
|
*/
|
|
3726
3733
|
class TimeBase {
|
|
3727
3734
|
/* *
|
|
@@ -3740,8 +3747,8 @@ class TimeBase {
|
|
|
3740
3747
|
};
|
|
3741
3748
|
this.variableTimezone = false;
|
|
3742
3749
|
this.Date = TimeBase_win.Date;
|
|
3743
|
-
this.update(options);
|
|
3744
3750
|
this.lang = lang;
|
|
3751
|
+
this.update(options);
|
|
3745
3752
|
}
|
|
3746
3753
|
/* *
|
|
3747
3754
|
*
|
|
@@ -3853,7 +3860,9 @@ class TimeBase {
|
|
|
3853
3860
|
/**
|
|
3854
3861
|
* Shorthand to get a cached `Intl.DateTimeFormat` instance.
|
|
3855
3862
|
*/
|
|
3856
|
-
dateTimeFormat(options, timestamp, locale = this.options.locale ||
|
|
3863
|
+
dateTimeFormat(options, timestamp, locale = (this.options.locale ||
|
|
3864
|
+
this.lang?.locale ||
|
|
3865
|
+
pageLang)) {
|
|
3857
3866
|
const cacheKey = JSON.stringify(options) + locale;
|
|
3858
3867
|
if (isString(options)) {
|
|
3859
3868
|
options = this.str2dtf(options);
|
|
@@ -3939,17 +3948,16 @@ class TimeBase {
|
|
|
3939
3948
|
// eslint-disable-next-line new-cap
|
|
3940
3949
|
let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
|
|
3941
3950
|
if (this.timezone !== 'UTC') {
|
|
3942
|
-
const offset = this.getTimezoneOffset(d);
|
|
3951
|
+
const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
|
|
3943
3952
|
d += offset;
|
|
3944
|
-
// Adjustments close to DST transitions
|
|
3945
3953
|
if (
|
|
3946
|
-
//
|
|
3947
|
-
//
|
|
3954
|
+
// Limit the number of calls to `getTimezoneOffset` to months
|
|
3955
|
+
// where DST changes may occur. According to
|
|
3948
3956
|
// https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
|
|
3949
3957
|
// DST change may only occur in these months.
|
|
3950
3958
|
[2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
|
|
3951
|
-
// DST
|
|
3952
|
-
(
|
|
3959
|
+
// DST changes only occur at night (#24420)
|
|
3960
|
+
(localHours < 5 || localHours > 20)) {
|
|
3953
3961
|
const newOffset = this.getTimezoneOffset(d);
|
|
3954
3962
|
if (offset !== newOffset) {
|
|
3955
3963
|
d += newOffset - offset;
|
|
@@ -6686,6 +6694,9 @@ const defaultOptions = {
|
|
|
6686
6694
|
* below the column, but as `followTouchMove` is true, the tooltip will
|
|
6687
6695
|
* jump from column to column as the user swipes across the plot area.
|
|
6688
6696
|
*
|
|
6697
|
+
* @sample {highcharts} highcharts/tooltip/followtouchmove/
|
|
6698
|
+
* Tooltip follows touch move
|
|
6699
|
+
*
|
|
6689
6700
|
* @type {boolean}
|
|
6690
6701
|
* @default {highcharts} true
|
|
6691
6702
|
* @default {highstock} true
|
|
@@ -7468,10 +7479,14 @@ const defaultOptions = {
|
|
|
7468
7479
|
* @type {Highcharts.CSSObject}
|
|
7469
7480
|
*/
|
|
7470
7481
|
style: {
|
|
7471
|
-
/**
|
|
7482
|
+
/**
|
|
7483
|
+
* @type {Highcharts.ColorType}
|
|
7484
|
+
*/
|
|
7472
7485
|
color: 'var(--highcharts-neutral-color-80)',
|
|
7473
7486
|
cursor: 'default',
|
|
7474
|
-
/**
|
|
7487
|
+
/**
|
|
7488
|
+
* @type {number|string}
|
|
7489
|
+
*/
|
|
7475
7490
|
fontSize: '0.8em'
|
|
7476
7491
|
},
|
|
7477
7492
|
/**
|
|
@@ -7787,6 +7802,41 @@ const DefaultOptions = {
|
|
|
7787
7802
|
* @param {global.Event} event
|
|
7788
7803
|
* The event that occurred.
|
|
7789
7804
|
*/
|
|
7805
|
+
/**
|
|
7806
|
+
* Gets fired while the chart is panned by mouse drag. Calling
|
|
7807
|
+
* `event.preventDefault()` or returning `false` prevents the default panning
|
|
7808
|
+
* of the axes.
|
|
7809
|
+
*
|
|
7810
|
+
* @callback Highcharts.ChartPanCallbackFunction
|
|
7811
|
+
*
|
|
7812
|
+
* @param {Highcharts.Chart} this
|
|
7813
|
+
* The chart on which the event occurred.
|
|
7814
|
+
*
|
|
7815
|
+
* @param {Highcharts.ChartPanEventObject} event
|
|
7816
|
+
* The event that occurred.
|
|
7817
|
+
*/
|
|
7818
|
+
/**
|
|
7819
|
+
* Contains common event information. Through the `originalEvent` property you
|
|
7820
|
+
* can access the pointer event that triggered the panning.
|
|
7821
|
+
*
|
|
7822
|
+
* @interface Highcharts.ChartPanEventObject
|
|
7823
|
+
*/ /**
|
|
7824
|
+
* The pointer event that triggered the panning.
|
|
7825
|
+
* @name Highcharts.ChartPanEventObject#originalEvent
|
|
7826
|
+
* @type {Highcharts.PointerEventObject}
|
|
7827
|
+
*/ /**
|
|
7828
|
+
* Prevents the default behavior of the event.
|
|
7829
|
+
* @name Highcharts.ChartPanEventObject#preventDefault
|
|
7830
|
+
* @type {Function}
|
|
7831
|
+
*/ /**
|
|
7832
|
+
* The event target.
|
|
7833
|
+
* @name Highcharts.ChartPanEventObject#target
|
|
7834
|
+
* @type {Highcharts.Chart}
|
|
7835
|
+
*/ /**
|
|
7836
|
+
* The event type.
|
|
7837
|
+
* @name Highcharts.ChartPanEventObject#type
|
|
7838
|
+
* @type {"pan"}
|
|
7839
|
+
*/
|
|
7790
7840
|
/**
|
|
7791
7841
|
* Fires when the chart is redrawn, either after a call to `chart.redraw()` or
|
|
7792
7842
|
* after an axis, series or point is modified with the `redraw` option set to
|
|
@@ -8162,7 +8212,9 @@ Color.None = new Color(''); // Must be last static for init
|
|
|
8162
8212
|
*/
|
|
8163
8213
|
/**
|
|
8164
8214
|
* A valid color type than can be parsed and handled by Highcharts. It can be a
|
|
8165
|
-
* color string, a gradient object, or a pattern
|
|
8215
|
+
* color string (including CSS expressions), a gradient object, or a pattern
|
|
8216
|
+
* object. Read more about colors in the [Highcharts
|
|
8217
|
+
* documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
8166
8218
|
*
|
|
8167
8219
|
* @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
|
|
8168
8220
|
*/
|
|
@@ -8394,24 +8446,22 @@ class Fx {
|
|
|
8394
8446
|
*/
|
|
8395
8447
|
update() {
|
|
8396
8448
|
const elem = this.elem, prop = this.prop, // If destroyed, it is null
|
|
8397
|
-
now = this.now, step = this.options.step;
|
|
8449
|
+
now = this.now ?? 1, step = this.options.step;
|
|
8398
8450
|
// Animation setter defined from outside
|
|
8399
8451
|
if (this[prop + 'Setter']) {
|
|
8400
8452
|
this[prop + 'Setter']();
|
|
8401
8453
|
// Other animations on SVGElement
|
|
8402
8454
|
}
|
|
8403
|
-
else if (elem.attr) {
|
|
8455
|
+
else if (elem && elem.attr) {
|
|
8404
8456
|
if (elem.element) {
|
|
8405
|
-
elem.attr(prop, now,
|
|
8457
|
+
elem.attr(prop, now, void 0, true);
|
|
8406
8458
|
}
|
|
8407
8459
|
// HTML styles, raw HTML content like container size
|
|
8408
8460
|
}
|
|
8409
|
-
else {
|
|
8410
|
-
elem.style[prop] = now + this.unit;
|
|
8411
|
-
}
|
|
8412
|
-
if (step) {
|
|
8413
|
-
step.call(elem, now, this);
|
|
8461
|
+
else if (elem) {
|
|
8462
|
+
elem.style[prop] = now + (this.unit || '');
|
|
8414
8463
|
}
|
|
8464
|
+
step?.call(elem, now, this);
|
|
8415
8465
|
}
|
|
8416
8466
|
/**
|
|
8417
8467
|
* Run an animation.
|
|
@@ -8429,12 +8479,10 @@ class Fx {
|
|
|
8429
8479
|
*
|
|
8430
8480
|
*/
|
|
8431
8481
|
run(from, to, unit) {
|
|
8432
|
-
const
|
|
8433
|
-
return timer.stopped ? false : self.step(gotoEnd);
|
|
8434
|
-
}, requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8482
|
+
const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8435
8483
|
function (step) {
|
|
8436
8484
|
setTimeout(step, 13);
|
|
8437
|
-
}, step =
|
|
8485
|
+
}, step = () => {
|
|
8438
8486
|
for (let i = 0; i < Fx.timers.length; i++) {
|
|
8439
8487
|
if (!Fx.timers[i]()) {
|
|
8440
8488
|
Fx.timers.splice(i--, 1);
|
|
@@ -8444,11 +8492,11 @@ class Fx {
|
|
|
8444
8492
|
requestAnimationFrame(step);
|
|
8445
8493
|
}
|
|
8446
8494
|
};
|
|
8447
|
-
if (from === to && !
|
|
8448
|
-
delete
|
|
8449
|
-
if (
|
|
8450
|
-
Object.keys(
|
|
8451
|
-
|
|
8495
|
+
if (from === to && !elem['forceAnimate:' + this.prop]) {
|
|
8496
|
+
delete curAnim[this.prop];
|
|
8497
|
+
if (complete &&
|
|
8498
|
+
Object.keys(curAnim).length === 0) {
|
|
8499
|
+
complete.call(elem);
|
|
8452
8500
|
}
|
|
8453
8501
|
}
|
|
8454
8502
|
else { // #7166
|
|
@@ -8458,7 +8506,7 @@ class Fx {
|
|
|
8458
8506
|
this.unit = unit;
|
|
8459
8507
|
this.now = this.start;
|
|
8460
8508
|
this.pos = 0;
|
|
8461
|
-
timer.elem =
|
|
8509
|
+
timer.elem = elem;
|
|
8462
8510
|
timer.prop = this.prop;
|
|
8463
8511
|
if (timer() && Fx.timers.push(timer) === 1) {
|
|
8464
8512
|
requestAnimationFrame(step);
|
|
@@ -8479,7 +8527,8 @@ class Fx {
|
|
|
8479
8527
|
step(gotoEnd) {
|
|
8480
8528
|
const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
|
|
8481
8529
|
let ret, done;
|
|
8482
|
-
|
|
8530
|
+
// #2616, element is destroyed
|
|
8531
|
+
if (elem?.attr && !elem.element) {
|
|
8483
8532
|
ret = false;
|
|
8484
8533
|
}
|
|
8485
8534
|
else if (gotoEnd || t >= duration + this.startTime) {
|
|
@@ -8708,7 +8757,8 @@ Fx.timers = [];
|
|
|
8708
8757
|
* so it should be moved to the SVGRenderer.
|
|
8709
8758
|
*/
|
|
8710
8759
|
function setAnimation(animation, chart) {
|
|
8711
|
-
chart.renderer.globalAnimation =
|
|
8760
|
+
chart.renderer.globalAnimation =
|
|
8761
|
+
animation ?? chart.options.chart.animation ?? true;
|
|
8712
8762
|
}
|
|
8713
8763
|
/**
|
|
8714
8764
|
* Get the animation in object form, where a disabled animation is always
|
|
@@ -8769,6 +8819,11 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8769
8819
|
/**
|
|
8770
8820
|
* The global animate method, which uses Fx to create individual animators.
|
|
8771
8821
|
*
|
|
8822
|
+
* @sample highcharts/members/renderer-basic
|
|
8823
|
+
* SVG elements with animation
|
|
8824
|
+
* @sample highcharts/members/animate
|
|
8825
|
+
* Animation without an owner element
|
|
8826
|
+
*
|
|
8772
8827
|
* @function Highcharts.animate
|
|
8773
8828
|
*
|
|
8774
8829
|
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
|
|
@@ -8784,14 +8839,12 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8784
8839
|
*
|
|
8785
8840
|
* @return {void}
|
|
8786
8841
|
*/
|
|
8787
|
-
function animate(el, params, opt) {
|
|
8788
|
-
let start, unit = '', end, fx, args;
|
|
8842
|
+
function animate(el, params = { pos: 1 }, opt) {
|
|
8789
8843
|
if (!isObject(opt)) { // Number or undefined/null
|
|
8790
|
-
args = arguments;
|
|
8791
8844
|
opt = {
|
|
8792
|
-
duration:
|
|
8793
|
-
easing:
|
|
8794
|
-
complete:
|
|
8845
|
+
duration: arguments[2],
|
|
8846
|
+
easing: arguments[3],
|
|
8847
|
+
complete: arguments[4]
|
|
8795
8848
|
};
|
|
8796
8849
|
}
|
|
8797
8850
|
if (!isNumber(opt.duration)) {
|
|
@@ -8801,22 +8854,23 @@ function animate(el, params, opt) {
|
|
|
8801
8854
|
opt.easing :
|
|
8802
8855
|
(Math[opt.easing] || Math.easeInOutSine);
|
|
8803
8856
|
opt.curAnim = merge(params);
|
|
8804
|
-
objectEach(params,
|
|
8857
|
+
objectEach(params, (val, prop) => {
|
|
8805
8858
|
// Stop current running animation of this property
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8859
|
+
if (el) {
|
|
8860
|
+
stop(el, prop);
|
|
8861
|
+
}
|
|
8862
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d;
|
|
8863
|
+
let start = 0, end = void 0, unit = '';
|
|
8864
|
+
if (prop === 'd' && isArray(d)) {
|
|
8865
|
+
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
8866
|
+
fx.toD = d;
|
|
8813
8867
|
end = 1;
|
|
8814
8868
|
}
|
|
8815
|
-
else if (el
|
|
8869
|
+
else if (el?.attr) {
|
|
8816
8870
|
start = el.attr(prop);
|
|
8817
8871
|
}
|
|
8818
|
-
else {
|
|
8819
|
-
start =
|
|
8872
|
+
else if (el) {
|
|
8873
|
+
start = +(getStyle(el, prop) || 0);
|
|
8820
8874
|
if (prop !== 'opacity') {
|
|
8821
8875
|
unit = 'px';
|
|
8822
8876
|
}
|
|
@@ -8827,7 +8881,10 @@ function animate(el, params, opt) {
|
|
|
8827
8881
|
if (typeof end === 'string' && end.match('px')) {
|
|
8828
8882
|
end = end.replace(/px/g, ''); // #4351
|
|
8829
8883
|
}
|
|
8830
|
-
|
|
8884
|
+
// Empty dashstyle animation crashes treemap on hover
|
|
8885
|
+
if (defined(end)) {
|
|
8886
|
+
fx.run(start, end, unit);
|
|
8887
|
+
}
|
|
8831
8888
|
});
|
|
8832
8889
|
}
|
|
8833
8890
|
/**
|
|
@@ -8851,28 +8908,11 @@ function animate(el, params, opt) {
|
|
|
8851
8908
|
* improvement in all cases where we stop the animation from .attr. Instead of
|
|
8852
8909
|
* stopping everything, we can just stop the actual attributes we're setting.
|
|
8853
8910
|
*/
|
|
8854
|
-
|
|
8855
|
-
|
|
8856
|
-
|
|
8857
|
-
while (i--) {
|
|
8858
|
-
if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
|
|
8859
|
-
Animation_Fx.timers[i].stopped = true; // #4667
|
|
8860
|
-
}
|
|
8911
|
+
const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
|
|
8912
|
+
if (timer.elem === el && (!prop || prop === timer.prop)) {
|
|
8913
|
+
timer.stopped = true; // #4667
|
|
8861
8914
|
}
|
|
8862
|
-
}
|
|
8863
|
-
const animationExports = {
|
|
8864
|
-
animate,
|
|
8865
|
-
animObject,
|
|
8866
|
-
getDeferredAnimation,
|
|
8867
|
-
setAnimation,
|
|
8868
|
-
stop
|
|
8869
|
-
};
|
|
8870
|
-
/* *
|
|
8871
|
-
*
|
|
8872
|
-
* Default Export
|
|
8873
|
-
*
|
|
8874
|
-
* */
|
|
8875
|
-
/* harmony default export */ const AnimationUtilities = (animationExports);
|
|
8915
|
+
});
|
|
8876
8916
|
/* *
|
|
8877
8917
|
*
|
|
8878
8918
|
* API Options
|
|
@@ -9177,7 +9217,9 @@ class AST {
|
|
|
9177
9217
|
doc = { body };
|
|
9178
9218
|
}
|
|
9179
9219
|
const appendChildNodes = (node, addTo) => {
|
|
9180
|
-
|
|
9220
|
+
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
9221
|
+
const tagName = node.localName ||
|
|
9222
|
+
node.nodeName.toLowerCase();
|
|
9181
9223
|
// Add allowed tags
|
|
9182
9224
|
const astNode = {
|
|
9183
9225
|
tagName
|
|
@@ -9291,6 +9333,8 @@ AST.allowedAttributes = [
|
|
|
9291
9333
|
'src',
|
|
9292
9334
|
'startOffset',
|
|
9293
9335
|
'stdDeviation',
|
|
9336
|
+
'stop-color',
|
|
9337
|
+
'stop-opacity',
|
|
9294
9338
|
'stroke-linecap',
|
|
9295
9339
|
'stroke-width',
|
|
9296
9340
|
'stroke',
|
|
@@ -9777,7 +9821,7 @@ function format(str = '', ctx, owner) {
|
|
|
9777
9821
|
replacement = `"${replacement}"`;
|
|
9778
9822
|
}
|
|
9779
9823
|
}
|
|
9780
|
-
str = str.replace(match.find,
|
|
9824
|
+
str = str.replace(match.find, (replacement ?? ''));
|
|
9781
9825
|
});
|
|
9782
9826
|
return hasSub ? format(str, ctx, owner) : str;
|
|
9783
9827
|
}
|
|
@@ -9894,9 +9938,7 @@ const Templating = {
|
|
|
9894
9938
|
* API Declarations
|
|
9895
9939
|
* */
|
|
9896
9940
|
/**
|
|
9897
|
-
*
|
|
9898
|
-
*
|
|
9899
|
-
* The Highcharts.Templating interface provides a structure for defining
|
|
9941
|
+
* The Highcharts.TemplatingObject interface provides a structure for defining
|
|
9900
9942
|
* helpers. Helpers can be used as conditional blocks or functions within
|
|
9901
9943
|
* expressions. Highcharts includes several built-in helpers and supports
|
|
9902
9944
|
* the addition of custom helpers.
|
|
@@ -9904,16 +9946,21 @@ const Templating = {
|
|
|
9904
9946
|
* @see [More information](
|
|
9905
9947
|
* https://www.highcharts.com/docs/chart-concepts/templating#helpers)
|
|
9906
9948
|
*
|
|
9907
|
-
* @
|
|
9908
|
-
|
|
9909
|
-
|
|
9910
|
-
|
|
9911
|
-
|
|
9912
|
-
|
|
9913
|
-
|
|
9914
|
-
|
|
9915
|
-
|
|
9916
|
-
|
|
9949
|
+
* @interface Highcharts.TemplatingObject
|
|
9950
|
+
*/ /**
|
|
9951
|
+
* @example
|
|
9952
|
+
* // Define a custom helper to return the absolute value of a number
|
|
9953
|
+
* Highcharts.Templating.helpers.abs = value => Math.abs(value);
|
|
9954
|
+
*
|
|
9955
|
+
* // Usage in a format string
|
|
9956
|
+
* format: 'Absolute value: {abs point.y}'
|
|
9957
|
+
*
|
|
9958
|
+
* @name Highcharts.TemplatingObject#helpers
|
|
9959
|
+
* @type {Record<string, Function>}
|
|
9960
|
+
*/ /**
|
|
9961
|
+
* @name Highcharts.Templating
|
|
9962
|
+
* @type {Highcharts.TemplatingObject}
|
|
9963
|
+
*/
|
|
9917
9964
|
(''); // Keeps doclets above in file
|
|
9918
9965
|
|
|
9919
9966
|
;// ./code/es-modules/Core/Renderer/RendererUtilities.js
|
|
@@ -10023,7 +10070,7 @@ var RendererUtilities;
|
|
|
10023
10070
|
boxes = boxes.map((box) => ({
|
|
10024
10071
|
size: box.size,
|
|
10025
10072
|
targets: [box.target],
|
|
10026
|
-
align:
|
|
10073
|
+
align: (box.align ?? 0.5)
|
|
10027
10074
|
}));
|
|
10028
10075
|
while (overlapping) {
|
|
10029
10076
|
// Initial positions: target centered in box
|
|
@@ -10122,7 +10169,6 @@ var RendererUtilities;
|
|
|
10122
10169
|
* */
|
|
10123
10170
|
|
|
10124
10171
|
|
|
10125
|
-
const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
|
|
10126
10172
|
|
|
10127
10173
|
|
|
10128
10174
|
const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
|
|
@@ -10182,8 +10228,10 @@ class SVGElement {
|
|
|
10182
10228
|
* Property value.
|
|
10183
10229
|
*/
|
|
10184
10230
|
_defaultGetter(key) {
|
|
10185
|
-
let ret =
|
|
10186
|
-
|
|
10231
|
+
let ret = (this[key + 'Value'] ??
|
|
10232
|
+
this[key] ??
|
|
10233
|
+
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10234
|
+
0);
|
|
10187
10235
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10188
10236
|
ret = parseFloat(ret);
|
|
10189
10237
|
}
|
|
@@ -10346,7 +10394,7 @@ class SVGElement {
|
|
|
10346
10394
|
}
|
|
10347
10395
|
alignTo = void 0; // Do not use the box
|
|
10348
10396
|
}
|
|
10349
|
-
const alignToBox =
|
|
10397
|
+
const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
|
|
10350
10398
|
// Default: left align
|
|
10351
10399
|
x = (alignToBox.x || 0) + (alignOptions.x || 0) +
|
|
10352
10400
|
((alignToBox.width || 0) - (alignOptions.width || 0)) *
|
|
@@ -10406,7 +10454,7 @@ class SVGElement {
|
|
|
10406
10454
|
* Returns the SVGElement for chaining.
|
|
10407
10455
|
*/
|
|
10408
10456
|
animate(params, options, complete) {
|
|
10409
|
-
const animOptions =
|
|
10457
|
+
const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
|
|
10410
10458
|
// When the page is hidden save resources in the background by not
|
|
10411
10459
|
// running animation at all (#9749).
|
|
10412
10460
|
if (SVGElement_doc.hidden) {
|
|
@@ -10421,7 +10469,7 @@ class SVGElement {
|
|
|
10421
10469
|
// If defer option is defined delay the animation #12901
|
|
10422
10470
|
syncTimeout(() => {
|
|
10423
10471
|
if (this.element) {
|
|
10424
|
-
|
|
10472
|
+
animate(this, params, animOptions);
|
|
10425
10473
|
}
|
|
10426
10474
|
}, deferTime);
|
|
10427
10475
|
}
|
|
@@ -10595,7 +10643,7 @@ class SVGElement {
|
|
|
10595
10643
|
// Unless .attr is from the animator update, stop current
|
|
10596
10644
|
// running animation of this property
|
|
10597
10645
|
if (!continueAnimation) {
|
|
10598
|
-
|
|
10646
|
+
stop(this, key);
|
|
10599
10647
|
}
|
|
10600
10648
|
// Special handling of symbol attributes
|
|
10601
10649
|
if (this.symbolName &&
|
|
@@ -10898,7 +10946,7 @@ class SVGElement {
|
|
|
10898
10946
|
.split(','); // Ending comma
|
|
10899
10947
|
i = v.length;
|
|
10900
10948
|
while (i--) {
|
|
10901
|
-
v[i] = '' + (pInt(v[i]) *
|
|
10949
|
+
v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
|
|
10902
10950
|
}
|
|
10903
10951
|
value = v.join(',').replace(/NaN/g, 'none'); // #3226
|
|
10904
10952
|
this.element.setAttribute('stroke-dasharray', value);
|
|
@@ -10915,7 +10963,7 @@ class SVGElement {
|
|
|
10915
10963
|
// Remove events
|
|
10916
10964
|
element.onclick = element.onmouseout = element.onmouseover =
|
|
10917
10965
|
element.onmousemove = element.point = null;
|
|
10918
|
-
|
|
10966
|
+
stop(wrapper); // Stop running animations
|
|
10919
10967
|
if (wrapper.clipPath && ownerSVGElement) {
|
|
10920
10968
|
const clipPath = wrapper.clipPath;
|
|
10921
10969
|
// Look for existing references to this clipPath and remove them
|
|
@@ -11038,7 +11086,7 @@ class SVGElement {
|
|
|
11038
11086
|
* The bounding box with `x`, `y`, `width` and `height` properties.
|
|
11039
11087
|
*/
|
|
11040
11088
|
getBBox(reload, rot) {
|
|
11041
|
-
const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation =
|
|
11089
|
+
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 &&
|
|
11042
11090
|
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
|
|
11043
11091
|
renderer.rootFontSize,
|
|
11044
11092
|
this.textWidth, // #7874, also useHTML
|
|
@@ -11564,7 +11612,7 @@ class SVGElement {
|
|
|
11564
11612
|
symbolAttr(hash) {
|
|
11565
11613
|
const wrapper = this;
|
|
11566
11614
|
SVGElement.symbolCustomAttribs.forEach(function (key) {
|
|
11567
|
-
wrapper[key] =
|
|
11615
|
+
wrapper[key] = (hash[key] ?? wrapper[key]);
|
|
11568
11616
|
});
|
|
11569
11617
|
wrapper.attr({
|
|
11570
11618
|
d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
|
|
@@ -11604,7 +11652,7 @@ class SVGElement {
|
|
|
11604
11652
|
}
|
|
11605
11653
|
// Replace text content and escape markup
|
|
11606
11654
|
titleNode.textContent = replaceNested(// Scan #[73]
|
|
11607
|
-
|
|
11655
|
+
(value ?? ''), // #3276, #3895
|
|
11608
11656
|
[/<[^>]*>/g, '']).replace(/</g, '<').replace(/>/g, '>');
|
|
11609
11657
|
}
|
|
11610
11658
|
/**
|
|
@@ -12382,7 +12430,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12382
12430
|
if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
|
|
12383
12431
|
this.updateBoxSize();
|
|
12384
12432
|
}
|
|
12385
|
-
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft =
|
|
12433
|
+
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
|
|
12386
12434
|
let bBox = {
|
|
12387
12435
|
width,
|
|
12388
12436
|
height,
|
|
@@ -12435,7 +12483,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12435
12483
|
this.attr({
|
|
12436
12484
|
// Alignment is available now (#3295, 0 not rendered if given
|
|
12437
12485
|
// as a value)
|
|
12438
|
-
text:
|
|
12486
|
+
text: (this.textStr ?? ''),
|
|
12439
12487
|
x: this.x || 0,
|
|
12440
12488
|
y: this.y || 0
|
|
12441
12489
|
});
|
|
@@ -12591,8 +12639,8 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12591
12639
|
/** @internal */
|
|
12592
12640
|
getPaddedWidth() {
|
|
12593
12641
|
const padding = this.padding;
|
|
12594
|
-
const paddingLeft =
|
|
12595
|
-
const paddingRight =
|
|
12642
|
+
const paddingLeft = (this.paddingLeft ?? padding);
|
|
12643
|
+
const paddingRight = (this.paddingRight ?? padding);
|
|
12596
12644
|
return ((this.widthSetting || this.bBox.width || 0) +
|
|
12597
12645
|
paddingLeft +
|
|
12598
12646
|
paddingRight);
|
|
@@ -12693,7 +12741,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12693
12741
|
const arc = [];
|
|
12694
12742
|
if (options) {
|
|
12695
12743
|
let start = options.start || 0, end = options.end || 0;
|
|
12696
|
-
const rx =
|
|
12744
|
+
const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
|
|
12697
12745
|
// Subtract a small number to prevent cos and sin of start and end
|
|
12698
12746
|
// from becoming equal on 360 arcs (#1561). See "Arc proximity"
|
|
12699
12747
|
// tests at samples/unit-tests/svgrenderer/symbol/demo.js
|
|
@@ -12703,16 +12751,17 @@ function arc(cx, cy, w, h, options) {
|
|
|
12703
12751
|
start = Math.PI / 2;
|
|
12704
12752
|
end = Math.PI * 2.5 - proximity;
|
|
12705
12753
|
}
|
|
12706
|
-
const innerRadius = options.innerR, open =
|
|
12754
|
+
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),
|
|
12707
12755
|
// Proximity takes care of rounding errors around PI (#6971)
|
|
12708
|
-
longArc =
|
|
12756
|
+
longArc = options.longArc ??
|
|
12757
|
+
(end - start - Math.PI < proximity ? 0 : 1);
|
|
12709
12758
|
let arcSegment = [
|
|
12710
12759
|
'A', // ArcTo
|
|
12711
12760
|
rx, // X radius
|
|
12712
12761
|
ry, // Y radius
|
|
12713
12762
|
0, // Slanting
|
|
12714
12763
|
longArc, // Long or short arc
|
|
12715
|
-
|
|
12764
|
+
(options.clockwise ?? 1), // Clockwise
|
|
12716
12765
|
// Use a static pixel offset for full circle (#21701)
|
|
12717
12766
|
cx + (fullCircle ? 0.001 : rx * cosEnd),
|
|
12718
12767
|
cy + ry * sinEnd
|
|
@@ -13243,7 +13292,7 @@ class TextBuilder {
|
|
|
13243
13292
|
* @internal
|
|
13244
13293
|
*/
|
|
13245
13294
|
buildSVG() {
|
|
13246
|
-
const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr =
|
|
13295
|
+
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,
|
|
13247
13296
|
// The buildText code is quite heavy, so if we're not changing
|
|
13248
13297
|
// something that affects the text, skip it (#6113).
|
|
13249
13298
|
textCache = [
|
|
@@ -13827,7 +13876,7 @@ class SVGRenderer {
|
|
|
13827
13876
|
this.url = this.getReferenceURL();
|
|
13828
13877
|
// Add description
|
|
13829
13878
|
const desc = this.createElement('desc').add();
|
|
13830
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.
|
|
13879
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
|
|
13831
13880
|
this.defs = this.createElement('defs').add();
|
|
13832
13881
|
this.allowHTML = allowHTML;
|
|
13833
13882
|
this.forExport = forExport;
|
|
@@ -14613,7 +14662,7 @@ class SVGRenderer {
|
|
|
14613
14662
|
this.attr('height')
|
|
14614
14663
|
});
|
|
14615
14664
|
},
|
|
14616
|
-
duration:
|
|
14665
|
+
duration: (animate ?? true) ? void 0 : 0
|
|
14617
14666
|
});
|
|
14618
14667
|
renderer.alignElements();
|
|
14619
14668
|
}
|
|
@@ -14771,8 +14820,8 @@ class SVGRenderer {
|
|
|
14771
14820
|
// The image width is not always the same as the symbol width. The
|
|
14772
14821
|
// image may be centered within the symbol, as is the case when
|
|
14773
14822
|
// image shapes are used as label backgrounds, for example in flags.
|
|
14774
|
-
img.imgwidth =
|
|
14775
|
-
img.imgheight =
|
|
14823
|
+
img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
|
|
14824
|
+
img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
|
|
14776
14825
|
/**
|
|
14777
14826
|
* Set the size and position
|
|
14778
14827
|
*/
|
|
@@ -15618,7 +15667,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15618
15667
|
.attr({
|
|
15619
15668
|
text: str,
|
|
15620
15669
|
x: Math.round(x),
|
|
15621
|
-
y: Math.round(y)
|
|
15670
|
+
y: Math.round(y),
|
|
15671
|
+
// The namespace attribute is required for serialization
|
|
15672
|
+
// (export and side-by-side comparison), otherwise it
|
|
15673
|
+
// inherits the SVG namespace from foreignObject.
|
|
15674
|
+
xmlns: 'http://www.w3.org/1999/xhtml'
|
|
15622
15675
|
});
|
|
15623
15676
|
};
|
|
15624
15677
|
}
|
|
@@ -15798,8 +15851,10 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15798
15851
|
foreignObject.attr({
|
|
15799
15852
|
x: x + (this.xCorr || 0),
|
|
15800
15853
|
y: y + (this.yCorr || 0),
|
|
15801
|
-
// Add 4px to avoid ellipsis
|
|
15802
|
-
//
|
|
15854
|
+
// Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
|
|
15855
|
+
// the foreignObject with a 3px right margin. This was later
|
|
15856
|
+
// removed, but we still need to add a few pixels to avoid
|
|
15857
|
+
// ellipsis.
|
|
15803
15858
|
width: element.offsetWidth + 4,
|
|
15804
15859
|
// Add 1px to account for subpixel bounding boxes
|
|
15805
15860
|
height: element.offsetHeight + 1,
|
|
@@ -15819,25 +15874,16 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15819
15874
|
this.cTT = currentTextTransform;
|
|
15820
15875
|
}
|
|
15821
15876
|
/**
|
|
15822
|
-
* Add the element to
|
|
15823
|
-
* will be created for each ancestor SVG `g` element.
|
|
15877
|
+
* Add the element to the foreign object
|
|
15824
15878
|
*
|
|
15825
15879
|
* @internal
|
|
15826
15880
|
*/
|
|
15827
15881
|
add(parentGroup) {
|
|
15828
|
-
const { foreignObject
|
|
15882
|
+
const { foreignObject } = this;
|
|
15829
15883
|
// Foreign object
|
|
15830
15884
|
foreignObject.add(parentGroup);
|
|
15831
|
-
|
|
15832
|
-
|
|
15833
|
-
renderer.createElement('body')
|
|
15834
|
-
.attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
|
|
15835
|
-
.css({
|
|
15836
|
-
background: 'transparent',
|
|
15837
|
-
// 3px is to avoid clipping on the right
|
|
15838
|
-
margin: '0 3px 0 0'
|
|
15839
|
-
})
|
|
15840
|
-
.add(foreignObject));
|
|
15885
|
+
// Add this.element to the foreign objct
|
|
15886
|
+
super.add(foreignObject);
|
|
15841
15887
|
if (this.alignOnAdd) {
|
|
15842
15888
|
this.updateTransform();
|
|
15843
15889
|
}
|
|
@@ -15872,10 +15918,20 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15872
15918
|
this[key] = value;
|
|
15873
15919
|
this.doTransform = true;
|
|
15874
15920
|
}
|
|
15921
|
+
/**
|
|
15922
|
+
* Apply visibility/opacity to the foreignObject; the HTML element
|
|
15923
|
+
* ignores them.
|
|
15924
|
+
* @internal
|
|
15925
|
+
*/
|
|
15926
|
+
visibilitySetter(value, key) {
|
|
15927
|
+
this.foreignObject.attr({ [key]: value });
|
|
15928
|
+
this[key] = value;
|
|
15929
|
+
}
|
|
15875
15930
|
}
|
|
15876
15931
|
// Some shared setters
|
|
15877
15932
|
const proto = HTMLElement.prototype;
|
|
15878
15933
|
proto.ySetter = proto.xSetter;
|
|
15934
|
+
proto.opacitySetter = proto.visibilitySetter;
|
|
15879
15935
|
/* *
|
|
15880
15936
|
*
|
|
15881
15937
|
* Default Export
|
|
@@ -16416,6 +16472,7 @@ var AxisDefaults;
|
|
|
16416
16472
|
*/
|
|
16417
16473
|
dateTimeLabelFormats: {
|
|
16418
16474
|
/**
|
|
16475
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16419
16476
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16420
16477
|
*/
|
|
16421
16478
|
millisecond: {
|
|
@@ -16441,6 +16498,7 @@ var AxisDefaults;
|
|
|
16441
16498
|
range: false
|
|
16442
16499
|
},
|
|
16443
16500
|
/**
|
|
16501
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16444
16502
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16445
16503
|
*/
|
|
16446
16504
|
second: {
|
|
@@ -16466,6 +16524,7 @@ var AxisDefaults;
|
|
|
16466
16524
|
range: false
|
|
16467
16525
|
},
|
|
16468
16526
|
/**
|
|
16527
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16469
16528
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16470
16529
|
*/
|
|
16471
16530
|
minute: {
|
|
@@ -16491,6 +16550,7 @@ var AxisDefaults;
|
|
|
16491
16550
|
range: false
|
|
16492
16551
|
},
|
|
16493
16552
|
/**
|
|
16553
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16494
16554
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16495
16555
|
*/
|
|
16496
16556
|
hour: {
|
|
@@ -16523,6 +16583,7 @@ var AxisDefaults;
|
|
|
16523
16583
|
range: false
|
|
16524
16584
|
},
|
|
16525
16585
|
/**
|
|
16586
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16526
16587
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16527
16588
|
*/
|
|
16528
16589
|
day: {
|
|
@@ -16545,6 +16606,7 @@ var AxisDefaults;
|
|
|
16545
16606
|
boundary: '%[eb]'
|
|
16546
16607
|
},
|
|
16547
16608
|
/**
|
|
16609
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16548
16610
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16549
16611
|
*/
|
|
16550
16612
|
week: {
|
|
@@ -16560,6 +16622,7 @@ var AxisDefaults;
|
|
|
16560
16622
|
main: '%[eb]'
|
|
16561
16623
|
},
|
|
16562
16624
|
/**
|
|
16625
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16563
16626
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16564
16627
|
*/
|
|
16565
16628
|
month: {
|
|
@@ -16582,6 +16645,7 @@ var AxisDefaults;
|
|
|
16582
16645
|
boundary: void 0
|
|
16583
16646
|
},
|
|
16584
16647
|
/**
|
|
16648
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16585
16649
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16586
16650
|
*/
|
|
16587
16651
|
year: {
|
|
@@ -17397,7 +17461,7 @@ var AxisDefaults;
|
|
|
17397
17461
|
* @sample {highstock} stock/xaxis/offset/
|
|
17398
17462
|
* Y axis offset by 70 px
|
|
17399
17463
|
*
|
|
17400
|
-
* @type {number}
|
|
17464
|
+
* @type {number|string}
|
|
17401
17465
|
*/
|
|
17402
17466
|
offset: void 0,
|
|
17403
17467
|
/**
|
|
@@ -19047,7 +19111,9 @@ var AxisDefaults;
|
|
|
19047
19111
|
* @product highcharts
|
|
19048
19112
|
*/
|
|
19049
19113
|
style: {
|
|
19050
|
-
/**
|
|
19114
|
+
/**
|
|
19115
|
+
* @type {Highcharts.ColorType}
|
|
19116
|
+
*/
|
|
19051
19117
|
color: 'var(--highcharts-neutral-color-100)',
|
|
19052
19118
|
/**
|
|
19053
19119
|
* @type {number|string}
|
|
@@ -19234,11 +19300,11 @@ class Tick {
|
|
|
19234
19300
|
* @function Highcharts.Tick#addLabel
|
|
19235
19301
|
*/
|
|
19236
19302
|
addLabel() {
|
|
19237
|
-
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 =
|
|
19303
|
+
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;
|
|
19238
19304
|
let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19239
19305
|
// The context value
|
|
19240
19306
|
let value = this.parameters.category || (categories ?
|
|
19241
|
-
|
|
19307
|
+
(categories[pos] ?? names[pos] ?? pos) :
|
|
19242
19308
|
pos);
|
|
19243
19309
|
if (log && isNumber(value)) {
|
|
19244
19310
|
value = correctFloat(log.lin2log(value));
|
|
@@ -19485,7 +19551,7 @@ class Tick {
|
|
|
19485
19551
|
labelOptions.y;
|
|
19486
19552
|
}
|
|
19487
19553
|
x = x +
|
|
19488
|
-
|
|
19554
|
+
(labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
|
|
19489
19555
|
labelOffsetCorrection +
|
|
19490
19556
|
rotCorr.x -
|
|
19491
19557
|
(tickmarkOffset && horiz ?
|
|
@@ -19540,7 +19606,7 @@ class Tick {
|
|
|
19540
19606
|
* @function Highcharts.Tick#handleOverflow
|
|
19541
19607
|
*/
|
|
19542
19608
|
handleOverflow(xy) {
|
|
19543
|
-
const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound =
|
|
19609
|
+
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 = {};
|
|
19544
19610
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19545
19611
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19546
19612
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19607,9 +19673,8 @@ class Tick {
|
|
|
19607
19673
|
* @param {number} [opacity]
|
|
19608
19674
|
*/
|
|
19609
19675
|
render(index, old, opacity) {
|
|
19610
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset =
|
|
19611
|
-
const labelOpacity =
|
|
19612
|
-
1);
|
|
19676
|
+
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;
|
|
19677
|
+
const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
|
|
19613
19678
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19614
19679
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19615
19680
|
// axes in Safari.
|
|
@@ -19637,7 +19702,7 @@ class Tick {
|
|
|
19637
19702
|
* @param {number} opacity The opacity of the grid line
|
|
19638
19703
|
*/
|
|
19639
19704
|
renderGridLine(old, opacity) {
|
|
19640
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset =
|
|
19705
|
+
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;
|
|
19641
19706
|
let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19642
19707
|
if (tick.type === 'minor') {
|
|
19643
19708
|
gridLineWidth = options.minorGridLineWidth;
|
|
@@ -19693,7 +19758,7 @@ class Tick {
|
|
|
19693
19758
|
* @param {number} opacity The opacity of the mark
|
|
19694
19759
|
*/
|
|
19695
19760
|
renderMark(xy, opacity) {
|
|
19696
|
-
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 =
|
|
19761
|
+
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
|
|
19697
19762
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19698
19763
|
let mark = tick.mark;
|
|
19699
19764
|
const isNewMark = !mark;
|
|
@@ -19738,7 +19803,7 @@ class Tick {
|
|
|
19738
19803
|
* @param {number} index The index of the tick
|
|
19739
19804
|
*/
|
|
19740
19805
|
renderLabel(xy, old, opacity, index) {
|
|
19741
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset =
|
|
19806
|
+
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;
|
|
19742
19807
|
let show = true;
|
|
19743
19808
|
if (label && isNumber(x)) {
|
|
19744
19809
|
label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
|
|
@@ -19830,7 +19895,6 @@ class Tick {
|
|
|
19830
19895
|
* */
|
|
19831
19896
|
|
|
19832
19897
|
|
|
19833
|
-
const { animObject: Axis_animObject } = AnimationUtilities;
|
|
19834
19898
|
|
|
19835
19899
|
const { xAxis, yAxis } = Axis_AxisDefaults;
|
|
19836
19900
|
|
|
@@ -19844,12 +19908,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
|
|
|
19844
19908
|
|
|
19845
19909
|
|
|
19846
19910
|
|
|
19847
|
-
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0,
|
|
19848
|
-
// If the tick interval is greater than 0.5, avoid decimals, as
|
|
19849
|
-
// linear axes are often used to render discrete values (#3363). If
|
|
19850
|
-
// a tick amount is set, allow decimals by default, as it increases
|
|
19851
|
-
// the chances for a good fit.
|
|
19852
|
-
tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
|
|
19911
|
+
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
|
|
19853
19912
|
extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
19854
19913
|
/* *
|
|
19855
19914
|
*
|
|
@@ -19957,7 +20016,7 @@ class Axis {
|
|
|
19957
20016
|
axis.coll = coll;
|
|
19958
20017
|
fireEvent(this, 'init', { userOptions: userOptions });
|
|
19959
20018
|
// Needed in setOptions
|
|
19960
|
-
axis.opposite =
|
|
20019
|
+
axis.opposite = (userOptions.opposite ?? axis.opposite);
|
|
19961
20020
|
/**
|
|
19962
20021
|
* The side on which the axis is rendered. 0 is top, 1 is right, 2
|
|
19963
20022
|
* is bottom and 3 is left.
|
|
@@ -19965,10 +20024,9 @@ class Axis {
|
|
|
19965
20024
|
* @name Highcharts.Axis#side
|
|
19966
20025
|
* @type {number}
|
|
19967
20026
|
*/
|
|
19968
|
-
axis.side =
|
|
20027
|
+
axis.side = (userOptions.side ?? axis.side ?? (horiz ?
|
|
19969
20028
|
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
19970
|
-
(axis.opposite ? 1 : 3))
|
|
19971
|
-
);
|
|
20029
|
+
(axis.opposite ? 1 : 3)));
|
|
19972
20030
|
/**
|
|
19973
20031
|
* Current options for the axis after merge of defaults and user's
|
|
19974
20032
|
* options.
|
|
@@ -19997,7 +20055,7 @@ class Axis {
|
|
|
19997
20055
|
* @name Highcharts.Axis#reversed
|
|
19998
20056
|
* @type {boolean}
|
|
19999
20057
|
*/
|
|
20000
|
-
axis.reversed =
|
|
20058
|
+
axis.reversed = (options.reversed ?? axis.reversed);
|
|
20001
20059
|
axis.visible = options.visible;
|
|
20002
20060
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20003
20061
|
// Initial categories
|
|
@@ -20085,7 +20143,7 @@ class Axis {
|
|
|
20085
20143
|
* @name Highcharts.Axis#crosshair
|
|
20086
20144
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20087
20145
|
*/
|
|
20088
|
-
const crosshair =
|
|
20146
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
|
|
20089
20147
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20090
20148
|
// Register. Don't add it again on Axis.update().
|
|
20091
20149
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20269,8 +20327,8 @@ class Axis {
|
|
|
20269
20327
|
seriesDataMax = xExtremes.max;
|
|
20270
20328
|
}
|
|
20271
20329
|
if (xData.length) {
|
|
20272
|
-
axis.dataMin = Math.min(
|
|
20273
|
-
axis.dataMax = Math.max(
|
|
20330
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20331
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20274
20332
|
}
|
|
20275
20333
|
}
|
|
20276
20334
|
// Get dataMin and dataMax for Y axes, as well as handle
|
|
@@ -20285,11 +20343,11 @@ class Axis {
|
|
|
20285
20343
|
// doesn't have active y data, we continue with nulls
|
|
20286
20344
|
if (isNumber(dataExtremes.dataMin)) {
|
|
20287
20345
|
seriesDataMin = dataExtremes.dataMin;
|
|
20288
|
-
axis.dataMin = Math.min(
|
|
20346
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20289
20347
|
}
|
|
20290
20348
|
if (isNumber(dataExtremes.dataMax)) {
|
|
20291
20349
|
seriesDataMax = dataExtremes.dataMax;
|
|
20292
|
-
axis.dataMax = Math.max(
|
|
20350
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20293
20351
|
}
|
|
20294
20352
|
// Adjust to threshold
|
|
20295
20353
|
if (defined(threshold)) {
|
|
@@ -20444,7 +20502,7 @@ class Axis {
|
|
|
20444
20502
|
translatedValue
|
|
20445
20503
|
};
|
|
20446
20504
|
fireEvent(this, 'getPlotLinePath', evt, function (e) {
|
|
20447
|
-
translatedValue =
|
|
20505
|
+
translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
|
|
20448
20506
|
// Keep the translated value within sane bounds, and avoid Infinity
|
|
20449
20507
|
// to fail the isNumber test (#7709).
|
|
20450
20508
|
translatedValue = clamp(translatedValue, -1e9, 1e9);
|
|
@@ -20533,7 +20591,7 @@ class Axis {
|
|
|
20533
20591
|
getMinorTickInterval() {
|
|
20534
20592
|
const { minorTicks, minorTickInterval } = this.options;
|
|
20535
20593
|
if (minorTicks === true) {
|
|
20536
|
-
return
|
|
20594
|
+
return (minorTickInterval ?? 'auto');
|
|
20537
20595
|
}
|
|
20538
20596
|
if (minorTicks === false) {
|
|
20539
20597
|
return;
|
|
@@ -20816,7 +20874,9 @@ class Axis {
|
|
|
20816
20874
|
const seriesPointRange = hasCategories ?
|
|
20817
20875
|
1 :
|
|
20818
20876
|
(isXAxis ?
|
|
20819
|
-
|
|
20877
|
+
(series.options.pointRange ??
|
|
20878
|
+
closestPointRange ??
|
|
20879
|
+
0) :
|
|
20820
20880
|
(axis.axisPointRange || 0)), // #2806
|
|
20821
20881
|
pointPlacement = series.options.pointPlacement;
|
|
20822
20882
|
pointRange = Math.max(pointRange, seriesPointRange);
|
|
@@ -20900,14 +20960,16 @@ class Axis {
|
|
|
20900
20960
|
this.getTickAmount();
|
|
20901
20961
|
}
|
|
20902
20962
|
// Min or max set either by zooming/setExtremes or initial options
|
|
20903
|
-
hardMin =
|
|
20904
|
-
hardMax =
|
|
20963
|
+
hardMin = (axis.userMin ?? time.parse(options.min));
|
|
20964
|
+
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
20905
20965
|
// Linked axis gets the extremes from the parent axis
|
|
20906
20966
|
if (linkedParent) {
|
|
20907
20967
|
axis.linkedParent = linkedParent;
|
|
20908
20968
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
20909
|
-
axis.min =
|
|
20910
|
-
|
|
20969
|
+
axis.min =
|
|
20970
|
+
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
20971
|
+
axis.max =
|
|
20972
|
+
linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
|
|
20911
20973
|
if (this.type !== linkedParent.type) {
|
|
20912
20974
|
// Can't link axes of different type
|
|
20913
20975
|
error(11, true, chart);
|
|
@@ -20929,14 +20991,14 @@ class Axis {
|
|
|
20929
20991
|
maxPadding = 0;
|
|
20930
20992
|
}
|
|
20931
20993
|
}
|
|
20932
|
-
axis.min =
|
|
20933
|
-
axis.max =
|
|
20994
|
+
axis.min = (hardMin ?? thresholdMin ?? dataMin);
|
|
20995
|
+
axis.max = (hardMax ?? thresholdMax ?? dataMax);
|
|
20934
20996
|
}
|
|
20935
20997
|
if (isNumber(axis.max) && isNumber(axis.min)) {
|
|
20936
20998
|
if (logarithmic) {
|
|
20937
20999
|
if (axis.positiveValuesOnly &&
|
|
20938
21000
|
!secondPass &&
|
|
20939
|
-
Math.min(axis.min,
|
|
21001
|
+
Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
|
|
20940
21002
|
// Can't plot negative values on log axis
|
|
20941
21003
|
error(10, true, chart);
|
|
20942
21004
|
}
|
|
@@ -21042,16 +21104,13 @@ class Axis {
|
|
|
21042
21104
|
axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
|
|
21043
21105
|
}
|
|
21044
21106
|
else {
|
|
21045
|
-
axis.tickInterval =
|
|
21107
|
+
axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
|
|
21046
21108
|
range / Math.max(this.tickAmount - 1, 1) :
|
|
21047
|
-
|
|
21048
|
-
|
|
21049
|
-
|
|
21050
|
-
|
|
21051
|
-
|
|
21052
|
-
// Don't let it be more than the data range
|
|
21053
|
-
range * tickPixelIntervalOption /
|
|
21054
|
-
Math.max(axis.len, tickPixelIntervalOption));
|
|
21109
|
+
categories ?
|
|
21110
|
+
1 :
|
|
21111
|
+
// Don't let it be more than the data range
|
|
21112
|
+
range * tickPixelIntervalOption /
|
|
21113
|
+
Math.max(axis.len, tickPixelIntervalOption));
|
|
21055
21114
|
}
|
|
21056
21115
|
// Now we're finished detecting min and max, crop and group series data.
|
|
21057
21116
|
// This is in turn needed in order to find tick positions in ordinal
|
|
@@ -21081,12 +21140,9 @@ class Axis {
|
|
|
21081
21140
|
}
|
|
21082
21141
|
// Before normalizing the tick interval, handle minimum tick interval.
|
|
21083
21142
|
// This applies only if tickInterval is not defined.
|
|
21084
|
-
const minTickInterval =
|
|
21085
|
-
|
|
21086
|
-
|
|
21087
|
-
dateTime &&
|
|
21088
|
-
!axis.series.some((s) => !s.sorted) ?
|
|
21089
|
-
axis.closestPointRange : 0);
|
|
21143
|
+
const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
|
|
21144
|
+
axis.closestPointRange :
|
|
21145
|
+
0);
|
|
21090
21146
|
if (!tickIntervalOption &&
|
|
21091
21147
|
minTickInterval &&
|
|
21092
21148
|
axis.tickInterval < minTickInterval) {
|
|
@@ -21416,7 +21472,7 @@ class Axis {
|
|
|
21416
21472
|
* @function Highcharts.Axis#adjustTickAmount
|
|
21417
21473
|
*/
|
|
21418
21474
|
adjustTickAmount() {
|
|
21419
|
-
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold =
|
|
21475
|
+
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
|
|
21420
21476
|
let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
|
|
21421
21477
|
const
|
|
21422
21478
|
// Extend the tickPositions by appending a position
|
|
@@ -21652,7 +21708,8 @@ class Axis {
|
|
|
21652
21708
|
offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
|
|
21653
21709
|
// Check for percentage based input values. Rounding fixes problems
|
|
21654
21710
|
// with column overflow and plot line filtering (#4898, #4899)
|
|
21655
|
-
width = this.width = Math.round(relativeLength(
|
|
21711
|
+
width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
|
|
21712
|
+
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));
|
|
21656
21713
|
// Expose basic values to use in Series object and navigator
|
|
21657
21714
|
this.bottom = chart.chartHeight - height - top;
|
|
21658
21715
|
this.right = chart.chartWidth - width - left;
|
|
@@ -21763,9 +21820,7 @@ class Axis {
|
|
|
21763
21820
|
* An array of tickLength and tickWidth
|
|
21764
21821
|
*/
|
|
21765
21822
|
tickSize(prefix) {
|
|
21766
|
-
const options = this.options, tickWidth =
|
|
21767
|
-
// Default to 1 on linear and datetime X axes
|
|
21768
|
-
prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21823
|
+
const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21769
21824
|
let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
|
|
21770
21825
|
if (tickWidth && tickLength) {
|
|
21771
21826
|
// Negate the length
|
|
@@ -21852,7 +21907,7 @@ class Axis {
|
|
|
21852
21907
|
newTickInterval = getStep(lineHeight * 0.75);
|
|
21853
21908
|
}
|
|
21854
21909
|
this.autoRotation = autoRotation;
|
|
21855
|
-
this.labelRotation =
|
|
21910
|
+
this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
|
|
21856
21911
|
return labelOptions.step ? tickInterval : newTickInterval;
|
|
21857
21912
|
}
|
|
21858
21913
|
/**
|
|
@@ -22204,7 +22259,7 @@ class Axis {
|
|
|
22204
22259
|
titleOffsetOption = axisTitleOptions.offset;
|
|
22205
22260
|
titleMargin = defined(titleOffsetOption) ?
|
|
22206
22261
|
0 :
|
|
22207
|
-
|
|
22262
|
+
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22208
22263
|
}
|
|
22209
22264
|
}
|
|
22210
22265
|
// Render the axis line
|
|
@@ -22436,7 +22491,7 @@ class Axis {
|
|
|
22436
22491
|
* @emits Highcharts.Axis#event:afterRender
|
|
22437
22492
|
*/
|
|
22438
22493
|
render() {
|
|
22439
|
-
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 =
|
|
22494
|
+
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);
|
|
22440
22495
|
let from, to;
|
|
22441
22496
|
// Reset
|
|
22442
22497
|
axis.labelEdge.length = 0;
|
|
@@ -22715,9 +22770,9 @@ class Axis {
|
|
|
22715
22770
|
}
|
|
22716
22771
|
else if (defined(point)) {
|
|
22717
22772
|
// #3834
|
|
22718
|
-
pos =
|
|
22719
|
-
point.crosshairPos :
|
|
22720
|
-
null
|
|
22773
|
+
pos = (this.coll !== 'colorAxis' ?
|
|
22774
|
+
point.crosshairPos :
|
|
22775
|
+
null) ?? (this.isXAxis ?
|
|
22721
22776
|
point.plotX :
|
|
22722
22777
|
this.len - point.plotY);
|
|
22723
22778
|
}
|
|
@@ -22726,7 +22781,7 @@ class Axis {
|
|
|
22726
22781
|
// Value, only used on radial
|
|
22727
22782
|
value: point && (this.isXAxis ?
|
|
22728
22783
|
point.x :
|
|
22729
|
-
|
|
22784
|
+
(point.stackY ?? point.y ?? void 0)),
|
|
22730
22785
|
translatedValue: pos
|
|
22731
22786
|
};
|
|
22732
22787
|
if (chart.polar) {
|
|
@@ -22759,7 +22814,7 @@ class Axis {
|
|
|
22759
22814
|
(categorized ? 'category ' : 'thin ') +
|
|
22760
22815
|
(options.className || ''))
|
|
22761
22816
|
.attr({
|
|
22762
|
-
zIndex:
|
|
22817
|
+
zIndex: (options.zIndex ?? 2)
|
|
22763
22818
|
})
|
|
22764
22819
|
.clip(options.clip === false ?
|
|
22765
22820
|
void 0 :
|
|
@@ -22774,7 +22829,7 @@ class Axis {
|
|
|
22774
22829
|
// eslint-disable-next-line max-len
|
|
22775
22830
|
'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22776
22831
|
'var(--highcharts-neutral-color-20)'),
|
|
22777
|
-
'stroke-width':
|
|
22832
|
+
'stroke-width': (options.width ?? 1)
|
|
22778
22833
|
}).css({
|
|
22779
22834
|
'pointer-events': 'none'
|
|
22780
22835
|
});
|
|
@@ -22787,7 +22842,7 @@ class Axis {
|
|
|
22787
22842
|
}
|
|
22788
22843
|
cross
|
|
22789
22844
|
.show()
|
|
22790
|
-
.animate({ d: path },
|
|
22845
|
+
.animate({ d: path }, animObject(options?.animation));
|
|
22791
22846
|
if (categorized && !options.width) {
|
|
22792
22847
|
cross.attr({
|
|
22793
22848
|
'stroke-width': this.transA
|
|
@@ -22840,7 +22895,7 @@ class Axis {
|
|
|
22840
22895
|
this.destroy(true);
|
|
22841
22896
|
this.init(chart, options);
|
|
22842
22897
|
chart.isDirtyBox = true;
|
|
22843
|
-
if (
|
|
22898
|
+
if (redraw ?? true) {
|
|
22844
22899
|
chart.redraw();
|
|
22845
22900
|
}
|
|
22846
22901
|
}
|
|
@@ -22870,7 +22925,7 @@ class Axis {
|
|
|
22870
22925
|
chart.orderItems(coll);
|
|
22871
22926
|
this.destroy();
|
|
22872
22927
|
chart.isDirtyBox = true;
|
|
22873
|
-
if (
|
|
22928
|
+
if (redraw ?? true) {
|
|
22874
22929
|
chart.redraw();
|
|
22875
22930
|
}
|
|
22876
22931
|
}
|
|
@@ -23526,8 +23581,10 @@ var LogarithmicAxis;
|
|
|
23526
23581
|
tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
|
|
23527
23582
|
axisLength / axis.tickPositions.length :
|
|
23528
23583
|
axisLength;
|
|
23529
|
-
interval =
|
|
23530
|
-
|
|
23584
|
+
interval = filteredTickIntervalOption ??
|
|
23585
|
+
log.minorAutoInterval ??
|
|
23586
|
+
(realMax - realMin) * tickPixelIntervalOption /
|
|
23587
|
+
(totalPixelLength || 1);
|
|
23531
23588
|
interval = normalizeTickInterval(interval);
|
|
23532
23589
|
positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
|
|
23533
23590
|
if (!minor) {
|
|
@@ -23956,7 +24013,8 @@ class PlotLineOrBand {
|
|
|
23956
24013
|
if (!chart.styledMode) {
|
|
23957
24014
|
if (isLine) {
|
|
23958
24015
|
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
23959
|
-
attribs['stroke-width'] =
|
|
24016
|
+
attribs['stroke-width'] =
|
|
24017
|
+
options.width ?? 1;
|
|
23960
24018
|
if (options.dashStyle) {
|
|
23961
24019
|
attribs.dashstyle = options.dashStyle;
|
|
23962
24020
|
}
|
|
@@ -24825,7 +24883,6 @@ class PlotLineOrBand {
|
|
|
24825
24883
|
* */
|
|
24826
24884
|
|
|
24827
24885
|
|
|
24828
|
-
const { animObject: Tooltip_animObject } = AnimationUtilities;
|
|
24829
24886
|
|
|
24830
24887
|
const { format: Tooltip_format } = Core_Templating;
|
|
24831
24888
|
|
|
@@ -25089,7 +25146,8 @@ class Tooltip {
|
|
|
25089
25146
|
'highcharts-label',
|
|
25090
25147
|
isHeader && 'highcharts-tooltip-header',
|
|
25091
25148
|
isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
|
|
25092
|
-
!isHeader &&
|
|
25149
|
+
!isHeader &&
|
|
25150
|
+
'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
|
|
25093
25151
|
seriesOptions?.className
|
|
25094
25152
|
].filter(isString).join(' ');
|
|
25095
25153
|
}
|
|
@@ -25274,7 +25332,8 @@ class Tooltip {
|
|
|
25274
25332
|
}
|
|
25275
25333
|
// The far side is right or bottom
|
|
25276
25334
|
const preferFarSide = !this.followPointer &&
|
|
25277
|
-
|
|
25335
|
+
(point.ttBelow ??
|
|
25336
|
+
(polar ? false : !inverted === flipped)), // #4984
|
|
25278
25337
|
/*
|
|
25279
25338
|
* Handle the preferred dimension. When the preferred dimension is
|
|
25280
25339
|
* tooltip on top or bottom of the point, it will look for space
|
|
@@ -25401,7 +25460,7 @@ class Tooltip {
|
|
|
25401
25460
|
const tooltip = this;
|
|
25402
25461
|
// Disallow duplicate timers (#1728, #1766)
|
|
25403
25462
|
clearTimeouts(this);
|
|
25404
|
-
delay =
|
|
25463
|
+
delay = (delay ?? this.options.hideDelay);
|
|
25405
25464
|
if (!this.isHidden) {
|
|
25406
25465
|
this.hideTimer = syncTimeout(function () {
|
|
25407
25466
|
const label = tooltip.getLabel();
|
|
@@ -25504,7 +25563,9 @@ class Tooltip {
|
|
|
25504
25563
|
* Split tooltip does not support outside in the first iteration. Should
|
|
25505
25564
|
* not be too complicated to implement.
|
|
25506
25565
|
*/
|
|
25507
|
-
this.outside =
|
|
25566
|
+
this.outside =
|
|
25567
|
+
options.outside ??
|
|
25568
|
+
Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
|
|
25508
25569
|
}
|
|
25509
25570
|
shouldStickOnContact(pointerEvent) {
|
|
25510
25571
|
return !!(!this.followPointer &&
|
|
@@ -25526,7 +25587,7 @@ class Tooltip {
|
|
|
25526
25587
|
* @param {number} anchorY
|
|
25527
25588
|
*/
|
|
25528
25589
|
move(x, y, anchorX, anchorY) {
|
|
25529
|
-
const { followPointer, options } = this, animation =
|
|
25590
|
+
const { followPointer, options } = this, animation = animObject(!followPointer &&
|
|
25530
25591
|
!this.isHidden &&
|
|
25531
25592
|
!options.fixed &&
|
|
25532
25593
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
@@ -25584,7 +25645,7 @@ class Tooltip {
|
|
|
25584
25645
|
point.points = void 0;
|
|
25585
25646
|
// Register the current series
|
|
25586
25647
|
const currentSeries = point.series;
|
|
25587
|
-
this.distance =
|
|
25648
|
+
this.distance = (currentSeries.tooltipOptions.distance ?? 16);
|
|
25588
25649
|
// Update the inner HTML
|
|
25589
25650
|
if (text === false) {
|
|
25590
25651
|
this.hide();
|
|
@@ -25857,7 +25918,7 @@ class Tooltip {
|
|
|
25857
25918
|
anchorY,
|
|
25858
25919
|
boxWidth,
|
|
25859
25920
|
point,
|
|
25860
|
-
rank:
|
|
25921
|
+
rank: boxPosition.rank ?? (isHeader ? 1 : 0),
|
|
25861
25922
|
size,
|
|
25862
25923
|
target: boxPosition.y,
|
|
25863
25924
|
tt,
|
|
@@ -26274,7 +26335,6 @@ class Tooltip {
|
|
|
26274
26335
|
|
|
26275
26336
|
|
|
26276
26337
|
|
|
26277
|
-
const { animObject: Point_animObject } = AnimationUtilities;
|
|
26278
26338
|
|
|
26279
26339
|
const { defaultOptions: Point_defaultOptions } = Defaults;
|
|
26280
26340
|
|
|
@@ -26614,10 +26674,15 @@ class Point {
|
|
|
26614
26674
|
*
|
|
26615
26675
|
* @internal
|
|
26616
26676
|
* @function Highcharts.Point#destroy
|
|
26677
|
+
*
|
|
26678
|
+
* @param {boolean} [sync]
|
|
26679
|
+
* Whether to destroy the point synchronously. Used internally from
|
|
26680
|
+
* series.destroy, where condemned points may cause animation errors
|
|
26681
|
+
* (#24976).
|
|
26617
26682
|
*/
|
|
26618
|
-
destroy() {
|
|
26619
|
-
if (!this.condemned) {
|
|
26620
|
-
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } =
|
|
26683
|
+
destroy(sync) {
|
|
26684
|
+
if (!this.destroyed && !this.condemned) {
|
|
26685
|
+
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
|
|
26621
26686
|
/**
|
|
26622
26687
|
* Allow to call after animation.
|
|
26623
26688
|
* @internal
|
|
@@ -26634,6 +26699,7 @@ class Point {
|
|
|
26634
26699
|
for (const prop in point) { // eslint-disable-line guard-for-in
|
|
26635
26700
|
delete point[prop];
|
|
26636
26701
|
}
|
|
26702
|
+
this.destroyed = true;
|
|
26637
26703
|
};
|
|
26638
26704
|
if (point.legendItem) {
|
|
26639
26705
|
// Pies have legend items
|
|
@@ -26650,7 +26716,7 @@ class Point {
|
|
|
26650
26716
|
point.onMouseOut();
|
|
26651
26717
|
}
|
|
26652
26718
|
// Remove properties after animation
|
|
26653
|
-
if (duration && series.condemnedPoints) {
|
|
26719
|
+
if (duration && !sync && series.condemnedPoints) {
|
|
26654
26720
|
series.condemnedPoints.push(this);
|
|
26655
26721
|
this.graphic?.addClass('highcharts-point-condemned');
|
|
26656
26722
|
setTimeout(destroyPoint, duration);
|
|
@@ -26773,14 +26839,15 @@ class Point {
|
|
|
26773
26839
|
*
|
|
26774
26840
|
* @function Highcharts.Point#getZone
|
|
26775
26841
|
*
|
|
26776
|
-
* @return {Highcharts.SeriesZonesOptionsObject}
|
|
26777
|
-
* The zone item.
|
|
26842
|
+
* @return {Highcharts.SeriesZonesOptionsObject|undefined}
|
|
26843
|
+
* The zone item, or `undefined` if the series has no zones.
|
|
26778
26844
|
*/
|
|
26779
26845
|
getZone() {
|
|
26780
26846
|
const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
|
|
26781
26847
|
let zone, i = 0;
|
|
26782
26848
|
zone = zones[i];
|
|
26783
|
-
while (
|
|
26849
|
+
while (i < zones.length &&
|
|
26850
|
+
this[zoneAxis] >= zone.value) {
|
|
26784
26851
|
zone = zones[++i];
|
|
26785
26852
|
}
|
|
26786
26853
|
// For resetting or reusing the point (#8100)
|
|
@@ -27196,7 +27263,7 @@ class Point {
|
|
|
27196
27263
|
*/
|
|
27197
27264
|
select(selected, accumulate) {
|
|
27198
27265
|
const point = this, series = point.series, chart = series.chart;
|
|
27199
|
-
selected =
|
|
27266
|
+
selected = (selected ?? !point.selected);
|
|
27200
27267
|
this.selectedStaging = selected;
|
|
27201
27268
|
// Fire the event with the default handler
|
|
27202
27269
|
point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
|
|
@@ -27320,9 +27387,8 @@ class Point {
|
|
|
27320
27387
|
* @emits Highcharts.Point#event:afterSetState
|
|
27321
27388
|
*/
|
|
27322
27389
|
setState(state, move) {
|
|
27323
|
-
const point = this, series = point.series, previousState = point.state, stateOptions =
|
|
27324
|
-
|
|
27325
|
-
series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27390
|
+
const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
|
|
27391
|
+
series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27326
27392
|
{}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
|
|
27327
27393
|
let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
|
|
27328
27394
|
state = state || ''; // Empty string
|
|
@@ -27335,13 +27401,10 @@ class Point {
|
|
|
27335
27401
|
(stateOptions.enabled === false) ||
|
|
27336
27402
|
// General point marker's state options is disabled
|
|
27337
27403
|
(state && (stateDisabled ||
|
|
27338
|
-
(normalDisabled &&
|
|
27339
|
-
markerStateOptions.enabled === false))) ||
|
|
27404
|
+
(normalDisabled && markerStateOptions.enabled === false))) ||
|
|
27340
27405
|
// Individual point marker's state options is disabled
|
|
27341
27406
|
(state &&
|
|
27342
|
-
pointMarker.states
|
|
27343
|
-
pointMarker.states[state] &&
|
|
27344
|
-
pointMarker.states[state].enabled === false) // #1610
|
|
27407
|
+
pointMarker.states?.[state]?.enabled === false) // #1610
|
|
27345
27408
|
) {
|
|
27346
27409
|
return;
|
|
27347
27410
|
}
|
|
@@ -27360,7 +27423,8 @@ class Point {
|
|
|
27360
27423
|
}
|
|
27361
27424
|
if (!chart.styledMode) {
|
|
27362
27425
|
pointAttribs = series.pointAttribs(point, state);
|
|
27363
|
-
pointAttribsAnimation =
|
|
27426
|
+
pointAttribsAnimation = (chart.options.chart.animation ??
|
|
27427
|
+
stateOptions.animation);
|
|
27364
27428
|
const opacity = pointAttribs.opacity;
|
|
27365
27429
|
// Some inactive points (e.g. slices in pie) should apply
|
|
27366
27430
|
// opacity also for their labels
|
|
@@ -27378,9 +27442,11 @@ class Point {
|
|
|
27378
27442
|
point.graphic.animate(pointAttribs, pointAttribsAnimation);
|
|
27379
27443
|
}
|
|
27380
27444
|
if (markerAttribs) {
|
|
27381
|
-
point.graphic.animate(markerAttribs,
|
|
27445
|
+
point.graphic.animate(markerAttribs, (
|
|
27382
27446
|
// Turn off globally:
|
|
27383
|
-
chart.options.chart.animation
|
|
27447
|
+
chart.options.chart.animation ??
|
|
27448
|
+
markerStateOptions.animation ??
|
|
27449
|
+
markerOptions.animation));
|
|
27384
27450
|
}
|
|
27385
27451
|
// Zooming in from a range with no markers to a range with markers
|
|
27386
27452
|
if (stateMarkerGraphic) {
|
|
@@ -27429,10 +27495,12 @@ class Point {
|
|
|
27429
27495
|
}
|
|
27430
27496
|
}
|
|
27431
27497
|
// Show me your halo
|
|
27432
|
-
const haloOptions = stateOptions.halo
|
|
27498
|
+
const haloOptions = isObject(stateOptions.halo) ?
|
|
27499
|
+
stateOptions.halo :
|
|
27500
|
+
{};
|
|
27433
27501
|
const markerGraphic = (point.graphic || stateMarkerGraphic);
|
|
27434
27502
|
const markerVisibility = markerGraphic?.visibility || 'inherit';
|
|
27435
|
-
if (haloOptions
|
|
27503
|
+
if (haloOptions.size &&
|
|
27436
27504
|
markerGraphic &&
|
|
27437
27505
|
markerVisibility !== 'hidden' &&
|
|
27438
27506
|
!point.isCluster) {
|
|
@@ -27446,7 +27514,7 @@ class Point {
|
|
|
27446
27514
|
});
|
|
27447
27515
|
halo.attr({
|
|
27448
27516
|
'class': 'highcharts-halo highcharts-color-' +
|
|
27449
|
-
|
|
27517
|
+
(point.colorIndex ?? series.colorIndex) +
|
|
27450
27518
|
(point.className ? ' ' + point.className : ''),
|
|
27451
27519
|
'visibility': markerVisibility,
|
|
27452
27520
|
'zIndex': -1 // #4929, #8276
|
|
@@ -27962,6 +28030,11 @@ class Pointer {
|
|
|
27962
28030
|
}
|
|
27963
28031
|
}
|
|
27964
28032
|
}
|
|
28033
|
+
// Run a final transform with a drop trigger to display the reset
|
|
28034
|
+
// zoom button after a pinch gesture (#22128)
|
|
28035
|
+
if (e?.type === 'touchend' && this.hasDragged) {
|
|
28036
|
+
chart.transform({ trigger: 'drop' });
|
|
28037
|
+
}
|
|
27965
28038
|
if (redraw) {
|
|
27966
28039
|
chart.redraw();
|
|
27967
28040
|
}
|
|
@@ -28174,7 +28247,7 @@ class Pointer {
|
|
|
28174
28247
|
const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
|
|
28175
28248
|
return (s.visible &&
|
|
28176
28249
|
!(!shared && s.directTouch) && // #3821
|
|
28177
|
-
|
|
28250
|
+
(s.options.enableMouseTracking ?? true));
|
|
28178
28251
|
};
|
|
28179
28252
|
let hoverSeries = existingHoverSeries,
|
|
28180
28253
|
// Which series to look in for the hover point
|
|
@@ -28360,8 +28433,8 @@ class Pointer {
|
|
|
28360
28433
|
const ePos = (touches ?
|
|
28361
28434
|
touches.length ?
|
|
28362
28435
|
touches.item(0) :
|
|
28363
|
-
(
|
|
28364
|
-
|
|
28436
|
+
(touches.changedTouches ??
|
|
28437
|
+
e.changedTouches)[0] :
|
|
28365
28438
|
e);
|
|
28366
28439
|
// Get mouse position
|
|
28367
28440
|
if (!chartPosition) {
|
|
@@ -28435,7 +28508,7 @@ class Pointer {
|
|
|
28435
28508
|
* @function Highcharts.Pointer#onContainerMouseLeave
|
|
28436
28509
|
*/
|
|
28437
28510
|
onContainerMouseLeave(e) {
|
|
28438
|
-
const { pointer } = Pointer_charts[
|
|
28511
|
+
const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
|
|
28439
28512
|
e = this.normalize(e);
|
|
28440
28513
|
this.onContainerMouseMove(e);
|
|
28441
28514
|
// #4886, MS Touch end fires mouseleave but with no related target
|
|
@@ -28535,7 +28608,7 @@ class Pointer {
|
|
|
28535
28608
|
if (e?.touches && this.hasPinchMoved) {
|
|
28536
28609
|
e?.preventDefault?.();
|
|
28537
28610
|
}
|
|
28538
|
-
Pointer_charts[
|
|
28611
|
+
Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
|
|
28539
28612
|
?.pointer
|
|
28540
28613
|
?.drop(e);
|
|
28541
28614
|
}
|
|
@@ -28605,6 +28678,9 @@ class Pointer {
|
|
|
28605
28678
|
from: boxFromTouches(lastTouches),
|
|
28606
28679
|
trigger: e.type
|
|
28607
28680
|
});
|
|
28681
|
+
// Record a truthy value in order to trigger the final transform
|
|
28682
|
+
// in the drop function
|
|
28683
|
+
pointer.hasDragged = 1;
|
|
28608
28684
|
});
|
|
28609
28685
|
if (pointer.res) {
|
|
28610
28686
|
pointer.res = false;
|
|
@@ -29039,7 +29115,7 @@ class Pointer {
|
|
|
29039
29115
|
*/
|
|
29040
29116
|
setHoverChartIndex(e) {
|
|
29041
29117
|
const chart = this.chart;
|
|
29042
|
-
const hoverChart = Core_Globals.charts[
|
|
29118
|
+
const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
|
|
29043
29119
|
if (hoverChart &&
|
|
29044
29120
|
hoverChart !== chart) {
|
|
29045
29121
|
const relatedTargetObj = { relatedTarget: chart.container };
|
|
@@ -29085,7 +29161,7 @@ class Pointer {
|
|
|
29085
29161
|
Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
|
|
29086
29162
|
false;
|
|
29087
29163
|
}
|
|
29088
|
-
if (
|
|
29164
|
+
if (hasMoved ?? true) {
|
|
29089
29165
|
this.pinch(e);
|
|
29090
29166
|
}
|
|
29091
29167
|
}
|
|
@@ -29096,7 +29172,9 @@ class Pointer {
|
|
|
29096
29172
|
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29097
29173
|
// allow dragging the finger to scroll the page
|
|
29098
29174
|
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29099
|
-
isInside
|
|
29175
|
+
isInside &&
|
|
29176
|
+
e.type === 'touchmove' &&
|
|
29177
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29100
29178
|
e.preventDefault();
|
|
29101
29179
|
}
|
|
29102
29180
|
}
|
|
@@ -29126,7 +29204,7 @@ class Pointer {
|
|
|
29126
29204
|
let zoomType = chart.zooming.type || '', zoomX, zoomY;
|
|
29127
29205
|
// Look for the pinchType option
|
|
29128
29206
|
if (/touch/.test(e.type)) {
|
|
29129
|
-
zoomType =
|
|
29207
|
+
zoomType = (chart.zooming.pinchType ?? zoomType);
|
|
29130
29208
|
}
|
|
29131
29209
|
this.zoomX = zoomX = /x/.test(zoomType);
|
|
29132
29210
|
this.zoomY = zoomY = /y/.test(zoomType);
|
|
@@ -29568,7 +29646,7 @@ class DataTableCore {
|
|
|
29568
29646
|
* Fetches the given column by the canonical column ID. Simplified version
|
|
29569
29647
|
* of the full `DataTable.getRow` method, always returning by reference.
|
|
29570
29648
|
*
|
|
29571
|
-
* @function Highcharts.DataTable#
|
|
29649
|
+
* @function Highcharts.DataTable#getColumn
|
|
29572
29650
|
*
|
|
29573
29651
|
* @param {string} columnId
|
|
29574
29652
|
* ID of the column to get.
|
|
@@ -29900,7 +29978,7 @@ var LegendSymbol;
|
|
|
29900
29978
|
// Draw the marker
|
|
29901
29979
|
if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
|
|
29902
29980
|
// Do not allow the marker to be larger than the symbolHeight
|
|
29903
|
-
let radius = Math.min(
|
|
29981
|
+
let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
|
|
29904
29982
|
// Restrict symbol markers size
|
|
29905
29983
|
if (symbol.indexOf('url') === 0) {
|
|
29906
29984
|
markerOptions = merge(markerOptions, {
|
|
@@ -30304,6 +30382,10 @@ const seriesDefaults = {
|
|
|
30304
30382
|
* ```
|
|
30305
30383
|
*
|
|
30306
30384
|
* @type {Highcharts.DataMappingOptionsObject}
|
|
30385
|
+
* @sample highcharts/datatable/datamapping
|
|
30386
|
+
* Basic data mapping
|
|
30387
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
30388
|
+
* Data mapping with dynamic updates
|
|
30307
30389
|
* @sample {highcharts} highcharts/datatable/series-datatable-multiple
|
|
30308
30390
|
* Series with two data tables
|
|
30309
30391
|
* @sample {highcharts} highcharts/datatable/nested-keys
|
|
@@ -30314,6 +30396,29 @@ const seriesDefaults = {
|
|
|
30314
30396
|
* @since 13.0.0
|
|
30315
30397
|
* @apioption plotOptions.series.dataMapping
|
|
30316
30398
|
*/
|
|
30399
|
+
/**
|
|
30400
|
+
* Options for a specific series-level data table or an array of data
|
|
30401
|
+
* tables. The `dataTable` option can be either a configuration object or an
|
|
30402
|
+
* instance of the `DataTable` class. If a `DataTable` instance is passed,
|
|
30403
|
+
* it will be used directly. If a configuration object or an array is
|
|
30404
|
+
* passed, a new `DataTable` instance will be created based on the provided
|
|
30405
|
+
* configuration.
|
|
30406
|
+
*
|
|
30407
|
+
* @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
|
|
30408
|
+
* @sample {highcharts} highcharts/datatable/series-datatable/
|
|
30409
|
+
* Series with one data table each
|
|
30410
|
+
* @sample {highcharts} highcharts/datatable/series-datatable-multiple/
|
|
30411
|
+
* Series with two data tables
|
|
30412
|
+
* @sample {highstock} stock/datatable/series-datatable/
|
|
30413
|
+
* Series with one data table each
|
|
30414
|
+
* @sample {highstock} stock/datatable/series-datatable-multiple/
|
|
30415
|
+
* Series with two data tables
|
|
30416
|
+
* @sample {highmaps} maps/datatable/series-datatable
|
|
30417
|
+
* Series-level data table
|
|
30418
|
+
*
|
|
30419
|
+
* @since 13.0.0
|
|
30420
|
+
* @apioption plotOptions.series.dataTable
|
|
30421
|
+
*/
|
|
30317
30422
|
/**
|
|
30318
30423
|
* Enable or disable the mouse tracking for a specific series. This
|
|
30319
30424
|
* includes point tooltips and click events on graphs and points. For
|
|
@@ -31197,6 +31302,7 @@ const seriesDefaults = {
|
|
|
31197
31302
|
* `series.allowPointSelect` option to true.
|
|
31198
31303
|
*
|
|
31199
31304
|
* @declare Highcharts.PointStatesSelectOptionsObject
|
|
31305
|
+
* @extends plotOptions.series.marker.states.hover
|
|
31200
31306
|
*/
|
|
31201
31307
|
select: {
|
|
31202
31308
|
/**
|
|
@@ -31773,6 +31879,7 @@ const seriesDefaults = {
|
|
|
31773
31879
|
* @sample {highmaps} maps/plotoptions/series-datalabels-box/
|
|
31774
31880
|
* Data labels box options
|
|
31775
31881
|
*
|
|
31882
|
+
* @type {number|Array<number>}
|
|
31776
31883
|
* @since 2.2.1
|
|
31777
31884
|
*/
|
|
31778
31885
|
padding: [1, 3],
|
|
@@ -31974,6 +32081,9 @@ const seriesDefaults = {
|
|
|
31974
32081
|
/**
|
|
31975
32082
|
* A collection of options for different series states.
|
|
31976
32083
|
*
|
|
32084
|
+
* In addition to the options documented under each state, any option from
|
|
32085
|
+
* the parent series type can be set, with exception of `data` and `states`.
|
|
32086
|
+
*
|
|
31977
32087
|
* @declare Highcharts.SeriesStatesOptionsObject
|
|
31978
32088
|
*/
|
|
31979
32089
|
states: {
|
|
@@ -32147,6 +32257,7 @@ const seriesDefaults = {
|
|
|
32147
32257
|
* Disabled inactive state
|
|
32148
32258
|
*
|
|
32149
32259
|
* @declare Highcharts.SeriesStatesInactiveOptionsObject
|
|
32260
|
+
* @extends plotOptions.series.states.hover
|
|
32150
32261
|
*/
|
|
32151
32262
|
inactive: {
|
|
32152
32263
|
/**
|
|
@@ -32547,7 +32658,6 @@ var SeriesRegistry;
|
|
|
32547
32658
|
* */
|
|
32548
32659
|
|
|
32549
32660
|
|
|
32550
|
-
const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
|
|
32551
32661
|
|
|
32552
32662
|
|
|
32553
32663
|
const { defaultOptions: Series_defaultOptions } = Defaults;
|
|
@@ -32685,6 +32795,13 @@ class Series {
|
|
|
32685
32795
|
* @type {number|undefined}
|
|
32686
32796
|
* @readonly
|
|
32687
32797
|
*/
|
|
32798
|
+
/**
|
|
32799
|
+
* The main group for the series' graphics.
|
|
32800
|
+
*
|
|
32801
|
+
* @name Highcharts.Series#group
|
|
32802
|
+
* @type {Highcharts.SVGElement}
|
|
32803
|
+
* @readonly
|
|
32804
|
+
*/
|
|
32688
32805
|
/**
|
|
32689
32806
|
* Contains the series' index in the `Chart.series` array.
|
|
32690
32807
|
*
|
|
@@ -32817,10 +32934,12 @@ class Series {
|
|
|
32817
32934
|
*/
|
|
32818
32935
|
series.options = series.setOptions(userOptions);
|
|
32819
32936
|
const options = series.options, visible = options.visible !== false;
|
|
32820
|
-
// Create the data table
|
|
32821
|
-
this.dataTable ?? (this.dataTable = options.dataTable
|
|
32822
|
-
|
|
32823
|
-
|
|
32937
|
+
// Create the data table or use the one passed as option
|
|
32938
|
+
this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
|
|
32939
|
+
new Data_DataTableCore() :
|
|
32940
|
+
options.dataTable?.isDataTable ?
|
|
32941
|
+
options.dataTable :
|
|
32942
|
+
new Data_DataTableCore(options.dataTable));
|
|
32824
32943
|
/**
|
|
32825
32944
|
* All child series that are linked to the current series through the
|
|
32826
32945
|
* [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
|
|
@@ -32880,7 +32999,7 @@ class Series {
|
|
|
32880
32999
|
if (chartSeries.length) {
|
|
32881
33000
|
lastSeries = chartSeries[chartSeries.length - 1];
|
|
32882
33001
|
}
|
|
32883
|
-
series._i =
|
|
33002
|
+
series._i = (lastSeries?._i ?? -1) + 1;
|
|
32884
33003
|
series.opacity = series.options.opacity;
|
|
32885
33004
|
// Insert the series and re-order all series above the insertion
|
|
32886
33005
|
// point.
|
|
@@ -32927,7 +33046,7 @@ class Series {
|
|
|
32927
33046
|
// Apply if the series xAxis or yAxis option matches
|
|
32928
33047
|
// the number of the axis, or if undefined, use the
|
|
32929
33048
|
// first axis
|
|
32930
|
-
if (
|
|
33049
|
+
if ((seriesOptions[coll] ?? 0) === axis.index ||
|
|
32931
33050
|
(typeof seriesOptions[coll] !==
|
|
32932
33051
|
'undefined' &&
|
|
32933
33052
|
seriesOptions[coll] === axisOptions.id)) {
|
|
@@ -32970,8 +33089,12 @@ class Series {
|
|
|
32970
33089
|
* @function Highcharts.Series#hasMarkerChanged
|
|
32971
33090
|
*/
|
|
32972
33091
|
hasMarkerChanged(options, oldOptions) {
|
|
32973
|
-
const marker = options.marker, oldMarker = oldOptions.marker
|
|
32974
|
-
|
|
33092
|
+
const marker = options.marker, oldMarker = oldOptions.marker;
|
|
33093
|
+
// Note that `marker` holds the full, merged object including
|
|
33094
|
+
// `plotOptions`, while `oldMarker` is the user-defined series-level
|
|
33095
|
+
// options only. We may need to refactor that in the future if more
|
|
33096
|
+
// issues like #24057 arise.
|
|
33097
|
+
return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
|
|
32975
33098
|
oldMarker.symbol !== marker.symbol || // #10870, #15946
|
|
32976
33099
|
oldMarker.height !== marker.height || // #16274
|
|
32977
33100
|
oldMarker.width !== marker.width // #16274
|
|
@@ -32990,7 +33113,8 @@ class Series {
|
|
|
32990
33113
|
time.parse(options.pointStart) ??
|
|
32991
33114
|
0;
|
|
32992
33115
|
let pointInterval;
|
|
32993
|
-
this.pointInterval = pointInterval =
|
|
33116
|
+
this.pointInterval = pointInterval =
|
|
33117
|
+
this.pointInterval ?? options.pointInterval ?? 1;
|
|
32994
33118
|
if (relativeXValue && isNumber(x)) {
|
|
32995
33119
|
pointInterval *= x;
|
|
32996
33120
|
}
|
|
@@ -33062,9 +33186,13 @@ class Series {
|
|
|
33062
33186
|
);
|
|
33063
33187
|
// When shared tooltip, stickyTracking is true by default,
|
|
33064
33188
|
// unless user says otherwise.
|
|
33065
|
-
this.stickyTracking =
|
|
33066
|
-
|
|
33067
|
-
|
|
33189
|
+
this.stickyTracking =
|
|
33190
|
+
seriesUserOptions.stickyTracking ??
|
|
33191
|
+
userPlotOptionsType.stickyTracking ??
|
|
33192
|
+
userPlotOptionsSeries.stickyTracking ??
|
|
33193
|
+
(this.tooltipOptions.shared && !this.noSharedTooltip ?
|
|
33194
|
+
true :
|
|
33195
|
+
options.stickyTracking);
|
|
33068
33196
|
// Delete marker object if not allowed (#1125)
|
|
33069
33197
|
if (typeOptions.marker === null) {
|
|
33070
33198
|
delete options.marker;
|
|
@@ -33142,7 +33270,9 @@ class Series {
|
|
|
33142
33270
|
if (!value) {
|
|
33143
33271
|
// Pick up either the colorIndex option, or the series.colorIndex
|
|
33144
33272
|
// after Series.update()
|
|
33145
|
-
setting =
|
|
33273
|
+
setting = prop === 'color' ?
|
|
33274
|
+
(this.options.colorIndex ?? this[indexName]) :
|
|
33275
|
+
this[indexName];
|
|
33146
33276
|
if (defined(setting)) { // After Series.update()
|
|
33147
33277
|
i = setting;
|
|
33148
33278
|
}
|
|
@@ -33202,7 +33332,7 @@ class Series {
|
|
|
33202
33332
|
*/
|
|
33203
33333
|
getSymbol() {
|
|
33204
33334
|
const seriesMarkerOption = this.options.marker;
|
|
33205
|
-
this.getCyclic('symbol', seriesMarkerOption
|
|
33335
|
+
this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
|
|
33206
33336
|
}
|
|
33207
33337
|
/**
|
|
33208
33338
|
* Shorthand to get one of the series' data columns from `Series.dataTable`.
|
|
@@ -33398,9 +33528,10 @@ class Series {
|
|
|
33398
33528
|
if (!oldData[i].destroyed && !oldData[i].condemned) {
|
|
33399
33529
|
const pOptions = dataTable.getRowObject(i);
|
|
33400
33530
|
if (pOptions) {
|
|
33531
|
+
// Remove undefined properties, but preserve explicit
|
|
33532
|
+
// nulls (#24872)
|
|
33401
33533
|
Object.keys(pOptions).forEach((key) => {
|
|
33402
|
-
if (
|
|
33403
|
-
pOptions[key] === oldData[i].options[key]*/) {
|
|
33534
|
+
if (pOptions[key] === void 0) {
|
|
33404
33535
|
delete pOptions[key];
|
|
33405
33536
|
}
|
|
33406
33537
|
});
|
|
@@ -33805,8 +33936,12 @@ class Series {
|
|
|
33805
33936
|
}
|
|
33806
33937
|
}
|
|
33807
33938
|
}
|
|
33808
|
-
// Find the closest distance between processed points
|
|
33809
|
-
|
|
33939
|
+
// Find the closest distance between processed points. When the data was
|
|
33940
|
+
// cropped (or set out of range), read x from the freshly cropped local
|
|
33941
|
+
// `modified` table, #24858.
|
|
33942
|
+
if (modified !== table) {
|
|
33943
|
+
xData = modified.getColumn('x', true) || [];
|
|
33944
|
+
}
|
|
33810
33945
|
const closestPointRange = getClosestDistance([
|
|
33811
33946
|
logarithmic ?
|
|
33812
33947
|
xData.map(logarithmic.log2lin) :
|
|
@@ -34011,9 +34146,9 @@ class Series {
|
|
|
34011
34146
|
* Force getting extremes of a total series data range.
|
|
34012
34147
|
*/
|
|
34013
34148
|
getExtremes(yData, forceExtremesFromAll) {
|
|
34014
|
-
const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34149
|
+
const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34015
34150
|
this.getExtremesFromAll ||
|
|
34016
|
-
|
|
34151
|
+
options.getExtremesFromAll, // #4599, #21003
|
|
34017
34152
|
table = getExtremesFromAll && this.cropped ?
|
|
34018
34153
|
this.dataTable :
|
|
34019
34154
|
this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
|
|
@@ -34023,7 +34158,12 @@ class Series {
|
|
|
34023
34158
|
// non-sorted data like scatter (#7639).
|
|
34024
34159
|
shoulder = this.requireSorting && !this.is('column') ?
|
|
34025
34160
|
1 : 0,
|
|
34026
|
-
//
|
|
34161
|
+
// Used only for `cumulativeStart` (#24608)
|
|
34162
|
+
excludeShoulder = options.cumulative &&
|
|
34163
|
+
options.cumulativeStart &&
|
|
34164
|
+
shoulder &&
|
|
34165
|
+
!getExtremesFromAll,
|
|
34166
|
+
// Compensate for log X axis (#2117)
|
|
34027
34167
|
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
|
|
34028
34168
|
this.cropped ||
|
|
34029
34169
|
!xAxis; // For colorAxis support
|
|
@@ -34035,10 +34175,10 @@ class Series {
|
|
|
34035
34175
|
}
|
|
34036
34176
|
for (i = 0; i < rowCount; i++) {
|
|
34037
34177
|
x = xData[i];
|
|
34038
|
-
// Check if it is within the selected x
|
|
34039
|
-
if (doAll ||
|
|
34178
|
+
// Check if it is within the selected x-axis range
|
|
34179
|
+
if ((doAll ||
|
|
34040
34180
|
((xData[i + shoulder] || x) >= xMin &&
|
|
34041
|
-
(xData[i - shoulder] || x) <= xMax)) {
|
|
34181
|
+
(xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
|
|
34042
34182
|
for (const values of yAxisData) {
|
|
34043
34183
|
const val = values[i];
|
|
34044
34184
|
// For points within the visible range, including the
|
|
@@ -34107,7 +34247,7 @@ class Series {
|
|
|
34107
34247
|
*/
|
|
34108
34248
|
translate() {
|
|
34109
34249
|
this.generatePoints();
|
|
34110
|
-
const series = this, { options, xAxis, yAxis } = series, { stacking, threshold } = options, {
|
|
34250
|
+
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
|
|
34111
34251
|
dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
|
|
34112
34252
|
yAxis.len);
|
|
34113
34253
|
let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
|
|
@@ -34159,7 +34299,9 @@ class Series {
|
|
|
34159
34299
|
yValue = stackValues[1];
|
|
34160
34300
|
if (lowValue === stackThreshold &&
|
|
34161
34301
|
stackIndicator.key === stacks[xValue].base) {
|
|
34162
|
-
lowValue =
|
|
34302
|
+
lowValue = isNumber(threshold) ?
|
|
34303
|
+
threshold :
|
|
34304
|
+
yAxis.min;
|
|
34163
34305
|
}
|
|
34164
34306
|
// #1200, #1232
|
|
34165
34307
|
if (yAxis.positiveValuesOnly &&
|
|
@@ -34167,7 +34309,7 @@ class Series {
|
|
|
34167
34309
|
lowValue <= 0) {
|
|
34168
34310
|
lowValue = void 0;
|
|
34169
34311
|
}
|
|
34170
|
-
point.total = point.stackTotal =
|
|
34312
|
+
point.total = point.stackTotal = stackItem.total ?? void 0;
|
|
34171
34313
|
point.percentage = defined(point.y) && stackItem.total ?
|
|
34172
34314
|
(point.y / stackItem.total * 100) : void 0;
|
|
34173
34315
|
point.stackY = yValue;
|
|
@@ -34300,7 +34442,7 @@ class Series {
|
|
|
34300
34442
|
* Initialize the animation.
|
|
34301
34443
|
*/
|
|
34302
34444
|
animate(init) {
|
|
34303
|
-
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation =
|
|
34445
|
+
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
|
|
34304
34446
|
// The key for temporary animation clips
|
|
34305
34447
|
animationClipKey = [
|
|
34306
34448
|
this.getSharedClipKey(),
|
|
@@ -34396,10 +34538,11 @@ class Series {
|
|
|
34396
34538
|
*/
|
|
34397
34539
|
drawPoints(points) {
|
|
34398
34540
|
points || (points = this.points.concat(this.condemnedPoints));
|
|
34399
|
-
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 =
|
|
34400
|
-
|
|
34401
|
-
|
|
34402
|
-
seriesMarkerOptions.
|
|
34541
|
+
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 ??
|
|
34542
|
+
(!xAxis || xAxis.isRadial ? true : null) ??
|
|
34543
|
+
// Use larger or equal as radius is null in bubbles (#6321)
|
|
34544
|
+
((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
|
|
34545
|
+
seriesMarkerOptions.radius));
|
|
34403
34546
|
let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
|
|
34404
34547
|
if (seriesMarkerOptions.enabled !== false ||
|
|
34405
34548
|
series._hasPointMarkers) {
|
|
@@ -34416,8 +34559,10 @@ class Series {
|
|
|
34416
34559
|
// Only draw the point if y is defined
|
|
34417
34560
|
if (shouldDrawMarker) {
|
|
34418
34561
|
// Shortcuts
|
|
34419
|
-
const symbol =
|
|
34420
|
-
|
|
34562
|
+
const symbol = pointMarkerOptions.symbol ??
|
|
34563
|
+
series.symbol ??
|
|
34564
|
+
'rect';
|
|
34565
|
+
markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
|
|
34421
34566
|
const isInside = point.isInside !== false;
|
|
34422
34567
|
if (!graphic &&
|
|
34423
34568
|
isInside &&
|
|
@@ -34482,15 +34627,17 @@ class Series {
|
|
|
34482
34627
|
* A hash containing those attributes that are not settable from CSS.
|
|
34483
34628
|
*/
|
|
34484
34629
|
markerAttribs(point, state) {
|
|
34485
|
-
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34630
|
+
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34486
34631
|
seriesMarkerOptions.symbol), attribs = {};
|
|
34487
|
-
let seriesStateOptions, pointStateOptions, radius =
|
|
34632
|
+
let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
|
|
34633
|
+
seriesMarkerOptions.radius;
|
|
34488
34634
|
// Handle hover and select states
|
|
34489
34635
|
if (state) {
|
|
34490
|
-
seriesStateOptions = seriesMarkerOptions
|
|
34636
|
+
seriesStateOptions = seriesMarkerOptions.states?.[state];
|
|
34491
34637
|
pointStateOptions = pointMarkerOptions.states?.[state];
|
|
34492
|
-
radius =
|
|
34493
|
-
|
|
34638
|
+
radius = pointStateOptions?.radius ??
|
|
34639
|
+
seriesStateOptions?.radius ??
|
|
34640
|
+
(radius && radius + (seriesStateOptions?.radiusPlus || 0));
|
|
34494
34641
|
}
|
|
34495
34642
|
point.hasImage = symbol && symbol.indexOf('url') === 0;
|
|
34496
34643
|
if (point.hasImage) {
|
|
@@ -34503,7 +34650,7 @@ class Series {
|
|
|
34503
34650
|
0 :
|
|
34504
34651
|
symbol === 'rect' ?
|
|
34505
34652
|
// Rectangle symbols need crisp edges, others don't
|
|
34506
|
-
seriesMarkerOptions
|
|
34653
|
+
seriesMarkerOptions.lineWidth || 0 :
|
|
34507
34654
|
1);
|
|
34508
34655
|
}
|
|
34509
34656
|
attribs.x = pos[0] - radius;
|
|
@@ -34534,8 +34681,9 @@ class Series {
|
|
|
34534
34681
|
* The presentational attributes to be set on the point.
|
|
34535
34682
|
*/
|
|
34536
34683
|
pointAttribs(point, state) {
|
|
34537
|
-
const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34538
|
-
let
|
|
34684
|
+
const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34685
|
+
let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
|
|
34686
|
+
seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
|
|
34539
34687
|
color = (pointColorOption ||
|
|
34540
34688
|
zoneColor ||
|
|
34541
34689
|
pointColor ||
|
|
@@ -34548,19 +34696,22 @@ class Series {
|
|
|
34548
34696
|
color);
|
|
34549
34697
|
// Handle hover and select states
|
|
34550
34698
|
state = state || 'normal';
|
|
34551
|
-
|
|
34552
|
-
|
|
34553
|
-
|
|
34554
|
-
|
|
34555
|
-
strokeWidth
|
|
34556
|
-
|
|
34557
|
-
|
|
34558
|
-
|
|
34559
|
-
|
|
34560
|
-
|
|
34561
|
-
|
|
34562
|
-
|
|
34563
|
-
|
|
34699
|
+
const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
|
|
34700
|
+
const pointStateOptions = pointMarkerOptions.states?.[state] || {};
|
|
34701
|
+
strokeWidth = pointStateOptions.lineWidth ??
|
|
34702
|
+
seriesStateOptions.lineWidth ??
|
|
34703
|
+
(strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
|
|
34704
|
+
seriesStateOptions.lineWidthPlus ??
|
|
34705
|
+
0);
|
|
34706
|
+
fill = (pointStateOptions.fillColor ||
|
|
34707
|
+
seriesStateOptions.fillColor ||
|
|
34708
|
+
fill);
|
|
34709
|
+
stroke = (pointStateOptions.lineColor ||
|
|
34710
|
+
seriesStateOptions.lineColor ||
|
|
34711
|
+
stroke);
|
|
34712
|
+
opacity = (pointStateOptions.opacity ??
|
|
34713
|
+
seriesStateOptions.opacity ??
|
|
34714
|
+
opacity);
|
|
34564
34715
|
return {
|
|
34565
34716
|
'stroke': stroke,
|
|
34566
34717
|
'stroke-width': strokeWidth,
|
|
@@ -34599,7 +34750,7 @@ class Series {
|
|
|
34599
34750
|
// Destroy all points with their elements
|
|
34600
34751
|
i = data.length;
|
|
34601
34752
|
while (i--) {
|
|
34602
|
-
data[i]?.destroy?.();
|
|
34753
|
+
data[i]?.destroy?.(true);
|
|
34603
34754
|
}
|
|
34604
34755
|
for (const zone of series.zones || []) {
|
|
34605
34756
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -34626,7 +34777,7 @@ class Series {
|
|
|
34626
34777
|
erase(chart.series, series);
|
|
34627
34778
|
chart.orderItems('series');
|
|
34628
34779
|
// Clear all members
|
|
34629
|
-
objectEach(series, function (
|
|
34780
|
+
objectEach(series, function (_val, prop) {
|
|
34630
34781
|
if (!keepEventsForUpdate || prop !== 'hcEvents') {
|
|
34631
34782
|
delete series[prop];
|
|
34632
34783
|
}
|
|
@@ -34678,7 +34829,7 @@ class Series {
|
|
|
34678
34829
|
// Reset
|
|
34679
34830
|
zones.forEach((zone) => {
|
|
34680
34831
|
zone.lineClip = [];
|
|
34681
|
-
zone.translated = clamp(axis.toPixels(
|
|
34832
|
+
zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
|
|
34682
34833
|
});
|
|
34683
34834
|
// The use of the Color Threshold assumes there are no gaps so it is
|
|
34684
34835
|
// safe to hide the original graph and area unless it is not
|
|
@@ -34902,7 +35053,7 @@ class Series {
|
|
|
34902
35053
|
* @emits Highcharts.Series#event:afterRender
|
|
34903
35054
|
*/
|
|
34904
35055
|
render() {
|
|
34905
|
-
const series = this, { chart, options, hasRendered } = series, animOptions =
|
|
35056
|
+
const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
|
|
34906
35057
|
'inherit' : 'hidden', // #2597
|
|
34907
35058
|
zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
|
|
34908
35059
|
let animDuration = series.finishedAnimating ?
|
|
@@ -35004,7 +35155,7 @@ class Series {
|
|
|
35004
35155
|
*
|
|
35005
35156
|
* @function Highcharts.Series#searchPoint
|
|
35006
35157
|
*
|
|
35007
|
-
* @param {
|
|
35158
|
+
* @param {PointerEvent} e
|
|
35008
35159
|
* The normalized pointer event
|
|
35009
35160
|
* @param {boolean} [compareX=false]
|
|
35010
35161
|
* Search only by the X value, not Y
|
|
@@ -35036,7 +35187,7 @@ class Series {
|
|
|
35036
35187
|
// Prevent multiple k-d-trees from being built simultaneously
|
|
35037
35188
|
// (#6235)
|
|
35038
35189
|
this.buildingKdTree = true;
|
|
35039
|
-
const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
|
|
35190
|
+
const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
|
|
35040
35191
|
.indexOf('y') > -1 ? 2 : 1;
|
|
35041
35192
|
/**
|
|
35042
35193
|
* Internal function
|
|
@@ -35086,7 +35237,7 @@ class Series {
|
|
|
35086
35237
|
* The point to search for.
|
|
35087
35238
|
* @param {boolean} [compareX=false]
|
|
35088
35239
|
* Search only by the X value, not Y.
|
|
35089
|
-
* @param {
|
|
35240
|
+
* @param {PointerEvent} [e]
|
|
35090
35241
|
* The normalized pointer event.
|
|
35091
35242
|
* @param {Function} [suppliedPointEvaluator]
|
|
35092
35243
|
* A custom point evaluator function.
|
|
@@ -35292,11 +35443,13 @@ class Series {
|
|
|
35292
35443
|
* Both X and Y values given
|
|
35293
35444
|
* @sample highcharts/members/series-addpoint-pie/
|
|
35294
35445
|
* Append pie slice
|
|
35295
|
-
* @sample
|
|
35446
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
35447
|
+
* Alternative approach with data table
|
|
35448
|
+
* @sample {highstock} stock/members/series-addpoint/
|
|
35296
35449
|
* Append 100 points in Highcharts Stock
|
|
35297
|
-
* @sample stock/members/series-addpoint-shift/
|
|
35450
|
+
* @sample {highstock} stock/members/series-addpoint-shift/
|
|
35298
35451
|
* Append and shift in Highcharts Stock
|
|
35299
|
-
* @sample maps/members/series-addpoint/
|
|
35452
|
+
* @sample {highmaps} maps/members/series-addpoint/
|
|
35300
35453
|
* Add a point in Highmaps
|
|
35301
35454
|
*
|
|
35302
35455
|
* @function Highcharts.Series#addPoint
|
|
@@ -35332,7 +35485,7 @@ class Series {
|
|
|
35332
35485
|
const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
|
|
35333
35486
|
let isInTheMiddle, i;
|
|
35334
35487
|
// Optional redraw, defaults to true
|
|
35335
|
-
redraw =
|
|
35488
|
+
redraw = (redraw ?? true);
|
|
35336
35489
|
// Get options and push the point to xData, yData and series.options. In
|
|
35337
35490
|
// series.generatePoints the Point instance will be created on demand
|
|
35338
35491
|
// and pushed to the series.data array.
|
|
@@ -35442,8 +35595,8 @@ class Series {
|
|
|
35442
35595
|
chart.redraw();
|
|
35443
35596
|
}
|
|
35444
35597
|
};
|
|
35445
|
-
|
|
35446
|
-
redraw =
|
|
35598
|
+
setAnimation(animation, chart);
|
|
35599
|
+
redraw = (redraw ?? true);
|
|
35447
35600
|
// Fire the event with a default handler of removing the point
|
|
35448
35601
|
if (point) {
|
|
35449
35602
|
point.firePointEvent('remove', null, remove);
|
|
@@ -35486,7 +35639,7 @@ class Series {
|
|
|
35486
35639
|
// Redraw
|
|
35487
35640
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
35488
35641
|
chart.linkSeries(keepEvents);
|
|
35489
|
-
if (
|
|
35642
|
+
if (redraw ?? true) {
|
|
35490
35643
|
chart.redraw(animation);
|
|
35491
35644
|
}
|
|
35492
35645
|
}
|
|
@@ -35703,7 +35856,7 @@ class Series {
|
|
|
35703
35856
|
series.isDirtyData = true;
|
|
35704
35857
|
}
|
|
35705
35858
|
fireEvent(this, 'afterUpdate');
|
|
35706
|
-
if (
|
|
35859
|
+
if (redraw ?? true) {
|
|
35707
35860
|
chart.redraw(keepPoints ? void 0 : false);
|
|
35708
35861
|
}
|
|
35709
35862
|
}
|
|
@@ -35720,12 +35873,12 @@ class Series {
|
|
|
35720
35873
|
* @internal
|
|
35721
35874
|
*/
|
|
35722
35875
|
hasOptionChanged(optionName) {
|
|
35723
|
-
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption =
|
|
35876
|
+
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
|
|
35724
35877
|
// Check if `plotOptions` are defined already, #19203
|
|
35725
35878
|
if (oldOption && !defined(plotOptionsOption)) {
|
|
35726
35879
|
return option !== oldOption;
|
|
35727
35880
|
}
|
|
35728
|
-
return option !==
|
|
35881
|
+
return option !== (plotOptionsOption ?? option);
|
|
35729
35882
|
}
|
|
35730
35883
|
/**
|
|
35731
35884
|
* Runs on mouse over the series graphical items.
|
|
@@ -35796,10 +35949,11 @@ class Series {
|
|
|
35796
35949
|
* Determines if state should be inherited by points too.
|
|
35797
35950
|
*/
|
|
35798
35951
|
setState(state, inherit) {
|
|
35799
|
-
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
|
|
35952
|
+
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
|
|
35800
35953
|
// By default a quick animation to hover/inactive,
|
|
35801
35954
|
// slower to un-hover
|
|
35802
|
-
stateAnimation =
|
|
35955
|
+
stateAnimation = stateOptions[state || 'normal']?.animation ??
|
|
35956
|
+
series.chart.options.chart.animation;
|
|
35803
35957
|
let { lineWidth, opacity } = options;
|
|
35804
35958
|
state = state || '';
|
|
35805
35959
|
if (series.state !== state) {
|
|
@@ -35826,9 +35980,13 @@ class Series {
|
|
|
35826
35980
|
return;
|
|
35827
35981
|
}
|
|
35828
35982
|
if (state) {
|
|
35829
|
-
lineWidth =
|
|
35830
|
-
|
|
35831
|
-
|
|
35983
|
+
lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
|
|
35984
|
+
void 0 :
|
|
35985
|
+
// Increase by lineWidthPlus only when lineWidth
|
|
35986
|
+
// is a number.
|
|
35987
|
+
(lineWidth +
|
|
35988
|
+
(stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
|
|
35989
|
+
opacity = stateOptions[state]?.opacity ?? opacity;
|
|
35832
35990
|
}
|
|
35833
35991
|
if (graph && !graph.dashstyle && isNumber(lineWidth)) {
|
|
35834
35992
|
// Animate the graph stroke-width
|
|
@@ -35872,11 +36030,7 @@ class Series {
|
|
|
35872
36030
|
* Can be either `hover` or undefined to set to normal state.
|
|
35873
36031
|
*/
|
|
35874
36032
|
setAllPointsToState(state) {
|
|
35875
|
-
this.points.forEach(
|
|
35876
|
-
if (point.setState) {
|
|
35877
|
-
point.setState(state);
|
|
35878
|
-
}
|
|
35879
|
-
});
|
|
36033
|
+
this.points.forEach((point) => point.setState?.(state));
|
|
35880
36034
|
}
|
|
35881
36035
|
/**
|
|
35882
36036
|
* Show or hide the series.
|
|
@@ -36557,7 +36711,6 @@ Series_SeriesRegistry.series = Series;
|
|
|
36557
36711
|
* */
|
|
36558
36712
|
|
|
36559
36713
|
|
|
36560
|
-
const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
|
|
36561
36714
|
|
|
36562
36715
|
const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
|
|
36563
36716
|
|
|
@@ -36686,7 +36839,7 @@ class Legend {
|
|
|
36686
36839
|
* @param {Highcharts.LegendOptions} options
|
|
36687
36840
|
*/
|
|
36688
36841
|
setOptions(options) {
|
|
36689
|
-
const padding =
|
|
36842
|
+
const padding = (options.padding ?? 8);
|
|
36690
36843
|
/**
|
|
36691
36844
|
* Legend options.
|
|
36692
36845
|
*
|
|
@@ -36703,7 +36856,7 @@ class Legend {
|
|
|
36703
36856
|
this.itemMarginBottom = options.itemMarginBottom;
|
|
36704
36857
|
this.padding = padding;
|
|
36705
36858
|
this.initialItemY = padding - 5; // 5 is pixels above the text
|
|
36706
|
-
this.symbolWidth =
|
|
36859
|
+
this.symbolWidth = (options.symbolWidth ?? 16);
|
|
36707
36860
|
this.pages = [];
|
|
36708
36861
|
this.proximate = options.layout === 'proximate' && !this.chart.inverted;
|
|
36709
36862
|
// #12705: baseline has to be reset on every update
|
|
@@ -36737,7 +36890,7 @@ class Legend {
|
|
|
36737
36890
|
}
|
|
36738
36891
|
this.destroy();
|
|
36739
36892
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
36740
|
-
if (
|
|
36893
|
+
if (redraw ?? true) {
|
|
36741
36894
|
chart.redraw();
|
|
36742
36895
|
}
|
|
36743
36896
|
fireEvent(this, 'afterUpdate', { redraw });
|
|
@@ -36975,7 +37128,7 @@ class Legend {
|
|
|
36975
37128
|
* The item to render.
|
|
36976
37129
|
*/
|
|
36977
37130
|
renderItem(item) {
|
|
36978
|
-
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 ?
|
|
37131
|
+
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 ?
|
|
36979
37132
|
item.series :
|
|
36980
37133
|
item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
|
|
36981
37134
|
seriesOptions &&
|
|
@@ -37021,9 +37174,11 @@ class Legend {
|
|
|
37021
37174
|
legend.fontMetrics.f + 3 + legend.itemMarginTop;
|
|
37022
37175
|
label.attr('y', legend.baseline);
|
|
37023
37176
|
legend.symbolHeight =
|
|
37024
|
-
|
|
37177
|
+
(options.symbolHeight ?? legend.fontMetrics.f);
|
|
37025
37178
|
if (options.squareSymbol) {
|
|
37026
|
-
legend.symbolWidth =
|
|
37179
|
+
legend.symbolWidth =
|
|
37180
|
+
options.symbolWidth ??
|
|
37181
|
+
Math.max(legend.symbolHeight, 16);
|
|
37027
37182
|
itemExtraWidth = legend.symbolWidth + symbolPadding +
|
|
37028
37183
|
itemDistance + (showCheckbox ? 20 : 0);
|
|
37029
37184
|
if (ltr) {
|
|
@@ -37075,7 +37230,7 @@ class Legend {
|
|
|
37075
37230
|
* @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
|
|
37076
37231
|
*/
|
|
37077
37232
|
layoutItem(item) {
|
|
37078
|
-
const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ?
|
|
37233
|
+
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 &&
|
|
37079
37234
|
this.totalItemWidth > maxLegendWidth) ?
|
|
37080
37235
|
this.maxItemWidth :
|
|
37081
37236
|
item.itemWidth, legendItem = item.legendItem || {};
|
|
@@ -37129,7 +37284,9 @@ class Legend {
|
|
|
37129
37284
|
const seriesOptions = series?.options;
|
|
37130
37285
|
// Handle showInLegend. If the series is linked to another series,
|
|
37131
37286
|
// defaults to false.
|
|
37132
|
-
if (series &&
|
|
37287
|
+
if (series &&
|
|
37288
|
+
(seriesOptions.showInLegend ??
|
|
37289
|
+
(!defined(seriesOptions.linkedTo)))) {
|
|
37133
37290
|
// Use points or series for the legend item depending on
|
|
37134
37291
|
// legendType
|
|
37135
37292
|
allItems = allItems.concat(series.legendItem?.labels ||
|
|
@@ -37411,7 +37568,7 @@ class Legend {
|
|
|
37411
37568
|
* @function Highcharts.Legend#handleOverflow
|
|
37412
37569
|
*/
|
|
37413
37570
|
handleOverflow(legendHeight) {
|
|
37414
|
-
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 =
|
|
37571
|
+
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) {
|
|
37415
37572
|
if (typeof height === 'number') {
|
|
37416
37573
|
clipRect.attr({
|
|
37417
37574
|
height: height
|
|
@@ -37457,7 +37614,7 @@ class Legend {
|
|
|
37457
37614
|
navOptions.enabled !== false) {
|
|
37458
37615
|
this.clipHeight = clipHeight =
|
|
37459
37616
|
Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
|
|
37460
|
-
this.currentPage =
|
|
37617
|
+
this.currentPage = (this.currentPage ?? 1);
|
|
37461
37618
|
this.fullHeight = legendHeight;
|
|
37462
37619
|
// Fill pages with Y positions so that the top of each a legend item
|
|
37463
37620
|
// defines the scroll top for each page (#2098)
|
|
@@ -37560,7 +37717,7 @@ class Legend {
|
|
|
37560
37717
|
}
|
|
37561
37718
|
if (currentPage > 0) {
|
|
37562
37719
|
if (typeof animation !== 'undefined') {
|
|
37563
|
-
|
|
37720
|
+
setAnimation(animation, chart);
|
|
37564
37721
|
}
|
|
37565
37722
|
this.nav.attr({
|
|
37566
37723
|
translateX: padding,
|
|
@@ -37617,7 +37774,7 @@ class Legend {
|
|
|
37617
37774
|
this.currentPage = currentPage;
|
|
37618
37775
|
this.positionCheckboxes();
|
|
37619
37776
|
// Fire event after scroll animation is complete
|
|
37620
|
-
const animOptions =
|
|
37777
|
+
const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
|
|
37621
37778
|
syncTimeout(() => {
|
|
37622
37779
|
fireEvent(this, 'afterScroll', { currentPage });
|
|
37623
37780
|
}, animOptions.duration);
|
|
@@ -37827,7 +37984,7 @@ class Legend {
|
|
|
37827
37984
|
*/ /**
|
|
37828
37985
|
* Related browser event.
|
|
37829
37986
|
* @name Highcharts.LegendItemClickEventObject#browserEvent
|
|
37830
|
-
* @type {
|
|
37987
|
+
* @type {PointerEvent}
|
|
37831
37988
|
*/ /**
|
|
37832
37989
|
* Prevent the default action of toggle the visibility of the series or point.
|
|
37833
37990
|
* @name Highcharts.LegendItemClickEventObject#preventDefault
|
|
@@ -37878,7 +38035,7 @@ class Legend {
|
|
|
37878
38035
|
*/ /**
|
|
37879
38036
|
* Related browser event.
|
|
37880
38037
|
* @name Highcharts.PointLegendItemClickEventObject#browserEvent
|
|
37881
|
-
* @type {
|
|
38038
|
+
* @type {PointerEvent}
|
|
37882
38039
|
*/ /**
|
|
37883
38040
|
* Whether the default action has been prevented (`true`) or not.
|
|
37884
38041
|
* @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
|
|
@@ -37934,7 +38091,7 @@ class Legend {
|
|
|
37934
38091
|
*/ /**
|
|
37935
38092
|
* Related browser event.
|
|
37936
38093
|
* @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
|
|
37937
|
-
* @type {
|
|
38094
|
+
* @type {PointerEvent}
|
|
37938
38095
|
*/ /**
|
|
37939
38096
|
* Whether the default action has been prevented (`true`) or not.
|
|
37940
38097
|
* @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
|
|
@@ -37968,7 +38125,6 @@ class Legend {
|
|
|
37968
38125
|
* */
|
|
37969
38126
|
|
|
37970
38127
|
|
|
37971
|
-
const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
|
|
37972
38128
|
|
|
37973
38129
|
|
|
37974
38130
|
const { defaultOptions: Chart_defaultOptions } = Defaults;
|
|
@@ -38059,7 +38215,7 @@ class Chart {
|
|
|
38059
38215
|
*/
|
|
38060
38216
|
static chart(a, b, c) {
|
|
38061
38217
|
const chart = new Chart(a, b, c);
|
|
38062
|
-
return chart.promise
|
|
38218
|
+
return chart.promise ?? chart;
|
|
38063
38219
|
}
|
|
38064
38220
|
// Implementation
|
|
38065
38221
|
constructor(a,
|
|
@@ -38100,10 +38256,10 @@ class Chart {
|
|
|
38100
38256
|
const chart = this, options = chart.options.chart, zooming = options.zooming;
|
|
38101
38257
|
chart.zooming = {
|
|
38102
38258
|
...zooming,
|
|
38103
|
-
type:
|
|
38104
|
-
key:
|
|
38105
|
-
pinchType:
|
|
38106
|
-
singleTouch:
|
|
38259
|
+
type: (options.zoomType ?? zooming.type),
|
|
38260
|
+
key: (options.zoomKey ?? zooming.key),
|
|
38261
|
+
pinchType: (options.pinchType ?? zooming.pinchType),
|
|
38262
|
+
singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
|
|
38107
38263
|
resetButton: merge(zooming.resetButton, options.resetZoomButton)
|
|
38108
38264
|
};
|
|
38109
38265
|
}
|
|
@@ -38446,7 +38602,7 @@ class Chart {
|
|
|
38446
38602
|
redraw(animation) {
|
|
38447
38603
|
fireEvent(this, 'beforeRedraw');
|
|
38448
38604
|
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 = [];
|
|
38449
|
-
let hasDirtyStacks, hasStackedSeries, i,
|
|
38605
|
+
let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
|
|
38450
38606
|
renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
|
|
38451
38607
|
// Handle responsive rules, not only on resize (#6130)
|
|
38452
38608
|
if (chart.setResponsive) {
|
|
@@ -38455,7 +38611,7 @@ class Chart {
|
|
|
38455
38611
|
// Set the global animation. When chart.hasRendered is not true, the
|
|
38456
38612
|
// redraw call comes from a responsive rule and animation should not
|
|
38457
38613
|
// occur.
|
|
38458
|
-
|
|
38614
|
+
setAnimation(chart.hasRendered ? animation : false, chart);
|
|
38459
38615
|
if (isHiddenChart) {
|
|
38460
38616
|
chart.temporaryDisplay();
|
|
38461
38617
|
}
|
|
@@ -38518,6 +38674,7 @@ class Chart {
|
|
|
38518
38674
|
});
|
|
38519
38675
|
chart.getMargins(); // #3098
|
|
38520
38676
|
// If one axis is dirty, all axes must be redrawn (#792, #2169)
|
|
38677
|
+
let isDirtyBox = chart.isDirtyBox;
|
|
38521
38678
|
axes.forEach(function (axis) {
|
|
38522
38679
|
if (axis.isDirty) {
|
|
38523
38680
|
isDirtyBox = true;
|
|
@@ -38654,7 +38811,7 @@ class Chart {
|
|
|
38654
38811
|
// inspect the generated series.points.
|
|
38655
38812
|
series.getPointsCollection()
|
|
38656
38813
|
.forEach((point) => {
|
|
38657
|
-
if (
|
|
38814
|
+
if (point.selectedStaging ?? point.selected) {
|
|
38658
38815
|
acc.push(point);
|
|
38659
38816
|
}
|
|
38660
38817
|
});
|
|
@@ -39053,11 +39210,8 @@ class Chart {
|
|
|
39053
39210
|
const chartHeight = chart.chartHeight;
|
|
39054
39211
|
let chartWidth = chart.chartWidth;
|
|
39055
39212
|
// Allow table cells and flex-boxes to shrink without the chart
|
|
39056
|
-
// blocking them out (#6427)
|
|
39057
|
-
|
|
39058
|
-
if (!chart.styledMode) {
|
|
39059
|
-
css(renderTo, { overflow: 'hidden' });
|
|
39060
|
-
}
|
|
39213
|
+
// blocking them out (#6427)
|
|
39214
|
+
css(renderTo, { overflow: 'hidden' });
|
|
39061
39215
|
// Create the inner container
|
|
39062
39216
|
if (!chart.styledMode) {
|
|
39063
39217
|
containerStyle = extend({
|
|
@@ -39095,7 +39249,7 @@ class Chart {
|
|
|
39095
39249
|
chartWidth = chart.chartWidth;
|
|
39096
39250
|
if (!chart.styledMode) {
|
|
39097
39251
|
css(container, {
|
|
39098
|
-
width:
|
|
39252
|
+
width: (optionsChart.style?.width ?? chartWidth + 'px')
|
|
39099
39253
|
});
|
|
39100
39254
|
}
|
|
39101
39255
|
}
|
|
@@ -39114,7 +39268,7 @@ class Chart {
|
|
|
39114
39268
|
// first ResizeObserver reflow
|
|
39115
39269
|
chart.containerBox = chart.getContainerBox();
|
|
39116
39270
|
// Set the initial animation from the options
|
|
39117
|
-
|
|
39271
|
+
setAnimation(void 0, chart);
|
|
39118
39272
|
chart.setClassName(optionsChart.className);
|
|
39119
39273
|
if (!chart.styledMode) {
|
|
39120
39274
|
chart.renderer.setStyle(optionsChart.style);
|
|
@@ -39309,7 +39463,7 @@ class Chart {
|
|
|
39309
39463
|
// Handle the isResizing counter
|
|
39310
39464
|
chart.isResizing += 1;
|
|
39311
39465
|
// Set the animation for the current process
|
|
39312
|
-
|
|
39466
|
+
setAnimation(animation, chart);
|
|
39313
39467
|
const globalAnimation = renderer.globalAnimation;
|
|
39314
39468
|
chart.oldChartHeight = chart.chartHeight;
|
|
39315
39469
|
chart.oldChartWidth = chart.chartWidth;
|
|
@@ -39328,7 +39482,7 @@ class Chart {
|
|
|
39328
39482
|
// Resize the container with the global animation applied if enabled
|
|
39329
39483
|
// (#2503)
|
|
39330
39484
|
if (!chart.styledMode) {
|
|
39331
|
-
(globalAnimation ?
|
|
39485
|
+
(globalAnimation ? animate : css)(chart.container, {
|
|
39332
39486
|
width: `${chartWidth + scrollablePixelsX}px`,
|
|
39333
39487
|
height: `${chartHeight + scrollablePixelsY}px`
|
|
39334
39488
|
}, globalAnimation);
|
|
@@ -39354,7 +39508,7 @@ class Chart {
|
|
|
39354
39508
|
if (chart) {
|
|
39355
39509
|
fireEvent(chart, 'endResize');
|
|
39356
39510
|
}
|
|
39357
|
-
},
|
|
39511
|
+
}, animObject(globalAnimation).duration);
|
|
39358
39512
|
}
|
|
39359
39513
|
// Handle resizing counter even if we've re-rendered or not (#20548).
|
|
39360
39514
|
chart.isResizing -= 1;
|
|
@@ -39738,7 +39892,7 @@ class Chart {
|
|
|
39738
39892
|
const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
|
|
39739
39893
|
mockTick.destroy();
|
|
39740
39894
|
if (label &&
|
|
39741
|
-
|
|
39895
|
+
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39742
39896
|
expectedSpace = label.getBBox().height +
|
|
39743
39897
|
labels.distance +
|
|
39744
39898
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
@@ -40073,7 +40227,7 @@ class Chart {
|
|
|
40073
40227
|
const chart = this;
|
|
40074
40228
|
let series;
|
|
40075
40229
|
if (options) { // <- not necessary
|
|
40076
|
-
redraw =
|
|
40230
|
+
redraw = (redraw ?? true); // Defaults to true
|
|
40077
40231
|
fireEvent(chart, 'addSeries', { options: options }, function () {
|
|
40078
40232
|
series = chart.initSeries(options);
|
|
40079
40233
|
chart.isDirtyLegend = true;
|
|
@@ -40164,7 +40318,7 @@ class Chart {
|
|
|
40164
40318
|
*/
|
|
40165
40319
|
createAxis(coll, options) {
|
|
40166
40320
|
const axis = new Axis_Axis(this, options.axis, coll);
|
|
40167
|
-
if (
|
|
40321
|
+
if (options.redraw ?? true) {
|
|
40168
40322
|
this.redraw(options.animation);
|
|
40169
40323
|
}
|
|
40170
40324
|
return axis;
|
|
@@ -40212,7 +40366,7 @@ class Chart {
|
|
|
40212
40366
|
}
|
|
40213
40367
|
loadingDiv.className = 'highcharts-loading';
|
|
40214
40368
|
// Update text
|
|
40215
|
-
HTML_AST.setElementHTML(loadingSpan,
|
|
40369
|
+
HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
|
|
40216
40370
|
if (!chart.styledMode) {
|
|
40217
40371
|
// Update visuals
|
|
40218
40372
|
css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
|
|
@@ -40223,7 +40377,7 @@ class Chart {
|
|
|
40223
40377
|
opacity: 0,
|
|
40224
40378
|
display: ''
|
|
40225
40379
|
});
|
|
40226
|
-
|
|
40380
|
+
animate(loadingDiv, {
|
|
40227
40381
|
opacity: loadingStyle.opacity ?? 0.5
|
|
40228
40382
|
}, {
|
|
40229
40383
|
duration: loadingOptions?.showDuration ?? 0
|
|
@@ -40251,7 +40405,7 @@ class Chart {
|
|
|
40251
40405
|
loadingDiv.className =
|
|
40252
40406
|
'highcharts-loading highcharts-loading-hidden';
|
|
40253
40407
|
if (!this.styledMode) {
|
|
40254
|
-
|
|
40408
|
+
animate(loadingDiv, {
|
|
40255
40409
|
opacity: 0
|
|
40256
40410
|
}, {
|
|
40257
40411
|
duration: options.loading?.hideDuration ?? 100,
|
|
@@ -40283,6 +40437,9 @@ class Chart {
|
|
|
40283
40437
|
* Note that when changing series data, `chart.update` may mutate the passed
|
|
40284
40438
|
* data options.
|
|
40285
40439
|
*
|
|
40440
|
+
* If the given options don't differ from the current chart options, the
|
|
40441
|
+
* update is skipped and the `afterUpdate` event is not emitted.
|
|
40442
|
+
*
|
|
40286
40443
|
* See also the
|
|
40287
40444
|
* [responsive option set](https://api.highcharts.com/highcharts/responsive).
|
|
40288
40445
|
* Switching between `responsive.rules` basically runs `chart.update` under
|
|
@@ -40327,14 +40484,24 @@ class Chart {
|
|
|
40327
40484
|
caption: 'setCaption'
|
|
40328
40485
|
}, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
|
|
40329
40486
|
let updateAllAxes, updateAllSeries, runSetSize;
|
|
40330
|
-
|
|
40487
|
+
options = diffObjects(options, chart.options);
|
|
40488
|
+
const e = {
|
|
40489
|
+
options,
|
|
40490
|
+
// Event handlers can turn this on or off to control further
|
|
40491
|
+
// processing
|
|
40492
|
+
hasChanged: !!Object.keys(options).length
|
|
40493
|
+
};
|
|
40494
|
+
fireEvent(chart, 'update', e);
|
|
40495
|
+
// If no changes are detected, stop further processing (#24805).
|
|
40496
|
+
if (!e.hasChanged) {
|
|
40497
|
+
return;
|
|
40498
|
+
}
|
|
40331
40499
|
// If there are responsive rules in action, undo the responsive rules
|
|
40332
40500
|
// before we apply the updated options and replay the responsive rules
|
|
40333
40501
|
// on top from the chart.redraw function (#9617).
|
|
40334
40502
|
if (!isResponsiveOptions) {
|
|
40335
40503
|
chart.setResponsive(false, true);
|
|
40336
40504
|
}
|
|
40337
|
-
options = diffObjects(options, chart.options);
|
|
40338
40505
|
chart.userOptions = merge(chart.userOptions, options);
|
|
40339
40506
|
// If the top-level chart option is present, some special updates are
|
|
40340
40507
|
// required
|
|
@@ -40437,7 +40604,7 @@ class Chart {
|
|
|
40437
40604
|
}
|
|
40438
40605
|
// No match by id found, match by index instead
|
|
40439
40606
|
if (!item && chart[coll]) {
|
|
40440
|
-
item = chart[coll][
|
|
40607
|
+
item = chart[coll][(newOptions.index ?? i)];
|
|
40441
40608
|
// Check if we grabbed an item with an existing but
|
|
40442
40609
|
// different id (#13541). Check that the item in this
|
|
40443
40610
|
// position is not internal (navigator).
|
|
@@ -40513,7 +40680,7 @@ class Chart {
|
|
|
40513
40680
|
(isNumber(newHeight) && newHeight !== chart.chartHeight)) {
|
|
40514
40681
|
chart.setSize(newWidth, newHeight, animation);
|
|
40515
40682
|
}
|
|
40516
|
-
else if (
|
|
40683
|
+
else if (redraw ?? true) {
|
|
40517
40684
|
chart.redraw(animation);
|
|
40518
40685
|
}
|
|
40519
40686
|
fireEvent(chart, 'afterUpdate', {
|
|
@@ -40562,15 +40729,11 @@ class Chart {
|
|
|
40562
40729
|
showResetZoom() {
|
|
40563
40730
|
const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
|
|
40564
40731
|
btnOptions.relativeTo === 'spacingBox' ?
|
|
40565
|
-
|
|
40732
|
+
void 0 :
|
|
40566
40733
|
'plotBox');
|
|
40567
|
-
|
|
40568
|
-
function zoomOut() {
|
|
40569
|
-
chart.zoomOut();
|
|
40570
|
-
}
|
|
40571
|
-
fireEvent(this, 'beforeShowResetZoom', null, function () {
|
|
40734
|
+
fireEvent(this, 'beforeShowResetZoom', void 0, () => {
|
|
40572
40735
|
chart.resetZoomButton = chart.renderer
|
|
40573
|
-
.button(lang.resetZoom,
|
|
40736
|
+
.button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
|
|
40574
40737
|
.attr({
|
|
40575
40738
|
align: btnOptions.position.align,
|
|
40576
40739
|
title: lang.resetZoomTitle
|
|
@@ -40648,21 +40811,21 @@ class Chart {
|
|
|
40648
40811
|
* @function Highcharts.Chart#transform
|
|
40649
40812
|
*/
|
|
40650
40813
|
transform(params) {
|
|
40651
|
-
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, {
|
|
40814
|
+
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
|
|
40652
40815
|
// Remove active points for shared tooltip
|
|
40653
40816
|
this.hoverPoints?.forEach((point) => point.setState());
|
|
40654
40817
|
fireEvent(this, 'transform', params);
|
|
40655
40818
|
let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
|
|
40656
40819
|
for (const axis of axes) {
|
|
40657
|
-
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength =
|
|
40820
|
+
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),
|
|
40658
40821
|
// If fingers pinched very close on this axis, treat as pan
|
|
40659
40822
|
scale = Math.abs(toLength) < 10 ?
|
|
40660
40823
|
1 :
|
|
40661
40824
|
toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
|
|
40662
|
-
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (
|
|
40663
|
-
(!
|
|
40664
|
-
|
|
40665
|
-
1, minPx = move;
|
|
40825
|
+
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
|
|
40826
|
+
(!horiz && reversed)) ?
|
|
40827
|
+
1 :
|
|
40828
|
+
-1, minPx = move;
|
|
40666
40829
|
// Zooming in multiple panes, zoom only in the pane that receives
|
|
40667
40830
|
// the input
|
|
40668
40831
|
if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
|
|
@@ -40671,17 +40834,11 @@ class Chart {
|
|
|
40671
40834
|
// Adjust offset to ensure selection zoom triggers correctly
|
|
40672
40835
|
// (#22945)
|
|
40673
40836
|
// Set offset to 0 for ordinal axis only when zooming out, (#24545).
|
|
40674
|
-
const offset = (axis.chart.polar ||
|
|
40837
|
+
const offset = (selection || axis.chart.polar ||
|
|
40838
|
+
(axis.isOrdinal && scale <= 1)) ?
|
|
40675
40839
|
0 :
|
|
40676
40840
|
(minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
|
|
40677
40841
|
let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
|
|
40678
|
-
if (selection) {
|
|
40679
|
-
selection[axis.coll].push({
|
|
40680
|
-
axis,
|
|
40681
|
-
min: Math.min(eventMin, eventMax),
|
|
40682
|
-
max: Math.max(eventMin, eventMax)
|
|
40683
|
-
});
|
|
40684
|
-
}
|
|
40685
40842
|
if (newMin > newMax) {
|
|
40686
40843
|
[newMin, newMax] = [newMax, newMin];
|
|
40687
40844
|
}
|
|
@@ -40738,14 +40895,15 @@ class Chart {
|
|
|
40738
40895
|
}
|
|
40739
40896
|
// Set new extremes if they are actually new
|
|
40740
40897
|
if (reset || (axis.series.length &&
|
|
40741
|
-
(
|
|
40742
|
-
|
|
40743
|
-
|
|
40898
|
+
(selection ||
|
|
40899
|
+
((newMin !== min || newMax !== max) &&
|
|
40900
|
+
newMin >= floor &&
|
|
40901
|
+
newMax <= ceiling)))) {
|
|
40744
40902
|
if (selection) {
|
|
40745
40903
|
selection[axis.coll].push({
|
|
40746
40904
|
axis,
|
|
40747
|
-
min:
|
|
40748
|
-
max:
|
|
40905
|
+
min: Math.min(eventMin, eventMax),
|
|
40906
|
+
max: Math.max(eventMin, eventMax)
|
|
40749
40907
|
});
|
|
40750
40908
|
}
|
|
40751
40909
|
else {
|
|
@@ -40753,11 +40911,14 @@ class Chart {
|
|
|
40753
40911
|
// disallow certain axis padding options that would make
|
|
40754
40912
|
// panning/zooming hard. Reset and redraw after the
|
|
40755
40913
|
// operation has finished.
|
|
40756
|
-
axis.isPanning = trigger !== 'zoom'
|
|
40914
|
+
axis.isPanning = trigger !== 'zoom' &&
|
|
40915
|
+
trigger !== 'drop';
|
|
40757
40916
|
if (axis.isPanning && trigger !== 'mousewheel') {
|
|
40758
40917
|
isAnyAxisPanning = true; // #21319
|
|
40759
40918
|
}
|
|
40760
|
-
|
|
40919
|
+
if (trigger !== 'drop') {
|
|
40920
|
+
axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
|
|
40921
|
+
}
|
|
40761
40922
|
if (!reset &&
|
|
40762
40923
|
(newMin > floor || newMax < ceiling)) {
|
|
40763
40924
|
displayButton = allowResetButton;
|
|
@@ -40788,7 +40949,8 @@ class Chart {
|
|
|
40788
40949
|
});
|
|
40789
40950
|
}
|
|
40790
40951
|
else {
|
|
40791
|
-
// Show or hide the Reset zoom button, but not while
|
|
40952
|
+
// Show or hide the Reset zoom button, but not while
|
|
40953
|
+
// panning.
|
|
40792
40954
|
if (displayButton &&
|
|
40793
40955
|
!isAnyAxisPanning &&
|
|
40794
40956
|
!this.resetZoomButton) {
|
|
@@ -41030,7 +41192,6 @@ extend(Chart.prototype, {
|
|
|
41030
41192
|
*/
|
|
41031
41193
|
|
|
41032
41194
|
|
|
41033
|
-
const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
|
|
41034
41195
|
|
|
41035
41196
|
const { composed: ScrollablePlotArea_composed } = Core_Globals;
|
|
41036
41197
|
|
|
@@ -41196,7 +41357,7 @@ class ScrollablePlotArea {
|
|
|
41196
41357
|
this.moveFixedElements();
|
|
41197
41358
|
}
|
|
41198
41359
|
// Increase the size of the scrollable renderer and background
|
|
41199
|
-
|
|
41360
|
+
stop(chart.container);
|
|
41200
41361
|
css(container, {
|
|
41201
41362
|
width: `${scrollableWidth}px`,
|
|
41202
41363
|
height: `${scrollableHeight}px`
|
|
@@ -41353,6 +41514,13 @@ ScrollablePlotArea.fixedSelectors = [
|
|
|
41353
41514
|
* vertical scrolling, depending on whether the `minWidth` or `minHeight`
|
|
41354
41515
|
* option is set.
|
|
41355
41516
|
*
|
|
41517
|
+
* **Note:** Because native browser scrollbars are used, they may
|
|
41518
|
+
* overlap with fixed chart elements such as credits or the chart
|
|
41519
|
+
* border. To avoid this collision, it is recommended to manually add
|
|
41520
|
+
* extra space to the corresponding side using `chart.spacingBottom`
|
|
41521
|
+
* (for horizontal scrollbars) or `chart.spacingRight` (for vertical
|
|
41522
|
+
* scrollbars).
|
|
41523
|
+
*
|
|
41356
41524
|
* @sample highcharts/chart/scrollable-plotarea
|
|
41357
41525
|
* Scrollable plot area
|
|
41358
41526
|
* @sample highcharts/chart/scrollable-plotarea-vertical
|
|
@@ -41513,7 +41681,7 @@ class StackItem {
|
|
|
41513
41681
|
r: options.borderRadius || 0,
|
|
41514
41682
|
text: str,
|
|
41515
41683
|
// Set default padding to 5 as it is in dataLabels #12308
|
|
41516
|
-
padding:
|
|
41684
|
+
padding: (options.padding ?? 5),
|
|
41517
41685
|
visibility: 'hidden' // Hidden until setOffset is called
|
|
41518
41686
|
};
|
|
41519
41687
|
if (!chart.styledMode) {
|
|
@@ -41547,7 +41715,7 @@ class StackItem {
|
|
|
41547
41715
|
}), { verticalAlign } = alignOptions;
|
|
41548
41716
|
if (label && stackBox) {
|
|
41549
41717
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41550
|
-
let isJustify =
|
|
41718
|
+
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41551
41719
|
// Reset alignOptions property after justify #12337
|
|
41552
41720
|
alignOptions.x = options.x || 0;
|
|
41553
41721
|
alignOptions.y = options.y || 0;
|
|
@@ -41584,7 +41752,7 @@ class StackItem {
|
|
|
41584
41752
|
rotationOriginY: labelBox.height / 2
|
|
41585
41753
|
});
|
|
41586
41754
|
// Check if the dataLabel should be visible.
|
|
41587
|
-
if (
|
|
41755
|
+
if (((!isJustify && options.crop) ?? true)) {
|
|
41588
41756
|
visible =
|
|
41589
41757
|
isNumber(label.x) &&
|
|
41590
41758
|
isNumber(label.y) &&
|
|
@@ -41618,7 +41786,7 @@ class StackItem {
|
|
|
41618
41786
|
getStackBox(stackBoxProps) {
|
|
41619
41787
|
const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41620
41788
|
100 :
|
|
41621
|
-
|
|
41789
|
+
(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 ||
|
|
41622
41790
|
(isNumber(axis.min) &&
|
|
41623
41791
|
axis.logarithmic &&
|
|
41624
41792
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
@@ -41703,7 +41871,6 @@ class StackItem {
|
|
|
41703
41871
|
* */
|
|
41704
41872
|
|
|
41705
41873
|
|
|
41706
|
-
const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
|
|
41707
41874
|
|
|
41708
41875
|
const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
|
|
41709
41876
|
|
|
@@ -41732,7 +41899,7 @@ function chartGetStacks() {
|
|
|
41732
41899
|
if (series.options.stacking && series.reserveSpace()) {
|
|
41733
41900
|
series.stackKey = [
|
|
41734
41901
|
series.type,
|
|
41735
|
-
|
|
41902
|
+
(series.options.stack ?? ''),
|
|
41736
41903
|
inverted ? xAxisOptions.top : xAxisOptions.left,
|
|
41737
41904
|
inverted ? xAxisOptions.height : xAxisOptions.width
|
|
41738
41905
|
].join(',');
|
|
@@ -41895,7 +42062,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41895
42062
|
stack = stacks[key][x];
|
|
41896
42063
|
if (y !== null) {
|
|
41897
42064
|
stack.points[pointKey] = stack.points[series.index] = [
|
|
41898
|
-
|
|
42065
|
+
(stack.cumulative ?? stackThreshold)
|
|
41899
42066
|
];
|
|
41900
42067
|
// Record the base of the stack
|
|
41901
42068
|
if (!defined(stack.cumulative)) {
|
|
@@ -41943,7 +42110,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41943
42110
|
stack.cumulative = (total || 1) - 1;
|
|
41944
42111
|
}
|
|
41945
42112
|
else {
|
|
41946
|
-
stack.cumulative = correctFloat(
|
|
42113
|
+
stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
|
|
41947
42114
|
}
|
|
41948
42115
|
stack.total = total;
|
|
41949
42116
|
if (y !== null) {
|
|
@@ -42047,7 +42214,7 @@ class AxisAdditions {
|
|
|
42047
42214
|
}
|
|
42048
42215
|
/** @internal */
|
|
42049
42216
|
renderStackTotals() {
|
|
42050
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig =
|
|
42217
|
+
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 ||
|
|
42051
42218
|
renderer
|
|
42052
42219
|
.g('stack-labels')
|
|
42053
42220
|
.attr({
|
|
@@ -42958,8 +43125,7 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
42958
43125
|
*/
|
|
42959
43126
|
getGraphPath(points) {
|
|
42960
43127
|
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
|
|
42961
|
-
yAxis.getThreshold(options.threshold)), connectNulls =
|
|
42962
|
-
options.connectNulls, stacking === 'percent'),
|
|
43128
|
+
yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
|
|
42963
43129
|
// To display null points in underlying stacked series, this
|
|
42964
43130
|
// series graph must be broken, and the area also fall down to
|
|
42965
43131
|
// fill the gap left by the null point. #2069
|
|
@@ -43012,9 +43178,9 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
43012
43178
|
// Treat points with undefined plotY as null (e.g. non-positive
|
|
43013
43179
|
// values on logarithmic axis, #18422)
|
|
43014
43180
|
isNull = points[i].isNull || !defined(points[i].plotY);
|
|
43015
|
-
plotX =
|
|
43181
|
+
plotX = (points[i].rectPlotX ?? points[i].plotX);
|
|
43016
43182
|
yBottom = stacking ?
|
|
43017
|
-
|
|
43183
|
+
(points[i].yBottom ?? translatedThreshold) :
|
|
43018
43184
|
translatedThreshold;
|
|
43019
43185
|
if (!isNull || connectNulls) {
|
|
43020
43186
|
if (!connectNulls) {
|
|
@@ -43352,10 +43518,10 @@ class SplineSeries extends SplineSeries_LineSeries {
|
|
|
43352
43518
|
}
|
|
43353
43519
|
const ret = [
|
|
43354
43520
|
'C',
|
|
43355
|
-
|
|
43356
|
-
|
|
43357
|
-
|
|
43358
|
-
|
|
43521
|
+
(lastPoint.rightContX ?? lastPoint.plotX ?? 0),
|
|
43522
|
+
(lastPoint.rightContY ?? lastPoint.plotY ?? 0),
|
|
43523
|
+
(leftContX ?? plotX ?? 0),
|
|
43524
|
+
(leftContY ?? plotY ?? 0),
|
|
43359
43525
|
plotX,
|
|
43360
43526
|
plotY
|
|
43361
43527
|
];
|
|
@@ -43800,6 +43966,8 @@ const ColumnSeriesDefaults = {
|
|
|
43800
43966
|
* 0.25
|
|
43801
43967
|
* @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
|
|
43802
43968
|
* 0 for tightly packed columns
|
|
43969
|
+
* @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
|
|
43970
|
+
* Pie point padding plugin
|
|
43803
43971
|
*
|
|
43804
43972
|
* @product highcharts highstock gantt
|
|
43805
43973
|
*/
|
|
@@ -44131,12 +44299,12 @@ const ColumnSeriesDefaults = {
|
|
|
44131
44299
|
*/
|
|
44132
44300
|
/**
|
|
44133
44301
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44134
|
-
* @product highcharts highstock
|
|
44302
|
+
* @product highcharts highstock gantt
|
|
44135
44303
|
* @apioption series.column.states.hover
|
|
44136
44304
|
*/
|
|
44137
44305
|
/**
|
|
44138
44306
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44139
|
-
* @product highcharts highstock
|
|
44307
|
+
* @product highcharts highstock gantt
|
|
44140
44308
|
* @apioption series.column.states.select
|
|
44141
44309
|
*/
|
|
44142
44310
|
/**
|
|
@@ -44166,7 +44334,6 @@ const ColumnSeriesDefaults = {
|
|
|
44166
44334
|
* */
|
|
44167
44335
|
|
|
44168
44336
|
|
|
44169
|
-
const { animObject: ColumnSeries_animObject } = AnimationUtilities;
|
|
44170
44337
|
|
|
44171
44338
|
const { parse: ColumnSeries_color } = Color_Color;
|
|
44172
44339
|
|
|
@@ -44237,7 +44404,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44237
44404
|
}
|
|
44238
44405
|
else { // Run the animation
|
|
44239
44406
|
translateStart = Number(series.group.attr(translateProp));
|
|
44240
|
-
series.group.animate({ scaleY: 1 }, extend(
|
|
44407
|
+
series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
|
|
44241
44408
|
// Do the scale synchronously to ensure smooth
|
|
44242
44409
|
// updating (#5030, #7228)
|
|
44243
44410
|
step: function (val, fx) {
|
|
@@ -44323,7 +44490,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44323
44490
|
xAxis.tickInterval ||
|
|
44324
44491
|
1), // #2610
|
|
44325
44492
|
xAxis.len // #1535
|
|
44326
|
-
), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len,
|
|
44493
|
+
), 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,
|
|
44327
44494
|
// #1251, #3737
|
|
44328
44495
|
colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
|
|
44329
44496
|
(groupPadding +
|
|
@@ -44573,11 +44740,11 @@ class ColumnSeries extends Series_Series {
|
|
|
44573
44740
|
*/
|
|
44574
44741
|
pointAttribs(point, state) {
|
|
44575
44742
|
const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
|
|
44576
|
-
let stateOptions, zone, brightness, fill =
|
|
44743
|
+
let stateOptions, zone, brightness, fill = point?.color || this.color,
|
|
44577
44744
|
// Set to fill when borderColor null:
|
|
44578
|
-
stroke = (
|
|
44745
|
+
stroke = (point?.[strokeOption] ||
|
|
44579
44746
|
options[strokeOption] ||
|
|
44580
|
-
fill), dashstyle =
|
|
44747
|
+
fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
|
|
44581
44748
|
options[strokeWidthOption] ??
|
|
44582
44749
|
this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
|
|
44583
44750
|
0 :
|
|
@@ -44598,7 +44765,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44598
44765
|
}
|
|
44599
44766
|
// Select or hover states
|
|
44600
44767
|
if (state && point) {
|
|
44601
|
-
stateOptions = merge(options.states[state],
|
|
44768
|
+
stateOptions = merge(options.states?.[state],
|
|
44602
44769
|
// #6401
|
|
44603
44770
|
point.options.states?.[state] || {});
|
|
44604
44771
|
brightness = stateOptions.brightness;
|
|
@@ -44608,14 +44775,13 @@ class ColumnSeries extends Series_Series {
|
|
|
44608
44775
|
.brighten(stateOptions.brightness)
|
|
44609
44776
|
.get()) || fill;
|
|
44610
44777
|
stroke = stateOptions[strokeOption] || stroke;
|
|
44611
|
-
strokeWidth =
|
|
44612
|
-
stateOptions[strokeWidthOption] || strokeWidth;
|
|
44778
|
+
strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
|
|
44613
44779
|
dashstyle = stateOptions.dashStyle || dashstyle;
|
|
44614
|
-
opacity =
|
|
44780
|
+
opacity = stateOptions.opacity ?? opacity;
|
|
44615
44781
|
}
|
|
44616
44782
|
const ret = {
|
|
44617
|
-
fill
|
|
44618
|
-
stroke
|
|
44783
|
+
fill,
|
|
44784
|
+
stroke,
|
|
44619
44785
|
'stroke-width': strokeWidth,
|
|
44620
44786
|
opacity: point?.condemned ? 0 : opacity
|
|
44621
44787
|
};
|
|
@@ -44656,6 +44822,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44656
44822
|
initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
|
|
44657
44823
|
if (!styledMode) {
|
|
44658
44824
|
initialAttr.opacity = 0;
|
|
44825
|
+
initialAttr['stroke-width'] = 0;
|
|
44659
44826
|
}
|
|
44660
44827
|
shouldUpdate = true;
|
|
44661
44828
|
verb = 'animate';
|
|
@@ -44671,7 +44838,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44671
44838
|
}
|
|
44672
44839
|
// Presentational
|
|
44673
44840
|
if (!styledMode) {
|
|
44674
|
-
graphic[verb](series.pointAttribs(point,
|
|
44841
|
+
graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
|
|
44675
44842
|
.shadow(point.allowShadow !== false && options.shadow);
|
|
44676
44843
|
}
|
|
44677
44844
|
graphic
|
|
@@ -44795,6 +44962,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44795
44962
|
* Default Export
|
|
44796
44963
|
*
|
|
44797
44964
|
* */
|
|
44965
|
+
/** @internal */
|
|
44798
44966
|
/* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
|
|
44799
44967
|
/* *
|
|
44800
44968
|
*
|
|
@@ -44831,7 +44999,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44831
44999
|
* */
|
|
44832
45000
|
|
|
44833
45001
|
|
|
44834
|
-
const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
|
|
44835
45002
|
|
|
44836
45003
|
const { format: DataLabel_format } = Core_Templating;
|
|
44837
45004
|
|
|
@@ -44887,7 +45054,7 @@ var DataLabel;
|
|
|
44887
45054
|
// that parts of the align box is inside the plot area
|
|
44888
45055
|
// (#12370). When stacking, it is always inside regardless
|
|
44889
45056
|
// of the option (#15148).
|
|
44890
|
-
|
|
45057
|
+
(options.inside ?? !!this.options.stacking) &&
|
|
44891
45058
|
alignTo &&
|
|
44892
45059
|
chart.isInsidePlot(plotX, inverted ?
|
|
44893
45060
|
alignTo.x + 1 :
|
|
@@ -44990,8 +45157,8 @@ var DataLabel;
|
|
|
44990
45157
|
// zIndex: 20
|
|
44991
45158
|
// }).add();
|
|
44992
45159
|
// chart.renderer.circle(
|
|
44993
|
-
// chart.plotLeft +
|
|
44994
|
-
// chart.plotTop +
|
|
45160
|
+
// chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
|
|
45161
|
+
// chart.plotTop + (dataLabel.alignAttr.y ?? 0),
|
|
44995
45162
|
// 2
|
|
44996
45163
|
// ).attr({
|
|
44997
45164
|
// fill: 'red',
|
|
@@ -45148,7 +45315,7 @@ var DataLabel;
|
|
|
45148
45315
|
'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
|
|
45149
45316
|
// Resolve the animation
|
|
45150
45317
|
const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
|
|
45151
|
-
|
|
45318
|
+
getDeferredAnimation(chart, animation, series) :
|
|
45152
45319
|
{ defer: 0, duration: 0 };
|
|
45153
45320
|
fireEvent(this, 'drawDataLabels');
|
|
45154
45321
|
if (series.hasDataLabels?.()) {
|
|
@@ -45174,7 +45341,7 @@ var DataLabel;
|
|
|
45174
45341
|
if (labelEnabled) {
|
|
45175
45342
|
// Create individual options structure that can be
|
|
45176
45343
|
// extended without affecting others
|
|
45177
|
-
formatString =
|
|
45344
|
+
formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
|
|
45178
45345
|
labelText = defined(formatString) ?
|
|
45179
45346
|
DataLabel_format(formatString, point, chart) :
|
|
45180
45347
|
(labelOptions[point.formatPrefix + 'Formatter'] ||
|
|
@@ -45182,7 +45349,9 @@ var DataLabel;
|
|
|
45182
45349
|
rotation = labelOptions.rotation;
|
|
45183
45350
|
if (!chart.styledMode) {
|
|
45184
45351
|
// Determine the color
|
|
45185
|
-
style.color =
|
|
45352
|
+
style.color = (isString(labelOptions.color) ?
|
|
45353
|
+
labelOptions.color :
|
|
45354
|
+
void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
|
|
45186
45355
|
// Get automated contrast color
|
|
45187
45356
|
if (style.color === 'contrast') {
|
|
45188
45357
|
if (backgroundColor !== 'none') {
|
|
@@ -45914,6 +46083,8 @@ const ScatterSeriesDefaults = {
|
|
|
45914
46083
|
* Arrays of datetime x and y
|
|
45915
46084
|
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
45916
46085
|
* Arrays of point.name and y
|
|
46086
|
+
* @sample {highcharts} highcharts/series-scatter/scatter-cluster/
|
|
46087
|
+
* Computed clusters
|
|
45917
46088
|
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
45918
46089
|
* Config objects
|
|
45919
46090
|
*
|
|
@@ -45981,14 +46152,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
|
|
|
45981
46152
|
return rand - Math.floor(rand);
|
|
45982
46153
|
}
|
|
45983
46154
|
if (jitter) {
|
|
45984
|
-
this.points.forEach(
|
|
45985
|
-
['x', 'y'].forEach(
|
|
46155
|
+
this.points.forEach((point, i) => {
|
|
46156
|
+
['x', 'y'].forEach((dim, j) => {
|
|
45986
46157
|
if (jitter[dim] && !point.isNull) {
|
|
45987
|
-
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`]
|
|
45988
|
-
axis.transA;
|
|
46158
|
+
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
|
|
45989
46159
|
if (axis && !axis.logarithmic) {
|
|
45990
46160
|
// Identify the outer bounds of the jitter range
|
|
45991
|
-
|
|
46161
|
+
// (#25054)
|
|
46162
|
+
const translatedJitter = jitter[dim] * axis.transA *
|
|
46163
|
+
(axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
|
|
45992
46164
|
// Find a random position within this range
|
|
45993
46165
|
point[plotProp] = min +
|
|
45994
46166
|
(max - min) * unrandom(i + j * len);
|
|
@@ -46062,7 +46234,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
|
|
|
46062
46234
|
const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
|
|
46063
46235
|
|
|
46064
46236
|
/**
|
|
46065
|
-
* @
|
|
46237
|
+
* @internal
|
|
46066
46238
|
*/
|
|
46067
46239
|
var CenteredUtilities;
|
|
46068
46240
|
(function (CenteredUtilities) {
|
|
@@ -46080,7 +46252,7 @@ var CenteredUtilities;
|
|
|
46080
46252
|
* Get the center of the pie based on the size and center options relative
|
|
46081
46253
|
* to the plot area. Borrowed by the polar and gauge series types.
|
|
46082
46254
|
*
|
|
46083
|
-
* @
|
|
46255
|
+
* @internal
|
|
46084
46256
|
* @function Highcharts.CenteredSeriesMixin.getCenter
|
|
46085
46257
|
*/
|
|
46086
46258
|
function getCenter() {
|
|
@@ -46093,11 +46265,13 @@ var CenteredUtilities;
|
|
|
46093
46265
|
innerSize = parseFloat(innerSize);
|
|
46094
46266
|
}
|
|
46095
46267
|
const positions = [
|
|
46096
|
-
|
|
46097
|
-
|
|
46268
|
+
(centerOption?.[0] ?? '50%'),
|
|
46269
|
+
(centerOption?.[1] ?? '50%'),
|
|
46098
46270
|
// Prevent from negative values
|
|
46099
|
-
|
|
46100
|
-
|
|
46271
|
+
((size && size < 0 ? void 0 : options.size) ?? '100%'),
|
|
46272
|
+
((innerSize && innerSize < 0 ?
|
|
46273
|
+
void 0 :
|
|
46274
|
+
options.innerSize || 0) ?? '0%')
|
|
46101
46275
|
];
|
|
46102
46276
|
for (i = 0; i < 4; ++i) {
|
|
46103
46277
|
value = positions[i];
|
|
@@ -46125,7 +46299,7 @@ var CenteredUtilities;
|
|
|
46125
46299
|
* GetStartAndEndRadians - Calculates start and end angles in radians.
|
|
46126
46300
|
* Used in series types such as pie and sunburst.
|
|
46127
46301
|
*
|
|
46128
|
-
* @
|
|
46302
|
+
* @internal
|
|
46129
46303
|
* @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
|
|
46130
46304
|
*
|
|
46131
46305
|
* @param {number} [start]
|
|
@@ -46157,6 +46331,7 @@ var CenteredUtilities;
|
|
|
46157
46331
|
* Default Export
|
|
46158
46332
|
*
|
|
46159
46333
|
* */
|
|
46334
|
+
/** @internal */
|
|
46160
46335
|
/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
|
|
46161
46336
|
/* *
|
|
46162
46337
|
*
|
|
@@ -46164,7 +46339,7 @@ var CenteredUtilities;
|
|
|
46164
46339
|
*
|
|
46165
46340
|
* */
|
|
46166
46341
|
/**
|
|
46167
|
-
* @
|
|
46342
|
+
* @internal
|
|
46168
46343
|
* @interface Highcharts.RadianAngles
|
|
46169
46344
|
*/ /**
|
|
46170
46345
|
* @name Highcharts.RadianAngles#end
|
|
@@ -46189,7 +46364,6 @@ var CenteredUtilities;
|
|
|
46189
46364
|
* */
|
|
46190
46365
|
|
|
46191
46366
|
|
|
46192
|
-
const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
|
|
46193
46367
|
|
|
46194
46368
|
|
|
46195
46369
|
/* *
|
|
@@ -46297,9 +46471,9 @@ class PiePoint extends Series_Point {
|
|
|
46297
46471
|
*/
|
|
46298
46472
|
slice(sliced, redraw, animation) {
|
|
46299
46473
|
const series = this.series, chart = series.chart;
|
|
46300
|
-
|
|
46474
|
+
setAnimation(animation, chart);
|
|
46301
46475
|
// Redraw is true by default
|
|
46302
|
-
redraw =
|
|
46476
|
+
redraw = (redraw ?? true);
|
|
46303
46477
|
this.sliced = this.options.sliced = sliced ?? !this.sliced;
|
|
46304
46478
|
// Update options.data
|
|
46305
46479
|
if (series.options.data) {
|
|
@@ -47104,7 +47278,8 @@ class PieSeries extends Series_Series {
|
|
|
47104
47278
|
// Start values
|
|
47105
47279
|
graphic.attr({
|
|
47106
47280
|
// Animate from inner radius (#779)
|
|
47107
|
-
r:
|
|
47281
|
+
r: point.startR ??
|
|
47282
|
+
(series.center && series.center[3] / 2),
|
|
47108
47283
|
start: startAngleRad,
|
|
47109
47284
|
end: startAngleRad
|
|
47110
47285
|
});
|
|
@@ -47745,7 +47920,7 @@ var PieDataLabel_ColumnDataLabel;
|
|
|
47745
47920
|
labelPosition.computed.x = x;
|
|
47746
47921
|
labelPosition.computed.y = y - topOffset;
|
|
47747
47922
|
// Detect overflowing data labels
|
|
47748
|
-
if (
|
|
47923
|
+
if (dataLabelOptions.crop ?? true) {
|
|
47749
47924
|
dataLabelWidth = dataLabel.getBBox().width;
|
|
47750
47925
|
let sideOverflow;
|
|
47751
47926
|
// Overflow left
|
|
@@ -48261,7 +48436,10 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48261
48436
|
if (point.visible) {
|
|
48262
48437
|
(point.dataLabels || []).forEach((label) => {
|
|
48263
48438
|
const options = label.options || {};
|
|
48264
|
-
label.labelrank =
|
|
48439
|
+
label.labelrank =
|
|
48440
|
+
options.labelrank ??
|
|
48441
|
+
point.labelrank ??
|
|
48442
|
+
point.shapeArgs?.height; // #4118
|
|
48265
48443
|
// #21725: Sync target positions for generic overlap
|
|
48266
48444
|
// checking. During animations (e.g., toggling a
|
|
48267
48445
|
// point), DOM positions may overlap. We force
|
|
@@ -48435,7 +48613,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
|
|
|
48435
48613
|
if (options.open || !options.borderRadius) {
|
|
48436
48614
|
return path;
|
|
48437
48615
|
}
|
|
48438
|
-
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius
|
|
48616
|
+
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
|
|
48439
48617
|
// Cap to half the sector radius
|
|
48440
48618
|
(r - innerR) / 2,
|
|
48441
48619
|
// For smaller pie slices, cap to the largest small circle that
|
|
@@ -48461,7 +48639,7 @@ function seriesOnAfterColumnTranslate() {
|
|
|
48461
48639
|
if (this.options.borderRadius &&
|
|
48462
48640
|
!(this.chart.is3d && this.chart.is3d())) {
|
|
48463
48641
|
const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
|
|
48464
|
-
?.borderRadius, borderRadius =
|
|
48642
|
+
?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
|
|
48465
48643
|
for (const point of this.points) {
|
|
48466
48644
|
const { shapeArgs } = point;
|
|
48467
48645
|
if (point.shapeType === 'roundedRect' && shapeArgs) {
|
|
@@ -48533,8 +48711,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
|
|
|
48533
48711
|
symbols.roundedRect = BorderRadius_roundedRect;
|
|
48534
48712
|
}
|
|
48535
48713
|
}
|
|
48536
|
-
/**
|
|
48537
|
-
function
|
|
48714
|
+
/**
|
|
48715
|
+
* Utility function to get the full border radius options object, from a simple
|
|
48716
|
+
* number or a partial options object.
|
|
48717
|
+
* @internal
|
|
48718
|
+
*/
|
|
48719
|
+
function borderRadiusObject(options, seriesBROptions) {
|
|
48538
48720
|
if (!isObject(options)) {
|
|
48539
48721
|
options = { radius: options || 0 };
|
|
48540
48722
|
}
|
|
@@ -48542,7 +48724,7 @@ function optionsToObject(options, seriesBROptions) {
|
|
|
48542
48724
|
}
|
|
48543
48725
|
/** @internal */
|
|
48544
48726
|
function pieSeriesOnAfterTranslate() {
|
|
48545
|
-
const borderRadius =
|
|
48727
|
+
const borderRadius = borderRadiusObject(this.options.borderRadius);
|
|
48546
48728
|
for (const point of this.points) {
|
|
48547
48729
|
const shapeArgs = point.shapeArgs;
|
|
48548
48730
|
if (shapeArgs) {
|
|
@@ -48661,7 +48843,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48661
48843
|
* Column and pie with rounded border
|
|
48662
48844
|
*
|
|
48663
48845
|
* @name Highcharts.BorderRadiusOptionsObject#radius
|
|
48664
|
-
* @type {string|number}
|
|
48846
|
+
* @type {string|number|undefined}
|
|
48665
48847
|
*/ /**
|
|
48666
48848
|
* The scope of the rounding for column charts or plot bands. In a stacked
|
|
48667
48849
|
* column chart, the value `point` means each single point will get rounded
|
|
@@ -48676,8 +48858,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48676
48858
|
* Rounded columns
|
|
48677
48859
|
*
|
|
48678
48860
|
* @name Highcharts.BorderRadiusOptionsObject#scope
|
|
48679
|
-
* @
|
|
48680
|
-
* @type {string}
|
|
48861
|
+
* @type {"individual"|"point"|"stack"|undefined}
|
|
48681
48862
|
*/ /**
|
|
48682
48863
|
* For column charts, where in the point or stack to apply rounding. The `end`
|
|
48683
48864
|
* value means only those corners at the point value will be rounded, leaving
|
|
@@ -48688,8 +48869,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48688
48869
|
* Rounding on all corners
|
|
48689
48870
|
*
|
|
48690
48871
|
* @name Highcharts.BorderRadiusOptionsObject#where
|
|
48691
|
-
* @
|
|
48692
|
-
* @type {string}
|
|
48872
|
+
* @type {"all"|"end"|undefined}
|
|
48693
48873
|
* @default end
|
|
48694
48874
|
*/
|
|
48695
48875
|
(''); // Keeps doclets above in JS file
|
|
@@ -48748,10 +48928,12 @@ var Responsive;
|
|
|
48748
48928
|
*/
|
|
48749
48929
|
function matchResponsiveRule(rule, matches) {
|
|
48750
48930
|
const condition = rule.condition, fn = condition.callback || function () {
|
|
48751
|
-
return (this.chartWidth <=
|
|
48752
|
-
|
|
48753
|
-
this.
|
|
48754
|
-
|
|
48931
|
+
return (this.chartWidth <=
|
|
48932
|
+
(condition.maxWidth ?? Number.MAX_VALUE) &&
|
|
48933
|
+
this.chartHeight <=
|
|
48934
|
+
(condition.maxHeight ?? Number.MAX_VALUE) &&
|
|
48935
|
+
this.chartWidth >= (condition.minWidth ?? 0) &&
|
|
48936
|
+
this.chartHeight >= (condition.minHeight ?? 0));
|
|
48755
48937
|
};
|
|
48756
48938
|
if (fn.call(this, this)) {
|
|
48757
48939
|
matches.push(rule._id);
|
|
@@ -49033,12 +49215,17 @@ G.SVGElement = SVG_SVGElement;
|
|
|
49033
49215
|
G.SVGRenderer = SVG_SVGRenderer;
|
|
49034
49216
|
G.Templating = Core_Templating;
|
|
49035
49217
|
G.Tick = Axis_Tick;
|
|
49036
|
-
G.Time = Core_Time
|
|
49218
|
+
G.Time = class extends Core_Time {
|
|
49219
|
+
constructor(options, lang) {
|
|
49220
|
+
const defaultOptions = Defaults.getOptions();
|
|
49221
|
+
super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
|
|
49222
|
+
}
|
|
49223
|
+
};
|
|
49037
49224
|
G.Tooltip = Core_Tooltip;
|
|
49038
49225
|
// Utilities
|
|
49039
49226
|
G.addEvent = addEvent;
|
|
49040
|
-
G.animObject =
|
|
49041
|
-
G.animate =
|
|
49227
|
+
G.animObject = animObject;
|
|
49228
|
+
G.animate = animate;
|
|
49042
49229
|
G.arrayMax = arrayMax;
|
|
49043
49230
|
G.arrayMin = arrayMin;
|
|
49044
49231
|
G.attr = attr;
|
|
@@ -49065,7 +49252,7 @@ G.fireEvent = fireEvent;
|
|
|
49065
49252
|
G.format = Core_Templating.format;
|
|
49066
49253
|
G.getAlignFactor = getAlignFactor;
|
|
49067
49254
|
G.getClosestDistance = getClosestDistance;
|
|
49068
|
-
G.getDeferredAnimation =
|
|
49255
|
+
G.getDeferredAnimation = getDeferredAnimation;
|
|
49069
49256
|
G.getMagnitude = getMagnitude;
|
|
49070
49257
|
G.getNestedProperty = getNestedProperty;
|
|
49071
49258
|
G.getOptions = Defaults.getOptions;
|
|
@@ -49092,11 +49279,11 @@ G.relativeLength = relativeLength;
|
|
|
49092
49279
|
G.removeEvent = removeEvent;
|
|
49093
49280
|
G.replaceNested = replaceNested;
|
|
49094
49281
|
G.seriesType = Series_SeriesRegistry.seriesType;
|
|
49095
|
-
G.setAnimation =
|
|
49282
|
+
G.setAnimation = setAnimation;
|
|
49096
49283
|
G.setOptions = Defaults.setOptions;
|
|
49097
49284
|
G.splat = splat;
|
|
49098
49285
|
G.stableSort = stableSort;
|
|
49099
|
-
G.stop =
|
|
49286
|
+
G.stop = stop;
|
|
49100
49287
|
G.syncTimeout = syncTimeout;
|
|
49101
49288
|
G.time = Defaults.defaultTime;
|
|
49102
49289
|
G.ucfirst = ucfirst;
|